OTRSCodePolicy
1.0.51
OTRS AG
https://otrs.com/
GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007
- Ignore linked SOPM files when committing in a framework.
- Added exception for the gsd-tools repo.
- Added the code reinstall method to the package setup code.
- Added parallel processing in the pre-receive handler.
- Added NPM audit unit test and bumped up lodash dependency.
- Added Perl::Critic::Moose syntax check policies and a migration module for OTRS 9.
- Fix migration filter to be more specific.
- Improved migration module.
- Added migration filter for VariableCheck.pm -> DataTypes.pm migration of OTRS 9.
- Added migration filter to prevent legacy code in the new test system.
- Added exception for new test cases.
- Fix treatment of Moo::Role.
- Fix treatment of Moo and Moo::Role.
- Allow agent entries to be in the admin group.
- Allow agent loader entries to be in the admin loader group.
- Added ignore for *.json.dist files.
- Improved SOPM required elements check to allow translatable english description.
- Added exception for the VueTreeselect repo.
- Fixed SyntaxCheck handling of Template::Constants module.
- Fixed SyntaxCheck handling of IO::Socket::* modules.
- Fix handling of Moose::Role.
- Updated regex for auto dectection of usable (integrated) perl modules.
- Renamed no shebang line check.
- Tidied.
- Updated Perl script shebang check.
- Added support for ESLint 6. Deprecated usage of globally installed ESLint binary and plugins. Added the installation switch and the package setup file for running it during installation and upgrades.
- Temporarily disable the perl script shebang check for OTRS 6+.
- Fixed validation of SOPM files for OTRS 8 and before to not have stricter database requirements from OTRS 9+.
- Fixed UTF8 output.
- Allow unpackaged hidden files.
- Revert "Disallow packaging of .gitignore or .keep files."
- Add new repo to filter exception list.
- Disallow packaging of .gitignore or .keep files.
- Improved database XML schema validation for OTRS 9+.
- Added a few helpful Perl::Critic policies for OTRS 9+.
- Tidied, simplified Perl::Critic filter.
- Added a new policy to prohibit 'split' calls with string patterns.
- Added framework version.
- Validate pushed tag names more strictly.
- Dropped documentation present plugin. Added unit test for ondemand testing present plugin.
- Removed unneeded no critic statements.
- Disable two more plugins in the new custom 'fast' mode for plugin development.
- Added filter to remove useless comments.
- Don't check for object dependencies in certain WebApp folders.
- Only execute migration filters for their target version.
- Performance improvements for Kernel/Language/*.
- Extended unit test helper filter to also check for correct SMIME usage in OTRS 8+.
- Partially enable Helper filter also for OTRS 6+.
- Fixed wording.
- Created a new filter to check for correct unit test Helper usage.
- Added coloring for filter error messages.
- Re-added accidentially disabled eslint filter.
- Added filter to check for Vue event listener handling.
- Removed unneeded use statement.
- Fixed output capturing for msgfmt filter.
- Follow-up for xmllint output.
- Fixed output capturing for spell checker calls.
- Improved output capturing with xmllint calls.
- Re-added check for successful exit code.
- Fixed output capturing for ESLint plugin.
- Fixed exception on OTRS < 8.
- Added YAML indentation cleanup filter and YAML validator.
- Added colorization of the output.
- Don't enforce object dependency declaration in roles, as they cannot be instantiated.
- Cleanup.
- Removed unneeded no critic statements and tidied.
- Small fix.
- Improved RequireCamelCase to recognize also Mojo and RequireBaseClass inheritance.
- Improved Perl::Critic policies.
- Removed obsolete TestSubs filter.
- Small performance optimization: perform framework version check only once per file.
- Improved error message in pre receive hook.
- Added a summary message to OTRSCodePolicy. List failed files (if not too many).
- Improved Perl::Critic policy.
- Performance optimization in Perl::Critic policy.
- Cleanup.
- Improved SyntaxCheck filter to allow more external modules present at compile time. This reduces the need to disable this filter in code files.
- Moved Perl filter that prevents the usage of 'goto' to a Perl::Critic policy.
- Removed obsolete migration filter for OTRS 4.
- Updated LayoutObject plugin.
- Re-added needed nofilter.
- Removed useless nofilter statements.
- Removed some nofilter statements.
- Improved ReplaceCopyright filter.
- Wording.
- Improved parallel processing of files, and activated it also for the git pre-commit hook.
- Add exception for objects in scripts::.
- Removed (obsolete) DTL validator plugins.
- Only execute docbook PO validator until OTRS 6.
- Fixed an issue with curly template parsing that results in an ESLint error.
- Added missing copyright comments.
- Updated Perl::Tidy to latest version v20191203.
- Updated copyright.
- Updated replace copyright check.
- Added exception for the OTRS Mobile App repository.
- Added 'decrypted' to spell check whitelist.
- Git push will now only accept "rel-*" as name for new and updated tags.
- Added exception for the CKEditor 5 custom build repository.
- Bundled Perl::Tidy in OTRSCodePolicy to enforce a specific version.
- Fix Perl::Tidy issue.
- Fixed problem with sample files in var/tmp/ directory.
- Removed OCP.t cache, as the test is not regularly executed any more.
- Corrected documentation for npm install.
- Make eslint checks mandatory and require eslint v5.0.
- Fixed a bad performance issue with our PerlTidy plugin.
- Add ignore for user config files.
- Add more exceptions for directory listing to speed up.
- Activate Perl::Tidy and Perl::Critic also for "git push" calls to the server and in the unit tests.
- Add ondemand modes config.
- Updated ESLint rules.
- Fixed unit test blacklist plugin so it works with pre-receive hook.
- Fixed wrong rule name.
- Added plugin for verifying presence of replacement unit tests in case blacklist configuration is active.
- Updated ESlint config files to turn off a newly added default rule.
- Revert "Improved xsd schema for the sysconfig, to have a required description."
- Improved xsd schema for the sysconfig, to have a required description.
- Fix Perl::Critic error.
- Removed check for missing endpoint documentation role.
- Temporarily disabled HasEndpointDocumentation check.
- Added unittest for HasEndpointDocumentation check.
- Added check for missing endpoint documentation role.
- Added debug code check to disallow skipping of unit tests by using xit() function.
- Updated comment in .eslintrc.js - now it's possible to install latest eslint version.
- Improved exception of the task config files for the license validator.
- Tidied.
- Added exception for MigrateIconSettgins task config.
- Improved HTML tags filter.
- Added exclusion for the streamline-icons repository.
- Suppress error messages from 'which'.
- Added filter for evil HTML tags in framework/package PO files.
- Renamed file.
- Add more file types for the copyright plugin.
- Drop obsolete chdir calls.
- Improved error text of Origin.pm.
- Updated copyright.
- Fixed OTRSCodePolicy UnitTest for oracle environment.
- Improved starting performance; clean-ups.
- Always check SOPM files.
- Updated ESLint rule - complain about v-if usage in v-for loops.
- Improved configuration navigation checks and added a unit test. Added deprecated settings check with accompanying unit test. Updated to deploy on OTRS 8.
- Tidied.
- Added separate and more lenient ESLint rule file for OTRS 7 frontend code.
- Updated ESLint rules for the frontend code.
- Added parallel file processing.
- Apply stricter file permissions as also changed in otrs.SetPermissions.pl.
- Add OTRS 8.
- Add exception for new cron file for OTRS 7.
- Added Frontend/Vendor to exclusion list.
- Added documentation directory to the ignore list of ignore = en/content/**/*.xml.
- Improved license handling.
- Improved license handling of CSS and SCCS files.
- Added code to fix a problem with the CSS license header.
- Tidied.
- Activated endpoint plugin.
- Added new navigation subgroup to the WebApp configuration group.
- Added (curently inactive) plugin to prevent the usage of body data in HEAD/GET endpoints.
- Improved NoFilter.pm.
- Also allow CSS form of nofilter directive.
- Added NoFilter.pm.
- Improved CRLF checks.
- Tidied.
- Added missing entry for Kernel/TidyAll/Plugin/OTRS/Common/CRLFLineEndings.pm to file list.
- Added CRLFLineEndings.pm.
- Add exclude for OCIP template include files.
- Improved license handling.
- Improved license check for skel files.
- Improved license check.
- Activated tests for scripts/test/sample/*.
- Updated license handling.
- Added Frontend as a new allowed top level directory.
- Allow toplevel entries in navigation group WebApp.
- Fixed uninitialized value error in LicenseValidator.pm.
- Fixed bug in license validation mechanism.
- Fixed bug in css and vue license validation mechanism.
- Renamed GPLValidator.pm to LicenseValidator.pm.
- Changed copyright link from http to https.
- Improved GPLValidator.pm.
- Added gpl to SpellCheck.Whitelist.txt.
- Renamed AGPLValidator.pm to GPLValidator.pm and updated license headers.
- Switched from AGPLv3 to GPLv3.
- Added new code policy filter to check PackageIsDownloadable and PackageIsBuildable flags for OTRS 7+.
- Add rules for WebApp settings.
- Switch back to working eslint 4.19.1 version.
- Add exception for roles.
- Don't search for Translatable() calls in POD and comments.
- Allowed External top frontend subgroup.
- Improved OM check in WebApp.
- Added some missing modules to the documentation.
- Removed temporary exception.
- Re-enabled AGPL check for new CSS files.
- Temporarily disabled AGPL check for CSS files.
- Added additional AGPL validator exceptions.
- Partially reverted "Added AGPL minimal format for Vue and CSS files."
- Added AGPL minimal format for Vue and CSS files.
- Improved portability of regex substitutions.
- Added ESLint override.
- Extend ESLint validation.
- Added rule ignore.
- Activate Mojo::JSON plugin.
- Added new plugin to force ondemand testing for packages from OTRS 7+.
- Added (inactive) plugin to prohibit direct usage of Mojo::JSON.
- Added new ux-ui.git repo to ignore list.
- Ignore user configuration files for AGPL check.
- Added detection for custom files to skip the check.
- Updated NamePod plugin to additionally fix the name of the package in the POD, Added unit test.
- Added check for package name in the POD.
- Remove duplicated license information in Perldoc, starting with OTRS 7.
- Added possibility to use PackageAllowDirectUpdate tag in SOPM file.
- Activated on-demand testing for the package.
- Disable check for OTRS 6+.
- Disable the copyright year check in the unit test environment.
-Added check for correct migration of main menu items.
-Improved validation of DefaultItems.
-Fixed detection of OTRS 5 and lower.
-Enforce (only) OTRS version-specific configuration XML schema for OTRS 6+.
-Improved navigation check plugin, added helpful error message.
-Extended check to enforce navigation groups such as Frontend::Agent::View::ModuleScreen, instead of Frontend::Agent::Module::ViewScreen.
-Added plugin to check for unfiltered translation strings in templates.
-Correction: %d placeholders in translation strings are deprecated for OTRS 7 and higher.
-Added code policy plugin for prohibited translation placeholders.
-Deativated PerlTidy for files with #UX3# marker.
-Added plugin for database key length check (1000 bytes).
Many bugfixes and improvements.
Updated to reflect the current code policies.
Updated to reflect the current code policies.
Many bugfixes and improvements.
Many bugfixes and improvements.
Many bug fixes and improvements.
Fixed XSD error.
Many bug fixes and improvements.
Corrected path in documentation.
Changed directory structure to avoid creating toplevel directories.
Package current state of module.
First version.
OTRS code quality checks.
OTRS kódminőség ellenőrzések.
9.0.x
8.0.x
7.0.x
6.0.x
5.0.x
4.0.x
3.3.x
3.2.x
3.1.x
Code::TidyAll
Perl::Critic
Perl::Critic::Moose
$Kernel::OM->Get('var::packagesetup::OTRSCodePolicy')->CodeInstall();
$Kernel::OM->Get('var::packagesetup::OTRSCodePolicy')->CodeUpgrade();
$Kernel::OM->Get('var::packagesetup::OTRSCodePolicy')->CodeUninstall();
$Kernel::OM->Get('var::packagesetup::OTRSCodePolicy')->CodeReinstall();
67787ecfe51e1b95bbe542bbcf78637d22e723dc
2020-09-28 16:42:35
opms.otrs.com
IyEvdXNyL2Jpbi9lbnYgcGVybAojIC0tCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKdXNlIEZpbmRCaW4gcXcoJFJlYWxCaW4pOwp1c2UgbGliIGRpcm5hbWUoJFJlYWxCaW4pOwp1c2UgbGliIGRpcm5hbWUoJFJlYWxCaW4pIC4gJy9LZXJuZWwnOyAgICAjIEZpbmQgVGlkeUFsbAp1c2UgbGliIGRpcm5hbWUoJFJlYWxCaW4pIC4gJy9LZXJuZWwvY3Bhbi1saWInOwoKdXNlIEN3ZDsKdXNlIEZpbGU6OkJhc2VuYW1lOwp1c2UgRmlsZTo6U3BlYzsKdXNlIEdldG9wdDo6TG9uZzsKdXNlIEZpbGU6OkZpbmQ7CnVzZSBGaWxlOjpQYXRoIHF3KCk7CnVzZSBDb2RlOjpUaWR5QWxsOwp1c2UgSVBDOjpTeXN0ZW06OlNpbXBsZSBxdyhjYXB0dXJleCk7Cgp1c2UgVGlkeUFsbDo6T1RSUzsKCiMgRW5zdXJlIFVURjggb3V0cHV0IHdvcmtzLgpiaW5tb2RlKCBcKlNURE9VVCwgJzplbmNvZGluZyhVVEYtOCknICk7CmJpbm1vZGUoIFwqU1RERVJSLCAnOmVuY29kaW5nKFVURi04KScgKTsKCm15ICggJFZlcmJvc2UsICREaXJlY3RvcnksICRGaWxlLCAkSW5zdGFsbCwgJE1vZGUsICRDYWNoZWQsICRBbGwsICRIZWxwLCAkUHJvY2Vzc2VzICk7CkdldE9wdGlvbnMoCiAgICAndmVyYm9zZScgICAgID0+IFwkVmVyYm9zZSwKICAgICdhbGwnICAgICAgICAgPT4gXCRBbGwsCiAgICAnY2FjaGVkJyAgICAgID0+IFwkQ2FjaGVkLAogICAgJ2RpcmVjdG9yeT1zJyA9PiBcJERpcmVjdG9yeSwKICAgICdmaWxlPXMnICAgICAgPT4gXCRGaWxlLAogICAgJ2luc3RhbGwnICAgICA9PiBcJEluc3RhbGwsCiAgICAnbW9kZT1zJyAgICAgID0+IFwkTW9kZSwKICAgICdoZWxwJyAgICAgICAgPT4gXCRIZWxwLAogICAgJ3Byb2Nlc3Nlcz1zJyA9PiBcJFByb2Nlc3NlcywKKTsKCmlmICgkSGVscCkgewogICAgcHJpbnQgPDwiRU9GIjsKVXNhZ2U6IE9UUlNDb2RlUG9saWN5L2Jpbi9vdHJzLkNvZGVQb2xpY3kucGwgW29wdGlvbnNdCgogICAgUGVyZm9ybXMgT1RSUyBjb2RlIHBvbGljeSBjaGVja3MuIFJ1biB0aGlzIHNjcmlwdCBmcm9tIHRoZSB0b3BsZXZlbCBkaXJlY3RvcnkKICAgIG9mIHlvdXIgbW9kdWxlLiBCeSBkZWZhdWx0IGl0IHdpbGwgb25seSBwcm9jZXNzIGZpbGVzIHdoaWNoIGFyZSBzdGFnZWQgZm9yCiAgICBnaXQgY29tbWl0LiBVc2UgLS1hbGwgb3IgLS1kaXJlY3RvcnkgdG8gY2hlY2sgYWxsIGZpbGVzIG9yIGp1c3Qgb25lIGRpcmVjdG9yeQogICAgaW5zdGVhZC4KCk9wdGlvbnM6CiAgICAtYSwgLS1hbGwgICAgICAgICAgIENoZWNrIGFsbCBmaWxlcyByZWN1cnNpdmVseQogICAgLWQsIC0tZGlyZWN0b3J5ICAgICBDaGVjayBvbmx5IHN1YmRpcmVjdG9yeQogICAgLWMsIC0tY2FjaGVkICAgICAgICBDaGVjayBvbmx5IGNhY2hlZCAoc3RhZ2VkIGZpbGVzIGluIGdpdCBkaXJlY3RvcnkpCiAgICAtZiwgLS1maWxlICAgICAgICAgIENoZWNrIG9ubHkgb25lIGZpbGUKICAgIC1pLCAtLWluc3RhbGwgICAgICAgSW5zdGFsbCBhZGRpdGlvbmFsIHJlcXVpcmVkIGRlcGVuZGVuY2llcywgc3VjaCBhcyBFU0xpbnQgYW5kIGl0cyBwbHVnaW5zCiAgICAtbSwgLS1tb2RlICAgICAgICAgIFVzZSBjdXN0b20gQ29kZTo6VGlkeUFsbCBtb2RlIChkZWZhdWx0OiBjbGkpCiAgICAtdiwgLS12ZXJib3NlICAgICAgIEFjdGl2YXRlIGRpYWdub3N0aWNzCiAgICAtcCwgLS1wcm9jZXNzZXMgICAgIFRoZSBudW1iZXIgb2YgcHJvY2Vzc2VzIHRvIHVzZSAoZGVmYXVsdDogZW52IHZhciBPVFJTQ09ERVBPTElDWV9QUk9DRVNTRVMgaWYgc2V0LCBvdGhlcndpc2UgIjYiKQogICAgLWgsIC0taGVscCAgICAgICAgICBTaG93IHRoaXMgdXNhZ2UgbWVzc2FnZQpFT0YKICAgIGV4aXQgMDsKfQoKbXkgJEJpbkRpciA9IGRpcm5hbWUoJDApOwoKaWYgKCRJbnN0YWxsKSB7CiAgICBteSAkRVNMaW50RGlyID0gJEJpbkRpciAuICcvLi4vS2VybmVsL1RpZHlBbGwvUGx1Z2luL09UUlMvSmF2YVNjcmlwdC9FU0xpbnQnOwogICAgaWYgKCAhLWQgJEVTTGludERpciApIHsKICAgICAgICBwcmludCAiRXJyb3I6IFBsZWFzZSBydW4gdGhpcyBjb21tYW5kIGZyb20gdGhlIHRvcGxldmVsIGRpcmVjdG9yeSBvZiB5b3VyIG1vZHVsZS5cbiI7CiAgICAgICAgZXhpdCAxOwogICAgfQoKICAgIG15ICRSZWRpcmVjdE91dHB1dCA9ICRWZXJib3NlID8gJycgOiAnLS1zaWxlbnQgPiAvZGV2L251bGwnOwoKICAgIHByaW50ICJQZXJmb3JtaW5nIGBucG0gaW5zdGFsbCAtLW5vLXNhdmVgIHRvIG1ha2Ugc3VyZSBhbGwgbmVlZGVkIG5vZGUuanMgbW9kdWxlcyBhcmUgcHJlc2VudC4uLlxuIjsKCiAgICBteSAkU3VjY2VzcyA9IHN5c3RlbSgiY2QgJEVTTGludERpciAmJiBucG0gaW5zdGFsbCAtLW5vLXNhdmUgJFJlZGlyZWN0T3V0cHV0Iik7CgogICAgaWYgKCAkU3VjY2VzcyAhPSAwICkgewogICAgICAgIHByaW50ICJFcnJvcjogU29tZXRoaW5nIHdlbnQgd3JvbmcgZHVyaW5nIGBucG0gaW5zdGFsbCAtLW5vLXNhdmVgLlxuIjsKICAgICAgICBleGl0IDE7CiAgICB9CgogICAgcHJpbnQgIkRvbmUuXG4iOwogICAgZXhpdCAwOwp9CgpteSAkQ29uZmlndXJhdGlvbkZpbGUgPSAkQmluRGlyIC4gJy8uLi9LZXJuZWwvVGlkeUFsbC90aWR5YWxscmMnOwoKbXkgJFJvb3REaXIgPSBnZXRjd2QoKTsKCm15ICRUaWR5QWxsID0gVGlkeUFsbDo6T1RSUy0+bmV3X2Zyb21fY29uZl9maWxlKAogICAgJENvbmZpZ3VyYXRpb25GaWxlLAogICAgY2hlY2tfb25seSA9PiAwLAogICAgbW9kZSAgICAgICA9PiAkTW9kZSAvLyAnY2xpJywKICAgIHJvb3RfZGlyICAgPT4gJFJvb3REaXIsCiAgICBkYXRhX2RpciAgID0+IEZpbGU6OlNwZWMtPnRtcGRpcigpLAogICAgdmVyYm9zZSAgICA9PiAkVmVyYm9zZSA/IDEgOiAwLAopOwoKJFRpZHlBbGwtPkRldGVybWluZUZyYW1ld29ya1ZlcnNpb25Gcm9tRGlyZWN0b3J5KCk7CiRUaWR5QWxsLT5HZXRGaWxlTGlzdEZyb21EaXJlY3RvcnkoKTsKCm15IEBGaWxlczsKCmlmICgkQWxsKSB7CgogICAgIyBEb24ndCB1c2UgVGlkeUFsbDo6cHJvY2Vzc19hbGwoKSBvciBUaWR5QWxsOjpmaW5kX21hdGNoZWRfZmlsZXMoKSBhcyBpdCBpcyB0b28gc2xvdyBvbiBsYXJnZSBjb2RlIGJhc2VzLgogICAgQEZpbGVzID0gQFRpZHlBbGw6Ok9UUlM6OkZpbGVMaXN0OwogICAgQEZpbGVzID0gJFRpZHlBbGwtPkZpbHRlck1hdGNoZWRGaWxlcyggRmlsZXMgPT4gXEBGaWxlcyApOwogICAgQEZpbGVzID0gbWFwIHsgRmlsZTo6U3BlYy0+Y2F0ZmlsZSggJFJvb3REaXIsICRfICkgfSBARmlsZXM7Cn0KZWxzaWYgKCBkZWZpbmVkICREaXJlY3RvcnkgJiYgbGVuZ3RoICREaXJlY3RvcnkgKSB7CiAgICBARmlsZXMgPSAkVGlkeUFsbC0+RmluZEZpbGVzSW5EaXJlY3RvcnkoIERpcmVjdG9yeSA9PiBGaWxlOjpTcGVjLT5jYXRmaWxlKCAkUm9vdERpciwgJERpcmVjdG9yeSApICk7CiAgICBARmlsZXMgPSAkVGlkeUFsbC0+RmlsdGVyTWF0Y2hlZEZpbGVzKCBGaWxlcyA9PiBcQEZpbGVzICk7CiAgICBARmlsZXMgPSBtYXAgeyBGaWxlOjpTcGVjLT5jYXRmaWxlKCAkUm9vdERpciwgJF8gKSB9IEBGaWxlczsKfQplbHNpZiAoIGRlZmluZWQgJEZpbGUgJiYgbGVuZ3RoICRGaWxlICkgewogICAgQEZpbGVzID0gKCBGaWxlOjpTcGVjLT5jYXRmaWxlKCAkUm9vdERpciwgJEZpbGUgKSApOwp9CmVsc2lmICggZGVmaW5lZCAkQ2FjaGVkICYmIGxlbmd0aCAkQ2FjaGVkICkgewogICAgbXkgQFN0YWdlZEZpbGVzID0gYGdpdCBkaWZmIC0tbmFtZS1vbmx5IC0tY2FjaGVkYDsKICAgIGZvciBteSAkU3RhZ2VkRmlsZSAoQFN0YWdlZEZpbGVzKSB7CiAgICAgICAgY2hvbXAgJFN0YWdlZEZpbGU7CiAgICAgICAgcHVzaCBARmlsZXMsICggRmlsZTo6U3BlYy0+Y2F0ZmlsZSggJFJvb3REaXIsICRTdGFnZWRGaWxlICkgKTsKICAgIH0KfQplbHNlIHsKICAgIG15ICRPdXRwdXQgPSBjYXB0dXJleCggJ2dpdCcsICJzdGF0dXMiLCAiLS1wb3JjZWxhaW4iICk7CgogICAgIyBGZXRjaCBhbGwgY2hhbmdlZCBmaWxlcywgc3RhZ2VkIGFuZCB1bnN0YWdlZAogICAgbXkgQENoYW5nZWRGaWxlcyA9IGdyZXAgeyAtZiAmJiAhLWwgfSAoICRPdXRwdXQgPX4gL15ccypbTUFdK1xzKyguKikvZ20gKTsKICAgIHB1c2ggQENoYW5nZWRGaWxlcywgZ3JlcCB7IC1mICYmICEtbCB9ICggJE91dHB1dCA9fiAvXlxzKlJNPytccysoLio/KVxzKy0+XHMrKC4qKS9nbSApOwogICAgZm9yIG15ICRDaGFuZ2VkRmlsZSAoQENoYW5nZWRGaWxlcykgewogICAgICAgIGNob21wICRDaGFuZ2VkRmlsZTsKICAgICAgICBwdXNoIEBGaWxlcywgKCBGaWxlOjpTcGVjLT5jYXRmaWxlKCAkUm9vdERpciwgJENoYW5nZWRGaWxlICkgKTsKICAgIH0KCiAgICAjIEFsd2F5cyBpbmNsdWRlIGFsbCBTT1BNIGZpbGVzIHRvIHZlcmlmeSB0aGUgZmlsZSBsaXN0LgogICAgZm9yIG15ICRTT1BNRmlsZSAoIG1hcCB7IEZpbGU6OlNwZWMtPmFiczJyZWwoICRfLCAkUm9vdERpciApIH0gZ3JlcCB7ICEtbCAkXyB9IGdsb2IoIiRSb290RGlyLyouc29wbSIpICkgewogICAgICAgIGlmICggIWdyZXAgeyAkXyBlcSAkU09QTUZpbGUgfSBAQ2hhbmdlZEZpbGVzICkgewogICAgICAgICAgICBwdXNoIEBGaWxlcywgKCBGaWxlOjpTcGVjLT5jYXRmaWxlKCAkUm9vdERpciwgJFNPUE1GaWxlICkgKTsKICAgICAgICB9CiAgICB9Cn0KCiMgU2FmZWd1YXJkOiBpZ25vcmUgbm9uLXJlZ3VsYXIgZmlsZXMgYW5kIHN5bWxpbmtzIChjYXVzZXMgVGlkeUFsbCBlcnJvcnMpLgpARmlsZXMgPSBncmVwIHsgLWYgJiYgIS1sIH0gQEZpbGVzOwoKbXkgQEdsb2JhbFJlc3VsdHMgPSAkVGlkeUFsbC0+UHJvY2Vzc1BhdGhzUGFyYWxsZWwoCiAgICBQcm9jZXNzZXMgPT4gJFByb2Nlc3NlcywKICAgIEZpbGVQYXRocyA9PiBcQEZpbGVzLAopOwoKJFRpZHlBbGwtPkhhbmRsZVJlc3VsdHMoCiAgICBSZXN1bHRzID0+IFxAR2xvYmFsUmVzdWx0cwopOwo=
cGFja2FnZSBMb2NhbGU6OlBPOwp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm91ciAkVkVSU0lPTiA9ICcwLjI3JzsKCnVzZSBDYXJwOwoKc3ViIG5ldyB7CiAgICBteSAkdGhpcyAgICA9IHNoaWZ0OwogICAgbXkgJW9wdGlvbnMgPSBAXzsKICAgIG15ICRjbGFzcyAgID0gcmVmKCR0aGlzKSB8fCAkdGhpczsKICAgIG15ICRzZWxmICAgID0ge307CiAgICBibGVzcyAkc2VsZiwgJGNsYXNzOwogICAgJHNlbGYtPl9mbGFncyhbXSk7CiAgICAkc2VsZi0+ZnV6enlfbXNnaWQoJG9wdGlvbnN7Jy1mdXp6eV9tc2dpZCd9KSBpZiBkZWZpbmVkKCRvcHRpb25zeyctZnV6enlfbXNnaWQnfSk7CiAgICAkc2VsZi0+ZnV6enlfbXNnaWRfcGx1cmFsKCRvcHRpb25zeyctZnV6enlfbXNnaWRfcGx1cmFsJ30pCiAgICAgICAgaWYgZGVmaW5lZCgkb3B0aW9uc3snLWZ1enp5X21zZ2lkX3BsdXJhbCd9KTsKICAgICRzZWxmLT5tc2dpZCgkb3B0aW9uc3snLW1zZ2lkJ30pIGlmIGRlZmluZWQoJG9wdGlvbnN7Jy1tc2dpZCd9KTsKICAgICRzZWxmLT5tc2dpZF9wbHVyYWwoJG9wdGlvbnN7Jy1tc2dpZF9wbHVyYWwnfSkKICAgICAgICBpZiBkZWZpbmVkKCRvcHRpb25zeyctbXNnaWRfcGx1cmFsJ30pOwogICAgJHNlbGYtPm1zZ3N0cigkb3B0aW9uc3snLW1zZ3N0cid9KSBpZiBkZWZpbmVkKCRvcHRpb25zeyctbXNnc3RyJ30pOwogICAgJHNlbGYtPm1zZ3N0cl9uKCRvcHRpb25zeyctbXNnc3RyX24nfSkKICAgICAgICBpZiBkZWZpbmVkKCRvcHRpb25zeyctbXNnc3RyX24nfSk7CiAgICAkc2VsZi0+bXNnY3R4dCgkb3B0aW9uc3snLW1zZ2N0eHQnfSkgaWYgZGVmaW5lZCgkb3B0aW9uc3snLW1zZ2N0eHQnfSk7CiAgICAkc2VsZi0+ZnV6enlfbXNnY3R4dCgkb3B0aW9uc3snLWZ1enp5X21zZ2N0eHQnfSkKICAgICAgICBpZiBkZWZpbmVkKCRvcHRpb25zeyctZnV6enlfbXNnY3R4dCd9KTsKICAgICRzZWxmLT5jb21tZW50KCRvcHRpb25zeyctY29tbWVudCd9KSBpZiBkZWZpbmVkKCRvcHRpb25zeyctY29tbWVudCd9KTsKICAgICRzZWxmLT5mdXp6eSgkb3B0aW9uc3snLWZ1enp5J30pICAgICBpZiBkZWZpbmVkKCRvcHRpb25zeyctZnV6enknfSk7CiAgICAkc2VsZi0+YXV0b21hdGljKCRvcHRpb25zeyctYXV0b21hdGljJ30pCiAgICAgICAgaWYgZGVmaW5lZCgkb3B0aW9uc3snLWF1dG9tYXRpYyd9KTsKICAgICRzZWxmLT5yZWZlcmVuY2UoJG9wdGlvbnN7Jy1yZWZlcmVuY2UnfSkKICAgICAgICBpZiBkZWZpbmVkKCRvcHRpb25zeyctcmVmZXJlbmNlJ30pOwogICAgJHNlbGYtPmNfZm9ybWF0KDEpIGlmIGRlZmluZWQoJG9wdGlvbnN7Jy1jLWZvcm1hdCd9KTsKICAgICRzZWxmLT5jX2Zvcm1hdCgxKSBpZiBkZWZpbmVkKCRvcHRpb25zeyctY19mb3JtYXQnfSk7CiAgICAkc2VsZi0+Y19mb3JtYXQoMCkgaWYgZGVmaW5lZCgkb3B0aW9uc3snLW5vLWMtZm9ybWF0J30pOwogICAgJHNlbGYtPmNfZm9ybWF0KDApIGlmIGRlZmluZWQoJG9wdGlvbnN7Jy1ub19jX2Zvcm1hdCd9KTsKICAgICRzZWxmLT5sb2FkZWRfbGluZV9udW1iZXIoJG9wdGlvbnN7Jy1sb2FkZWRfbGluZV9udW1iZXInfSkKICAgICAgICBpZiBkZWZpbmVkKCRvcHRpb25zeyctbG9hZGVkX2xpbmVfbnVtYmVyJ30pOwogICAgcmV0dXJuICRzZWxmOwp9CgpzdWIgZnV6enlfbXNnY3R4dCB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgQF8gPyAkc2VsZi0+eydmdXp6eV9tc2djdHh0J30gPSAkc2VsZi0+cXVvdGUoc2hpZnQpIDogJHNlbGYtPnsnZnV6enlfbXNnY3R4dCd9Owp9CgpzdWIgZnV6enlfbXNnaWQgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIEBfID8gJHNlbGYtPnsnZnV6enlfbXNnaWQnfSA9ICRzZWxmLT5xdW90ZShzaGlmdCkgOiAkc2VsZi0+eydmdXp6eV9tc2dpZCd9Owp9CgpzdWIgZnV6enlfbXNnaWRfcGx1cmFsIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICBAXwogICAgICAgID8gJHNlbGYtPnsnZnV6enlfbXNnaWRfcGx1cmFsJ30gPSAkc2VsZi0+cXVvdGUoc2hpZnQpCiAgICAgICAgOiAkc2VsZi0+eydmdXp6eV9tc2dpZF9wbHVyYWwnfTsKfQoKc3ViIG1zZ2N0eHQgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIEBfID8gJHNlbGYtPnsnbXNnY3R4dCd9ID0gJHNlbGYtPnF1b3RlKHNoaWZ0KSA6ICRzZWxmLT57J21zZ2N0eHQnfTsKfQoKc3ViIG1zZ2lkIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICBAXyA/ICRzZWxmLT57J21zZ2lkJ30gPSAkc2VsZi0+cXVvdGUoc2hpZnQpIDogJHNlbGYtPnsnbXNnaWQnfTsKfQoKc3ViIG1zZ2lkX3BsdXJhbCB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgQF8KICAgICAgICA/ICRzZWxmLT57J21zZ2lkX3BsdXJhbCd9ID0gJHNlbGYtPnF1b3RlKHNoaWZ0KQogICAgICAgIDogJHNlbGYtPnsnbXNnaWRfcGx1cmFsJ307Cn0KCnN1YiBtc2dzdHIgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIEBfID8gJHNlbGYtPnsnbXNnc3RyJ30gPSAkc2VsZi0+cXVvdGUoc2hpZnQpIDogJHNlbGYtPnsnbXNnc3RyJ307Cn0KCnN1YiBtc2dzdHJfbiB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgaWYgKEBfKSB7CiAgICAgICAgbXkgJGhhc2hyZWYgPSBzaGlmdDsKCiAgICAgICAgIyBjaGVjayB0aGF0IHdlIGhhdmUgYSBoYXNocmVmLgogICAgICAgIGNyb2FrICdBcmd1bWVudCB0byBtc2dzdHJfbiBtdXN0IGJlIGEgaGFzaHJlZjogeyBuID0+ICJzdHJpbmcgbiIsIC4uLiB9LicKICAgICAgICAgICAgdW5sZXNzIHJlZigkaGFzaHJlZikgZXEgJ0hBU0gnOwoKICAgICAgICAjIENoZWNrIHRoYXQgdGhlIGtleXMgYXJlIGFsbCBudW1iZXJzLgogICAgICAgIGNyb2FrICdLZXlzIHRvIG1zZ3N0cl9uIGhhc2hyZWYgbXVzdCBiZSBudW1iZXJzJwogICAgICAgICAgICBpZiBncmVwIHttL1xEL30ga2V5cyAlJGhhc2hyZWY7CgogICAgICAgICMgUXVvdGUgYWxsIHRoZSB2YWx1ZXMgaW4gdGhlIGhhc2hyZWYuCiAgICAgICAgJHNlbGYtPnsnbXNnc3RyX24nfXskX30gPSAkc2VsZi0+cXVvdGUoJCRoYXNocmVmeyRffSkgZm9yIGtleXMgJSRoYXNocmVmOwoKICAgIH0KCiAgICByZXR1cm4gJHNlbGYtPnsnbXNnc3RyX24nfTsKfQoKc3ViIGNvbW1lbnQgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIEBfID8gJHNlbGYtPnsnY29tbWVudCd9ID0gc2hpZnQgOiAkc2VsZi0+eydjb21tZW50J307Cn0KCnN1YiBhdXRvbWF0aWMgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIEBfID8gJHNlbGYtPnsnYXV0b21hdGljJ30gPSBzaGlmdCA6ICRzZWxmLT57J2F1dG9tYXRpYyd9Owp9CgpzdWIgcmVmZXJlbmNlIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICBAXyA/ICRzZWxmLT57J3JlZmVyZW5jZSd9ID0gc2hpZnQgOiAkc2VsZi0+eydyZWZlcmVuY2UnfTsKfQoKc3ViIG9ic29sZXRlIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICBAXyA/ICRzZWxmLT57J29ic29sZXRlJ30gPSBzaGlmdCA6ICRzZWxmLT57J29ic29sZXRlJ307Cn0KCnN1YiBmdXp6eSB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwoKICAgIGlmIChAXykgewogICAgICAgIG15ICR2YWx1ZSA9IHNoaWZ0OwogICAgICAgICR2YWx1ZSA/ICRzZWxmLT5hZGRfZmxhZygnZnV6enknKSA6ICRzZWxmLT5yZW1vdmVfZmxhZygnZnV6enknKTsKICAgIH0KCiAgICByZXR1cm4gJHNlbGYtPmhhc19mbGFnKCdmdXp6eScpOwp9CgpzdWIgY19mb3JtYXQgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKCiAgICByZXR1cm4gJHNlbGYtPl90cmlfdmFsdWVfZmxhZygnYy1mb3JtYXQnLCBAXyk7Cn0KCnN1YiBwaHBfZm9ybWF0IHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CgogICAgcmV0dXJuICRzZWxmLT5fdHJpX3ZhbHVlX2ZsYWcoJ3BocC1mb3JtYXQnLCBAXyk7Cn0KCnN1YiBfZmxhZ3MgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIEBfID8gJHNlbGYtPnsnX2ZsYWdzJ30gPSBzaGlmdCA6ICRzZWxmLT57J19mbGFncyd9Owp9CgpzdWIgX3RyaV92YWx1ZV9mbGFnIHsKICAgIG15ICRzZWxmICAgICAgPSBzaGlmdDsKICAgIG15ICRmbGFnX25hbWUgPSBzaGlmdDsKICAgIGlmIChAXykgeyAgICAjIHNldCBvciBjbGVhciB0aGUgZmxhZ3MKICAgICAgICBteSAkdmFsdWUgPSBzaGlmdDsKICAgICAgICBpZiAoIWRlZmluZWQoJHZhbHVlKSB8fCAkdmFsdWUgZXEgIiIpIHsKICAgICAgICAgICAgJHNlbGYtPnJlbW92ZV9mbGFnKCIkZmxhZ19uYW1lIik7CiAgICAgICAgICAgICRzZWxmLT5yZW1vdmVfZmxhZygibm8tJGZsYWdfbmFtZSIpOwogICAgICAgICAgICByZXR1cm4gdW5kZWY7CiAgICAgICAgfQogICAgICAgIGVsc2lmICgkdmFsdWUpIHsKICAgICAgICAgICAgJHNlbGYtPmFkZF9mbGFnKCIkZmxhZ19uYW1lIik7CiAgICAgICAgICAgICRzZWxmLT5yZW1vdmVfZmxhZygibm8tJGZsYWdfbmFtZSIpOwogICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRzZWxmLT5hZGRfZmxhZygibm8tJGZsYWdfbmFtZSIpOwogICAgICAgICAgICAkc2VsZi0+cmVtb3ZlX2ZsYWcoIiRmbGFnX25hbWUiKTsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7ICAgICMgY2hlY2sgdGhlIGZsYWdzCiAgICAgICAgcmV0dXJuIDEgaWYgJHNlbGYtPmhhc19mbGFnKCIkZmxhZ19uYW1lIik7CiAgICAgICAgcmV0dXJuIDAgaWYgJHNlbGYtPmhhc19mbGFnKCJuby0kZmxhZ19uYW1lIik7CiAgICAgICAgcmV0dXJuIHVuZGVmOwogICAgfQp9CgpzdWIgYWRkX2ZsYWcgewogICAgbXkgKCRzZWxmLCAkZmxhZ19uYW1lKSA9IEBfOwogICAgaWYgKCEgJHNlbGYtPmhhc19mbGFnKCRmbGFnX25hbWUpKSB7CiAgICAgICAgcHVzaCBAeyRzZWxmLT5fZmxhZ3N9LCAkZmxhZ19uYW1lOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgcmVtb3ZlX2ZsYWcgewogICAgbXkgKCRzZWxmLCAkZmxhZ19uYW1lKSA9IEBfOwogICAgbXkgQG5ld19mbGFnczsKICAgIGZvcmVhY2ggbXkgJGZsYWcgKEB7JHNlbGYtPl9mbGFnc30pIHsKICAgICAgICBwdXNoIEBuZXdfZmxhZ3MsICRmbGFnIHVubGVzcyAkZmxhZyBlcSAkZmxhZ19uYW1lOwogICAgfQogICAgJHNlbGYtPl9mbGFncyhcQG5ld19mbGFncyk7CiAgICByZXR1cm47Cn0KCnN1YiBoYXNfZmxhZyB7CiAgICBteSAoJHNlbGYsICRmbGFnX25hbWUpID0gQF87CiAgICBmb3JlYWNoIG15ICRmbGFnIChAeyRzZWxmLT5fZmxhZ3N9KSB7CiAgICAgICAgcmV0dXJuIDEgaWYgJGZsYWcgZXEgJGZsYWdfbmFtZTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIGxvYWRlZF9saW5lX251bWJlciB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgQF8gPyAkc2VsZi0+eydsb2FkZWRfbGluZV9udW1iZXInfSA9IHNoaWZ0IDogJHNlbGYtPnsnbG9hZGVkX2xpbmVfbnVtYmVyJ307Cn0KCnN1YiBfbm9ybWFsaXplX3N0ciB7CiAgICBteSAkc2VsZiAgICAgPSBzaGlmdDsKICAgIG15ICRzdHJpbmcgICA9IHNoaWZ0OwogICAgbXkgJGRlcXVvdGVkID0gJHNlbGYtPmRlcXVvdGUoJHN0cmluZyk7CgogICAgIyBNdWx0aWxpbmU6IHRoaXMgaXNuJ3QgcXVpdGUgcGVyZmVjdCwgYnV0IGZhc3QgYW5kIGVhc3kKICAgIGlmIChkZWZpbmVkICRkZXF1b3RlZCAmJiAkZGVxdW90ZWQgPX4gL1xuLykgewogICAgICAgIG15ICRvdXRwdXQ7CiAgICAgICAgbXkgQGxpbmVzOwogICAgICAgIEBsaW5lcyA9IHNwbGl0KC9cbi8sICRkZXF1b3RlZCwgLTEpOwogICAgICAgIG15ICRsYXN0bGluZSA9IHBvcCBAbGluZXM7ICAgICMgc3BlY2lhbCB0cmVhdG1lbnQgZm9yIHRoaXMgb25lCiAgICAgICAgJG91dHB1dCA9IHFxeyIiXG59IGlmICgkI2xpbmVzICE9IDApOwogICAgICAgIGZvcmVhY2ggKEBsaW5lcykgewogICAgICAgICAgICAkb3V0cHV0IC49ICRzZWxmLT5xdW90ZSgiJF9cbiIpIC4gIlxuIjsKICAgICAgICB9CiAgICAgICAgJG91dHB1dCAuPSAkc2VsZi0+cXVvdGUoJGxhc3RsaW5lKSAuICJcbiIgaWYgJGxhc3RsaW5lIG5lICIiOwogICAgICAgIHJldHVybiAkb3V0cHV0OwogICAgfQogICAgIyBTaW5nbGUgbGluZQogICAgZWxzZSB7CiAgICAgICAgcmV0dXJuICgkc3RyaW5nIHx8ICIiKSAuICJcbiI7CiAgICB9Cn0KCnN1YiBfZnV6enlfbm9ybWFsaXplX3N0ciB7CiAgICBteSAkc2VsZiAgID0gc2hpZnQ7CiAgICBteSAkc3RyaW5nID0gc2hpZnQ7CiAgICBteSAkcHJlZml4ID0gc2hpZnQ7CgogICAgbXkgJG5vcm1hbGl6ZWQgPSAkc2VsZi0+X25vcm1hbGl6ZV9zdHIoJHN0cmluZyk7CgogICAgIyBvbiBuZXdsaW5lcywgc3RhcnQgdGhlbSB3aXRoICIjfCAiIG9yICIjfnwgIgogICAgJG5vcm1hbGl6ZWQgPX4gcy9cbiIvXG4kcHJlZml4Ii9nOwoKICAgIHJldHVybiAkbm9ybWFsaXplZDsKfQoKc3ViIGR1bXAgewogICAgbXkgJHNlbGYgICAgICAgICA9IHNoaWZ0OwogICAgbXkgJG9ic29sZXRlICAgICA9ICRzZWxmLT5vYnNvbGV0ZSA/ICcjfiAnIDogJyc7CiAgICBteSAkZnV6enlfcHJlZml4ID0gJHNlbGYtPm9ic29sZXRlID8gJyN+fCAnIDogJyN8ICc7CiAgICBteSAkZHVtcDsKCiAgICAkZHVtcCA9ICRzZWxmLT5fZHVtcF9tdWx0aV9jb21tZW50KCRzZWxmLT5jb21tZW50LCAiIyAiKQogICAgICAgIGlmICgkc2VsZi0+Y29tbWVudCk7CiAgICAkZHVtcCAuPSAkc2VsZi0+X2R1bXBfbXVsdGlfY29tbWVudCgkc2VsZi0+YXV0b21hdGljLCAiIy4gIikKICAgICAgICBpZiAoJHNlbGYtPmF1dG9tYXRpYyk7CiAgICAkZHVtcCAuPSAkc2VsZi0+X2R1bXBfbXVsdGlfY29tbWVudCgkc2VsZi0+cmVmZXJlbmNlLCAiIzogIikKICAgICAgICBpZiAoJHNlbGYtPnJlZmVyZW5jZSk7CgogICAgbXkgJGZsYWdzID0gJyc7CgogICAgZm9yZWFjaCBteSAkZmxhZyAoQHskc2VsZi0+X2ZsYWdzfSkgewogICAgICAgICRmbGFncyAuPSAiLCAkZmxhZyI7CiAgICB9CgogICAgJGR1bXAgLj0gIiMkZmxhZ3NcbiIKICAgICAgICBpZiBsZW5ndGggJGZsYWdzOwoKICAgICRkdW1wCiAgICAgICAgLj0gIiR7ZnV6enlfcHJlZml4fW1zZ2N0eHQgIgogICAgICAgIC4gJHNlbGYtPl9mdXp6eV9ub3JtYWxpemVfc3RyKCRzZWxmLT5mdXp6eV9tc2djdHh0LCAkZnV6enlfcHJlZml4KQogICAgICAgIGlmICRzZWxmLT5mdXp6eV9tc2djdHh0OwogICAgJGR1bXAKICAgICAgICAuPSAiJHtmdXp6eV9wcmVmaXh9bXNnaWQgIgogICAgICAgIC4gJHNlbGYtPl9mdXp6eV9ub3JtYWxpemVfc3RyKCRzZWxmLT5mdXp6eV9tc2dpZCwgJGZ1enp5X3ByZWZpeCkKICAgICAgICBpZiAkc2VsZi0+ZnV6enlfbXNnaWQ7CiAgICAkZHVtcAogICAgICAgIC49ICIke2Z1enp5X3ByZWZpeH1tc2dpZF9wbHVyYWwgIgogICAgICAgIC4gJHNlbGYtPl9mdXp6eV9ub3JtYWxpemVfc3RyKCRzZWxmLT5mdXp6eV9tc2dpZF9wbHVyYWwsICRmdXp6eV9wcmVmaXgpCiAgICAgICAgaWYgJHNlbGYtPmZ1enp5X21zZ2lkX3BsdXJhbDsKCiAgICAkZHVtcCAuPSAiJHtvYnNvbGV0ZX1tc2djdHh0ICIgLiAkc2VsZi0+X25vcm1hbGl6ZV9zdHIoJHNlbGYtPm1zZ2N0eHQpCiAgICAgICAgaWYgJHNlbGYtPm1zZ2N0eHQ7CiAgICAkZHVtcCAuPSAiJHtvYnNvbGV0ZX1tc2dpZCAiIC4gJHNlbGYtPl9ub3JtYWxpemVfc3RyKCRzZWxmLT5tc2dpZCk7CiAgICAkZHVtcCAuPSAiJHtvYnNvbGV0ZX1tc2dpZF9wbHVyYWwgIiAuICRzZWxmLT5fbm9ybWFsaXplX3N0cigkc2VsZi0+bXNnaWRfcGx1cmFsKQogICAgICAgIGlmICRzZWxmLT5tc2dpZF9wbHVyYWw7CgogICAgJGR1bXAgLj0gIiR7b2Jzb2xldGV9bXNnc3RyICIgLiAkc2VsZi0+X25vcm1hbGl6ZV9zdHIoJHNlbGYtPm1zZ3N0cikgaWYgJHNlbGYtPm1zZ3N0cjsKCiAgICBpZiAobXkgJG1zZ3N0cl9uID0gJHNlbGYtPm1zZ3N0cl9uKSB7CiAgICAgICAgJGR1bXAgLj0gIiR7b2Jzb2xldGV9bXNnc3RyWyRfXSAiIC4gJHNlbGYtPl9ub3JtYWxpemVfc3RyKCQkbXNnc3RyX257JF99KQogICAgICAgICAgICBmb3Igc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJSRtc2dzdHJfbjsKICAgIH0KCiAgICAkZHVtcCAuPSAiXG4iOwogICAgcmV0dXJuICRkdW1wOwp9CgpzdWIgX2R1bXBfbXVsdGlfY29tbWVudCB7CiAgICBteSAkc2VsZiAgICA9IHNoaWZ0OwogICAgbXkgJGNvbW1lbnQgPSBzaGlmdDsKICAgIG15ICRsZWFkZXIgID0gc2hpZnQ7CiAgICBteSAkY2hvcHBlZCA9ICRsZWFkZXI7CiAgICBjaG9wKCRjaG9wcGVkKTsKICAgIG15ICRyZXN1bHQgPSAkbGVhZGVyIC4gJGNvbW1lbnQ7CiAgICAkcmVzdWx0ID1+IHMvXG4vXG4kbGVhZGVyL2c7CiAgICAkcmVzdWx0ID1+IHMvXiRsZWFkZXIkLyRjaG9wcGVkL2dtOwogICAgJHJlc3VsdCAuPSAiXG4iOwogICAgcmV0dXJuICRyZXN1bHQ7Cn0KCiMgUXVvdGUgYSBzdHJpbmcgcHJvcGVybHkKc3ViIHF1b3RlIHsKICAgIG15ICRzZWxmICAgPSBzaGlmdDsKICAgIG15ICRzdHJpbmcgPSBzaGlmdDsKCiAgICByZXR1cm4gdW5kZWYKICAgICAgICB1bmxlc3MgZGVmaW5lZCAkc3RyaW5nOwoKICAgICRzdHJpbmcgPX4gcy9cXCg/IXQpL1xcXFwvZzsgICAgICAgICAgICMgXHQgaXMgYSB0YWIKICAgICRzdHJpbmcgPX4gcy8iL1xcIi9nOwogICAgJHN0cmluZyA9fiBzL1xuL1xcbi9nOwogICAgcmV0dXJuICJcIiRzdHJpbmdcIiI7Cn0KCnN1YiBkZXF1b3RlIHsKICAgIG15ICRzZWxmICAgPSBzaGlmdDsKICAgIG15ICRzdHJpbmcgPSBzaGlmdDsKCiAgICByZXR1cm4gdW5kZWYKICAgICAgICB1bmxlc3MgZGVmaW5lZCAkc3RyaW5nOwoKICAgICRzdHJpbmcgPX4gcy9eIiguKikiLyQxLzsKICAgICRzdHJpbmcgPX4gcy9cXCIvIi9nOwogICAgJHN0cmluZyA9fiBzLyg/PCEoXFwpKVxcbi9cbi9nOyAgICAgICAgIyBuZXdsaW5lCiAgICAkc3RyaW5nID1+IHMvKD88IShcXCkpXFx7Mn1uL1xcbi9nOyAgICAjIGlubGluZSBuZXdsaW5lCiAgICAkc3RyaW5nID1+IHMvKD88IShcXCkpXFx7M31uL1xcXG4vZzsgICAjIFwgZm9sbG93ZWQgYnkgbmV3bGluZQogICAgJHN0cmluZyA9fiBzL1xcezR9bi9cXFxcbi9nOyAgICAgICAgICAgIyBcIGZvbGxvd2VkIGJ5IGlubGluZSBuZXdsaW5lCiAgICAkc3RyaW5nID1+IHMvXFxcXCg/IW4pL1xcL2c7ICAgICAgICAgICAjIGFsbCBzbGFzaGVzIG5vdCByZWxhdGVkIHRvIGEgbmV3bGluZQogICAgcmV0dXJuICRzdHJpbmc7Cn0KCnN1YiBzYXZlX2ZpbGVfZnJvbWFycmF5IHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAkc2VsZi0+X3NhdmVfZmlsZSgwLCBAXyk7Cn0KCnN1YiBzYXZlX2ZpbGVfZnJvbWhhc2ggewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgICRzZWxmLT5fc2F2ZV9maWxlKDEsIEBfKTsKfQoKc3ViIF9zYXZlX2ZpbGUgewogICAgbXkgJHNlbGYgICAgID0gc2hpZnQ7CiAgICBteSAkYXNoYXNoICAgPSBzaGlmdDsKICAgIG15ICRmaWxlICAgICA9IHNoaWZ0OwogICAgbXkgJGVudHJpZXMgID0gc2hpZnQ7CiAgICBteSAkZW5jb2RpbmcgPSBzaGlmdDsKCiAgICBvcGVuKE9VVCwgZGVmaW5lZCgkZW5jb2RpbmcpID8gIj46ZW5jb2RpbmcoJGVuY29kaW5nKSIgOiAiPiIsICRmaWxlKQogICAgICAgIG9yIHJldHVybiB1bmRlZjsKICAgIGlmICgkYXNoYXNoKSB7CiAgICAgICAgZm9yZWFjaCAoc29ydCBrZXlzICUkZW50cmllcykgewogICAgICAgICAgICBwcmludCBPVVQgJGVudHJpZXMtPnskX30tPmR1bXA7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgZm9yZWFjaCAoQCRlbnRyaWVzKSB7CiAgICAgICAgICAgIHByaW50IE9VVCAkXy0+ZHVtcDsKICAgICAgICB9CiAgICB9CgogICAgY2xvc2UgT1VUOwp9CgpzdWIgbG9hZF9maWxlX2FzYXJyYXkgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgICRzZWxmLT5fbG9hZF9maWxlKDAsIEBfKTsKfQoKc3ViIGxvYWRfZmlsZV9hc2hhc2ggewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgICRzZWxmLT5fbG9hZF9maWxlKDEsIEBfKTsKfQoKc3ViIF9sb2FkX2ZpbGUgewogICAgbXkgJHNlbGYgICAgID0gc2hpZnQ7CiAgICBteSAkYXNoYXNoICAgPSBzaGlmdDsKICAgIG15ICRmaWxlICAgICA9IHNoaWZ0OwogICAgbXkgJGVuY29kaW5nID0gc2hpZnQ7CiAgICBteSAkY2xhc3MgICAgPSByZWYgJHNlbGYgfHwgJHNlbGY7CiAgICBteSAoQGVudHJpZXMsICVlbnRyaWVzKTsKICAgIG15ICRsaW5lX251bWJlciA9IDA7CiAgICBteSAkcG87CiAgICBteSAlYnVmZmVyOwogICAgbXkgJGxhc3RfYnVmZmVyOwoKICAgIG9wZW4oSU4sIGRlZmluZWQoJGVuY29kaW5nKSA/ICI8OmVuY29kaW5nKCRlbmNvZGluZykiIDogIjwiLCAkZmlsZSkKICAgICAgICBvciByZXR1cm4gdW5kZWY7CgogICAgd2hpbGUgKDxJTj4pIHsKICAgICAgICBjaG9tcDsKICAgICAgICAkbGluZV9udW1iZXIrKzsKCiAgICAgICAgIwogICAgICAgICMgU3RyaXAgdHJhaWxpbmcgXHJcbiBjaGFycwogICAgICAgICMKICAgICAgICAjIFRoaXMgY2FuIHBvc3NpYmx5IGhhdmUgYW4gZWZmZWN0IG9ubHkgb24gbXN5cyAob24gd2hpY2ggY2hvbXAKICAgICAgICAjIHNlZW1zIHRvIGxlYXZlIHNvbWUgdHJhaWxpbmcgXHIgY2hhcnMpIGFuZCBvbiBNYWNPUyB0aGF0IGhhcwogICAgICAgICMgcmV2ZXJzZWQgbmV3bGluZSAoXG5ccikuCiAgICAgICAgIyBOb3RlIHRoYXQgb3VyIHN0cmlwcGluZyBvZiB0aG9zZSB0cmFpbGluZyBjaGFycyBpcyBvbmx5IGdvaW5nIHRvIGJlCiAgICAgICAgIyB1c2VmdWwgd2hlbiB3cml0aW5nIGZyb20gb25lIHBsYXRmb3JtIGFuZCByZWFkaW5nIG9uIGFub3RoZXIuCiAgICAgICAgc3tbXHJcbl0qJH17fTsKCiAgICAgICAgaWYgKC9eJC8pIHsKCiAgICAgICAgICAgICMgRW1wdHkgbGluZS4gRW5kIG9mIGFuIGVudHJ5LgoKICAgICAgICAgICAgaWYgKGRlZmluZWQoJHBvKSkgewogICAgICAgICAgICAgICAgJHBvLT5mdXp6eV9tc2djdHh0KCRidWZmZXJ7ZnV6enlfbXNnY3R4dH0pCiAgICAgICAgICAgICAgICAgICAgaWYgZGVmaW5lZCAkYnVmZmVye2Z1enp5X21zZ2N0eHR9OwogICAgICAgICAgICAgICAgJHBvLT5mdXp6eV9tc2dpZCgkYnVmZmVye2Z1enp5X21zZ2lkfSkgaWYgZGVmaW5lZCAkYnVmZmVye2Z1enp5X21zZ2lkfTsKICAgICAgICAgICAgICAgICRwby0+ZnV6enlfbXNnaWRfcGx1cmFsKCRidWZmZXJ7ZnV6enlfbXNnaWRfcGx1cmFsfSkKICAgICAgICAgICAgICAgICAgICBpZiBkZWZpbmVkICRidWZmZXJ7ZnV6enlfbXNnaWRfcGx1cmFsfTsKICAgICAgICAgICAgICAgICRwby0+bXNnY3R4dCgkYnVmZmVye21zZ2N0eHR9KSAgICAgICAgICAgaWYgZGVmaW5lZCAkYnVmZmVye21zZ2N0eHR9OwogICAgICAgICAgICAgICAgJHBvLT5tc2dpZCgkYnVmZmVye21zZ2lkfSkgICAgICAgICAgICAgICBpZiBkZWZpbmVkICRidWZmZXJ7bXNnaWR9OwogICAgICAgICAgICAgICAgJHBvLT5tc2dpZF9wbHVyYWwoJGJ1ZmZlcnttc2dpZF9wbHVyYWx9KSBpZiBkZWZpbmVkICRidWZmZXJ7bXNnaWRfcGx1cmFsfTsKICAgICAgICAgICAgICAgICRwby0+bXNnc3RyKCRidWZmZXJ7bXNnc3RyfSkgICAgICAgICAgICAgaWYgZGVmaW5lZCAkYnVmZmVye21zZ3N0cn07CiAgICAgICAgICAgICAgICAkcG8tPm1zZ3N0cl9uKCRidWZmZXJ7bXNnc3RyX259KSAgICAgICAgIGlmIGRlZmluZWQgJGJ1ZmZlcnttc2dzdHJfbn07CgoKICAgICAgICAgICAgICAgICMgYXNoYXNoCiAgICAgICAgICAgICAgICBpZiAoJGFzaGFzaCkgewogICAgICAgICAgICAgICAgICAgICRlbnRyaWVzeyRwby0+bXNnaWR9ID0gJHBvCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcG8tPl9oYXNoX2tleV9vayhcJWVudHJpZXMpKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGFzYXJyYXkKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHB1c2goQGVudHJpZXMsICRwbyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdW5kZWYgJHBvOwogICAgICAgICAgICAgICAgdW5kZWYgJGxhc3RfYnVmZmVyOwogICAgICAgICAgICAgICAgJWJ1ZmZlciA9ICgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2lmICgvXiNccysoLiopLyBvciAvXiMoKSQvKSB7CgogICAgICAgICAgICAjIFRyYW5zbGF0b3IgY29tbWVudHMKICAgICAgICAgICAgJHBvID0gJGNsYXNzLT5uZXcoLWxvYWRlZF9saW5lX251bWJlciA9PiAkbGluZV9udW1iZXIpIHVubGVzcyBkZWZpbmVkKCRwbyk7CiAgICAgICAgICAgIGlmIChkZWZpbmVkKCRwby0+Y29tbWVudCkpIHsKICAgICAgICAgICAgICAgICRwby0+Y29tbWVudCgkcG8tPmNvbW1lbnQgLiAiXG4kMSIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJHBvLT5jb21tZW50KCQxKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoL14jXC5ccyooLiopLykgewoKICAgICAgICAgICAgIyBBdXRvbWF0aWMgY29tbWVudHMKICAgICAgICAgICAgJHBvID0gJGNsYXNzLT5uZXcoLWxvYWRlZF9saW5lX251bWJlciA9PiAkbGluZV9udW1iZXIpIHVubGVzcyBkZWZpbmVkKCRwbyk7CiAgICAgICAgICAgIGlmIChkZWZpbmVkKCRwby0+YXV0b21hdGljKSkgewogICAgICAgICAgICAgICAgJHBvLT5hdXRvbWF0aWMoJHBvLT5hdXRvbWF0aWMgLiAiXG4kMSIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJHBvLT5hdXRvbWF0aWMoJDEpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2lmICgvXiM6XHMrKC4qKS8pIHsKCiAgICAgICAgICAgICMgcmVmZXJlbmNlCiAgICAgICAgICAgICRwbyA9ICRjbGFzcy0+bmV3KC1sb2FkZWRfbGluZV9udW1iZXIgPT4gJGxpbmVfbnVtYmVyKSB1bmxlc3MgZGVmaW5lZCgkcG8pOwogICAgICAgICAgICBpZiAoZGVmaW5lZCgkcG8tPnJlZmVyZW5jZSkpIHsKICAgICAgICAgICAgICAgICRwby0+cmVmZXJlbmNlKCRwby0+cmVmZXJlbmNlIC4gIlxuJDEiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRwby0+cmVmZXJlbmNlKCQxKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoL14jLFxzKyguKikvKSB7CgogICAgICAgICAgICAjIGZsYWdzCiAgICAgICAgICAgIG15IEBmbGFncyA9IHNwbGl0IC9ccypbLF1ccyovLCAkMTsKICAgICAgICAgICAgJHBvID0gJGNsYXNzLT5uZXcoLWxvYWRlZF9saW5lX251bWJlciA9PiAkbGluZV9udW1iZXIpIHVubGVzcyBkZWZpbmVkKCRwbyk7CiAgICAgICAgICAgIGZvcmVhY2ggbXkgJGZsYWcgKEBmbGFncykgewogICAgICAgICAgICAgICAgJHBvLT5hZGRfZmxhZygkZmxhZyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKC9eIyh+KT9cfFxzK21zZ2N0eHRccysoLiopLykgewogICAgICAgICAgICAkcG8gPSAkY2xhc3MtPm5ldygtbG9hZGVkX2xpbmVfbnVtYmVyID0+ICRsaW5lX251bWJlcikgdW5sZXNzIGRlZmluZWQoJHBvKTsKICAgICAgICAgICAgJGJ1ZmZlcntmdXp6eV9tc2djdHh0fSA9ICRzZWxmLT5kZXF1b3RlKCQyKTsKICAgICAgICAgICAgJGxhc3RfYnVmZmVyID0gXCRidWZmZXJ7ZnV6enlfbXNnY3R4dH07CiAgICAgICAgICAgICRwby0+b2Jzb2xldGUoMSkgaWYgJDE7CiAgICAgICAgfQogICAgICAgIGVsc2lmICgvXiMofik/XHxccyttc2dpZFxzKyguKikvKSB7CiAgICAgICAgICAgICRwbyA9ICRjbGFzcy0+bmV3KC1sb2FkZWRfbGluZV9udW1iZXIgPT4gJGxpbmVfbnVtYmVyKSB1bmxlc3MgZGVmaW5lZCgkcG8pOwogICAgICAgICAgICAkYnVmZmVye2Z1enp5X21zZ2lkfSA9ICRzZWxmLT5kZXF1b3RlKCQyKTsKICAgICAgICAgICAgJGxhc3RfYnVmZmVyID0gXCRidWZmZXJ7ZnV6enlfbXNnaWR9OwogICAgICAgICAgICAkcG8tPm9ic29sZXRlKDEpIGlmICQxOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoL14jKH4pP1x8XHMrbXNnaWRfcGx1cmFsXHMrKC4qKS8pIHsKICAgICAgICAgICAgJHBvID0gJGNsYXNzLT5uZXcoLWxvYWRlZF9saW5lX251bWJlciA9PiAkbGluZV9udW1iZXIpIHVubGVzcyBkZWZpbmVkKCRwbyk7CiAgICAgICAgICAgICRidWZmZXJ7ZnV6enlfbXNnaWRfcGx1cmFsfSA9ICRzZWxmLT5kZXF1b3RlKCQyKTsKICAgICAgICAgICAgJGxhc3RfYnVmZmVyID0gXCRidWZmZXJ7ZnV6enlfbXNnaWRfcGx1cmFsfTsKICAgICAgICAgICAgJHBvLT5vYnNvbGV0ZSgxKSBpZiAkMTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKC9eKCN+XHMrKT9tc2djdHh0XHMrKC4qKS8pIHsKICAgICAgICAgICAgJHBvID0gJGNsYXNzLT5uZXcoLWxvYWRlZF9saW5lX251bWJlciA9PiAkbGluZV9udW1iZXIpIHVubGVzcyBkZWZpbmVkKCRwbyk7CiAgICAgICAgICAgICRidWZmZXJ7bXNnY3R4dH0gPSAkc2VsZi0+ZGVxdW90ZSgkMik7CiAgICAgICAgICAgICRsYXN0X2J1ZmZlciA9IFwkYnVmZmVye21zZ2N0eHR9OwogICAgICAgICAgICAkcG8tPm9ic29sZXRlKDEpIGlmICQxOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoL14oI35ccyspP21zZ2lkXHMrKC4qKS8pIHsKICAgICAgICAgICAgJHBvID0gJGNsYXNzLT5uZXcoLWxvYWRlZF9saW5lX251bWJlciA9PiAkbGluZV9udW1iZXIpIHVubGVzcyBkZWZpbmVkKCRwbyk7CiAgICAgICAgICAgICRidWZmZXJ7bXNnaWR9ID0gJHNlbGYtPmRlcXVvdGUoJDIpOwogICAgICAgICAgICAkbGFzdF9idWZmZXIgPSBcJGJ1ZmZlcnttc2dpZH07CiAgICAgICAgICAgICRwby0+b2Jzb2xldGUoMSkgaWYgJDE7CiAgICAgICAgfQogICAgICAgIGVsc2lmICgvXigjflxzKyk/bXNnaWRfcGx1cmFsXHMrKC4qKS8pIHsKICAgICAgICAgICAgJHBvID0gJGNsYXNzLT5uZXcoLWxvYWRlZF9saW5lX251bWJlciA9PiAkbGluZV9udW1iZXIpIHVubGVzcyBkZWZpbmVkKCRwbyk7CiAgICAgICAgICAgICRidWZmZXJ7bXNnaWRfcGx1cmFsfSA9ICRzZWxmLT5kZXF1b3RlKCQyKTsKICAgICAgICAgICAgJGxhc3RfYnVmZmVyID0gXCRidWZmZXJ7bXNnaWRfcGx1cmFsfTsKICAgICAgICAgICAgJHBvLT5vYnNvbGV0ZSgxKSBpZiAkMTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKC9eKD86I35ccyspP21zZ3N0clxzKyguKikvKSB7CgogICAgICAgICAgICAjIHRyYW5zbGF0ZWQgc3RyaW5nCiAgICAgICAgICAgICRidWZmZXJ7bXNnc3RyfSA9ICRzZWxmLT5kZXF1b3RlKCQxKTsKICAgICAgICAgICAgJGxhc3RfYnVmZmVyID0gXCRidWZmZXJ7bXNnc3RyfTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKC9eKD86I35ccyspP21zZ3N0clxbKFxkKylcXVxzKyguKikvKSB7CgogICAgICAgICAgICAjIHRyYW5zbGF0ZWQgc3RyaW5nCiAgICAgICAgICAgICRidWZmZXJ7bXNnc3RyX259eyQxfSA9ICRzZWxmLT5kZXF1b3RlKCQyKTsKICAgICAgICAgICAgJGxhc3RfYnVmZmVyID0gXCRidWZmZXJ7bXNnc3RyX259eyQxfTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKC9eKD86Iyg/On58flx8fFx8KVxzKyk/KCIuKikvKSB7CgogICAgICAgICAgICAjIGNvbnRpbnVlZCBzdHJpbmcuIEFjY291bnRzIGZvcjoKICAgICAgICAgICAgIyAgIG5vcm1hbCAgICAgICAgICA6ICJzdHJpbmciCiAgICAgICAgICAgICMgICBvYnNvbGV0ZSAgICAgICAgOiAjfiAic3RyaW5nIgogICAgICAgICAgICAjICAgZnV6enkgICAgICAgICAgIDogI3wgInN0cmluZyIKICAgICAgICAgICAgIyAgIGZ1enp5K29ic29sZXRlICA6ICN+fCAic3RyaW5nIgogICAgICAgICAgICAkJGxhc3RfYnVmZmVyIC49ICRzZWxmLT5kZXF1b3RlKCQxKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHdhcm4gIlN0cmFuZ2UgbGluZSBhdCAkZmlsZSBsaW5lICRsaW5lX251bWJlcjogWyRfXVxuIjsKICAgICAgICB9CiAgICB9CiAgICBpZiAoZGVmaW5lZCgkcG8pKSB7CgogICAgICAgICRwby0+bXNnY3R4dCgkYnVmZmVye21zZ2N0eHR9KQogICAgICAgICAgICBpZiBkZWZpbmVkICRidWZmZXJ7bXNnY3R4dH07CiAgICAgICAgJHBvLT5tc2dpZCgkYnVmZmVye21zZ2lkfSkKICAgICAgICAgICAgaWYgZGVmaW5lZCAkYnVmZmVye21zZ2lkfTsKICAgICAgICAkcG8tPm1zZ2lkX3BsdXJhbCgkYnVmZmVye21zZ2lkX3BsdXJhbH0pCiAgICAgICAgICAgIGlmIGRlZmluZWQgJGJ1ZmZlcnttc2dpZF9wbHVyYWx9OwogICAgICAgICRwby0+bXNnc3RyKCRidWZmZXJ7bXNnc3RyfSkKICAgICAgICAgICAgaWYgZGVmaW5lZCAkYnVmZmVye21zZ3N0cn07CiAgICAgICAgJHBvLT5tc2dzdHJfbigkYnVmZmVye21zZ3N0cl9ufSkKICAgICAgICAgICAgaWYgZGVmaW5lZCAkYnVmZmVye21zZ3N0cl9ufTsKCiAgICAgICAgIyBhc2hhc2gKICAgICAgICBpZiAoJGFzaGFzaCkgewogICAgICAgICAgICBpZiAoJHBvLT5faGFzaF9rZXlfb2soXCVlbnRyaWVzKSkgewogICAgICAgICAgICAgICAgJGVudHJpZXN7JHBvLT5tc2dpZH0gPSAkcG87CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgYXNhcnJheQogICAgICAgIGVsc2UgewogICAgICAgICAgICBwdXNoKEBlbnRyaWVzLCAkcG8pOwogICAgICAgIH0KICAgIH0KICAgIGNsb3NlIElOOwogICAgcmV0dXJuICgkYXNoYXNoID8gXCVlbnRyaWVzIDogXEBlbnRyaWVzKTsKfQoKc3ViIF9oYXNoX2tleV9vayB7CiAgICBteSAoJHNlbGYsICRlbnRyaWVzKSA9IEBfOwoKICAgIG15ICRrZXkgPSAkc2VsZi0+bXNnaWQ7CgogICAgaWYgKCRlbnRyaWVzLT57JGtleX0pIHsKCiAgICAgICAgIyBkb24ndCBvdmVyd3JpdGUgbm9uLW9ic29sZXRlIGVudHJpZXMgd2l0aCBvYnNvbGV0ZSBvbmVzCiAgICAgICAgcmV0dXJuIGlmICgoJHNlbGYtPm9ic29sZXRlKSAmJiAobm90ICRlbnRyaWVzLT57JGtleX0tPm9ic29sZXRlKSk7CgogICAgICAgICMgZG9uJ3Qgb3ZlcndyaXRlIHRyYW5zbGF0ZWQgZW50cmllcyB3aXRoIHVudHJhbnNsYXRlZCBvbmVzCiAgICAgICAgcmV0dXJuIGlmICgoJHNlbGYtPm1zZ3N0ciAhfiAvXHcvKSAmJiAoJGVudHJpZXMtPnska2V5fS0+bXNnc3RyID1+IC9cdy8pKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKIyBBdXRvbG9hZCBtZXRob2RzIGdvIGFmdGVyID1jdXQsIGFuZCBhcmUgcHJvY2Vzc2VkIGJ5IHRoZSBhdXRvc3BsaXQgcHJvZ3JhbS4KCjE7Cl9fRU5EX18KCiMgQmVsb3cgaXMgdGhlIHN0dWIgb2YgZG9jdW1lbnRhdGlvbiBmb3IgeW91ciBtb2R1bGUuIFlvdSBiZXR0ZXIgZWRpdCBpdCEKCj1oZWFkMSBOQU1FCgpMb2NhbGU6OlBPIC0gUGVybCBtb2R1bGUgZm9yIG1hbmlwdWxhdGluZyAucG8gZW50cmllcyBmcm9tIEdOVSBnZXR0ZXh0Cgo9aGVhZDEgU1lOT1BTSVMKCiAgICB1c2UgTG9jYWxlOjpQTzsKCiAgICAkcG8gPSBuZXcgTG9jYWxlOjpQTyhbLW9wdGlvbj0+dmFsdWUsLi4uXSkKICAgIFskc3RyaW5nID1dICRwby0+bXNnaWQoW25ldyBzdHJpbmddKTsKICAgIFskc3RyaW5nID1dICRwby0+bXNnc3RyKFtuZXcgc3RyaW5nXSk7CiAgICBbJHN0cmluZyA9XSAkcG8tPmNvbW1lbnQoW25ldyBzdHJpbmddKTsKICAgIFskc3RyaW5nID1dICRwby0+YXV0b21hdGljKFtuZXcgc3RyaW5nXSk7CiAgICBbJHN0cmluZyA9XSAkcG8tPnJlZmVyZW5jZShbbmV3IHN0cmluZ10pOwogICAgWyR2YWx1ZSA9XSAkcG8tPmZ1enp5KFt2YWx1ZV0pOwogICAgWyR2YWx1ZSA9XSAkcG8tPmFkZF9mbGFnKCdjLWZvcm1hdCcpOwogICAgcHJpbnQgJHBvLT5kdW1wOwoKICAgICRxdW90ZWRfc3RyaW5nID0gJHBvLT5xdW90ZSgkc3RyaW5nKTsKICAgICRzdHJpbmcgPSAkcG8tPmRlcXVvdGUoJHF1b3RlZF9zdHJpbmcpOwoKICAgICRhcmVmID0gTG9jYWxlOjpQTy0+bG9hZF9maWxlX2FzYXJyYXkoPGZpbGVuYW1lPixbZW5jb2RpbmddKTsKICAgICRocmVmID0gTG9jYWxlOjpQTy0+bG9hZF9maWxlX2FzaGFzaCg8ZmlsZW5hbWU+LFtlbmNvZGluZ10pOwogICAgTG9jYWxlOjpQTy0+c2F2ZV9maWxlX2Zyb21hcnJheSg8ZmlsZW5hbWU+LCRhcmVmLFtlbmNvZGluZ10pOwogICAgTG9jYWxlOjpQTy0+c2F2ZV9maWxlX2Zyb21oYXNoKDxmaWxlbmFtZT4sJGhyZWYsW2VuY29kaW5nXSk7Cgo9aGVhZDEgREVTQ1JJUFRJT04KClRoaXMgbW9kdWxlIHNpbXBsaWZpZXMgbWFuYWdlbWVudCBvZiBHTlUgZ2V0dGV4dCAucG8gZmlsZXMgYW5kIGlzIGFuCmFsdGVybmF0aXZlIHRvIHVzaW5nIGVtYWNzIHBvLW1vZGUuIEl0IHByb3ZpZGVzIGFuIG9iamVjdC1vcmllbnRlZAppbnRlcmZhY2UgaW4gd2hpY2ggZWFjaCBlbnRyeSBpbiBhIC5wbyBmaWxlIGlzIGEgTG9jYWxlOjpQTyBvYmplY3QuCgo9aGVhZDEgTUVUSE9EUwoKPW92ZXIgNAoKPWl0ZW0gbmV3CgogICAgbXkgTG9jYWxlOjpQTyAkcG8gPSBuZXcgTG9jYWxlOjpQTzsKICAgIG15IExvY2FsZTo6UE8gJHBvID0gbmV3IExvY2FsZTo6UE8oJW9wdGlvbnMpOwoKQ3JlYXRlIGEgbmV3IExvY2FsZTo6UE8gb2JqZWN0IHRvIHJlcHJlc2VudCBhIHBvIGVudHJ5LgpZb3UgY2FuIG9wdGlvbmFsbHkgc2V0IHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBlbnRyeSBieSBwYXNzaW5nCmEgbGlzdC9oYXNoIG9mIHRoZSBmb3JtOgoKICAgIC1vcHRpb249PnZhbHVlLCAtb3B0aW9uPT52YWx1ZSwgZXRjLgoKV2hlcmUgb3B0aW9ucyBhcmUgbXNnaWQsIG1zZ2lkX3BsdXJhbCwgbXNnc3RyLCBtc2djdHh0LCBjb21tZW50LCBhdXRvbWF0aWMsCnJlZmVyZW5jZSwgZnV6enlfbXNnY3R4dCwgZnV6enlfbXNnaWQsIGZ1enp5X21zZ2lkX3BsdXJhbCwKZnV6enksIGFuZCBjLWZvcm1hdC4gU2VlIGFjY2Vzc29yIG1ldGhvZHMgYmVsb3cuCgpUbyBnZW5lcmF0ZSBhIHBvIGZpbGUgaGVhZGVyLCBhZGQgYW4gZW50cnkgd2l0aCBhbiBlbXB0eQptc2dpZCwgbGlrZSB0aGlzOgoKICAgICRwbyA9IG5ldyBMb2NhbGU6OlBPKC1tc2dpZD0+JycsIC1tc2dzdHI9PgogICAgICAgICJQcm9qZWN0LUlkLVZlcnNpb246IFBBQ0tBR0UgVkVSU0lPTlxcbiIgLgogICAgICAgICJQTy1SZXZpc2lvbi1EYXRlOiBZRUFSLU1PLURBIEhPOk1JICtaT05FXFxuIiAuCiAgICAgICAgIkxhc3QtVHJhbnNsYXRvcjogRlVMTCBOQU1FIDxFTUFJTEBBRERSRVNTPlxcbiIgLgogICAgICAgICJMYW5ndWFnZS1UZWFtOiBMQU5HVUFHRSA8TExAbGkub3JnPlxcbiIgLgogICAgICAgICJNSU1FLVZlcnNpb246IDEuMFxcbiIgLgogICAgICAgICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9Q0hBUlNFVFxcbiIgLgogICAgICAgICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBFTkNPRElOR1xcbiIpOwoKPWl0ZW0gbXNnaWQKClNldCBvciBnZXQgdGhlIHVudHJhbnNsYXRlZCBzdHJpbmcgZnJvbSB0aGUgb2JqZWN0LgoKVGhpcyBtZXRob2QgZXhwZWN0cyB0aGUgbmV3IHN0cmluZyBpbiB1bnF1b3RlZCBmb3JtIGJ1dCByZXR1cm5zIHRoZSBjdXJyZW50IHN0cmluZyBpbiBxdW90ZWQgZm9ybS4KCj1pdGVtIG1zZ2lkX3BsdXJhbAoKU2V0IG9yIGdldCB0aGUgdW50cmFuc2xhdGVkIHBsdXJhbCBzdHJpbmcgZnJvbSB0aGUgb2JqZWN0LgoKVGhpcyBtZXRob2QgZXhwZWN0cyB0aGUgbmV3IHN0cmluZyBpbiB1bnF1b3RlZCBmb3JtIGJ1dCByZXR1cm5zIHRoZSBjdXJyZW50IHN0cmluZyBpbiBxdW90ZWQgZm9ybS4KCj1pdGVtIG1zZ3N0cgoKU2V0IG9yIGdldCB0aGUgdHJhbnNsYXRlZCBzdHJpbmcgZnJvbSB0aGUgb2JqZWN0LgoKVGhpcyBtZXRob2QgZXhwZWN0cyB0aGUgbmV3IHN0cmluZyBpbiB1bnF1b3RlZCBmb3JtIGJ1dCByZXR1cm5zIHRoZSBjdXJyZW50IHN0cmluZyBpbiBxdW90ZWQgZm9ybS4KCj1pdGVtIG1zZ3N0cl9uCgpHZXQgb3Igc2V0IHRoZSB0cmFuc2xhdGlvbnMgaWYgdGhlcmUgYXJlIHB1cmFscyBpbnZvbHZlZC4gVGFrZXMgYW5kCnJldHVybnMgYSBoYXNocmVmIHdoZXJlIHRoZSBrZXlzIGFyZSB0aGUgJ04nIGNhc2UgYW5kIHRoZSB2YWx1ZXMgYXJlCnRoZSBzdHJpbmdzLiBlZzoKCiAgICAkcG8tPm1zZ3N0cl9uKAogICAgewogICAgICAgIDAgPT4gJ2ZvdW5kICVkIHBsdXJhbCB0cmFuc2xhdGlvbnMnLAogICAgICAgIDEgPT4gJ2ZvdW5kICVkIHNpbmd1bGFyIHRyYW5zbGF0aW9uJywKICAgIH0KICAgICk7CgpUaGlzIG1ldGhvZCBleHBlY3RzIHRoZSBuZXcgc3RyaW5ncyBpbiB1bnF1b3RlZCBmb3JtIGJ1dCByZXR1cm5zIHRoZSBjdXJyZW50IHN0cmluZ3MgaW4gcXVvdGVkIGZvcm0uCgo9aXRlbSBtc2djdHh0CgpTZXQgb3IgZ2V0IHRoZSB0cmFuc2xhdGlvbiBjb250ZXh0IHN0cmluZyBmcm9tIHRoZSBvYmplY3QuCgpUaGlzIG1ldGhvZCBleHBlY3RzIHRoZSBuZXcgc3RyaW5nIGluIHVucXVvdGVkIGZvcm0gYnV0IHJldHVybnMgdGhlIGN1cnJlbnQgc3RyaW5nIGluIHF1b3RlZCBmb3JtLgoKPWl0ZW0gZnV6enlfbXNnaWQKClNldCBvciBnZXQgdGhlIG91dGRhdGVkIHVudHJhbnNsYXRlZCBzdHJpbmcgZnJvbSB0aGUgb2JqZWN0LgoKVGhpcyBtZXRob2QgZXhwZWN0cyB0aGUgbmV3IHN0cmluZyBpbiB1bnF1b3RlZCBmb3JtIGJ1dCByZXR1cm5zIHRoZSBjdXJyZW50IHN0cmluZyBpbiBxdW90ZWQgZm9ybS4KCj1pdGVtIGZ1enp5X21zZ2lkX3BsdXJhbAoKU2V0IG9yIGdldCB0aGUgb3V0ZGF0ZWQgdW50cmFuc2xhdGVkIHBsdXJhbCBzdHJpbmcgZnJvbSB0aGUgb2JqZWN0LgoKVGhpcyBtZXRob2QgZXhwZWN0cyB0aGUgbmV3IHN0cmluZyBpbiB1bnF1b3RlZCBmb3JtIGJ1dCByZXR1cm5zIHRoZSBjdXJyZW50IHN0cmluZyBpbiBxdW90ZWQgZm9ybS4KCj1pdGVtIGZ1enp5X21zZ2N0eHQKClNldCBvciBnZXQgdGhlIG91dGRhdGVkIHRyYW5zbGF0aW9uIGNvbnRleHQgc3RyaW5nIGZyb20gdGhlIG9iamVjdC4KClRoaXMgbWV0aG9kIGV4cGVjdHMgdGhlIG5ldyBzdHJpbmcgaW4gdW5xdW90ZWQgZm9ybSBidXQgcmV0dXJucyB0aGUgY3VycmVudCBzdHJpbmcgaW4gcXVvdGVkIGZvcm0uCgo9aXRlbSBvYnNvbGV0ZQoKUmV0dXJucyAxIGlmIHRoZSBlbnRyeSBpcyBvYnNvbGV0ZS4KT2Jzb2xldGUgZW50cmllcyBoYXZlIHRoZWlyIG1zZ2lkLCBtc2dpZF9wbHVyYWwsIG1zZ3N0ciwgbXNnc3RyX24gYW5kIG1zZ2N0eHQgbGluZXMgY29tbWVudGVkIG91dCB3aXRoICIjfiIKCldoZW4gdXNpbmcgbG9hZF9maWxlX2FzaGFzaCwgbm9uLW9ic29sZXRlIGVudHJpZXMgd2lsbCBhbHdheXMgcmVwbGFjZSBvYnNvbGV0ZSBlbnRyaWVzIHdpdGggdGhlIHNhbWUgbXNnaWQuCgo9aXRlbSBjb21tZW50CgpTZXQgb3IgZ2V0IHRyYW5zbGF0b3IgY29tbWVudHMgZnJvbSB0aGUgb2JqZWN0LgoKSWYgdGhlcmUgYXJlIG5vIHN1Y2ggY29tbWVudHMsIHRoZW4gdGhlIHZhbHVlIGlzIHVuZGVmLiAgT3RoZXJ3aXNlLAp0aGUgdmFsdWUgaXMgYSBzdHJpbmcgdGhhdCBjb250YWlucyB0aGUgY29tbWVudCBsaW5lcyBkZWxpbWl0ZWQgd2l0aAoiXG4iLiAgVGhlIHN0cmluZyBpbmNsdWRlcyBuZWl0aGVyIHRoZSBTPCIjICI+IGF0IHRoZSBiZWdpbm5pbmcgb2YKZWFjaCBjb21tZW50IGxpbmUgbm9yIHRoZSBuZXdsaW5lIGF0IHRoZSBlbmQgb2YgdGhlIGxhc3QgY29tbWVudCBsaW5lLgoKPWl0ZW0gYXV0b21hdGljCgpTZXQgb3IgZ2V0IGF1dG9tYXRpYyBjb21tZW50cyBmcm9tIHRoZSBvYmplY3QgKGluc2VydGVkIGJ5CmVtYWNzIHBvLW1vZGUgb3IgeGdldHRleHQpLgoKSWYgdGhlcmUgYXJlIG5vIHN1Y2ggY29tbWVudHMsIHRoZW4gdGhlIHZhbHVlIGlzIHVuZGVmLiAgT3RoZXJ3aXNlLAp0aGUgdmFsdWUgaXMgYSBzdHJpbmcgdGhhdCBjb250YWlucyB0aGUgY29tbWVudCBsaW5lcyBkZWxpbWl0ZWQgd2l0aAoiXG4iLiAgVGhlIHN0cmluZyBpbmNsdWRlcyBuZWl0aGVyIHRoZSBTPCIjLiAiPiBhdCB0aGUgYmVnaW5uaW5nIG9mCmVhY2ggY29tbWVudCBsaW5lIG5vciB0aGUgbmV3bGluZSBhdCB0aGUgZW5kIG9mIHRoZSBsYXN0IGNvbW1lbnQgbGluZS4KCj1pdGVtIHJlZmVyZW5jZQoKU2V0IG9yIGdldCByZWZlcmVuY2UgbWFya2luZyBjb21tZW50cyBmcm9tIHRoZSBvYmplY3QgKGluc2VydGVkCmJ5IGVtYWNzIHBvLW1vZGUgb3IgZ2V0dGV4dCkuCgo9aXRlbSBmdXp6eQoKU2V0IG9yIGdldCB0aGUgZnV6enkgZmxhZyBvbiB0aGUgb2JqZWN0ICgiY2hlY2sgdGhpcyB0cmFuc2xhdGlvbiIpLgpXaGVuIHNldHRpbmcsIHVzZSAxIHRvIHR1cm4gb24gZnV6enksIGFuZCAwIHRvIHR1cm4gaXQgb2ZmLgoKPWl0ZW0gY19mb3JtYXQKClNldCBvciBnZXQgdGhlIGMtZm9ybWF0IG9yIG5vLWMtZm9ybWF0IGZsYWcgb24gdGhlIG9iamVjdC4KClRoaXMgY2FuIHRha2UgMyB2YWx1ZXM6CjEgaW1wbGllcyBjLWZvcm1hdCwgMCBpbXBsaWVzIG5vLWMtZm9ybWF0LCBhbmQgdW5kZWZpbmVkIGltcGxpZXMgbmVpdGhlci4KCj1pdGVtIHBocF9mb3JtYXQKClNldCBvciBnZXQgdGhlIHBocC1mb3JtYXQgb3Igbm8tcGhwLWZvcm1hdCBmbGFnIG9uIHRoZSBvYmplY3QuCgpUaGlzIGNhbiB0YWtlIDMgdmFsdWVzOgoxIGltcGxpZXMgcGhwLWZvcm1hdCwgMCBpbXBsaWVzIG5vLXBocC1mb3JtYXQsIGFuZCB1bmRlZmluZWQgaW1wbGllcyBuZWl0aGVyLgoKPWl0ZW0gaGFzX2ZsYWcKCiAgICBpZiAoJHBvLT5oYXNfZmxhZygncGVybC1mb3JtYXQnKSkgewogICAgICAgIC4uLgogICAgfQoKUmV0dXJucyB0cnVlIGlmIHRoZSBmbGFnIGV4aXN0cyBpbiB0aGUgZW50cnkncyAjfiBjb21tZW50Cgo9aXRlbSBhZGRfZmxhZwoKICAgICRwby0+YWRkX2ZsYWcoJ3BlcmwtZm9ybWF0Jyk7CgpBZGRzIHRoZSBmbGFnIHRvIHRoZSAjfiBjb21tZW50Cgo9aXRlbSByZW1vdmVfZmxhZwoKICAgICRwby0+cmVtb3ZlX2ZsYWcoJ3BlcmwtZm9ybWF0Jyk7CgpSZW1vdmVzIHRoZSBmbGFnIGZyb20gdGhlICN+IGNvbW1lbnQKCj1pdGVtIGxvYWRlZF9saW5lX251bWJlcgoKV2hlbiB1c2luZyBvbmUgb2YgdGhlIGxvYWRfZmlsZV9hcyogbWV0aG9kcywKdGhpcyB3aWxsIHJldHVybiB0aGUgbGluZSBudW1iZXIgdGhhdCB0aGUgZW50cnkgc3RhcnRlZCBhdCBpbiB0aGUgZmlsZS4KCj1pdGVtIGR1bXAKClJldHVybnMgdGhlIGVudHJ5IGFzIGEgc3RyaW5nLCBzdWl0YWJsZSBmb3Igb3V0cHV0IHRvIGEgcG8gZmlsZS4KCj1pdGVtIHF1b3RlCgpBcHBsaWVzIHBvIHF1b3RhdGlvbiBydWxlcyB0byBhIHN0cmluZywgYW5kIHJldHVybnMgdGhlIHF1b3RlZApzdHJpbmcuIFRoZSBxdW90ZWQgc3RyaW5nIHdpbGwgaGF2ZSBhbGwgZXhpc3RpbmcgZG91YmxlLXF1b3RlCmNoYXJhY3RlcnMgZXNjYXBlZCBieSBiYWNrc2xhc2hlcywgYW5kIHdpbGwgYmUgZW5jbG9zZWQgaW4gZG91YmxlCnF1b3Rlcy4KCj1pdGVtIGRlcXVvdGUKClJldHVybnMgYSBxdW90ZWQgcG8gc3RyaW5nIHRvIGl0cyBuYXR1cmFsIGZvcm0uCgo9aXRlbSBsb2FkX2ZpbGVfYXNhcnJheQoKR2l2ZW4gdGhlIGZpbGVuYW1lIG9mIGEgcG8tZmlsZSwgcmVhZHMgdGhlIGZpbGUgYW5kIHJldHVybnMgYQpyZWZlcmVuY2UgdG8gYSBsaXN0IG9mIExvY2FsZTo6UE8gb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb250ZW50cyBvZgp0aGUgZmlsZSwgaW4gdGhlIHNhbWUgb3JkZXIuICBBY2NlcHRzIGFuIG9wdGlvbmFsIGVuY29kaW5nIHBhcmFtZXRlciAoZS5nLgoidXRmOCIpIHdoaWNoIGRlZmluZXMgaG93IHRoZSBwby1maWxlJ3MgaW5wdXQgc3RyZWFtIHdpbGwgYmUgY29uZmlndXJlZC4KCj1pdGVtIGxvYWRfZmlsZV9hc2hhc2gKCkdpdmVuIHRoZSBmaWxlbmFtZSBvZiBhIHBvLWZpbGUsIHJlYWRzIHRoZSBmaWxlIGFuZCByZXR1cm5zIGEKcmVmZXJlbmNlIHRvIGEgaGFzaCBvZiBMb2NhbGU6OlBPIG9iamVjdHMgY29ycmVzcG9uZGluZyB0byB0aGUgY29udGVudHMgb2YKdGhlIGZpbGUuIFRoZSBoYXNoIGtleXMgYXJlIHRoZSB1bnRyYW5zbGF0ZWQgc3RyaW5ncywgc28gdGhpcyBpcyBhIGNoZWFwCndheSB0byByZW1vdmUgZHVwbGljYXRlcy4gVGhlIG1ldGhvZCB3aWxsIHByZWZlciB0byBrZWVwIGVudHJpZXMgdGhhdApoYXZlIGJlZW4gdHJhbnNsYXRlZC4gIEFjY2VwdHMgYW4gb3B0aW9uYWwgZW5jb2RpbmcgcGFyYW1ldGVyIChlLmcuCiJ1dGY4Iikgd2hpY2ggZGVmaW5lcyBob3cgdGhlIHBvLWZpbGUncyBpbnB1dCBzdHJlYW0gd2lsbCBiZSBjb25maWd1cmVkLgoKPWl0ZW0gc2F2ZV9maWxlX2Zyb21hcnJheQoKR2l2ZW4gYSBmaWxlbmFtZSBhbmQgYSByZWZlcmVuY2UgdG8gYSBsaXN0IG9mIExvY2FsZTo6UE8gb2JqZWN0cywKc2F2ZXMgdGhvc2Ugb2JqZWN0cyB0byB0aGUgZmlsZSwgY3JlYXRpbmcgYSBwby1maWxlLiAgQWNjZXB0cyBhbiBvcHRpb25hbAplbmNvZGluZyBwYXJhbWV0ZXIgKGUuZy4gInV0ZjgiKSB3aGljaCBkZWZpbmVzIGhvdyB0aGUgcG8tZmlsZSdzIG91dHB1dApzdHJlYW0gd2lsbCBiZSBjb25maWd1cmVkLgoKPWl0ZW0gc2F2ZV9maWxlX2Zyb21oYXNoCgpHaXZlbiBhIGZpbGVuYW1lIGFuZCBhIHJlZmVyZW5jZSB0byBhIGhhc2ggb2YgTG9jYWxlOjpQTyBvYmplY3RzLApzYXZlcyB0aG9zZSBvYmplY3RzIHRvIHRoZSBmaWxlLCBjcmVhdGluZyBhIHBvLWZpbGUuIFRoZSBlbnRyaWVzCmFyZSBzb3J0ZWQgYWxwaGFiZXRpY2FsbHkgYnkgdW50cmFuc2xhdGVkIHN0cmluZy4gIEFjY2VwdHMgYW4gb3B0aW9uYWwKZW5jb2RpbmcgcGFyYW1ldGVyIChlLmcuICJ1dGY4Iikgd2hpY2ggZGVmaW5lcyBob3cgdGhlIHBvLWZpbGUncyBvdXRwdXQKc3RyZWFtIHdpbGwgYmUgY29uZmlndXJlZC4KCj1iYWNrCgo9aGVhZDEgQVVUSE9SCgpNYWludGFpbmVyOiBLZW4gUHJvd3MsIHBlcmxAeGV2Lm5ldAoKT3JpZ2luYWwgdmVyc2lvbiBieTogQWxhbiBTY2h3YXJ0eiwgYWxhbnN6QHBlbm5tdXNoLm9yZwoKPWhlYWQxIEJVR1MKCklmIHlvdSBsb2FkX2ZpbGVfYXMqIHRoZW4gc2F2ZV9maWxlX2Zyb20qLCB0aGUgb3V0cHV0IGZpbGUgbWF5IGhhdmUgc2xpZ2h0CmNvc21ldGljIGRpZmZlcmVuY2VzIGZyb20gdGhlIGlucHV0IGZpbGUgKGFuIGV4dHJhIGJsYW5rIGxpbmUgaGVyZSBvciB0aGVyZSkuCgptc2dpZCwgbXNnaWRfcGx1cmFsLCBtc2dzdHIsIG1zZ3N0cl9uIGFuZCBtc2djdHh0IGV4cGVjdCBhIG5vbi1xdW90ZWQgc3RyaW5nIGFzIGlucHV0LCBidXQgcmV0dXJuIHF1b3RlZCBzdHJpbmdzLgpJJ20gaGVzaXRhbnQgdG8gY2hhbmdlIHRoaXMgaW4gZmVhciBvZiBicmVha2luZyB0aGUgbW9kdWxlcy9zY3JpcHRzIG9mIHBlb3BsZSBhbHJlYWR5IHVzaW5nIExvY2FsZTo6UE8uCgpMb2NhbGU6OlBPIHJlcXVpcmVzIGJsYW5rIGxpbmVzIGJldHdlZW4gZW50cmllcywgYnV0IFVuaWZvcnVtIHN0eWxlIFBPCmZpbGVzIGRvbid0IGhhdmUgYW55LgoKUGxlYXNlIHN1Ym1pdCBhbGwgYnVnIHJlcXVlc3RzIHVzaW5nIENQQU4ncyB0aWNrZXRpbmcgc3lzdGVtLgoKPWhlYWQxIFNFRSBBTFNPCgp4Z2V0dGV4dCgxKS4KCj1jdXQK
PWhlYWQxIE5BTUUKClBlcmw6OlRpZHkgLSBQYXJzZXMgYW5kIGJlYXV0aWZpZXMgcGVybCBzb3VyY2UKCj1oZWFkMSBTWU5PUFNJUwoKICAgIHVzZSBQZXJsOjpUaWR5OwoKICAgIG15ICRlcnJvcl9mbGFnID0gUGVybDo6VGlkeTo6cGVybHRpZHkoCiAgICAgICAgc291cmNlICAgICAgICAgICAgPT4gJHNvdXJjZSwKICAgICAgICBkZXN0aW5hdGlvbiAgICAgICA9PiAkZGVzdGluYXRpb24sCiAgICAgICAgc3RkZXJyICAgICAgICAgICAgPT4gJHN0ZGVyciwKICAgICAgICBhcmd2ICAgICAgICAgICAgICA9PiAkYXJndiwKICAgICAgICBwZXJsdGlkeXJjICAgICAgICA9PiAkcGVybHRpZHlyYywKICAgICAgICBsb2dmaWxlICAgICAgICAgICA9PiAkbG9nZmlsZSwKICAgICAgICBlcnJvcmZpbGUgICAgICAgICA9PiAkZXJyb3JmaWxlLAogICAgICAgIGZvcm1hdHRlciAgICAgICAgID0+ICRmb3JtYXR0ZXIsICAgICAgICAgICAjIGNhbGxiYWNrIG9iamVjdCAoc2VlIGJlbG93KQogICAgICAgIGR1bXBfb3B0aW9ucyAgICAgID0+ICRkdW1wX29wdGlvbnMsCiAgICAgICAgZHVtcF9vcHRpb25zX3R5cGUgPT4gJGR1bXBfb3B0aW9uc190eXBlLAogICAgICAgIHByZWZpbHRlciAgICAgICAgID0+ICRwcmVmaWx0ZXJfY29kZXJlZiwKICAgICAgICBwb3N0ZmlsdGVyICAgICAgICA9PiAkcG9zdGZpbHRlcl9jb2RlcmVmLAogICAgKTsKCj1oZWFkMSBERVNDUklQVElPTgoKVGhpcyBtb2R1bGUgbWFrZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHBlcmx0aWR5IHV0aWxpdHkgYXZhaWxhYmxlIHRvIHBlcmwKc2NyaXB0cy4gIEFueSBvciBhbGwgb2YgdGhlIGlucHV0IHBhcmFtZXRlcnMgbWF5IGJlIG9taXR0ZWQsIGluIHdoaWNoIGNhc2UgdGhlCkBBUkdWIGFycmF5IHdpbGwgYmUgdXNlZCB0byBwcm92aWRlIGlucHV0IHBhcmFtZXRlcnMgYXMgZGVzY3JpYmVkCmluIHRoZSBwZXJsdGlkeSgxKSBtYW4gcGFnZS4KCkZvciBleGFtcGxlLCB0aGUgcGVybHRpZHkgc2NyaXB0IGlzIGJhc2ljYWxseSBqdXN0IHRoaXM6CgogICAgdXNlIFBlcmw6OlRpZHk7CiAgICBQZXJsOjpUaWR5OjpwZXJsdGlkeSgpOwoKVGhlIGNhbGwgdG8gQjxwZXJsdGlkeT4gcmV0dXJucyBhIHNjYWxhciBCPCRlcnJvcl9mbGFnPiB3aGljaCBpcyBUUlVFIGlmIGFuCmVycm9yIGNhdXNlZCBwcmVtYXR1cmUgdGVybWluYXRpb24sIGFuZCBGQUxTRSBpZiB0aGUgcHJvY2VzcyByYW4gdG8gbm9ybWFsCmNvbXBsZXRpb24uICBBZGRpdGlvbmFsIGRpc2N1c3Mgb2YgZXJyb3JzIGlzIGNvbnRhaW5lZCBiZWxvdyBpbiB0aGUgTDxFUlJPUgpIQU5ETElORz4gc2VjdGlvbi4KClRoZSBtb2R1bGUgYWNjZXB0cyBpbnB1dCBhbmQgb3V0cHV0IHN0cmVhbXMgYnkgYSB2YXJpZXR5IG9mIG1ldGhvZHMuClRoZSBmb2xsb3dpbmcgbGlzdCBvZiBwYXJhbWV0ZXJzIG1heSBiZSBhbnkgb2YgdGhlIGZvbGxvd2luZzogYQpmaWxlbmFtZSwgYW4gQVJSQVkgcmVmZXJlbmNlLCBhIFNDQUxBUiByZWZlcmVuY2UsIG9yIGFuIG9iamVjdCB3aXRoCmVpdGhlciBhIEI8Z2V0bGluZT4gb3IgQjxwcmludD4gbWV0aG9kLCBhcyBhcHByb3ByaWF0ZS4KCiAgICAgICAgc291cmNlICAgICAgICAgICAgLSB0aGUgc291cmNlIG9mIHRoZSBzY3JpcHQgdG8gYmUgZm9ybWF0dGVkCiAgICAgICAgZGVzdGluYXRpb24gICAgICAgLSB0aGUgZGVzdGluYXRpb24gb2YgdGhlIGZvcm1hdHRlZCBvdXRwdXQKICAgICAgICBzdGRlcnIgICAgICAgICAgICAtIHN0YW5kYXJkIGVycm9yIG91dHB1dAogICAgICAgIHBlcmx0aWR5cmMgICAgICAgIC0gdGhlIC5wZXJsdGlkeXJjIGZpbGUKICAgICAgICBsb2dmaWxlICAgICAgICAgICAtIHRoZSAuTE9HIGZpbGUgc3RyZWFtLCBpZiBhbnkgCiAgICAgICAgZXJyb3JmaWxlICAgICAgICAgLSB0aGUgLkVSUiBmaWxlIHN0cmVhbSwgaWYgYW55CiAgICAgICAgZHVtcF9vcHRpb25zICAgICAgLSByZWYgdG8gYSBoYXNoIHRvIHJlY2VpdmUgcGFyYW1ldGVycyAoc2VlIGJlbG93KSwgCiAgICAgICAgZHVtcF9vcHRpb25zX3R5cGUgLSBjb250cm9scyBjb250ZW50cyBvZiBkdW1wX29wdGlvbnMKICAgICAgICBkdW1wX2dldG9wdF9mbGFncyAtIHJlZiB0byBhIGhhc2ggdG8gcmVjZWl2ZSBHZXRvcHQgZmxhZ3MKICAgICAgICBkdW1wX29wdGlvbnNfY2F0ZWdvcnkgLSByZWYgdG8gYSBoYXNoIGdpdmluZyBjYXRlZ29yeSBvZiBvcHRpb25zCiAgICAgICAgZHVtcF9hYmJyZXZpYXRpb25zICAgIC0gcmVmIHRvIGEgaGFzaCBnaXZpbmcgYWxsIGFiYnJldmlhdGlvbnMKClRoZSBmb2xsb3dpbmcgY2hhcnQgaWxsdXN0cmF0ZXMgdGhlIGxvZ2ljIHVzZWQgdG8gZGVjaWRlIGhvdyB0bwp0cmVhdCBhIHBhcmFtZXRlci4KCiAgIHJlZigkcGFyYW0pICAkcGFyYW0gaXMgYXNzdW1lZCB0byBiZToKICAgLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICB1bmRlZiAgICAgICAgYSBmaWxlbmFtZQogICBTQ0FMQVIgICAgICAgcmVmIHRvIHN0cmluZwogICBBUlJBWSAgICAgICAgcmVmIHRvIGFycmF5CiAgIChvdGhlcikgICAgICBvYmplY3Qgd2l0aCBnZXRsaW5lIChpZiBzb3VyY2UpIG9yIHByaW50IG1ldGhvZAoKSWYgdGhlIHBhcmFtZXRlciBpcyBhbiBvYmplY3QsIGFuZCB0aGUgb2JqZWN0IGhhcyBhIEI8Y2xvc2U+IG1ldGhvZCwgdGhhdApjbG9zZSBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYXQgdGhlIGVuZCBvZiB0aGUgc3RyZWFtLgoKPW92ZXIgNAoKPWl0ZW0gc291cmNlCgpJZiB0aGUgQjxzb3VyY2U+IHBhcmFtZXRlciBpcyBnaXZlbiwgaXQgZGVmaW5lcyB0aGUgc291cmNlIG9mIHRoZSBpbnB1dCBzdHJlYW0uCklmIGFuIGlucHV0IHN0cmVhbSBpcyBkZWZpbmVkIHdpdGggdGhlIEI8c291cmNlPiBwYXJhbWV0ZXIgdGhlbiBubyBvdGhlciBzb3VyY2UKZmlsZW5hbWVzIG1heSBiZSBzcGVjaWZpZWQgaW4gdGhlIEBBUkdWIGFycmF5IG9yIEI8YXJndj4gcGFyYW1ldGVyLgoKPWl0ZW0gZGVzdGluYXRpb24KCklmIHRoZSBCPGRlc3RpbmF0aW9uPiBwYXJhbWV0ZXIgaXMgZ2l2ZW4sIGl0IHdpbGwgYmUgdXNlZCB0byBkZWZpbmUgdGhlCmZpbGUgb3IgbWVtb3J5IGxvY2F0aW9uIHRvIHJlY2VpdmUgb3V0cHV0IG9mIHBlcmx0aWR5LiAgCgo9aXRlbSBzdGRlcnIKClRoZSBCPHN0ZGVycj4gcGFyYW1ldGVyIGFsbG93cyB0aGUgY2FsbGluZyBwcm9ncmFtIHRvIHJlZGlyZWN0IHRoZSBzdHJlYW0gdGhhdAp3b3VsZCBvdGhlcndpc2UgZ28gdG8gdGhlIHN0YW5kYXJkIGVycm9yIG91dHB1dCBkZXZpY2UgdG8gYW55IG9mIHRoZSBzdHJlYW0KdHlwZXMgbGlzdGVkIGFib3ZlLiAgVGhpcyBzdHJlYW0gY29udGFpbnMgaW1wb3J0YW50IHdhcm5pbmdzIGFuZCBlcnJvcnMgCnJlbGF0ZWQgdG8gdGhlIHBhcmFtZXRlcnMgcGFzc2VkIHRvIHBlcmx0aWR5LgoKPWl0ZW0gcGVybHRpZHlyYwoKSWYgdGhlIEI8cGVybHRpZHlyYz4gZmlsZSBpcyBnaXZlbiwgaXQgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgYW55CkY8LnBlcmx0aWR5cmM+IGNvbmZpZ3VyYXRpb24gZmlsZSB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZSB1c2VkLiAKCj1pdGVtIGVycm9yZmlsZQoKVGhlIEI8ZXJyb3JmaWxlPiBwYXJhbWV0ZXIgYWxsb3dzIHRoZSBjYWxsaW5nIHByb2dyYW0gdG8gY2FwdHVyZQp0aGUgc3RyZWFtIHRoYXQgd291bGQgb3RoZXJ3aXNlIGdvIHRvIGVpdGhlciBhIC5FUlIgZmlsZS4gIFRoaXMKc3RyZWFtIGNvbnRhaW5zIHdhcm5pbmdzIG9yIGVycm9ycyByZWxhdGVkIHRvIHRoZSBjb250ZW50cyBvZiBvbmUKc291cmNlIGZpbGUgb3Igc3RyZWFtLiAKClRoZSByZWFzb24gdGhhdCB0aGlzIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBzdGRlcnIgc3RyZWFtIGlzIHRoYXQgd2hlbiBwZXJsdGlkeQppcyBjYWxsZWQgdG8gcHJvY2VzcyBtdWx0aXBsZSBmaWxlcyB0aGVyZSB3aWxsIGJlIHVwIHRvIG9uZSAuRVJSIGZpbGUgY3JlYXRlZApmb3IgZWFjaCBmaWxlIGFuZCBpdCB3b3VsZCBiZSB2ZXJ5IGNvbmZ1c2luZyBpZiB0aGV5IHdlcmUgY29tYmluZWQuICAKCkhvd2V2ZXIgaWYgcGVybHRpZHkgaXMgY2FsbGVkIHRvIHByb2Nlc3MganVzdCBhIHNpbmdsZSBwZXJsIHNjcmlwdCB0aGVuIGl0IG1heQpiZSBtb3JlIGNvbnZlbmllbnQgdG8gY29tYmluZSB0aGUgQjxlcnJvcmZpbGU+IHN0cmVhbSB3aXRoIHRoZSBCPHN0ZGVycj4Kc3RyZWFtLiAgVGhpcyBjYW4gYmUgZG9uZSBieSBzZXR0aW5nIHRoZSBCPC1zZT4gcGFyYW1ldGVyLCBpbiB3aGljaCBjYXNlIHRoaXMKcGFyYW1ldGVyIGlzIGlnbm9yZWQuCgo9aXRlbSBsb2dmaWxlCgpUaGUgQjxsb2dmaWxlPiBwYXJhbWV0ZXIgYWxsb3dzIHRoZSBjYWxsaW5nIHByb2dyYW0gdG8gY2FwdHVyZSB0aGUgbG9nIHN0cmVhbS4KVGhpcyBzdHJlYW0gaXMgb25seSBjcmVhdGVkIGlmIHJlcXVlc3RlZCB3aXRoIGEgQjwtZz4gcGFyYW1ldGVyLiAgSXQgY29udGFpbnMKZGV0YWlsZWQgZGlhZ25vc3RpYyBpbmZvcm1hdGlvbiBhYm91dCBhIHNjcmlwdCB3aGljaCBtYXkgYmUgdXNlZnVsIGZvcgpkZWJ1Z2dpbmcuCgo9aXRlbSBhcmd2CgpJZiB0aGUgQjxhcmd2PiBwYXJhbWV0ZXIgaXMgZ2l2ZW4sIGl0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZQpCPEBBUkdWPiBhcnJheS4gIFRoZSBCPGFyZ3Y+IHBhcmFtZXRlciBtYXkgYmUgYSBzdHJpbmcsIGEgcmVmZXJlbmNlIHRvIGEKc3RyaW5nLCBvciBhIHJlZmVyZW5jZSB0byBhbiBhcnJheS4gIElmIGl0IGlzIGEgc3RyaW5nIG9yIHJlZmVyZW5jZSB0byBhCnN0cmluZywgaXQgd2lsbCBiZSBwYXJzZWQgaW50byBhbiBhcnJheSBvZiBpdGVtcyBqdXN0IGFzIGlmIGl0IHdlcmUgYQpjb21tYW5kIGxpbmUgc3RyaW5nLgoKPWl0ZW0gZHVtcF9vcHRpb25zCgpJZiB0aGUgQjxkdW1wX29wdGlvbnM+IHBhcmFtZXRlciBpcyBnaXZlbiwgaXQgbXVzdCBiZSB0aGUgcmVmZXJlbmNlIHRvIGEgaGFzaC4KSW4gdGhpcyBjYXNlLCB0aGUgcGFyYW1ldGVycyBjb250YWluZWQgaW4gYW55IHBlcmx0aWR5cmMgY29uZmlndXJhdGlvbiBmaWxlCndpbGwgYmUgcGxhY2VkIGluIHRoaXMgaGFzaCBhbmQgcGVybHRpZHkgd2lsbCByZXR1cm4gaW1tZWRpYXRlbHkuICBUaGlzIGlzCmVxdWl2YWxlbnQgdG8gcnVubmluZyBwZXJsdGlkeSB3aXRoIC0tZHVtcC1vcHRpb25zLCBleGNlcHQgdGhhdCB0aGUgcGFyYW1ldGVycwphcmUgcmV0dXJuZWQgaW4gYSBoYXNoIHJhdGhlciB0aGFuIGR1bXBlZCB0byBzdGFuZGFyZCBvdXRwdXQuICBBbHNvLCBieSBkZWZhdWx0Cm9ubHkgdGhlIHBhcmFtZXRlcnMgaW4gdGhlIHBlcmx0aWR5cmMgZmlsZSBhcmUgcmV0dXJuZWQsIGJ1dCB0aGlzIGNhbiBiZQpjaGFuZ2VkIChzZWUgdGhlIG5leHQgcGFyYW1ldGVyKS4gIFRoaXMgcGFyYW1ldGVyIHByb3ZpZGVzIGEgY29udmVuaWVudCBtZXRob2QKZm9yIGV4dGVybmFsIHByb2dyYW1zIHRvIHJlYWQgYSBwZXJsdGlkeXJjIGZpbGUuICBBbiBleGFtcGxlIHByb2dyYW0gdXNpbmcKdGhpcyBmZWF0dXJlLCBGPHBlcmx0aWR5cmNfZHVtcC5wbD4sIGlzIGluY2x1ZGVkIGluIHRoZSBkaXN0cmlidXRpb24uCgpBbnkgY29tYmluYXRpb24gb2YgdGhlIEI8ZHVtcF8+IHBhcmFtZXRlcnMgbWF5IGJlIHVzZWQgdG9nZXRoZXIuCgo9aXRlbSBkdW1wX29wdGlvbnNfdHlwZQoKVGhpcyBwYXJhbWV0ZXIgaXMgYSBzdHJpbmcgd2hpY2ggY2FuIGJlIHVzZWQgdG8gY29udHJvbCB0aGUgcGFyYW1ldGVycyBwbGFjZWQKaW4gdGhlIGhhc2ggcmVmZXJlbmNlIHN1cHBsaWVkIGJ5IEI8ZHVtcF9vcHRpb25zPi4gIFRoZSBwb3NzaWJsZSB2YWx1ZXMgYXJlCidwZXJsdGlkeXJjJyAoZGVmYXVsdCkgYW5kICdmdWxsJy4gIFRoZSAnZnVsbCcgcGFyYW1ldGVyIGNhdXNlcyBib3RoIHRoZQpkZWZhdWx0IG9wdGlvbnMgcGx1cyBhbnkgb3B0aW9ucyBmb3VuZCBpbiBhIHBlcmx0aWR5cmMgZmlsZSB0byBiZSByZXR1cm5lZC4KCj1pdGVtIGR1bXBfZ2V0b3B0X2ZsYWdzCgpJZiB0aGUgQjxkdW1wX2dldG9wdF9mbGFncz4gcGFyYW1ldGVyIGlzIGdpdmVuLCBpdCBtdXN0IGJlIHRoZSByZWZlcmVuY2UgdG8gYQpoYXNoLiAgVGhpcyBoYXNoIHdpbGwgcmVjZWl2ZSBhbGwgb2YgdGhlIHBhcmFtZXRlcnMgdGhhdCBwZXJsdGlkeSB1bmRlcnN0YW5kcwphbmQgZmxhZ3MgdGhhdCBhcmUgcGFzc2VkIHRvIEdldG9wdDo6TG9uZy4gIFRoaXMgcGFyYW1ldGVyIG1heSBiZQp1c2VkIGFsb25lIG9yIHdpdGggdGhlIEI8ZHVtcF9vcHRpb25zPiBmbGFnLiAgUGVybHRpZHkgd2lsbApleGl0IGltbWVkaWF0ZWx5IGFmdGVyIGZpbGxpbmcgdGhpcyBoYXNoLiAgU2VlIHRoZSBkZW1vIHByb2dyYW0KRjxwZXJsdGlkeXJjX2R1bXAucGw+IGZvciBleGFtcGxlIHVzYWdlLgoKPWl0ZW0gZHVtcF9vcHRpb25zX2NhdGVnb3J5CgpJZiB0aGUgQjxkdW1wX29wdGlvbnNfY2F0ZWdvcnk+IHBhcmFtZXRlciBpcyBnaXZlbiwgaXQgbXVzdCBiZSB0aGUgcmVmZXJlbmNlIHRvIGEKaGFzaC4gIFRoaXMgaGFzaCB3aWxsIHJlY2VpdmUgYSBoYXNoIHdpdGgga2V5cyBlcXVhbCB0byBhbGwgbG9uZyBwYXJhbWV0ZXIgbmFtZXMKYW5kIHZhbHVlcyBlcXVhbCB0byB0aGUgdGl0bGUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc2VjdGlvbiBvZiB0aGUgcGVybHRpZHkgbWFudWFsLgpTZWUgdGhlIGRlbW8gcHJvZ3JhbSBGPHBlcmx0aWR5cmNfZHVtcC5wbD4gZm9yIGV4YW1wbGUgdXNhZ2UuCgo9aXRlbSBkdW1wX2FiYnJldmlhdGlvbnMKCklmIHRoZSBCPGR1bXBfYWJicmV2aWF0aW9ucz4gcGFyYW1ldGVyIGlzIGdpdmVuLCBpdCBtdXN0IGJlIHRoZSByZWZlcmVuY2UgdG8gYQpoYXNoLiAgVGhpcyBoYXNoIHdpbGwgcmVjZWl2ZSBhbGwgYWJicmV2aWF0aW9ucyB1c2VkIGJ5IFBlcmw6OlRpZHkuICBTZWUgdGhlCmRlbW8gcHJvZ3JhbSBGPHBlcmx0aWR5cmNfZHVtcC5wbD4gZm9yIGV4YW1wbGUgdXNhZ2UuCgo9aXRlbSBwcmVmaWx0ZXIKCkEgY29kZSByZWZlcmVuY2UgdGhhdCB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlIHNvdXJjZSBiZWZvcmUgdGlkeWluZy4gSXQgaXMKZXhwZWN0ZWQgdG8gdGFrZSB0aGUgZnVsbCBjb250ZW50IGFzIGEgc3RyaW5nIGluIGl0cyBpbnB1dCwgYW5kIG91dHB1dCB0aGUKdHJhbnNmb3JtZWQgY29udGVudC4KCj1pdGVtIHBvc3RmaWx0ZXIKCkEgY29kZSByZWZlcmVuY2UgdGhhdCB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlIHRpZGllZCByZXN1bHQgYmVmb3JlIG91dHB1dHRpbmcuCkl0IGlzIGV4cGVjdGVkIHRvIHRha2UgdGhlIGZ1bGwgY29udGVudCBhcyBhIHN0cmluZyBpbiBpdHMgaW5wdXQsIGFuZCBvdXRwdXQKdGhlIHRyYW5zZm9ybWVkIGNvbnRlbnQuCgpOb3RlOiBBIGNvbnZlbmllbnQgd2F5IHRvIGNoZWNrIHRoZSBmdW5jdGlvbiBvZiB5b3VyIGN1c3RvbSBwcmVmaWx0ZXIgYW5kCnBvc3RmaWx0ZXIgY29kZSBpcyB0byB1c2UgdGhlIC0tbm90aWR5IG9wdGlvbiwgZmlyc3Qgd2l0aCBqdXN0IHRoZSBwcmVmaWx0ZXIKYW5kIHRoZW4gd2l0aCBib3RoIHRoZSBwcmVmaWx0ZXIgYW5kIHBvc3RmaWx0ZXIuICBTZWUgYWxzbyB0aGUgZmlsZQpCPGZpbHRlcl9leGFtcGxlLnBsPiBpbiB0aGUgcGVybHRpZHkgZGlzdHJpYnV0aW9uLgoKPWJhY2sKCj1oZWFkMSBFUlJPUiBIQU5ETElORwoKQW4gZXhpdCB2YWx1ZSBvZiAwLCAxLCBvciAyIGlzIHJldHVybmVkIGJ5IHBlcmx0aWR5IHRvIGluZGljYXRlIHRoZSBzdGF0dXMgb2YgdGhlIHJlc3VsdC4KCkEgZXhpdCB2YWx1ZSBvZiAwIGluZGljYXRlcyB0aGF0IHBlcmx0aWR5IHJhbiB0byBjb21wbGV0aW9uIHdpdGggbm8gZXJyb3IgbWVzc2FnZXMuCgpBbiBleGl0IHZhbHVlIG9mIDEgaW5kaWNhdGVzIHRoYXQgdGhlIHByb2Nlc3MgaGFkIHRvIGJlIHRlcm1pbmF0ZWQgZWFybHkgZHVlIHRvCmVycm9ycyBpbiB0aGUgaW5wdXQgcGFyYW1ldGVycy4gIFRoaXMgY2FuIGhhcHBlbiBmb3IgZXhhbXBsZSBpZiBhIHBhcmFtZXRlciBpcwptaXNzcGVsbGVkIG9yIGdpdmVuIGFuIGludmFsaWQgdmFsdWUuICBUaGUgY2FsbGluZyBwcm9ncmFtIHNob3VsZCBjaGVjayBmb3IKdGhpcyBmbGFnIGJlY2F1c2UgaWYgaXQgaXMgc2V0IHRoZSBkZXN0aW5hdGlvbiBzdHJlYW0gd2lsbCBiZSBlbXB0eSBvcgppbmNvbXBsZXRlIGFuZCBzaG91bGQgYmUgaWdub3JlZC4gIEVycm9yIG1lc3NhZ2VzIGluIHRoZSBCPHN0ZGVycj4gc3RyZWFtIHdpbGwKaW5kaWNhdGUgdGhlIGNhdXNlIG9mIGFueSBwcm9ibGVtLiAgCgpBbiBleGl0IHZhbHVlIG9mIDIgaW5kaWNhdGVzIHRoYXQgcGVybHRpZHkgcmFuIHRvIGNvbXBsZXRpb24gYnV0IHRoZXJlIHRoZXJlCmFyZSB3YXJuaW5nIG1lc3NhZ2VzIGluIHRoZSBCPHN0ZGVycj4gc3RyZWFtIHJlbGF0ZWQgdG8gcGFyYW1ldGVyIGVycm9ycyBvcgpjb25mbGljdHMgYW5kL29yIHdhcm5pbmcgbWVzc2FnZXMgaW4gdGhlIEI8ZXJyb3JmaWxlPiBzdHJlYW0gcmVsYXRpbmcgdG8KcG9zc2libGUgc3ludGF4IGVycm9ycyBpbiB0aGUgc291cmNlIGNvZGUgYmVpbmcgdGlkaWVkLiAKCkluIHRoZSBldmVudCBvZiBhIGNhdGFzdHJvcGhpYyBlcnJvciBmb3Igd2hpY2ggcmVjb3ZlcnkgaXMgbm90IHBvc3NpYmxlCkI8cGVybHRpZHk+IHRlcm1pbmF0ZXMgYnkgbWFraW5nIGNhbGxzIHRvIEI8Y3JvYWs+IG9yIEI8Y29uZmVzcz4gdG8gaGVscCB0aGUKcHJvZ3JhbW1lciBsb2NhbGl6ZSB0aGUgcHJvYmxlbS4gIFRoZXNlIHNob3VsZCBub3JtYWxseSBvbmx5IG9jY3VyIGR1cmluZwpwcm9ncmFtIGRldmVsb3BtZW50LiAgCgo9aGVhZDEgTk9URVMgT04gRk9STUFUVElORyBQQVJBTUVURVJTCgpQYXJhbWV0ZXJzIHdoaWNoIGNvbnRyb2wgZm9ybWF0dGluZyBtYXkgYmUgcGFzc2VkIGluIHNldmVyYWwgd2F5czogaW4gYQpGPC5wZXJsdGlkeXJjPiBjb25maWd1cmF0aW9uIGZpbGUsIGluIHRoZSBCPHBlcmx0aWR5cmM+IHBhcmFtZXRlciwgYW5kIGluIHRoZQpCPGFyZ3Y+IHBhcmFtZXRlci4KClRoZSBCPC1zeW4+IChCPC0tY2hlY2stc3ludGF4PikgZmxhZyBtYXkgYmUgdXNlZCB3aXRoIGFsbCBzb3VyY2UgYW5kCmRlc3RpbmF0aW9uIHN0cmVhbXMgZXhjZXB0IGZvciBzdGFuZGFyZCBpbnB1dCBhbmQgb3V0cHV0LiAgSG93ZXZlciAKZGF0YSBzdHJlYW1zIHdoaWNoIGFyZSBub3QgYXNzb2NpYXRlZCB3aXRoIGEgZmlsZW5hbWUgd2lsbCAKYmUgY29waWVkIHRvIGEgdGVtcG9yYXJ5IGZpbGUgYmVmb3JlIGJlaW5nIHBhc3NlZCB0byBQZXJsLiAgVGhpcwp1c2Ugb2YgdGVtcG9yYXJ5IGZpbGVzIGNhbiBjYXVzZSBzb21ld2hhdCBjb25mdXNpbmcgb3V0cHV0IGZyb20gUGVybC4KCklmIHRoZSBCPC1wYnA+IHN0eWxlIGlzIHVzZWQgaXQgd2lsbCB0eXBpY2FsbHkgYmUgbmVjZXNzYXJ5IHRvIGFsc28Kc3BlY2lmeSBhIEI8LW5zdD4gZmxhZy4gIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIHR1cm4gb2ZmIHRoZSBCPC1zdD4gZmxhZwpjb250YWluZWQgaW4gdGhlIEI8LXBicD4gcGFyYW1ldGVyIHNldCB3aGljaCBvdGhlcndpc2Ugd291bGQgZGlyZWN0CnRoZSBvdXRwdXQgc3RyZWFtIHRvIHRoZSBzdGFuZGFyZCBvdXRwdXQuICAKCj1oZWFkMSBFWEFNUExFUwoKVGhlIGZvbGxvd2luZyBleGFtcGxlIHVzZXMgc3RyaW5nIHJlZmVyZW5jZXMgdG8gaG9sZCB0aGUgaW5wdXQgYW5kIG91dHB1dApjb2RlIGFuZCBlcnJvciBzdHJlYW1zLCBhbmQgaWxsdXN0cmF0ZXMgY2hlY2tpbmcgZm9yIGVycm9ycy4KCiAgdXNlIFBlcmw6OlRpZHk7CiAgCiAgbXkgJHNvdXJjZV9zdHJpbmcgPSA8PCdFT1QnOwogIG15JGVycm9yPVBlcmw6OlRpZHk6OnBlcmx0aWR5KGFyZ3Y9PiRhcmd2LHNvdXJjZT0+XCRzb3VyY2Vfc3RyaW5nLAogICAgZGVzdGluYXRpb249PlwkZGVzdF9zdHJpbmcsc3RkZXJyPT5cJHN0ZGVycl9zdHJpbmcsCiAgZXJyb3JmaWxlPT5cJGVycm9yZmlsZV9zdHJpbmcsKTsKICBFT1QKICAKICBteSAkZGVzdF9zdHJpbmc7CiAgbXkgJHN0ZGVycl9zdHJpbmc7CiAgbXkgJGVycm9yZmlsZV9zdHJpbmc7CiAgbXkgJGFyZ3YgPSAiLW5wcm8iOyAgICMgSWdub3JlIGFueSAucGVybHRpZHlyYyBhdCB0aGlzIHNpdGUKICAkYXJndiAuPSAiIC1wYnAiOyAgICAgIyBGb3JtYXQgYWNjb3JkaW5nIHRvIHBlcmwgYmVzdCBwcmFjdGljZXMKICAkYXJndiAuPSAiIC1uc3QiOyAgICAgIyBNdXN0IHR1cm4gb2ZmIC1zdCBpbiBjYXNlIC1wYnAgaXMgc3BlY2lmaWVkCiAgJGFyZ3YgLj0gIiAtc2UiOyAgICAgICMgLXNlIGFwcGVuZHMgdGhlIGVycm9yZmlsZSB0byBzdGRlcnIKICAjIyAkYXJndiAuPSAiIC0tc3BlbGwtY2hlY2siOyAgIyB1bmNvbW1lbnQgdG8gdHJpZ2dlciBhbiBlcnJvcgogIAogIHByaW50ICI8PFJBVyBTT1VSQ0U+PlxuJHNvdXJjZV9zdHJpbmdcbiI7CiAgCiAgbXkgJGVycm9yID0gUGVybDo6VGlkeTo6cGVybHRpZHkoCiAgICAgIGFyZ3YgICAgICAgID0+ICRhcmd2LAogICAgICBzb3VyY2UgICAgICA9PiBcJHNvdXJjZV9zdHJpbmcsCiAgICAgIGRlc3RpbmF0aW9uID0+IFwkZGVzdF9zdHJpbmcsCiAgICAgIHN0ZGVyciAgICAgID0+IFwkc3RkZXJyX3N0cmluZywKICAgICAgZXJyb3JmaWxlICAgPT4gXCRlcnJvcmZpbGVfc3RyaW5nLCAgICAjIGlnbm9yZWQgd2hlbiAtc2UgZmxhZyBpcyBzZXQKICAgICAgIyNwaGFzZXJzICAgPT4gJ3N0dW4nLCAgICAgICAgICAgICAgICAjIHVuY29tbWVudCB0byB0cmlnZ2VyIGFuIGVycm9yCiAgKTsKICAKICBpZiAoJGVycm9yKSB7CiAgCiAgICAgICMgc2VyaW91cyBlcnJvciBpbiBpbnB1dCBwYXJhbWV0ZXJzLCBubyB0aWRpZWQgb3V0cHV0CiAgICAgIHByaW50ICI8PFNUREVSUj4+XG4kc3RkZXJyX3N0cmluZ1xuIjsKICAgICAgZGllICJFeGl0aW5nIGJlY2F1c2Ugb2Ygc2VyaW91cyBlcnJvcnNcbiI7CiAgfQogIAogIGlmICgkZGVzdF9zdHJpbmcpICAgICAgeyBwcmludCAiPDxUSURJRUQgU09VUkNFPj5cbiRkZXN0X3N0cmluZ1xuIiB9CiAgaWYgKCRzdGRlcnJfc3RyaW5nKSAgICB7IHByaW50ICI8PFNUREVSUj4+XG4kc3RkZXJyX3N0cmluZ1xuIiB9CiAgaWYgKCRlcnJvcmZpbGVfc3RyaW5nKSB7IHByaW50ICI8PC5FUlIgZmlsZT4+XG4kZXJyb3JmaWxlX3N0cmluZ1xuIiB9CgpBZGRpdGlvbmFsIGV4YW1wbGVzIGFyZSBnaXZlbiBpbiBleGFtcGxlcyBzZWN0aW9uIG9mIHRoZSBwZXJsdGlkeSBkaXN0cmlidXRpb24uICAKCj1oZWFkMSBVc2luZyB0aGUgQjxmb3JtYXR0ZXI+IENhbGxiYWNrIE9iamVjdAoKVGhlIEI8Zm9ybWF0dGVyPiBwYXJhbWV0ZXIgaXMgYW4gb3B0aW9uYWwgY2FsbGJhY2sgb2JqZWN0IHdoaWNoIGFsbG93cwp0aGUgY2FsbGluZyBwcm9ncmFtIHRvIHJlY2VpdmUgdG9rZW5pemVkIGxpbmVzIGRpcmVjdGx5IGZyb20gcGVybHRpZHkgZm9yCmZ1cnRoZXIgc3BlY2lhbGl6ZWQgcHJvY2Vzc2luZy4gIFdoZW4gdGhpcyBwYXJhbWV0ZXIgaXMgdXNlZCwgdGhlIHR3bwpmb3JtYXR0aW5nIG9wdGlvbnMgd2hpY2ggYXJlIGJ1aWx0IGludG8gcGVybHRpZHkgKGJlYXV0aWZpY2F0aW9uIG9yCmh0bWwpIGFyZSBpZ25vcmVkLiAgVGhlIGZvbGxvd2luZyBkaWFncmFtIGlsbHVzdHJhdGVzIHRoZSBsb2dpY2FsIGZsb3c6CgogICAgICAgICAgICAgICAgICAgIHwtLSAobm9ybWFsIHJvdXRlKSAgIC0+IGNvZGUgYmVhdXRpZmljYXRpb24KICBjYWxsZXItPnBlcmx0aWR5LT58LS0gKC1odG1sIGZsYWcgKSAgICAtPiBjcmVhdGUgaHRtbCAKICAgICAgICAgICAgICAgICAgICB8LS0gKGZvcm1hdHRlciBnaXZlbiktPiBjYWxsYmFjayB0byB3cml0ZV9saW5lCgpUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIHByb2Nlc3NpbmcgcGVybCBzY3JpcHRzIGluIHNvbWUgd2F5LiAgVGhlIApwYXJhbWV0ZXIgQzwkZm9ybWF0dGVyPiBpbiB0aGUgcGVybHRpZHkgY2FsbCwKCiAgICAgICAgZm9ybWF0dGVyICAgPT4gJGZvcm1hdHRlciwgIAoKaXMgYW4gb2JqZWN0IGNyZWF0ZWQgYnkgdGhlIGNhbGxlciB3aXRoIGEgQzx3cml0ZV9saW5lPiBtZXRob2Qgd2hpY2gKd2lsbCBhY2NlcHQgYW5kIHByb2Nlc3MgdG9rZW5pemVkIGxpbmVzLCBvbmUgbGluZSBwZXIgY2FsbC4gIEhlcmUgaXMKYSBzaW1wbGUgZXhhbXBsZSBvZiBhIEM8d3JpdGVfbGluZT4gd2hpY2ggbWVyZWx5IHByaW50cyB0aGUgbGluZSBudW1iZXIsCnRoZSBsaW5lIHR5cGUgKGFzIGRldGVybWluZWQgYnkgcGVybHRpZHkpLCBhbmQgdGhlIHRleHQgb2YgdGhlIGxpbmU6Cgogc3ViIHdyaXRlX2xpbmUgewogCiAgICAgIyBUaGlzIGlzIGNhbGxlZCBmcm9tIHBlcmx0aWR5IGxpbmUtYnktbGluZQogICAgIG15ICRzZWxmICAgICAgICAgICAgICA9IHNoaWZ0OwogICAgIG15ICRsaW5lX29mX3Rva2VucyAgICA9IHNoaWZ0OwogICAgIG15ICRsaW5lX3R5cGUgICAgICAgICA9ICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3R5cGV9OwogICAgIG15ICRpbnB1dF9saW5lX251bWJlciA9ICRsaW5lX29mX3Rva2Vucy0+e19saW5lX251bWJlcn07CiAgICAgbXkgJGlucHV0X2xpbmUgICAgICAgID0gJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdGV4dH07CiAgICAgcHJpbnQgIiRpbnB1dF9saW5lX251bWJlcjokbGluZV90eXBlOiRpbnB1dF9saW5lIjsKIH0KClRoZSBjb21wbGV0ZSBwcm9ncmFtLCBCPHBlcmxsaW5ldHlwZT4sIGlzIGNvbnRhaW5lZCBpbiB0aGUgZXhhbXBsZXMgc2VjdGlvbiBvZgp0aGUgc291cmNlIGRpc3RyaWJ1dGlvbi4gIEFzIHRoaXMgZXhhbXBsZSBzaG93cywgdGhlIGNhbGxiYWNrIG1ldGhvZApyZWNlaXZlcyBhIHBhcmFtZXRlciBCPCRsaW5lX29mX3Rva2Vucz4sIHdoaWNoIGlzIGEgcmVmZXJlbmNlIHRvIGEgaGFzaApvZiBvdGhlciB1c2VmdWwgaW5mb3JtYXRpb24uICBUaGlzIGV4YW1wbGUgdXNlcyB0aGVzZSBoYXNoIGVudHJpZXM6CgogJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfbnVtYmVyfSAtIHRoZSBsaW5lIG51bWJlciAoMSwyLC4uLikKICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3RleHR9ICAgLSB0aGUgdGV4dCBvZiB0aGUgbGluZQogJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdHlwZX0gICAtIHRoZSB0eXBlIG9mIHRoZSBsaW5lLCBvbmUgb2Y6CgogICAgU1lTVEVNICAgICAgICAgLSBzeXN0ZW0tc3BlY2lmaWMgY29kZSBiZWZvcmUgaGFzaC1iYW5nIGxpbmUKICAgIENPREUgICAgICAgICAgIC0gbGluZSBvZiBwZXJsIGNvZGUgKGluY2x1ZGluZyBjb21tZW50cykKICAgIFBPRF9TVEFSVCAgICAgIC0gbGluZSBzdGFydGluZyBwb2QsIHN1Y2ggYXMgJz1oZWFkJwogICAgUE9EICAgICAgICAgICAgLSBwb2QgZG9jdW1lbnRhdGlvbiB0ZXh0CiAgICBQT0RfRU5EICAgICAgICAtIGxhc3QgbGluZSBvZiBwb2Qgc2VjdGlvbiwgJz1jdXQnCiAgICBIRVJFICAgICAgICAgICAtIHRleHQgb2YgaGVyZS1kb2N1bWVudAogICAgSEVSRV9FTkQgICAgICAgLSBsYXN0IGxpbmUgb2YgaGVyZS1kb2MgKHRhcmdldCB3b3JkKQogICAgRk9STUFUICAgICAgICAgLSBmb3JtYXQgc2VjdGlvbgogICAgRk9STUFUX0VORCAgICAgLSBsYXN0IGxpbmUgb2YgZm9ybWF0IHNlY3Rpb24sICcuJwogICAgREFUQV9TVEFSVCAgICAgLSBfX0RBVEFfXyBsaW5lCiAgICBEQVRBICAgICAgICAgICAtIHVuaWRlbnRpZmllZCB0ZXh0IGZvbGxvd2luZyBfX0RBVEFfXwogICAgRU5EX1NUQVJUICAgICAgLSBfX0VORF9fIGxpbmUKICAgIEVORCAgICAgICAgICAgIC0gdW5pZGVudGlmaWVkIHRleHQgZm9sbG93aW5nIF9fRU5EX18KICAgIEVSUk9SICAgICAgICAgIC0gd2UgYXJlIGluIGJpZyB0cm91YmxlLCBwcm9iYWJseSBub3QgYSBwZXJsIHNjcmlwdAoKTW9zdCBhcHBsaWNhdGlvbnMgd2lsbCBiZSBvbmx5IGludGVyZXN0ZWQgaW4gbGluZXMgb2YgdHlwZSBCPENPREU+LiAgRm9yCmFub3RoZXIgZXhhbXBsZSwgbGV0J3Mgd3JpdGUgYSBwcm9ncmFtIHdoaWNoIGNoZWNrcyBmb3Igb25lIG9mIHRoZQpzby1jYWxsZWQgSTxuYXVnaHR5IG1hdGNoaW5nIHZhcmlhYmxlcz4gQzwmYD4sIEM8JCY+LCBhbmQgQzwkJz4sIHdoaWNoCmNhbiBzbG93IGRvd24gcHJvY2Vzc2luZy4gIEhlcmUgaXMgYSBCPHdyaXRlX2xpbmU+LCBmcm9tIHRoZSBleGFtcGxlCnByb2dyYW0gQjxmaW5kX25hdWdodHkucGw+LCB3aGljaCBkb2VzIHRoYXQ6Cgogc3ViIHdyaXRlX2xpbmUgewogCiAgICAgIyBUaGlzIGlzIGNhbGxlZCBiYWNrIGZyb20gcGVybHRpZHkgbGluZS1ieS1saW5lCiAgICAgIyBXZSdyZSBsb29raW5nIGZvciAkYCwgJCYsIGFuZCAkJwogICAgIG15ICggJHNlbGYsICRsaW5lX29mX3Rva2VucyApID0gQF87CiAKICAgICAjIHB1bGwgb3V0IHNvbWUgc3R1ZmYgd2UgbWlnaHQgbmVlZAogICAgIG15ICRsaW5lX3R5cGUgICAgICAgICA9ICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3R5cGV9OwogICAgIG15ICRpbnB1dF9saW5lX251bWJlciA9ICRsaW5lX29mX3Rva2Vucy0+e19saW5lX251bWJlcn07CiAgICAgbXkgJGlucHV0X2xpbmUgICAgICAgID0gJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdGV4dH07CiAgICAgbXkgJHJ0b2tlbl90eXBlICAgICAgID0gJGxpbmVfb2ZfdG9rZW5zLT57X3J0b2tlbl90eXBlfTsKICAgICBteSAkcnRva2VucyAgICAgICAgICAgPSAkbGluZV9vZl90b2tlbnMtPntfcnRva2Vuc307CiAgICAgY2hvbXAgJGlucHV0X2xpbmU7CiAKICAgICAjIHNraXAgY29tbWVudHMsIHBvZCwgZXRjCiAgICAgcmV0dXJuIGlmICggJGxpbmVfdHlwZSBuZSAnQ09ERScgKTsKIAogICAgICMgbG9vcCBvdmVyIHRva2VucyBsb29raW5nIGZvciAkYCwgJCYsIGFuZCAkJwogICAgIGZvciAoIG15ICRqID0gMCA7ICRqIDwgQCRydG9rZW5fdHlwZSA7ICRqKysgKSB7CiAKICAgICAgICAgIyB3ZSBvbmx5IHdhbnQgdG8gZXhhbWluZSB0b2tlbiB0eXBlcyAnaScgKGlkZW50aWZpZXIpCiAgICAgICAgIG5leHQgdW5sZXNzICQkcnRva2VuX3R5cGVbJGpdIGVxICdpJzsKIAogICAgICAgICAjIHB1bGwgb3V0IHRoZSBhY3R1YWwgdG9rZW4gdGV4dAogICAgICAgICBteSAkdG9rZW4gPSAkJHJ0b2tlbnNbJGpdOwogCiAgICAgICAgICMgYW5kIGNoZWNrIGl0CiAgICAgICAgIGlmICggJHRva2VuID1+IC9eXCRbXGBcJlwnXSQvICkgewogICAgICAgICAgICAgcHJpbnQgU1RERVJSCiAgICAgICAgICAgICAgICIkaW5wdXRfbGluZV9udW1iZXI6ICR0b2tlblxuIjsKICAgICAgICAgfQogICAgIH0KIH0KClRoaXMgZXhhbXBsZSBwdWxscyBvdXQgdGhlc2UgdG9rZW5pemF0aW9uIHZhcmlhYmxlcyBmcm9tIHRoZSAkbGluZV9vZl90b2tlbnMKaGFzaCByZWZlcmVuY2U6CgogICAgICRydG9rZW5fdHlwZSA9ICRsaW5lX29mX3Rva2Vucy0+e19ydG9rZW5fdHlwZX07CiAgICAgJHJ0b2tlbnMgICAgID0gJGxpbmVfb2ZfdG9rZW5zLT57X3J0b2tlbnN9OwoKVGhlIHZhcmlhYmxlIEM8JHJ0b2tlbl90eXBlPiBpcyBhIHJlZmVyZW5jZSB0byBhbiBhcnJheSBvZiB0b2tlbiB0eXBlIGNvZGVzLAphbmQgQzwkcnRva2Vucz4gaXMgYSByZWZlcmVuY2UgdG8gYSBjb3JyZXNwb25kaW5nIGFycmF5IG9mIHRva2VuIHRleHQuClRoZXNlIGFyZSBvYnZpb3VzbHkgb25seSBkZWZpbmVkIGZvciBsaW5lcyBvZiB0eXBlIEI8Q09ERT4uClBlcmx0aWR5IGNsYXNzaWZpZXMgdG9rZW5zIGludG8gdHlwZXMsIGFuZCBoYXMgYSBicmllZiBjb2RlIGZvciBlYWNoIHR5cGUuCllvdSBjYW4gZ2V0IGEgY29tcGxldGUgbGlzdCBhdCBhbnkgdGltZSBieSBydW5uaW5nIHBlcmx0aWR5IGZyb20gdGhlCmNvbW1hbmQgbGluZSB3aXRoCgogICAgIHBlcmx0aWR5IC0tZHVtcC10b2tlbi10eXBlcwoKSW4gdGhlIHByZXNlbnQgZXhhbXBsZSwgd2UgYXJlIG9ubHkgbG9va2luZyBmb3IgdG9rZW5zIG9mIHR5cGUgQjxpPgooaWRlbnRpZmllcnMpLCBzbyB0aGUgZm9yIGxvb3Agc2tpcHMgcGFzdCBhbGwgb3RoZXIgdHlwZXMuICBXaGVuIGFuCmlkZW50aWZpZXIgaXMgZm91bmQsIGl0cyBhY3R1YWwgdGV4dCBpcyBjaGVja2VkIHRvIHNlZSBpZiBpdCBpcyBvbmUKYmVpbmcgc291Z2h0LiAgSWYgc28sIHRoZSBhYm92ZSB3cml0ZV9saW5lIHByaW50cyB0aGUgdG9rZW4gYW5kIGl0cwpsaW5lIG51bWJlci4KClRoZSBCPGZvcm1hdHRlcj4gZmVhdHVyZSBpcyByZWxhdGl2ZWx5IG5ldyBpbiBwZXJsdGlkeSwgYW5kIGZ1cnRoZXIKZG9jdW1lbnRhdGlvbiBuZWVkcyB0byBiZSB3cml0dGVuIHRvIGNvbXBsZXRlIGl0cyBkZXNjcmlwdGlvbi4gIEhvd2V2ZXIsCnNldmVyYWwgZXhhbXBsZSBwcm9ncmFtcyBoYXZlIGJlZW4gd3JpdHRlbiBhbmQgY2FuIGJlIGZvdW5kIGluIHRoZQpCPGV4YW1wbGVzPiBzZWN0aW9uIG9mIHRoZSBzb3VyY2UgZGlzdHJpYnV0aW9uLiAgUHJvYmFibHkgdGhlIGJlc3Qgd2F5CnRvIGdldCBzdGFydGVkIGlzIHRvIGZpbmQgb25lIG9mIHRoZSBleGFtcGxlcyB3aGljaCBtb3N0IGNsb3NlbHkgbWF0Y2hlcwp5b3VyIGFwcGxpY2F0aW9uIGFuZCBzdGFydCBtb2RpZnlpbmcgaXQuCgpGb3IgaGVscCB3aXRoIHBlcmx0aWR5J3MgcGVjdWxpYXIgd2F5IG9mIGJyZWFraW5nIGxpbmVzIGludG8gdG9rZW5zLCB5b3UKbWlnaHQgcnVuLCBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIAoKIHBlcmx0aWR5IC1EIGZpbGVuYW1lCgp3aGVyZSBGPGZpbGVuYW1lPiBpcyBhIHNob3J0IHNjcmlwdCBvZiBpbnRlcmVzdC4gIFRoaXMgd2lsbCBwcm9kdWNlCkY8ZmlsZW5hbWUuREVCVUc+IHdpdGggaW50ZXJsZWF2ZWQgbGluZXMgb2YgdGV4dCBhbmQgdGhlaXIgdG9rZW4gdHlwZXMuClRoZSBCPC1EPiBmbGFnIGhhcyBiZWVuIGluIHBlcmx0aWR5IGZyb20gdGhlIGJlZ2lubmluZyBmb3IgdGhpcyBwdXJwb3NlLgpJZiB5b3Ugd2FudCB0byBzZWUgdGhlIGNvZGUgd2hpY2ggY3JlYXRlcyB0aGlzIGZpbGUsIGl0IGlzCkM8d3JpdGVfZGVidWdfZW50cnk+IGluIFRpZHkucG0uCgo9aGVhZDEgRVhQT1JUCgogICZwZXJsdGlkeQoKPWhlYWQxIFZFUlNJT04KClRoaXMgbWFuIHBhZ2UgZG9jdW1lbnRzIFBlcmw6OlRpZHkgdmVyc2lvbiAyMDE5MTIwMwoKPWhlYWQxIExJQ0VOU0UKClRoaXMgcGFja2FnZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CnVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgIkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIi4KClBsZWFzZSByZWZlciB0byB0aGUgZmlsZSAiQ09QWUlORyIgZm9yIGRldGFpbHMuCgo9aGVhZDEgQlVHIFJFUE9SVFMKCkEgbGlzdCBvZiBjdXJyZW50IGJ1Z3MgYW5kIGlzc3VlcyBjYW4gYmUgZm91bmQgYXQgdGhlIENQQU4gc2l0ZSBMPGh0dHBzOi8vcnQuY3Bhbi5vcmcvUHVibGljL0Rpc3QvRGlzcGxheS5odG1sP05hbWU9UGVybC1UaWR5PgoKVG8gcmVwb3J0IGEgbmV3IGJ1ZyBvciBwcm9ibGVtLCB1c2UgdGhlIGxpbmsgb24gdGhpcyBwYWdlLiAgCgpUaGUgc291cmNlIGNvZGUgcmVwb3NpdG9yeSBpcyBhdCBMPGh0dHBzOi8vZ2l0aHViLmNvbS9wZXJsdGlkeS9wZXJsdGlkeT4uCgo9aGVhZDEgU0VFIEFMU08KClRoZSBwZXJsdGlkeSgxKSBtYW4gcGFnZSBkZXNjcmliZXMgYWxsIG9mIHRoZSBmZWF0dXJlcyBvZiBwZXJsdGlkeS4gIEl0CmNhbiBiZSBmb3VuZCBhdCBodHRwOi8vcGVybHRpZHkuc291cmNlZm9yZ2UubmV0LgoKPWN1dAo=
IwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy0KIwojICAgIHBlcmx0aWR5IC0gYSBwZXJsIHNjcmlwdCBpbmRlbnRlciBhbmQgZm9ybWF0dGVyCiMKIyAgICBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxOSBieSBTdGV2ZSBIYW5jb2NrCiMgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEdQTCBsaWNlbnNlIGFncmVlbWVudDsgc2VlIGZpbGUgQ09QWUlORwojCiMgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwojICAgIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCiMgICAgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KIwojICAgIEZvciBicmllZiBpbnN0cnVjdGlvbnMsIHRyeSAncGVybHRpZHkgLWgnLgojICAgIEZvciBtb3JlIGNvbXBsZXRlIGRvY3VtZW50YXRpb24sIHRyeSAnbWFuIHBlcmx0aWR5JwojICAgIG9yIHZpc2l0IGh0dHA6Ly9wZXJsdGlkeS5zb3VyY2Vmb3JnZS5uZXQKIwojICAgIFRoaXMgc2NyaXB0IGlzIGFuIGV4YW1wbGUgb2YgdGhlIGRlZmF1bHQgc3R5bGUuICBJdCB3YXMgZm9ybWF0dGVkIHdpdGg6CiMKIyAgICAgIHBlcmx0aWR5IFRpZHkucG0KIwojICAgIENvZGUgQ29udHJpYnV0aW9uczogU2VlIENoYW5nZUxvZy5odG1sIGZvciBhIGNvbXBsZXRlIGhpc3RvcnkuCiMgICAgICBNaWNoYWVsIENhcnRtZWxsIHN1cHBsaWVkIGNvZGUgZm9yIGFkYXB0YXRpb24gdG8gVk1TIGFuZCBoZWxwZWQgd2l0aAojICAgICAgICB2LXN0cmluZ3MuCiMgICAgICBIdWdoIFMuIE15ZXJzIHN1cHBsaWVkIHN1YiBzdHJlYW1oYW5kbGUgYW5kIHRoZSBzdXBwb3J0aW5nIGNvZGUgdG8KIyAgICAgICAgY3JlYXRlIGEgUGVybDo6VGlkeSBtb2R1bGUgd2hpY2ggY2FuIG9wZXJhdGUgb24gc3RyaW5ncywgYXJyYXlzLCBldGMuCiMgICAgICBZdmVzIE9ydG9uIHN1cHBsaWVkIGNvZGluZyB0byBoZWxwIGRldGVjdCBXaW5kb3dzIHZlcnNpb25zLgojICAgICAgQXhlbCBSb3NlIHN1cHBsaWVkIGEgcGF0Y2ggZm9yIE1hY1BlcmwuCiMgICAgICBTZWJhc3RpZW4gQXBlcmdoaXMtVHJhbW9uaSBzdXBwbGllZCBhIHBhdGNoIGZvciB0aGUgZGVmaW5lZCBvciBvcGVyYXRvci4KIyAgICAgIERhbiBUeXJlbGwgY29udHJpYnV0ZWQgYSBwYXRjaCBmb3IgYmluYXJ5IEkvTy4KIyAgICAgIFVlbGkgSHVnZW5zY2htaWR0IGNvbnRyaWJ1dGVkIGEgcGF0Y2ggZm9yIC1mcHNjCiMgICAgICBTYW0gS2luZ3RvbiBzdXBwbGllZCBhIHBhdGNoIHRvIGlkZW50aWZ5IHRoZSBpbml0aWFsIGluZGVudGF0aW9uIG9mCiMgICAgICBlbnRhYmJlZCBjb2RlLgojICAgICAgam9uYXRoYW4gc3dhcnR6IHN1cHBsaWVkIHBhdGNoZXMgZm9yOgojICAgICAgKiAuLi4vIHBhdHRlcm4sIHdoaWNoIGxvb2tzIHVwd2FyZHMgZnJvbSBkaXJlY3RvcnkKIyAgICAgICogLS1ub3RpZHksIHRvIGJlIHVzZWQgaW4gZGlyZWN0b3JpZXMgd2hlcmUgd2Ugd2FudCB0byBhdm9pZAojICAgICAgICBhY2NpZGVudGFsbHkgdGlkeWluZwojICAgICAgKiBwcmVmaWx0ZXIgYW5kIHBvc3RmaWx0ZXIKIyAgICAgICogaXRlcmF0aW9ucyBvcHRpb24KIwojICAgICAgTWFueSBvdGhlcnMgaGF2ZSBzdXBwbGllZCBrZXkgaWRlYXMsIHN1Z2dlc3Rpb25zLCBhbmQgYnVnIHJlcG9ydHM7CiMgICAgICAgIHNlZSB0aGUgQ0hBTkdFUyBmaWxlLgojCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKcGFja2FnZSBQZXJsOjpUaWR5OwoKIyBwZXJsdmVyIHJlcG9ydHMgbWluaW11bSB2ZXJzaW9uIG5lZWRlZCBpcyA1LjguMAojIDUuMDA0IG5lZWRlZCBmb3IgSU86OkZpbGUKIyA1LjAwOCBuZWVkZWQgZm9yIHdpZGUgY2hhcmFjdGVycwp1c2UgNS4wMDg7CnVzZSB3YXJuaW5nczsKdXNlIHN0cmljdDsKdXNlIEV4cG9ydGVyOwp1c2UgQ2FycDsKdXNlIERpZ2VzdDo6TUQ1IHF3KG1kNV9oZXgpOwp1c2UgUGVybDo6VGlkeTo6RGVidWdnZXI7CnVzZSBQZXJsOjpUaWR5OjpEZXZOdWxsOwp1c2UgUGVybDo6VGlkeTo6RGlhZ25vc3RpY3M7CnVzZSBQZXJsOjpUaWR5OjpGaWxlV3JpdGVyOwp1c2UgUGVybDo6VGlkeTo6Rm9ybWF0dGVyOwp1c2UgUGVybDo6VGlkeTo6SHRtbFdyaXRlcjsKdXNlIFBlcmw6OlRpZHk6OklPU2NhbGFyOwp1c2UgUGVybDo6VGlkeTo6SU9TY2FsYXJBcnJheTsKdXNlIFBlcmw6OlRpZHk6OkluZGVudGF0aW9uSXRlbTsKdXNlIFBlcmw6OlRpZHk6OkxpbmVTaW5rOwp1c2UgUGVybDo6VGlkeTo6TGluZVNvdXJjZTsKdXNlIFBlcmw6OlRpZHk6OkxvZ2dlcjsKdXNlIFBlcmw6OlRpZHk6OlRva2VuaXplcjsKdXNlIFBlcmw6OlRpZHk6OlZlcnRpY2FsQWxpZ25lcjsKbG9jYWwgJHwgPSAxOwoKdXNlIHZhcnMgcXd7CiAgJFZFUlNJT04KICBASVNBCiAgQEVYUE9SVAogICRtaXNzaW5nX2ZpbGVfc3BlYwogICRmaF9zdGRlcnIKICAkck9wdHNfY2hhcmFjdGVyX2VuY29kaW5nCiAgJFdhcm5fY291bnQKfTsKCkBJU0EgICAgPSBxdyggRXhwb3J0ZXIgKTsKQEVYUE9SVCA9IHF3KCAmcGVybHRpZHkgKTsKCnVzZSBDd2Q7CnVzZSBFbmNvZGUgKCk7CnVzZSBJTzo6RmlsZTsKdXNlIEZpbGU6OkJhc2VuYW1lOwp1c2UgRmlsZTo6Q29weTsKdXNlIEZpbGU6OlRlbXAgcXcodGVtcGZpbGUpOwoKQkVHSU4gewoKICAgICMgUmVsZWFzZSB2ZXJzaW9uIGlzIHRoZSBhcHByb3hpbWF0ZSBZWU1NREQgb2YgdGhlIHJlbGVhc2UuCiAgICAjIERldmVsb3BtZW50IHZlcnNpb24gaXMgKExhc3QgUmVsZWFzZSkuKERldmVsb3BtZW50IE51bWJlcikKCiAgICAjIFRvIG1ha2UgdGhlIG51bWJlciBjb250aW51YWxseSBpbmNyZWFzaW5nLCB0aGUgRGV2ZWxvcG1lbnQgTnVtYmVyIGlzIGEgMgogICAgIyBkaWdpdCBudW1iZXIgc3RhcnRpbmcgYXQgMDEgYWZ0ZXIgYSByZWxlYXNlIGlzIGNvbnRpbnVhbGx5IGJ1bXBlZCBhbG9uZwogICAgIyBhdCBzaWduaWZpY2FudCBwb2ludHMgZHVyaW5nIGRldmVsb3BtZW50LiBJZiBpdCBldmVyIHJlYWNoZXMgOTkgdGhlbiB0aGUKICAgICMgUmVsZWFzZSB2ZXJzaW9uIG11c3QgYmUgYnVtcGVkLCBhbmQgaXQgaXMgcHJvYmFibHkgcGFzdCB0aW1lIGZvciBhCiAgICAjIHJlbGVhc2UgYW55d2F5LgoKICAgICRWRVJTSU9OID0gJzIwMTkxMjAzJzsKfQoKc3ViIHN0cmVhbWhhbmRsZSB7CgogICAgIyBnaXZlbiBmaWxlbmFtZSBhbmQgbW9kZSAociBvciB3KSwgY3JlYXRlIGFuIG9iamVjdCB3aGljaDoKICAgICMgICBoYXMgYSAnZ2V0bGluZScgbWV0aG9kIGlmIG1vZGU9J3InLCBhbmQKICAgICMgICBoYXMgYSAncHJpbnQnIG1ldGhvZCBpZiBtb2RlPSd3Jy4KICAgICMgVGhlIG9iamVjdHMgYWxzbyBuZWVkIGEgJ2Nsb3NlJyBtZXRob2QuCiAgICAjCiAgICAjIEhvdyB0aGUgb2JqZWN0IGlzIG1hZGU6CiAgICAjCiAgICAjIGlmICRmaWxlbmFtZSBpczogICAgIE1ha2Ugb2JqZWN0IHVzaW5nOgogICAgIyAtLS0tLS0tLS0tLS0tLS0tICAgICAtLS0tLS0tLS0tLS0tLS0tLQogICAgIyAnLScgICAgICAgICAgICAgICAgICAoU1RESU4gaWYgbW9kZSA9ICdyJywgU1RET1VUIGlmIG1vZGU9J3cnKQogICAgIyBzdHJpbmcgICAgICAgICAgICAgICBJTzo6RmlsZQogICAgIyBBUlJBWSAgcmVmICAgICAgICAgICBQZXJsOjpUaWR5OjpJT1NjYWxhckFycmF5IChmb3JtZXJseSBJTzo6U2NhbGFyQXJyYXkpCiAgICAjIFNUUklORyByZWYgICAgICAgICAgIFBlcmw6OlRpZHk6OklPU2NhbGFyICAgICAgKGZvcm1lcmx5IElPOjpTY2FsYXIpCiAgICAjIG9iamVjdCAgICAgICAgICAgICAgIG9iamVjdAogICAgIyAgICAgICAgICAgICAgICAgICAgICAoY2hlY2sgZm9yICdwcmludCcgbWV0aG9kIGZvciAndycgbW9kZSkKICAgICMgICAgICAgICAgICAgICAgICAgICAgKGNoZWNrIGZvciAnZ2V0bGluZScgbWV0aG9kIGZvciAncicgbW9kZSkKICAgIG15ICggJGZpbGVuYW1lLCAkbW9kZSApID0gQF87CgogICAgbXkgJHJlZiA9IHJlZigkZmlsZW5hbWUpOwogICAgbXkgJE5ldzsKICAgIG15ICRmaDsKCiAgICAjIGhhbmRsZSBhIHJlZmVyZW5jZQogICAgaWYgKCRyZWYpIHsKICAgICAgICBpZiAoICRyZWYgZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgJE5ldyA9IHN1YiB7IFBlcmw6OlRpZHk6OklPU2NhbGFyQXJyYXktPm5ldyhAXykgfTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkcmVmIGVxICdTQ0FMQVInICkgewogICAgICAgICAgICAkTmV3ID0gc3ViIHsgUGVybDo6VGlkeTo6SU9TY2FsYXItPm5ldyhAXykgfTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIEFjY2VwdCBhbiBvYmplY3Qgd2l0aCBhIGdldGxpbmUgbWV0aG9kIGZvciByZWFkaW5nLiBOb3RlOgogICAgICAgICAgICAjIElPOjpGaWxlIGlzIGJ1aWx0LWluIGFuZCBkb2VzIG5vdCByZXNwb25kIHRvIHRoZSBkZWZpbmVkCiAgICAgICAgICAgICMgb3BlcmF0b3IuICBJZiB0aGlzIGNhdXNlcyB0cm91YmxlLCB0aGUgY2hlY2sgY2FuIGJlCiAgICAgICAgICAgICMgc2tpcHBlZCBhbmQgd2UgY2FuIGp1c3QgbGV0IGl0IGNyYXNoIGlmIHRoZXJlIGlzIG5vCiAgICAgICAgICAgICMgZ2V0bGluZS4KICAgICAgICAgICAgaWYgKCAkbW9kZSA9fiAvW3JSXS8gKSB7CgogICAgICAgICAgICAgICAgIyBSVCM5NzE1OTsgcGFydCAxIG9mIDI6IHVwZGF0ZWQgdG8gdXNlICdjYW4nCiAgICAgICAgICAgICAgICAjI2lmICggJHJlZiBlcSAnSU86OkZpbGUnIHx8IGRlZmluZWQgJnsgJHJlZiAuICI6OmdldGxpbmUiIH0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRyZWYtPmNhbignZ2V0bGluZScpICkgewogICAgICAgICAgICAgICAgICAgICROZXcgPSBzdWIgeyAkZmlsZW5hbWUgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICROZXcgPSBzdWIgeyB1bmRlZiB9OwogICAgICAgICAgICAgICAgICAgIGNvbmZlc3MgPDxFT007Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpObyAnZ2V0bGluZScgbWV0aG9kIGlzIGRlZmluZWQgZm9yIG9iamVjdCBvZiBjbGFzcyAkcmVmClBsZWFzZSBjaGVjayB5b3VyIGNhbGwgdG8gUGVybDo6VGlkeTo6cGVybHRpZHkuICBUcmFjZSBmb2xsb3dzLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRU9NCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQWNjZXB0IGFuIG9iamVjdCB3aXRoIGEgcHJpbnQgbWV0aG9kIGZvciB3cml0aW5nLgogICAgICAgICAgICAjIFNlZSBub3RlIGFib3ZlIGFib3V0IElPOjpGaWxlCiAgICAgICAgICAgIGlmICggJG1vZGUgPX4gL1t3V10vICkgewoKICAgICAgICAgICAgICAgICMgUlQjOTcxNTk7IHBhcnQgMiBvZiAyOiB1cGRhdGVkIHRvIHVzZSAnY2FuJwogICAgICAgICAgICAgICAgIyNpZiAoICRyZWYgZXEgJ0lPOjpGaWxlJyB8fCBkZWZpbmVkICZ7ICRyZWYgLiAiOjpwcmludCIgfSApIHsKICAgICAgICAgICAgICAgIGlmICggJHJlZi0+Y2FuKCdwcmludCcpICkgewogICAgICAgICAgICAgICAgICAgICROZXcgPSBzdWIgeyAkZmlsZW5hbWUgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICROZXcgPSBzdWIgeyB1bmRlZiB9OwogICAgICAgICAgICAgICAgICAgIGNvbmZlc3MgPDxFT007Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpObyAncHJpbnQnIG1ldGhvZCBpcyBkZWZpbmVkIGZvciBvYmplY3Qgb2YgY2xhc3MgJHJlZgpQbGVhc2UgY2hlY2sgeW91ciBjYWxsIHRvIFBlcmw6OlRpZHk6OnBlcmx0aWR5LiBUcmFjZSBmb2xsb3dzLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRU9NCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBoYW5kbGUgYSBzdHJpbmcKICAgIGVsc2UgewogICAgICAgIGlmICggJGZpbGVuYW1lIGVxICctJyApIHsKICAgICAgICAgICAgJE5ldyA9IHN1YiB7ICRtb2RlIGVxICd3JyA/ICpTVERPVVQgOiAqU1RESU4gfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJE5ldyA9IHN1YiB7IElPOjpGaWxlLT5uZXcoQF8pIH07CiAgICAgICAgfQogICAgfQogICAgJGZoID0gJE5ldy0+KCAkZmlsZW5hbWUsICRtb2RlICkKICAgICAgb3IgV2FybigiQ291bGRuJ3Qgb3BlbiBmaWxlOiRmaWxlbmFtZSBpbiBtb2RlOiRtb2RlIDogJCFcbiIpOwoKICAgIHJldHVybiAkZmgsICggJHJlZiBvciAkZmlsZW5hbWUgKTsKfQoKc3ViIGZpbmRfaW5wdXRfbGluZV9lbmRpbmcgewoKICAgICMgUGVlayBhdCBhIGZpbGUgYW5kIHJldHVybiBmaXJzdCBsaW5lIGVuZGluZyBjaGFyYWN0ZXIuCiAgICAjIFJldHVybiB1bmRlZmluZWQgdmFsdWUgaW4gY2FzZSBvZiBhbnkgdHJvdWJsZS4KICAgIG15ICgkaW5wdXRfZmlsZSkgPSBAXzsKICAgIG15ICRlbmRpbmc7CgogICAgIyBzaWxlbnRseSBpZ25vcmUgaW5wdXQgZnJvbSBvYmplY3Qgb3Igc3RkaW4KICAgIGlmICggcmVmKCRpbnB1dF9maWxlKSB8fCAkaW5wdXRfZmlsZSBlcSAnLScgKSB7CiAgICAgICAgcmV0dXJuICRlbmRpbmc7CiAgICB9CgogICAgbXkgJGZoOwogICAgb3BlbiggJGZoLCAnPCcsICRpbnB1dF9maWxlICkgfHwgcmV0dXJuICRlbmRpbmc7CgogICAgYmlubW9kZSAkZmg7CiAgICBteSAkYnVmOwogICAgcmVhZCggJGZoLCAkYnVmLCAxMDI0ICk7CiAgICBjbG9zZSAkZmg7CiAgICBpZiAoICRidWYgJiYgJGJ1ZiA9fiAvKFtcMDEyXDAxNV0rKS8gKSB7CiAgICAgICAgbXkgJHRlc3QgPSAkMTsKCiAgICAgICAgIyBkb3MKICAgICAgICBpZiAoICR0ZXN0ID1+IC9eKFwwMTVcMDEyKSskLyApIHsgJGVuZGluZyA9ICJcMDE1XDAxMiIgfQoKICAgICAgICAjIG1hYwogICAgICAgIGVsc2lmICggJHRlc3QgPX4gL15cMDE1KyQvICkgeyAkZW5kaW5nID0gIlwwMTUiIH0KCiAgICAgICAgIyB1bml4CiAgICAgICAgZWxzaWYgKCAkdGVzdCA9fiAvXlwwMTIrJC8gKSB7ICRlbmRpbmcgPSAiXDAxMiIgfQoKICAgICAgICAjIHVua25vd24KICAgICAgICBlbHNlIHsgfQogICAgfQoKICAgICMgbm8gZW5kaW5nIHNlZW4KICAgIGVsc2UgeyB9CgogICAgcmV0dXJuICRlbmRpbmc7Cn0KCnN1YiBjYXRmaWxlIHsKCiAgICAjIGNvbmNhdGVuYXRlIGEgcGF0aCBhbmQgZmlsZSBiYXNlbmFtZQogICAgIyByZXR1cm5zIHVuZGVmIGluIGNhc2Ugb2YgZXJyb3IKCiAgICBteSBAcGFydHMgPSBAXzsKCiAgICBCRUdJTiB7CiAgICAgICAgZXZhbCB7IHJlcXVpcmUgRmlsZTo6U3BlYyB9OwogICAgICAgICRtaXNzaW5nX2ZpbGVfc3BlYyA9ICRAOwogICAgfQoKICAgICMgdXNlIEZpbGU6OlNwZWMgaWYgd2UgY2FuCiAgICB1bmxlc3MgKCRtaXNzaW5nX2ZpbGVfc3BlYykgewogICAgICAgIHJldHVybiBGaWxlOjpTcGVjLT5jYXRmaWxlKEBwYXJ0cyk7CiAgICB9CgogICAgIyBQZXJsIDUuMDA0IHN5c3RlbXMgbWF5IG5vdCBoYXZlIEZpbGU6OlNwZWMgc28gd2UnbGwgbWFrZQogICAgIyBhIHNpbXBsZSB0cnkuICBXZSBhc3N1bWUgRmlsZTo6QmFzZW5hbWUgaXMgYXZhaWxhYmxlLgogICAgIyByZXR1cm4gaWYgbm90IHN1Y2Nlc3NmdWwuCiAgICBteSAkbmFtZSAgICAgID0gcG9wIEBwYXJ0czsKICAgIG15ICRwYXRoICAgICAgPSBqb2luICcvJywgQHBhcnRzOwogICAgbXkgJHRlc3RfZmlsZSA9ICRwYXRoIC4gJG5hbWU7CiAgICBteSAoICR0ZXN0X25hbWUsICR0ZXN0X3BhdGggKSA9IGZpbGVwYXJzZSgkdGVzdF9maWxlKTsKICAgIHJldHVybiAkdGVzdF9maWxlIGlmICggJHRlc3RfbmFtZSBlcSAkbmFtZSApOwogICAgcmV0dXJuICAgICAgICAgICAgaWYgKCAkXk8gZXEgJ1ZNUycgKTsKCiAgICAjIHRoaXMgc2hvdWxkIHdvcmsgYXQgbGVhc3QgZm9yIFdpbmRvd3MgYW5kIFVuaXg6CiAgICAkdGVzdF9maWxlID0gJHBhdGggLiAnLycgLiAkbmFtZTsKICAgICggJHRlc3RfbmFtZSwgJHRlc3RfcGF0aCApID0gZmlsZXBhcnNlKCR0ZXN0X2ZpbGUpOwogICAgcmV0dXJuICR0ZXN0X2ZpbGUgaWYgKCAkdGVzdF9uYW1lIGVxICRuYW1lICk7CiAgICByZXR1cm47Cn0KCiMgSGVyZSBpcyBhIG1hcCBvZiB0aGUgZmxvdyBvZiBkYXRhIGZyb20gdGhlIGlucHV0IHNvdXJjZSB0byB0aGUgb3V0cHV0CiMgbGluZSBzaW5rOgojCiMgTGluZVNvdXJjZS0tPlRva2VuaXplci0tPkZvcm1hdHRlci0tPlZlcnRpY2FsQWxpZ25lci0tPkZpbGVXcml0ZXItLT4KIyAgICAgICBpbnB1dCAgICAgICAgICAgICAgICAgICAgICAgICBncm91cHMgICAgICAgICAgICAgICAgIG91dHB1dAojICAgICAgIGxpbmVzICAgdG9rZW5zICAgICAgbGluZXMgICAgICAgb2YgICAgICAgICAgbGluZXMgICAgbGluZXMKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMKIwojIFRoZSBuYW1lcyBjb3JyZXNwb25kIHRvIHRoZSBwYWNrYWdlIG5hbWVzIHJlc3BvbnNpYmxlIGZvciB0aGUgdW5pdCBwcm9jZXNzZXMuCiMKIyBUaGUgb3ZlcmFsbCBwcm9jZXNzIGlzIGNvbnRyb2xsZWQgYnkgdGhlICJtYWluIiBwYWNrYWdlLgojCiMgTGluZVNvdXJjZSBpcyB0aGUgc3RyZWFtIG9mIGlucHV0IGxpbmVzCiMKIyBUb2tlbml6ZXIgYW5hbHl6ZXMgYSBsaW5lIGFuZCBicmVha3MgaXQgaW50byB0b2tlbnMsIHBlZWtpbmcgYWhlYWQKIyBpZiBuZWNlc3NhcnkuICBBIHRva2VuIGlzIGFueSBzZWN0aW9uIG9mIHRoZSBpbnB1dCBsaW5lIHdoaWNoIHNob3VsZCBiZQojIG1hbmlwdWxhdGVkIGFzIGEgc2luZ2xlIGVudGl0eSBkdXJpbmcgZm9ybWF0dGluZy4gIEZvciBleGFtcGxlLCBhIHNpbmdsZQojICcsJyBjaGFyYWN0ZXIgaXMgYSB0b2tlbiwgYW5kIHNvIGlzIGFuIGVudGlyZSBzaWRlIGNvbW1lbnQuICBJdCBoYW5kbGVzCiMgdGhlIGNvbXBsZXhpdGllcyBvZiBQZXJsIHN5bnRheCwgc3VjaCBhcyBkaXN0aW5ndWlzaGluZyBiZXR3ZWVuICc8PCcgYXMKIyBhIHNoaWZ0IG9wZXJhdG9yIGFuZCBhcyBhIGhlcmUtZG9jdW1lbnQsIG9yIGRpc3Rpbmd1aXNoaW5nIGJldHdlZW4gJy8nCiMgYXMgYSBkaXZpZGUgc3ltYm9sIGFuZCBhcyBhIHBhdHRlcm4gZGVsaW1pdGVyLgojCiMgRm9ybWF0dGVyIGluc2VydHMgYW5kIGRlbGV0ZXMgd2hpdGVzcGFjZSBiZXR3ZWVuIHRva2VucywgYW5kIGJyZWFrcwojIHNlcXVlbmNlcyBvZiB0b2tlbnMgYXQgYXBwcm9wcmlhdGUgcG9pbnRzIGFzIG91dHB1dCBsaW5lcy4gIEl0IGJhc2VzIGl0cwojIGRlY2lzaW9ucyBvbiB0aGUgZGVmYXVsdCBydWxlcyBhcyBtb2RpZmllZCBieSBhbnkgY29tbWFuZC1saW5lIG9wdGlvbnMuCiMKIyBWZXJ0aWNhbEFsaWduZXIgY29sbGVjdHMgZ3JvdXBzIG9mIGxpbmVzIHRvZ2V0aGVyIGFuZCB0cmllcyB0byBsaW5lIHVwCiMgY2VydGFpbiB0b2tlbnMsIHN1Y2ggYXMgJz0+JywgJyMnLCBhbmQgJz0nIGJ5IGFkZGluZyB3aGl0ZXNwYWNlLgojCiMgRmlsZVdyaXRlciBzaW1wbHkgd3JpdGVzIGxpbmVzIHRvIHRoZSBvdXRwdXQgc3RyZWFtLgojCiMgVGhlIExvZ2dlciBwYWNrYWdlLCBub3Qgc2hvd24sIHJlY29yZHMgc2lnbmlmaWNhbnQgZXZlbnRzIGFuZCB3YXJuaW5nCiMgbWVzc2FnZXMuICBJdCB3cml0ZXMgYSAuTE9HIGZpbGUsIHdoaWNoIG1heSBiZSBzYXZlZCB3aXRoIGEKIyAnLWxvZycgb3IgYSAnLWcnIGZsYWcuCgpzdWIgcGVybHRpZHkgewoKICAgIG15ICVpbnB1dF9oYXNoID0gQF87CgogICAgbXkgJWRlZmF1bHRzID0gKAogICAgICAgIGFyZ3YgICAgICAgICAgICAgICAgICA9PiB1bmRlZiwKICAgICAgICBkZXN0aW5hdGlvbiAgICAgICAgICAgPT4gdW5kZWYsCiAgICAgICAgZm9ybWF0dGVyICAgICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIGxvZ2ZpbGUgICAgICAgICAgICAgICA9PiB1bmRlZiwKICAgICAgICBlcnJvcmZpbGUgICAgICAgICAgICAgPT4gdW5kZWYsCiAgICAgICAgcGVybHRpZHlyYyAgICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIHNvdXJjZSAgICAgICAgICAgICAgICA9PiB1bmRlZiwKICAgICAgICBzdGRlcnIgICAgICAgICAgICAgICAgPT4gdW5kZWYsCiAgICAgICAgZHVtcF9vcHRpb25zICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIGR1bXBfb3B0aW9uc190eXBlICAgICA9PiB1bmRlZiwKICAgICAgICBkdW1wX2dldG9wdF9mbGFncyAgICAgPT4gdW5kZWYsCiAgICAgICAgZHVtcF9vcHRpb25zX2NhdGVnb3J5ID0+IHVuZGVmLAogICAgICAgIGR1bXBfb3B0aW9uc19yYW5nZSAgICA9PiB1bmRlZiwKICAgICAgICBkdW1wX2FiYnJldmlhdGlvbnMgICAgPT4gdW5kZWYsCiAgICAgICAgcHJlZmlsdGVyICAgICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIHBvc3RmaWx0ZXIgICAgICAgICAgICA9PiB1bmRlZiwKICAgICk7CgogICAgIyBkb24ndCBvdmVyd3JpdGUgY2FsbGVycyBBUkdWCiAgICBsb2NhbCBAQVJHViAgID0gQEFSR1Y7CiAgICBsb2NhbCAqU1RERVJSID0gKlNUREVSUjsKCiAgICBpZiAoIG15IEBiYWRfa2V5cyA9IGdyZXAgeyAhZXhpc3RzICRkZWZhdWx0c3skX30gfSBrZXlzICVpbnB1dF9oYXNoICkgewogICAgICAgIGxvY2FsICQiID0gJykoJzsKICAgICAgICBteSBAZ29vZF9rZXlzID0gc29ydCBrZXlzICVkZWZhdWx0czsKICAgICAgICBAYmFkX2tleXMgPSBzb3J0IEBiYWRfa2V5czsKICAgICAgICBjb25mZXNzIDw8RU9NOwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVW5rbm93biBwZXJsdGlkeSBwYXJhbWV0ZXIgOiAoQGJhZF9rZXlzKQpwZXJsdGlkeSBvbmx5IHVuZGVyc3RhbmRzIDogKEBnb29kX2tleXMpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKRU9NCiAgICB9CgogICAgbXkgJGdldF9oYXNoX3JlZiA9IHN1YiB7CiAgICAgICAgbXkgKCRrZXkpID0gQF87CiAgICAgICAgbXkgJGhhc2hfcmVmID0gJGlucHV0X2hhc2h7JGtleX07CiAgICAgICAgaWYgKCBkZWZpbmVkKCRoYXNoX3JlZikgKSB7CiAgICAgICAgICAgIHVubGVzcyAoIHJlZigkaGFzaF9yZWYpIGVxICdIQVNIJyApIHsKICAgICAgICAgICAgICAgIG15ICR3aGF0ID0gcmVmKCRoYXNoX3JlZik7CiAgICAgICAgICAgICAgICBteSAkYnV0X2lzID0KICAgICAgICAgICAgICAgICAgJHdoYXQgPyAiYnV0IGlzIHJlZiB0byAkd2hhdCIgOiAiYnV0IGlzIG5vdCBhIHJlZmVyZW5jZSI7CiAgICAgICAgICAgICAgICBjcm9hayA8PEVPTTsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmVycm9yIGluIGNhbGwgdG8gcGVybHRpZHk6Ci0ka2V5IG11c3QgYmUgcmVmZXJlbmNlIHRvIEhBU0ggJGJ1dF9pcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRU9NCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRoYXNoX3JlZjsKICAgIH07CgogICAgJWlucHV0X2hhc2ggPSAoICVkZWZhdWx0cywgJWlucHV0X2hhc2ggKTsKICAgIG15ICRhcmd2ICAgICAgICAgICAgICAgPSAkaW5wdXRfaGFzaHsnYXJndid9OwogICAgbXkgJGRlc3RpbmF0aW9uX3N0cmVhbSA9ICRpbnB1dF9oYXNoeydkZXN0aW5hdGlvbid9OwogICAgbXkgJGVycm9yZmlsZV9zdHJlYW0gICA9ICRpbnB1dF9oYXNoeydlcnJvcmZpbGUnfTsKICAgIG15ICRsb2dmaWxlX3N0cmVhbSAgICAgPSAkaW5wdXRfaGFzaHsnbG9nZmlsZSd9OwogICAgbXkgJHBlcmx0aWR5cmNfc3RyZWFtICA9ICRpbnB1dF9oYXNoeydwZXJsdGlkeXJjJ307CiAgICBteSAkc291cmNlX3N0cmVhbSAgICAgID0gJGlucHV0X2hhc2h7J3NvdXJjZSd9OwogICAgbXkgJHN0ZGVycl9zdHJlYW0gICAgICA9ICRpbnB1dF9oYXNoeydzdGRlcnInfTsKICAgIG15ICR1c2VyX2Zvcm1hdHRlciAgICAgPSAkaW5wdXRfaGFzaHsnZm9ybWF0dGVyJ307CiAgICBteSAkcHJlZmlsdGVyICAgICAgICAgID0gJGlucHV0X2hhc2h7J3ByZWZpbHRlcid9OwogICAgbXkgJHBvc3RmaWx0ZXIgICAgICAgICA9ICRpbnB1dF9oYXNoeydwb3N0ZmlsdGVyJ307CgogICAgaWYgKCRzdGRlcnJfc3RyZWFtKSB7CiAgICAgICAgKCAkZmhfc3RkZXJyLCBteSAkc3RkZXJyX2ZpbGUgKSA9CiAgICAgICAgICBQZXJsOjpUaWR5OjpzdHJlYW1oYW5kbGUoICRzdGRlcnJfc3RyZWFtLCAndycgKTsKICAgICAgICBpZiAoICEkZmhfc3RkZXJyICkgewogICAgICAgICAgICBjcm9hayA8PEVPTTsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClVuYWJsZSB0byByZWRpcmVjdCBTVERFUlIgdG8gJHN0ZGVycl9zdHJlYW0KUGxlYXNlIGNoZWNrIHZhbHVlIG9mIC1zdGRlcnIgaW4gY2FsbCB0byBwZXJsdGlkeQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRU9NCiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJGZoX3N0ZGVyciA9ICpTVERFUlI7CiAgICB9CgogICAgc3ViIFdhcm4geyBteSAkbXNnID0gc2hpZnQ7ICRmaF9zdGRlcnItPnByaW50KCRtc2cpOyAkV2Fybl9jb3VudCsrOyByZXR1cm4gfQoKICAgIHN1YiBFeGl0IHsKICAgICAgICBteSAkZmxhZyA9IHNoaWZ0OwogICAgICAgIGlmICAgKCRmbGFnKSB7IGdvdG8gRVJST1JfRVhJVCB9CiAgICAgICAgZWxzZSAgICAgICAgIHsgZ290byBOT1JNQUxfRVhJVCB9CiAgICAgICAgY3JvYWsgInVuZXhwZWN0ZCByZXR1cm4gdG8gRXhpdCI7CiAgICB9CgogICAgc3ViIERpZSB7CiAgICAgICAgbXkgJG1zZyA9IHNoaWZ0OwogICAgICAgIFdhcm4oJG1zZyk7CiAgICAgICAgRXhpdCgxKTsKICAgICAgICBjcm9hayAidW5leHBlY3RlZCByZXR1cm4gdG8gRGllIjsKICAgIH0KCiAgICBteSAkbWQ1X2hleCA9IHN1YiB7CiAgICAgICAgbXkgKCRidWYpID0gQF87CgogICAgICAgICMgRXZhbHVhdGUgdGhlIE1ENSBzdW0gZm9yIGEgc3RyaW5nCiAgICAgICAgIyBQYXRjaCBmb3IgW3J0LmNwYW4ub3JnICM4ODAyMF0KICAgICAgICAjIFVzZSB1dGY4OjplbmNvZGUgc2luY2UgbWQ1X2hleCgpIG9ubHkgb3BlcmF0ZXMgb24gYnl0ZXMuCiAgICAgICAgIyBteSAkZGlnZXN0ID0gbWQ1X2hleCggdXRmODo6ZW5jb2RlKCRzaW5rX2J1ZmZlcikgKTsKCiAgICAgICAgIyBOb3RlIGFkZGVkIDIwMTgwMTE0OiB0aGUgYWJvdmUgcGF0Y2ggZGlkIG5vdCB3b3JrIGNvcnJlY3RseS4gIEknbSBub3QKICAgICAgICAjIHN1cmUgd2h5LiAgQnV0IHN3aXRjaGluZyB0byB0aGUgbWV0aG9kIHJlY29tbWVuZGVkIGluIHRoZSBQZXJsIDUKICAgICAgICAjIGRvY3VtZW50YXRpb24gZm9yIEVuY29kZSB3b3JrZWQuICBBY2NvcmRpbmcgdG8gdGhpcyB3ZSBjYW4gZWl0aGVyIHVzZQogICAgICAgICMgICAgJG9jdGV0cyA9IGVuY29kZV91dGY4KCRzdHJpbmcpICBvciBlcXVpdmFsZW50bHkKICAgICAgICAjICAgICRvY3RldHMgPSBlbmNvZGUoInV0ZjgiLCRzdHJpbmcpCiAgICAgICAgIyBhbmQgdGhlbiBjYWxjdWxhdGUgdGhlIGNoZWNrc3VtLiAgU286CiAgICAgICAgbXkgJG9jdGV0cyA9IEVuY29kZTo6ZW5jb2RlKCAidXRmOCIsICRidWYgKTsKICAgICAgICBteSAkZGlnZXN0ID0gbWQ1X2hleCgkb2N0ZXRzKTsKICAgICAgICByZXR1cm4gJGRpZ2VzdDsKICAgIH07CgogICAgIyBleHRyYWN0IHZhcmlvdXMgZHVtcCBwYXJhbWV0ZXJzCiAgICBteSAkZHVtcF9vcHRpb25zX3R5cGUgICAgID0gJGlucHV0X2hhc2h7J2R1bXBfb3B0aW9uc190eXBlJ307CiAgICBteSAkZHVtcF9vcHRpb25zICAgICAgICAgID0gJGdldF9oYXNoX3JlZi0+KCdkdW1wX29wdGlvbnMnKTsKICAgIG15ICRkdW1wX2dldG9wdF9mbGFncyAgICAgPSAkZ2V0X2hhc2hfcmVmLT4oJ2R1bXBfZ2V0b3B0X2ZsYWdzJyk7CiAgICBteSAkZHVtcF9vcHRpb25zX2NhdGVnb3J5ID0gJGdldF9oYXNoX3JlZi0+KCdkdW1wX29wdGlvbnNfY2F0ZWdvcnknKTsKICAgIG15ICRkdW1wX2FiYnJldmlhdGlvbnMgICAgPSAkZ2V0X2hhc2hfcmVmLT4oJ2R1bXBfYWJicmV2aWF0aW9ucycpOwogICAgbXkgJGR1bXBfb3B0aW9uc19yYW5nZSAgICA9ICRnZXRfaGFzaF9yZWYtPignZHVtcF9vcHRpb25zX3JhbmdlJyk7CgogICAgIyB2YWxpZGF0ZSBkdW1wX29wdGlvbnNfdHlwZQogICAgaWYgKCBkZWZpbmVkKCRkdW1wX29wdGlvbnMpICkgewogICAgICAgIHVubGVzcyAoIGRlZmluZWQoJGR1bXBfb3B0aW9uc190eXBlKSApIHsKICAgICAgICAgICAgJGR1bXBfb3B0aW9uc190eXBlID0gJ3Blcmx0aWR5cmMnOwogICAgICAgIH0KICAgICAgICB1bmxlc3MgKCAkZHVtcF9vcHRpb25zX3R5cGUgPX4gL14ocGVybHRpZHlyY3xmdWxsKSQvICkgewogICAgICAgICAgICBjcm9hayA8PEVPTTsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClBsZWFzZSBjaGVjayB2YWx1ZSBvZiAtZHVtcF9vcHRpb25zX3R5cGUgaW4gY2FsbCB0byBwZXJsdGlkeTsKc2F3OiAnJGR1bXBfb3B0aW9uc190eXBlJyAKZXhwZWN0aW5nOiAncGVybHRpZHlyYycgb3IgJ2Z1bGwnCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFT00KCiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJGR1bXBfb3B0aW9uc190eXBlID0gIiI7CiAgICB9CgogICAgaWYgKCR1c2VyX2Zvcm1hdHRlcikgewoKICAgICAgICAjIGlmIHRoZSB1c2VyIGRlZmluZXMgYSBmb3JtYXR0ZXIsIHRoZXJlIGlzIG5vIG91dHB1dCBzdHJlYW0sCiAgICAgICAgIyBidXQgd2UgbmVlZCBhIG51bGwgc3RyZWFtIHRvIGtlZXAgY29kaW5nIHNpbXBsZQogICAgICAgICRkZXN0aW5hdGlvbl9zdHJlYW0gPSBQZXJsOjpUaWR5OjpEZXZOdWxsLT5uZXcoKTsKICAgIH0KCiAgICAjIHNlZSBpZiBBUkdWIGlzIG92ZXJyaWRkZW4KICAgIGlmICggZGVmaW5lZCgkYXJndikgKSB7CgogICAgICAgIG15ICRyYXJndiA9IHJlZiAkYXJndjsKICAgICAgICBpZiAoICRyYXJndiBlcSAnU0NBTEFSJyApIHsgJGFyZ3YgPSAkeyRhcmd2fTsgJHJhcmd2ID0gdW5kZWYgfQoKICAgICAgICAjIHJlZiB0byBBUlJBWQogICAgICAgIGlmICgkcmFyZ3YpIHsKICAgICAgICAgICAgaWYgKCAkcmFyZ3YgZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgICAgIEBBUkdWID0gQHskYXJndn07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBjcm9hayA8PEVPTTsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClBsZWFzZSBjaGVjayB2YWx1ZSBvZiAtYXJndiBpbiBjYWxsIHRvIHBlcmx0aWR5OwppdCBtdXN0IGJlIGEgc3RyaW5nIG9yIHJlZiB0byBBUlJBWSBidXQgaXM6ICRyYXJndgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRU9NCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc3RyaW5nCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG15ICggJHJhcmd2LCAkbXNnICkgPSBwYXJzZV9hcmdzKCRhcmd2KTsKICAgICAgICAgICAgaWYgKCRtc2cpIHsKICAgICAgICAgICAgICAgIERpZSg8PEVPTSk7CkVycm9yIHBhcnNpbmcgdGhpcyBzdHJpbmcgcGFzc2VkIHRvIHRvIHBlcmx0aWR5IHdpdGggJ2FyZ3YnOiAKJG1zZwpFT00KICAgICAgICAgICAgfQogICAgICAgICAgICBAQVJHViA9IEB7JHJhcmd2fTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJHJwZW5kaW5nX2NvbXBsYWludDsKICAgICR7JHJwZW5kaW5nX2NvbXBsYWludH0gPSAiIjsKICAgIG15ICRycGVuZGluZ19sb2dmaWxlX21lc3NhZ2U7CiAgICAkeyRycGVuZGluZ19sb2dmaWxlX21lc3NhZ2V9ID0gIiI7CgogICAgbXkgKCAkaXNfV2luZG93cywgJFdpbmRvd3NfdHlwZSApID0gbG9va19mb3JfV2luZG93cygkcnBlbmRpbmdfY29tcGxhaW50KTsKCiAgICAjIFZNUyBmaWxlIG5hbWVzIGFyZSByZXN0cmljdGVkIHRvIGEgNDAuNDAgZm9ybWF0LCBzbyB3ZSBhcHBlbmQgX3RkeQogICAgIyBpbnN0ZWFkIG9mIC50ZHksIGV0Yy4gKGJ1dCBzZWUgYWxzbyBzdWIgY2hlY2tfdm1zX2ZpbGVuYW1lKQogICAgbXkgJGRvdDsKICAgIG15ICRkb3RfcGF0dGVybjsKICAgIGlmICggJF5PIGVxICdWTVMnICkgewogICAgICAgICRkb3QgICAgICAgICA9ICdfJzsKICAgICAgICAkZG90X3BhdHRlcm4gPSAnXyc7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkZG90ICAgICAgICAgPSAnLic7CiAgICAgICAgJGRvdF9wYXR0ZXJuID0gJ1wuJzsgICAgIyBtdXN0IGVzY2FwZSBmb3IgdXNlIGluIHJlZ2V4CiAgICB9CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyBnZXQgY29tbWFuZCBsaW5lIG9wdGlvbnMKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIG15ICggJHJPcHRzLCAkY29uZmlnX2ZpbGUsICRycmF3X29wdGlvbnMsICRyb3B0aW9uX3N0cmluZywKICAgICAgICAkcmV4cGFuc2lvbiwgJHJvcHRpb25fY2F0ZWdvcnksICRyb3B0aW9uX3JhbmdlICkKICAgICAgPSBwcm9jZXNzX2NvbW1hbmRfbGluZSgKICAgICAgICAkcGVybHRpZHlyY19zdHJlYW0sICAkaXNfV2luZG93cywgJFdpbmRvd3NfdHlwZSwKICAgICAgICAkcnBlbmRpbmdfY29tcGxhaW50LCAkZHVtcF9vcHRpb25zX3R5cGUsCiAgICAgICk7CgogICAgbXkgJHNhd19leHRydWRlID0gKCBncmVwIHsgbS9eLWV4dHJ1ZGUkLyB9IEB7JHJyYXdfb3B0aW9uc30gKSA/IDEgOiAwOwogICAgbXkgJHNhd19wYnAgPQogICAgICAoIGdyZXAgeyBtL14tKHBicHxwZXJsLWJlc3QtcHJhY3RpY2VzKSQvIH0gQHskcnJhd19vcHRpb25zfSApID8gMSA6IDA7CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyBIYW5kbGUgcmVxdWVzdHMgdG8gZHVtcCBpbmZvcm1hdGlvbgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICMgcmV0dXJuIG9yIGV4aXQgaW1tZWRpYXRlbHkgYWZ0ZXIgYWxsIGR1bXBzCiAgICBteSAkcXVpdF9ub3cgPSAwOwoKICAgICMgR2V0b3B0IHBhcmFtZXRlcnMgYW5kIHRoZWlyIGZsYWdzCiAgICBpZiAoIGRlZmluZWQoJGR1bXBfZ2V0b3B0X2ZsYWdzKSApIHsKICAgICAgICAkcXVpdF9ub3cgPSAxOwogICAgICAgIGZvcmVhY2ggbXkgJG9wICggQHskcm9wdGlvbl9zdHJpbmd9ICkgewogICAgICAgICAgICBteSAkb3B0ICA9ICRvcDsKICAgICAgICAgICAgbXkgJGZsYWcgPSAiIjsKCiAgICAgICAgICAgICMgRXhhbXBsZXM6CiAgICAgICAgICAgICMgIHNvbWUtb3B0aW9uPXMKICAgICAgICAgICAgIyAgc29tZS1vcHRpb249aQogICAgICAgICAgICAjICBzb21lLW9wdGlvbjppCiAgICAgICAgICAgICMgIHNvbWUtb3B0aW9uIQogICAgICAgICAgICBpZiAoICRvcHQgPX4gLyguKikoIXw9Lip8Oi4qKSQvICkgewogICAgICAgICAgICAgICAgJG9wdCAgPSAkMTsKICAgICAgICAgICAgICAgICRmbGFnID0gJDI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGR1bXBfZ2V0b3B0X2ZsYWdzLT57JG9wdH0gPSAkZmxhZzsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCBkZWZpbmVkKCRkdW1wX29wdGlvbnNfY2F0ZWdvcnkpICkgewogICAgICAgICRxdWl0X25vdyA9IDE7CiAgICAgICAgJXskZHVtcF9vcHRpb25zX2NhdGVnb3J5fSA9ICV7JHJvcHRpb25fY2F0ZWdvcnl9OwogICAgfQoKICAgIGlmICggZGVmaW5lZCgkZHVtcF9vcHRpb25zX3JhbmdlKSApIHsKICAgICAgICAkcXVpdF9ub3cgPSAxOwogICAgICAgICV7JGR1bXBfb3B0aW9uc19yYW5nZX0gPSAleyRyb3B0aW9uX3JhbmdlfTsKICAgIH0KCiAgICBpZiAoIGRlZmluZWQoJGR1bXBfYWJicmV2aWF0aW9ucykgKSB7CiAgICAgICAgJHF1aXRfbm93ID0gMTsKICAgICAgICAleyRkdW1wX2FiYnJldmlhdGlvbnN9ID0gJXskcmV4cGFuc2lvbn07CiAgICB9CgogICAgaWYgKCBkZWZpbmVkKCRkdW1wX29wdGlvbnMpICkgewogICAgICAgICRxdWl0X25vdyA9IDE7CiAgICAgICAgJXskZHVtcF9vcHRpb25zfSA9ICV7JHJPcHRzfTsKICAgIH0KCiAgICBFeGl0KDApIGlmICgkcXVpdF9ub3cpOwoKICAgICMgbWFrZSBwcmludGFibGUgc3RyaW5nIG9mIG9wdGlvbnMgZm9yIHRoaXMgcnVuIGFzIHBvc3NpYmxlIGRpYWdub3N0aWMKICAgIG15ICRyZWFkYWJsZV9vcHRpb25zID0gcmVhZGFibGVfb3B0aW9ucyggJHJPcHRzLCAkcm9wdGlvbl9zdHJpbmcgKTsKCiAgICAjIGR1bXAgZnJvbSBjb21tYW5kIGxpbmUKICAgIGlmICggJHJPcHRzLT57J2R1bXAtb3B0aW9ucyd9ICkgewogICAgICAgIHByaW50IFNURE9VVCAkcmVhZGFibGVfb3B0aW9uczsKICAgICAgICBFeGl0KDApOwogICAgfQoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgY2hlY2sgcGFyYW1ldGVycyBhbmQgdGhlaXIgaW50ZXJhY3Rpb25zCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBteSAkdGFic2l6ZSA9CiAgICAgIGNoZWNrX29wdGlvbnMoICRyT3B0cywgJGlzX1dpbmRvd3MsICRXaW5kb3dzX3R5cGUsICRycGVuZGluZ19jb21wbGFpbnQgKTsKCiAgICBpZiAoJHVzZXJfZm9ybWF0dGVyKSB7CiAgICAgICAgJHJPcHRzLT57J2Zvcm1hdCd9ID0gJ3VzZXInOwogICAgfQoKICAgICMgdGhlcmUgbXVzdCBiZSBvbmUgZW50cnkgaGVyZSBmb3IgZXZlcnkgcG9zc2libGUgZm9ybWF0CiAgICBteSAlZGVmYXVsdF9maWxlX2V4dGVuc2lvbiA9ICgKICAgICAgICB0aWR5ID0+ICd0ZHknLAogICAgICAgIGh0bWwgPT4gJ2h0bWwnLAogICAgICAgIHVzZXIgPT4gJycsCiAgICApOwoKICAgICRyT3B0c19jaGFyYWN0ZXJfZW5jb2RpbmcgPSAkck9wdHMtPnsnY2hhcmFjdGVyLWVuY29kaW5nJ307CgogICAgIyBiZSBzdXJlIHdlIGhhdmUgYSB2YWxpZCBvdXRwdXQgZm9ybWF0CiAgICB1bmxlc3MgKCBleGlzdHMgJGRlZmF1bHRfZmlsZV9leHRlbnNpb257ICRyT3B0cy0+eydmb3JtYXQnfSB9ICkgewogICAgICAgIG15ICRmb3JtYXRzID0gam9pbiAnICcsCiAgICAgICAgICBzb3J0IG1hcCB7ICInIiAuICRfIC4gIiciIH0ga2V5cyAlZGVmYXVsdF9maWxlX2V4dGVuc2lvbjsKICAgICAgICBteSAkZm10ID0gJHJPcHRzLT57J2Zvcm1hdCd9OwogICAgICAgIERpZSgiLWZvcm1hdD0nJGZtdCcgYnV0IG11c3QgYmUgb25lIG9mOiAkZm9ybWF0c1xuIik7CiAgICB9CgogICAgbXkgJG91dHB1dF9leHRlbnNpb24gPSBtYWtlX2V4dGVuc2lvbiggJHJPcHRzLT57J291dHB1dC1maWxlLWV4dGVuc2lvbid9LAogICAgICAgICRkZWZhdWx0X2ZpbGVfZXh0ZW5zaW9ueyAkck9wdHMtPnsnZm9ybWF0J30gfSwgJGRvdCApOwoKICAgICMgSWYgdGhlIGJhY2t1cCBleHRlbnNpb24gY29udGFpbnMgYSAvIGNoYXJhY3RlciB0aGVuIHRoZSBiYWNrdXAgc2hvdWxkCiAgICAjIGJlIGRlbGV0ZWQgd2hlbiB0aGUgLWIgb3B0aW9uIGlzIHVzZWQuICAgT24gb2xkZXIgdmVyc2lvbnMgb2YKICAgICMgcGVybHRpZHkgdGhpcyB3aWxsIGdlbmVyYXRlIGFuIGVycm9yIG1lc3NhZ2UgZHVlIHRvIGFuIGlsbGVnYWwKICAgICMgZmlsZSBuYW1lLgogICAgIwogICAgIyBBIGJhY2t1cCBmaWxlIHdpbGwgc3RpbGwgYmUgZ2VuZXJhdGVkIGJ1dCB3aWxsIGJlIGRlbGV0ZWQKICAgICMgYXQgdGhlIGVuZC4gIElmIC1iZXh0PScvJyB0aGVuIHRoaXMgZXh0ZW5zaW9uIHdpbGwgYmUKICAgICMgdGhlIGRlZmF1bHQgJ2JhaycuICBPdGhlcndpc2UgaXQgd2lsbCBiZSB3aGF0ZXZlciBjaGFyYWN0ZXJzCiAgICAjIHJlbWFpbnMgYWZ0ZXIgYWxsICcvJyBjaGFyYWN0ZXJzIGFyZSByZW1vdmVkLiAgRm9yIGV4YW1wbGU6CiAgICAjIC1iZXh0ICAgICAgICAgZXh0ZW5zaW9uICAgICBzbGFzaGVzCiAgICAjICAnLycgICAgICAgICAgYmFrICAgICAgICAgICAxCiAgICAjICAnL2RlbGV0ZScgICAgZGVsZXRlICAgICAgICAxCiAgICAjICAnZGVsZXRlLycgICAgZGVsZXRlICAgICAgICAxCiAgICAjICAnL2Rldi9udWxsJyAgZGV2bnVsbCAgICAgICAyICAgIChDdXJyZW50bHkgbm90IGFsbG93ZWQpCiAgICBteSAkYmV4dCAgICAgICAgICA9ICRyT3B0cy0+eydiYWNrdXAtZmlsZS1leHRlbnNpb24nfTsKICAgIG15ICRkZWxldGVfYmFja3VwID0gKCAkck9wdHMtPnsnYmFja3VwLWZpbGUtZXh0ZW5zaW9uJ30gPX4gcy9cLy8vZyApOwoKICAgICMgQXQgcHJlc2VudCBvbmx5IG9uZSBmb3J3YXJkIHNsYXNoIGlzIGFsbG93ZWQuICBJbiB0aGUgZnV0dXJlIG11bHRpcGxlCiAgICAjIHNsYXNoZXMgbWF5IGJlIGFsbG93ZWQgdG8gYWxsb3cgZm9yIG90aGVyIG9wdGlvbnMKICAgIGlmICggJGRlbGV0ZV9iYWNrdXAgPiAxICkgewogICAgICAgIERpZSgiLWJleHQ9JGJleHQgY29udGFpbnMgbW9yZSB0aGFuIG9uZSAnLydcbiIpOwogICAgfQoKICAgIG15ICRiYWNrdXBfZXh0ZW5zaW9uID0KICAgICAgbWFrZV9leHRlbnNpb24oICRyT3B0cy0+eydiYWNrdXAtZmlsZS1leHRlbnNpb24nfSwgJ2JhaycsICRkb3QgKTsKCiAgICBteSAkaHRtbF90b2NfZXh0ZW5zaW9uID0KICAgICAgbWFrZV9leHRlbnNpb24oICRyT3B0cy0+eydodG1sLXRvYy1leHRlbnNpb24nfSwgJ3RvYycsICRkb3QgKTsKCiAgICBteSAkaHRtbF9zcmNfZXh0ZW5zaW9uID0KICAgICAgbWFrZV9leHRlbnNpb24oICRyT3B0cy0+eydodG1sLXNyYy1leHRlbnNpb24nfSwgJ3NyYycsICRkb3QgKTsKCiAgICAjIGNoZWNrIGZvciAtYiBvcHRpb247CiAgICAjIHNpbGVudGx5IGlnbm9yZSB1bmxlc3MgYmVhdXRpZnkgbW9kZQogICAgbXkgJGluX3BsYWNlX21vZGlmeSA9ICRyT3B0cy0+eydiYWNrdXAtYW5kLW1vZGlmeS1pbi1wbGFjZSd9CiAgICAgICYmICRyT3B0cy0+eydmb3JtYXQnfSBlcSAndGlkeSc7CgogICAgIyBUdXJuIG9mZiAtYiB3aXRoIHdhcm5pbmdzIGluIGNhc2Ugb2YgY29uZmxpY3RzIHdpdGggb3RoZXIgb3B0aW9ucy4KICAgICMgTk9URTogRG8gdGhpcyBzaWxlbnRseSwgd2l0aG91dCB3YXJuaW5ncywgaWYgdGhlcmUgaXMgYSBzb3VyY2Ugb3IKICAgICMgZGVzdGluYXRpb24gc3RyZWFtLCBvciBzdGFuZGFyZCBvdXRwdXQgaXMgdXNlZC4gIFRoaXMgaXMgYmVjYXVzZSB0aGUgLWIKICAgICMgZmxhZyBtYXkgaGF2ZSBiZWVuIGluIGEgLnBlcmx0aWR5cmMgZmlsZSBhbmQgd2FybmluZ3MgYnJlYWsKICAgICMgVGVzdDo6Tm9XYXJuaW5ncy4gIFNlZSBlbWFpbCBkaXNjdXNzaW9uIHdpdGggTWVyaWpuIEJyYW5kIDI2IEZlYiAyMDE0LgogICAgaWYgKCRpbl9wbGFjZV9tb2RpZnkpIHsKICAgICAgICBpZiAoICAgJHJPcHRzLT57J3N0YW5kYXJkLW91dHB1dCd9CiAgICAgICAgICAgIHx8ICRkZXN0aW5hdGlvbl9zdHJlYW0KICAgICAgICAgICAgfHwgcmVmICRzb3VyY2Vfc3RyZWFtCiAgICAgICAgICAgIHx8ICRyT3B0cy0+eydvdXRmaWxlJ30KICAgICAgICAgICAgfHwgZGVmaW5lZCggJHJPcHRzLT57J291dHB1dC1wYXRoJ30gKSApCiAgICAgICAgewogICAgICAgICAgICAkaW5fcGxhY2VfbW9kaWZ5ID0gMDsKICAgICAgICB9CiAgICB9CgogICAgUGVybDo6VGlkeTo6Rm9ybWF0dGVyOjpjaGVja19vcHRpb25zKCRyT3B0cyk7CiAgICBQZXJsOjpUaWR5OjpUb2tlbml6ZXI6OmNoZWNrX29wdGlvbnMoJHJPcHRzKTsKICAgIGlmICggJHJPcHRzLT57J2Zvcm1hdCd9IGVxICdodG1sJyApIHsKICAgICAgICBQZXJsOjpUaWR5OjpIdG1sV3JpdGVyLT5jaGVja19vcHRpb25zKCRyT3B0cyk7CiAgICB9CgogICAgIyBtYWtlIHRoZSBwYXR0ZXJuIG9mIGZpbGUgZXh0ZW5zaW9ucyB0aGF0IHdlIHNob3VsZG4ndCB0b3VjaAogICAgbXkgJGZvcmJpZGRlbl9maWxlX2V4dGVuc2lvbnMgPSAiKCgkZG90X3BhdHRlcm4pKExPR3xERUJVR3xFUlJ8VEVFKSI7CiAgICBpZiAoJG91dHB1dF9leHRlbnNpb24pIHsKICAgICAgICBteSAkZXh0ID0gcXVvdGVtZXRhKCRvdXRwdXRfZXh0ZW5zaW9uKTsKICAgICAgICAkZm9yYmlkZGVuX2ZpbGVfZXh0ZW5zaW9ucyAuPSAifCRleHQiOwogICAgfQogICAgaWYgKCAkaW5fcGxhY2VfbW9kaWZ5ICYmICRiYWNrdXBfZXh0ZW5zaW9uICkgewogICAgICAgIG15ICRleHQgPSBxdW90ZW1ldGEoJGJhY2t1cF9leHRlbnNpb24pOwogICAgICAgICRmb3JiaWRkZW5fZmlsZV9leHRlbnNpb25zIC49ICJ8JGV4dCI7CiAgICB9CiAgICAkZm9yYmlkZGVuX2ZpbGVfZXh0ZW5zaW9ucyAuPSAnKSQnOwoKICAgICMgQ3JlYXRlIGEgZGlhZ25vc3RpY3Mgb2JqZWN0IGlmIHJlcXVlc3RlZDsKICAgICMgVGhpcyBpcyBvbmx5IHVzZWZ1bCBmb3IgY29kZSBkZXZlbG9wbWVudAogICAgbXkgJGRpYWdub3N0aWNzX29iamVjdCA9IHVuZGVmOwogICAgaWYgKCAkck9wdHMtPnsnRElBR05PU1RJQ1MnfSApIHsKICAgICAgICAkZGlhZ25vc3RpY3Nfb2JqZWN0ID0gUGVybDo6VGlkeTo6RGlhZ25vc3RpY3MtPm5ldygpOwogICAgfQoKICAgICMgbm8gZmlsZW5hbWVzIHNob3VsZCBiZSBnaXZlbiBpZiBpbnB1dCBpcyBmcm9tIGFuIGFycmF5CiAgICBpZiAoJHNvdXJjZV9zdHJlYW0pIHsKICAgICAgICBpZiAoIEBBUkdWID4gMCApIHsKICAgICAgICAgICAgRGllKAoiWW91IG1heSBub3Qgc3BlY2lmeSBhbnkgZmlsZW5hbWVzIHdoZW4gYSBzb3VyY2UgYXJyYXkgaXMgZ2l2ZW5cbiIKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgd2UnbGwgc3R1ZmYgdGhlIHNvdXJjZSBhcnJheSBpbnRvIEFSR1YKICAgICAgICB1bnNoaWZ0KCBAQVJHViwgJHNvdXJjZV9zdHJlYW0gKTsKCiAgICAgICAgIyBObyBzcGVjaWFsIHRyZWF0bWVudCBmb3Igc291cmNlIHN0cmVhbSB3aGljaCBpcyBhIGZpbGVuYW1lLgogICAgICAgICMgVGhpcyB3aWxsIGVuYWJsZSBjaGVja3MgZm9yIGJpbmFyeSBmaWxlcyBhbmQgb3RoZXIgYmFkIHN0dWZmLgogICAgICAgICRzb3VyY2Vfc3RyZWFtID0gdW5kZWYgdW5sZXNzIHJlZigkc291cmNlX3N0cmVhbSk7CiAgICB9CgogICAgIyB1c2Ugc3RkaW4gYnkgZGVmYXVsdCBpZiBubyBzb3VyY2UgYXJyYXkgYW5kIG5vIGFyZ3MKICAgIGVsc2UgewogICAgICAgIHVuc2hpZnQoIEBBUkdWLCAnLScgKSB1bmxlc3MgQEFSR1Y7CiAgICB9CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyBSZWFkeSB0byBnby4uLgogICAgIyBtYWluIGxvb3AgdG8gcHJvY2VzcyBhbGwgZmlsZXMgaW4gYXJndW1lbnQgbGlzdAogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgbXkgJG51bWJlcl9vZl9maWxlcyA9IEBBUkdWOwogICAgbXkgJGZvcm1hdHRlciAgICAgICA9IHVuZGVmOwogICAgbXkgJHRva2VuaXplciAgICAgICA9IHVuZGVmOwoKICAgICMgSWYgcmVxdWVzdGVkLCBwcm9jZXNzIGluIG9yZGVyIG9mIGluY3JlYXNpbmcgZmlsZSBzaXplCiAgICAjIFRoaXMgY2FuIHNpZ25pZmljYW50bHkgcmVkdWNlIHBlcmwncyB2aXJ0dWFsIG1lbW9yeSB1c2FnZSBkdXJpbmcgdGVzdGluZy4KICAgIGlmICggJG51bWJlcl9vZl9maWxlcyA+IDEgJiYgJHJPcHRzLT57J2ZpbGUtc2l6ZS1vcmRlcid9ICkgewogICAgICAgIEBBUkdWID0KICAgICAgICAgIG1hcCAgeyAkXy0+WzBdIH0KICAgICAgICAgIHNvcnQgeyAkYS0+WzFdIDw9PiAkYi0+WzFdIH0KICAgICAgICAgIG1hcCAgeyBbICRfLCAtZSAkXyA/IC1zICRfIDogMCBdIH0gQEFSR1Y7CiAgICB9CgogICAgd2hpbGUgKCBteSAkaW5wdXRfZmlsZSA9IHNoaWZ0IEBBUkdWICkgewogICAgICAgIG15ICRmaWxlcm9vdDsKICAgICAgICBteSBAaW5wdXRfZmlsZV9zdGF0OwogICAgICAgIG15ICRkaXNwbGF5X25hbWU7CgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIHByZXBhcmUgdGhpcyBpbnB1dCBzdHJlYW0KICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgaWYgKCRzb3VyY2Vfc3RyZWFtKSB7CiAgICAgICAgICAgICRmaWxlcm9vdCAgICAgPSAicGVybHRpZHkiOwogICAgICAgICAgICAkZGlzcGxheV9uYW1lID0gIjxzb3VyY2Vfc3RyZWFtPiI7CgogICAgICAgICAgICAjIElmIHRoZSBzb3VyY2UgaXMgZnJvbSBhbiBhcnJheSBvciBzdHJpbmcsIHRoZW4gLkxPRyBvdXRwdXQKICAgICAgICAgICAgIyBpcyBvbmx5IHBvc3NpYmxlIGlmIGEgbG9nZmlsZSBzdHJlYW0gaXMgc3BlY2lmaWVkLiAgVGhpcyBwcmV2ZW50cwogICAgICAgICAgICAjIHVuZXhwZWN0ZWQgcGVybHRpZHkuTE9HIGZpbGVzLgogICAgICAgICAgICBpZiAoICFkZWZpbmVkKCRsb2dmaWxlX3N0cmVhbSkgKSB7CiAgICAgICAgICAgICAgICAkbG9nZmlsZV9zdHJlYW0gPSBQZXJsOjpUaWR5OjpEZXZOdWxsLT5uZXcoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRpbnB1dF9maWxlIGVxICctJyApIHsgICAgIyAnLScgaW5kaWNhdGVzIGlucHV0IGZyb20gU1RESU4KICAgICAgICAgICAgJGZpbGVyb290ICAgICA9ICJwZXJsdGlkeSI7ICAgIyByb290IG5hbWUgdG8gdXNlIGZvciAuRVJSLCAuTE9HLCBldGMKICAgICAgICAgICAgJGRpc3BsYXlfbmFtZSA9ICI8c3RkaW4+IjsKICAgICAgICAgICAgJGluX3BsYWNlX21vZGlmeSA9IDA7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkZmlsZXJvb3QgICAgID0gJGlucHV0X2ZpbGU7CiAgICAgICAgICAgICRkaXNwbGF5X25hbWUgPSAkaW5wdXRfZmlsZTsKICAgICAgICAgICAgdW5sZXNzICggLWUgJGlucHV0X2ZpbGUgKSB7CgogICAgICAgICAgICAgICAgIyBmaWxlIGRvZXNuJ3QgZXhpc3QgLSBjaGVjayBmb3IgYSBmaWxlIGdsb2IKICAgICAgICAgICAgICAgIGlmICggJGlucHV0X2ZpbGUgPX4gLyhbXD9cKlxbXHtdKS8gKSB7CgogICAgICAgICAgICAgICAgICAgICMgV2luZG93cyBzaGVsbCBtYXkgbm90IHJlbW92ZSBxdW90ZXMsIHNvIGRvIGl0CiAgICAgICAgICAgICAgICAgICAgbXkgJGlucHV0X2ZpbGUgPSAkaW5wdXRfZmlsZTsKICAgICAgICAgICAgICAgICAgICBpZiAoICRpbnB1dF9maWxlID1+IC9eXCcoLispXCckLyApIHsgJGlucHV0X2ZpbGUgPSAkMSB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkaW5wdXRfZmlsZSA9fiAvXlwiKC4rKVwiJC8gKSB7ICRpbnB1dF9maWxlID0gJDEgfQogICAgICAgICAgICAgICAgICAgIG15ICRwYXR0ZXJuID0gZmlsZWdsb2JfdG9fcmUoJGlucHV0X2ZpbGUpOwogICAgICAgICAgICAgICAgICAgICMjZXZhbCAiLyRwYXR0ZXJuLyI7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJEAgJiYgb3BlbmRpciggRElSLCAnLi8nICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15IEBmaWxlcyA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlcCB7IC8kcGF0dGVybi8gJiYgIS1kICRfIH0gcmVhZGRpcihESVIpOwogICAgICAgICAgICAgICAgICAgICAgICBjbG9zZWRpcihESVIpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoQGZpbGVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0IEBBUkdWLCBAZmlsZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgV2Fybigic2tpcHBpbmcgZmlsZTogJyRpbnB1dF9maWxlJzogbm8gbWF0Y2hlcyBmb3VuZFxuIik7CiAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICB9CgogICAgICAgICAgICB1bmxlc3MgKCAtZiAkaW5wdXRfZmlsZSApIHsKICAgICAgICAgICAgICAgIFdhcm4oInNraXBwaW5nIGZpbGU6ICRpbnB1dF9maWxlOiBub3QgYSByZWd1bGFyIGZpbGVcbiIpOwogICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBBcyBhIHNhZmV0eSBwcmVjYXV0aW9uLCBza2lwIHplcm8gbGVuZ3RoIGZpbGVzLgogICAgICAgICAgICAjIElmIGZvciBleGFtcGxlIGEgc291cmNlIGZpbGUgZ290IGNsb2JiZXJlZCBzb21laG93LAogICAgICAgICAgICAjIHRoZSBvbGQgLnRkeSBvciAuYmFrIGZpbGVzIG1pZ2h0IHN0aWxsIGV4aXN0IHNvIHdlCiAgICAgICAgICAgICMgc2hvdWxkbid0IG92ZXJ3cml0ZSB0aGVtIHdpdGggemVybyBsZW5ndGggZmlsZXMuCiAgICAgICAgICAgIHVubGVzcyAoIC1zICRpbnB1dF9maWxlICkgewogICAgICAgICAgICAgICAgV2Fybigic2tpcHBpbmcgZmlsZTogJGlucHV0X2ZpbGU6IFplcm8gc2l6ZVxuIik7CiAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICB9CgogICAgICAgICAgICB1bmxlc3MgKCAoIC1UICRpbnB1dF9maWxlICkgfHwgJHJPcHRzLT57J2ZvcmNlLXJlYWQtYmluYXJ5J30gKSB7CiAgICAgICAgICAgICAgICBXYXJuKAogICAgICAgICAgICAgICAgICAgICJza2lwcGluZyBmaWxlOiAkaW5wdXRfZmlsZTogTm9uLXRleHQgKG92ZXJyaWRlIHdpdGggLWYpXG4iCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB3ZSBzaG91bGQgaGF2ZSBhIHZhbGlkIGZpbGVuYW1lIG5vdwogICAgICAgICAgICAkZmlsZXJvb3QgICAgICAgID0gJGlucHV0X2ZpbGU7CiAgICAgICAgICAgIEBpbnB1dF9maWxlX3N0YXQgPSBzdGF0KCRpbnB1dF9maWxlKTsKCiAgICAgICAgICAgIGlmICggJF5PIGVxICdWTVMnICkgewogICAgICAgICAgICAgICAgKCAkZmlsZXJvb3QsICRkb3QgKSA9IGNoZWNrX3Ztc19maWxlbmFtZSgkZmlsZXJvb3QpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFkZCBvcHRpb24gdG8gY2hhbmdlIHBhdGggaGVyZQogICAgICAgICAgICBpZiAoIGRlZmluZWQoICRyT3B0cy0+eydvdXRwdXQtcGF0aCd9ICkgKSB7CgogICAgICAgICAgICAgICAgbXkgKCAkYmFzZSwgJG9sZF9wYXRoICkgPSBmaWxlcGFyc2UoJGZpbGVyb290KTsKICAgICAgICAgICAgICAgIG15ICRuZXdfcGF0aCA9ICRyT3B0cy0+eydvdXRwdXQtcGF0aCd9OwogICAgICAgICAgICAgICAgdW5sZXNzICggLWQgJG5ld19wYXRoICkgewogICAgICAgICAgICAgICAgICAgIHVubGVzcyAoIG1rZGlyICRuZXdfcGF0aCwgMDc3NyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgRGllKCJ1bmFibGUgdG8gY3JlYXRlIGRpcmVjdG9yeSAkbmV3X3BhdGg6ICQhXG4iKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBteSAkcGF0aCA9ICRuZXdfcGF0aDsKICAgICAgICAgICAgICAgICRmaWxlcm9vdCA9IGNhdGZpbGUoICRwYXRoLCAkYmFzZSApOwogICAgICAgICAgICAgICAgdW5sZXNzICgkZmlsZXJvb3QpIHsKICAgICAgICAgICAgICAgICAgICBEaWUoPDxFT00pOwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUHJvYmxlbSBjb21iaW5pbmcgJG5ld19wYXRoIGFuZCAkYmFzZSB0byBtYWtlIGEgZmlsZW5hbWU7IGNoZWNrIC1vcGF0aAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRU9NCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgU2tpcCBmaWxlcyB3aXRoIHNhbWUgZXh0ZW5zaW9uIGFzIHRoZSBvdXRwdXQgZmlsZXMgYmVjYXVzZQogICAgICAgICMgdGhpcyBjYW4gbGVhZCB0byBhIG1lc3N5IHNpdHVhdGlvbiB3aXRoIGZpbGVzIGxpa2UKICAgICAgICAjIHNjcmlwdC50ZHkudGR5LnRkeSAuLi4gb3Igd29yc2UgcHJvYmxlbXMgLi4uICB3aGVuIHlvdQogICAgICAgICMgcmVydW4gcGVybHRpZHkgb3ZlciBhbmQgb3ZlciB3aXRoIHdpbGRjYXJkIGlucHV0LgogICAgICAgIGlmICgKICAgICAgICAgICAgISRzb3VyY2Vfc3RyZWFtCiAgICAgICAgICAgICYmICggICAkaW5wdXRfZmlsZSA9fiAvJGZvcmJpZGRlbl9maWxlX2V4dGVuc2lvbnMvbwogICAgICAgICAgICAgICAgfHwgJGlucHV0X2ZpbGUgZXEgJ0RJQUdOT1NUSUNTJyApCiAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBXYXJuKCJza2lwcGluZyBmaWxlOiAkaW5wdXRfZmlsZTogd3JvbmcgZXh0ZW5zaW9uXG4iKTsKICAgICAgICAgICAgbmV4dDsKICAgICAgICB9CgogICAgICAgICMgdGhlICdzb3VyY2Vfb2JqZWN0JyBzdXBwbGllcyBhIG1ldGhvZCB0byByZWFkIHRoZSBpbnB1dCBmaWxlCiAgICAgICAgbXkgJHNvdXJjZV9vYmplY3QgPQogICAgICAgICAgUGVybDo6VGlkeTo6TGluZVNvdXJjZS0+bmV3KCAkaW5wdXRfZmlsZSwgJHJPcHRzLAogICAgICAgICAgICAkcnBlbmRpbmdfbG9nZmlsZV9tZXNzYWdlICk7CiAgICAgICAgbmV4dCB1bmxlc3MgKCRzb3VyY2Vfb2JqZWN0KTsKCiAgICAgICAgbXkgJG1heF9pdGVyYXRpb25zICAgICAgPSAkck9wdHMtPnsnaXRlcmF0aW9ucyd9OwogICAgICAgIG15ICRkb19jb252ZXJnZW5jZV90ZXN0ID0gJG1heF9pdGVyYXRpb25zID4gMTsKICAgICAgICBteSAkY29udmVyZ2VuY2VfbG9nX21lc3NhZ2U7CiAgICAgICAgbXkgJXNhd19tZDU7CiAgICAgICAgbXkgJGRpZ2VzdF9pbnB1dCA9IDA7CgogICAgICAgICMgUHJlZmlsdGVycyBhbmQgcG9zdGZpbHRlcnM6IFRoZSBwcmVmaWx0ZXIgaXMgYSBjb2RlIHJlZmVyZW5jZQogICAgICAgICMgdGhhdCB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlIHNvdXJjZSBiZWZvcmUgdGlkeWluZywgYW5kIHRoZQogICAgICAgICMgcG9zdGZpbHRlciBpcyBhIGNvZGUgcmVmZXJlbmNlIHRvIHRoZSByZXN1bHQgYmVmb3JlIG91dHB1dHRpbmcuCiAgICAgICAgaWYgKAogICAgICAgICAgICAkcHJlZmlsdGVyCiAgICAgICAgICAgIHx8ICggICAkck9wdHNfY2hhcmFjdGVyX2VuY29kaW5nCiAgICAgICAgICAgICAgICAmJiAkck9wdHNfY2hhcmFjdGVyX2VuY29kaW5nIGVxICd1dGY4JyApCiAgICAgICAgICAgIHx8ICRyT3B0cy0+eydhc3NlcnQtdGlkeSd9CiAgICAgICAgICAgIHx8ICRyT3B0cy0+eydhc3NlcnQtdW50aWR5J30KICAgICAgICAgICAgfHwgJGRvX2NvbnZlcmdlbmNlX3Rlc3QKICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRidWYgPSAnJzsKICAgICAgICAgICAgd2hpbGUgKCBteSAkbGluZSA9ICRzb3VyY2Vfb2JqZWN0LT5nZXRfbGluZSgpICkgewogICAgICAgICAgICAgICAgJGJ1ZiAuPSAkbGluZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAgICRyT3B0c19jaGFyYWN0ZXJfZW5jb2RpbmcKICAgICAgICAgICAgICAgICYmICRyT3B0c19jaGFyYWN0ZXJfZW5jb2RpbmcgZXEgJ3V0ZjgnCiAgICAgICAgICAgICAgICAmJiAhdXRmODo6aXNfdXRmOCgkYnVmKSApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGV2YWwgewogICAgICAgICAgICAgICAgICAgICRidWYgPSBFbmNvZGU6OmRlY29kZSggJ1VURi04JywgJGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgRW5jb2RlOjpGQl9DUk9BSyB8IEVuY29kZTo6TEVBVkVfU1JDICk7CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgaWYgKCRAKSB7CiAgICAgICAgICAgICAgICAgICAgV2FybigKInNraXBwaW5nIGZpbGU6ICRpbnB1dF9maWxlOiBVbmFibGUgdG8gZGVjb2RlIHNvdXJjZSBhcyBVVEYtOFxuIgogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBNRDUgc3VtIG9mIGlucHV0IGZpbGUgaXMgZXZhbHVhdGVkIGJlZm9yZSBhbnkgcHJlZmlsdGVyCiAgICAgICAgICAgIGlmICggJHJPcHRzLT57J2Fzc2VydC10aWR5J30gfHwgJHJPcHRzLT57J2Fzc2VydC11bnRpZHknfSApIHsKICAgICAgICAgICAgICAgICRkaWdlc3RfaW5wdXQgPSAkbWQ1X2hleC0+KCRidWYpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkYnVmID0gJHByZWZpbHRlci0+KCRidWYpIGlmICRwcmVmaWx0ZXI7CgogICAgICAgICMgc3RhcnRpbmcgTUQ1IHN1bSBmb3IgY29udmVyZ2VuY2UgdGVzdCBpcyBldmFsdWF0ZWQgYWZ0ZXIgYW55IHByZWZpbHRlcgogICAgICAgICAgICBpZiAoJGRvX2NvbnZlcmdlbmNlX3Rlc3QpIHsKICAgICAgICAgICAgICAgIG15ICRkaWdlc3QgPSAkbWQ1X2hleC0+KCRidWYpOwogICAgICAgICAgICAgICAgJHNhd19tZDV7JGRpZ2VzdH0gPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkc291cmNlX29iamVjdCA9IFBlcmw6OlRpZHk6OkxpbmVTb3VyY2UtPm5ldyggXCRidWYsICRyT3B0cywKICAgICAgICAgICAgICAgICRycGVuZGluZ19sb2dmaWxlX21lc3NhZ2UgKTsKICAgICAgICB9CgogICAgICAgICMgcmVnaXN0ZXIgdGhpcyBmaWxlIG5hbWUgd2l0aCB0aGUgRGlhZ25vc3RpY3MgcGFja2FnZQogICAgICAgICRkaWFnbm9zdGljc19vYmplY3QtPnNldF9pbnB1dF9maWxlKCRpbnB1dF9maWxlKQogICAgICAgICAgaWYgJGRpYWdub3N0aWNzX29iamVjdDsKCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgcHJlcGFyZSB0aGUgb3V0cHV0IHN0cmVhbQogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBteSAkb3V0cHV0X2ZpbGUgPSB1bmRlZjsKICAgICAgICBteSAkYWN0dWFsX291dHB1dF9leHRlbnNpb247CgogICAgICAgIGlmICggJHJPcHRzLT57J291dGZpbGUnfSApIHsKCiAgICAgICAgICAgIGlmICggJG51bWJlcl9vZl9maWxlcyA8PSAxICkgewoKICAgICAgICAgICAgICAgIGlmICggJHJPcHRzLT57J3N0YW5kYXJkLW91dHB1dCd9ICkgewogICAgICAgICAgICAgICAgICAgIG15ICRtc2cgPSAiWW91IG1heSBub3QgdXNlIC1vIGFuZCAtc3QgdG9nZXRoZXIiOwogICAgICAgICAgICAgICAgICAgICRtc2cgLj0gIiAoLXBicCBjb250YWlucyAtc3Q7IHNlZSBtYW51YWwpIiBpZiAoJHNhd19wYnApOwogICAgICAgICAgICAgICAgICAgIERpZSgiJG1zZ1xuIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoJGRlc3RpbmF0aW9uX3N0cmVhbSkgewogICAgICAgICAgICAgICAgICAgIERpZSgKIllvdSBtYXkgbm90IHNwZWNpZnkgYSBkZXN0aW5hdGlvbiBhcnJheSBhbmQgLW8gdG9nZXRoZXJcbiIKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCBkZWZpbmVkKCAkck9wdHMtPnsnb3V0cHV0LXBhdGgnfSApICkgewogICAgICAgICAgICAgICAgICAgIERpZSgiWW91IG1heSBub3Qgc3BlY2lmeSAtbyBhbmQgLW9wYXRoIHRvZ2V0aGVyXG4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggZGVmaW5lZCggJHJPcHRzLT57J291dHB1dC1maWxlLWV4dGVuc2lvbid9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgRGllKCJZb3UgbWF5IG5vdCBzcGVjaWZ5IC1vIGFuZCAtb2V4dCB0b2dldGhlclxuIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkb3V0cHV0X2ZpbGUgPSAkck9wdHMtPntvdXRmaWxlfTsKCiAgICAgICAgICAgICAgICAjIG1ha2Ugc3VyZSB1c2VyIGdpdmVzIGEgZmlsZSBuYW1lIGFmdGVyIC1vCiAgICAgICAgICAgICAgICBpZiAoICRvdXRwdXRfZmlsZSA9fiAvXi0vICkgewogICAgICAgICAgICAgICAgICAgIERpZSgiWW91IG11c3Qgc3BlY2lmeSBhIHZhbGlkIGZpbGVuYW1lIGFmdGVyIC1vXG4iKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGRvIG5vdCBvdmVyd3JpdGUgaW5wdXQgZmlsZSB3aXRoIC1vCiAgICAgICAgICAgICAgICBpZiAoIEBpbnB1dF9maWxlX3N0YXQgJiYgKCAkb3V0cHV0X2ZpbGUgZXEgJGlucHV0X2ZpbGUgKSApIHsKICAgICAgICAgICAgICAgICAgICBEaWUoIlVzZSAncGVybHRpZHkgLWIgJGlucHV0X2ZpbGUnIHRvIG1vZGlmeSBpbi1wbGFjZVxuIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBEaWUoIllvdSBtYXkgbm90IHVzZSAtbyB3aXRoIG1vcmUgdGhhbiBvbmUgaW5wdXQgZmlsZVxuIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkck9wdHMtPnsnc3RhbmRhcmQtb3V0cHV0J30gKSB7CiAgICAgICAgICAgIGlmICgkZGVzdGluYXRpb25fc3RyZWFtKSB7CiAgICAgICAgICAgICAgICBteSAkbXNnID0KICAgICAgICAgICAgICAgICAgIllvdSBtYXkgbm90IHNwZWNpZnkgYSBkZXN0aW5hdGlvbiBhcnJheSBhbmQgLXN0IHRvZ2V0aGVyXG4iOwogICAgICAgICAgICAgICAgJG1zZyAuPSAiICgtcGJwIGNvbnRhaW5zIC1zdDsgc2VlIG1hbnVhbCkiIGlmICgkc2F3X3BicCk7CiAgICAgICAgICAgICAgICBEaWUoIiRtc2dcbiIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRvdXRwdXRfZmlsZSA9ICctJzsKCiAgICAgICAgICAgIGlmICggJG51bWJlcl9vZl9maWxlcyA8PSAxICkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgRGllKCJZb3UgbWF5IG5vdCB1c2UgLXN0IHdpdGggbW9yZSB0aGFuIG9uZSBpbnB1dCBmaWxlXG4iKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoJGRlc3RpbmF0aW9uX3N0cmVhbSkgewogICAgICAgICAgICAkb3V0cHV0X2ZpbGUgPSAkZGVzdGluYXRpb25fc3RyZWFtOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoJHNvdXJjZV9zdHJlYW0pIHsgICAgIyBzb3VyY2UgYnV0IG5vIGRlc3RpbmF0aW9uIGdvZXMgdG8gc3Rkb3V0CiAgICAgICAgICAgICRvdXRwdXRfZmlsZSA9ICctJzsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkaW5wdXRfZmlsZSBlcSAnLScgKSB7CiAgICAgICAgICAgICRvdXRwdXRfZmlsZSA9ICctJzsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGlmICgkaW5fcGxhY2VfbW9kaWZ5KSB7CiAgICAgICAgICAgICAgICAkb3V0cHV0X2ZpbGUgPSBJTzo6RmlsZS0+bmV3X3RtcGZpbGUoKQogICAgICAgICAgICAgICAgICBvciBEaWUoImNhbm5vdCBvcGVuIHRlbXAgZmlsZSBmb3IgLWIgb3B0aW9uOiAkIVxuIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkYWN0dWFsX291dHB1dF9leHRlbnNpb24gPSAkb3V0cHV0X2V4dGVuc2lvbjsKICAgICAgICAgICAgICAgICRvdXRwdXRfZmlsZSAgICAgICAgICAgICA9ICRmaWxlcm9vdCAuICRvdXRwdXRfZXh0ZW5zaW9uOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHRoZSAnc2lua19vYmplY3QnIGtub3dzIGhvdyB0byB3cml0ZSB0aGUgb3V0cHV0IGZpbGUKICAgICAgICBteSAkdGVlX2ZpbGUgPSAkZmlsZXJvb3QgLiAkZG90IC4gIlRFRSI7CgogICAgICAgIG15ICRsaW5lX3NlcGFyYXRvciA9ICRyT3B0cy0+eydvdXRwdXQtbGluZS1lbmRpbmcnfTsKICAgICAgICBpZiAoICRyT3B0cy0+eydwcmVzZXJ2ZS1saW5lLWVuZGluZ3MnfSApIHsKICAgICAgICAgICAgJGxpbmVfc2VwYXJhdG9yID0gZmluZF9pbnB1dF9saW5lX2VuZGluZygkaW5wdXRfZmlsZSk7CiAgICAgICAgfQoKICAgICAgICAjIEV2ZW50dWFsbHkgYWxsIEkvTyBtYXkgYmUgZG9uZSB3aXRoIGJpbm1vZGUsIGJ1dCBmb3Igbm93IGl0IGlzCiAgICAgICAgIyBvbmx5IGRvbmUgd2hlbiBhIHVzZXIgcmVxdWVzdHMgYSBwYXJ0aWN1bGFyIGxpbmUgc2VwYXJhdG9yCiAgICAgICAgIyB0aHJvdWdoIHRoZSAtcGxlIG9yIC1vbGUgZmxhZ3MKICAgICAgICBteSAkYmlubW9kZSA9IGRlZmluZWQoJGxpbmVfc2VwYXJhdG9yKQogICAgICAgICAgfHwgZGVmaW5lZCgkck9wdHNfY2hhcmFjdGVyX2VuY29kaW5nKTsKICAgICAgICAkbGluZV9zZXBhcmF0b3IgPSAiXG4iIHVubGVzcyBkZWZpbmVkKCRsaW5lX3NlcGFyYXRvcik7CgogICAgICAgIG15ICggJHNpbmtfb2JqZWN0LCAkcG9zdGZpbHRlcl9idWZmZXIgKTsKICAgICAgICBpZiAoICAgJHBvc3RmaWx0ZXIKICAgICAgICAgICAgfHwgJHJPcHRzLT57J2Fzc2VydC10aWR5J30KICAgICAgICAgICAgfHwgJHJPcHRzLT57J2Fzc2VydC11bnRpZHknfSApCiAgICAgICAgewogICAgICAgICAgICAkc2lua19vYmplY3QgPQogICAgICAgICAgICAgIFBlcmw6OlRpZHk6OkxpbmVTaW5rLT5uZXcoIFwkcG9zdGZpbHRlcl9idWZmZXIsICR0ZWVfZmlsZSwKICAgICAgICAgICAgICAgICRsaW5lX3NlcGFyYXRvciwgJHJPcHRzLCAkcnBlbmRpbmdfbG9nZmlsZV9tZXNzYWdlLCAkYmlubW9kZSApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJHNpbmtfb2JqZWN0ID0KICAgICAgICAgICAgICBQZXJsOjpUaWR5OjpMaW5lU2luay0+bmV3KCAkb3V0cHV0X2ZpbGUsICR0ZWVfZmlsZSwKICAgICAgICAgICAgICAgICRsaW5lX3NlcGFyYXRvciwgJHJPcHRzLCAkcnBlbmRpbmdfbG9nZmlsZV9tZXNzYWdlLCAkYmlubW9kZSApOwogICAgICAgIH0KCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgaW5pdGlhbGl6ZSB0aGUgZXJyb3IgbG9nZ2VyIGZvciB0aGlzIGZpbGUKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgbXkgJHdhcm5pbmdfZmlsZSA9ICRmaWxlcm9vdCAuICRkb3QgLiAiRVJSIjsKICAgICAgICBpZiAoJGVycm9yZmlsZV9zdHJlYW0pIHsgJHdhcm5pbmdfZmlsZSA9ICRlcnJvcmZpbGVfc3RyZWFtIH0KICAgICAgICBteSAkbG9nX2ZpbGUgPSAkZmlsZXJvb3QgLiAkZG90IC4gIkxPRyI7CiAgICAgICAgaWYgKCRsb2dmaWxlX3N0cmVhbSkgeyAkbG9nX2ZpbGUgPSAkbG9nZmlsZV9zdHJlYW0gfQoKICAgICAgICBteSAkbG9nZ2VyX29iamVjdCA9CiAgICAgICAgICBQZXJsOjpUaWR5OjpMb2dnZXItPm5ldyggJHJPcHRzLCAkbG9nX2ZpbGUsICR3YXJuaW5nX2ZpbGUsCiAgICAgICAgICAgICRmaF9zdGRlcnIsICRzYXdfZXh0cnVkZSwgJGRpc3BsYXlfbmFtZSApOwogICAgICAgIHdyaXRlX2xvZ2ZpbGVfaGVhZGVyKAogICAgICAgICAgICAkck9wdHMsICAgICAgICAkbG9nZ2VyX29iamVjdCwgJGNvbmZpZ19maWxlLAogICAgICAgICAgICAkcnJhd19vcHRpb25zLCAkV2luZG93c190eXBlLCAgJHJlYWRhYmxlX29wdGlvbnMsCiAgICAgICAgKTsKICAgICAgICBpZiAoICR7JHJwZW5kaW5nX2xvZ2ZpbGVfbWVzc2FnZX0gKSB7CiAgICAgICAgICAgICRsb2dnZXJfb2JqZWN0LT53cml0ZV9sb2dmaWxlX2VudHJ5KCAkeyRycGVuZGluZ19sb2dmaWxlX21lc3NhZ2V9ICk7CiAgICAgICAgfQogICAgICAgIGlmICggJHskcnBlbmRpbmdfY29tcGxhaW50fSApIHsKICAgICAgICAgICAgJGxvZ2dlcl9vYmplY3QtPmNvbXBsYWluKCAkeyRycGVuZGluZ19jb21wbGFpbnR9ICk7CiAgICAgICAgfQoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBpbml0aWFsaXplIHRoZSBkZWJ1ZyBvYmplY3QsIGlmIGFueQogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBteSAkZGVidWdnZXJfb2JqZWN0ID0gdW5kZWY7CiAgICAgICAgaWYgKCAkck9wdHMtPntERUJVR30gKSB7CiAgICAgICAgICAgICRkZWJ1Z2dlcl9vYmplY3QgPQogICAgICAgICAgICAgIFBlcmw6OlRpZHk6OkRlYnVnZ2VyLT5uZXcoICRmaWxlcm9vdCAuICRkb3QgLiAiREVCVUciICk7CiAgICAgICAgfQoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBsb29wIG92ZXIgaXRlcmF0aW9ucyBmb3Igb25lIHNvdXJjZSBzdHJlYW0KICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICAgICMgc2F2ZSBvYmplY3RzIHRvIGFsbG93IHJlZGlyZWN0aW5nIG91dHB1dCBkdXJpbmcgaXRlcmF0aW9ucwogICAgICAgIG15ICRzaW5rX29iamVjdF9maW5hbCAgICAgPSAkc2lua19vYmplY3Q7CiAgICAgICAgbXkgJGRlYnVnZ2VyX29iamVjdF9maW5hbCA9ICRkZWJ1Z2dlcl9vYmplY3Q7CiAgICAgICAgbXkgJGxvZ2dlcl9vYmplY3RfZmluYWwgICA9ICRsb2dnZXJfb2JqZWN0OwoKICAgICAgICBmb3JlYWNoIG15ICRpdGVyICggMSAuLiAkbWF4X2l0ZXJhdGlvbnMgKSB7CgogICAgICAgICAgICAjIHNlbmQgb3V0cHV0IHN0cmVhbSB0byB0ZW1wIGJ1ZmZlcnMgdW50aWwgbGFzdCBpdGVyYXRpb24KICAgICAgICAgICAgbXkgJHNpbmtfYnVmZmVyOwogICAgICAgICAgICBpZiAoICRpdGVyIDwgJG1heF9pdGVyYXRpb25zICkgewogICAgICAgICAgICAgICAgJHNpbmtfb2JqZWN0ID0KICAgICAgICAgICAgICAgICAgUGVybDo6VGlkeTo6TGluZVNpbmstPm5ldyggXCRzaW5rX2J1ZmZlciwgJHRlZV9maWxlLAogICAgICAgICAgICAgICAgICAgICRsaW5lX3NlcGFyYXRvciwgJHJPcHRzLCAkcnBlbmRpbmdfbG9nZmlsZV9tZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICRiaW5tb2RlICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkc2lua19vYmplY3QgPSAkc2lua19vYmplY3RfZmluYWw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgU2F2ZSBsb2dnZXIsIGRlYnVnZ2VyIG91dHB1dCBvbmx5IG9uIHBhc3MgMSBiZWNhdXNlOgogICAgICAgICAgICAjICgxKSBsaW5lIG51bWJlciByZWZlcmVuY2VzIG11c3QgYmUgdG8gdGhlIHN0YXJ0aW5nCiAgICAgICAgICAgICMgc291cmNlLCBub3QgYW4gaW50ZXJtZWRpYXRlIHJlc3VsdCwgYW5kCiAgICAgICAgICAgICMgKDIpIHdlIG5lZWQgdG8ga25vdyBpZiB0aGVyZSBhcmUgZXJyb3JzIHNvIHdlIGNhbiBzdG9wIHRoZQogICAgICAgICAgICAjIGl0ZXJhdGlvbnMgZWFybHkgaWYgbmVjZXNzYXJ5LgogICAgICAgICAgICBpZiAoICRpdGVyID4gMSApIHsKICAgICAgICAgICAgICAgICRkZWJ1Z2dlcl9vYmplY3QgPSB1bmRlZjsKICAgICAgICAgICAgICAgICRsb2dnZXJfb2JqZWN0ICAgPSB1bmRlZjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAjIGNyZWF0ZSBhIGZvcm1hdHRlciBmb3IgdGhpcyBmaWxlIDogaHRtbCB3cml0ZXIgb3IKICAgICAgICAgICAgIyBwcmV0dHkgcHJpbnRlcgogICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICAgICAgICAjIHdlIGhhdmUgdG8gZGVsZXRlIGFueSBvbGQgZm9ybWF0dGVyIGJlY2F1c2UsIGZvciBzYWZldHksCiAgICAgICAgICAgICMgdGhlIGZvcm1hdHRlciB3aWxsIGNoZWNrIHRvIHNlZSB0aGF0IHRoZXJlIGlzIG9ubHkgb25lLgogICAgICAgICAgICAkZm9ybWF0dGVyID0gdW5kZWY7CgogICAgICAgICAgICBpZiAoJHVzZXJfZm9ybWF0dGVyKSB7CiAgICAgICAgICAgICAgICAkZm9ybWF0dGVyID0gJHVzZXJfZm9ybWF0dGVyOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJHJPcHRzLT57J2Zvcm1hdCd9IGVxICdodG1sJyApIHsKICAgICAgICAgICAgICAgICRmb3JtYXR0ZXIgPQogICAgICAgICAgICAgICAgICBQZXJsOjpUaWR5OjpIdG1sV3JpdGVyLT5uZXcoICRmaWxlcm9vdCwgJG91dHB1dF9maWxlLAogICAgICAgICAgICAgICAgICAgICRhY3R1YWxfb3V0cHV0X2V4dGVuc2lvbiwgJGh0bWxfdG9jX2V4dGVuc2lvbiwKICAgICAgICAgICAgICAgICAgICAkaHRtbF9zcmNfZXh0ZW5zaW9uICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkck9wdHMtPnsnZm9ybWF0J30gZXEgJ3RpZHknICkgewogICAgICAgICAgICAgICAgJGZvcm1hdHRlciA9IFBlcmw6OlRpZHk6OkZvcm1hdHRlci0+bmV3KAogICAgICAgICAgICAgICAgICAgIGxvZ2dlcl9vYmplY3QgICAgICA9PiAkbG9nZ2VyX29iamVjdCwKICAgICAgICAgICAgICAgICAgICBkaWFnbm9zdGljc19vYmplY3QgPT4gJGRpYWdub3N0aWNzX29iamVjdCwKICAgICAgICAgICAgICAgICAgICBzaW5rX29iamVjdCAgICAgICAgPT4gJHNpbmtfb2JqZWN0LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIERpZSgiSSBkb24ndCBrbm93IGhvdyB0byBkbyAtZm9ybWF0PSRyT3B0cy0+eydmb3JtYXQnfVxuIik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHVubGVzcyAoJGZvcm1hdHRlcikgewogICAgICAgICAgICAgICAgRGllKCJVbmFibGUgdG8gY29udGludWUgd2l0aCAkck9wdHMtPnsnZm9ybWF0J30gZm9ybWF0dGluZ1xuIik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgIyBjcmVhdGUgdGhlIHRva2VuaXplciBmb3IgdGhpcyBmaWxlCiAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgJHRva2VuaXplciA9IHVuZGVmOyAgICAgICAgICAgICAgICAgICAgICMgbXVzdCBkZXN0cm95IG9sZCB0b2tlbml6ZXIKICAgICAgICAgICAgJHRva2VuaXplciA9IFBlcmw6OlRpZHk6OlRva2VuaXplci0+bmV3KAogICAgICAgICAgICAgICAgc291cmNlX29iamVjdCAgICAgID0+ICRzb3VyY2Vfb2JqZWN0LAogICAgICAgICAgICAgICAgbG9nZ2VyX29iamVjdCAgICAgID0+ICRsb2dnZXJfb2JqZWN0LAogICAgICAgICAgICAgICAgZGVidWdnZXJfb2JqZWN0ICAgID0+ICRkZWJ1Z2dlcl9vYmplY3QsCiAgICAgICAgICAgICAgICBkaWFnbm9zdGljc19vYmplY3QgPT4gJGRpYWdub3N0aWNzX29iamVjdCwKICAgICAgICAgICAgICAgIHRhYnNpemUgICAgICAgICAgICA9PiAkdGFic2l6ZSwKCiAgICAgICAgICAgICAgICBzdGFydGluZ19sZXZlbCAgICAgID0+ICRyT3B0cy0+eydzdGFydGluZy1pbmRlbnRhdGlvbi1sZXZlbCd9LAogICAgICAgICAgICAgICAgaW5kZW50X2NvbHVtbnMgICAgICA9PiAkck9wdHMtPnsnaW5kZW50LWNvbHVtbnMnfSwKICAgICAgICAgICAgICAgIGxvb2tfZm9yX2hhc2hfYmFuZyAgPT4gJHJPcHRzLT57J2xvb2stZm9yLWhhc2gtYmFuZyd9LAogICAgICAgICAgICAgICAgbG9va19mb3JfYXV0b2xvYWRlciA9PiAkck9wdHMtPnsnbG9vay1mb3ItYXV0b2xvYWRlcid9LAogICAgICAgICAgICAgICAgbG9va19mb3Jfc2VsZmxvYWRlciA9PiAkck9wdHMtPnsnbG9vay1mb3Itc2VsZmxvYWRlcid9LAogICAgICAgICAgICAgICAgdHJpbV9xdyAgICAgICAgICAgICA9PiAkck9wdHMtPnsndHJpbS1xdyd9LAogICAgICAgICAgICAgICAgZXh0ZW5kZWRfc3ludGF4ICAgICA9PiAkck9wdHMtPnsnZXh0ZW5kZWQtc3ludGF4J30sCgogICAgICAgICAgICAgICAgY29udGludWF0aW9uX2luZGVudGF0aW9uID0+CiAgICAgICAgICAgICAgICAgICRyT3B0cy0+eydjb250aW51YXRpb24taW5kZW50YXRpb24nfSwKICAgICAgICAgICAgICAgIG91dGRlbnRfbGFiZWxzID0+ICRyT3B0cy0+eydvdXRkZW50LWxhYmVscyd9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAjIG5vdyB3ZSBjYW4gZG8gaXQKICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICBwcm9jZXNzX3RoaXNfZmlsZSggJHRva2VuaXplciwgJGZvcm1hdHRlciApOwoKICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAjIGNsb3NlIHRoZSBpbnB1dCBzb3VyY2UgYW5kIHJlcG9ydCBlcnJvcnMKICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAkc291cmNlX29iamVjdC0+Y2xvc2VfaW5wdXRfZmlsZSgpOwoKICAgICAgICAgICAgIyBsaW5lIHNvdXJjZSBmb3IgbmV4dCBpdGVyYXRpb24gKGlmIGFueSkgY29tZXMgZnJvbSB0aGUgY3VycmVudAogICAgICAgICAgICAjIHRlbXBvcmFyeSBvdXRwdXQgYnVmZmVyCiAgICAgICAgICAgIGlmICggJGl0ZXIgPCAkbWF4X2l0ZXJhdGlvbnMgKSB7CgogICAgICAgICAgICAgICAgJHNpbmtfb2JqZWN0LT5jbG9zZV9vdXRwdXRfZmlsZSgpOwogICAgICAgICAgICAgICAgJHNvdXJjZV9vYmplY3QgPQogICAgICAgICAgICAgICAgICBQZXJsOjpUaWR5OjpMaW5lU291cmNlLT5uZXcoIFwkc2lua19idWZmZXIsICRyT3B0cywKICAgICAgICAgICAgICAgICAgICAkcnBlbmRpbmdfbG9nZmlsZV9tZXNzYWdlICk7CgogICAgICAgICAgICAgICAgIyBzdG9wIGl0ZXJhdGlvbnMgaWYgZXJyb3JzIG9yIGNvbnZlcmdlZAogICAgICAgICAgICAgICAgI215ICRzdG9wX25vdyA9ICRsb2dnZXJfb2JqZWN0LT57X3dhcm5pbmdfY291bnR9OwogICAgICAgICAgICAgICAgbXkgJHN0b3Bfbm93ID0gJHRva2VuaXplci0+cmVwb3J0X3Rva2VuaXphdGlvbl9lcnJvcnMoKTsKICAgICAgICAgICAgICAgIGlmICgkc3RvcF9ub3cpIHsKICAgICAgICAgICAgICAgICAgICAkY29udmVyZ2VuY2VfbG9nX21lc3NhZ2UgPSA8PEVPTTsKU3RvcHBpbmcgaXRlcmF0aW9ucyBiZWNhdXNlIG9mIHNldmVyZSBlcnJvcnMuICAgICAgICAgICAgICAgICAgICAgICAKRU9NCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoJGRvX2NvbnZlcmdlbmNlX3Rlc3QpIHsKCiAgICAgICAgICAgICAgICAgICAgbXkgJGRpZ2VzdCA9ICRtZDVfaGV4LT4oJHNpbmtfYnVmZmVyKTsKICAgICAgICAgICAgICAgICAgICBpZiAoICEkc2F3X21kNXskZGlnZXN0fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHNhd19tZDV7JGRpZ2VzdH0gPSAkaXRlcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIERlamEgdnUsIHN0b3AgaXRlcmF0aW5nCiAgICAgICAgICAgICAgICAgICAgICAgICRzdG9wX25vdyA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpdGVybSA9ICRpdGVyIC0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkc2F3X21kNXskZGlnZXN0fSAhPSAkaXRlcm0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBCbGlua2luZyAob3NjaWxsYXRpbmcpIGJldHdlZW4gdHdvIHN0YWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBlbmQgc3RhdGVzLiAgVGhpcyBoYXMgaGFwcGVuZWQgaW4gdGhlIHBhc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYnV0IGF0IHByZXNlbnQgdGhlcmUgYXJlIG5vIGtub3duIGluc3RhbmNlcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb252ZXJnZW5jZV9sb2dfbWVzc2FnZSA9IDw8RU9NOwpCbGlua2luZy4gT3V0cHV0IGZvciBpdGVyYXRpb24gJGl0ZXIgc2FtZSBhcyBmb3IgJHNhd19tZDV7JGRpZ2VzdH0uIApFT00KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaWFnbm9zdGljc19vYmplY3QtPndyaXRlX2RpYWdub3N0aWNzKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb252ZXJnZW5jZV9sb2dfbWVzc2FnZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgJGRpYWdub3N0aWNzX29iamVjdDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb252ZXJnZW5jZV9sb2dfbWVzc2FnZSA9IDw8RU9NOwpDb252ZXJnZWQuICBPdXRwdXQgZm9yIGl0ZXJhdGlvbiAkaXRlciBzYW1lIGFzIGZvciBpdGVyICRpdGVybS4KRU9NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlhZ25vc3RpY3Nfb2JqZWN0LT53cml0ZV9kaWFnbm9zdGljcygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udmVyZ2VuY2VfbG9nX21lc3NhZ2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICRkaWFnbm9zdGljc19vYmplY3QgJiYgJGl0ZXJtID4gMjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gIyMgZW5kIGlmICgkZG9fY29udmVyZ2VuY2VfdGVzdCkKCiAgICAgICAgICAgICAgICBpZiAoJHN0b3Bfbm93KSB7CgogICAgICAgICAgICAgICAgICAgICMgd2UgYXJlIHN0b3BwaW5nIHRoZSBpdGVyYXRpb25zIGVhcmx5OwogICAgICAgICAgICAgICAgICAgICMgY29weSB0aGUgb3V0cHV0IHN0cmVhbSB0byBpdHMgZmluYWwgZGVzdGluYXRpb24KICAgICAgICAgICAgICAgICAgICAkc2lua19vYmplY3QgPSAkc2lua19vYmplY3RfZmluYWw7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBteSAkbGluZSA9ICRzb3VyY2Vfb2JqZWN0LT5nZXRfbGluZSgpICkgewogICAgICAgICAgICAgICAgICAgICAgICAkc2lua19vYmplY3QtPndyaXRlX2xpbmUoJGxpbmUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkc291cmNlX29iamVjdC0+Y2xvc2VfaW5wdXRfZmlsZSgpOwogICAgICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gIyMgZW5kIGlmICggJGl0ZXIgPCAkbWF4X2l0ZXJhdGlvbnMpCiAgICAgICAgfSAgICAjIGVuZCBsb29wIG92ZXIgaXRlcmF0aW9ucyBmb3Igb25lIHNvdXJjZSBmaWxlCgogICAgICAgICMgcmVzdG9yZSBvYmplY3RzIHdoaWNoIGhhdmUgYmVlbiB0ZW1wb3JhcmlseSB1bmRlZmluZWQKICAgICAgICAjIGZvciBzZWNvbmQgYW5kIGhpZ2hlciBpdGVyYXRpb25zCiAgICAgICAgJGRlYnVnZ2VyX29iamVjdCA9ICRkZWJ1Z2dlcl9vYmplY3RfZmluYWw7CiAgICAgICAgJGxvZ2dlcl9vYmplY3QgICA9ICRsb2dnZXJfb2JqZWN0X2ZpbmFsOwoKICAgICAgICAkbG9nZ2VyX29iamVjdC0+d3JpdGVfbG9nZmlsZV9lbnRyeSgkY29udmVyZ2VuY2VfbG9nX21lc3NhZ2UpCiAgICAgICAgICBpZiAkY29udmVyZ2VuY2VfbG9nX21lc3NhZ2U7CgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIFBlcmZvcm0gYW55IHBvc3RmaWx0ZXIgb3BlcmF0aW9uCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgIGlmICggICAkcG9zdGZpbHRlcgogICAgICAgICAgICB8fCAkck9wdHMtPnsnYXNzZXJ0LXRpZHknfQogICAgICAgICAgICB8fCAkck9wdHMtPnsnYXNzZXJ0LXVudGlkeSd9ICkKICAgICAgICB7CiAgICAgICAgICAgICRzaW5rX29iamVjdC0+Y2xvc2Vfb3V0cHV0X2ZpbGUoKTsKICAgICAgICAgICAgJHNpbmtfb2JqZWN0ID0KICAgICAgICAgICAgICBQZXJsOjpUaWR5OjpMaW5lU2luay0+bmV3KCAkb3V0cHV0X2ZpbGUsICR0ZWVfZmlsZSwKICAgICAgICAgICAgICAgICRsaW5lX3NlcGFyYXRvciwgJHJPcHRzLCAkcnBlbmRpbmdfbG9nZmlsZV9tZXNzYWdlLCAkYmlubW9kZSApOwoKICAgICAgICAgICAgbXkgJGJ1ZiA9CiAgICAgICAgICAgICAgICAkcG9zdGZpbHRlcgogICAgICAgICAgICAgID8gJHBvc3RmaWx0ZXItPigkcG9zdGZpbHRlcl9idWZmZXIpCiAgICAgICAgICAgICAgOiAkcG9zdGZpbHRlcl9idWZmZXI7CgogICAgICAgICAgICAjIENoZWNrIGlmIGZpbGUgY2hhbmdlZCBpZiByZXF1ZXN0ZWQsIGJ1dCBvbmx5IGFmdGVyIGFueSBwb3N0ZmlsdGVyCiAgICAgICAgICAgIGlmICggJHJPcHRzLT57J2Fzc2VydC10aWR5J30gKSB7CiAgICAgICAgICAgICAgICBteSAkZGlnZXN0X291dHB1dCA9ICRtZDVfaGV4LT4oJGJ1Zik7CiAgICAgICAgICAgICAgICBpZiAoICRkaWdlc3Rfb3V0cHV0IG5lICRkaWdlc3RfaW5wdXQgKSB7CiAgICAgICAgICAgICAgICAgICAgJGxvZ2dlcl9vYmplY3QtPndhcm5pbmcoCiJhc3NlcnRpb24gZmFpbHVyZTogJy0tYXNzZXJ0LXRpZHknIGlzIHNldCBidXQgb3V0cHV0IGRpZmZlcnMgZnJvbSBpbnB1dFxuIgogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkck9wdHMtPnsnYXNzZXJ0LXVudGlkeSd9ICkgewogICAgICAgICAgICAgICAgbXkgJGRpZ2VzdF9vdXRwdXQgPSAkbWQ1X2hleC0+KCRidWYpOwogICAgICAgICAgICAgICAgaWYgKCAkZGlnZXN0X291dHB1dCBlcSAkZGlnZXN0X2lucHV0ICkgewogICAgICAgICAgICAgICAgICAgICRsb2dnZXJfb2JqZWN0LT53YXJuaW5nKAoiYXNzZXJ0aW9uIGZhaWx1cmU6ICctLWFzc2VydC11bnRpZHknIGlzIHNldCBidXQgb3V0cHV0IGVxdWFscyBpbnB1dFxuIgogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRzb3VyY2Vfb2JqZWN0ID0KICAgICAgICAgICAgICBQZXJsOjpUaWR5OjpMaW5lU291cmNlLT5uZXcoIFwkYnVmLCAkck9wdHMsCiAgICAgICAgICAgICAgICAkcnBlbmRpbmdfbG9nZmlsZV9tZXNzYWdlICk7CiAgICAgICAgICAgIHdoaWxlICggbXkgJGxpbmUgPSAkc291cmNlX29iamVjdC0+Z2V0X2xpbmUoKSApIHsKICAgICAgICAgICAgICAgICRzaW5rX29iamVjdC0+d3JpdGVfbGluZSgkbGluZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHNvdXJjZV9vYmplY3QtPmNsb3NlX2lucHV0X2ZpbGUoKTsKICAgICAgICB9CgogICAgICAgICMgU2F2ZSBuYW1lcyBvZiB0aGUgaW5wdXQgYW5kIG91dHB1dCBmaWxlcyBmb3Igc3ludGF4IGNoZWNrCiAgICAgICAgbXkgJGlmbmFtZSA9ICRpbnB1dF9maWxlOwogICAgICAgIG15ICRvZm5hbWUgPSAkb3V0cHV0X2ZpbGU7CgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIGhhbmRsZSB0aGUgLWIgb3B0aW9uIChiYWNrdXAgYW5kIG1vZGlmeSBpbi1wbGFjZSkKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgaWYgKCRpbl9wbGFjZV9tb2RpZnkpIHsKICAgICAgICAgICAgdW5sZXNzICggLWYgJGlucHV0X2ZpbGUgKSB7CgogICAgICAgICAgICAgICAgIyBvaCwgb2gsIG5vIHJlYWwgZmlsZSB0byBiYWNrdXAgLi4KICAgICAgICAgICAgICAgICMgc2hvdWxkbid0IGhhcHBlbiBiZWNhdXNlIG9mIG51bWVyb3VzIHByZWxpbWluYXJ5IGNoZWNrcwogICAgICAgICAgICAgICAgRGllKAoicHJvYmxlbSB3aXRoIC1iIGJhY2tpbmcgdXAgaW5wdXQgZmlsZSAnJGlucHV0X2ZpbGUnOiBub3QgYSBmaWxlXG4iCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG15ICRiYWNrdXBfbmFtZSA9ICRpbnB1dF9maWxlIC4gJGJhY2t1cF9leHRlbnNpb247CiAgICAgICAgICAgIGlmICggLWYgJGJhY2t1cF9uYW1lICkgewogICAgICAgICAgICAgICAgdW5saW5rKCRiYWNrdXBfbmFtZSkKICAgICAgICAgICAgICAgICAgb3IgRGllKAoidW5hYmxlIHRvIHJlbW92ZSBwcmV2aW91cyAnJGJhY2t1cF9uYW1lJyBmb3IgLWIgb3B0aW9uOyBjaGVjayBwZXJtaXNzaW9uczogJCFcbiIKICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBiYWNrdXAgdGhlIGlucHV0IGZpbGUKICAgICAgICAgICAgIyB3ZSB1c2UgY29weSBmb3Igc3ltbGlua3MsIG1vdmUgZm9yIHJlZ3VsYXIgZmlsZXMKICAgICAgICAgICAgaWYgKCAtbCAkaW5wdXRfZmlsZSApIHsKICAgICAgICAgICAgICAgIEZpbGU6OkNvcHk6OmNvcHkoICRpbnB1dF9maWxlLCAkYmFja3VwX25hbWUgKQogICAgICAgICAgICAgICAgICBvciBEaWUoIkZpbGU6OkNvcHkgZmFpbGVkIHRyeWluZyB0byBiYWNrdXAgc291cmNlOiAkISIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcmVuYW1lKCAkaW5wdXRfZmlsZSwgJGJhY2t1cF9uYW1lICkKICAgICAgICAgICAgICAgICAgb3IgRGllKAoicHJvYmxlbSByZW5hbWluZyAkaW5wdXRfZmlsZSB0byAkYmFja3VwX25hbWUgZm9yIC1iIG9wdGlvbjogJCFcbiIKICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkaWZuYW1lID0gJGJhY2t1cF9uYW1lOwoKICAgICAgICAgICAgIyBjb3B5IHRoZSBvdXRwdXQgdG8gdGhlIG9yaWdpbmFsIGlucHV0IGZpbGUKICAgICAgICAgICAgIyBOT1RFOiBpdCB3b3VsZCBiZSBuaWNlIHRvIGp1c3QgY2xvc2UgJG91dHB1dF9maWxlIGFuZCB1c2UKICAgICAgICAgICAgIyBGaWxlOjpDb3B5Ojpjb3B5IGhlcmUsIGJ1dCBpbiB0aGlzIGNhc2UgJG91dHB1dF9maWxlIGlzIHRoZQogICAgICAgICAgICAjIGhhbmRsZSBvZiBhbiBvcGVuIG5hbWVsZXNzIHRlbXBvcmFyeSBmaWxlIHNvIHdlIHdvdWxkIGxvc2UKICAgICAgICAgICAgIyBldmVyeXRoaW5nIGlmIHdlIGNsb3NlZCBpdC4KICAgICAgICAgICAgc2VlayggJG91dHB1dF9maWxlLCAwLCAwICkKICAgICAgICAgICAgICBvciBEaWUoInVuYWJsZSB0byByZXdpbmQgYSB0ZW1wb3JhcnkgZmlsZSBmb3IgLWIgb3B0aW9uOiAkIVxuIik7CiAgICAgICAgICAgIG15ICRmb3V0ID0gSU86OkZpbGUtPm5ldygiPiAkaW5wdXRfZmlsZSIpCiAgICAgICAgICAgICAgb3IgRGllKAoicHJvYmxlbSByZS1vcGVuaW5nICRpbnB1dF9maWxlIGZvciB3cml0ZSBmb3IgLWIgb3B0aW9uOyBjaGVjayBmaWxlIGFuZCBkaXJlY3RvcnkgcGVybWlzc2lvbnM6ICQhXG4iCiAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCRiaW5tb2RlKSB7CiAgICAgICAgICAgICAgICBpZiAoICAgJHJPcHRzLT57J2NoYXJhY3Rlci1lbmNvZGluZyd9CiAgICAgICAgICAgICAgICAgICAgJiYgJHJPcHRzLT57J2NoYXJhY3Rlci1lbmNvZGluZyd9IGVxICd1dGY4JyApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgYmlubW9kZSAkZm91dCwgIjpyYXc6ZW5jb2RpbmcoVVRGLTgpIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgeyBiaW5tb2RlICRmb3V0IH0KICAgICAgICAgICAgfQogICAgICAgICAgICBteSAkbGluZTsKICAgICAgICAgICAgd2hpbGUgKCAkbGluZSA9ICRvdXRwdXRfZmlsZS0+Z2V0bGluZSgpICkgewogICAgICAgICAgICAgICAgJGZvdXQtPnByaW50KCRsaW5lKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkZm91dC0+Y2xvc2UoKTsKICAgICAgICAgICAgJG91dHB1dF9maWxlID0gJGlucHV0X2ZpbGU7CiAgICAgICAgICAgICRvZm5hbWUgICAgICA9ICRpbnB1dF9maWxlOwogICAgICAgIH0KCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgY2xlYW4gdXAgYW5kIHJlcG9ydCBlcnJvcnMKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgJHNpbmtfb2JqZWN0LT5jbG9zZV9vdXRwdXRfZmlsZSgpICAgIGlmICRzaW5rX29iamVjdDsKICAgICAgICAkZGVidWdnZXJfb2JqZWN0LT5jbG9zZV9kZWJ1Z19maWxlKCkgaWYgJGRlYnVnZ2VyX29iamVjdDsKCiAgICAgICAgIyBzZXQgb3V0cHV0IGZpbGUgcGVybWlzc2lvbnMKICAgICAgICBpZiAoICRvdXRwdXRfZmlsZSAmJiAtZiAkb3V0cHV0X2ZpbGUgJiYgIS1sICRvdXRwdXRfZmlsZSApIHsKICAgICAgICAgICAgaWYgKEBpbnB1dF9maWxlX3N0YXQpIHsKCiAgICAgICAgICAgICAgICAjIFNldCBmaWxlIG93bmVyc2hpcCBhbmQgcGVybWlzc2lvbnMKICAgICAgICAgICAgICAgIGlmICggJHJPcHRzLT57J2Zvcm1hdCd9IGVxICd0aWR5JyApIHsKICAgICAgICAgICAgICAgICAgICBteSAoICRtb2RlX2ksICR1aWRfaSwgJGdpZF9pICkgPQogICAgICAgICAgICAgICAgICAgICAgQGlucHV0X2ZpbGVfc3RhdFsgMiwgNCwgNSBdOwogICAgICAgICAgICAgICAgICAgIG15ICggJHVpZF9vLCAkZ2lkX28gKSA9ICggc3RhdCgkb3V0cHV0X2ZpbGUpIClbIDQsIDUgXTsKICAgICAgICAgICAgICAgICAgICBteSAkaW5wdXRfZmlsZV9wZXJtaXNzaW9ucyAgPSAkbW9kZV9pICYgb2N0KDc3NzcpOwogICAgICAgICAgICAgICAgICAgIG15ICRvdXRwdXRfZmlsZV9wZXJtaXNzaW9ucyA9ICRpbnB1dF9maWxlX3Blcm1pc3Npb25zOwoKICAgICAgICAgICAgICAgICAgICAjcnQxMjg0Nzc6IGF2b2lkIGluY29uc2lzdGVudCBvd25lci9ncm91cCBhbmQgc3VpZC9zZ2lkCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkdWlkX2kgIT0gJHVpZF9vIHx8ICRnaWRfaSAhPSAkZ2lkX28gKSB7CgogICAgICAgICAgICAgICAjIHRyeSB0byBjaGFuZ2Ugb3duZXIgYW5kIGdyb3VwIHRvIG1hdGNoIGlucHV0IGZpbGUgaWYgaW4gLWIgbW9kZQogICAgICAgICAgICAgICAjIG5vdGU6IGNob3duIHJldHVybnMgbnVtYmVyIG9mIGZpbGVzIHN1Y2Nlc3NmdWxseSBjaGFuZ2VkCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJGluX3BsYWNlX21vZGlmeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgY2hvd24oICR1aWRfaSwgJGdpZF9pLCAkb3V0cHV0X2ZpbGUgKSApCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3duZXIvZ3JvdXAgc3VjY2Vzc2Z1bGx5IGNoYW5nZWQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG93bmVyIG9yIGdyb3VwIGRpZmZlcjogZG8gbm90IGNvcHkgc3VpZCBhbmQgc2dpZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG91dHB1dF9maWxlX3Blcm1pc3Npb25zID0gJG1vZGVfaSAmIG9jdCg3NzcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkaW5wdXRfZmlsZV9wZXJtaXNzaW9ucyAhPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvdXRwdXRfZmlsZV9wZXJtaXNzaW9ucyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2FybigKIlVuYWJsZSB0byBjb3B5IHNldHVpZCBhbmQvb3Igc2V0Z2lkIGJpdHMgZm9yIG91dHB1dCBmaWxlICckb3V0cHV0X2ZpbGUnXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBNYWtlIHRoZSBvdXRwdXQgZmlsZSBmb3IgcncgdW5sZXNzIHdlIGFyZSBpbiAtYiBtb2RlLgogICAgICAgICAgICAgICAgICAgICMgRXhwbGFuYXRpb246IHBlcmx0aWR5IGRvZXMgbm90IHVubGluayBleGlzdGluZyBvdXRwdXQKICAgICAgICAgICAgICAgICAgICAjIGZpbGVzIGJlZm9yZSB3cml0aW5nIHRvIHRoZW0sIGZvciBzYWZldHkuICBJZiBhCiAgICAgICAgICAgICAgICAgICAgIyBkZXNpZ25hdGVkIG91dHB1dCBmaWxlIGV4aXN0cyBhbmQgaXMgbm90IHdyaXRhYmxlLAogICAgICAgICAgICAgICAgICAgICMgcGVybHRpZHkgd2lsbCBoYWx0LiAgVGhpcyBjYW4gcHJldmVudCBhIGRhdGEgbG9zcyBpZiBhCiAgICAgICAgICAgICAgICAgICAgIyB1c2VyIGFjY2lkZW50YWxseSBlbnRlcnMgInBlcmx0aWR5IGluZmlsZSAtbwogICAgICAgICAgICAgICAgICAgICMgaW1wb3J0YW50X3JvX2ZpbGUiLCBvciAicGVybHRpZHkgaW5maWxlIC1zdAogICAgICAgICAgICAgICAgICAgICMgPmltcG9ydGFudF9yb19maWxlIi4gQnV0IGl0IGFsc28gbWVhbnMgdGhhdCBwZXJsdGlkeSBjYW4KICAgICAgICAgICAgICAgICAgICAjIGdldCBsb2NrZWQgb3V0IG9mIHJlcnVubmluZyB1bmxlc3MgaXQgbWFya3MgaXRzIG93bgogICAgICAgICAgICAgICAgICAgICMgb3V0cHV0IGZpbGVzIHdyaXRhYmxlLiBUaGUgYWx0ZXJuYXRpdmUsIG9mIGFsd2F5cwogICAgICAgICAgICAgICAgICAgICMgdW5saW5raW5nIHRoZSBkZXNpZ25hdGVkIG91dHB1dCBmaWxlLCBpcyBsZXNzIHNhZmUgYW5kCiAgICAgICAgICAgICAgICAgICAgIyBub3QgYWx3YXlzIHBvc3NpYmxlLCBleGNlcHQgaW4gLWIgbW9kZSwgd2hlcmUgdGhlcmUgaXMgYW4KICAgICAgICAgICAgICAgICAgICAjIGFzc3VtcHRpb24gdGhhdCBhIHByZXZpb3VzIGJhY2t1cCBjYW4gYmUgdW5saW5rZWQgZXZlbiBpZgogICAgICAgICAgICAgICAgICAgICMgbm90IHdyaXRhYmxlLgogICAgICAgICAgICAgICAgICAgIGlmICggISRpbl9wbGFjZV9tb2RpZnkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRvdXRwdXRfZmlsZV9wZXJtaXNzaW9ucyB8PSBvY3QoNjAwKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmICggIWNobW9kKCAkb3V0cHV0X2ZpbGVfcGVybWlzc2lvbnMsICRvdXRwdXRfZmlsZSApICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjb3VsZG4ndCBjaGFuZ2UgZmlsZSBwZXJtaXNzaW9ucwogICAgICAgICAgICAgICAgICAgICAgICBteSAkb3Blcm0gPSBzcHJpbnRmICIlMDRvIiwgJG91dHB1dF9maWxlX3Blcm1pc3Npb25zOwogICAgICAgICAgICAgICAgICAgICAgICBXYXJuKAoiVW5hYmxlIHRvIHNldCBwZXJtaXNzaW9ucyBmb3Igb3V0cHV0IGZpbGUgJyRvdXRwdXRfZmlsZScgdG8gJG9wZXJtXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZWxzZSB1c2UgZGVmYXVsdCBwZXJtaXNzaW9ucyBmb3IgaHRtbCBhbmQgYW55IG90aGVyIGZvcm1hdAogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBEbyBzeW50YXggY2hlY2sgaWYgcmVxdWVzdGVkIGFuZCBwb3NzaWJsZQogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBteSAkaW5maWxlX3N5bnRheF9vayA9IDA7ICAgICMgLTEgbm8gIDA9ZG9uJ3Qga25vdyAgIDEgeWVzCiAgICAgICAgaWYgKCAgICRsb2dnZXJfb2JqZWN0CiAgICAgICAgICAgICYmICRyT3B0cy0+eydjaGVjay1zeW50YXgnfQogICAgICAgICAgICAmJiAkaWZuYW1lCiAgICAgICAgICAgICYmICRvZm5hbWUgKQogICAgICAgIHsKICAgICAgICAgICAgJGluZmlsZV9zeW50YXhfb2sgPQogICAgICAgICAgICAgIGNoZWNrX3N5bnRheCggJGlmbmFtZSwgJG9mbmFtZSwgJGxvZ2dlcl9vYmplY3QsICRyT3B0cyApOwogICAgICAgIH0KCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgcmVtb3ZlIHRoZSBvcmlnaW5hbCBmaWxlIGZvciBpbi1wbGFjZSBtb2RpZnkgYXMgZm9sbG93czoKICAgICAgICAjICAgJGRlbGV0ZV9iYWNrdXA9MCBuZXZlcgogICAgICAgICMgICAkZGVsZXRlX2JhY2t1cD0xIG9ubHkgaWYgbm8gZXJyb3JzCiAgICAgICAgIyAgICRkZWxldGVfYmFja3VwPjEgYWx3YXlzICA6IE5PVCBBTExPV0VELCB0b28gcmlza3ksIHNlZSBhYm92ZQogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBpZiAoICAgJGluX3BsYWNlX21vZGlmeQogICAgICAgICAgICAmJiAkZGVsZXRlX2JhY2t1cAogICAgICAgICAgICAmJiAtZiAkaWZuYW1lCiAgICAgICAgICAgICYmICggJGRlbGV0ZV9iYWNrdXAgPiAxIHx8ICEkbG9nZ2VyX29iamVjdC0+e193YXJuaW5nX2NvdW50fSApICkKICAgICAgICB7CgogICAgICAgICAgICAjIEFzIGFuIGFkZGVkIHNhZmV0eSBwcmVjYXV0aW9uLCBkbyBub3QgZGVsZXRlIHRoZSBzb3VyY2UgZmlsZQogICAgICAgICAgICAjIGlmIGl0cyBzaXplIGhhcyBkcm9wcGVkIGZyb20gcG9zaXRpdmUgdG8gemVybywgc2luY2UgdGhpcwogICAgICAgICAgICAjIGNvdWxkIGluZGljYXRlIGEgZGlzYXN0ZXIgb2Ygc29tZSBraW5kLCBpbmNsdWRpbmcgYSBoYXJkd2FyZQogICAgICAgICAgICAjIGZhaWx1cmUuICBBY3R1YWxseSwgdGhpcyBjb3VsZCBoYXBwZW4gaWYgeW91IGhhZCBhIGZpbGUgb2YKICAgICAgICAgICAgIyBhbGwgY29tbWVudHMgKG9yIHBvZCkgYW5kIGRlbGV0ZWQgZXZlcnl0aGluZyB3aXRoIC1kYWMgKC1kYXApCiAgICAgICAgICAgICMgZm9yIHNvbWUgcmVhc29uLgogICAgICAgICAgICBpZiAoICEtcyAkb3V0cHV0X2ZpbGUgJiYgLXMgJGlmbmFtZSAmJiAkZGVsZXRlX2JhY2t1cCA9PSAxICkgewogICAgICAgICAgICAgICAgV2FybigKIm91dHB1dCBmaWxlICckb3V0cHV0X2ZpbGUnIG1pc3Npbmcgb3IgemVybyBsZW5ndGg7IG9yaWdpbmFsICckaWZuYW1lJyBub3QgZGVsZXRlZFxuIgogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHVubGluaygkaWZuYW1lKQogICAgICAgICAgICAgICAgICBvciBEaWUoCiJ1bmFibGUgdG8gcmVtb3ZlIHByZXZpb3VzICckaWZuYW1lJyBmb3IgLWIgb3B0aW9uOyBjaGVjayBwZXJtaXNzaW9uczogJCFcbiIKICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJGxvZ2dlcl9vYmplY3QtPmZpbmlzaCggJGluZmlsZV9zeW50YXhfb2ssICRmb3JtYXR0ZXIgKQogICAgICAgICAgaWYgJGxvZ2dlcl9vYmplY3Q7CiAgICB9ICAgICMgZW5kIG9mIG1haW4gbG9vcCB0byBwcm9jZXNzIGFsbCBmaWxlcwoKICAgICMgRml4IGZvciBSVCAjMTMwMjk3OiByZXR1cm4gYSB0cnVlIHZhbHVlIGlmIGFueXRoaW5nIHdhcyB3cml0dGVuIHRvIHRoZQogICAgIyBzdGFuZGFyZCBlcnJvciBvdXRwdXQsIGV2ZW4gbm9uLWZhdGFsIHdhcm5pbmcgbWVzc2FnZXMsIG90aGVyd2lzZSByZXR1cm4KICAgICMgZmFsc2UuCgogICAgIyBUaGVzZSBleGl0IGNvZGVzIGFyZSByZXR1cm5lZDoKICAgICMgIDAgPSBwZXJsdGlkeSByYW4gdG8gY29tcGxldGlvbiB3aXRoIG5vIGVycm9ycwogICAgIyAgMSA9IHBlcmx0aWR5IGNvdWxkIG5vdCBydW4gdG8gY29tcGxldGlvbiBkdWUgdG8gZXJyb3JzCiAgICAjICAyID0gcGVybHRpZHkgcmFuIHRvIGNvbXBsZXRpb24gd2l0aCBlcnJvciBtZXNzYWdlcwoKICAgICMgTm90ZSB0aGF0IGlmIHBlcmx0aWR5IGlzIHJ1biB3aXRoIG11bHRpcGxlIGZpbGVzLCBhbnkgc2luZ2xlIGZpbGUgd2l0aAogICAgIyBlcnJvcnMgb3Igd2FybmluZ3Mgd2lsbCB3cml0ZSBhIGxpbmUgbGlrZQogICAgIyAgICAgICAgJyMjIFBsZWFzZSBzZWUgZmlsZSB0ZXN0aW5nLnQuRVJSJwogICAgIyB0byBzdGFuZGFyZCBvdXRwdXQgZm9yIGVhY2ggZmlsZSB3aXRoIGVycm9ycywgc28gdGhlIGZsYWcgd2lsbCBiZSB0cnVlLAogICAgIyBldmVuIG9ubHkgc29tZSBvZiB0aGUgbXVsdGlwbGUgZmlsZXMgbWF5IGhhdmUgaGFkIGVycm9ycy4KCiAgTk9STUFMX0VYSVQ6CiAgICBteSAkcmV0ID0gJFdhcm5fY291bnQgPyAyIDogMDsKICAgIHJldHVybiAkcmV0OwoKICBFUlJPUl9FWElUOgogICAgcmV0dXJuIDE7Cn0gICAgIyBlbmQgb2YgbWFpbiBwcm9ncmFtIHBlcmx0aWR5CgpzdWIgZ2V0X3N0cmVhbV9hc19uYW1lZF9maWxlIHsKCiAgICAjIFJldHVybiB0aGUgbmFtZSBvZiBhIGZpbGUgY29udGFpbmluZyBhIHN0cmVhbSBvZiBkYXRhLCBjcmVhdGluZwogICAgIyBhIHRlbXBvcmFyeSBmaWxlIGlmIG5lY2Vzc2FyeS4KICAgICMgR2l2ZW46CiAgICAjICAkc3RyZWFtIC0gdGhlIG5hbWUgb2YgYSBmaWxlIG9yIHN0cmVhbQogICAgIyBSZXR1cm5zOgogICAgIyAgJGZuYW1lID0gbmFtZSBvZiBmaWxlIGlmIHBvc3NpYmxlLCBvciB1bmRlZgogICAgIyAgJGlmX3RtcGZpbGUgPSB0cnVlIGlmIHRlbXAgZmlsZSwgdW5kZWYgaWYgbm90IHRlbXAgZmlsZQogICAgIwogICAgIyBUaGlzIHJvdXRpbmUgaXMgbmVlZGVkIGZvciBwYXNzaW5nIGFjdHVhbCBmaWxlcyB0byBQZXJsIGZvcgogICAgIyBhIHN5bnRheCBjaGVjay4KICAgIG15ICgkc3RyZWFtKSA9IEBfOwogICAgbXkgJGlzX3RtcGZpbGU7CiAgICBteSAkZm5hbWU7CiAgICBpZiAoJHN0cmVhbSkgewogICAgICAgIGlmICggcmVmKCRzdHJlYW0pICkgewogICAgICAgICAgICBteSAoICRmaF9zdHJlYW0sICRmaF9uYW1lICkgPQogICAgICAgICAgICAgIFBlcmw6OlRpZHk6OnN0cmVhbWhhbmRsZSggJHN0cmVhbSwgJ3InICk7CiAgICAgICAgICAgIGlmICgkZmhfc3RyZWFtKSB7CiAgICAgICAgICAgICAgICBteSAoICRmb3V0LCAkdG1wbmFtICkgPSBGaWxlOjpUZW1wOjp0ZW1wZmlsZSgpOwogICAgICAgICAgICAgICAgaWYgKCRmb3V0KSB7CiAgICAgICAgICAgICAgICAgICAgJGZuYW1lICAgICAgPSAkdG1wbmFtOwogICAgICAgICAgICAgICAgICAgICRpc190bXBmaWxlID0gMTsKICAgICAgICAgICAgICAgICAgICBiaW5tb2RlICRmb3V0OwogICAgICAgICAgICAgICAgICAgIHdoaWxlICggbXkgJGxpbmUgPSAkZmhfc3RyZWFtLT5nZXRsaW5lKCkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRmb3V0LT5wcmludCgkbGluZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRmb3V0LT5jbG9zZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGZoX3N0cmVhbS0+Y2xvc2UoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRzdHJlYW0gbmUgJy0nICYmIC1mICRzdHJlYW0gKSB7CiAgICAgICAgICAgICRmbmFtZSA9ICRzdHJlYW07CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuICggJGZuYW1lLCAkaXNfdG1wZmlsZSApOwp9CgpzdWIgZmlsZWdsb2JfdG9fcmUgewoKICAgICMgbW9kaWZpZWQgKGNvcnJlY3RlZCkgZnJvbSB2ZXJzaW9uIGluIGZpbmQycGVybAogICAgbXkgJHggPSBzaGlmdDsKICAgICR4ID1+IHMjKFsuL15cJCgpXSkjXFwkMSNnOyAgICAjIGVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMKICAgICR4ID1+IHMjXCojLiojZzsgICAgICAgICAgICAgICAjICcqJyAtPiAnLionCiAgICAkeCA9fiBzI1w/Iy4jZzsgICAgICAgICAgICAgICAgIyAnPycgLT4gJy4nCiAgICByZXR1cm4gIl4keFxceiI7ICAgICAgICAgICAgICAgIyBtYXRjaCB3aG9sZSB3b3JkCn0KCnN1YiBtYWtlX2V4dGVuc2lvbiB7CgogICAgIyBNYWtlIGEgZmlsZSBleHRlbnNpb24sIGluY2x1ZGluZyBhbnkgbGVhZGluZyAnLicgaWYgbmVjZXNzYXJ5CiAgICAjIFRoZSAnLicgbWF5IGFjdHVhbGx5IGJlIGFuICdfJyB1bmRlciBWTVMKICAgIG15ICggJGV4dGVuc2lvbiwgJGRlZmF1bHQsICRkb3QgKSA9IEBfOwoKICAgICMgVXNlIHRoZSBkZWZhdWx0IGlmIG5vbmUgc3BlY2lmaWVkCiAgICAkZXh0ZW5zaW9uID0gJGRlZmF1bHQgdW5sZXNzICgkZXh0ZW5zaW9uKTsKCiAgICAjIE9ubHkgZXh0ZW5zaW9ucyB3aXRoIHRoZXNlIGxlYWRpbmcgY2hhcmFjdGVycyBnZXQgYSAnLicKICAgICMgVGhpcyBydWxlIGdpdmVzIHRoZSB1c2VyIHNvbWUgZnJlZWRvbQogICAgaWYgKCAkZXh0ZW5zaW9uID1+IC9eW2EtekEtWjAtOV0vICkgewogICAgICAgICRleHRlbnNpb24gPSAkZG90IC4gJGV4dGVuc2lvbjsKICAgIH0KICAgIHJldHVybiAkZXh0ZW5zaW9uOwp9CgpzdWIgd3JpdGVfbG9nZmlsZV9oZWFkZXIgewogICAgbXkgKAogICAgICAgICRyT3B0cywgICAgICAgICRsb2dnZXJfb2JqZWN0LCAkY29uZmlnX2ZpbGUsCiAgICAgICAgJHJyYXdfb3B0aW9ucywgJFdpbmRvd3NfdHlwZSwgICRyZWFkYWJsZV9vcHRpb25zCiAgICApID0gQF87CiAgICAkbG9nZ2VyX29iamVjdC0+d3JpdGVfbG9nZmlsZV9lbnRyeSgKInBlcmx0aWR5IHZlcnNpb24gJFZFUlNJT04gbG9nIGZpbGUgb24gYSAkXk8gc3lzdGVtLCBPTERfUEVSTF9WRVJTSU9OPSRdXG4iCiAgICApOwogICAgaWYgKCRXaW5kb3dzX3R5cGUpIHsKICAgICAgICAkbG9nZ2VyX29iamVjdC0+d3JpdGVfbG9nZmlsZV9lbnRyeSgiV2luZG93cyB0eXBlIGlzICRXaW5kb3dzX3R5cGVcbiIpOwogICAgfQogICAgbXkgJG9wdGlvbnNfc3RyaW5nID0gam9pbiggJyAnLCBAeyRycmF3X29wdGlvbnN9ICk7CgogICAgaWYgKCRjb25maWdfZmlsZSkgewogICAgICAgICRsb2dnZXJfb2JqZWN0LT53cml0ZV9sb2dmaWxlX2VudHJ5KAogICAgICAgICAgICAiRm91bmQgQ29uZmlndXJhdGlvbiBGaWxlID4+PiAkY29uZmlnX2ZpbGUgXG4iKTsKICAgIH0KICAgICRsb2dnZXJfb2JqZWN0LT53cml0ZV9sb2dmaWxlX2VudHJ5KAogICAgICAgICJDb25maWd1cmF0aW9uIGFuZCBjb21tYW5kIGxpbmUgcGFyYW1ldGVycyBmb3IgdGhpcyBydW46XG4iKTsKICAgICRsb2dnZXJfb2JqZWN0LT53cml0ZV9sb2dmaWxlX2VudHJ5KCIkb3B0aW9uc19zdHJpbmdcbiIpOwoKICAgIGlmICggJHJPcHRzLT57J0RFQlVHJ30gfHwgJHJPcHRzLT57J3Nob3ctb3B0aW9ucyd9ICkgewogICAgICAgICRyT3B0cy0+eydsb2dmaWxlJ30gPSAxOyAgICAjIGZvcmNlIGxvZ2ZpbGUgdG8gYmUgc2F2ZWQKICAgICAgICAkbG9nZ2VyX29iamVjdC0+d3JpdGVfbG9nZmlsZV9lbnRyeSgKICAgICAgICAgICAgIkZpbmFsIHBhcmFtZXRlciBzZXQgZm9yIHRoaXMgcnVuXG4iKTsKICAgICAgICAkbG9nZ2VyX29iamVjdC0+d3JpdGVfbG9nZmlsZV9lbnRyeSgKICAgICAgICAgICAgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CgogICAgICAgICRsb2dnZXJfb2JqZWN0LT53cml0ZV9sb2dmaWxlX2VudHJ5KCRyZWFkYWJsZV9vcHRpb25zKTsKCiAgICAgICAgJGxvZ2dlcl9vYmplY3QtPndyaXRlX2xvZ2ZpbGVfZW50cnkoCiAgICAgICAgICAgICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwogICAgfQogICAgJGxvZ2dlcl9vYmplY3QtPndyaXRlX2xvZ2ZpbGVfZW50cnkoCiAgICAgICAgIlRvIGZpbmQgZXJyb3IgbWVzc2FnZXMgc2VhcmNoIGZvciAnV0FSTklORycgd2l0aCB5b3VyIGVkaXRvclxuIik7CiAgICByZXR1cm47Cn0KCnN1YiBnZW5lcmF0ZV9vcHRpb25zIHsKCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIEdlbmVyYXRlIGFuZCByZXR1cm4gcmVmZXJlbmNlcyB0bzoKICAgICMgIEBvcHRpb25fc3RyaW5nIC0gdGhlIGxpc3Qgb2Ygb3B0aW9ucyB0byBiZSBwYXNzZWQgdG8gR2V0b3B0OjpMb25nCiAgICAjICBAZGVmYXVsdHMgLSB0aGUgbGlzdCBvZiBkZWZhdWx0IG9wdGlvbnMKICAgICMgICVleHBhbnNpb24gLSBhIGhhc2ggc2hvd2luZyBob3cgYWxsIGFiYnJldmlhdGlvbnMgYXJlIGV4cGFuZGVkCiAgICAjICAlY2F0ZWdvcnkgLSBhIGhhc2ggZ2l2aW5nIHRoZSBnZW5lcmFsIGNhdGVnb3J5IG9mIGVhY2ggb3B0aW9uCiAgICAjICAlb3B0aW9uX3JhbmdlIC0gYSBoYXNoIGdpdmluZyB0aGUgdmFsaWQgcmFuZ2VzIG9mIGNlcnRhaW4gb3B0aW9ucwoKICAgICMgTm90ZTogYSBmZXcgb3B0aW9ucyBhcmUgbm90IGRvY3VtZW50ZWQgaW4gdGhlIG1hbiBwYWdlIGFuZCB1c2FnZQogICAgIyBtZXNzYWdlLiBUaGlzIGlzIGJlY2F1c2UgdGhlc2UgYXJlIGV4cGVyaW1lbnRhbCBvciBkZWJ1ZyBvcHRpb25zIGFuZAogICAgIyBtYXkgb3IgbWF5IG5vdCBiZSByZXRhaW5lZCBpbiBmdXR1cmUgdmVyc2lvbnMuCiAgICAjCiAgICAjIEhlcmUgYXJlIHRoZSB1bmRvY3VtZW50ZWQgZmxhZ3MgYXMgZmFyIGFzIEkga25vdy4gIEFueSBvZiB0aGVtCiAgICAjIG1heSBkaXNhcHBlYXIgYXQgYW55IHRpbWUuICBUaGV5IGFyZSBtYWlubHkgZm9yIGZpbmUtdHVuaW5nCiAgICAjIGFuZCBkZWJ1Z2dpbmcuCiAgICAjCiAgICAjIGZsbCAtLT4gZnV6enktbGluZS1sZW5ndGggICAgICAgICAgICMgYSB0cml2aWFsIHBhcmFtZXRlciB3aGljaCBnZXRzCiAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVybmVkIG9mZiBmb3IgdGhlIGV4dHJ1ZGUgb3B0aW9uCiAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgbWFpbmx5IGZvciBkZWJ1Z2dpbmcKICAgICMgc2NsIC0tPiBzaG9ydC1jb25jYXRlbmF0aW9uLWl0ZW0tbGVuZ3RoICAgIyBoZWxwcyBicmVhayBhdCAnLicKICAgICMgcmVjb21iaW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmb3IgZGVidWdnaW5nIGxpbmUgYnJlYWtzCiAgICAjIHZhbGlnbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZm9yIGRlYnVnZ2luZyB2ZXJ0aWNhbCBhbGlnbm1lbnQKICAgICMgSSAgIC0tPiBESUFHTk9TVElDUyAgICAgICAgICAgICAgICAgIyBmb3IgZGVidWdnaW5nIFsqKkRFQUNUSVZBVEVEKipdCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgIyBoZXJlIGlzIGEgc3VtbWFyeSBvZiB0aGUgR2V0b3B0IGNvZGVzOgogICAgIyA8bm9uZT4gZG9lcyBub3QgdGFrZSBhbiBhcmd1bWVudAogICAgIyA9cyB0YWtlcyBhIG1hbmRhdG9yeSBzdHJpbmcKICAgICMgOnMgdGFrZXMgYW4gb3B0aW9uYWwgc3RyaW5nICAoRE8gTk9UIFVTRSAtIGZpbGVuYW1lcyB3aWxsIGdldCBlYXRlbiB1cCkKICAgICMgPWkgdGFrZXMgYSBtYW5kYXRvcnkgaW50ZWdlcgogICAgIyA6aSB0YWtlcyBhbiBvcHRpb25hbCBpbnRlZ2VyIChOT1QgUkVDT01NRU5ERUQgLSBjYW4gY2F1c2UgdHJvdWJsZSkKICAgICMgISBkb2VzIG5vdCB0YWtlIGFuIGFyZ3VtZW50IGFuZCBtYXkgYmUgbmVnYXRlZAogICAgIyAgaS5lLiwgLWZvbyBhbmQgLW5vZm9vIGFyZSBhbGxvd2VkCiAgICAjIGEgZG91YmxlIGRhc2ggc2lnbmFscyB0aGUgZW5kIG9mIHRoZSBvcHRpb25zIGxpc3QKICAgICMKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgRGVmaW5lIHRoZSBvcHRpb24gc3RyaW5nIHBhc3NlZCB0byBHZXRPcHRpb25zLgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIG15IEBvcHRpb25fc3RyaW5nICAgPSAoKTsKICAgIG15ICVleHBhbnNpb24gICAgICAgPSAoKTsKICAgIG15ICVvcHRpb25fY2F0ZWdvcnkgPSAoKTsKICAgIG15ICVvcHRpb25fcmFuZ2UgICAgPSAoKTsKICAgIG15ICRyZXhwYW5zaW9uICAgICAgPSBcJWV4cGFuc2lvbjsKCiAgICAjIG5hbWVzIG9mIGNhdGVnb3JpZXMgaW4gbWFudWFsCiAgICAjIGxlYWRpbmcgaW50ZWdlcnMgd2lsbCBhbGxvdyBzb3J0aW5nCiAgICBteSBAY2F0ZWdvcnlfbmFtZSA9ICgKICAgICAgICAnMC4gSS9PIGNvbnRyb2wnLAogICAgICAgICcxLiBCYXNpYyBmb3JtYXR0aW5nIG9wdGlvbnMnLAogICAgICAgICcyLiBDb2RlIGluZGVudGF0aW9uIGNvbnRyb2wnLAogICAgICAgICczLiBXaGl0ZXNwYWNlIGNvbnRyb2wnLAogICAgICAgICc0LiBDb21tZW50IGNvbnRyb2xzJywKICAgICAgICAnNS4gTGluZWJyZWFrIGNvbnRyb2xzJywKICAgICAgICAnNi4gQ29udHJvbGxpbmcgbGlzdCBmb3JtYXR0aW5nJywKICAgICAgICAnNy4gUmV0YWluaW5nIG9yIGlnbm9yaW5nIGV4aXN0aW5nIGxpbmUgYnJlYWtzJywKICAgICAgICAnOC4gQmxhbmsgbGluZSBjb250cm9sJywKICAgICAgICAnOS4gT3RoZXIgY29udHJvbHMnLAogICAgICAgICcxMC4gSFRNTCBvcHRpb25zJywKICAgICAgICAnMTEuIHBvZDJodG1sIG9wdGlvbnMnLAogICAgICAgICcxMi4gQ29udHJvbGxpbmcgSFRNTCBwcm9wZXJ0aWVzJywKICAgICAgICAnMTMuIERlYnVnZ2luZycsCiAgICApOwoKICAgICMgIFRoZXNlIG9wdGlvbnMgYXJlIHBhcnNlZCBkaXJlY3RseSBieSBwZXJsdGlkeToKICAgICMgICAgaGVscCBoCiAgICAjICAgIHZlcnNpb24gdgogICAgIyAgSG93ZXZlciwgdGhleSBhcmUgaW5jbHVkZWQgaW4gdGhlIG9wdGlvbiBzZXQgc28gdGhhdCB0aGV5IHdpbGwKICAgICMgIGJlIHNlZW4gaW4gdGhlIG9wdGlvbnMgZHVtcC4KCiAgICAjIFRoZXNlIGxvbmcgb3B0aW9uIG5hbWVzIGhhdmUgbm8gYWJicmV2aWF0aW9ucyBvciBhcmUgdHJlYXRlZCBzcGVjaWFsbHkKICAgIEBvcHRpb25fc3RyaW5nID0gcXcoCiAgICAgIGh0bWwhCiAgICAgIG5vcHJvZmlsZQogICAgICBuby1wcm9maWxlCiAgICAgIG5wcm8KICAgICAgcmVjb21iaW5lIQogICAgICB2YWxpZ24hCiAgICAgIG5vdGlkeQogICAgKTsKCiAgICBteSAkY2F0ZWdvcnkgPSAxMzsgICAgIyBEZWJ1Z2dpbmcKICAgIGZvcmVhY2ggKEBvcHRpb25fc3RyaW5nKSB7CiAgICAgICAgbXkgJG9wdCA9ICRfOyAgICAgIyBtdXN0IGF2b2lkIGNoYW5naW5nIHRoZSBhY3R1YWwgZmxhZwogICAgICAgICRvcHQgPX4gcy8hJC8vOwogICAgICAgICRvcHRpb25fY2F0ZWdvcnl7JG9wdH0gPSAkY2F0ZWdvcnlfbmFtZVskY2F0ZWdvcnldOwogICAgfQoKICAgICRjYXRlZ29yeSA9IDExOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSFRNTAogICAgJG9wdGlvbl9jYXRlZ29yeXtodG1sfSA9ICRjYXRlZ29yeV9uYW1lWyRjYXRlZ29yeV07CgogICAgIyByb3V0aW5lIHRvIGluc3RhbGwgYW5kIGNoZWNrIG9wdGlvbnMKICAgIG15ICRhZGRfb3B0aW9uID0gc3ViIHsKICAgICAgICBteSAoICRsb25nX25hbWUsICRzaG9ydF9uYW1lLCAkZmxhZyApID0gQF87CiAgICAgICAgcHVzaCBAb3B0aW9uX3N0cmluZywgJGxvbmdfbmFtZSAuICRmbGFnOwogICAgICAgICRvcHRpb25fY2F0ZWdvcnl7JGxvbmdfbmFtZX0gPSAkY2F0ZWdvcnlfbmFtZVskY2F0ZWdvcnldOwogICAgICAgIGlmICgkc2hvcnRfbmFtZSkgewogICAgICAgICAgICBpZiAoICRleHBhbnNpb257JHNob3J0X25hbWV9ICkgewogICAgICAgICAgICAgICAgbXkgJGV4aXN0aW5nX25hbWUgPSAkZXhwYW5zaW9ueyRzaG9ydF9uYW1lfVswXTsKICAgICAgICAgICAgICAgIERpZSgKInJlZGVmaW5pbmcgYWJicmV2aWF0aW9uICRzaG9ydF9uYW1lIGZvciAkbG9uZ19uYW1lOyBhbHJlYWR5IHVzZWQgZm9yICRleGlzdGluZ19uYW1lXG4iCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRleHBhbnNpb257JHNob3J0X25hbWV9ID0gWyRsb25nX25hbWVdOwogICAgICAgICAgICBpZiAoICRmbGFnIGVxICchJyApIHsKICAgICAgICAgICAgICAgIG15ICRuc2hvcnRfbmFtZSA9ICduJyAuICRzaG9ydF9uYW1lOwogICAgICAgICAgICAgICAgbXkgJG5vbG9uZ19uYW1lID0gJ25vJyAuICRsb25nX25hbWU7CiAgICAgICAgICAgICAgICBpZiAoICRleHBhbnNpb257JG5zaG9ydF9uYW1lfSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkZXhpc3RpbmdfbmFtZSA9ICRleHBhbnNpb257JG5zaG9ydF9uYW1lfVswXTsKICAgICAgICAgICAgICAgICAgICBEaWUoCiJhdHRlbXB0aW5nIHRvIHJlZGVmaW5lIGFiYnJldmlhdGlvbiAkbnNob3J0X25hbWUgZm9yICRub2xvbmdfbmFtZTsgYWxyZWFkeSB1c2VkIGZvciAkZXhpc3RpbmdfbmFtZVxuIgogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkZXhwYW5zaW9ueyRuc2hvcnRfbmFtZX0gPSBbJG5vbG9uZ19uYW1lXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07CgogICAgIyBJbnN0YWxsIGxvbmcgb3B0aW9uIG5hbWVzIHdoaWNoIGhhdmUgYSBzaW1wbGUgYWJicmV2aWF0aW9uLgogICAgIyBPcHRpb25zIHdpdGggY29kZSAnIScgZ2V0IHN0YW5kYXJkIG5lZ2F0aW9uICgnbm8nIGZvciBsb25nIG5hbWVzLAogICAgIyAnbicgZm9yIGFiYnJldmlhdGlvbnMpLiAgQ2F0ZWdvcmllcyBmb2xsb3cgdGhlIG1hbnVhbC4KCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICRjYXRlZ29yeSA9IDA7ICAgICMgSS9PX0NvbnRyb2wKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgJGFkZF9vcHRpb24tPiggJ2JhY2t1cC1hbmQtbW9kaWZ5LWluLXBsYWNlJywgJ2InLCAgICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnYmFja3VwLWZpbGUtZXh0ZW5zaW9uJywgICAgICAnYmV4dCcsICAnPXMnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnZm9yY2UtcmVhZC1iaW5hcnknLCAgICAgICAgICAnZicsICAgICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdmb3JtYXQnLCAgICAgICAgICAgICAgICAgICAgICdmbXQnLCAgICc9cycgKTsKICAgICRhZGRfb3B0aW9uLT4oICdpdGVyYXRpb25zJywgICAgICAgICAgICAgICAgICdpdCcsICAgICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdsb2dmaWxlJywgICAgICAgICAgICAgICAgICAgICdsb2cnLCAgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2xvZ2ZpbGUtZ2FwJywgICAgICAgICAgICAgICAgJ2cnLCAgICAgJzppJyApOwogICAgJGFkZF9vcHRpb24tPiggJ291dGZpbGUnLCAgICAgICAgICAgICAgICAgICAgJ28nLCAgICAgJz1zJyApOwogICAgJGFkZF9vcHRpb24tPiggJ291dHB1dC1maWxlLWV4dGVuc2lvbicsICAgICAgJ29leHQnLCAgJz1zJyApOwogICAgJGFkZF9vcHRpb24tPiggJ291dHB1dC1wYXRoJywgICAgICAgICAgICAgICAgJ29wYXRoJywgJz1zJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3Byb2ZpbGUnLCAgICAgICAgICAgICAgICAgICAgJ3BybycsICAgJz1zJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3F1aWV0JywgICAgICAgICAgICAgICAgICAgICAgJ3EnLCAgICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnc3RhbmRhcmQtZXJyb3Itb3V0cHV0JywgICAgICAnc2UnLCAgICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdzdGFuZGFyZC1vdXRwdXQnLCAgICAgICAgICAgICdzdCcsICAgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3dhcm5pbmctb3V0cHV0JywgICAgICAgICAgICAgJ3cnLCAgICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnY2hhcmFjdGVyLWVuY29kaW5nJywgICAgICAgICAnZW5jJywgICAnPXMnICk7CgogICAgIyBvcHRpb25zIHdoaWNoIGFyZSBib3RoIHRvZ2dsZSBzd2l0Y2hlcyBhbmQgdmFsdWVzIG1vdmVkIGhlcmUKICAgICMgdG8gaGlkZSBmcm9tIHRpZHl2aWV3ICh3aGljaCBkb2VzIG5vdCBzaG93IGNhdGVnb3J5IDAgZmxhZ3MpOgogICAgIyAtb2xlIG1vdmVkIGhlcmUgZnJvbSBjYXRlZ29yeSAxCiAgICAjIC1zaWwgbW92ZWQgaGVyZSBmcm9tIGNhdGVnb3J5IDIKICAgICRhZGRfb3B0aW9uLT4oICdvdXRwdXQtbGluZS1lbmRpbmcnLCAgICAgICAgICdvbGUnLCAnPXMnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnc3RhcnRpbmctaW5kZW50YXRpb24tbGV2ZWwnLCAnc2lsJywgJz1pJyApOwoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICRjYXRlZ29yeSA9IDE7ICAgICMgQmFzaWMgZm9ybWF0dGluZyBvcHRpb25zCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAkYWRkX29wdGlvbi0+KCAnY2hlY2stc3ludGF4JywgICAgICAgICAgICAgICAgICdzeW4nLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnZW50YWItbGVhZGluZy13aGl0ZXNwYWNlJywgICAgICdldCcsICAgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2luZGVudC1jb2x1bW5zJywgICAgICAgICAgICAgICAnaScsICAgICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdtYXhpbXVtLWxpbmUtbGVuZ3RoJywgICAgICAgICAgJ2wnLCAgICAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAndmFyaWFibGUtbWF4aW11bS1saW5lLWxlbmd0aCcsICd2bWxsJywgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnd2hpdGVzcGFjZS1jeWNsZScsICAgICAgICAgICAgICd3YycsICAgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3Blcmwtc3ludGF4LWNoZWNrLWZsYWdzJywgICAgICAncHNjZicsICc9cycgKTsKICAgICRhZGRfb3B0aW9uLT4oICdwcmVzZXJ2ZS1saW5lLWVuZGluZ3MnLCAgICAgICAgJ3BsZScsICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICd0YWJzJywgICAgICAgICAgICAgICAgICAgICAgICAgJ3QnLCAgICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdkZWZhdWx0LXRhYnNpemUnLCAgICAgICAgICAgICAgJ2R0JywgICAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAnZXh0ZW5kZWQtc3ludGF4JywgICAgICAgICAgICAgICd4cycsICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnYXNzZXJ0LXRpZHknLCAgICAgICAgICAgICAgICAgICdhc3QnLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnYXNzZXJ0LXVudGlkeScsICAgICAgICAgICAgICAgICdhc3UnLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnc3ViLWFsaWFzLWxpc3QnLCAgICAgICAgICAgICAgICdzYWwnLCAgJz1zJyApOwoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICRjYXRlZ29yeSA9IDI7ICAgICMgQ29kZSBpbmRlbnRhdGlvbiBjb250cm9sCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAkYWRkX29wdGlvbi0+KCAnY29udGludWF0aW9uLWluZGVudGF0aW9uJywgICAgICAgICAgICdjaScsICAgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2xpbmUtdXAtcGFyZW50aGVzZXMnLCAgICAgICAgICAgICAgICAnbHAnLCAgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ291dGRlbnQta2V5d29yZC1saXN0JywgICAgICAgICAgICAgICAnb2t3bCcsICc9cycgKTsKICAgICRhZGRfb3B0aW9uLT4oICdvdXRkZW50LWtleXdvcmRzJywgICAgICAgICAgICAgICAgICAgJ29rdycsICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdvdXRkZW50LWxhYmVscycsICAgICAgICAgICAgICAgICAgICAgJ29sYScsICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdvdXRkZW50LWxvbmctcXVvdGVzJywgICAgICAgICAgICAgICAgJ29scScsICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdpbmRlbnQtY2xvc2luZy1icmFjZScsICAgICAgICAgICAgICAgJ2ljYicsICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdjbG9zaW5nLXRva2VuLWluZGVudGF0aW9uJywgICAgICAgICAgJ2N0aScsICAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAnY2xvc2luZy1wYXJlbi1pbmRlbnRhdGlvbicsICAgICAgICAgICdjcGknLCAgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2Nsb3NpbmctYnJhY2UtaW5kZW50YXRpb24nLCAgICAgICAgICAnY2JpJywgICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdjbG9zaW5nLXNxdWFyZS1icmFja2V0LWluZGVudGF0aW9uJywgJ2NzYmknLCAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAnYnJhY2UtbGVmdC1hbmQtaW5kZW50JywgICAgICAgICAgICAgICdibGknLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnYnJhY2UtbGVmdC1hbmQtaW5kZW50LWxpc3QnLCAgICAgICAgICdibGlsJywgJz1zJyApOwoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICRjYXRlZ29yeSA9IDM7ICAgICMgV2hpdGVzcGFjZSBjb250cm9sCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAkYWRkX29wdGlvbi0+KCAnYWRkLXNlbWljb2xvbnMnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNjJywgICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdhZGQtd2hpdGVzcGFjZScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhd3MnLCAgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2Jsb2NrLWJyYWNlLXRpZ2h0bmVzcycsICAgICAgICAgICAgICAgICAgICAgJ2JidCcsICAgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2JyYWNlLXRpZ2h0bmVzcycsICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2J0JywgICAgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2RlbGV0ZS1vbGQtd2hpdGVzcGFjZScsICAgICAgICAgICAgICAgICAgICAgJ2R3cycsICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnZGVsZXRlLXNlbWljb2xvbnMnLCAgICAgICAgICAgICAgICAgICAgICAgICAnZHNtJywgICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdub3NwYWNlLWFmdGVyLWtleXdvcmQnLCAgICAgICAgICAgICAgICAgICAgICduc2FrJywgICc9cycgKTsKICAgICRhZGRfb3B0aW9uLT4oICdub3dhbnQtbGVmdC1zcGFjZScsICAgICAgICAgICAgICAgICAgICAgICAgICdud2xzJywgICc9cycgKTsKICAgICRhZGRfb3B0aW9uLT4oICdub3dhbnQtcmlnaHQtc3BhY2UnLCAgICAgICAgICAgICAgICAgICAgICAgICdud3JzJywgICc9cycgKTsKICAgICRhZGRfb3B0aW9uLT4oICdwYXJlbi10aWdodG5lc3MnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICdwdCcsICAgICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdzcGFjZS1hZnRlci1rZXl3b3JkJywgICAgICAgICAgICAgICAgICAgICAgICdzYWsnLCAgICc9cycgKTsKICAgICRhZGRfb3B0aW9uLT4oICdzcGFjZS1mb3Itc2VtaWNvbG9uJywgICAgICAgICAgICAgICAgICAgICAgICdzZnMnLCAgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3NwYWNlLWZ1bmN0aW9uLXBhcmVuJywgICAgICAgICAgICAgICAgICAgICAgJ3NmcCcsICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnc3BhY2Uta2V5d29yZC1wYXJlbicsICAgICAgICAgICAgICAgICAgICAgICAnc2twJywgICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdzcGFjZS10ZXJtaW5hbC1zZW1pY29sb24nLCAgICAgICAgICAgICAgICAgICdzdHMnLCAgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3NxdWFyZS1icmFja2V0LXRpZ2h0bmVzcycsICAgICAgICAgICAgICAgICAgJ3NidCcsICAgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3NxdWFyZS1icmFja2V0LXZlcnRpY2FsLXRpZ2h0bmVzcycsICAgICAgICAgJ3NidnQnLCAgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3NxdWFyZS1icmFja2V0LXZlcnRpY2FsLXRpZ2h0bmVzcy1jbG9zaW5nJywgJ3NidnRjJywgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3RpZ2h0LXNlY3JldC1vcGVyYXRvcnMnLCAgICAgICAgICAgICAgICAgICAgJ3RzbycsICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAndHJpbS1xdycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHF3JywgICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICd0cmltLXBvZCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0cnAnLCAgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3dhbnQtbGVmdC1zcGFjZScsICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dscycsICAgJz1zJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3dhbnQtcmlnaHQtc3BhY2UnLCAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dycycsICAgJz1zJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3NwYWNlLXByb3RvdHlwZS1wYXJlbicsICAgICAgICAgICAgICAgICAgICAgJ3NwcCcsICAgJz1pJyApOwoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICRjYXRlZ29yeSA9IDQ7ICAgICMgQ29tbWVudCBjb250cm9scwogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgJGFkZF9vcHRpb24tPiggJ2Nsb3Npbmctc2lkZS1jb21tZW50LWVsc2UtZmxhZycsICAgICdjc2NlJywgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2Nsb3Npbmctc2lkZS1jb21tZW50LWludGVydmFsJywgICAgICdjc2NpJywgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2Nsb3Npbmctc2lkZS1jb21tZW50LWxpc3QnLCAgICAgICAgICdjc2NsJywgJz1zJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2Nsb3Npbmctc2lkZS1jb21tZW50LW1heGltdW0tdGV4dCcsICdjc2N0JywgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2Nsb3Npbmctc2lkZS1jb21tZW50LXByZWZpeCcsICAgICAgICdjc2NwJywgJz1zJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2Nsb3Npbmctc2lkZS1jb21tZW50LXdhcm5pbmdzJywgICAgICdjc2N3JywgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnY2xvc2luZy1zaWRlLWNvbW1lbnRzJywgICAgICAgICAgICAgJ2NzYycsICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdjbG9zaW5nLXNpZGUtY29tbWVudHMtYmFsYW5jZWQnLCAgICAnY3NjYicsICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2Zvcm1hdC1za2lwcGluZycsICAgICAgICAgICAgICAgICAgICdmcycsICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnZm9ybWF0LXNraXBwaW5nLWJlZ2luJywgICAgICAgICAgICAgJ2ZzYicsICAnPXMnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnZm9ybWF0LXNraXBwaW5nLWVuZCcsICAgICAgICAgICAgICAgJ2ZzZScsICAnPXMnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnaGFuZ2luZy1zaWRlLWNvbW1lbnRzJywgICAgICAgICAgICAgJ2hzYycsICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdpbmRlbnQtYmxvY2stY29tbWVudHMnLCAgICAgICAgICAgICAnaWJjJywgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2luZGVudC1zcGFjZWQtYmxvY2stY29tbWVudHMnLCAgICAgICdpc2JjJywgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnZml4ZWQtcG9zaXRpb24tc2lkZS1jb21tZW50JywgICAgICAgJ2Zwc2MnLCAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAnbWluaW11bS1zcGFjZS10by1jb21tZW50JywgICAgICAgICAgJ21zYycsICAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAnb3V0ZGVudC1sb25nLWNvbW1lbnRzJywgICAgICAgICAgICAgJ29sYycsICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdvdXRkZW50LXN0YXRpYy1ibG9jay1jb21tZW50cycsICAgICAnb3NiYycsICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3N0YXRpYy1ibG9jay1jb21tZW50LXByZWZpeCcsICAgICAgICdzYmNwJywgJz1zJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3N0YXRpYy1ibG9jay1jb21tZW50cycsICAgICAgICAgICAgICdzYmMnLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnc3RhdGljLXNpZGUtY29tbWVudC1wcmVmaXgnLCAgICAgICAgJ3NzY3AnLCAnPXMnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnc3RhdGljLXNpZGUtY29tbWVudHMnLCAgICAgICAgICAgICAgJ3NzYycsICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdpZ25vcmUtc2lkZS1jb21tZW50LWxlbmd0aHMnLCAgICAgICAnaXNjbCcsICchJyApOwoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICRjYXRlZ29yeSA9IDU7ICAgICMgTGluZWJyZWFrIGNvbnRyb2xzCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAkYWRkX29wdGlvbi0+KCAnYWRkLW5ld2xpbmVzJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FubCcsICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnYmxvY2stYnJhY2UtdmVydGljYWwtdGlnaHRuZXNzJywgICAgICAgICAgJ2JidnQnLCAgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2Jsb2NrLWJyYWNlLXZlcnRpY2FsLXRpZ2h0bmVzcy1saXN0JywgICAgICdiYnZ0bCcsICc9cycgKTsKICAgICRhZGRfb3B0aW9uLT4oICdicmFjZS12ZXJ0aWNhbC10aWdodG5lc3MnLCAgICAgICAgICAgICAgICAnYnZ0JywgICAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAnYnJhY2UtdmVydGljYWwtdGlnaHRuZXNzLWNsb3NpbmcnLCAgICAgICAgJ2J2dGMnLCAgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2N1ZGRsZWQtZWxzZScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjZScsICAgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2N1ZGRsZWQtYmxvY2stbGlzdCcsICAgICAgICAgICAgICAgICAgICAgICdjYmwnLCAgICc9cycgKTsKICAgICRhZGRfb3B0aW9uLT4oICdjdWRkbGVkLWJsb2NrLWxpc3QtZXhjbHVzaXZlJywgICAgICAgICAgICAnY2JseCcsICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdjdWRkbGVkLWJyZWFrLW9wdGlvbicsICAgICAgICAgICAgICAgICAgICAnY2JvJywgICAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAnZGVsZXRlLW9sZC1uZXdsaW5lcycsICAgICAgICAgICAgICAgICAgICAgJ2RubCcsICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnb3BlbmluZy1icmFjZS1hbHdheXMtb24tcmlnaHQnLCAgICAgICAgICAgJ2JhcicsICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnb3BlbmluZy1icmFjZS1vbi1uZXctbGluZScsICAgICAgICAgICAgICAgJ2JsJywgICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnb3BlbmluZy1oYXNoLWJyYWNlLXJpZ2h0JywgICAgICAgICAgICAgICAgJ29oYnInLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnb3BlbmluZy1wYXJlbi1yaWdodCcsICAgICAgICAgICAgICAgICAgICAgJ29wcicsICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnb3BlbmluZy1zcXVhcmUtYnJhY2tldC1yaWdodCcsICAgICAgICAgICAgJ29zYnInLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnb3BlbmluZy1hbm9ueW1vdXMtc3ViLWJyYWNlLW9uLW5ldy1saW5lJywgJ2FzYmwnLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnb3BlbmluZy1zdWItYnJhY2Utb24tbmV3LWxpbmUnLCAgICAgICAgICAgJ3NibCcsICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAncGFyZW4tdmVydGljYWwtdGlnaHRuZXNzJywgICAgICAgICAgICAgICAgJ3B2dCcsICAgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3BhcmVuLXZlcnRpY2FsLXRpZ2h0bmVzcy1jbG9zaW5nJywgICAgICAgICdwdnRjJywgICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICd3ZWxkLW5lc3RlZC1jb250YWluZXJzJywgICAgICAgICAgICAgICAgICAnd24nLCAgICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdzcGFjZS1iYWNrc2xhc2gtcXVvdGUnLCAgICAgICAgICAgICAgICAgICAnc2JxJywgICAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAnc3RhY2stY2xvc2luZy1ibG9jay1icmFjZScsICAgICAgICAgICAgICAgJ3NjYmInLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnc3RhY2stY2xvc2luZy1oYXNoLWJyYWNlJywgICAgICAgICAgICAgICAgJ3NjaGInLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnc3RhY2stY2xvc2luZy1wYXJlbicsICAgICAgICAgICAgICAgICAgICAgJ3NjcCcsICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnc3RhY2stY2xvc2luZy1zcXVhcmUtYnJhY2tldCcsICAgICAgICAgICAgJ3Njc2InLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnc3RhY2stb3BlbmluZy1ibG9jay1icmFjZScsICAgICAgICAgICAgICAgJ3NvYmInLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnc3RhY2stb3BlbmluZy1oYXNoLWJyYWNlJywgICAgICAgICAgICAgICAgJ3NvaGInLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnc3RhY2stb3BlbmluZy1wYXJlbicsICAgICAgICAgICAgICAgICAgICAgJ3NvcCcsICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnc3RhY2stb3BlbmluZy1zcXVhcmUtYnJhY2tldCcsICAgICAgICAgICAgJ3Nvc2InLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAndmVydGljYWwtdGlnaHRuZXNzJywgICAgICAgICAgICAgICAgICAgICAgJ3Z0JywgICAgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3ZlcnRpY2FsLXRpZ2h0bmVzcy1jbG9zaW5nJywgICAgICAgICAgICAgICd2dGMnLCAgICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICd3YW50LWJyZWFrLWFmdGVyJywgICAgICAgICAgICAgICAgICAgICAgICAnd2JhJywgICAnPXMnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnd2FudC1icmVhay1iZWZvcmUnLCAgICAgICAgICAgICAgICAgICAgICAgJ3diYicsICAgJz1zJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2JyZWFrLWFmdGVyLWFsbC1vcGVyYXRvcnMnLCAgICAgICAgICAgICAgICdiYWFvJywgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2JyZWFrLWJlZm9yZS1hbGwtb3BlcmF0b3JzJywgICAgICAgICAgICAgICdiYmFvJywgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2tlZXAtaW50ZXJpb3Itc2VtaWNvbG9ucycsICAgICAgICAgICAgICAgICdraXMnLCAgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ29uZS1saW5lLWJsb2NrLXNlbWljb2xvbnMnLCAgICAgICAgICAgICAgICdvbGJzJywgICc9aScgKTsKCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAkY2F0ZWdvcnkgPSA2OyAgICAjIENvbnRyb2xsaW5nIGxpc3QgZm9ybWF0dGluZwogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgJGFkZF9vcHRpb24tPiggJ2JyZWFrLWF0LW9sZC1jb21tYS1icmVha3BvaW50cycsICdib2MnLCAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdjb21tYS1hcnJvdy1icmVha3BvaW50cycsICAgICAgICAnY2FiJywgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ21heGltdW0tZmllbGRzLXBlci10YWJsZScsICAgICAgICdtZnQnLCAnPWknICk7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgJGNhdGVnb3J5ID0gNzsgICAgIyBSZXRhaW5pbmcgb3IgaWdub3JpbmcgZXhpc3RpbmcgbGluZSBicmVha3MKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICRhZGRfb3B0aW9uLT4oICdicmVhay1hdC1vbGQta2V5d29yZC1icmVha3BvaW50cycsICAgJ2JvaycsICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2JyZWFrLWF0LW9sZC1sb2dpY2FsLWJyZWFrcG9pbnRzJywgICAnYm9sJywgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnYnJlYWstYXQtb2xkLW1ldGhvZC1icmVha3BvaW50cycsICAgICdib20nLCAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdicmVhay1hdC1vbGQtdGVybmFyeS1icmVha3BvaW50cycsICAgJ2JvdCcsICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2JyZWFrLWF0LW9sZC1hdHRyaWJ1dGUtYnJlYWtwb2ludHMnLCAnYm9hJywgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnaWdub3JlLW9sZC1icmVha3BvaW50cycsICAgICAgICAgICAgICdpb2InLCAnIScgKTsKCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAkY2F0ZWdvcnkgPSA4OyAgICAjIEJsYW5rIGxpbmUgY29udHJvbAogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgJGFkZF9vcHRpb24tPiggJ2JsYW5rcy1iZWZvcmUtYmxvY2tzJywgICAgICAgICAgICAnYmJiJywgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2JsYW5rcy1iZWZvcmUtY29tbWVudHMnLCAgICAgICAgICAnYmJjJywgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2JsYW5rLWxpbmVzLWJlZm9yZS1zdWJzJywgICAgICAgICAnYmxicycsICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdibGFuay1saW5lcy1iZWZvcmUtcGFja2FnZXMnLCAgICAgJ2JsYnAnLCAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAnbG9uZy1ibG9jay1saW5lLWNvdW50JywgICAgICAgICAgICdsYmwnLCAgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ21heGltdW0tY29uc2VjdXRpdmUtYmxhbmstbGluZXMnLCAnbWJsJywgICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdrZWVwLW9sZC1ibGFuay1saW5lcycsICAgICAgICAgICAgJ2tibCcsICAnPWknICk7CgogICAgJGFkZF9vcHRpb24tPiggJ2tleXdvcmQtZ3JvdXAtYmxhbmtzLWxpc3QnLCAgICAgICAgICdrZ2JsJywgJz1zJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2tleXdvcmQtZ3JvdXAtYmxhbmtzLXNpemUnLCAgICAgICAgICdrZ2JzJywgJz1zJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2tleXdvcmQtZ3JvdXAtYmxhbmtzLXJlcGVhdC1jb3VudCcsICdrZ2JyJywgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2tleXdvcmQtZ3JvdXAtYmxhbmtzLWJlZm9yZScsICAgICAgICdrZ2JiJywgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2tleXdvcmQtZ3JvdXAtYmxhbmtzLWFmdGVyJywgICAgICAgICdrZ2JhJywgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2tleXdvcmQtZ3JvdXAtYmxhbmtzLWluc2lkZScsICAgICAgICdrZ2JpJywgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAna2V5d29yZC1ncm91cC1ibGFua3MtZGVsZXRlJywgICAgICAgJ2tnYmQnLCAnIScgKTsKCiAgICAkYWRkX29wdGlvbi0+KCAnYmxhbmstbGluZXMtYWZ0ZXItb3BlbmluZy1ibG9jaycsICAgICAgICdibGFvJywgICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdibGFuay1saW5lcy1iZWZvcmUtY2xvc2luZy1ibG9jaycsICAgICAgJ2JsYmMnLCAgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2JsYW5rLWxpbmVzLWFmdGVyLW9wZW5pbmctYmxvY2stbGlzdCcsICAnYmxhb2wnLCAnPXMnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnYmxhbmstbGluZXMtYmVmb3JlLWNsb3NpbmctYmxvY2stbGlzdCcsICdibGJjbCcsICc9cycgKTsKCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAkY2F0ZWdvcnkgPSA5OyAgICAjIE90aGVyIGNvbnRyb2xzCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAkYWRkX29wdGlvbi0+KCAnZGVsZXRlLWJsb2NrLWNvbW1lbnRzJywgICAgICAgICdkYmMnLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnZGVsZXRlLWNsb3Npbmctc2lkZS1jb21tZW50cycsICdkY3NjJywgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnZGVsZXRlLXBvZCcsICAgICAgICAgICAgICAgICAgICdkcCcsICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnZGVsZXRlLXNpZGUtY29tbWVudHMnLCAgICAgICAgICdkc2MnLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAndGVlLWJsb2NrLWNvbW1lbnRzJywgICAgICAgICAgICd0YmMnLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAndGVlLXBvZCcsICAgICAgICAgICAgICAgICAgICAgICd0cCcsICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAndGVlLXNpZGUtY29tbWVudHMnLCAgICAgICAgICAgICd0c2MnLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnbG9vay1mb3ItYXV0b2xvYWRlcicsICAgICAgICAgICdsYWwnLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnbG9vay1mb3ItaGFzaC1iYW5nJywgICAgICAgICAgICd4JywgICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnbG9vay1mb3Itc2VsZmxvYWRlcicsICAgICAgICAgICdsc2wnLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAncGFzcy12ZXJzaW9uLWxpbmUnLCAgICAgICAgICAgICdwdmwnLCAgJyEnICk7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgJGNhdGVnb3J5ID0gMTM7ICAgICMgRGVidWdnaW5nCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjICAkYWRkX29wdGlvbi0+KCAnRElBR05PU1RJQ1MnLCAgICAgICAgICAgICAgICAgICAgICdJJywgICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnREVCVUcnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICdEJywgICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnZHVtcC1jdWRkbGVkLWJsb2NrLWxpc3QnLCAgICAgICAgICdkY2JsJywgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnZHVtcC1kZWZhdWx0cycsICAgICAgICAgICAgICAgICAgICdkZGYnLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnZHVtcC1sb25nLW5hbWVzJywgICAgICAgICAgICAgICAgICdkbG4nLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnZHVtcC1vcHRpb25zJywgICAgICAgICAgICAgICAgICAgICdkb3AnLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnZHVtcC1wcm9maWxlJywgICAgICAgICAgICAgICAgICAgICdkcHJvJywgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnZHVtcC1zaG9ydC1uYW1lcycsICAgICAgICAgICAgICAgICdkc24nLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnZHVtcC10b2tlbi10eXBlcycsICAgICAgICAgICAgICAgICdkdHQnLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnZHVtcC13YW50LWxlZnQtc3BhY2UnLCAgICAgICAgICAgICdkd2xzJywgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnZHVtcC13YW50LXJpZ2h0LXNwYWNlJywgICAgICAgICAgICdkd3JzJywgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnZnV6enktbGluZS1sZW5ndGgnLCAgICAgICAgICAgICAgICdmbGwnLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnaGVscCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoJywgICAgJycgKTsKICAgICRhZGRfb3B0aW9uLT4oICdzaG9ydC1jb25jYXRlbmF0aW9uLWl0ZW0tbGVuZ3RoJywgJ3NjbCcsICAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAnc2hvdy1vcHRpb25zJywgICAgICAgICAgICAgICAgICAgICdvcHQnLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAndGltZXN0YW1wJywgICAgICAgICAgICAgICAgICAgICAgICd0cycsICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAndmVyc2lvbicsICAgICAgICAgICAgICAgICAgICAgICAgICd2JywgICAgJycgKTsKICAgICRhZGRfb3B0aW9uLT4oICdtZW1vaXplJywgICAgICAgICAgICAgICAgICAgICAgICAgJ21lbScsICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdmaWxlLXNpemUtb3JkZXInLCAgICAgICAgICAgICAgICAgJ2ZzbycsICAnIScgKTsKCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgIyBUaGUgUGVybDo6VGlkeTo6SHRtbFdyaXRlciB3aWxsIGFkZCBpdHMgb3duIG9wdGlvbnMgdG8gdGhlIHN0cmluZwogICAgUGVybDo6VGlkeTo6SHRtbFdyaXRlci0+bWFrZV9nZXRvcHRfbG9uZ19uYW1lcyggXEBvcHRpb25fc3RyaW5nICk7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBTZXQgY2F0ZWdvcmllcyAxMCwgMTEsIDEyCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIEJhc2VkIG9uIHRoZWlyIGtub3duIG9yZGVyCiAgICAkY2F0ZWdvcnkgPSAxMjsgICAgIyBIVE1MIHByb3BlcnRpZXMKICAgIGZvcmVhY2ggbXkgJG9wdCAoQG9wdGlvbl9zdHJpbmcpIHsKICAgICAgICBteSAkbG9uZ19uYW1lID0gJG9wdDsKICAgICAgICAkbG9uZ19uYW1lID1+IHMvKCF8PS4qfDouKikkLy87CiAgICAgICAgdW5sZXNzICggZGVmaW5lZCggJG9wdGlvbl9jYXRlZ29yeXskbG9uZ19uYW1lfSApICkgewogICAgICAgICAgICBpZiAoICRsb25nX25hbWUgPX4gL15odG1sLWxpbmtlZC8gKSB7CiAgICAgICAgICAgICAgICAkY2F0ZWdvcnkgPSAxMDsgICAgIyBIVE1MIG9wdGlvbnMKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRsb25nX25hbWUgPX4gL15wb2QyaHRtbC8gKSB7CiAgICAgICAgICAgICAgICAkY2F0ZWdvcnkgPSAxMTsgICAgIyBQb2QyaHRtbAogICAgICAgICAgICB9CiAgICAgICAgICAgICRvcHRpb25fY2F0ZWdvcnl7JGxvbmdfbmFtZX0gPSAkY2F0ZWdvcnlfbmFtZVskY2F0ZWdvcnldOwogICAgICAgIH0KICAgIH0KCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIEFzc2lnbiB2YWxpZCByYW5nZXMgdG8gY2VydGFpbiBvcHRpb25zCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIEluIHRoZSBmdXR1cmUsIHRoZXNlIG1heSBiZSB1c2VkIHRvIG1ha2UgcHJlbGltaW5hcnkgY2hlY2tzCiAgICAjIGhhc2gga2V5cyBhcmUgbG9uZyBuYW1lcwogICAgIyBJZiBrZXkgb3IgdmFsdWUgaXMgdW5kZWZpbmVkOgogICAgIyAgIHN0cmluZ3MgbWF5IGhhdmUgYW55IHZhbHVlCiAgICAjICAgaW50ZWdlciByYW5nZXMgYXJlID49MAogICAgIyBJZiB2YWx1ZSBpcyBkZWZpbmVkOgogICAgIyAgIHZhbHVlIGlzIFtxdyhhbnkgdmFsaWQgd29yZHMpXSBmb3Igc3RyaW5ncwogICAgIyAgIHZhbHVlIGlzIFttaW4sIG1heF0gZm9yIGludGVnZXJzCiAgICAjICAgaWYgbWluIGlzIHVuZGVmaW5lZCwgdGhlcmUgaXMgbm8gbG93ZXIgbGltaXQKICAgICMgICBpZiBtYXggaXMgdW5kZWZpbmVkLCB0aGVyZSBpcyBubyB1cHBlciBsaW1pdAogICAgIyBQYXJhbWV0ZXJzIG5vdCBsaXN0ZWQgaGVyZSBoYXZlIGRlZmF1bHRzCiAgICAlb3B0aW9uX3JhbmdlID0gKAogICAgICAgICdmb3JtYXQnICAgICAgICAgICAgID0+IFsgJ3RpZHknLCAnaHRtbCcsICd1c2VyJyBdLAogICAgICAgICdvdXRwdXQtbGluZS1lbmRpbmcnID0+IFsgJ2RvcycsICAnd2luJywgICdtYWMnLCAndW5peCcgXSwKICAgICAgICAnY2hhcmFjdGVyLWVuY29kaW5nJyA9PiBbICdub25lJywgJ3V0ZjgnIF0sCgogICAgICAgICdzcGFjZS1iYWNrc2xhc2gtcXVvdGUnID0+IFsgMCwgMiBdLAoKICAgICAgICAnYmxvY2stYnJhY2UtdGlnaHRuZXNzJyAgICA9PiBbIDAsIDIgXSwKICAgICAgICAnYnJhY2UtdGlnaHRuZXNzJyAgICAgICAgICA9PiBbIDAsIDIgXSwKICAgICAgICAncGFyZW4tdGlnaHRuZXNzJyAgICAgICAgICA9PiBbIDAsIDIgXSwKICAgICAgICAnc3F1YXJlLWJyYWNrZXQtdGlnaHRuZXNzJyA9PiBbIDAsIDIgXSwKCiAgICAgICAgJ2Jsb2NrLWJyYWNlLXZlcnRpY2FsLXRpZ2h0bmVzcycgICAgICAgICAgICA9PiBbIDAsIDIgXSwKICAgICAgICAnYnJhY2UtdmVydGljYWwtdGlnaHRuZXNzJyAgICAgICAgICAgICAgICAgID0+IFsgMCwgMiBdLAogICAgICAgICdicmFjZS12ZXJ0aWNhbC10aWdodG5lc3MtY2xvc2luZycgICAgICAgICAgPT4gWyAwLCAyIF0sCiAgICAgICAgJ3BhcmVuLXZlcnRpY2FsLXRpZ2h0bmVzcycgICAgICAgICAgICAgICAgICA9PiBbIDAsIDIgXSwKICAgICAgICAncGFyZW4tdmVydGljYWwtdGlnaHRuZXNzLWNsb3NpbmcnICAgICAgICAgID0+IFsgMCwgMiBdLAogICAgICAgICdzcXVhcmUtYnJhY2tldC12ZXJ0aWNhbC10aWdodG5lc3MnICAgICAgICAgPT4gWyAwLCAyIF0sCiAgICAgICAgJ3NxdWFyZS1icmFja2V0LXZlcnRpY2FsLXRpZ2h0bmVzcy1jbG9zaW5nJyA9PiBbIDAsIDIgXSwKICAgICAgICAndmVydGljYWwtdGlnaHRuZXNzJyAgICAgICAgICAgICAgICAgICAgICAgID0+IFsgMCwgMiBdLAogICAgICAgICd2ZXJ0aWNhbC10aWdodG5lc3MtY2xvc2luZycgICAgICAgICAgICAgICAgPT4gWyAwLCAyIF0sCgogICAgICAgICdjbG9zaW5nLWJyYWNlLWluZGVudGF0aW9uJyAgICAgICAgICA9PiBbIDAsIDMgXSwKICAgICAgICAnY2xvc2luZy1wYXJlbi1pbmRlbnRhdGlvbicgICAgICAgICAgPT4gWyAwLCAzIF0sCiAgICAgICAgJ2Nsb3Npbmctc3F1YXJlLWJyYWNrZXQtaW5kZW50YXRpb24nID0+IFsgMCwgMyBdLAogICAgICAgICdjbG9zaW5nLXRva2VuLWluZGVudGF0aW9uJyAgICAgICAgICA9PiBbIDAsIDMgXSwKCiAgICAgICAgJ2Nsb3Npbmctc2lkZS1jb21tZW50LWVsc2UtZmxhZycgPT4gWyAwLCAyIF0sCiAgICAgICAgJ2NvbW1hLWFycm93LWJyZWFrcG9pbnRzJyAgICAgICAgPT4gWyAwLCA1IF0sCgogICAgICAgICdrZXl3b3JkLWdyb3VwLWJsYW5rcy1iZWZvcmUnID0+IFsgMCwgMiBdLAogICAgICAgICdrZXl3b3JkLWdyb3VwLWJsYW5rcy1hZnRlcicgID0+IFsgMCwgMiBdLAoKICAgICAgICAnc3BhY2UtcHJvdG90eXBlLXBhcmVuJyA9PiBbIDAsIDIgXSwKICAgICk7CgogICAgIyBOb3RlOiB3ZSBjb3VsZCBhY3R1YWxseSBhbGxvdyBuZWdhdGl2ZSBjaSBpZiBzb21lb25lIHJlYWxseSB3YW50cyBpdDoKICAgICMgJG9wdGlvbl9yYW5nZXsnY29udGludWF0aW9uLWluZGVudGF0aW9uJ30gPSBbIHVuZGVmLCB1bmRlZiBdOwoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgQXNzaWduIGRlZmF1bHQgdmFsdWVzIHRvIHRoZSBhYm92ZSBvcHRpb25zIGhlcmUsIGV4Y2VwdAogICAgIyBmb3IgJ291dGZpbGUnIGFuZCAnaGVscCcuCiAgICAjIFRoZXNlIHNldHRpbmdzIHNob3VsZCBhcHByb3hpbWF0ZSB0aGUgcGVybHN0eWxlKDEpIHN1Z2dlc3Rpb25zLgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgbXkgQGRlZmF1bHRzID0gcXcoCiAgICAgIGFkZC1uZXdsaW5lcwogICAgICBhZGQtc2VtaWNvbG9ucwogICAgICBhZGQtd2hpdGVzcGFjZQogICAgICBibGFua3MtYmVmb3JlLWJsb2NrcwogICAgICBibGFua3MtYmVmb3JlLWNvbW1lbnRzCiAgICAgIGJsYW5rLWxpbmVzLWJlZm9yZS1zdWJzPTEKICAgICAgYmxhbmstbGluZXMtYmVmb3JlLXBhY2thZ2VzPTEKCiAgICAgIGtleXdvcmQtZ3JvdXAtYmxhbmtzLXNpemU9NQogICAgICBrZXl3b3JkLWdyb3VwLWJsYW5rcy1yZXBlYXQtY291bnQ9MAogICAgICBrZXl3b3JkLWdyb3VwLWJsYW5rcy1iZWZvcmU9MQogICAgICBrZXl3b3JkLWdyb3VwLWJsYW5rcy1hZnRlcj0xCiAgICAgIG5va2V5d29yZC1ncm91cC1ibGFua3MtaW5zaWRlCiAgICAgIG5va2V5d29yZC1ncm91cC1ibGFua3MtZGVsZXRlCgogICAgICBibG9jay1icmFjZS10aWdodG5lc3M9MAogICAgICBibG9jay1icmFjZS12ZXJ0aWNhbC10aWdodG5lc3M9MAogICAgICBicmFjZS10aWdodG5lc3M9MQogICAgICBicmFjZS12ZXJ0aWNhbC10aWdodG5lc3MtY2xvc2luZz0wCiAgICAgIGJyYWNlLXZlcnRpY2FsLXRpZ2h0bmVzcz0wCiAgICAgIGJyZWFrLWF0LW9sZC1sb2dpY2FsLWJyZWFrcG9pbnRzCiAgICAgIGJyZWFrLWF0LW9sZC10ZXJuYXJ5LWJyZWFrcG9pbnRzCiAgICAgIGJyZWFrLWF0LW9sZC1hdHRyaWJ1dGUtYnJlYWtwb2ludHMKICAgICAgYnJlYWstYXQtb2xkLWtleXdvcmQtYnJlYWtwb2ludHMKICAgICAgY29tbWEtYXJyb3ctYnJlYWtwb2ludHM9NQogICAgICBub2NoZWNrLXN5bnRheAogICAgICBjbG9zaW5nLXNpZGUtY29tbWVudC1pbnRlcnZhbD02CiAgICAgIGNsb3Npbmctc2lkZS1jb21tZW50LW1heGltdW0tdGV4dD0yMAogICAgICBjbG9zaW5nLXNpZGUtY29tbWVudC1lbHNlLWZsYWc9MAogICAgICBjbG9zaW5nLXNpZGUtY29tbWVudHMtYmFsYW5jZWQKICAgICAgY2xvc2luZy1wYXJlbi1pbmRlbnRhdGlvbj0wCiAgICAgIGNsb3NpbmctYnJhY2UtaW5kZW50YXRpb249MAogICAgICBjbG9zaW5nLXNxdWFyZS1icmFja2V0LWluZGVudGF0aW9uPTAKICAgICAgY29udGludWF0aW9uLWluZGVudGF0aW9uPTIKICAgICAgY3VkZGxlZC1icmVhay1vcHRpb249MQogICAgICBkZWxldGUtb2xkLW5ld2xpbmVzCiAgICAgIGRlbGV0ZS1zZW1pY29sb25zCiAgICAgIGV4dGVuZGVkLXN5bnRheAogICAgICBmdXp6eS1saW5lLWxlbmd0aAogICAgICBoYW5naW5nLXNpZGUtY29tbWVudHMKICAgICAgaW5kZW50LWJsb2NrLWNvbW1lbnRzCiAgICAgIGluZGVudC1jb2x1bW5zPTQKICAgICAgaXRlcmF0aW9ucz0xCiAgICAgIGtlZXAtb2xkLWJsYW5rLWxpbmVzPTEKICAgICAgbG9uZy1ibG9jay1saW5lLWNvdW50PTgKICAgICAgbG9vay1mb3ItYXV0b2xvYWRlcgogICAgICBsb29rLWZvci1zZWxmbG9hZGVyCiAgICAgIG1heGltdW0tY29uc2VjdXRpdmUtYmxhbmstbGluZXM9MQogICAgICBtYXhpbXVtLWZpZWxkcy1wZXItdGFibGU9MAogICAgICBtYXhpbXVtLWxpbmUtbGVuZ3RoPTgwCiAgICAgIG1lbW9pemUKICAgICAgbWluaW11bS1zcGFjZS10by1jb21tZW50PTQKICAgICAgbm9icmFjZS1sZWZ0LWFuZC1pbmRlbnQKICAgICAgbm9jdWRkbGVkLWVsc2UKICAgICAgbm9kZWxldGUtb2xkLXdoaXRlc3BhY2UKICAgICAgbm9odG1sCiAgICAgIG5vbG9nZmlsZQogICAgICBub3F1aWV0CiAgICAgIG5vc2hvdy1vcHRpb25zCiAgICAgIG5vc3RhdGljLXNpZGUtY29tbWVudHMKICAgICAgbm90YWJzCiAgICAgIG5vd2FybmluZy1vdXRwdXQKICAgICAgY2hhcmFjdGVyLWVuY29kaW5nPW5vbmUKICAgICAgb25lLWxpbmUtYmxvY2stc2VtaWNvbG9ucz0xCiAgICAgIG91dGRlbnQtbGFiZWxzCiAgICAgIG91dGRlbnQtbG9uZy1xdW90ZXMKICAgICAgb3V0ZGVudC1sb25nLWNvbW1lbnRzCiAgICAgIHBhcmVuLXRpZ2h0bmVzcz0xCiAgICAgIHBhcmVuLXZlcnRpY2FsLXRpZ2h0bmVzcy1jbG9zaW5nPTAKICAgICAgcGFyZW4tdmVydGljYWwtdGlnaHRuZXNzPTAKICAgICAgcGFzcy12ZXJzaW9uLWxpbmUKICAgICAgbm93ZWxkLW5lc3RlZC1jb250YWluZXJzCiAgICAgIHJlY29tYmluZQogICAgICB2YWxpZ24KICAgICAgc2hvcnQtY29uY2F0ZW5hdGlvbi1pdGVtLWxlbmd0aD04CiAgICAgIHNwYWNlLWZvci1zZW1pY29sb24KICAgICAgc3BhY2UtYmFja3NsYXNoLXF1b3RlPTEKICAgICAgc3BhY2UtcHJvdG90eXBlLXBhcmVuPTEKICAgICAgc3F1YXJlLWJyYWNrZXQtdGlnaHRuZXNzPTEKICAgICAgc3F1YXJlLWJyYWNrZXQtdmVydGljYWwtdGlnaHRuZXNzLWNsb3Npbmc9MAogICAgICBzcXVhcmUtYnJhY2tldC12ZXJ0aWNhbC10aWdodG5lc3M9MAogICAgICBzdGF0aWMtYmxvY2stY29tbWVudHMKICAgICAgdGltZXN0YW1wCiAgICAgIHRyaW0tcXcKICAgICAgZm9ybWF0PXRpZHkKICAgICAgYmFja3VwLWZpbGUtZXh0ZW5zaW9uPWJhawogICAgICBmb3JtYXQtc2tpcHBpbmcKICAgICAgZGVmYXVsdC10YWJzaXplPTgKCiAgICAgIHBvZDJodG1sCiAgICAgIGh0bWwtdGFibGUtb2YtY29udGVudHMKICAgICAgaHRtbC1lbnRpdGllcwogICAgKTsKCiAgICBwdXNoIEBkZWZhdWx0cywgInBlcmwtc3ludGF4LWNoZWNrLWZsYWdzPS1jIC1UIjsKCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIERlZmluZSBhYmJyZXZpYXRpb25zIHdoaWNoIHdpbGwgYmUgZXhwYW5kZWQgaW50byB0aGUgYWJvdmUgcHJpbWl0aXZlcy4KICAgICMgVGhlc2UgbWF5IGJlIGRlZmluZWQgcmVjdXJzaXZlbHkuCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAlZXhwYW5zaW9uID0gKAogICAgICAgICVleHBhbnNpb24sCiAgICAgICAgJ2ZyZWV6ZS1uZXdsaW5lcycgICA9PiBbcXcobm9hZGQtbmV3bGluZXMgbm9kZWxldGUtb2xkLW5ld2xpbmVzKV0sCiAgICAgICAgJ2ZubCcgICAgICAgICAgICAgICA9PiBbcXcoZnJlZXplLW5ld2xpbmVzKV0sCiAgICAgICAgJ2ZyZWV6ZS13aGl0ZXNwYWNlJyA9PiBbcXcobm9hZGQtd2hpdGVzcGFjZSBub2RlbGV0ZS1vbGQtd2hpdGVzcGFjZSldLAogICAgICAgICdmd3MnICAgICAgICAgICAgICAgPT4gW3F3KGZyZWV6ZS13aGl0ZXNwYWNlKV0sCiAgICAgICAgJ2ZyZWV6ZS1ibGFuay1saW5lcycgPT4KICAgICAgICAgIFtxdyhtYXhpbXVtLWNvbnNlY3V0aXZlLWJsYW5rLWxpbmVzPTAga2VlcC1vbGQtYmxhbmstbGluZXM9MildLAogICAgICAgICdmYmwnICAgICAgICAgICAgICAgID0+IFtxdyhmcmVlemUtYmxhbmstbGluZXMpXSwKICAgICAgICAnaW5kZW50LW9ubHknICAgICAgICA9PiBbcXcoZnJlZXplLW5ld2xpbmVzIGZyZWV6ZS13aGl0ZXNwYWNlKV0sCiAgICAgICAgJ291dGRlbnQtbG9uZy1saW5lcycgPT4gW3F3KG91dGRlbnQtbG9uZy1xdW90ZXMgb3V0ZGVudC1sb25nLWNvbW1lbnRzKV0sCiAgICAgICAgJ25vb3V0ZGVudC1sb25nLWxpbmVzJyA9PgogICAgICAgICAgW3F3KG5vb3V0ZGVudC1sb25nLXF1b3RlcyBub291dGRlbnQtbG9uZy1jb21tZW50cyldLAogICAgICAgICdub2xsJyA9PiBbcXcobm9vdXRkZW50LWxvbmctbGluZXMpXSwKICAgICAgICAnaW8nICAgPT4gW3F3KGluZGVudC1vbmx5KV0sCiAgICAgICAgJ2RlbGV0ZS1hbGwtY29tbWVudHMnID0+CiAgICAgICAgICBbcXcoZGVsZXRlLWJsb2NrLWNvbW1lbnRzIGRlbGV0ZS1zaWRlLWNvbW1lbnRzIGRlbGV0ZS1wb2QpXSwKICAgICAgICAnbm9kZWxldGUtYWxsLWNvbW1lbnRzJyA9PgogICAgICAgICAgW3F3KG5vZGVsZXRlLWJsb2NrLWNvbW1lbnRzIG5vZGVsZXRlLXNpZGUtY29tbWVudHMgbm9kZWxldGUtcG9kKV0sCiAgICAgICAgJ2RhYycgID0+IFtxdyhkZWxldGUtYWxsLWNvbW1lbnRzKV0sCiAgICAgICAgJ25kYWMnID0+IFtxdyhub2RlbGV0ZS1hbGwtY29tbWVudHMpXSwKICAgICAgICAnZ251JyAgPT4gW3F3KGdudS1zdHlsZSldLAogICAgICAgICdwYnAnICA9PiBbcXcocGVybC1iZXN0LXByYWN0aWNlcyldLAogICAgICAgICd0ZWUtYWxsLWNvbW1lbnRzJyA9PgogICAgICAgICAgW3F3KHRlZS1ibG9jay1jb21tZW50cyB0ZWUtc2lkZS1jb21tZW50cyB0ZWUtcG9kKV0sCiAgICAgICAgJ25vdGVlLWFsbC1jb21tZW50cycgPT4KICAgICAgICAgIFtxdyhub3RlZS1ibG9jay1jb21tZW50cyBub3RlZS1zaWRlLWNvbW1lbnRzIG5vdGVlLXBvZCldLAogICAgICAgICd0YWMnICAgPT4gW3F3KHRlZS1hbGwtY29tbWVudHMpXSwKICAgICAgICAnbnRhYycgID0+IFtxdyhub3RlZS1hbGwtY29tbWVudHMpXSwKICAgICAgICAnaHRtbCcgID0+IFtxdyhmb3JtYXQ9aHRtbCldLAogICAgICAgICduaHRtbCcgPT4gW3F3KGZvcm1hdD10aWR5KV0sCiAgICAgICAgJ3RpZHknICA9PiBbcXcoZm9ybWF0PXRpZHkpXSwKCiAgICAgICAgIyAtY2IgaXMgbm93IGEgc3lub255bSBmb3IgLWNlCiAgICAgICAgJ2NiJyAgICAgICAgICAgICA9PiBbcXcoY3VkZGxlZC1lbHNlKV0sCiAgICAgICAgJ2N1ZGRsZWQtYmxvY2tzJyA9PiBbcXcoY3VkZGxlZC1lbHNlKV0sCgogICAgICAgICd1dGY4JyA9PiBbcXcoY2hhcmFjdGVyLWVuY29kaW5nPXV0ZjgpXSwKICAgICAgICAnVVRGOCcgPT4gW3F3KGNoYXJhY3Rlci1lbmNvZGluZz11dGY4KV0sCgogICAgICAgICdzd2FsbG93LW9wdGlvbmFsLWJsYW5rLWxpbmVzJyAgID0+IFtxdyhrYmw9MCldLAogICAgICAgICdub3N3YWxsb3ctb3B0aW9uYWwtYmxhbmstbGluZXMnID0+IFtxdyhrYmw9MSldLAogICAgICAgICdzb2InICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFtxdyhrYmw9MCldLAogICAgICAgICduc29iJyAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFtxdyhrYmw9MSldLAoKICAgICAgICAnYnJlYWstYWZ0ZXItY29tbWEtYXJyb3dzJyAgID0+IFtxdyhjYWI9MCldLAogICAgICAgICdub2JyZWFrLWFmdGVyLWNvbW1hLWFycm93cycgPT4gW3F3KGNhYj0xKV0sCiAgICAgICAgJ2JhYScgICAgICAgICAgICAgICAgICAgICAgICA9PiBbcXcoY2FiPTApXSwKICAgICAgICAnbmJhYScgICAgICAgICAgICAgICAgICAgICAgID0+IFtxdyhjYWI9MSldLAoKICAgICAgICAnYmxhbmtzLWJlZm9yZS1zdWJzJyAgID0+IFtxdyhibGJzPTEgYmxicD0xKV0sCiAgICAgICAgJ2JicycgICAgICAgICAgICAgICAgICA9PiBbcXcoYmxicz0xIGJsYnA9MSldLAogICAgICAgICdub2JsYW5rcy1iZWZvcmUtc3VicycgPT4gW3F3KGJsYnM9MCBibGJwPTApXSwKICAgICAgICAnbmJicycgICAgICAgICAgICAgICAgID0+IFtxdyhibGJzPTAgYmxicD0wKV0sCgogICAgICAgICdrZXl3b3JkLWdyb3VwLWJsYW5rcycgICA9PiBbcXcoa2diYj0yIGtnYmkga2diYT0yKV0sCiAgICAgICAgJ2tnYicgICAgICAgICAgICAgICAgICAgID0+IFtxdyhrZ2JiPTIga2diaSBrZ2JhPTIpXSwKICAgICAgICAnbm9rZXl3b3JkLWdyb3VwLWJsYW5rcycgPT4gW3F3KGtnYmI9MSBua2diaSBrZ2JhPTEpXSwKICAgICAgICAnbmtnYicgICAgICAgICAgICAgICAgICAgPT4gW3F3KGtnYmI9MSBua2diaSBrZ2JhPTEpXSwKCiAgICAgICAgJ2JyZWFrLWF0LW9sZC10cmluYXJ5LWJyZWFrcG9pbnRzJyA9PiBbcXcoYm90KV0sCgogICAgICAgICdjdGk9MCcgPT4gW3F3KGNwaT0wIGNiaT0wIGNzYmk9MCldLAogICAgICAgICdjdGk9MScgPT4gW3F3KGNwaT0xIGNiaT0xIGNzYmk9MSldLAogICAgICAgICdjdGk9MicgPT4gW3F3KGNwaT0yIGNiaT0yIGNzYmk9MildLAogICAgICAgICdpY3AnICAgPT4gW3F3KGNwaT0yIGNiaT0yIGNzYmk9MildLAogICAgICAgICduaWNwJyAgPT4gW3F3KGNwaT0wIGNiaT0wIGNzYmk9MCldLAoKICAgICAgICAnY2xvc2luZy10b2tlbi1pbmRlbnRhdGlvbj0wJyA9PiBbcXcoY3BpPTAgY2JpPTAgY3NiaT0wKV0sCiAgICAgICAgJ2Nsb3NpbmctdG9rZW4taW5kZW50YXRpb249MScgPT4gW3F3KGNwaT0xIGNiaT0xIGNzYmk9MSldLAogICAgICAgICdjbG9zaW5nLXRva2VuLWluZGVudGF0aW9uPTInID0+IFtxdyhjcGk9MiBjYmk9MiBjc2JpPTIpXSwKICAgICAgICAnaW5kZW50LWNsb3NpbmctcGFyZW4nICAgICAgICA9PiBbcXcoY3BpPTIgY2JpPTIgY3NiaT0yKV0sCiAgICAgICAgJ25vaW5kZW50LWNsb3NpbmctcGFyZW4nICAgICAgPT4gW3F3KGNwaT0wIGNiaT0wIGNzYmk9MCldLAoKICAgICAgICAndnQ9MCcgPT4gW3F3KHB2dD0wIGJ2dD0wIHNidnQ9MCldLAogICAgICAgICd2dD0xJyA9PiBbcXcocHZ0PTEgYnZ0PTEgc2J2dD0xKV0sCiAgICAgICAgJ3Z0PTInID0+IFtxdyhwdnQ9MiBidnQ9MiBzYnZ0PTIpXSwKCiAgICAgICAgJ3ZlcnRpY2FsLXRpZ2h0bmVzcz0wJyA9PiBbcXcocHZ0PTAgYnZ0PTAgc2J2dD0wKV0sCiAgICAgICAgJ3ZlcnRpY2FsLXRpZ2h0bmVzcz0xJyA9PiBbcXcocHZ0PTEgYnZ0PTEgc2J2dD0xKV0sCiAgICAgICAgJ3ZlcnRpY2FsLXRpZ2h0bmVzcz0yJyA9PiBbcXcocHZ0PTIgYnZ0PTIgc2J2dD0yKV0sCgogICAgICAgICd2dGM9MCcgPT4gW3F3KHB2dGM9MCBidnRjPTAgc2J2dGM9MCldLAogICAgICAgICd2dGM9MScgPT4gW3F3KHB2dGM9MSBidnRjPTEgc2J2dGM9MSldLAogICAgICAgICd2dGM9MicgPT4gW3F3KHB2dGM9MiBidnRjPTIgc2J2dGM9MildLAoKICAgICAgICAndmVydGljYWwtdGlnaHRuZXNzLWNsb3Npbmc9MCcgPT4gW3F3KHB2dGM9MCBidnRjPTAgc2J2dGM9MCldLAogICAgICAgICd2ZXJ0aWNhbC10aWdodG5lc3MtY2xvc2luZz0xJyA9PiBbcXcocHZ0Yz0xIGJ2dGM9MSBzYnZ0Yz0xKV0sCiAgICAgICAgJ3ZlcnRpY2FsLXRpZ2h0bmVzcy1jbG9zaW5nPTInID0+IFtxdyhwdnRjPTIgYnZ0Yz0yIHNidnRjPTIpXSwKCiAgICAgICAgJ290cicgICAgICAgICAgICAgICAgICAgPT4gW3F3KG9wciBvaGJyIG9zYnIpXSwKICAgICAgICAnb3BlbmluZy10b2tlbi1yaWdodCcgICA9PiBbcXcob3ByIG9oYnIgb3NicildLAogICAgICAgICdub3RyJyAgICAgICAgICAgICAgICAgID0+IFtxdyhub3ByIG5vaGJyIG5vc2JyKV0sCiAgICAgICAgJ25vb3BlbmluZy10b2tlbi1yaWdodCcgPT4gW3F3KG5vcHIgbm9oYnIgbm9zYnIpXSwKCiAgICAgICAgJ3NvdCcgICAgICAgICAgICAgICAgICAgID0+IFtxdyhzb3Agc29oYiBzb3NiKV0sCiAgICAgICAgJ25zb3QnICAgICAgICAgICAgICAgICAgID0+IFtxdyhuc29wIG5zb2hiIG5zb3NiKV0sCiAgICAgICAgJ3N0YWNrLW9wZW5pbmctdG9rZW5zJyAgID0+IFtxdyhzb3Agc29oYiBzb3NiKV0sCiAgICAgICAgJ25vc3RhY2stb3BlbmluZy10b2tlbnMnID0+IFtxdyhuc29wIG5zb2hiIG5zb3NiKV0sCgogICAgICAgICdzY3QnICAgICAgICAgICAgICAgICAgICA9PiBbcXcoc2NwIHNjaGIgc2NzYildLAogICAgICAgICdzdGFjay1jbG9zaW5nLXRva2VucycgICA9PiA9PiBbcXcoc2NwIHNjaGIgc2NzYildLAogICAgICAgICduc2N0JyAgICAgICAgICAgICAgICAgICA9PiBbcXcobnNjcCBuc2NoYiBuc2NzYildLAogICAgICAgICdub3N0YWNrLWNsb3NpbmctdG9rZW5zJyA9PiBbcXcobnNjcCBuc2NoYiBuc2NzYildLAoKICAgICAgICAnc2FjJyAgICAgICAgICAgICAgICAgICAgPT4gW3F3KHNvdCBzY3QpXSwKICAgICAgICAnbnNhYycgICAgICAgICAgICAgICAgICAgPT4gW3F3KG5zb3QgbnNjdCldLAogICAgICAgICdzdGFjay1hbGwtY29udGFpbmVycycgICA9PiBbcXcoc290IHNjdCldLAogICAgICAgICdub3N0YWNrLWFsbC1jb250YWluZXJzJyA9PiBbcXcobnNvdCBuc2N0KV0sCgogICAgICAgICdhY3Q9MCcgICAgICAgICAgICAgICAgICAgICAgPT4gW3F3KHB0PTAgc2J0PTAgYnQ9MCBiYnQ9MCldLAogICAgICAgICdhY3Q9MScgICAgICAgICAgICAgICAgICAgICAgPT4gW3F3KHB0PTEgc2J0PTEgYnQ9MSBiYnQ9MSldLAogICAgICAgICdhY3Q9MicgICAgICAgICAgICAgICAgICAgICAgPT4gW3F3KHB0PTIgc2J0PTIgYnQ9MiBiYnQ9MildLAogICAgICAgICdhbGwtY29udGFpbmVycy10aWdodG5lc3M9MCcgPT4gW3F3KHB0PTAgc2J0PTAgYnQ9MCBiYnQ9MCldLAogICAgICAgICdhbGwtY29udGFpbmVycy10aWdodG5lc3M9MScgPT4gW3F3KHB0PTEgc2J0PTEgYnQ9MSBiYnQ9MSldLAogICAgICAgICdhbGwtY29udGFpbmVycy10aWdodG5lc3M9MicgPT4gW3F3KHB0PTIgc2J0PTIgYnQ9MiBiYnQ9MildLAoKICAgICAgICAnc3RhY2stb3BlbmluZy1ibG9jay1icmFjZScgICA9PiBbcXcoYmJ2dD0yIGJidnRsPSopXSwKICAgICAgICAnc29iYicgICAgICAgICAgICAgICAgICAgICAgICA9PiBbcXcoYmJ2dD0yIGJidnRsPSopXSwKICAgICAgICAnbm9zdGFjay1vcGVuaW5nLWJsb2NrLWJyYWNlJyA9PiBbcXcoYmJ2dD0wKV0sCiAgICAgICAgJ25zb2JiJyAgICAgICAgICAgICAgICAgICAgICAgPT4gW3F3KGJidnQ9MCldLAoKICAgICAgICAnY29udmVyZ2UnICAgPT4gW3F3KGl0PTQpXSwKICAgICAgICAnbm9jb252ZXJnZScgPT4gW3F3KGl0PTEpXSwKICAgICAgICAnY29udicgICAgICAgPT4gW3F3KGl0PTQpXSwKICAgICAgICAnbmNvbnYnICAgICAgPT4gW3F3KGl0PTEpXSwKCiAgICAgICAgIyAnbWFuZ2xlJyBvcmlnaW5hbGx5IGRlbGV0ZWQgcG9kIGFuZCBjb21tZW50cywgYnV0IHRvIGtlZXAgaXQKICAgICAgICAjIHJldmVyc2libGUsIGl0IG5vIGxvbmdlciBkb2VzLiAgQnV0IGlmIHlvdSByZWFsbHkgd2FudCB0bwogICAgICAgICMgZGVsZXRlIHRoZW0sIGp1c3QgdXNlOgogICAgICAgICMgICAtbWFuZ2xlIC1kYWMKCiAgICAgICAgIyBBbiBpbnRlcmVzdGluZyB1c2UgZm9yICdtYW5nbGUnIGlzIHRvIGRvIHRoaXM6CiAgICAgICAgIyAgICBwZXJsdGlkeSAtbWFuZ2xlIG15ZmlsZS5wbCAtc3QgfCBwZXJsdGlkeSAtbyBteWZpbGUucGwubmV3CiAgICAgICAgIyB3aGljaCB3aWxsIGZvcm0gYXMgbWFueSBvbmUtbGluZSBibG9ja3MgYXMgcG9zc2libGUKCiAgICAgICAgJ21hbmdsZScgPT4gWwogICAgICAgICAgICBxdygKICAgICAgICAgICAgICBjaGVjay1zeW50YXgKICAgICAgICAgICAgICBrZWVwLW9sZC1ibGFuay1saW5lcz0wCiAgICAgICAgICAgICAgZGVsZXRlLW9sZC1uZXdsaW5lcwogICAgICAgICAgICAgIGRlbGV0ZS1vbGQtd2hpdGVzcGFjZQogICAgICAgICAgICAgIGRlbGV0ZS1zZW1pY29sb25zCiAgICAgICAgICAgICAgaW5kZW50LWNvbHVtbnM9MAogICAgICAgICAgICAgIG1heGltdW0tY29uc2VjdXRpdmUtYmxhbmstbGluZXM9MAogICAgICAgICAgICAgIG1heGltdW0tbGluZS1sZW5ndGg9MTAwMDAwCiAgICAgICAgICAgICAgbm9hZGQtbmV3bGluZXMKICAgICAgICAgICAgICBub2FkZC1zZW1pY29sb25zCiAgICAgICAgICAgICAgbm9hZGQtd2hpdGVzcGFjZQogICAgICAgICAgICAgIG5vYmxhbmtzLWJlZm9yZS1ibG9ja3MKICAgICAgICAgICAgICBibGFuay1saW5lcy1iZWZvcmUtc3Vicz0wCiAgICAgICAgICAgICAgYmxhbmstbGluZXMtYmVmb3JlLXBhY2thZ2VzPTAKICAgICAgICAgICAgICBub3RhYnMKICAgICAgICAgICAgICApCiAgICAgICAgXSwKCiAgICAgICAgIyAnZXh0cnVkZScgb3JpZ2luYWxseSBkZWxldGVkIHBvZCBhbmQgY29tbWVudHMsIGJ1dCB0byBrZWVwIGl0CiAgICAgICAgIyByZXZlcnNpYmxlLCBpdCBubyBsb25nZXIgZG9lcy4gIEJ1dCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8KICAgICAgICAjIGRlbGV0ZSB0aGVtLCBqdXN0IHVzZQogICAgICAgICMgICBleHRydWRlIC1kYWMKICAgICAgICAjCiAgICAgICAgIyBBbiBpbnRlcmVzdGluZyB1c2UgZm9yICdleHRydWRlJyBpcyB0byBkbyB0aGlzOgogICAgICAgICMgICAgcGVybHRpZHkgLWV4dHJ1ZGUgbXlmaWxlLnBsIC1zdCB8IHBlcmx0aWR5IC1vIG15ZmlsZS5wbC5uZXcKICAgICAgICAjIHdoaWNoIHdpbGwgYnJlYWsgdXAgYWxsIG9uZS1saW5lIGJsb2Nrcy4KICAgICAgICAjCiAgICAgICAgIyBSZW1vdmVkICdjaGVjay1zeW50YXgnIG9wdGlvbiwgd2hpY2ggaXMgdW5zYWZlIGJlY2F1c2UgaXQgbWF5IGV4ZWN1dGUKICAgICAgICAjIGNvZGUgaW4gQkVHSU4gYmxvY2tzLiAgRXhhbXBsZSAnTW9vc2UvZGVidWdnZXItZHVja190eXBlLnQnLgoKICAgICAgICAnZXh0cnVkZScgPT4gWwogICAgICAgICAgICBxdygKICAgICAgICAgICAgICBjaT0wCiAgICAgICAgICAgICAgZGVsZXRlLW9sZC1uZXdsaW5lcwogICAgICAgICAgICAgIGRlbGV0ZS1vbGQtd2hpdGVzcGFjZQogICAgICAgICAgICAgIGRlbGV0ZS1zZW1pY29sb25zCiAgICAgICAgICAgICAgaW5kZW50LWNvbHVtbnM9MAogICAgICAgICAgICAgIG1heGltdW0tY29uc2VjdXRpdmUtYmxhbmstbGluZXM9MAogICAgICAgICAgICAgIG1heGltdW0tbGluZS1sZW5ndGg9MQogICAgICAgICAgICAgIG5vYWRkLXNlbWljb2xvbnMKICAgICAgICAgICAgICBub2FkZC13aGl0ZXNwYWNlCiAgICAgICAgICAgICAgbm9ibGFua3MtYmVmb3JlLWJsb2NrcwogICAgICAgICAgICAgIGJsYW5rLWxpbmVzLWJlZm9yZS1zdWJzPTAKICAgICAgICAgICAgICBibGFuay1saW5lcy1iZWZvcmUtcGFja2FnZXM9MAogICAgICAgICAgICAgIG5vZnV6enktbGluZS1sZW5ndGgKICAgICAgICAgICAgICBub3RhYnMKICAgICAgICAgICAgICBub3JlY29tYmluZQogICAgICAgICAgICAgICkKICAgICAgICBdLAoKICAgICAgICAjIHRoaXMgc3R5bGUgdHJpZXMgdG8gZm9sbG93IHRoZSBHTlUgQ29kaW5nIFN0YW5kYXJkcyAod2hpY2ggZG8KICAgICAgICAjIG5vdCByZWFsbHkgYXBwbHkgdG8gcGVybCBidXQgd2hpY2ggYXJlIGZvbGxvd2VkIGJ5IHNvbWUgcGVybAogICAgICAgICMgcHJvZ3JhbW1lcnMpLgogICAgICAgICdnbnUtc3R5bGUnID0+IFsKICAgICAgICAgICAgcXcoCiAgICAgICAgICAgICAgbHAgYmwgbm9sbCBwdD0yIGJ0PTIgc2J0PTIgY3BpPTEgY3NiaT0xIGNiaT0xCiAgICAgICAgICAgICAgKQogICAgICAgIF0sCgogICAgICAgICMgU3R5bGUgc3VnZ2VzdGVkIGluIERhbWlhbiBDb253YXkncyBQZXJsIEJlc3QgUHJhY3RpY2VzCiAgICAgICAgJ3BlcmwtYmVzdC1wcmFjdGljZXMnID0+IFsKICAgICAgICAgICAgcXcobD03OCBpPTQgY2k9NCBzdCBzZSB2dD0yIGN0aT0wIHB0PTEgYnQ9MSBzYnQ9MSBiYnQ9MSBuc2ZzIG5vbHEpLApxKHdiYj0lICsgLSAqIC8geCAhPSA9PSA+PSA8PSA9fiAhfiA8ID4gfCAmID0gKio9ICs9ICo9ICY9IDw8PSAmJj0gLT0gLz0gfD0gPj49IHx8PSAvLz0gLj0gJT0gXj0geD0pCiAgICAgICAgXSwKCiAgICAgICAgIyBBZGRpdGlvbmFsIHN0eWxlcyBjYW4gYmUgYWRkZWQgaGVyZQogICAgKTsKCiAgICBQZXJsOjpUaWR5OjpIdG1sV3JpdGVyLT5tYWtlX2FiYnJldmlhdGVkX25hbWVzKCBcJWV4cGFuc2lvbiApOwoKICAgICMgVW5jb21tZW50IG5leHQgbGluZSB0byBkdW1wIGFsbCBleHBhbnNpb25zIGZvciBkZWJ1Z2dpbmc6CiAgICAjIGR1bXBfc2hvcnRfbmFtZXMoXCVleHBhbnNpb24pOwogICAgcmV0dXJuICgKICAgICAgICBcQG9wdGlvbl9zdHJpbmcsICAgXEBkZWZhdWx0cywgXCVleHBhbnNpb24sCiAgICAgICAgXCVvcHRpb25fY2F0ZWdvcnksIFwlb3B0aW9uX3JhbmdlCiAgICApOwoKfSAgICAjIGVuZCBvZiBnZW5lcmF0ZV9vcHRpb25zCgojIE1lbW9pemUgcHJvY2Vzc19jb21tYW5kX2xpbmUuIEdpdmVuIHNhbWUgQEFSR1YgcGFzc2VkIGluLCByZXR1cm4gc2FtZQojIHZhbHVlcyBhbmQgc2FtZSBAQVJHViBiYWNrLgojIFRoaXMgcGF0Y2ggd2FzIHN1cHBsaWVkIGJ5IEpvbmF0aGFuIFN3YXJ0eiBOb3YgMjAxMiBhbmQgc2lnbmlmaWNhbnRseSBzcGVlZHMKIyB1cCBtYXNvbnRpZHkgKGh0dHBzOi8vbWV0YWNwYW4ub3JnL21vZHVsZS9tYXNvbnRpZHkpCgpteSAlcHJvY2Vzc19jb21tYW5kX2xpbmVfY2FjaGU7CgpzdWIgcHJvY2Vzc19jb21tYW5kX2xpbmUgewoKICAgIG15IEBxID0gQF87CiAgICBteSAoCiAgICAgICAgJHBlcmx0aWR5cmNfc3RyZWFtLCAgJGlzX1dpbmRvd3MsICRXaW5kb3dzX3R5cGUsCiAgICAgICAgJHJwZW5kaW5nX2NvbXBsYWludCwgJGR1bXBfb3B0aW9uc190eXBlCiAgICApID0gQHE7CgogICAgbXkgJHVzZV9jYWNoZSA9ICFkZWZpbmVkKCRwZXJsdGlkeXJjX3N0cmVhbSkgJiYgISRkdW1wX29wdGlvbnNfdHlwZTsKICAgIGlmICgkdXNlX2NhY2hlKSB7CiAgICAgICAgbXkgJGNhY2hlX2tleSA9IGpvaW4oIGNocigyOCksIEBBUkdWICk7CiAgICAgICAgaWYgKCBteSAkcmVzdWx0ID0gJHByb2Nlc3NfY29tbWFuZF9saW5lX2NhY2hleyRjYWNoZV9rZXl9ICkgewogICAgICAgICAgICBteSAoICRhcmd2LCBAcmV0dmFscyApID0gQHskcmVzdWx0fTsKICAgICAgICAgICAgQEFSR1YgPSBAeyRhcmd2fTsKICAgICAgICAgICAgcmV0dXJuIEByZXR2YWxzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgQHJldHZhbHMgPSBfcHJvY2Vzc19jb21tYW5kX2xpbmUoQHEpOwogICAgICAgICAgICAkcHJvY2Vzc19jb21tYW5kX2xpbmVfY2FjaGV7JGNhY2hlX2tleX0gPSBbIFxAQVJHViwgQHJldHZhbHMgXQogICAgICAgICAgICAgIGlmICRyZXR2YWxzWzBdLT57J21lbW9pemUnfTsKICAgICAgICAgICAgcmV0dXJuIEByZXR2YWxzOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgIHJldHVybiBfcHJvY2Vzc19jb21tYW5kX2xpbmUoQHEpOwogICAgfQp9CgojIChub3RlIHRoZSB1bmRlcnNjb3JlIGhlcmUpCnN1YiBfcHJvY2Vzc19jb21tYW5kX2xpbmUgewoKICAgIG15ICgKICAgICAgICAkcGVybHRpZHlyY19zdHJlYW0sICAkaXNfV2luZG93cywgJFdpbmRvd3NfdHlwZSwKICAgICAgICAkcnBlbmRpbmdfY29tcGxhaW50LCAkZHVtcF9vcHRpb25zX3R5cGUKICAgICkgPSBAXzsKCiAgICB1c2UgR2V0b3B0OjpMb25nOwoKICAgICMgU2F2ZSBhbnkgY3VycmVudCBHZXRvcHQ6OkxvbmcgY29uZmlndXJhdGlvbgogICAgIyBhbmQgc2V0IHRvIEdldG9wdDo6TG9uZyBkZWZhdWx0cy4gIFVzZSBldmFsIHRvIGF2b2lkCiAgICAjIGJyZWFraW5nIG9sZCB2ZXJzaW9ucyBvZiBQZXJsIHdpdGhvdXQgdGhlc2Ugcm91dGluZXMuCiAgICAjIFByZXZpb3VzIGNvbmZpZ3VyYXRpb24gaXMgcmVzZXQgYXQgdGhlIGV4aXQgb2YgdGhpcyByb3V0aW5lLgogICAgbXkgJGdsYzsKICAgIGV2YWwgeyAkZ2xjID0gR2V0b3B0OjpMb25nOjpDb25maWd1cmUoKSB9OwogICAgdW5sZXNzICgkQCkgewogICAgICAgIGV2YWwgeyBHZXRvcHQ6Okxvbmc6OkNvbmZpZ0RlZmF1bHRzKCkgfTsKICAgIH0KICAgIGVsc2UgeyAkZ2xjID0gdW5kZWYgfQoKICAgIG15ICgKICAgICAgICAkcm9wdGlvbl9zdHJpbmcsICAgJHJkZWZhdWx0cywgJHJleHBhbnNpb24sCiAgICAgICAgJHJvcHRpb25fY2F0ZWdvcnksICRyb3B0aW9uX3JhbmdlCiAgICApID0gZ2VuZXJhdGVfb3B0aW9ucygpOwoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgc2V0IHRoZSBkZWZhdWx0cyBieSBwYXNzaW5nIHRoZSBhYm92ZSBsaXN0IHRocm91Z2ggR2V0T3B0aW9ucwogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgbXkgJU9wdHMgPSAoKTsKICAgIHsKICAgICAgICBsb2NhbCBAQVJHViA9ICgpOwoKICAgICAgICAjIGRvIG5vdCBsb2FkIHRoZSBkZWZhdWx0cyBpZiB3ZSBhcmUganVzdCBkdW1waW5nIHBlcmx0aWR5cmMKICAgICAgICB1bmxlc3MgKCAkZHVtcF9vcHRpb25zX3R5cGUgZXEgJ3Blcmx0aWR5cmMnICkgewogICAgICAgICAgICBmb3IgbXkgJGkgKCBAeyRyZGVmYXVsdHN9ICkgeyBwdXNoIEBBUkdWLCAiLS0iIC4gJGkgfQogICAgICAgIH0KICAgICAgICBpZiAoICFHZXRPcHRpb25zKCBcJU9wdHMsIEB7JHJvcHRpb25fc3RyaW5nfSApICkgewogICAgICAgICAgICBEaWUoCiJQcm9ncmFtbWluZyBCdWcgcmVwb3J0ZWQgYnkgJ0dldE9wdGlvbnMnOiBlcnJvciBpbiBzZXR0aW5nIGRlZmF1bHQgb3B0aW9ucyIKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJHdvcmQ7CiAgICBteSBAcmF3X29wdGlvbnMgICAgICAgID0gKCk7CiAgICBteSAkY29uZmlnX2ZpbGUgICAgICAgID0gIiI7CiAgICBteSAkc2F3X2lnbm9yZV9wcm9maWxlID0gMDsKICAgIG15ICRzYXdfZHVtcF9wcm9maWxlICAgPSAwOwoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgVGFrZSBhIGZpcnN0IGxvb2sgYXQgdGhlIGNvbW1hbmQtbGluZSBwYXJhbWV0ZXJzLiAgRG8gYXMgbWFueQogICAgIyBpbW1lZGlhdGUgZHVtcHMgYXMgcG9zc2libGUsIHdoaWNoIGNhbiBhdm9pZCBjb25mdXNpb24gaWYgdGhlCiAgICAjIHBlcmx0aWR5cmMgZmlsZSBoYXMgYW4gZXJyb3IuCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBmb3JlYWNoIG15ICRpIChAQVJHVikgewoKICAgICAgICAkaSA9fiBzL14tLS8tLzsKICAgICAgICBpZiAoICRpID1+IC9eLShucHJvfG5vcHJvZmlsZXxuby1wcm9maWxlKSQvICkgewogICAgICAgICAgICAkc2F3X2lnbm9yZV9wcm9maWxlID0gMTsKICAgICAgICB9CgogICAgICAgICMgbm90ZTogdGhpcyBtdXN0IGNvbWUgYmVmb3JlIC1wcm8gYW5kIC1wcm9maWxlLCBiZWxvdzoKICAgICAgICBlbHNpZiAoICRpID1+IC9eLShkdW1wLXByb2ZpbGV8ZHBybykkLyApIHsKICAgICAgICAgICAgJHNhd19kdW1wX3Byb2ZpbGUgPSAxOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRpID1+IC9eLShwcm98cHJvZmlsZSk9KC4rKS8gKSB7CiAgICAgICAgICAgIGlmICgkY29uZmlnX2ZpbGUpIHsKICAgICAgICAgICAgICAgIFdhcm4oCiJPbmx5IG9uZSAtcHJvPWZpbGVuYW1lIGFsbG93ZWQsIHVzaW5nICckMicgaW5zdGVhZCBvZiAnJGNvbmZpZ19maWxlJ1xuIgogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkY29uZmlnX2ZpbGUgPSAkMjsKCiAgICAgICAgICAgICMgcmVzb2x2ZSA8ZGlyPi8uLi4vPGZpbGU+LCBtZWFuaW5nIGxvb2sgdXB3YXJkcyBmcm9tIGRpcmVjdG9yeQogICAgICAgICAgICBpZiAoIGRlZmluZWQoJGNvbmZpZ19maWxlKSApIHsKICAgICAgICAgICAgICAgIGlmICggbXkgKCAkc3RhcnRfZGlyLCAkc2VhcmNoX2ZpbGUgKSA9CiAgICAgICAgICAgICAgICAgICAgKCAkY29uZmlnX2ZpbGUgPX4gbXteKC4qKVwuXC5cLi8oLiopJH0gKSApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJHN0YXJ0X2RpciA9ICcuJyBpZiAhJHN0YXJ0X2RpcjsKICAgICAgICAgICAgICAgICAgICAkc3RhcnRfZGlyID0gQ3dkOjpyZWFscGF0aCgkc3RhcnRfZGlyKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIG15ICRmb3VuZF9maWxlID0KICAgICAgICAgICAgICAgICAgICAgICAgZmluZF9maWxlX3Vwd2FyZHMoICRzdGFydF9kaXIsICRzZWFyY2hfZmlsZSApICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb25maWdfZmlsZSA9ICRmb3VuZF9maWxlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB1bmxlc3MgKCAtZSAkY29uZmlnX2ZpbGUgKSB7CiAgICAgICAgICAgICAgICBXYXJuKCJjYW5ub3QgZmluZCBmaWxlIGdpdmVuIHdpdGggLXBybz0kY29uZmlnX2ZpbGU6ICQhXG4iKTsKICAgICAgICAgICAgICAgICRjb25maWdfZmlsZSA9ICIiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJGkgPX4gL14tKHByb3xwcm9maWxlKT0/JC8gKSB7CiAgICAgICAgICAgIERpZSgidXNhZ2U6IC1wcm89ZmlsZW5hbWUgb3IgLS1wcm9maWxlPWZpbGVuYW1lLCBubyBzcGFjZXNcbiIpOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRpID1+IC9eLShoZWxwfGh8SEVMUHxIfFw/KSQvICkgewogICAgICAgICAgICB1c2FnZSgpOwogICAgICAgICAgICBFeGl0KDApOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRpID1+IC9eLSh2ZXJzaW9ufHYpJC8gKSB7CiAgICAgICAgICAgIHNob3dfdmVyc2lvbigpOwogICAgICAgICAgICBFeGl0KDApOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRpID1+IC9eLShkdW1wLWRlZmF1bHRzfGRkZikkLyApIHsKICAgICAgICAgICAgZHVtcF9kZWZhdWx0cyggQHskcmRlZmF1bHRzfSApOwogICAgICAgICAgICBFeGl0KDApOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRpID1+IC9eLShkdW1wLWxvbmctbmFtZXN8ZGxuKSQvICkgewogICAgICAgICAgICBkdW1wX2xvbmdfbmFtZXMoIEB7JHJvcHRpb25fc3RyaW5nfSApOwogICAgICAgICAgICBFeGl0KDApOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRpID1+IC9eLShkdW1wLXNob3J0LW5hbWVzfGRzbikkLyApIHsKICAgICAgICAgICAgZHVtcF9zaG9ydF9uYW1lcygkcmV4cGFuc2lvbik7CiAgICAgICAgICAgIEV4aXQoMCk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJGkgPX4gL14tKGR1bXAtdG9rZW4tdHlwZXN8ZHR0KSQvICkgewogICAgICAgICAgICBQZXJsOjpUaWR5OjpUb2tlbml6ZXItPmR1bXBfdG9rZW5fdHlwZXMoKlNURE9VVCk7CiAgICAgICAgICAgIEV4aXQoMCk7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJHNhd19kdW1wX3Byb2ZpbGUgJiYgJHNhd19pZ25vcmVfcHJvZmlsZSApIHsKICAgICAgICBXYXJuKCJObyBwcm9maWxlIHRvIGR1bXAgYmVjYXVzZSBvZiAtbnByb1xuIik7CiAgICAgICAgRXhpdCgxKTsKICAgIH0KCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIHJlYWQgYW55IC5wZXJsdGlkeXJjIGNvbmZpZ3VyYXRpb24gZmlsZQogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgdW5sZXNzICgkc2F3X2lnbm9yZV9wcm9maWxlKSB7CgogICAgICAgICMgcmVzb2x2ZSBwb3NzaWJsZSBjb25mbGljdCBiZXR3ZWVuICRwZXJsdGlkeXJjX3N0cmVhbSBwYXNzZWQKICAgICAgICAjIGFzIGNhbGwgcGFyYW1ldGVyIHRvIHBlcmx0aWR5IGFuZCAtcHJvPWZpbGVuYW1lIG9uIGNvbW1hbmQKICAgICAgICAjIGxpbmUuCiAgICAgICAgaWYgKCRwZXJsdGlkeXJjX3N0cmVhbSkgewogICAgICAgICAgICBpZiAoJGNvbmZpZ19maWxlKSB7CiAgICAgICAgICAgICAgICBXYXJuKDw8RU9NKTsKIENvbmZsaWN0OiBhIHBlcmx0aWR5cmMgY29uZmlndXJhdGlvbiBmaWxlIHdhcyBzcGVjaWZpZWQgYm90aCBhcyB0aGlzCiBwZXJsdGlkeSBjYWxsIHBhcmFtZXRlcjogJHBlcmx0aWR5cmNfc3RyZWFtIAogYW5kIHdpdGggdGhpcyAtcHJvZmlsZT0kY29uZmlnX2ZpbGUuCiBVc2luZyAtcHJvZmlsZT0kY29uZmlnX2ZpbGUuCkVPTQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJGNvbmZpZ19maWxlID0gJHBlcmx0aWR5cmNfc3RyZWFtOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGxvb2sgZm9yIGEgY29uZmlnIGZpbGUgaWYgd2UgZG9uJ3QgaGF2ZSBvbmUgeWV0CiAgICAgICAgbXkgJHJjb25maWdfZmlsZV9jaGF0dGVyOwogICAgICAgICR7JHJjb25maWdfZmlsZV9jaGF0dGVyfSA9ICIiOwogICAgICAgICRjb25maWdfZmlsZSA9CiAgICAgICAgICBmaW5kX2NvbmZpZ19maWxlKCAkaXNfV2luZG93cywgJFdpbmRvd3NfdHlwZSwgJHJjb25maWdfZmlsZV9jaGF0dGVyLAogICAgICAgICAgICAkcnBlbmRpbmdfY29tcGxhaW50ICkKICAgICAgICAgIHVubGVzcyAkY29uZmlnX2ZpbGU7CgogICAgICAgICMgb3BlbiBhbnkgY29uZmlnIGZpbGUKICAgICAgICBteSAkZmhfY29uZmlnOwogICAgICAgIGlmICgkY29uZmlnX2ZpbGUpIHsKICAgICAgICAgICAgKCAkZmhfY29uZmlnLCAkY29uZmlnX2ZpbGUgKSA9CiAgICAgICAgICAgICAgUGVybDo6VGlkeTo6c3RyZWFtaGFuZGxlKCAkY29uZmlnX2ZpbGUsICdyJyApOwogICAgICAgICAgICB1bmxlc3MgKCRmaF9jb25maWcpIHsKICAgICAgICAgICAgICAgICR7JHJjb25maWdfZmlsZV9jaGF0dGVyfSAuPQogICAgICAgICAgICAgICAgICAiIyAkY29uZmlnX2ZpbGUgZXhpc3RzIGJ1dCBjYW5ub3QgYmUgb3BlbmVkXG4iOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJHNhd19kdW1wX3Byb2ZpbGUpIHsKICAgICAgICAgICAgZHVtcF9jb25maWdfZmlsZSggJGZoX2NvbmZpZywgJGNvbmZpZ19maWxlLCAkcmNvbmZpZ19maWxlX2NoYXR0ZXIgKTsKICAgICAgICAgICAgRXhpdCgwKTsKICAgICAgICB9CgogICAgICAgIGlmICgkZmhfY29uZmlnKSB7CgogICAgICAgICAgICBteSAoICRyY29uZmlnX2xpc3QsICRkZWF0aF9tZXNzYWdlICkgPQogICAgICAgICAgICAgIHJlYWRfY29uZmlnX2ZpbGUoICRmaF9jb25maWcsICRjb25maWdfZmlsZSwgJHJleHBhbnNpb24gKTsKICAgICAgICAgICAgRGllKCRkZWF0aF9tZXNzYWdlKSBpZiAoJGRlYXRoX21lc3NhZ2UpOwoKICAgICAgICAgICAgIyBwcm9jZXNzIGFueSAucGVybHRpZHlyYyBwYXJhbWV0ZXJzIHJpZ2h0IG5vdyBzbyB3ZSBjYW4KICAgICAgICAgICAgIyBsb2NhbGl6ZSBlcnJvcnMKICAgICAgICAgICAgaWYgKCBAeyRyY29uZmlnX2xpc3R9ICkgewogICAgICAgICAgICAgICAgbG9jYWwgQEFSR1YgPSBAeyRyY29uZmlnX2xpc3R9OwoKICAgICAgICAgICAgICAgIGV4cGFuZF9jb21tYW5kX2FiYnJldmlhdGlvbnMoICRyZXhwYW5zaW9uLCBcQHJhd19vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICRjb25maWdfZmlsZSApOwoKICAgICAgICAgICAgICAgIGlmICggIUdldE9wdGlvbnMoIFwlT3B0cywgQHskcm9wdGlvbl9zdHJpbmd9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgRGllKAoiRXJyb3IgaW4gdGhpcyBjb25maWcgZmlsZTogJGNvbmZpZ19maWxlICBcblVzZSAtbnBybyB0byBpZ25vcmUgdGhpcyBmaWxlLCAtaCBmb3IgaGVscCdcbiIKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgQW55dGhpbmcgbGVmdCBpbiB0aGlzIGxvY2FsIEBBUkdWIGlzIGFuIGVycm9yIGFuZCBtdXN0IGJlCiAgICAgICAgICAgICAgICAjIGludmFsaWQgYmFyZSB3b3JkcyBmcm9tIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuICBXZSBjYW5ub3QKICAgICAgICAgICAgICAgICMgY2hlY2sgdGhpcyBlYXJsaWVyIGJlY2F1c2UgYmFyZSB3b3JkcyBtYXkgaGF2ZSBiZWVuIHZhbGlkCiAgICAgICAgICAgICAgICAjIHZhbHVlcyBmb3IgcGFyYW1ldGVycy4gIFdlIGhhZCB0byB3YWl0IGZvciBHZXRPcHRpb25zIHRvIGhhdmUKICAgICAgICAgICAgICAgICMgYSBsb29rIGF0IEBBUkdWLgogICAgICAgICAgICAgICAgaWYgKEBBUkdWKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJGNvdW50ID0gQEFSR1Y7CiAgICAgICAgICAgICAgICAgICAgbXkgJHN0ciAgID0gIlwnIiAuIHBvcChAQVJHVikgLiAiXCciOwogICAgICAgICAgICAgICAgICAgIHdoaWxlICggbXkgJHBhcmFtID0gcG9wKEBBUkdWKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBsZW5ndGgoJHN0cikgPCA3MCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdHIgLj0gIiwgJyRwYXJhbSciOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0ciAuPSAiLCAuLi4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBEaWUoPDxFT00pOwpUaGVyZSBhcmUgJGNvdW50IHVucmVjb2duaXplZCB2YWx1ZXMgaW4gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSAnJGNvbmZpZ19maWxlJzoKJHN0cgpVc2UgbGVhZGluZyBkYXNoZXMgZm9yIHBhcmFtZXRlcnMuICBVc2UgLW5wcm8gdG8gaWdub3JlIHRoaXMgZmlsZS4KRU9NCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBVbmRvIGFueSBvcHRpb25zIHdoaWNoIGNhdXNlIHByZW1hdHVyZSBleGl0LiAgVGhleSBhcmUgbm90CiAgICAgICAgICAgICAgICAjIGFwcHJvcHJpYXRlIGZvciBhIGNvbmZpZyBmaWxlLCBhbmQgaXQgY291bGQgYmUgaGFyZCB0bwogICAgICAgICAgICAgICAgIyBkaWFnbm9zZSB0aGUgY2F1c2Ugb2YgdGhlIHByZW1hdHVyZSBleGl0LgogICAgICAgICAgICAgICAgZm9yZWFjaCAoCiAgICAgICAgICAgICAgICAgICAgcXd7CiAgICAgICAgICAgICAgICAgICAgZHVtcC1jdWRkbGVkLWJsb2NrLWxpc3QKICAgICAgICAgICAgICAgICAgICBkdW1wLWRlZmF1bHRzCiAgICAgICAgICAgICAgICAgICAgZHVtcC1sb25nLW5hbWVzCiAgICAgICAgICAgICAgICAgICAgZHVtcC1vcHRpb25zCiAgICAgICAgICAgICAgICAgICAgZHVtcC1wcm9maWxlCiAgICAgICAgICAgICAgICAgICAgZHVtcC1zaG9ydC1uYW1lcwogICAgICAgICAgICAgICAgICAgIGR1bXAtdG9rZW4tdHlwZXMKICAgICAgICAgICAgICAgICAgICBkdW1wLXdhbnQtbGVmdC1zcGFjZQogICAgICAgICAgICAgICAgICAgIGR1bXAtd2FudC1yaWdodC1zcGFjZQogICAgICAgICAgICAgICAgICAgIGhlbHAKICAgICAgICAgICAgICAgICAgICBzdHlsZXNoZWV0CiAgICAgICAgICAgICAgICAgICAgdmVyc2lvbgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQoICRPcHRzeyRffSApICkgewogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgJE9wdHN7JF99OwogICAgICAgICAgICAgICAgICAgICAgICBXYXJuKCJpZ25vcmluZyAtLSRfIGluIGNvbmZpZyBmaWxlOiAkY29uZmlnX2ZpbGVcbiIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIG5vdyBwcm9jZXNzIHRoZSBjb21tYW5kIGxpbmUgcGFyYW1ldGVycwogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgZXhwYW5kX2NvbW1hbmRfYWJicmV2aWF0aW9ucyggJHJleHBhbnNpb24sIFxAcmF3X29wdGlvbnMsICRjb25maWdfZmlsZSApOwoKICAgIGxvY2FsICRTSUd7J19fV0FSTl9fJ30gPSBzdWIgeyBXYXJuKCAkX1swXSApIH07CiAgICBpZiAoICFHZXRPcHRpb25zKCBcJU9wdHMsIEB7JHJvcHRpb25fc3RyaW5nfSApICkgewogICAgICAgIERpZSgiRXJyb3Igb24gY29tbWFuZCBsaW5lOyBmb3IgaGVscCB0cnkgJ3Blcmx0aWR5IC1oJ1xuIik7CiAgICB9CgogICAgIyByZXNldCBHZXRvcHQ6OkxvbmcgY29uZmlndXJhdGlvbiBiYWNrIHRvIGl0cyBwcmV2aW91cyB2YWx1ZQogICAgZXZhbCB7IEdldG9wdDo6TG9uZzo6Q29uZmlndXJlKCRnbGMpIH0gaWYgZGVmaW5lZCAkZ2xjOwoKICAgIHJldHVybiAoIFwlT3B0cywgJGNvbmZpZ19maWxlLCBcQHJhd19vcHRpb25zLCAkcm9wdGlvbl9zdHJpbmcsCiAgICAgICAgJHJleHBhbnNpb24sICRyb3B0aW9uX2NhdGVnb3J5LCAkcm9wdGlvbl9yYW5nZSApOwp9ICAgICMgZW5kIG9mIF9wcm9jZXNzX2NvbW1hbmRfbGluZQoKc3ViIGNoZWNrX29wdGlvbnMgewoKICAgIG15ICggJHJPcHRzLCAkaXNfV2luZG93cywgJFdpbmRvd3NfdHlwZSwgJHJwZW5kaW5nX2NvbXBsYWludCApID0gQF87CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyBjaGVjayBhbmQgaGFuZGxlIGFueSBpbnRlcmFjdGlvbnMgYW1vbmcgdGhlIGJhc2ljIG9wdGlvbnMuLgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICMgU2luY2UgLXZ0LCAtdnRjLCBhbmQgLWN0aSBhcmUgYWJicmV2aWF0aW9ucywgYnV0IHVuZGVyCiAgICAjIG1zZG9zLCBhbiB1bnF1b3RlZCBpbnB1dCBwYXJhbWV0ZXIgbGlrZSB2dGM9MSB3aWxsIGJlCiAgICAjIHNlZW4gYXMgMiBwYXJhbWV0ZXJzLCB2dGMgYW5kIDEsIHNvIHRoZSBhYmJyZXZpYXRpb25zCiAgICAjIHdvbid0IGJlIHNlZW4uICBUaGVyZWZvcmUsIHdlIHdpbGwgY2F0Y2ggdGhlbSBoZXJlIGlmCiAgICAjIHRoZXkgZ2V0IHRocm91Z2guCgogICAgaWYgKCBkZWZpbmVkICRyT3B0cy0+eyd2ZXJ0aWNhbC10aWdodG5lc3MnfSApIHsKICAgICAgICBteSAkdnQgPSAkck9wdHMtPnsndmVydGljYWwtdGlnaHRuZXNzJ307CiAgICAgICAgJHJPcHRzLT57J3BhcmVuLXZlcnRpY2FsLXRpZ2h0bmVzcyd9ICAgICAgICAgID0gJHZ0OwogICAgICAgICRyT3B0cy0+eydzcXVhcmUtYnJhY2tldC12ZXJ0aWNhbC10aWdodG5lc3MnfSA9ICR2dDsKICAgICAgICAkck9wdHMtPnsnYnJhY2UtdmVydGljYWwtdGlnaHRuZXNzJ30gICAgICAgICAgPSAkdnQ7CiAgICB9CgogICAgaWYgKCBkZWZpbmVkICRyT3B0cy0+eyd2ZXJ0aWNhbC10aWdodG5lc3MtY2xvc2luZyd9ICkgewogICAgICAgIG15ICR2dGMgPSAkck9wdHMtPnsndmVydGljYWwtdGlnaHRuZXNzLWNsb3NpbmcnfTsKICAgICAgICAkck9wdHMtPnsncGFyZW4tdmVydGljYWwtdGlnaHRuZXNzLWNsb3NpbmcnfSAgICAgICAgICA9ICR2dGM7CiAgICAgICAgJHJPcHRzLT57J3NxdWFyZS1icmFja2V0LXZlcnRpY2FsLXRpZ2h0bmVzcy1jbG9zaW5nJ30gPSAkdnRjOwogICAgICAgICRyT3B0cy0+eydicmFjZS12ZXJ0aWNhbC10aWdodG5lc3MtY2xvc2luZyd9ICAgICAgICAgID0gJHZ0YzsKICAgIH0KCiAgICBpZiAoIGRlZmluZWQgJHJPcHRzLT57J2Nsb3NpbmctdG9rZW4taW5kZW50YXRpb24nfSApIHsKICAgICAgICBteSAkY3RpID0gJHJPcHRzLT57J2Nsb3NpbmctdG9rZW4taW5kZW50YXRpb24nfTsKICAgICAgICAkck9wdHMtPnsnY2xvc2luZy1zcXVhcmUtYnJhY2tldC1pbmRlbnRhdGlvbid9ID0gJGN0aTsKICAgICAgICAkck9wdHMtPnsnY2xvc2luZy1icmFjZS1pbmRlbnRhdGlvbid9ICAgICAgICAgID0gJGN0aTsKICAgICAgICAkck9wdHMtPnsnY2xvc2luZy1wYXJlbi1pbmRlbnRhdGlvbid9ICAgICAgICAgID0gJGN0aTsKICAgIH0KCiAgICAjIEluIHF1aWV0IG1vZGUsIHRoZXJlIGlzIG5vIGxvZyBmaWxlIGFuZCBoZW5jZSBubyB3YXkgdG8gcmVwb3J0CiAgICAjIHJlc3VsdHMgb2Ygc3ludGF4IGNoZWNrLCBzbyBkb24ndCBkbyBpdC4KICAgIGlmICggJHJPcHRzLT57J3F1aWV0J30gKSB7CiAgICAgICAgJHJPcHRzLT57J2NoZWNrLXN5bnRheCd9ID0gMDsKICAgIH0KCiAgICAjIGNhbid0IGNoZWNrIHN5bnRheCBpZiBubyBvdXRwdXQKICAgIGlmICggJHJPcHRzLT57J2Zvcm1hdCd9IG5lICd0aWR5JyApIHsKICAgICAgICAkck9wdHMtPnsnY2hlY2stc3ludGF4J30gPSAwOwogICAgfQoKICAgICMgTmV2ZXIgbGV0IFdpbmRvd3MgOXgvTWUgc3lzdGVtcyBydW4gc3ludGF4IGNoZWNrIC0tIHRoaXMgd2lsbCBwcmV2ZW50IGEKICAgICMgd2lkZSB2YXJpZXR5IG9mIG5hc3R5IHByb2JsZW1zIG9uIHRoZXNlIHN5c3RlbXMsIGJlY2F1c2UgdGhleSBjYW5ub3QKICAgICMgcmVsaWFibHkgcnVuIGJhY2t0aWNrcy4gIERvbid0IGV2ZW4gdGhpbmsgYWJvdXQgY2hhbmdpbmcgdGhpcyEKICAgIGlmICggICAkck9wdHMtPnsnY2hlY2stc3ludGF4J30KICAgICAgICAmJiAkaXNfV2luZG93cwogICAgICAgICYmICggISRXaW5kb3dzX3R5cGUgfHwgJFdpbmRvd3NfdHlwZSA9fiAvXig5fE1lKS8gKSApCiAgICB7CiAgICAgICAgJHJPcHRzLT57J2NoZWNrLXN5bnRheCd9ID0gMDsKICAgIH0KCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMgQWRkZWQgRGVjIDIwMTc6IERlYWN0aXZhdGluZyBjaGVjay1zeW50YXggZm9yIGFsbCBzeXN0ZW1zIGZvciBzYWZldHkKICAgICMgYmVjYXVzZSB1bmV4cGVjdGVkIHJlc3VsdHMgY2FuIG9jY3VyIHdoZW4gY29kZSBpbiBCRUdJTiBibG9ja3MgaXMKICAgICMgZXhlY3V0ZWQuICBUaGlzIGZsYWcgd2FzIGluY2x1ZGVkIHRvIGhlbHAgY2hlY2sgZm9yIHBlcmx0aWR5IG1pc3Rha2VzLAogICAgIyBhbmQgbWF5IHN0aWxsIGJlIHVzZWZ1bCBmb3IgZGVidWdnaW5nLiAgVG8gYWN0aXZhdGUgZm9yIHRlc3RpbmcgY29tbWVudAogICAgIyBvdXQgdGhlIG5leHQgdGhyZWUgbGluZXMuICBBbHNvIGZpeCBzdWIgJ2RvX2NoZWNrX3N5bnRheCcgaW4gdGhpcyBmaWxlLgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICBlbHNlIHsKICAgICAgICAkck9wdHMtPnsnY2hlY2stc3ludGF4J30gPSAwOwogICAgfQoKICAgICMgSXQncyByZWFsbHkgYSBiYWQgaWRlYSB0byBjaGVjayBzeW50YXggYXMgcm9vdCB1bmxlc3MgeW91IHdyb3RlCiAgICAjIHRoZSBzY3JpcHQgeW91cnNlbGYuICBGSVhNRTogbm90IHN1cmUgaWYgdGhpcyB3b3JrcyB3aXRoIFZNUwogICAgdW5sZXNzICgkaXNfV2luZG93cykgewoKICAgICAgICBpZiAoICQ8ID09IDAgJiYgJHJPcHRzLT57J2NoZWNrLXN5bnRheCd9ICkgewogICAgICAgICAgICAkck9wdHMtPnsnY2hlY2stc3ludGF4J30gPSAwOwogICAgICAgICAgICAkeyRycGVuZGluZ19jb21wbGFpbnR9IC49CiJTeW50YXggY2hlY2sgZGVhY3RpdmF0ZWQgZm9yIHNhZmV0eTsgeW91IHNob3VsZG4ndCBydW4gdGhpcyBhcyByb290XG4iOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGl0ZXJhdGlvbiBjb3VudCBhbmQgcXVpZXRseSBmaXggaWYgbmVjZXNzYXJ5OgogICAgIyAtIGl0ZXJhdGlvbnMgb3B0aW9uIG9ubHkgYXBwbGllcyB0byBjb2RlIGJlYXV0aWZpY2F0aW9uIG1vZGUKICAgICMgLSB0aGUgY29udmVyZ2VuY2UgY2hlY2sgc2hvdWxkIHN0b3AgbW9zdCBydW5zIG9uIGl0ZXJhdGlvbiAyLCBhbmQKICAgICMgICB2aXJ0dWFsbHkgYWxsIG9uIGl0ZXJhdGlvbiAzLiAgQnV0IHdlJ2xsIGFsbG93IHVwIHRvIDYuCiAgICBpZiAoICRyT3B0cy0+eydmb3JtYXQnfSBuZSAndGlkeScgKSB7CiAgICAgICAgJHJPcHRzLT57J2l0ZXJhdGlvbnMnfSA9IDE7CiAgICB9CiAgICBlbHNpZiAoIGRlZmluZWQoICRyT3B0cy0+eydpdGVyYXRpb25zJ30gKSApIHsKICAgICAgICBpZiAgICAoICRyT3B0cy0+eydpdGVyYXRpb25zJ30gPD0gMCApIHsgJHJPcHRzLT57J2l0ZXJhdGlvbnMnfSA9IDEgfQogICAgICAgIGVsc2lmICggJHJPcHRzLT57J2l0ZXJhdGlvbnMnfSA+IDYgKSAgeyAkck9wdHMtPnsnaXRlcmF0aW9ucyd9ID0gNiB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkck9wdHMtPnsnaXRlcmF0aW9ucyd9ID0gMTsKICAgIH0KCiAgICBteSAkY2hlY2tfYmxhbmtfY291bnQgPSBzdWIgewogICAgICAgIG15ICggJGtleSwgJGFiYnJldiApID0gQF87CiAgICAgICAgaWYgKCAkck9wdHMtPnska2V5fSApIHsKICAgICAgICAgICAgaWYgKCAkck9wdHMtPnska2V5fSA8IDAgKSB7CiAgICAgICAgICAgICAgICAkck9wdHMtPnska2V5fSA9IDA7CiAgICAgICAgICAgICAgICBXYXJuKCJuZWdhdGl2ZSB2YWx1ZSBvZiAkYWJicmV2LCBzZXR0aW5nIDBcbiIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJHJPcHRzLT57JGtleX0gPiAxMDAgKSB7CiAgICAgICAgICAgICAgICBXYXJuKCJ1bnJlYXNvbmFibHkgbGFyZ2UgdmFsdWUgb2YgJGFiYnJldiwgcmVkdWNpbmdcbiIpOwogICAgICAgICAgICAgICAgJHJPcHRzLT57JGtleX0gPSAxMDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwoKICAgICMgY2hlY2sgZm9yIHJlYXNvbmFibGUgbnVtYmVyIG9mIGJsYW5rIGxpbmVzIGFuZCBmaXggdG8gYXZvaWQgcHJvYmxlbXMKICAgICRjaGVja19ibGFua19jb3VudC0+KCAnYmxhbmstbGluZXMtYmVmb3JlLXN1YnMnLCAgICAgICAgICAnLWJsYnMnICk7CiAgICAkY2hlY2tfYmxhbmtfY291bnQtPiggJ2JsYW5rLWxpbmVzLWJlZm9yZS1wYWNrYWdlcycsICAgICAgJy1ibGJwJyApOwogICAgJGNoZWNrX2JsYW5rX2NvdW50LT4oICdibGFuay1saW5lcy1hZnRlci1ibG9jay1vcGVuaW5nJywgICctYmxhbycgKTsKICAgICRjaGVja19ibGFua19jb3VudC0+KCAnYmxhbmstbGluZXMtYmVmb3JlLWJsb2NrLWNsb3NpbmcnLCAnLWJsYmMnICk7CgogICAgIyBzZXR0aW5nIGEgbm9uLW5lZ2F0aXZlIGxvZ2ZpbGUgZ2FwIGNhdXNlcyBsb2dmaWxlIHRvIGJlIHNhdmVkCiAgICBpZiAoIGRlZmluZWQoICRyT3B0cy0+eydsb2dmaWxlLWdhcCd9ICkgJiYgJHJPcHRzLT57J2xvZ2ZpbGUtZ2FwJ30gPj0gMCApIHsKICAgICAgICAkck9wdHMtPnsnbG9nZmlsZSd9ID0gMTsKICAgIH0KCiAgICAjIHNldCBzaG9ydC1jdXQgZmxhZyB3aGVuIG9ubHkgaW5kZW50YXRpb24gaXMgdG8gYmUgZG9uZS4KICAgICMgTm90ZSB0aGF0IHRoZSB1c2VyIG1heSBvciBtYXkgbm90IGhhdmUgYWxyZWFkeSBzZXQgdGhlCiAgICAjIGluZGVudC1vbmx5IGZsYWcuCiAgICBpZiAoICAgISRyT3B0cy0+eydhZGQtd2hpdGVzcGFjZSd9CiAgICAgICAgJiYgISRyT3B0cy0+eydkZWxldGUtb2xkLXdoaXRlc3BhY2UnfQogICAgICAgICYmICEkck9wdHMtPnsnYWRkLW5ld2xpbmVzJ30KICAgICAgICAmJiAhJHJPcHRzLT57J2RlbGV0ZS1vbGQtbmV3bGluZXMnfSApCiAgICB7CiAgICAgICAgJHJPcHRzLT57J2luZGVudC1vbmx5J30gPSAxOwogICAgfQoKICAgICMgLWlzYmMgaW1wbGllcyAtaWJjCiAgICBpZiAoICRyT3B0cy0+eydpbmRlbnQtc3BhY2VkLWJsb2NrLWNvbW1lbnRzJ30gKSB7CiAgICAgICAgJHJPcHRzLT57J2luZGVudC1ibG9jay1jb21tZW50cyd9ID0gMTsKICAgIH0KCiAgICAjIC1ibGkgZmxhZyBpbXBsaWVzIC1ibAogICAgaWYgKCAkck9wdHMtPnsnYnJhY2UtbGVmdC1hbmQtaW5kZW50J30gKSB7CiAgICAgICAgJHJPcHRzLT57J29wZW5pbmctYnJhY2Utb24tbmV3LWxpbmUnfSA9IDE7CiAgICB9CgogICAgaWYgKCAgICRyT3B0cy0+eydvcGVuaW5nLWJyYWNlLWFsd2F5cy1vbi1yaWdodCd9CiAgICAgICAgJiYgJHJPcHRzLT57J29wZW5pbmctYnJhY2Utb24tbmV3LWxpbmUnfSApCiAgICB7CiAgICAgICAgV2Fybig8PEVPTSk7CiBDb25mbGljdDogeW91IHNwZWNpZmllZCBib3RoICdvcGVuaW5nLWJyYWNlLWFsd2F5cy1vbi1yaWdodCcgKC1iYXIpIGFuZCAKICAnb3BlbmluZy1icmFjZS1vbi1uZXctbGluZScgKC1ibCkuICBJZ25vcmluZyAtYmwuIApFT00KICAgICAgICAkck9wdHMtPnsnb3BlbmluZy1icmFjZS1vbi1uZXctbGluZSd9ID0gMDsKICAgIH0KCiAgICAjIGl0IHNpbXBsaWZpZXMgdGhpbmdzIGlmIC1ibCBpcyAwIHJhdGhlciB0aGFuIHVuZGVmaW5lZAogICAgaWYgKCAhZGVmaW5lZCggJHJPcHRzLT57J29wZW5pbmctYnJhY2Utb24tbmV3LWxpbmUnfSApICkgewogICAgICAgICRyT3B0cy0+eydvcGVuaW5nLWJyYWNlLW9uLW5ldy1saW5lJ30gPSAwOwogICAgfQoKICAgICMgLXNibCBkZWZhdWx0cyB0byAtYmwgaWYgbm90IGRlZmluZWQKICAgIGlmICggIWRlZmluZWQoICRyT3B0cy0+eydvcGVuaW5nLXN1Yi1icmFjZS1vbi1uZXctbGluZSd9ICkgKSB7CiAgICAgICAgJHJPcHRzLT57J29wZW5pbmctc3ViLWJyYWNlLW9uLW5ldy1saW5lJ30gPQogICAgICAgICAgJHJPcHRzLT57J29wZW5pbmctYnJhY2Utb24tbmV3LWxpbmUnfTsKICAgIH0KCiAgICBpZiAoICRyT3B0cy0+eydlbnRhYi1sZWFkaW5nLXdoaXRlc3BhY2UnfSApIHsKICAgICAgICBpZiAoICRyT3B0cy0+eydlbnRhYi1sZWFkaW5nLXdoaXRlc3BhY2UnfSA8IDAgKSB7CiAgICAgICAgICAgIFdhcm4oIi1ldD1uIG11c3QgdXNlIGEgcG9zaXRpdmUgaW50ZWdlcjsgaWdub3JpbmcgLWV0XG4iKTsKICAgICAgICAgICAgJHJPcHRzLT57J2VudGFiLWxlYWRpbmctd2hpdGVzcGFjZSd9ID0gdW5kZWY7CiAgICAgICAgfQoKICAgICAgICAjIGVudGFiIGxlYWRpbmcgd2hpdGVzcGFjZSBoYXMgcHJpb3JpdHkgb3ZlciB0aGUgb2xkZXIgJ3RhYnMnIG9wdGlvbgogICAgICAgIGlmICggJHJPcHRzLT57J3RhYnMnfSApIHsgJHJPcHRzLT57J3RhYnMnfSA9IDA7IH0KICAgIH0KCiAgICAjIHNldCBhIGRlZmF1bHQgdGFic2l6ZSB0byBiZSB1c2VkIGluIGd1ZXNzaW5nIHRoZSBzdGFydGluZyBpbmRlbnRhdGlvbgogICAgIyBsZXZlbCBpZiBhbmQgb25seSBpZiB0aGlzIHJ1biBkb2VzIG5vdCB1c2UgdGFicyBhbmQgdGhlIG9sZCBjb2RlIGRvZXMKICAgICMgdXNlIHRhYnMKICAgIGlmICggJHJPcHRzLT57J2RlZmF1bHQtdGFic2l6ZSd9ICkgewogICAgICAgIGlmICggJHJPcHRzLT57J2RlZmF1bHQtdGFic2l6ZSd9IDwgMCApIHsKICAgICAgICAgICAgV2FybigibmVnYXRpdmUgdmFsdWUgb2YgLWR0LCBzZXR0aW5nIDBcbiIpOwogICAgICAgICAgICAkck9wdHMtPnsnZGVmYXVsdC10YWJzaXplJ30gPSAwOwogICAgICAgIH0KICAgICAgICBpZiAoICRyT3B0cy0+eydkZWZhdWx0LXRhYnNpemUnfSA+IDIwICkgewogICAgICAgICAgICBXYXJuKCJ1bnJlYXNvbmFibHkgbGFyZ2UgdmFsdWUgb2YgLWR0LCByZWR1Y2luZ1xuIik7CiAgICAgICAgICAgICRyT3B0cy0+eydkZWZhdWx0LXRhYnNpemUnfSA9IDIwOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRyT3B0cy0+eydkZWZhdWx0LXRhYnNpemUnfSA9IDg7CiAgICB9CgogICAgIyBDaGVjayBhbmQgY2xlYW4gdXAgYW55IHN1Yi1hbGlhcy1saXN0CiAgICBpZiAoICRyT3B0cy0+eydzdWItYWxpYXMtbGlzdCd9ICkgewogICAgICAgIG15ICRzdWJfYWxpYXNfc3RyaW5nID0gJHJPcHRzLT57J3N1Yi1hbGlhcy1saXN0J307CiAgICAgICAgJHN1Yl9hbGlhc19zdHJpbmcgPX4gcy8sLyAvZzsgICAgIyBhbGxvdyBjb21tYXMKICAgICAgICAkc3ViX2FsaWFzX3N0cmluZyA9fiBzL15ccysvLzsKICAgICAgICAkc3ViX2FsaWFzX3N0cmluZyA9fiBzL1xzKyQvLzsKICAgICAgICBteSBAc3ViX2FsaWFzX2xpc3QgICAgID0gc3BsaXQgL1xzKy8sICRzdWJfYWxpYXNfc3RyaW5nOwogICAgICAgIG15IEBmaWx0ZXJlZF93b3JkX2xpc3QgPSAoJ3N1YicpOwogICAgICAgIG15ICVzZWVuOwoKICAgICAgICAjIGluY2x1ZGUgJ3N1YicgZm9yIGxhdGVyIGNvbnZlbmllbmNlCiAgICAgICAgJHNlZW57c3VifSsrOwogICAgICAgIGZvcmVhY2ggbXkgJHdvcmQgKEBzdWJfYWxpYXNfbGlzdCkgewogICAgICAgICAgICBpZiAoJHdvcmQpIHsKICAgICAgICAgICAgICAgIGlmICggJHdvcmQgIX4gL15cd1tcd1xkXSokLyApIHsKICAgICAgICAgICAgICAgICAgICBXYXJuKCJ1bmV4cGVjdGVkIHN1YiBhbGlhcyAnJHdvcmQnIC0gaWdub3JpbmdcbiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCAhJHNlZW57JHdvcmR9ICkgewogICAgICAgICAgICAgICAgICAgICRzZWVueyR3b3JkfSsrOwogICAgICAgICAgICAgICAgICAgIHB1c2ggQGZpbHRlcmVkX3dvcmRfbGlzdCwgJHdvcmQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgbXkgJGpvaW5lZF93b3JkcyA9IGpvaW4gJyAnLCBAZmlsdGVyZWRfd29yZF9saXN0OwogICAgICAgICRyT3B0cy0+eydzdWItYWxpYXMtbGlzdCd9ID0gam9pbiAnICcsIEBmaWx0ZXJlZF93b3JkX2xpc3Q7CiAgICB9CgogICAgIyBEZWZpbmUgJHRhYnNpemUsIHRoZSBudW1iZXIgb2Ygc3BhY2VzIHBlciB0YWIgZm9yIHVzZSBpbgogICAgIyBndWVzc2luZyB0aGUgaW5kZW50YXRpb24gb2Ygc291cmNlIGxpbmVzIHdpdGggbGVhZGluZyB0YWJzLgogICAgIyBBc3N1bWUgc2FtZSBhcyBmb3IgdGhpcyBydW4gaWYgdGFicyBhcmUgdXNlZCAsIG90aGVyd2lzZSBhc3N1bWUKICAgICMgYSBkZWZhdWx0IHZhbHVlLCB0eXBpY2FsbHkgOAogICAgbXkgJHRhYnNpemUgPQogICAgICAgICRyT3B0cy0+eydlbnRhYi1sZWFkaW5nLXdoaXRlc3BhY2UnfQogICAgICA/ICRyT3B0cy0+eydlbnRhYi1sZWFkaW5nLXdoaXRlc3BhY2UnfQogICAgICA6ICRyT3B0cy0+eyd0YWJzJ30gPyAkck9wdHMtPnsnaW5kZW50LWNvbHVtbnMnfQogICAgICA6ICAgICAgICAgICAgICAgICAgICAkck9wdHMtPnsnZGVmYXVsdC10YWJzaXplJ307CiAgICByZXR1cm4gJHRhYnNpemU7Cn0KCnN1YiBmaW5kX2ZpbGVfdXB3YXJkcyB7CiAgICBteSAoICRzZWFyY2hfZGlyLCAkc2VhcmNoX2ZpbGUgKSA9IEBfOwoKICAgICRzZWFyY2hfZGlyICA9fiBzey8rJH17fTsKICAgICRzZWFyY2hfZmlsZSA9fiBze14vK317fTsKCiAgICB3aGlsZSAoMSkgewogICAgICAgIG15ICR0cnlfcGF0aCA9ICIkc2VhcmNoX2Rpci8kc2VhcmNoX2ZpbGUiOwogICAgICAgIGlmICggLWYgJHRyeV9wYXRoICkgewogICAgICAgICAgICByZXR1cm4gJHRyeV9wYXRoOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRzZWFyY2hfZGlyIGVxICcvJyApIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJHNlYXJjaF9kaXIgPSBkaXJuYW1lKCRzZWFyY2hfZGlyKTsKICAgICAgICB9CiAgICB9CgogICAgIyBUaGlzIHJldHVybiBpcyBmb3IgUGVybC1Dcml0aWMuCiAgICAjIFdlIHNob3VsZG4ndCBnZXQgb3V0IG9mIHRoZSB3aGlsZSBsb29wIHdpdGhvdXQgYSByZXR1cm4KICAgIHJldHVybjsKfQoKc3ViIGV4cGFuZF9jb21tYW5kX2FiYnJldmlhdGlvbnMgewoKICAgICMgZ28gdGhyb3VnaCBAQVJHViBhbmQgZXhwYW5kIGFueSBhYmJyZXZpYXRpb25zCgogICAgbXkgKCAkcmV4cGFuc2lvbiwgJHJyYXdfb3B0aW9ucywgJGNvbmZpZ19maWxlICkgPSBAXzsKCiAgICAjIHNldCBhIHBhc3MgbGltaXQgdG8gcHJldmVudCBhbiBpbmZpbml0ZSBsb29wOwogICAgIyAxMCBzaG91bGQgYmUgcGxlbnR5LCBidXQgaXQgbWF5IGJlIGluY3JlYXNlZCB0byBhbGxvdyBkZWVwbHkKICAgICMgbmVzdGVkIGV4cGFuc2lvbnMuCiAgICBteSAkbWF4X3Bhc3NlcyA9IDEwOwogICAgbXkgQG5ld19hcmd2ICAgPSAoKTsKCiAgICAjIGtlZXAgbG9vcGluZyB1bnRpbCBhbGwgZXhwYW5zaW9ucyBoYXZlIGJlZW4gY29udmVydGVkIGludG8gYWN0dWFsCiAgICAjIGRhc2ggcGFyYW1ldGVycy4uCiAgICBmb3JlYWNoIG15ICRwYXNzX2NvdW50ICggMCAuLiAkbWF4X3Bhc3NlcyApIHsKICAgICAgICBteSBAbmV3X2FyZ3YgICAgID0gKCk7CiAgICAgICAgbXkgJGFiYnJldl9jb3VudCA9IDA7CgogICAgICAgICMgbG9vcCBvdmVyIGVhY2ggaXRlbSBpbiBAQVJHVi4uCiAgICAgICAgZm9yZWFjaCBteSAkd29yZCAoQEFSR1YpIHsKCiAgICAgICAgICAgICMgY29udmVydCBhbnkgbGVhZGluZyAnbm8tJyB0byBqdXN0ICdubycKICAgICAgICAgICAgaWYgKCAkd29yZCA9fiAvXigtWy1dP25vKS0oLiopLyApIHsgJHdvcmQgPSAkMSAuICQyIH0KCiAgICAgICAgICAgICMgaWYgaXQgaXMgYSBkYXNoIGZsYWcgKGluc3RlYWQgb2YgYSBmaWxlIG5hbWUpLi4KICAgICAgICAgICAgaWYgKCAkd29yZCA9fiAvXi1bLV0/KFtcd1wtXSspKC4qKS8gKSB7CgogICAgICAgICAgICAgICAgbXkgJGFiciAgID0gJDE7CiAgICAgICAgICAgICAgICBteSAkZmxhZ3MgPSAkMjsKCiAgICAgICAgICAgICAgICAjIHNhdmUgdGhlIHJhdyBpbnB1dCBmb3IgZGVidWcgb3V0cHV0IGluIGNhc2Ugb2YgY2lyY3VsYXIgcmVmcwogICAgICAgICAgICAgICAgaWYgKCAkcGFzc19jb3VudCA9PSAwICkgewogICAgICAgICAgICAgICAgICAgIHB1c2goIEB7JHJyYXdfb3B0aW9uc30sICR3b3JkICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyByZWNvbWJpbmUgYWJicmV2aWF0aW9uIGFuZCBmbGFnLCBpZiBuZWNlc3NhcnksCiAgICAgICAgICAgICAgICAjIHRvIGFsbG93IGFiYnJldmlhdGlvbnMgd2l0aCBhcmd1bWVudHMgc3VjaCBhcyAnLXZ0PTEnCiAgICAgICAgICAgICAgICBpZiAoICRyZXhwYW5zaW9uLT57ICRhYnIgLiAkZmxhZ3MgfSApIHsKICAgICAgICAgICAgICAgICAgICAkYWJyICAgPSAkYWJyIC4gJGZsYWdzOwogICAgICAgICAgICAgICAgICAgICRmbGFncyA9ICIiOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgaWYgd2Ugc2VlIHRoaXMgZGFzaCBpdGVtIGluIHRoZSBleHBhbnNpb24gaGFzaC4uCiAgICAgICAgICAgICAgICBpZiAoICRyZXhwYW5zaW9uLT57JGFicn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJGFiYnJldl9jb3VudCsrOwoKICAgICAgICAgICAgICAgICAgICAjIHN0dWZmIGFsbCBvZiB0aGUgd29yZHMgdGhhdCBpdCBleHBhbmRzIHRvIGludG8gdGhlCiAgICAgICAgICAgICAgICAgICAgIyBuZXcgYXJnIGxpc3QgZm9yIHRoZSBuZXh0IHBhc3MKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRhYmJyZXYgKCBAeyAkcmV4cGFuc2lvbi0+eyRhYnJ9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzICRhYmJyZXY7ICAgICMgZm9yIHNhZmV0eTsgc2hvdWxkbid0IGhhcHBlbgogICAgICAgICAgICAgICAgICAgICAgICBwdXNoKCBAbmV3X2FyZ3YsICctLScgLiAkYWJicmV2IC4gJGZsYWdzICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgbm90IGluIGV4cGFuc2lvbiBoYXNoLCBtdXN0IGJlIGFjdHVhbCBsb25nIG5hbWUKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHB1c2goIEBuZXdfYXJndiwgJHdvcmQgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBub3QgYSBkYXNoIGl0ZW0sIHNvIGp1c3Qgc2F2ZSBpdCBmb3IgdGhlIG5leHQgcGFzcwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHB1c2goIEBuZXdfYXJndiwgJHdvcmQgKTsKICAgICAgICAgICAgfQogICAgICAgIH0gICAgIyBlbmQgb2YgdGhpcyBwYXNzCgogICAgICAgICMgdXBkYXRlIHBhcmFtZXRlciBsaXN0IEBBUkdWIHRvIHRoZSBuZXcgb25lCiAgICAgICAgQEFSR1YgPSBAbmV3X2FyZ3Y7CiAgICAgICAgbGFzdCB1bmxlc3MgKCAkYWJicmV2X2NvdW50ID4gMCApOwoKICAgICAgICAjIG1ha2Ugc3VyZSB3ZSBhcmUgbm90IGluIGFuIGluZmluaXRlIGxvb3AKICAgICAgICBpZiAoICRwYXNzX2NvdW50ID09ICRtYXhfcGFzc2VzICkgewogICAgICAgICAgICBsb2NhbCAkIiA9ICcpKCc7CiAgICAgICAgICAgIFdhcm4oPDxFT00pOwpJJ20gdGlyZWQuIFdlIHNlZW0gdG8gYmUgaW4gYW4gaW5maW5pdGUgbG9vcCB0cnlpbmcgdG8gZXhwYW5kIGFsaWFzZXMuCkhlcmUgYXJlIHRoZSByYXcgb3B0aW9uczsKKHJyYXdfb3B0aW9ucykKRU9NCiAgICAgICAgICAgIG15ICRudW0gPSBAbmV3X2FyZ3Y7CiAgICAgICAgICAgIGlmICggJG51bSA8IDUwICkgewogICAgICAgICAgICAgICAgV2Fybig8PEVPTSk7CkFmdGVyICRtYXhfcGFzc2VzIHBhc3NlcyBoZXJlIGlzIEFSR1YKKEBuZXdfYXJndikKRU9NCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBXYXJuKDw8RU9NKTsKQWZ0ZXIgJG1heF9wYXNzZXMgcGFzc2VzIEFSR1YgaGFzICRudW0gZW50cmllcwpFT00KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRjb25maWdfZmlsZSkgewogICAgICAgICAgICAgICAgRGllKDw8IkRJRSIpOwpQbGVhc2UgY2hlY2sgeW91ciBjb25maWd1cmF0aW9uIGZpbGUgJGNvbmZpZ19maWxlIGZvciBjaXJjdWxhci1yZWZlcmVuY2VzLiAKVG8gZGVhY3RpdmF0ZSBpdCwgdXNlIC1ucHJvLgpESUUKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIERpZSg8PCdESUUnKTsKUHJvZ3JhbSBidWcgLSBjaXJjdWxhci1yZWZlcmVuY2VzIGluIHRoZSAlZXhwYW5zaW9uIGhhc2gsIHByb2JhYmx5IGR1ZSB0bwphIHJlY2VudCBwcm9ncmFtIGNoYW5nZS4KRElFCiAgICAgICAgICAgIH0KICAgICAgICB9ICAgICMgZW5kIG9mIGNoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2VzCiAgICB9ICAgICMgZW5kIG9mIGxvb3Agb3ZlciBhbGwgcGFzc2VzCiAgICByZXR1cm47Cn0KCiMgRGVidWcgcm91dGluZSAtLSB0aGlzIHdpbGwgZHVtcCB0aGUgZXhwYW5zaW9uIGhhc2gKc3ViIGR1bXBfc2hvcnRfbmFtZXMgewogICAgbXkgJHJleHBhbnNpb24gPSBzaGlmdDsKICAgIHByaW50IFNURE9VVCA8PEVPTTsKTGlzdCBvZiBzaG9ydCBuYW1lcy4gIFRoaXMgbGlzdCBzaG93cyBob3cgYWxsIGFiYnJldmlhdGlvbnMgYXJlCnRyYW5zbGF0ZWQgaW50byBvdGhlciBhYmJyZXZpYXRpb25zIGFuZCwgZXZlbnR1YWxseSwgaW50byBsb25nIG5hbWVzLgpOZXcgYWJicmV2aWF0aW9ucyBtYXkgYmUgZGVmaW5lZCBpbiBhIC5wZXJsdGlkeXJjIGZpbGUuICAKRm9yIGEgbGlzdCBvZiBhbGwgbG9uZyBuYW1lcywgdXNlIHBlcmx0aWR5IC0tZHVtcC1sb25nLW5hbWVzICgtZGxuKS4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRU9NCiAgICBmb3JlYWNoIG15ICRhYmJyZXYgKCBzb3J0IGtleXMgJSRyZXhwYW5zaW9uICkgewogICAgICAgIG15IEBsaXN0ID0gQHsgJHJleHBhbnNpb24tPnskYWJicmV2fSB9OwogICAgICAgIHByaW50IFNURE9VVCAiJGFiYnJldiAtLT4gQGxpc3RcbiI7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBjaGVja192bXNfZmlsZW5hbWUgewoKICAgICMgZ2l2ZW4gYSB2YWxpZCBmaWxlbmFtZSAodGhlIHBlcmx0aWR5IGlucHV0IGZpbGUpCiAgICAjIGNyZWF0ZSBhIG1vZGlmaWVkIGZpbGVuYW1lIGFuZCBzZXBhcmF0b3IgY2hhcmFjdGVyCiAgICAjIHN1aXRhYmxlIGZvciBWTVMuCiAgICAjCiAgICAjIENvbnRyaWJ1dGVkIGJ5IE1pY2hhZWwgQ2FydG1lbGwKICAgICMKICAgIG15ICRmaWxlbmFtZSA9IHNoaWZ0OwogICAgbXkgKCAkYmFzZSwgJHBhdGggKSA9IGZpbGVwYXJzZSgkZmlsZW5hbWUpOwoKICAgICMgcmVtb3ZlIGV4cGxpY2l0IDsgdmVyc2lvbgogICAgJGJhc2UgPX4gcy87LT9cZCokLy8KCiAgICAgICMgcmVtb3ZlIGV4cGxpY2l0IC4gdmVyc2lvbiBpZSB0d28gZG90cyBpbiBmaWxlbmFtZSBOQiBeIGVzY2FwZXMgYSBkb3QKICAgICAgb3IgJGJhc2UgPX4gcy8oICAgICAgICAgICMgYmVnaW4gY2FwdHVyZSAkMQogICAgICAgICAgICAgICAgICAoPzpefFteXl0pXC4gIyBtYXRjaCBhIGRvdCBub3QgcHJlY2VkZWQgYnkgYSBjYXJldAogICAgICAgICAgICAgICAgICAoPzogICAgICAgICAgIyBmb2xsb3dlZCBieSBub3RoaW5nCiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAjIG9yCiAgICAgICAgICAgICAgICAgICAgLipbXl5dICAgICAjIGFueXRoaW5nIGVuZGluZyBpbiBhIG5vbiBjYXJldAogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICApICAgICAgICAgICAgICAjIGVuZCBjYXB0dXJlICQxCiAgICAgICAgICAgICAgICBcLi0/XGQqJCAgICAgICAjIG1hdGNoIC4gdmVyc2lvbiBudW1iZXIKICAgICAgICAgICAgICAvJDEveDsKCiAgICAjIG5vcm1hbGlzZSBmaWxlbmFtZSwgaWYgdGhlcmUgYXJlIG5vIHVuZXNjYXBlZCBkb3RzIHRoZW4gYXBwZW5kIG9uZQogICAgJGJhc2UgLj0gJy4nIHVubGVzcyAkYmFzZSA9fiAvKD86XnxbXl5dKVwuLzsKCiAgICAjIGlmIHdlIGRvbid0IGFscmVhZHkgaGF2ZSBhbiBleHRlbnNpb24gdGhlbiB3ZSBqdXN0IGFwcGVuZCB0aGUgZXh0ZW5zaW9uCiAgICBteSAkc2VwYXJhdG9yID0gKCAkYmFzZSA9fiAvXC4kLyApID8gIiIgOiAiXyI7CiAgICByZXR1cm4gKCAkcGF0aCAuICRiYXNlLCAkc2VwYXJhdG9yICk7Cn0KCnN1YiBXaW5fT1NfVHlwZSB7CgogICAgIyBUT0RPOiBhcmUgdGhlc2UgbW9yZSBzdGFuZGFyZCBuYW1lcz8KICAgICMgV2luMzJzIFdpbjk1IFdpbjk4IFdpbk1lIFdpbk5UMy41MSBXaW5OVDQgV2luMjAwMCBXaW5YUC8uTmV0IFdpbjIwMDMKCiAgICAjIFJldHVybnMgYSBzdHJpbmcgdGhhdCBkZXRlcm1pbmVzIHdoYXQgTVMgT1Mgd2UgYXJlIG9uLgogICAgIyBSZXR1cm5zIHdpbjMycyw5NSw5OCxNZSxOVDMuNTEsTlQ0LDIwMDAsWFAvLk5ldCxXaW4yMDAzCiAgICAjIFJldHVybnMgYmxhbmsgc3RyaW5nIGlmIG5vdCBhbiBNUyBzeXN0ZW0uCiAgICAjIE9yaWdpbmFsIGNvZGUgY29udHJpYnV0ZWQgYnk6IFl2ZXMgT3J0b24KICAgICMgV2UgbmVlZCB0byBrbm93IHRoaXMgdG8gZGVjaWRlIHdoZXJlIHRvIGxvb2sgZm9yIGNvbmZpZyBmaWxlcwoKICAgIG15ICRycGVuZGluZ19jb21wbGFpbnQgPSBzaGlmdDsKICAgIG15ICRvcyAgICAgICAgICAgICAgICAgPSAiIjsKICAgIHJldHVybiAkb3MgdW5sZXNzICReTyA9fiAvd2luMzJ8ZG9zL2k7ICAgICMgaXMgaXQgYSBNUyBib3g/CgogICAgIyBTeXN0ZW1zIGJ1aWx0IGZyb20gUGVybCBzb3VyY2UgbWF5IG5vdCBoYXZlIFdpbjMyLnBtCiAgICAjIEJ1dCBwcm9iYWJseSBoYXZlIFdpbjMyOjpHZXRPU1ZlcnNpb24oKSBhbnl3YXkgc28gdGhlCiAgICAjIGZvbGxvd2luZyBsaW5lIGlzIG5vdCAncmVxdWlyZWQnOgogICAgIyByZXR1cm4gJG9zIHVubGVzcyBldmFsKCdyZXF1aXJlIFdpbjMyJyk7CgogICAgIyBVc2UgdGhlIHN0YW5kYXJkIEFQSSBjYWxsIHRvIGRldGVybWluZSB0aGUgdmVyc2lvbgogICAgbXkgKCAkdW5kZWYsICRtYWpvciwgJG1pbm9yLCAkYnVpbGQsICRpZCApOwogICAgZXZhbCB7ICggJHVuZGVmLCAkbWFqb3IsICRtaW5vciwgJGJ1aWxkLCAkaWQgKSA9IFdpbjMyOjpHZXRPU1ZlcnNpb24oKSB9OwoKICAgICMKICAgICMgICAgTkFNRSAgICAgICAgICAgICAgICAgICBJRCAgIE1BSk9SICBNSU5PUgogICAgIyAgICBXaW5kb3dzIE5UIDQgICAgICAgICAgIDIgICAgICA0ICAgICAgIDAKICAgICMgICAgV2luZG93cyAyMDAwICAgICAgICAgICAyICAgICAgNSAgICAgICAwCiAgICAjICAgIFdpbmRvd3MgWFAgICAgICAgICAgICAgMiAgICAgIDUgICAgICAgMQogICAgIyAgICBXaW5kb3dzIFNlcnZlciAyMDAzICAgIDIgICAgICA1ICAgICAgIDIKCiAgICByZXR1cm4gIndpbjMycyIgdW5sZXNzICRpZDsgICAgIyBJZiBpZD09MCB0aGVuIGl0cyBhIHdpbjMycyBib3guCiAgICAkb3MgPSB7ICAgICAgICAgICAgICAgICAgICAgICAgIyBNYWdpYyBudW1iZXJzIGZyb20gTVNETgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZG9jdW1lbnRhdGlvbiBvZiBHZXRPU1ZlcnNpb24KICAgICAgICAxID0+IHsKICAgICAgICAgICAgMCAgPT4gIjk1IiwKICAgICAgICAgICAgMTAgPT4gIjk4IiwKICAgICAgICAgICAgOTAgPT4gIk1lIgogICAgICAgIH0sCiAgICAgICAgMiA9PiB7CiAgICAgICAgICAgIDAgID0+ICIyMDAwIiwgICAgICAgICAgIyBvciBOVCA0LCBzZWUgYmVsb3cKICAgICAgICAgICAgMSAgPT4gIlhQLy5OZXQiLAogICAgICAgICAgICAyICA9PiAiV2luMjAwMyIsCiAgICAgICAgICAgIDUxID0+ICJOVDMuNTEiCiAgICAgICAgfQogICAgfS0+eyRpZH0tPnskbWlub3J9OwoKICAgICMgSWYgJG9zIGlzIHVuZGVmaW5lZCwgdGhlIGFib3ZlIGNvZGUgaXMgb3V0IG9mIGRhdGUuICBTdWdnZXN0ZWQgdXBkYXRlcwogICAgIyBhcmUgd2VsY29tZS4KICAgIHVubGVzcyAoIGRlZmluZWQgJG9zICkgewogICAgICAgICRvcyA9ICIiOwoKICAgICAgICAjIERlYWN0aXZhdGVkIHRoaXMgbWVzc2FnZSAyMDE4MDMyMiBiZWNhdXNlIGl0IHdhcyBuZWVkbGVzc2x5CiAgICAgICAgIyBjYXVzaW5nIHNvbWUgdGVzdCBzY3JpcHRzIHRvIGZhaWwuICBOZWVkIGhlbHAgZnJvbSBzb21lb25lCiAgICAgICAgIyB3aXRoIGV4cGVydGlzZSBpbiBXaW5kb3dzIHRvIGRlY2lkZSB3aGF0IGlzIHBvc3NpYmxlIHdpdGggd2luZG93cy4KICAgICAgICAkeyRycGVuZGluZ19jb21wbGFpbnR9IC49IDw8RU9TIGlmICgwKTsKRXJyb3IgdHJ5aW5nIHRvIGRpc2NvdmVyIFdpbl9PU19UeXBlOiAkaWQ6JG1ham9yOiRtaW5vciBIYXMgbm8gbmFtZSBvZiByZWNvcmQhCldlIHdvbid0IGJlIGFibGUgdG8gbG9vayBmb3IgYSBzeXN0ZW0td2lkZSBjb25maWcgZmlsZS4KRU9TCiAgICB9CgogICAgIyBVbmZvcnR1bmF0ZWx5IHRoZSBsb2dpYyB1c2VkIGZvciB0aGUgdmFyaW91cyB2ZXJzaW9ucyBpc24ndCBzbyBjbGV2ZXIuLgogICAgIyBzbyB3ZSBoYXZlIHRvIGhhbmRsZSBhbiBvdXRzaWRlIGNhc2UuCiAgICByZXR1cm4gKCAkb3MgZXEgIjIwMDAiICYmICRtYWpvciAhPSA1ICkgPyAiTlQ0IiA6ICRvczsKfQoKc3ViIGlzX3VuaXggewogICAgcmV0dXJuCiAgICAgICAgICggJF5PICF+IC93aW4zMnxkb3MvaSApCiAgICAgICYmICggJF5PIG5lICdWTVMnICkKICAgICAgJiYgKCAkXk8gbmUgJ09TMicgKQogICAgICAmJiAoICReTyBuZSAnTWFjT1MnICk7Cn0KCnN1YiBsb29rX2Zvcl9XaW5kb3dzIHsKCiAgICAjIGRldGVybWluZSBXaW5kb3dzIHN1Yi10eXBlIGFuZCBsb2NhdGlvbiBvZgogICAgIyBzeXN0ZW0td2lkZSBjb25maWd1cmF0aW9uIGZpbGVzCiAgICBteSAkcnBlbmRpbmdfY29tcGxhaW50ID0gc2hpZnQ7CiAgICBteSAkaXNfV2luZG93cyAgICAgICAgID0gKCAkXk8gPX4gL3dpbjMyfGRvcy9pICk7CiAgICBteSAkV2luZG93c190eXBlOwogICAgJFdpbmRvd3NfdHlwZSA9IFdpbl9PU19UeXBlKCRycGVuZGluZ19jb21wbGFpbnQpIGlmICRpc19XaW5kb3dzOwogICAgcmV0dXJuICggJGlzX1dpbmRvd3MsICRXaW5kb3dzX3R5cGUgKTsKfQoKc3ViIGZpbmRfY29uZmlnX2ZpbGUgewoKICAgICMgbG9vayBmb3IgYSAucGVybHRpZHlyYyBjb25maWd1cmF0aW9uIGZpbGUKICAgICMgRm9yIFdpbmRvd3MgYWxzbyBsb29rIGZvciBhIGZpbGUgbmFtZWQgcGVybHRpZHkuaW5pCiAgICBteSAoICRpc19XaW5kb3dzLCAkV2luZG93c190eXBlLCAkcmNvbmZpZ19maWxlX2NoYXR0ZXIsCiAgICAgICAgJHJwZW5kaW5nX2NvbXBsYWludCApID0gQF87CgogICAgJHskcmNvbmZpZ19maWxlX2NoYXR0ZXJ9IC49ICIjIENvbmZpZyBmaWxlIHNlYXJjaC4uLnN5c3RlbSByZXBvcnRlZCBhczoiOwogICAgaWYgKCRpc19XaW5kb3dzKSB7CiAgICAgICAgJHskcmNvbmZpZ19maWxlX2NoYXR0ZXJ9IC49ICJXaW5kb3dzICRXaW5kb3dzX3R5cGVcbiI7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkeyRyY29uZmlnX2ZpbGVfY2hhdHRlcn0gLj0gIiAkXk9cbiI7CiAgICB9CgogICAgIyBzdWIgdG8gY2hlY2sgZmlsZSBleGlzdGVuY2UgYW5kIHJlY29yZCBhbGwgdGVzdHMKICAgIG15ICRleGlzdHNfY29uZmlnX2ZpbGUgPSBzdWIgewogICAgICAgIG15ICRjb25maWdfZmlsZSA9IHNoaWZ0OwogICAgICAgIHJldHVybiAwIHVubGVzcyAkY29uZmlnX2ZpbGU7CiAgICAgICAgJHskcmNvbmZpZ19maWxlX2NoYXR0ZXJ9IC49ICIjIFRlc3Rpbmc6ICRjb25maWdfZmlsZVxuIjsKICAgICAgICByZXR1cm4gLWYgJGNvbmZpZ19maWxlOwogICAgfTsKCiAgICAjIFN1YiB0byBzZWFyY2ggdXB3YXJkIGZvciBjb25maWcgZmlsZQogICAgbXkgJHJlc29sdmVfY29uZmlnX2ZpbGUgPSBzdWIgewoKICAgICAgICAjIHJlc29sdmUgPGRpcj4vLi4uLzxmaWxlPiwgbWVhbmluZyBsb29rIHVwd2FyZHMgZnJvbSBkaXJlY3RvcnkKICAgICAgICBteSAkY29uZmlnX2ZpbGUgPSBzaGlmdDsKICAgICAgICBpZiAoJGNvbmZpZ19maWxlKSB7CiAgICAgICAgICAgIGlmICggbXkgKCAkc3RhcnRfZGlyLCAkc2VhcmNoX2ZpbGUgKSA9CiAgICAgICAgICAgICAgICAoICRjb25maWdfZmlsZSA9fiBte14oLiopXC5cLlwuLyguKikkfSApICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHskcmNvbmZpZ19maWxlX2NoYXR0ZXJ9IC49CiAgICAgICAgICAgICAgICAgICIjIFNlYXJjaGluZyBVcHdhcmQ6ICRjb25maWdfZmlsZVxuIjsKICAgICAgICAgICAgICAgICRzdGFydF9kaXIgPSAnLicgaWYgISRzdGFydF9kaXI7CiAgICAgICAgICAgICAgICAkc3RhcnRfZGlyID0gQ3dkOjpyZWFscGF0aCgkc3RhcnRfZGlyKTsKICAgICAgICAgICAgICAgIGlmICggbXkgJGZvdW5kX2ZpbGUgPQogICAgICAgICAgICAgICAgICAgIGZpbmRfZmlsZV91cHdhcmRzKCAkc3RhcnRfZGlyLCAkc2VhcmNoX2ZpbGUgKSApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJGNvbmZpZ19maWxlID0gJGZvdW5kX2ZpbGU7CiAgICAgICAgICAgICAgICAgICAgJHskcmNvbmZpZ19maWxlX2NoYXR0ZXJ9IC49ICIjIEZvdW5kOiAkY29uZmlnX2ZpbGVcbiI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRjb25maWdfZmlsZTsKICAgIH07CgogICAgbXkgJGNvbmZpZ19maWxlOwoKICAgICMgbG9vayBpbiBjdXJyZW50IGRpcmVjdG9yeSBmaXJzdAogICAgJGNvbmZpZ19maWxlID0gIi5wZXJsdGlkeXJjIjsKICAgIHJldHVybiAkY29uZmlnX2ZpbGUgaWYgJGV4aXN0c19jb25maWdfZmlsZS0+KCRjb25maWdfZmlsZSk7CiAgICBpZiAoJGlzX1dpbmRvd3MpIHsKICAgICAgICAkY29uZmlnX2ZpbGUgPSAicGVybHRpZHkuaW5pIjsKICAgICAgICByZXR1cm4gJGNvbmZpZ19maWxlIGlmICRleGlzdHNfY29uZmlnX2ZpbGUtPigkY29uZmlnX2ZpbGUpOwogICAgfQoKICAgICMgRGVmYXVsdCBlbnZpcm9ubWVudCB2YXJzLgogICAgbXkgQGVudnMgPSBxdyhQRVJMVElEWSBIT01FKTsKCiAgICAjIENoZWNrIHRoZSBOVC8yay9YUCBsb2NhdGlvbnMsIGZpcnN0IGEgbG9jYWwgbWFjaGluZSBkZWYsIHRoZW4gYQogICAgIyBuZXR3b3JrIGRlZgogICAgcHVzaCBAZW52cywgcXcoVVNFUlBST0ZJTEUgSE9NRVNIQVJFKSBpZiAkXk8gPX4gL3dpbjMyL2k7CgogICAgIyBOb3cgZ28gdGhyb3VnaCB0aGUgZW52aXJvbm1lbnQgLi4uCiAgICBmb3JlYWNoIG15ICR2YXIgKEBlbnZzKSB7CiAgICAgICAgJHskcmNvbmZpZ19maWxlX2NoYXR0ZXJ9IC49ICIjIEV4YW1pbmluZzogXCRFTlZ7JHZhcn0iOwogICAgICAgIGlmICggZGVmaW5lZCggJEVOVnskdmFyfSApICkgewogICAgICAgICAgICAkeyRyY29uZmlnX2ZpbGVfY2hhdHRlcn0gLj0gIiA9ICRFTlZ7JHZhcn1cbiI7CgogICAgICAgICAgICAjIHRlc3QgRU5WeyBQRVJMVElEWSB9IGFzIGZpbGU6CiAgICAgICAgICAgIGlmICggJHZhciBlcSAnUEVSTFRJRFknICkgewogICAgICAgICAgICAgICAgJGNvbmZpZ19maWxlID0gIiRFTlZ7JHZhcn0iOwogICAgICAgICAgICAgICAgJGNvbmZpZ19maWxlID0gJHJlc29sdmVfY29uZmlnX2ZpbGUtPigkY29uZmlnX2ZpbGUpOwogICAgICAgICAgICAgICAgcmV0dXJuICRjb25maWdfZmlsZSBpZiAkZXhpc3RzX2NvbmZpZ19maWxlLT4oJGNvbmZpZ19maWxlKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB0ZXN0IEVOViBhcyBkaXJlY3Rvcnk6CiAgICAgICAgICAgICRjb25maWdfZmlsZSA9IGNhdGZpbGUoICRFTlZ7JHZhcn0sICIucGVybHRpZHlyYyIgKTsKICAgICAgICAgICAgJGNvbmZpZ19maWxlID0gJHJlc29sdmVfY29uZmlnX2ZpbGUtPigkY29uZmlnX2ZpbGUpOwogICAgICAgICAgICByZXR1cm4gJGNvbmZpZ19maWxlIGlmICRleGlzdHNfY29uZmlnX2ZpbGUtPigkY29uZmlnX2ZpbGUpOwoKICAgICAgICAgICAgaWYgKCRpc19XaW5kb3dzKSB7CiAgICAgICAgICAgICAgICAkY29uZmlnX2ZpbGUgPSBjYXRmaWxlKCAkRU5WeyR2YXJ9LCAicGVybHRpZHkuaW5pIiApOwogICAgICAgICAgICAgICAgJGNvbmZpZ19maWxlID0gJHJlc29sdmVfY29uZmlnX2ZpbGUtPigkY29uZmlnX2ZpbGUpOwogICAgICAgICAgICAgICAgcmV0dXJuICRjb25maWdfZmlsZSBpZiAkZXhpc3RzX2NvbmZpZ19maWxlLT4oJGNvbmZpZ19maWxlKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJHskcmNvbmZpZ19maWxlX2NoYXR0ZXJ9IC49ICJcbiI7CiAgICAgICAgfQogICAgfQoKICAgICMgdGhlbiBsb29rIGZvciBhIHN5c3RlbS13aWRlIGRlZmluaXRpb24KICAgICMgd2hlcmUgdG8gbG9vayB2YXJpZXMgd2l0aCBPUwogICAgaWYgKCRpc19XaW5kb3dzKSB7CgogICAgICAgIGlmICgkV2luZG93c190eXBlKSB7CiAgICAgICAgICAgIG15ICggJG9zLCAkc3lzdGVtLCAkYWxsdXNlcnMgKSA9CiAgICAgICAgICAgICAgV2luX0NvbmZpZ19Mb2NzKCAkcnBlbmRpbmdfY29tcGxhaW50LCAkV2luZG93c190eXBlICk7CgogICAgICAgICAgICAjIENoZWNrIEFsbCBVc2VycyBkaXJlY3RvcnksIGlmIHRoZXJlIGlzIG9uZS4KICAgICAgICAgICAgIyBpLmUuIEM6XERvY3VtZW50cyBhbmQgU2V0dGluZ3NcVXNlclxwZXJsdGlkeS5pbmkKICAgICAgICAgICAgaWYgKCRhbGx1c2VycykgewoKICAgICAgICAgICAgICAgICRjb25maWdfZmlsZSA9IGNhdGZpbGUoICRhbGx1c2VycywgIi5wZXJsdGlkeXJjIiApOwogICAgICAgICAgICAgICAgcmV0dXJuICRjb25maWdfZmlsZSBpZiAkZXhpc3RzX2NvbmZpZ19maWxlLT4oJGNvbmZpZ19maWxlKTsKCiAgICAgICAgICAgICAgICAkY29uZmlnX2ZpbGUgPSBjYXRmaWxlKCAkYWxsdXNlcnMsICJwZXJsdGlkeS5pbmkiICk7CiAgICAgICAgICAgICAgICByZXR1cm4gJGNvbmZpZ19maWxlIGlmICRleGlzdHNfY29uZmlnX2ZpbGUtPigkY29uZmlnX2ZpbGUpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIENoZWNrIHN5c3RlbSBkaXJlY3RvcnkuCiAgICAgICAgICAgICMgcmV0YWluIG9sZCBjb2RlIGluIGNhc2Ugc29tZW9uZSBoYXMgYmVlbiBhYmxlIHRvIGNyZWF0ZQogICAgICAgICAgICAjIGEgZmlsZSB3aXRoIGEgbGVhZGluZyBwZXJpb2QuCiAgICAgICAgICAgICRjb25maWdfZmlsZSA9IGNhdGZpbGUoICRzeXN0ZW0sICIucGVybHRpZHlyYyIgKTsKICAgICAgICAgICAgcmV0dXJuICRjb25maWdfZmlsZSBpZiAkZXhpc3RzX2NvbmZpZ19maWxlLT4oJGNvbmZpZ19maWxlKTsKCiAgICAgICAgICAgICRjb25maWdfZmlsZSA9IGNhdGZpbGUoICRzeXN0ZW0sICJwZXJsdGlkeS5pbmkiICk7CiAgICAgICAgICAgIHJldHVybiAkY29uZmlnX2ZpbGUgaWYgJGV4aXN0c19jb25maWdfZmlsZS0+KCRjb25maWdfZmlsZSk7CiAgICAgICAgfQogICAgfQoKICAgICMgUGxhY2UgdG8gYWRkIGN1c3RvbWl6YXRpb24gY29kZSBmb3Igb3RoZXIgc3lzdGVtcwogICAgZWxzaWYgKCAkXk8gZXEgJ09TMicgKSB7CiAgICB9CiAgICBlbHNpZiAoICReTyBlcSAnTWFjT1MnICkgewogICAgfQogICAgZWxzaWYgKCAkXk8gZXEgJ1ZNUycgKSB7CiAgICB9CgogICAgIyBBc3N1bWUgc29tZSBraW5kIG9mIFVuaXgKICAgIGVsc2UgewoKICAgICAgICAkY29uZmlnX2ZpbGUgPSAiL3Vzci9sb2NhbC9ldGMvcGVybHRpZHlyYyI7CiAgICAgICAgcmV0dXJuICRjb25maWdfZmlsZSBpZiAkZXhpc3RzX2NvbmZpZ19maWxlLT4oJGNvbmZpZ19maWxlKTsKCiAgICAgICAgJGNvbmZpZ19maWxlID0gIi9ldGMvcGVybHRpZHlyYyI7CiAgICAgICAgcmV0dXJuICRjb25maWdfZmlsZSBpZiAkZXhpc3RzX2NvbmZpZ19maWxlLT4oJGNvbmZpZ19maWxlKTsKICAgIH0KCiAgICAjIENvdWxkbid0IGZpbmQgYSBjb25maWcgZmlsZQogICAgcmV0dXJuOwp9CgpzdWIgV2luX0NvbmZpZ19Mb2NzIHsKCiAgICAjIEluIHNjYWxhciBjb250ZXh0IHJldHVybnMgdGhlIE9TIG5hbWUgKDk1IDk4IE1FIE5UMy41MSBOVDQgMjAwMCBYUCksCiAgICAjIG9yIHVuZGVmIGlmIGl0cyBub3QgYSB3aW4zMiBPUy4gIEluIGxpc3QgY29udGV4dCByZXR1cm5zIE9TLCBTeXN0ZW0KICAgICMgRGlyZWN0b3J5LCBhbmQgQWxsIFVzZXJzIERpcmVjdG9yeS4gIEFsbCBVc2VycyB3aWxsIGJlIGVtcHR5IG9uIGEKICAgICMgOXgvTWUgYm94LiAgQ29udHJpYnV0ZWQgYnk6IFl2ZXMgT3J0b24uCgogICAgIyBPcmlnaW5hbCBjb2Rpbmc6CiAgICAjIG15ICRycGVuZGluZ19jb21wbGFpbnQgPSBzaGlmdDsKICAgICMgbXkgJG9zID0gKEBfKSA/IHNoaWZ0IDogV2luX09TX1R5cGUoKTsKCiAgICBteSAoICRycGVuZGluZ19jb21wbGFpbnQsICRvcyApID0gQF87CiAgICBpZiAoICEkb3MgKSB7ICRvcyA9IFdpbl9PU19UeXBlKCk7IH0KCiAgICByZXR1cm4gdW5sZXNzICRvczsKCiAgICBteSAkc3lzdGVtICAgPSAiIjsKICAgIG15ICRhbGx1c2VycyA9ICIiOwoKICAgIGlmICggJG9zID1+IC85WzU4XXxNZS8gKSB7CiAgICAgICAgJHN5c3RlbSA9ICJDOi9XaW5kb3dzIjsKICAgIH0KICAgIGVsc2lmICggJG9zID1+IC9OVHxYUHwyMDA/LyApIHsKICAgICAgICAkc3lzdGVtID0gKCAkb3MgPX4gL1hQLyApID8gIkM6L1dpbmRvd3MvIiA6ICJDOi9XaW5OVC8iOwogICAgICAgICRhbGx1c2VycyA9CiAgICAgICAgICAoICRvcyA9fiAvTlQvICkKICAgICAgICAgID8gIkM6L1dpbk5UL3Byb2ZpbGVzL0FsbCBVc2Vycy8iCiAgICAgICAgICA6ICJDOi9Eb2N1bWVudHMgYW5kIFNldHRpbmdzL0FsbCBVc2Vycy8iOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgVGhpcyBjdXJyZW50bHkgd291bGQgb25seSBoYXBwZW4gb24gYSB3aW4zMnMgY29tcHV0ZXIuICBJIGRvbid0IGhhdmUKICAgICAgICAjIG9uZSB0byB0ZXN0LCBzbyBJIGFtIHVuc3VyZSBob3cgdG8gcHJvY2VlZC4gIFN1Z2dlc3Rpb25zIHdlbGNvbWUhCiAgICAgICAgJHskcnBlbmRpbmdfY29tcGxhaW50fSAuPQoiSSBkb250IGtub3cgYSBzZW5zaWJsZSBwbGFjZSB0byBsb29rIGZvciBjb25maWcgZmlsZXMgb24gYW4gJG9zIHN5c3RlbS5cbiI7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgcmV0dXJuIHdhbnRhcnJheSA/ICggJG9zLCAkc3lzdGVtLCAkYWxsdXNlcnMgKSA6ICRvczsKfQoKc3ViIGR1bXBfY29uZmlnX2ZpbGUgewogICAgbXkgKCAkZmgsICRjb25maWdfZmlsZSwgJHJjb25maWdfZmlsZV9jaGF0dGVyICkgPSBAXzsKICAgIHByaW50IFNURE9VVCAiJCRyY29uZmlnX2ZpbGVfY2hhdHRlciI7CiAgICBpZiAoJGZoKSB7CiAgICAgICAgcHJpbnQgU1RET1VUICIjIER1bXAgb2YgZmlsZTogJyRjb25maWdfZmlsZSdcbiI7CiAgICAgICAgd2hpbGUgKCBteSAkbGluZSA9ICRmaC0+Z2V0bGluZSgpICkgeyBwcmludCBTVERPVVQgJGxpbmUgfQogICAgICAgIGV2YWwgeyAkZmgtPmNsb3NlKCkgfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHByaW50IFNURE9VVCAiIyAuLi5ubyBjb25maWcgZmlsZSBmb3VuZFxuIjsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIHJlYWRfY29uZmlnX2ZpbGUgewoKICAgIG15ICggJGZoLCAkY29uZmlnX2ZpbGUsICRyZXhwYW5zaW9uICkgPSBAXzsKICAgIG15IEBjb25maWdfbGlzdCA9ICgpOwoKICAgICMgZmlsZSBpcyBiYWQgaWYgbm9uLWVtcHR5ICRkZWF0aF9tZXNzYWdlIGlzIHJldHVybmVkCiAgICBteSAkZGVhdGhfbWVzc2FnZSA9ICIiOwoKICAgIG15ICRuYW1lID0gdW5kZWY7CiAgICBteSAkbGluZV9ubzsKICAgIG15ICRvcGVuaW5nX2JyYWNlX2xpbmU7CiAgICB3aGlsZSAoIG15ICRsaW5lID0gJGZoLT5nZXRsaW5lKCkgKSB7CiAgICAgICAgJGxpbmVfbm8rKzsKICAgICAgICBjaG9tcCAkbGluZTsKICAgICAgICAoICRsaW5lLCAkZGVhdGhfbWVzc2FnZSApID0KICAgICAgICAgIHN0cmlwX2NvbW1lbnQoICRsaW5lLCAkY29uZmlnX2ZpbGUsICRsaW5lX25vICk7CiAgICAgICAgbGFzdCBpZiAoJGRlYXRoX21lc3NhZ2UpOwogICAgICAgIG5leHQgdW5sZXNzICRsaW5lOwogICAgICAgICRsaW5lID1+IHMvXlxzKiguKj8pXHMqJC8kMS87ICAgICMgdHJpbSBib3RoIGVuZHMKICAgICAgICBuZXh0IHVubGVzcyAkbGluZTsKCiAgICAgICAgbXkgJGJvZHkgPSAkbGluZTsKCiAgICAgICAgIyBMb29rIGZvciBjb21wbGV0ZSBvciBwYXJ0aWFsIGFiYnJldmlhdGlvbiBkZWZpbml0aW9uIG9mIHRoZSBmb3JtCiAgICAgICAgIyAgICAgbmFtZSB7IGJvZHkgfSAgIG9yICBuYW1lIHsgICBvciAgICBuYW1lIHsgYm9keQogICAgICAgICMgU2VlIHJ1bGVzIGluIHBlcmx0aWR5J3MgcGVybGRvYyBwYWdlCiAgICAgICAgIyBTZWN0aW9uOiBPdGhlciBDb250cm9scyAtIENyZWF0aW5nIGEgbmV3IGFiYnJldmlhdGlvbgogICAgICAgIGlmICggJGxpbmUgPX4gL14oKFx3KylccypceykoLiopPyQvICkgewogICAgICAgICAgICBteSAkb2xkbmFtZSA9ICRuYW1lOwogICAgICAgICAgICAoICRuYW1lLCAkYm9keSApID0gKCAkMiwgJDMgKTsKCiAgICAgICAgICAgICMgQ2Fubm90IHN0YXJ0IG5ldyBhYmJyZXZpYXRpb24gdW5sZXNzIG9sZCBhYmJyZXZpYXRpb24gaXMgY29tcGxldGUKICAgICAgICAgICAgbGFzdCBpZiAoJG9wZW5pbmdfYnJhY2VfbGluZSk7CgogICAgICAgICAgICAkb3BlbmluZ19icmFjZV9saW5lID0gJGxpbmVfbm8gdW5sZXNzICggJGJvZHkgJiYgJGJvZHkgPX4gcy9cfSQvLyApOwoKICAgICAgICAgICAgIyBoYW5kbGUgYSBuZXcgYWxpYXMgZGVmaW5pdGlvbgogICAgICAgICAgICBpZiAoICR7JHJleHBhbnNpb259eyRuYW1lfSApIHsKICAgICAgICAgICAgICAgIGxvY2FsICQiID0gJykoJzsKICAgICAgICAgICAgICAgIG15IEBuYW1lcyA9IHNvcnQga2V5cyAlJHJleHBhbnNpb247CiAgICAgICAgICAgICAgICAkZGVhdGhfbWVzc2FnZSA9CiAgICAgICAgICAgICAgICAgICAgIkhlcmUgaXMgYSBsaXN0IG9mIGFsbCBpbnN0YWxsZWQgYWxpYXNlc1xuKEBuYW1lcylcbiIKICAgICAgICAgICAgICAgICAgLiAiQXR0ZW1wdGluZyB0byByZWRlZmluZSBhbGlhcyAoJG5hbWUpIGluIGNvbmZpZyBmaWxlICRjb25maWdfZmlsZSBsaW5lICQuXG4iOwogICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgfQogICAgICAgICAgICAkeyRyZXhwYW5zaW9ufXskbmFtZX0gPSBbXTsKICAgICAgICB9CgogICAgICAgICMgbGVhZGluZyBvcGVuaW5nIGJyYWNlcyBub3QgYWxsb3dlZAogICAgICAgIGVsc2lmICggJGxpbmUgPX4gL157LyApIHsKICAgICAgICAgICAgJG9wZW5pbmdfYnJhY2VfbGluZSA9IHVuZGVmOwogICAgICAgICAgICAkZGVhdGhfbWVzc2FnZSA9CiAgICAgICAgICAgICAgIlVuZXhwZWN0ZWQgJ3snIGF0IGxpbmUgJGxpbmVfbm8gaW4gY29uZmlnIGZpbGUgJyRjb25maWdfZmlsZSdcbiI7CiAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgfQoKICAgICAgICAjIExvb2sgZm9yIGFiYnJldmlhdGlvbiBjbG9zaW5nOiAgICBib2R5IH0gICBvciAgICB9CiAgICAgICAgZWxzaWYgKCAkbGluZSA9fiAvXiguKik/XH0kLyApIHsKICAgICAgICAgICAgJGJvZHkgPSAkMTsKICAgICAgICAgICAgaWYgKCRvcGVuaW5nX2JyYWNlX2xpbmUpIHsKICAgICAgICAgICAgICAgICRvcGVuaW5nX2JyYWNlX2xpbmUgPSB1bmRlZjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRkZWF0aF9tZXNzYWdlID0KIlVuZXhwZWN0ZWQgJ30nIGF0IGxpbmUgJGxpbmVfbm8gaW4gY29uZmlnIGZpbGUgJyRjb25maWdfZmlsZSdcbiI7CiAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIE5vdyBzdG9yZSBhbnkgcGFyYW1ldGVycwogICAgICAgIGlmICgkYm9keSkgewoKICAgICAgICAgICAgbXkgKCAkcmJvZHlfcGFydHMsICRtc2cgKSA9IHBhcnNlX2FyZ3MoJGJvZHkpOwogICAgICAgICAgICBpZiAoJG1zZykgewogICAgICAgICAgICAgICAgJGRlYXRoX21lc3NhZ2UgPSA8PEVPTTsKRXJyb3IgcmVhZGluZyBmaWxlICckY29uZmlnX2ZpbGUnIGF0IGxpbmUgbnVtYmVyICRsaW5lX25vLgokbXNnClBsZWFzZSBmaXggdGhpcyBsaW5lIG9yIHVzZSAtbnBybyB0byBhdm9pZCByZWFkaW5nIHRoaXMgZmlsZQpFT00KICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkbmFtZSkgewoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIGxlYWRpbmcgZGFzaGVzIGlmIHRoaXMgaXMgYW4gYWxpYXMKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCBAeyRyYm9keV9wYXJ0c30gKSB7IHMvXlwtKy8vOyB9CiAgICAgICAgICAgICAgICBwdXNoIEB7ICR7JHJleHBhbnNpb259eyRuYW1lfSB9LCBAeyRyYm9keV9wYXJ0c307CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBwdXNoKCBAY29uZmlnX2xpc3QsIEB7JHJib2R5X3BhcnRzfSApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkb3BlbmluZ19icmFjZV9saW5lKSB7CiAgICAgICAgJGRlYXRoX21lc3NhZ2UgPQoiRGlkbid0IHNlZSBhICd9JyB0byBtYXRjaCB0aGUgJ3snIGF0IGxpbmUgJG9wZW5pbmdfYnJhY2VfbGluZSBpbiBjb25maWcgZmlsZSAnJGNvbmZpZ19maWxlJ1xuIjsKICAgIH0KICAgIGV2YWwgeyAkZmgtPmNsb3NlKCkgfTsKICAgIHJldHVybiAoIFxAY29uZmlnX2xpc3QsICRkZWF0aF9tZXNzYWdlICk7Cn0KCnN1YiBzdHJpcF9jb21tZW50IHsKCiAgICAjIFN0cmlwIGFueSBjb21tZW50IGZyb20gYSBjb21tYW5kIGxpbmUKICAgIG15ICggJGluc3RyLCAkY29uZmlnX2ZpbGUsICRsaW5lX25vICkgPSBAXzsKICAgIG15ICRtc2cgPSAiIjsKCiAgICAjIGNoZWNrIGZvciBmdWxsLWxpbmUgY29tbWVudAogICAgaWYgKCAkaW5zdHIgPX4gL15ccyojLyApIHsKICAgICAgICByZXR1cm4gKCAiIiwgJG1zZyApOwogICAgfQoKICAgICMgbm90aGluZyB0byBkbyBpZiBubyBjb21tZW50cwogICAgaWYgKCAkaW5zdHIgIX4gLyMvICkgewogICAgICAgIHJldHVybiAoICRpbnN0ciwgJG1zZyApOwogICAgfQoKICAgICMgaGFuZGxlIGNhc2Ugb2Ygbm8gcXVvdGVzCiAgICBlbHNpZiAoICRpbnN0ciAhfiAvWyciXS8gKSB7CgogICAgICAgICMgV2Ugbm93IHJlcXVpcmUgYSBzcGFjZSBiZWZvcmUgdGhlICMgb2YgYSBzaWRlIGNvbW1lbnQKICAgICAgICAjIHRoaXMgYWxsb3dzIHNvbWV0aGluZyBsaWtlOgogICAgICAgICMgICAgLXNiY3A9IwogICAgICAgICMgT3RoZXJ3aXNlLCBpdCB3b3VsZCBoYXZlIHRvIGJlIHF1b3RlZDoKICAgICAgICAjICAgIC1zYmNwPScjJwogICAgICAgICRpbnN0ciA9fiBzL1xzK1wjLiokLy87CiAgICAgICAgcmV0dXJuICggJGluc3RyLCAkbXNnICk7CiAgICB9CgogICAgIyBoYW5kbGUgY29tbWVudHMgYW5kIHF1b3RlcwogICAgbXkgJG91dHN0ciAgICAgPSAiIjsKICAgIG15ICRxdW90ZV9jaGFyID0gIiI7CiAgICB3aGlsZSAoMSkgewoKICAgICAgICAjIGxvb2tpbmcgZm9yIGVuZGluZyBxdW90ZSBjaGFyYWN0ZXIKICAgICAgICBpZiAoJHF1b3RlX2NoYXIpIHsKICAgICAgICAgICAgaWYgKCAkaW5zdHIgPX4gL1xHKCRxdW90ZV9jaGFyKS9nYyApIHsKICAgICAgICAgICAgICAgICRxdW90ZV9jaGFyID0gIiI7CiAgICAgICAgICAgICAgICAkb3V0c3RyIC49ICQxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJGluc3RyID1+IC9cRyguKS9nYyApIHsKICAgICAgICAgICAgICAgICRvdXRzdHIgLj0gJDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZXJyb3IuLndlIHJlYWNoZWQgdGhlIGVuZCB3aXRob3V0IHNlZWluZyB0aGUgZW5kaW5nIHF1b3RlIGNoYXIKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkbXNnID0gPDxFT007CkVycm9yIHJlYWRpbmcgZmlsZSAkY29uZmlnX2ZpbGUgYXQgbGluZSBudW1iZXIgJGxpbmVfbm8uCkRpZCBub3Qgc2VlIGVuZGluZyBxdW90ZSBjaGFyYWN0ZXIgPCRxdW90ZV9jaGFyPiBpbiB0aGlzIHRleHQ6CiRpbnN0cgpQbGVhc2UgZml4IHRoaXMgbGluZSBvciB1c2UgLW5wcm8gdG8gYXZvaWQgcmVhZGluZyB0aGlzIGZpbGUKRU9NCiAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGFjY3VtdWxhdGluZyBjaGFyYWN0ZXJzIGFuZCBsb29raW5nIGZvciBzdGFydCBvZiBhIHF1b3RlZCBzdHJpbmcKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgaWYgKCAkaW5zdHIgPX4gL1xHKFtcIlwnXSkvZ2MgKSB7CiAgICAgICAgICAgICAgICAkb3V0c3RyIC49ICQxOwogICAgICAgICAgICAgICAgJHF1b3RlX2NoYXIgPSAkMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBOb3RlOiBub3QgeWV0IGVuZm9yY2luZyB0aGUgc3BhY2UtYmVmb3JlLWhhc2ggcnVsZSBmb3Igc2lkZQogICAgICAgICAgICAjIGNvbW1lbnRzIGlmIHRoZSBwYXJhbWV0ZXIgaXMgcXVvdGVkLgogICAgICAgICAgICBlbHNpZiAoICRpbnN0ciA9fiAvXEcjL2djICkgewogICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRpbnN0ciA9fiAvXEcoLikvZ2MgKSB7CiAgICAgICAgICAgICAgICAkb3V0c3RyIC49ICQxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAoICRvdXRzdHIsICRtc2cgKTsKfQoKc3ViIHBhcnNlX2FyZ3MgewoKICAgICMgUGFyc2UgYSBjb21tYW5kIHN0cmluZyBjb250YWluaW5nIG11bHRpcGxlIHN0cmluZyB3aXRoIHBvc3NpYmxlCiAgICAjIHF1b3RlcywgaW50byBpbmRpdmlkdWFsIGNvbW1hbmRzLiAgSXQgbWlnaHQgbG9vayBsaWtlIHRoaXMsIGZvciBleGFtcGxlOgogICAgIwogICAgIyAgICAtd2JhPSIgKyAtICIgIC1zb21lLXRoaW5nIC13YmI9Jy4gJiYgfHwnCiAgICAjCiAgICAjIFRoZXJlIGlzIG5vIG5lZWQsIGF0IHByZXNlbnQsIHRvIGhhbmRsZSBlc2NhcGVkIHF1b3RlIGNoYXJhY3RlcnMuCiAgICAjIChUaGV5IGFyZSBub3QgcGVybHRpZHkgdG9rZW5zLCBzbyBuZWVkbid0IGJlIGluIHN0cmluZ3MpLgoKICAgIG15ICgkYm9keSkgICAgID0gQF87CiAgICBteSBAYm9keV9wYXJ0cyA9ICgpOwogICAgbXkgJHF1b3RlX2NoYXIgPSAiIjsKICAgIG15ICRwYXJ0ICAgICAgID0gIiI7CiAgICBteSAkbXNnICAgICAgICA9ICIiOwogICAgd2hpbGUgKDEpIHsKCiAgICAgICAgIyBsb29raW5nIGZvciBlbmRpbmcgcXVvdGUgY2hhcmFjdGVyCiAgICAgICAgaWYgKCRxdW90ZV9jaGFyKSB7CiAgICAgICAgICAgIGlmICggJGJvZHkgPX4gL1xHKCRxdW90ZV9jaGFyKS9nYyApIHsKICAgICAgICAgICAgICAgICRxdW90ZV9jaGFyID0gIiI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkYm9keSA9fiAvXEcoLikvZ2MgKSB7CiAgICAgICAgICAgICAgICAkcGFydCAuPSAkMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBlcnJvci4ud2UgcmVhY2hlZCB0aGUgZW5kIHdpdGhvdXQgc2VlaW5nIHRoZSBlbmRpbmcgcXVvdGUgY2hhcgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICggbGVuZ3RoKCRwYXJ0KSApIHsgcHVzaCBAYm9keV9wYXJ0cywgJHBhcnQ7IH0KICAgICAgICAgICAgICAgICRtc2cgPSA8PEVPTTsKRGlkIG5vdCBzZWUgZW5kaW5nIHF1b3RlIGNoYXJhY3RlciA8JHF1b3RlX2NoYXI+IGluIHRoaXMgdGV4dDoKJGJvZHkKRU9NCiAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGFjY3VtdWxhdGluZyBjaGFyYWN0ZXJzIGFuZCBsb29raW5nIGZvciBzdGFydCBvZiBhIHF1b3RlZCBzdHJpbmcKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgaWYgKCAkYm9keSA9fiAvXEcoW1wiXCddKS9nYyApIHsKICAgICAgICAgICAgICAgICRxdW90ZV9jaGFyID0gJDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkYm9keSA9fiAvXEcoXHMrKS9nYyApIHsKICAgICAgICAgICAgICAgIGlmICggbGVuZ3RoKCRwYXJ0KSApIHsgcHVzaCBAYm9keV9wYXJ0cywgJHBhcnQ7IH0KICAgICAgICAgICAgICAgICRwYXJ0ID0gIiI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkYm9keSA9fiAvXEcoLikvZ2MgKSB7CiAgICAgICAgICAgICAgICAkcGFydCAuPSAkMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICggbGVuZ3RoKCRwYXJ0KSApIHsgcHVzaCBAYm9keV9wYXJ0cywgJHBhcnQ7IH0KICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gKCBcQGJvZHlfcGFydHMsICRtc2cgKTsKfQoKc3ViIGR1bXBfbG9uZ19uYW1lcyB7CgogICAgbXkgQG5hbWVzID0gQF87CiAgICBwcmludCBTVERPVVQgPDxFT007CiMgQ29tbWFuZCBsaW5lIGxvbmcgbmFtZXMgKHBhc3NlZCB0byBHZXRPcHRpb25zKQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgaGVyZSBpcyBhIHN1bW1hcnkgb2YgdGhlIEdldG9wdCBjb2RlczoKIyA8bm9uZT4gZG9lcyBub3QgdGFrZSBhbiBhcmd1bWVudAojID1zIHRha2VzIGEgbWFuZGF0b3J5IHN0cmluZwojIDpzIHRha2VzIGFuIG9wdGlvbmFsIHN0cmluZwojID1pIHRha2VzIGEgbWFuZGF0b3J5IGludGVnZXIKIyA6aSB0YWtlcyBhbiBvcHRpb25hbCBpbnRlZ2VyCiMgISBkb2VzIG5vdCB0YWtlIGFuIGFyZ3VtZW50IGFuZCBtYXkgYmUgbmVnYXRlZAojICBpLmUuLCAtZm9vIGFuZCAtbm9mb28gYXJlIGFsbG93ZWQKIyBhIGRvdWJsZSBkYXNoIHNpZ25hbHMgdGhlIGVuZCBvZiB0aGUgb3B0aW9ucyBsaXN0CiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFT00KCiAgICBmb3JlYWNoIG15ICRuYW1lICggc29ydCBAbmFtZXMgKSB7IHByaW50IFNURE9VVCAiJG5hbWVcbiIgfQogICAgcmV0dXJuOwp9CgpzdWIgZHVtcF9kZWZhdWx0cyB7CiAgICBteSBAZGVmYXVsdHMgPSBAXzsKICAgIHByaW50IFNURE9VVCAiRGVmYXVsdCBjb21tYW5kIGxpbmUgb3B0aW9uczpcbiI7CiAgICBmb3JlYWNoIG15ICRsaW5lICggc29ydCBAZGVmYXVsdHMgKSB7IHByaW50IFNURE9VVCAiJGxpbmVcbiIgfQogICAgcmV0dXJuOwp9CgpzdWIgcmVhZGFibGVfb3B0aW9ucyB7CgogICAgIyByZXR1cm4gb3B0aW9ucyBmb3IgdGhpcyBydW4gYXMgYSBzdHJpbmcgd2hpY2ggY291bGQgYmUKICAgICMgcHV0IGluIGEgcGVybHRpZHlyYyBmaWxlCiAgICBteSAoICRyT3B0cywgJHJvcHRpb25fc3RyaW5nICkgPSBAXzsKICAgIG15ICVHZXRvcHRfZmxhZ3M7CiAgICBteSAkckdldG9wdF9mbGFncyAgICA9IFwlR2V0b3B0X2ZsYWdzOwogICAgbXkgJHJlYWRhYmxlX29wdGlvbnMgPSAiIyBGaW5hbCBwYXJhbWV0ZXIgc2V0IGZvciB0aGlzIHJ1bi5cbiI7CiAgICAkcmVhZGFibGVfb3B0aW9ucyAuPQogICAgICAiIyBTZWUgdXRpbGl0eSAncGVybHRpZHlyY19kdW1wLnBsJyBmb3IgbmljZXIgZm9ybWF0dGluZy5cbiI7CiAgICBmb3JlYWNoIG15ICRvcHQgKCBAeyRyb3B0aW9uX3N0cmluZ30gKSB7CiAgICAgICAgbXkgJGZsYWcgPSAiIjsKICAgICAgICBpZiAoICRvcHQgPX4gLyguKikoIXw9LiopJC8gKSB7CiAgICAgICAgICAgICRvcHQgID0gJDE7CiAgICAgICAgICAgICRmbGFnID0gJDI7CiAgICAgICAgfQogICAgICAgIGlmICggZGVmaW5lZCggJHJPcHRzLT57JG9wdH0gKSApIHsKICAgICAgICAgICAgJHJHZXRvcHRfZmxhZ3MtPnskb3B0fSA9ICRmbGFnOwogICAgICAgIH0KICAgIH0KICAgIGZvcmVhY2ggbXkgJGtleSAoIHNvcnQga2V5cyAleyRyT3B0c30gKSB7CiAgICAgICAgbXkgJGZsYWcgICA9ICRyR2V0b3B0X2ZsYWdzLT57JGtleX07CiAgICAgICAgbXkgJHZhbHVlICA9ICRyT3B0cy0+eyRrZXl9OwogICAgICAgIG15ICRwcmVmaXggPSAnLS0nOwogICAgICAgIG15ICRzdWZmaXggPSAiIjsKICAgICAgICBpZiAoJGZsYWcpIHsKICAgICAgICAgICAgaWYgKCAkZmxhZyA9fiAvXj0vICkgewogICAgICAgICAgICAgICAgaWYgKCAkdmFsdWUgIX4gL15cZCskLyApIHsgJHZhbHVlID0gJyInIC4gJHZhbHVlIC4gJyInIH0KICAgICAgICAgICAgICAgICRzdWZmaXggPSAiPSIgLiAkdmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkZmxhZyA9fiAvXiEvICkgewogICAgICAgICAgICAgICAgJHByZWZpeCAuPSAibm8iIHVubGVzcyAoJHZhbHVlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIHNob3VsZG4ndCBoYXBwZW4KICAgICAgICAgICAgICAgICRyZWFkYWJsZV9vcHRpb25zIC49CiAgICAgICAgICAgICAgICAgICIjIEVSUk9SIGluIGR1bXBfb3B0aW9uczogdW5yZWNvZ25pemVkIGZsYWcgJGZsYWcgZm9yICRrZXlcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJHJlYWRhYmxlX29wdGlvbnMgLj0gJHByZWZpeCAuICRrZXkgLiAkc3VmZml4IC4gIlxuIjsKICAgIH0KICAgIHJldHVybiAkcmVhZGFibGVfb3B0aW9uczsKfQoKc3ViIHNob3dfdmVyc2lvbiB7CiAgICBwcmludCBTVERPVVQgPDwiRU9NIjsKVGhpcyBpcyBwZXJsdGlkeSwgdiRWRVJTSU9OIAoKQ29weXJpZ2h0IDIwMDAtMjAxOSwgU3RldmUgSGFuY29jawoKUGVybHRpZHkgaXMgZnJlZSBzb2Z0d2FyZSBhbmQgbWF5IGJlIGNvcGllZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQpHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aGljaCBpcyBpbmNsdWRlZCBpbiB0aGUgZGlzdHJpYnV0aW9uIGZpbGVzLgoKQ29tcGxldGUgZG9jdW1lbnRhdGlvbiBmb3IgcGVybHRpZHkgY2FuIGJlIGZvdW5kIHVzaW5nICdtYW4gcGVybHRpZHknCm9yIG9uIHRoZSBpbnRlcm5ldCBhdCBodHRwOi8vcGVybHRpZHkuc291cmNlZm9yZ2UubmV0LgpFT00KICAgIHJldHVybjsKfQoKc3ViIHVzYWdlIHsKCiAgICBwcmludCBTVERPVVQgPDxFT0Y7ClRoaXMgaXMgcGVybHRpZHkgdmVyc2lvbiAkVkVSU0lPTiwgYSBwZXJsIHNjcmlwdCBpbmRlbnRlci4gIFVzYWdlOgoKICAgIHBlcmx0aWR5IFsgb3B0aW9ucyBdIGZpbGUxIGZpbGUyIGZpbGUzIC4uLgogICAgICAgICAgICAob3V0cHV0IGdvZXMgdG8gZmlsZTEudGR5LCBmaWxlMi50ZHksIGZpbGUzLnRkeSwgLi4uKQogICAgcGVybHRpZHkgWyBvcHRpb25zIF0gZmlsZTEgLW8gb3V0ZmlsZQogICAgcGVybHRpZHkgWyBvcHRpb25zIF0gZmlsZTEgLXN0ID5vdXRmaWxlCiAgICBwZXJsdGlkeSBbIG9wdGlvbnMgXSA8aW5maWxlID5vdXRmaWxlCgpPcHRpb25zIGhhdmUgc2hvcnQgYW5kIGxvbmcgZm9ybXMuIFNob3J0IGZvcm1zIGFyZSBzaG93bjsgc2VlCm1hbiBwYWdlcyBmb3IgbG9uZyBmb3Jtcy4gIE5vdGU6ICc9cycgaW5kaWNhdGVzIGEgcmVxdWlyZWQgc3RyaW5nLAphbmQgJz1uJyBpbmRpY2F0ZXMgYSByZXF1aXJlZCBpbnRlZ2VyLgoKSS9PIGNvbnRyb2wKIC1oICAgICAgc2hvdyB0aGlzIGhlbHAKIC1vPWZpbGUgbmFtZSBvZiB0aGUgb3V0cHV0IGZpbGUgKG9ubHkgaWYgc2luZ2xlIGlucHV0IGZpbGUpCiAtb2V4dD1zIGNoYW5nZSBvdXRwdXQgZXh0ZW5zaW9uIGZyb20gJ3RkeScgdG8gcwogLW9wYXRoPXBhdGggIGNoYW5nZSBwYXRoIHRvIGJlICdwYXRoJyBmb3Igb3V0cHV0IGZpbGVzCiAtYiAgICAgIGJhY2t1cCBvcmlnaW5hbCB0byAuYmFrIGFuZCBtb2RpZnkgZmlsZSBpbi1wbGFjZQogLWJleHQ9cyBjaGFuZ2UgZGVmYXVsdCBiYWNrdXAgZXh0ZW5zaW9uIGZyb20gJ2JhaycgdG8gcwogLXEgICAgICBkZWFjdGl2YXRlIGVycm9yIG1lc3NhZ2VzIChmb3IgcnVubmluZyB1bmRlciBlZGl0b3IpCiAtdyAgICAgIGluY2x1ZGUgbm9uLWNyaXRpY2FsIHdhcm5pbmcgbWVzc2FnZXMgaW4gdGhlIC5FUlIgZXJyb3Igb3V0cHV0CiAtc3luICAgIHJ1biBwZXJsIC1jIHRvIGNoZWNrIHN5bnRheCAoZGVmYXVsdCB1bmRlciB1bml4IHN5c3RlbXMpCiAtbG9nICAgIHNhdmUgLkxPRyBmaWxlLCB3aGljaCBoYXMgdXNlZnVsIGRpYWdub3N0aWNzCiAtZiAgICAgIGZvcmNlIHBlcmx0aWR5IHRvIHJlYWQgYSBiaW5hcnkgZmlsZQogLWcgICAgICBsaWtlIC1sb2cgYnV0IHdyaXRlcyBtb3JlIGRldGFpbGVkIC5MT0cgZmlsZSwgZm9yIGRlYnVnZ2luZyBzY3JpcHRzCiAtb3B0ICAgIHdyaXRlIHRoZSBzZXQgb2Ygb3B0aW9ucyBhY3R1YWxseSB1c2VkIHRvIGEgLkxPRyBmaWxlCiAtbnBybyAgIGlnbm9yZSAucGVybHRpZHlyYyBjb25maWd1cmF0aW9uIGNvbW1hbmQgZmlsZSAKIC1wcm89ZmlsZSAgIHJlYWQgY29uZmlndXJhdGlvbiBjb21tYW5kcyBmcm9tIGZpbGUgaW5zdGVhZCBvZiAucGVybHRpZHlyYyAKIC1zdCAgICAgc2VuZCBvdXRwdXQgdG8gc3RhbmRhcmQgb3V0cHV0LCBTVERPVVQKIC1zZSAgICAgc2VuZCBhbGwgZXJyb3Igb3V0cHV0IHRvIHN0YW5kYXJkIGVycm9yIG91dHB1dCwgU1RERVJSCiAtdiAgICAgIGRpc3BsYXkgdmVyc2lvbiBudW1iZXIgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBxdWl0CgpCYXNpYyBPcHRpb25zOgogLWk9biAgICB1c2UgbiBjb2x1bW5zIHBlciBpbmRlbnRhdGlvbiBsZXZlbCAoZGVmYXVsdCBuPTQpCiAtdCAgICAgIHRhYnM6IHVzZSBvbmUgdGFiIGNoYXJhY3RlciBwZXIgaW5kZW50YXRpb24gbGV2ZWwsIG5vdCByZWNvbW1lbmRlZAogLW50ICAgICBubyB0YWJzOiB1c2UgbiBzcGFjZXMgcGVyIGluZGVudGF0aW9uIGxldmVsIChkZWZhdWx0KQogLWV0PW4gICBlbnRhYiBsZWFkaW5nIHdoaXRlc3BhY2UgbiBzcGFjZXMgcGVyIHRhYjsgbm90IHJlY29tbWVuZGVkCiAtaW8gICAgICJpbmRlbnQgb25seSI6IGp1c3QgZG8gaW5kZW50YXRpb24sIG5vIG90aGVyIGZvcm1hdHRpbmcuCiAtc2lsPW4gIHNldCBzdGFydGluZyBpbmRlbnRhdGlvbiBsZXZlbCB0byBuOyAgdXNlIGlmIGF1dG8gZGV0ZWN0aW9uIGZhaWxzCiAtb2xlPXMgIHNwZWNpZnkgb3V0cHV0IGxpbmUgZW5kaW5nIChzPWRvcyBvciB3aW4sIG1hYywgdW5peCkKIC1wbGUgICAga2VlcCBvdXRwdXQgbGluZSBlbmRpbmdzIHNhbWUgYXMgaW5wdXQgKGlucHV0IG11c3QgYmUgZmlsZW5hbWUpCgpXaGl0ZXNwYWNlIENvbnRyb2wKIC1md3MgICAgZnJlZXplIHdoaXRlc3BhY2U7IHRoaXMgZGlzYWJsZXMgYWxsIHdoaXRlc3BhY2UgY2hhbmdlcwogICAgICAgICAgIGFuZCBkaXNhYmxlcyB0aGUgZm9sbG93aW5nIHN3aXRjaGVzOgogLWJ0PW4gICBzZXRzIGJyYWNlIHRpZ2h0bmVzcywgIG49ICgwID0gbG9vc2UsIDE9ZGVmYXVsdCwgMiA9IHRpZ2h0KQogLWJidCAgICBzYW1lIGFzIC1idCBidXQgZm9yIGNvZGUgYmxvY2sgYnJhY2VzOyBzYW1lIGFzIC1idCBpZiBub3QgZ2l2ZW4KIC1iYnZ0ICAgYmxvY2sgYnJhY2VzIHZlcnRpY2FsbHkgdGlnaHQ7IHVzZSB3aXRoIC1ibCBvciAtYmxpCiAtYmJ2dGw9cyAgbWFrZSAtYmJ2dCB0byBhcHBseSB0byBzZWxlY3RlZCBsaXN0IG9mIGJsb2NrIHR5cGVzCiAtcHQ9biAgIHBhcmVuIHRpZ2h0bmVzcyAobj0wLCAxIG9yIDIpCiAtc2J0PW4gIHNxdWFyZSBicmFja2V0IHRpZ2h0bmVzcyAobj0wLCAxLCBvciAyKQogLWJ2dD1uICBicmFjZSB2ZXJ0aWNhbCB0aWdodG5lc3MsIAogICAgICAgICBuPSgwPW9wZW4sIDE9Y2xvc2UgdW5sZXNzIG11bHRpcGxlIHN0ZXBzIG9uIGEgbGluZSwgMj1hbHdheXMgY2xvc2UpCiAtcHZ0PW4gIHBhcmVuIHZlcnRpY2FsIHRpZ2h0bmVzcyAoc2VlIC1idnQgZm9yIG4pCiAtc2J2dD1uIHNxdWFyZSBicmFja2V0IHZlcnRpY2FsIHRpZ2h0bmVzcyAoc2VlIC1idnQgZm9yIG4pCiAtYnZ0Yz1uIGNsb3NpbmcgYnJhY2UgdmVydGljYWwgdGlnaHRuZXNzOiAKICAgICAgICAgbj0oMD1vcGVuLCAxPXNvbWV0aW1lcyBjbG9zZSwgMj1hbHdheXMgY2xvc2UpCiAtcHZ0Yz1uIGNsb3NpbmcgcGFyZW4gdmVydGljYWwgdGlnaHRuZXNzLCBzZWUgLWJ2dGMgZm9yIG4uCiAtc2J2dGM9biBjbG9zaW5nIHNxdWFyZSBicmFja2V0IHZlcnRpY2FsIHRpZ2h0bmVzcywgc2VlIC1idnRjIGZvciBuLgogLWNpPW4gICBzZXRzIGNvbnRpbnVhdGlvbiBpbmRlbnRhdGlvbj1uLCAgZGVmYXVsdCBpcyBuPTIgc3BhY2VzCiAtbHAgICAgIGxpbmUgdXAgcGFyZW50aGVzZXMsIGJyYWNrZXRzLCBhbmQgbm9uLUJMT0NLIGJyYWNlcwogLXNmcyAgICBhZGQgc3BhY2UgYmVmb3JlIHNlbWljb2xvbiBpbiBmb3IoIDsgOyApCiAtYXdzICAgIGFsbG93IHBlcmx0aWR5IHRvIGFkZCB3aGl0ZXNwYWNlIChkZWZhdWx0KQogLWR3cyAgICBkZWxldGUgYWxsIG9sZCBub24tZXNzZW50aWFsIHdoaXRlc3BhY2UgCiAtaWNiICAgIGluZGVudCBjbG9zaW5nIGJyYWNlIG9mIGEgY29kZSBibG9jawogLWN0aT1uICBjbG9zaW5nIGluZGVudGF0aW9uIG9mIHBhcmVuLCBzcXVhcmUgYnJhY2tldCwgb3Igbm9uLWJsb2NrIGJyYWNlOiAKICAgICAgICAgbj0wIG5vbmUsID0xIGFsaWduIHdpdGggb3BlbmluZywgPTIgb25lIGZ1bGwgaW5kZW50YXRpb24gbGV2ZWwKIC1pY3AgICAgZXF1aXZhbGVudCB0byAtY3RpPTIKIC13bHM9cyAgd2FudCBzcGFjZSBsZWZ0IG9mIHRva2VucyBpbiBzdHJpbmc7IGkuZS4gLW53bHM9JysgLSAqIC8nCiAtd3JzPXMgIHdhbnQgc3BhY2UgcmlnaHQgb2YgdG9rZW5zIGluIHN0cmluZzsKIC1zdHMgICAgcHV0IHNwYWNlIGJlZm9yZSB0ZXJtaW5hbCBzZW1pY29sb24gb2YgYSBzdGF0ZW1lbnQKIC1zYWs9cyAgcHV0IHNwYWNlIGJldHdlZW4ga2V5d29yZHMgZ2l2ZW4gaW4gcyBhbmQgJygnOwogLW5zYWs9cyBubyBzcGFjZSBiZXR3ZWVuIGtleXdvcmRzIGluIHMgYW5kICcoJzsgaS5lLiAtbnNhaz0nbXkgb3VyIGxvY2FsJwoKTGluZSBCcmVhayBDb250cm9sCiAtZm5sICAgIGZyZWV6ZSBuZXdsaW5lczsgdGhpcyBkaXNhYmxlcyBhbGwgbGluZSBicmVhayBjaGFuZ2VzCiAgICAgICAgICAgIGFuZCBkaXNhYmxlcyB0aGUgZm9sbG93aW5nIHN3aXRjaGVzOgogLWFubCAgICBhZGQgbmV3bGluZXM7ICBvayB0byBpbnRyb2R1Y2UgbmV3IGxpbmUgYnJlYWtzCiAtYmJzICAgIGFkZCBibGFuayBsaW5lIGJlZm9yZSBzdWJzIGFuZCBwYWNrYWdlcwogLWJiYyAgICBhZGQgYmxhbmsgbGluZSBiZWZvcmUgYmxvY2sgY29tbWVudHMKIC1iYmIgICAgYWRkIGJsYW5rIGxpbmUgYmV0d2VlbiBtYWpvciBibG9ja3MKIC1rYmw9biAga2VlcCBvbGQgYmxhbmsgbGluZXM/IDA9bm8sIDE9c29tZSwgMj1hbGwKIC1tYmw9biAgbWF4aW11bSBjb25zZWN1dGl2ZSBibGFuayBsaW5lcyB0byBvdXRwdXQgKGRlZmF1bHQ9MSkKIC1jZSAgICAgY3VkZGxlZCBlbHNlOyB1c2UgdGhpcyBzdHlsZTogJ30gZWxzZSB7JwogLWNiICAgICBjdWRkbGVkIGJsb2NrcyAob3RoZXIgdGhhbiAnaWYtZWxzaWYtZWxzZScpCiAtY2JsPXMgIGxpc3Qgb2YgYmxvY2tzIHRvIGN1ZGRsZWQsIGRlZmF1bHQgJ3RyeS1jYXRjaC1maW5hbGx5JwogLWRubCAgICBkZWxldGUgb2xkIG5ld2xpbmVzIChkZWZhdWx0KQogLWw9biAgICBtYXhpbXVtIGxpbmUgbGVuZ3RoOyAgZGVmYXVsdCBuPTgwCiAtYmwgICAgIG9wZW5pbmcgYnJhY2Ugb24gbmV3IGxpbmUgCiAtc2JsICAgIG9wZW5pbmcgc3ViIGJyYWNlIG9uIG5ldyBsaW5lLiAgdmFsdWUgb2YgLWJsIGlzIHVzZWQgaWYgbm90IGdpdmVuLgogLWJsaSAgICBvcGVuaW5nIGJyYWNlIG9uIG5ldyBsaW5lIGFuZCBpbmRlbnRlZAogLWJhciAgICBvcGVuaW5nIGJyYWNlIGFsd2F5cyBvbiByaWdodCwgZXZlbiBmb3IgbG9uZyBjbGF1c2VzCiAtdnQ9biAgIHZlcnRpY2FsIHRpZ2h0bmVzcyAocmVxdWlyZXMgLWxwKTsgbiBjb250cm9scyBicmVhayBhZnRlciBvcGVuaW5nCiAgICAgICAgIHRva2VuOiAwPW5ldmVyICAxPW5vIGJyZWFrIGlmIG5leHQgbGluZSBiYWxhbmNlZCAgIDI9bm8gYnJlYWsKIC12dGM9biAgdmVydGljYWwgdGlnaHRuZXNzIG9mIGNsb3NpbmcgY29udGFpbmVyOyBuIGNvbnRyb2xzIGlmIGNsb3NpbmcKICAgICAgICAgdG9rZW4gc3RhcnRzIG5ldyBsaW5lOiAwPWFsd2F5cyAgMT1ub3QgdW5sZXNzIGxpc3QgIDE9bmV2ZXIKIC13YmE9cyAgd2FudCBicmVhayBhZnRlciB0b2tlbnMgaW4gc3RyaW5nOyBpLmUuIHdiYT0nOiAuJwogLXdiYj1zICB3YW50IGJyZWFrIGJlZm9yZSB0b2tlbnMgaW4gc3RyaW5nCiAtd24gICAgIHdlbGQgbmVzdGVkOiBjb21iaW5lcyBvcGVuaW5nIGFuZCBjbG9zaW5nIHRva2VucyB3aGVuIGJvdGggYXJlIGFkamFjZW50CgpGb2xsb3dpbmcgT2xkIEJyZWFrcG9pbnRzCiAta2lzICAgIGtlZXAgaW50ZXJpb3Igc2VtaWNvbG9ucy4gIEFsbG93cyBtdWx0aXBsZSBzdGF0ZW1lbnRzIHBlciBsaW5lLgogLWJvYyAgICBicmVhayBhdCBvbGQgY29tbWEgYnJlYWtzOiB0dXJucyBvZmYgYWxsIGF1dG9tYXRpYyBsaXN0IGZvcm1hdHRpbmcKIC1ib2wgICAgYnJlYWsgYXQgb2xkIGxvZ2ljYWwgYnJlYWtwb2ludHM6IG9yLCBhbmQsIHx8LCAmJiAoZGVmYXVsdCkKIC1ib20gICAgYnJlYWsgYXQgb2xkIG1ldGhvZCBjYWxsIGJyZWFrcG9pbnRzOiAtPgogLWJvayAgICBicmVhayBhdCBvbGQgbGlzdCBrZXl3b3JkIGJyZWFrcG9pbnRzIHN1Y2ggYXMgbWFwLCBzb3J0IChkZWZhdWx0KQogLWJvdCAgICBicmVhayBhdCBvbGQgY29uZGl0aW9uYWwgKHRlcm5hcnkgPzopIG9wZXJhdG9yIGJyZWFrcG9pbnRzIChkZWZhdWx0KQogLWJvYSAgICBicmVhayBhdCBvbGQgYXR0cmlidXRlIGJyZWFrcG9pbnRzIAogLWNhYj1uICBicmVhayBhdCBjb21tYXMgYWZ0ZXIgYSBjb21tYS1hcnJvdyAoPT4pOgogICAgICAgICBuPTAgYnJlYWsgYXQgYWxsIGNvbW1hcyBhZnRlciA9PgogICAgICAgICBuPTEgc3RhYmxlOiBicmVhayB1bmxlc3MgdGhpcyBicmVha3MgYW4gZXhpc3Rpbmcgb25lLWxpbmUgY29udGFpbmVyCiAgICAgICAgIG49MiBicmVhayBvbmx5IGlmIGEgb25lLWxpbmUgY29udGFpbmVyIGNhbm5vdCBiZSBmb3JtZWQKICAgICAgICAgbj0zIGRvIG5vdCB0cmVhdCBjb21tYXMgYWZ0ZXIgPT4gc3BlY2lhbGx5IGF0IGFsbAoKQ29tbWVudCBjb250cm9scwogLWliYyAgICBpbmRlbnQgYmxvY2sgY29tbWVudHMgKGRlZmF1bHQpCiAtaXNiYyAgIGluZGVudCBzcGFjZWQgYmxvY2sgY29tbWVudHM7IG1heSBpbmRlbnQgdW5sZXNzIG5vIGxlYWRpbmcgc3BhY2UKIC1tc2M9biAgbWluaW11bSBkZXNpcmVkIHNwYWNlcyB0byBzaWRlIGNvbW1lbnQsIGRlZmF1bHQgNAogLWZwc2M9biBmaXggcG9zaXRpb24gZm9yIHNpZGUgY29tbWVudHM7IGRlZmF1bHQgMDsKIC1jc2MgICAgYWRkIG9yIHVwZGF0ZSBjbG9zaW5nIHNpZGUgY29tbWVudHMgYWZ0ZXIgY2xvc2luZyBCTE9DSyBicmFjZQogLWRjc2MgICBkZWxldGUgY2xvc2luZyBzaWRlIGNvbW1lbnRzIGNyZWF0ZWQgYnkgYSAtY3NjIGNvbW1hbmQKIC1jc2NwPXMgY2hhbmdlIGNsb3Npbmcgc2lkZSBjb21tZW50IHByZWZpeCB0byBiZSBvdGhlciB0aGFuICcjIyBlbmQnCiAtY3NjbD1zIGNoYW5nZSBjbG9zaW5nIHNpZGUgY29tbWVudCB0byBhcHBseSB0byBzZWxlY3RlZCBsaXN0IG9mIGJsb2NrcwogLWNzY2k9biBtaW5pbXVtIG51bWJlciBvZiBsaW5lcyBuZWVkZWQgdG8gYXBwbHkgYSAtY3NjIHRhZywgZGVmYXVsdCBuPTYKIC1jc2N0PW4gbWF4aW11bSBudW1iZXIgb2YgY29sdW1ucyBvZiBhcHBlbmRlZCB0ZXh0LCBkZWZhdWx0IG49MjAgCiAtY3NjdyAgIGNhdXNlcyB3YXJuaW5nIGlmIG9sZCBzaWRlIGNvbW1lbnQgaXMgb3ZlcndyaXR0ZW4gd2l0aCAtY3NjCgogLXNiYyAgICB1c2UgJ3N0YXRpYyBibG9jayBjb21tZW50cycgaWRlbnRpZmllZCBieSBsZWFkaW5nICcjIycgKGRlZmF1bHQpCiAtc2JjcD1zIGNoYW5nZSBzdGF0aWMgYmxvY2sgY29tbWVudCBpZGVudGlmaWVyIHRvIGJlIG90aGVyIHRoYW4gJyMjJwogLW9zYmMgICBvdXRkZW50IHN0YXRpYyBibG9jayBjb21tZW50cwoKIC1zc2MgICAgdXNlICdzdGF0aWMgc2lkZSBjb21tZW50cycgaWRlbnRpZmllZCBieSBsZWFkaW5nICcjIycgKGRlZmF1bHQpCiAtc3NjcD1zIGNoYW5nZSBzdGF0aWMgc2lkZSBjb21tZW50IGlkZW50aWZpZXIgdG8gYmUgb3RoZXIgdGhhbiAnIyMnCgpEZWxldGUgc2VsZWN0ZWQgdGV4dAogLWRhYyAgICBkZWxldGUgYWxsIGNvbW1lbnRzIEFORCBwb2QKIC1kYmMgICAgZGVsZXRlIGJsb2NrIGNvbW1lbnRzICAgICAKIC1kc2MgICAgZGVsZXRlIHNpZGUgY29tbWVudHMgIAogLWRwICAgICBkZWxldGUgcG9kCgpTZW5kIHNlbGVjdGVkIHRleHQgdG8gYSAnLlRFRScgZmlsZQogLXRhYyAgICB0ZWUgYWxsIGNvbW1lbnRzIEFORCBwb2QKIC10YmMgICAgdGVlIGJsb2NrIGNvbW1lbnRzICAgICAgIAogLXRzYyAgICB0ZWUgc2lkZSBjb21tZW50cyAgICAgICAKIC10cCAgICAgdGVlIHBvZCAgICAgICAgICAgCgpPdXRkZW50aW5nCiAtb2xxICAgIG91dGRlbnQgbG9uZyBxdW90ZWQgc3RyaW5ncyAoZGVmYXVsdCkgCiAtb2xjICAgIG91dGRlbnQgYSBsb25nIGJsb2NrIGNvbW1lbnQgbGluZQogLW9sYSAgICBvdXRkZW50IHN0YXRlbWVudCBsYWJlbHMKIC1va3cgICAgb3V0ZGVudCBjb250cm9sIGtleXdvcmRzIChyZWRvLCBuZXh0LCBsYXN0LCBnb3RvLCByZXR1cm4pCiAtb2t3bD1zIHNwZWNpZnkgYWx0ZXJuYXRpdmUga2V5d29yZHMgZm9yIC1va3cgY29tbWFuZAoKT3RoZXIgY29udHJvbHMKIC1tZnQ9biAgbWF4aW11bSBmaWVsZHMgcGVyIHRhYmxlOyBkZWZhdWx0IG49NDAKIC14ICAgICAgZG8gbm90IGZvcm1hdCBsaW5lcyBiZWZvcmUgaGFzaC1iYW5nIGxpbmUgKGkuZS4sIGZvciBWTVMpCiAtYXNjICAgIGFsbG93cyBwZXJsdGlkeSB0byBhZGQgYSAnOycgd2hlbiBtaXNzaW5nIChkZWZhdWx0KQogLWRzbSAgICBhbGxvd3MgcGVybHRpZHkgdG8gZGVsZXRlIGFuIHVubmVjZXNzYXJ5ICc7JyAgKGRlZmF1bHQpCgpDb21iaW5hdGlvbnMgb2Ygb3RoZXIgcGFyYW1ldGVycwogLWdudSAgICAgYXR0ZW1wdCB0byBmb2xsb3cgR05VIENvZGluZyBTdGFuZGFyZHMgYXMgYXBwbGllZCB0byBwZXJsCiAtbWFuZ2xlICByZW1vdmUgYXMgbWFueSBuZXdsaW5lcyBhcyBwb3NzaWJsZSAoYnV0IGtlZXAgY29tbWVudHMgYW5kIHBvZHMpCiAtZXh0cnVkZSAgaW5zZXJ0IGFzIG1hbnkgbmV3bGluZXMgYXMgcG9zc2libGUKCkR1bXAgYW5kIGRpZSwgZGVidWdnaW5nCiAtZG9wICAgIGR1bXAgb3B0aW9ucyB1c2VkIGluIHRoaXMgcnVuIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgcXVpdAogLWRkZiAgICBkdW1wIGRlZmF1bHQgb3B0aW9ucyB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIHF1aXQKIC1kc24gICAgZHVtcCBhbGwgb3B0aW9uIHNob3J0IG5hbWVzIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgcXVpdAogLWRsbiAgICBkdW1wIG9wdGlvbiBsb25nIG5hbWVzIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgcXVpdAogLWRwcm8gICBkdW1wIHdoYXRldmVyIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyBpbiBlZmZlY3QgdG8gc3RhbmRhcmQgb3V0cHV0CiAtZHR0ICAgIGR1bXAgYWxsIHRva2VuIHR5cGVzIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgcXVpdAoKSFRNTAogLWh0bWwgd3JpdGUgYW4gaHRtbCBmaWxlIChzZWUgJ21hbiBwZXJsMndlYicgZm9yIG1hbnkgb3B0aW9ucykKICAgICAgIE5vdGU6IHdoZW4gLWh0bWwgaXMgdXNlZCwgbm8gaW5kZW50YXRpb24gb3IgZm9ybWF0dGluZyBhcmUgZG9uZS4KICAgICAgIEhpbnQ6IHRyeSBwZXJsdGlkeSAtaHRtbCAtY3NzPW15c3R5bGUuY3NzIGZpbGVuYW1lLnBsCiAgICAgICBhbmQgZWRpdCBteXN0eWxlLmNzcyB0byBjaGFuZ2UgdGhlIGFwcGVhcmFuY2Ugb2YgZmlsZW5hbWUuaHRtbC4KICAgICAgIC1ubm4gZ2l2ZXMgbGluZSBudW1iZXJzCiAgICAgICAtcHJlIG9ubHkgd3JpdGVzIG91dCA8cHJlPi4uPC9wcmU+IGNvZGUgc2VjdGlvbgogICAgICAgLXRvYyBwbGFjZXMgYSB0YWJsZSBvZiBjb250ZW50cyB0byBzdWJzIGF0IHRoZSB0b3AgKGRlZmF1bHQpCiAgICAgICAtcG9kIHBhc3NlcyBwb2QgdGV4dCB0aHJvdWdoIHBvZDJodG1sIChkZWZhdWx0KQogICAgICAgLWZybSB3cml0ZSBodG1sIGFzIGEgZnJhbWUgKDMgZmlsZXMpCiAgICAgICAtdGV4dD1zIGV4dHJhIGV4dGVuc2lvbiBmb3IgdGFibGUgb2YgY29udGVudHMgaWYgLWZybSwgZGVmYXVsdD0ndG9jJwogICAgICAgLXNleHQ9cyBleHRyYSBleHRlbnNpb24gZm9yIGZpbGUgY29udGVudCBpZiAtZnJtLCBkZWZhdWx0PSdzcmMnCgpBIHByZWZpeCBvZiAibiIgbmVnYXRlcyBzaG9ydCBmb3JtIHRvZ2dsZSBzd2l0Y2hlcywgYW5kIGEgcHJlZml4IG9mICJubyIKbmVnYXRlcyB0aGUgbG9uZyBmb3Jtcy4gIEZvciBleGFtcGxlLCAtbmFzYyBtZWFucyBkb24ndCBhZGQgbWlzc2luZwpzZW1pY29sb25zLiAgCgpJZiB5b3UgYXJlIHVuYWJsZSB0byBzZWUgdGhpcyBlbnRpcmUgdGV4dCwgdHJ5ICJwZXJsdGlkeSAtaCB8IG1vcmUiCkZvciBtb3JlIGRldGFpbGVkIGluZm9ybWF0aW9uLCBhbmQgYWRkaXRpb25hbCBvcHRpb25zLCB0cnkgIm1hbiBwZXJsdGlkeSIsCm9yIGdvIHRvIHRoZSBwZXJsdGlkeSBob21lIHBhZ2UgYXQgaHR0cDovL3Blcmx0aWR5LnNvdXJjZWZvcmdlLm5ldApFT0YKCiAgICByZXR1cm47Cn0KCnN1YiBwcm9jZXNzX3RoaXNfZmlsZSB7CgogICAgbXkgKCAkdG9rZW5pemVyLCAkZm9ybWF0dGVyICkgPSBAXzsKCiAgICB3aGlsZSAoIG15ICRsaW5lID0gJHRva2VuaXplci0+Z2V0X2xpbmUoKSApIHsKICAgICAgICAkZm9ybWF0dGVyLT53cml0ZV9saW5lKCRsaW5lKTsKICAgIH0KICAgIG15ICRzZXZlcmVfZXJyb3IgPSAkdG9rZW5pemVyLT5yZXBvcnRfdG9rZW5pemF0aW9uX2Vycm9ycygpOwogICAgZXZhbCB7ICRmb3JtYXR0ZXItPmZpbmlzaF9mb3JtYXR0aW5nKCRzZXZlcmVfZXJyb3IpIH07CgogICAgcmV0dXJuOwp9CgpzdWIgY2hlY2tfc3ludGF4IHsKCiAgICAjIFVzZSAncGVybCAtYycgdG8gbWFrZSBzdXJlIHRoYXQgd2UgZGlkIG5vdCBjcmVhdGUgYmFkIHN5bnRheAogICAgIyBUaGlzIGlzIGEgdmVyeSBnb29kIGluZGVwZW5kZW50IGNoZWNrIGZvciBwcm9ncmFtbWluZyBlcnJvcnMKICAgICMKICAgICMgR2l2ZW4gbmFtZXMgb2YgdGhlIGlucHV0IGFuZCBvdXRwdXQgZmlsZXMsICgkaXN0cmVhbSwgJG9zdHJlYW0pLAogICAgIyB3ZSBkbyB0aGUgZm9sbG93aW5nOgogICAgIyAtIGNoZWNrIHN5bnRheCBvZiB0aGUgaW5wdXQgZmlsZQogICAgIyAtIGlmIGJhZCwgYWxsIGRvbmUgKGNvdWxkIGJlIGFuIGluY29tcGxldGUgY29kZSBzbmlwcGV0KQogICAgIyAtIGlmIGluZmlsZSBzeW50YXggb2ssIHRoZW4gY2hlY2sgc3ludGF4IG9mIHRoZSBvdXRwdXQgZmlsZTsKICAgICMgICAtIGlmIG91dGZpbGUgc3ludGF4IGJhZCwgaXNzdWUgd2FybmluZzsgdGhpcyBpbXBsaWVzIGEgY29kZSBidWchCiAgICAjIC0gc2V0IGFuZCByZXR1cm4gZmxhZyAiaW5maWxlX3N5bnRheF9vayIgOiA9LTEgYmFkIDAgdW5rbm93biAxIGdvb2QKCiAgICBteSAoICRpc3RyZWFtLCAkb3N0cmVhbSwgJGxvZ2dlcl9vYmplY3QsICRyT3B0cyApID0gQF87CiAgICBteSAkaW5maWxlX3N5bnRheF9vayA9IDA7CiAgICBteSAkbGluZV9vZl9kYXNoZXMgICA9ICctJyB4IDQyIC4gIlxuIjsKCiAgICBteSAkZmxhZ3MgPSAkck9wdHMtPnsncGVybC1zeW50YXgtY2hlY2stZmxhZ3MnfTsKCiAgICAjIGJlIHN1cmUgd2UgaW52b2tlIHBlcmwgd2l0aCAtYwogICAgIyBub3RlOiBwZXJsIHdpbGwgYWNjZXB0IHJlcGVhdGVkIGZsYWdzIGxpa2UgJy1jIC1jJy4gIEl0IGlzIHNhZmVzdAogICAgIyB0byBhcHBlbmQgYW5vdGhlciAtYyB0aGFuIHRyeSB0byBmaW5kIGFuIGludGVyaW9yIGJ1bmRsZWQgYywgYXMKICAgICMgaW4gLVRjLCBiZWNhdXNlIHN1Y2ggYSAnYycgbWlnaHQgYmUgaW4gYSBxdW90ZWQgc3RyaW5nLCBmb3IgZXhhbXBsZS4KICAgIGlmICggJGZsYWdzICF+IC8oXi1jfFxzKy1jKS8gKSB7ICRmbGFncyAuPSAiIC1jIiB9CgogICAgIyBiZSBzdXJlIHdlIGludm9rZSBwZXJsIHdpdGggLXggaWYgcmVxdWVzdGVkCiAgICAjIHNhbWUgY29tbWVudHMgYWJvdXQgcmVwZWF0ZWQgcGFyYW1ldGVycyBhcHBsaWVzCiAgICBpZiAoICRyT3B0cy0+eydsb29rLWZvci1oYXNoLWJhbmcnfSApIHsKICAgICAgICBpZiAoICRmbGFncyAhfiAvKF4teHxccysteCkvICkgeyAkZmxhZ3MgLj0gIiAteCIgfQogICAgfQoKICAgICMgdGhpcyBzaG91bGRuJ3QgaGFwcGVuIHVubGVzcyBhIHRlbXBvcmFyeSBmaWxlIGNvdWxkbid0IGJlIG1hZGUKICAgIGlmICggJGlzdHJlYW0gZXEgJy0nICkgewogICAgICAgICRsb2dnZXJfb2JqZWN0LT53cml0ZV9sb2dmaWxlX2VudHJ5KAogICAgICAgICAgICAiQ2Fubm90IHJ1biBwZXJsIC1jIG9uIFNURElOIGFuZCBTVERPVVRcbiIpOwogICAgICAgIHJldHVybiAkaW5maWxlX3N5bnRheF9vazsKICAgIH0KCiAgICAkbG9nZ2VyX29iamVjdC0+d3JpdGVfbG9nZmlsZV9lbnRyeSgKICAgICAgICAiY2hlY2tpbmcgaW5wdXQgZmlsZSBzeW50YXggd2l0aCBwZXJsICRmbGFnc1xuIik7CgogICAgIyBOb3QgYWxsIG9wZXJhdGluZyBzeXN0ZW1zL3NoZWxscyBzdXBwb3J0IHJlZGlyZWN0aW9uIG9mIHRoZSBzdGFuZGFyZAogICAgIyBlcnJvciBvdXRwdXQuCiAgICBteSAkZXJyb3JfcmVkaXJlY3Rpb24gPSAoICReTyBlcSAnVk1TJyApID8gIiIgOiAnMj4mMSc7CgogICAgbXkgKCAkaXN0cmVhbV9maWxlbmFtZSwgJHBlcmxfb3V0cHV0ICkgPQogICAgICBkb19zeW50YXhfY2hlY2soICRpc3RyZWFtLCAkZmxhZ3MsICRlcnJvcl9yZWRpcmVjdGlvbiApOwogICAgJGxvZ2dlcl9vYmplY3QtPndyaXRlX2xvZ2ZpbGVfZW50cnkoCiAgICAgICAgIklucHV0IHN0cmVhbSBwYXNzZWQgdG8gUGVybCBhcyBmaWxlICRpc3RyZWFtX2ZpbGVuYW1lXG4iKTsKICAgICRsb2dnZXJfb2JqZWN0LT53cml0ZV9sb2dmaWxlX2VudHJ5KCRsaW5lX29mX2Rhc2hlcyk7CiAgICAkbG9nZ2VyX29iamVjdC0+d3JpdGVfbG9nZmlsZV9lbnRyeSgiJHBlcmxfb3V0cHV0XG4iKTsKCiAgICBpZiAoICRwZXJsX291dHB1dCA9fiAvc3ludGF4XHMqT0svICkgewogICAgICAgICRpbmZpbGVfc3ludGF4X29rID0gMTsKICAgICAgICAkbG9nZ2VyX29iamVjdC0+d3JpdGVfbG9nZmlsZV9lbnRyeSgkbGluZV9vZl9kYXNoZXMpOwogICAgICAgICRsb2dnZXJfb2JqZWN0LT53cml0ZV9sb2dmaWxlX2VudHJ5KAogICAgICAgICAgICAiY2hlY2tpbmcgb3V0cHV0IGZpbGUgc3ludGF4IHdpdGggcGVybCAkZmxhZ3MgLi4uXG4iKTsKICAgICAgICBteSAoICRvc3RyZWFtX2ZpbGVuYW1lLCAkcGVybF9vdXRwdXQgKSA9CiAgICAgICAgICBkb19zeW50YXhfY2hlY2soICRvc3RyZWFtLCAkZmxhZ3MsICRlcnJvcl9yZWRpcmVjdGlvbiApOwogICAgICAgICRsb2dnZXJfb2JqZWN0LT53cml0ZV9sb2dmaWxlX2VudHJ5KAogICAgICAgICAgICAiT3V0cHV0IHN0cmVhbSBwYXNzZWQgdG8gUGVybCBhcyBmaWxlICRvc3RyZWFtX2ZpbGVuYW1lXG4iKTsKICAgICAgICAkbG9nZ2VyX29iamVjdC0+d3JpdGVfbG9nZmlsZV9lbnRyeSgkbGluZV9vZl9kYXNoZXMpOwogICAgICAgICRsb2dnZXJfb2JqZWN0LT53cml0ZV9sb2dmaWxlX2VudHJ5KCIkcGVybF9vdXRwdXRcbiIpOwoKICAgICAgICB1bmxlc3MgKCAkcGVybF9vdXRwdXQgPX4gL3N5bnRheFxzKk9LLyApIHsKICAgICAgICAgICAgJGxvZ2dlcl9vYmplY3QtPndyaXRlX2xvZ2ZpbGVfZW50cnkoJGxpbmVfb2ZfZGFzaGVzKTsKICAgICAgICAgICAgJGxvZ2dlcl9vYmplY3QtPndhcm5pbmcoCiJUaGUgb3V0cHV0IGZpbGUgaGFzIGEgc3ludGF4IGVycm9yIHdoZW4gdGVzdGVkIHdpdGggcGVybCAkZmxhZ3MgJG9zdHJlYW0gIVxuIgogICAgICAgICAgICApOwogICAgICAgICAgICAkbG9nZ2VyX29iamVjdC0+d2FybmluZygKICAgICAgICAgICAgICAgICJUaGlzIGltcGxpZXMgYW4gZXJyb3IgaW4gcGVybHRpZHk7IHRoZSBmaWxlICRvc3RyZWFtIGlzIGJhZFxuIgogICAgICAgICAgICApOwogICAgICAgICAgICAkbG9nZ2VyX29iamVjdC0+cmVwb3J0X2RlZmluaXRlX2J1ZygpOwoKICAgICAgICAgICAgIyB0aGUgcGVybCB2ZXJzaW9uIG51bWJlciB3aWxsIGJlIGhlbHBmdWwgZm9yIGRpYWdub3NpbmcgdGhlIHByb2JsZW0KICAgICAgICAgICAgJGxvZ2dlcl9vYmplY3QtPndyaXRlX2xvZ2ZpbGVfZW50cnkoICReViAuICJcbiIgKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBPbmx5IHdhcm4gb2YgcGVybCAtYyBzeW50YXggZXJyb3JzLiAgT3RoZXIgbWVzc2FnZXMsCiAgICAgICAgIyBzdWNoIGFzIG1pc3NpbmcgbW9kdWxlcywgYXJlIHRvbyBjb21tb24uICBUaGV5IGNhbiBiZQogICAgICAgICMgc2VlbiBieSBydW5uaW5nIHdpdGggcGVybHRpZHkgLXcKICAgICAgICAkbG9nZ2VyX29iamVjdC0+Y29tcGxhaW4oIkEgc3ludGF4IGNoZWNrIHVzaW5nIHBlcmwgJGZsYWdzXG4iKTsKICAgICAgICAkbG9nZ2VyX29iamVjdC0+Y29tcGxhaW4oCiAgICAgICAgICAgICJmb3IgdGhlIG91dHB1dCBpbiBmaWxlICRpc3RyZWFtX2ZpbGVuYW1lIGdpdmVzOlxuIik7CiAgICAgICAgJGxvZ2dlcl9vYmplY3QtPmNvbXBsYWluKCRsaW5lX29mX2Rhc2hlcyk7CiAgICAgICAgJGxvZ2dlcl9vYmplY3QtPmNvbXBsYWluKCIkcGVybF9vdXRwdXRcbiIpOwogICAgICAgICRsb2dnZXJfb2JqZWN0LT5jb21wbGFpbigkbGluZV9vZl9kYXNoZXMpOwogICAgICAgICRpbmZpbGVfc3ludGF4X29rID0gLTE7CiAgICAgICAgJGxvZ2dlcl9vYmplY3QtPndyaXRlX2xvZ2ZpbGVfZW50cnkoJGxpbmVfb2ZfZGFzaGVzKTsKICAgICAgICAkbG9nZ2VyX29iamVjdC0+d3JpdGVfbG9nZmlsZV9lbnRyeSgKIlRoZSBvdXRwdXQgZmlsZSB3aWxsIG5vdCBiZSBjaGVja2VkIGJlY2F1c2Ugb2YgaW5wdXQgZmlsZSBwcm9ibGVtc1xuIgogICAgICAgICk7CiAgICB9CiAgICByZXR1cm4gJGluZmlsZV9zeW50YXhfb2s7Cn0KCnN1YiBkb19zeW50YXhfY2hlY2sgewoKICAgICMgVGhpcyBzaG91bGQgbm90IGJlIGNhbGxlZDsgdGhlIHN5bnRheCBjaGVjayBpcyBkZWFjdGl2YXRlZAogICAgRGllKCJVbmV4cGVjdGVkIGNhbGwgZm9yIHN5bnRheCBjaGVjay1zaG91bGRuJ3QgaGFwcGVuXG4iKTsKICAgIHJldHVybjsKfQoKPXBvZApzdWIgZG9fc3ludGF4X2NoZWNrIHsKICAgIG15ICggJHN0cmVhbSwgJGZsYWdzLCAkZXJyb3JfcmVkaXJlY3Rpb24gKSA9IEBfOwoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBUaGlzIGNvZGUgaXMgbm90IHJlYWNoYWJsZSBiZWNhdXNlIHN5bnRheCBjaGVjayBpcyBkZWFjdGl2YXRlZCwKICAgICMgYnV0IGl0IGlzIHJldGFpbmVkIGZvciByZWZlcmVuY2UuCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAjIFdlIG5lZWQgYSBuYW1lZCBpbnB1dCBmaWxlIGZvciBleGVjdXRpbmcgcGVybAogICAgbXkgKCAkc3RyZWFtX2ZpbGVuYW1lLCAkaXNfdG1wZmlsZSApID0gZ2V0X3N0cmVhbV9hc19uYW1lZF9maWxlKCRzdHJlYW0pOwoKICAgICMgVE9ETzogTmVlZCB0byBhZGQgbmFtZSBvZiBmaWxlIHRvIGxvZyBzb21ld2hlcmUKICAgICMgb3RoZXJ3aXNlIFBlcmwgb3V0cHV0IGlzIGhhcmQgdG8gcmVhZAogICAgaWYgKCAhJHN0cmVhbV9maWxlbmFtZSApIHsgcmV0dXJuICRzdHJlYW1fZmlsZW5hbWUsICIiIH0KCiAgICAjIFdlIGhhdmUgdG8gcXVvdGUgdGhlIGZpbGVuYW1lIGluIGNhc2UgaXQgaGFzIHVudXN1YWwgY2hhcmFjdGVycwogICAgIyBvciBzcGFjZXMuICBFeGFtcGxlOiB0aGlzIGZpbGVuYW1lICNDTTExLnBtIyBnaXZlcyB0cm91YmxlLgogICAgbXkgJHF1b3RlZF9zdHJlYW1fZmlsZW5hbWUgPSAnIicgLiAkc3RyZWFtX2ZpbGVuYW1lIC4gJyInOwoKICAgICMgVW5kZXIgVk1TIHNvbWV0aGluZyBsaWtlIC1UIHdpbGwgYmVjb21lIC10IChhbmQgYW4gZXJyb3IpIHNvIHdlCiAgICAjIHdpbGwgcHV0IHF1b3RlcyBhcm91bmQgdGhlIGZsYWdzLiAgRG91YmxlIHF1b3RlcyBzZWVtIHRvIHdvcmsgb24KICAgICMgVW5peC9XaW5kb3dzL1ZNUywgYnV0IHRoaXMgbWF5IG5vdCB3b3JrIG9uIGFsbCBzeXN0ZW1zLiAgKFNpbmdsZQogICAgIyBxdW90ZXMgZG8gbm90IHdvcmsgdW5kZXIgV2luZG93cykuICBJdCBjb3VsZCBiZWNvbWUgbmVjZXNzYXJ5IHRvCiAgICAjIHB1dCBkb3VibGUgcXVvdGVzIGFyb3VuZCBlYWNoIGZsYWcsIHN1Y2ggYXM6ICAtImMiICAtIlQiCiAgICAjIFdlIG1heSBldmVudHVhbGx5IG5lZWQgc29tZSBzeXN0ZW0tZGVwZW5kZW50IGNvZGluZyBoZXJlLgogICAgJGZsYWdzID0gJyInIC4gJGZsYWdzIC4gJyInOwoKICAgICMgbm93IHdpc2ggZm9yIGx1Y2suLi4KICAgIG15ICRtc2cgPSBxeC9wZXJsICRmbGFncyAkcXVvdGVkX3N0cmVhbV9maWxlbmFtZSAkZXJyb3JfcmVkaXJlY3Rpb24vOyAKCiAgICBpZiAoJGlzX3RtcGZpbGUpIHsKICAgICAgICB1bmxpbmsgJHN0cmVhbV9maWxlbmFtZQogICAgICAgICAgb3IgUGVybDo6VGlkeTo6RGllKCJjb3VsZG4ndCB1bmxpbmsgc3RyZWFtICRzdHJlYW1fZmlsZW5hbWU6ICQhXG4iKTsKICAgIH0KICAgIHJldHVybiAkc3RyZWFtX2ZpbGVuYW1lLCAkbXNnOwp9Cj1jdXQKCjE7Cgo=
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBUaGUgUGVybDo6VGlkeTo6Rm9ybWF0dGVyIHBhY2thZ2UgYWRkcyBpbmRlbnRhdGlvbiwgd2hpdGVzcGFjZSwgYW5kCiMgbGluZSBicmVha3MgdG8gdGhlIHRva2VuIHN0cmVhbQojCiMgV0FSTklORzogVGhpcyBpcyBub3QgYSByZWFsIGNsYXNzIGZvciBzcGVlZCByZWFzb25zLiAgT25seSBvbmUKIyBGb3JtYXR0ZXIgbWF5IGJlIHVzZWQuCiMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpwYWNrYWdlIFBlcmw6OlRpZHk6OkZvcm1hdHRlcjsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgQ2FycDsKb3VyICRWRVJTSU9OID0gJzIwMTkxMjAzJzsKCiMgVGhlIFRva2VuaXplciB3aWxsIGJlIGxvYWRlZCB3aXRoIHRoZSBGb3JtYXR0ZXIKIyN1c2UgUGVybDo6VGlkeTo6VG9rZW5pemVyOyAgICAjIGZvciBpc19rZXl3b3JkKCkKCnN1YiBEaWUgewogICAgbXkgKCRtc2cpID0gQF87CiAgICBQZXJsOjpUaWR5OjpEaWUoJG1zZyk7CiAgICBjcm9hayAidW5leHBlY3RlZCByZXR1cm4gZnJvbSBQZXJsOjpUaWR5OjpEaWUiOwp9CgpzdWIgV2FybiB7CiAgICBteSAoJG1zZykgPSBAXzsKICAgIFBlcmw6OlRpZHk6Oldhcm4oJG1zZyk7CiAgICByZXR1cm47Cn0KCnN1YiBFeGl0IHsKICAgIG15ICgkbXNnKSA9IEBfOwogICAgUGVybDo6VGlkeTo6RXhpdCgkbXNnKTsKICAgIGNyb2FrICJ1bmV4cGVjdGVkIHJldHVybiBmcm9tIFBlcmw6OlRpZHk6OkV4aXQiOwp9CgpCRUdJTiB7CgogICAgIyBDb2RlcyBmb3IgaW5zZXJ0aW9uIGFuZCBkZWxldGlvbiBvZiBibGFua3MKICAgIHVzZSBjb25zdGFudCBERUxFVEUgPT4gMDsKICAgIHVzZSBjb25zdGFudCBTVEFCTEUgPT4gMTsKICAgIHVzZSBjb25zdGFudCBJTlNFUlQgPT4gMjsKCiAgICAjIENhdXRpb246IHRoZXNlIGRlYnVnIGZsYWdzIHByb2R1Y2UgYSBsb3Qgb2Ygb3V0cHV0CiAgICAjIFRoZXkgc2hvdWxkIGFsbCBiZSAwIGV4Y2VwdCB3aGVuIGRlYnVnZ2luZyBzbWFsbCBzY3JpcHRzCiAgICB1c2UgY29uc3RhbnQgRk9STUFUVEVSX0RFQlVHX0ZMQUdfUkVDT01CSU5FICAgPT4gMDsKICAgIHVzZSBjb25zdGFudCBGT1JNQVRURVJfREVCVUdfRkxBR19CT05EX1RBQkxFUyA9PiAwOwogICAgdXNlIGNvbnN0YW50IEZPUk1BVFRFUl9ERUJVR19GTEFHX0JPTkQgICAgICAgID0+IDA7CiAgICB1c2UgY29uc3RhbnQgRk9STUFUVEVSX0RFQlVHX0ZMQUdfQlJFQUsgICAgICAgPT4gMDsKICAgIHVzZSBjb25zdGFudCBGT1JNQVRURVJfREVCVUdfRkxBR19DSSAgICAgICAgICA9PiAwOwogICAgdXNlIGNvbnN0YW50IEZPUk1BVFRFUl9ERUJVR19GTEFHX0ZMVVNIICAgICAgID0+IDA7CiAgICB1c2UgY29uc3RhbnQgRk9STUFUVEVSX0RFQlVHX0ZMQUdfRk9SQ0UgICAgICAgPT4gMDsKICAgIHVzZSBjb25zdGFudCBGT1JNQVRURVJfREVCVUdfRkxBR19MSVNUICAgICAgICA9PiAwOwogICAgdXNlIGNvbnN0YW50IEZPUk1BVFRFUl9ERUJVR19GTEFHX05PQlJFQUsgICAgID0+IDA7CiAgICB1c2UgY29uc3RhbnQgRk9STUFUVEVSX0RFQlVHX0ZMQUdfT1VUUFVUICAgICAgPT4gMDsKICAgIHVzZSBjb25zdGFudCBGT1JNQVRURVJfREVCVUdfRkxBR19TUEFSU0UgICAgICA9PiAwOwogICAgdXNlIGNvbnN0YW50IEZPUk1BVFRFUl9ERUJVR19GTEFHX1NUT1JFICAgICAgID0+IDA7CiAgICB1c2UgY29uc3RhbnQgRk9STUFUVEVSX0RFQlVHX0ZMQUdfVU5ET0JQICAgICAgPT4gMDsKICAgIHVzZSBjb25zdGFudCBGT1JNQVRURVJfREVCVUdfRkxBR19XSElURSAgICAgICA9PiAwOwoKICAgIG15ICRkZWJ1Z193YXJuaW5nID0gc3ViIHsKICAgICAgICBwcmludCBTVERPVVQgIkZPUk1BVFRFUl9ERUJVR0dJTkcgd2l0aCBrZXkgJF9bMF1cbiI7CiAgICB9OwoKICAgIEZPUk1BVFRFUl9ERUJVR19GTEFHX1JFQ09NQklORSAgICYmICRkZWJ1Z193YXJuaW5nLT4oJ1JFQ09NQklORScpOwogICAgRk9STUFUVEVSX0RFQlVHX0ZMQUdfQk9ORF9UQUJMRVMgJiYgJGRlYnVnX3dhcm5pbmctPignQk9ORF9UQUJMRVMnKTsKICAgIEZPUk1BVFRFUl9ERUJVR19GTEFHX0JPTkQgICAgICAgICYmICRkZWJ1Z193YXJuaW5nLT4oJ0JPTkQnKTsKICAgIEZPUk1BVFRFUl9ERUJVR19GTEFHX0JSRUFLICAgICAgICYmICRkZWJ1Z193YXJuaW5nLT4oJ0JSRUFLJyk7CiAgICBGT1JNQVRURVJfREVCVUdfRkxBR19DSSAgICAgICAgICAmJiAkZGVidWdfd2FybmluZy0+KCdDSScpOwogICAgRk9STUFUVEVSX0RFQlVHX0ZMQUdfRkxVU0ggICAgICAgJiYgJGRlYnVnX3dhcm5pbmctPignRkxVU0gnKTsKICAgIEZPUk1BVFRFUl9ERUJVR19GTEFHX0ZPUkNFICAgICAgICYmICRkZWJ1Z193YXJuaW5nLT4oJ0ZPUkNFJyk7CiAgICBGT1JNQVRURVJfREVCVUdfRkxBR19MSVNUICAgICAgICAmJiAkZGVidWdfd2FybmluZy0+KCdMSVNUJyk7CiAgICBGT1JNQVRURVJfREVCVUdfRkxBR19OT0JSRUFLICAgICAmJiAkZGVidWdfd2FybmluZy0+KCdOT0JSRUFLJyk7CiAgICBGT1JNQVRURVJfREVCVUdfRkxBR19PVVRQVVQgICAgICAmJiAkZGVidWdfd2FybmluZy0+KCdPVVRQVVQnKTsKICAgIEZPUk1BVFRFUl9ERUJVR19GTEFHX1NQQVJTRSAgICAgICYmICRkZWJ1Z193YXJuaW5nLT4oJ1NQQVJTRScpOwogICAgRk9STUFUVEVSX0RFQlVHX0ZMQUdfU1RPUkUgICAgICAgJiYgJGRlYnVnX3dhcm5pbmctPignU1RPUkUnKTsKICAgIEZPUk1BVFRFUl9ERUJVR19GTEFHX1VORE9CUCAgICAgICYmICRkZWJ1Z193YXJuaW5nLT4oJ1VORE9CUCcpOwogICAgRk9STUFUVEVSX0RFQlVHX0ZMQUdfV0hJVEUgICAgICAgJiYgJGRlYnVnX3dhcm5pbmctPignV0hJVEUnKTsKfQoKdXNlIHZhcnMgcXd7CgogIEBnbnVfc3RhY2sKICAkbWF4X2dudV9zdGFja19pbmRleAogICRnbnVfcG9zaXRpb25fcHJlZGljdG9yCiAgJGxpbmVfc3RhcnRfaW5kZXhfdG9fZ28KICAkbGFzdF9pbmRlbnRhdGlvbl93cml0dGVuCiAgJGxhc3RfdW5hZGp1c3RlZF9pbmRlbnRhdGlvbgogICRsYXN0X2xlYWRpbmdfdG9rZW4KICAkbGFzdF9vdXRwdXRfc2hvcnRfb3BlbmluZ190b2tlbgogICRwZWFrX2JhdGNoX3NpemUKCiAgJHNhd19WRVJTSU9OX2luX3RoaXNfZmlsZQogICRzYXdfRU5EX29yX0RBVEFfCgogIEBnbnVfaXRlbV9saXN0CiAgJG1heF9nbnVfaXRlbV9pbmRleAogICRnbnVfc2VxdWVuY2VfbnVtYmVyCiAgJGxhc3Rfb3V0cHV0X2luZGVudGF0aW9uCiAgJWxhc3RfZ251X2VxdWFscwogICVnbnVfY29tbWFfY291bnQKICAlZ251X2Fycm93X2NvdW50CgogIEBibG9ja190eXBlX3RvX2dvCiAgQHR5cGVfc2VxdWVuY2VfdG9fZ28KICBAY29udGFpbmVyX2Vudmlyb25tZW50X3RvX2dvCiAgQGJvbmRfc3RyZW5ndGhfdG9fZ28KICBAZm9yY2VkX2JyZWFrcG9pbnRfdG9fZ28KICBAdG9rZW5fbGVuZ3Roc190b19nbwogIEBzdW1tZWRfbGVuZ3Roc190b19nbwogIEBsZXZlbHNfdG9fZ28KICBAbGVhZGluZ19zcGFjZXNfdG9fZ28KICBAcmVkdWNlZF9zcGFjZXNfdG9fZ28KICBAbWF0Y2hpbmdfdG9rZW5fdG9fZ28KICBAbWF0ZV9pbmRleF90b19nbwogIEBjaV9sZXZlbHNfdG9fZ28KICBAbmVzdGluZ19kZXB0aF90b19nbwogIEBub2JyZWFrX3RvX2dvCiAgQG9sZF9icmVha3BvaW50X3RvX2dvCiAgQHRva2Vuc190b19nbwogIEBLX3RvX2dvCiAgQHR5cGVzX3RvX2dvCiAgQGluZXh0X3RvX2dvCiAgQGlwcmV2X3RvX2dvCgogICVzYXZlZF9vcGVuaW5nX2luZGVudGF0aW9uCgogICRtYXhfaW5kZXhfdG9fZ28KICAkY29tbWFfY291bnRfaW5fYmF0Y2gKICAkbGFzdF9ub25ibGFua19pbmRleF90b19nbwogICRsYXN0X25vbmJsYW5rX3R5cGVfdG9fZ28KICAkbGFzdF9ub25ibGFua190b2tlbl90b19nbwogICRsYXN0X2xhc3Rfbm9uYmxhbmtfaW5kZXhfdG9fZ28KICAkbGFzdF9sYXN0X25vbmJsYW5rX3R5cGVfdG9fZ28KICAkbGFzdF9sYXN0X25vbmJsYW5rX3Rva2VuX3RvX2dvCiAgQG5vbmJsYW5rX2xpbmVzX2F0X2RlcHRoCiAgJHN0YXJ0aW5nX2luX3F1b3RlCiAgJGVuZGluZ19pbl9xdW90ZQogIEB3aGl0ZXNwYWNlX2xldmVsX3N0YWNrCiAgJHdoaXRlc3BhY2VfbGFzdF9sZXZlbAoKICAkZm9ybWF0X3NraXBwaW5nX3BhdHRlcm5fYmVnaW4KICAkZm9ybWF0X3NraXBwaW5nX3BhdHRlcm5fZW5kCgogICRmb3JjZWRfYnJlYWtwb2ludF9jb3VudAogICRmb3JjZWRfYnJlYWtwb2ludF91bmRvX2NvdW50CiAgQGZvcmNlZF9icmVha3BvaW50X3VuZG9fc3RhY2sKICAlcG9zdHBvbmVkX2JyZWFrcG9pbnQKCiAgJHRhYmJpbmcKICAkZW1iZWRkZWRfdGFiX2NvdW50CiAgJGZpcnN0X2VtYmVkZGVkX3RhYl9hdAogICRsYXN0X2VtYmVkZGVkX3RhYl9hdAogICRkZWxldGVkX3NlbWljb2xvbl9jb3VudAogICRmaXJzdF9kZWxldGVkX3NlbWljb2xvbl9hdAogICRsYXN0X2RlbGV0ZWRfc2VtaWNvbG9uX2F0CiAgJGFkZGVkX3NlbWljb2xvbl9jb3VudAogICRmaXJzdF9hZGRlZF9zZW1pY29sb25fYXQKICAkbGFzdF9hZGRlZF9zZW1pY29sb25fYXQKICAkZmlyc3RfdGFiYmluZ19kaXNhZ3JlZW1lbnQKICAkbGFzdF90YWJiaW5nX2Rpc2FncmVlbWVudAogICRpbl90YWJiaW5nX2Rpc2FncmVlbWVudAogICR0YWJiaW5nX2Rpc2FncmVlbWVudF9jb3VudAogICRpbnB1dF9saW5lX3RhYmJpbmcKCiAgJGxhc3RfbGluZV9sZWFkaW5nX3R5cGUKICAkbGFzdF9saW5lX2xlYWRpbmdfbGV2ZWwKICAkbGFzdF9sYXN0X2xpbmVfbGVhZGluZ19sZXZlbAoKICAlYmxvY2tfbGVhZGluZ190ZXh0CiAgJWJsb2NrX29wZW5pbmdfbGluZV9udW1iZXIKICAkY3NjX25ld19zdGF0ZW1lbnRfb2sKICAkY3NjX2xhc3RfbGFiZWwKICAlY3NjX2Jsb2NrX2xhYmVsCiAgJGFjY3VtdWxhdGluZ190ZXh0X2Zvcl9ibG9jawogICRsZWFkaW5nX2Jsb2NrX3RleHQKICAkcmxlYWRpbmdfYmxvY2tfaWZfZWxzaWZfdGV4dAogICRsZWFkaW5nX2Jsb2NrX3RleHRfbGV2ZWwKICAkbGVhZGluZ19ibG9ja190ZXh0X2xlbmd0aF9leGNlZWRlZAogICRsZWFkaW5nX2Jsb2NrX3RleHRfbGluZV9sZW5ndGgKICAkbGVhZGluZ19ibG9ja190ZXh0X2xpbmVfbnVtYmVyCiAgJGNsb3Npbmdfc2lkZV9jb21tZW50X3ByZWZpeF9wYXR0ZXJuCiAgJGNsb3Npbmdfc2lkZV9jb21tZW50X2xpc3RfcGF0dGVybgoKICAkYmxhbmtfbGluZXNfYWZ0ZXJfb3BlbmluZ19ibG9ja19wYXR0ZXJuCiAgJGJsYW5rX2xpbmVzX2JlZm9yZV9jbG9zaW5nX2Jsb2NrX3BhdHRlcm4KCiAgJGxhc3Rfbm9uYmxhbmtfdG9rZW4KICAkbGFzdF9ub25ibGFua190eXBlCiAgJGxhc3RfbGFzdF9ub25ibGFua190b2tlbgogICRsYXN0X2xhc3Rfbm9uYmxhbmtfdHlwZQogICRsYXN0X25vbmJsYW5rX2Jsb2NrX3R5cGUKICAkbGFzdF9vdXRwdXRfbGV2ZWwKICAlaXNfZG9fZm9sbG93ZXIKICAlaXNfaWZfYnJhY2VfZm9sbG93ZXIKICAlc3BhY2VfYWZ0ZXJfa2V5d29yZAogICRyYnJhY2VfZm9sbG93ZXIKICAkbG9va2luZ19mb3JfZWxzZQogICVpc19sYXN0X25leHRfcmVkb19yZXR1cm4KICAlaXNfb3RoZXJfYnJhY2VfZm9sbG93ZXIKICAlaXNfZWxzZV9icmFjZV9mb2xsb3dlcgogICVpc19hbm9uX3N1Yl9icmFjZV9mb2xsb3dlcgogICVpc19hbm9uX3N1Yl8xX2JyYWNlX2ZvbGxvd2VyCiAgJWlzX3NvcnRfbWFwX2dyZXAKICAlaXNfc29ydF9tYXBfZ3JlcF9ldmFsCiAgJXdhbnRfb25lX2xpbmVfYmxvY2sKICAlaXNfc29ydF9tYXBfZ3JlcF9ldmFsX2RvCiAgJWlzX2Jsb2NrX3dpdGhvdXRfc2VtaWNvbG9uCiAgJWlzX2lmX3VubGVzcwogICVpc19hbmRfb3IKICAlaXNfYXNzaWdubWVudAogICVpc19jaGFpbl9vcGVyYXRvcgogICVpc19pZl91bmxlc3NfYW5kX29yX2xhc3RfbmV4dF9yZWRvX3JldHVybgogICVva190b19hZGRfc2VtaWNvbG9uX2Zvcl9ibG9ja190eXBlCgogIEBoYXNfYnJva2VuX3N1Ymxpc3QKICBAZG9udF9hbGlnbgogIEB3YW50X2NvbW1hX2JyZWFrCgogICRpc19zdGF0aWNfYmxvY2tfY29tbWVudAogICRpbmRleF9zdGFydF9vbmVfbGluZV9ibG9jawogICRzZW1pY29sb25zX2JlZm9yZV9ibG9ja19zZWxmX2Rlc3RydWN0CiAgJGluZGV4X21heF9mb3JjZWRfYnJlYWsKICAkaW5wdXRfbGluZV9udW1iZXIKICAkZGlhZ25vc3RpY3Nfb2JqZWN0CiAgJHZlcnRpY2FsX2FsaWduZXJfb2JqZWN0CiAgJGxvZ2dlcl9vYmplY3QKICAkZmlsZV93cml0ZXJfb2JqZWN0CiAgJGZvcm1hdHRlcl9zZWxmCiAgQGNpX3N0YWNrCiAgJXdhbnRfYnJlYWtfYmVmb3JlCiAgJW91dGRlbnRfa2V5d29yZAogICRzdGF0aWNfYmxvY2tfY29tbWVudF9wYXR0ZXJuCiAgJHN0YXRpY19zaWRlX2NvbW1lbnRfcGF0dGVybgogICVvcGVuaW5nX3ZlcnRpY2FsX3RpZ2h0bmVzcwogICVjbG9zaW5nX3ZlcnRpY2FsX3RpZ2h0bmVzcwogICVjbG9zaW5nX3Rva2VuX2luZGVudGF0aW9uCiAgJHNvbWVfY2xvc2luZ190b2tlbl9pbmRlbnRhdGlvbgoKICAlb3BlbmluZ190b2tlbl9yaWdodAogICVzdGFja19vcGVuaW5nX3Rva2VuCiAgJXN0YWNrX2Nsb3NpbmdfdG9rZW4KCiAgJGJsb2NrX2JyYWNlX3ZlcnRpY2FsX3RpZ2h0bmVzc19wYXR0ZXJuCiAgJGtleXdvcmRfZ3JvdXBfbGlzdF9wYXR0ZXJuCiAgJGtleXdvcmRfZ3JvdXBfbGlzdF9jb21tZW50X3BhdHRlcm4KCiAgJHJPcHRzX2FkZF9uZXdsaW5lcwogICRyT3B0c19hZGRfd2hpdGVzcGFjZQogICRyT3B0c19ibG9ja19icmFjZV90aWdodG5lc3MKICAkck9wdHNfYmxvY2tfYnJhY2VfdmVydGljYWxfdGlnaHRuZXNzCiAgJHJPcHRzX2JyYWNlX2xlZnRfYW5kX2luZGVudAogICRyT3B0c19jb21tYV9hcnJvd19icmVha3BvaW50cwogICRyT3B0c19icmVha19hdF9vbGRfa2V5d29yZF9icmVha3BvaW50cwogICRyT3B0c19icmVha19hdF9vbGRfY29tbWFfYnJlYWtwb2ludHMKICAkck9wdHNfYnJlYWtfYXRfb2xkX2xvZ2ljYWxfYnJlYWtwb2ludHMKICAkck9wdHNfYnJlYWtfYXRfb2xkX21ldGhvZF9icmVha3BvaW50cwogICRyT3B0c19icmVha19hdF9vbGRfdGVybmFyeV9icmVha3BvaW50cwogICRyT3B0c19icmVha19hdF9vbGRfYXR0cmlidXRlX2JyZWFrcG9pbnRzCiAgJHJPcHRzX2Nsb3Npbmdfc2lkZV9jb21tZW50X2Vsc2VfZmxhZwogICRyT3B0c19jbG9zaW5nX3NpZGVfY29tbWVudF9tYXhpbXVtX3RleHQKICAkck9wdHNfY29udGludWF0aW9uX2luZGVudGF0aW9uCiAgJHJPcHRzX2RlbGV0ZV9vbGRfd2hpdGVzcGFjZQogICRyT3B0c19mdXp6eV9saW5lX2xlbmd0aAogICRyT3B0c19pbmRlbnRfY29sdW1ucwogICRyT3B0c19saW5lX3VwX3BhcmVudGhlc2VzCiAgJHJPcHRzX21heGltdW1fZmllbGRzX3Blcl90YWJsZQogICRyT3B0c19tYXhpbXVtX2xpbmVfbGVuZ3RoCiAgJHJPcHRzX3ZhcmlhYmxlX21heGltdW1fbGluZV9sZW5ndGgKICAkck9wdHNfc2hvcnRfY29uY2F0ZW5hdGlvbl9pdGVtX2xlbmd0aAogICRyT3B0c19rZWVwX29sZF9ibGFua19saW5lcwogICRyT3B0c19pZ25vcmVfb2xkX2JyZWFrcG9pbnRzCiAgJHJPcHRzX2Zvcm1hdF9za2lwcGluZwogICRyT3B0c19zcGFjZV9mdW5jdGlvbl9wYXJlbgogICRyT3B0c19zcGFjZV9rZXl3b3JkX3BhcmVuCiAgJHJPcHRzX2tlZXBfaW50ZXJpb3Jfc2VtaWNvbG9ucwogICRyT3B0c19pZ25vcmVfc2lkZV9jb21tZW50X2xlbmd0aHMKICAkck9wdHNfc3RhY2tfY2xvc2luZ19ibG9ja19icmFjZQogICRyT3B0c19zcGFjZV9iYWNrc2xhc2hfcXVvdGUKICAkck9wdHNfd2hpdGVzcGFjZV9jeWNsZQogICRyT3B0c19vbmVfbGluZV9ibG9ja19zZW1pY29sb25zCgogICVpc19vcGVuaW5nX3R5cGUKICAlaXNfY2xvc2luZ190eXBlCiAgJWlzX2tleXdvcmRfcmV0dXJuaW5nX2xpc3QKICAldGlnaHRuZXNzCiAgJW1hdGNoaW5nX3Rva2VuCiAgJHJPcHRzCiAgJXJpZ2h0X2JvbmRfc3RyZW5ndGgKICAlbGVmdF9ib25kX3N0cmVuZ3RoCiAgJWJpbmFyeV93c19ydWxlcwogICV3YW50X2xlZnRfc3BhY2UKICAld2FudF9yaWdodF9zcGFjZQogICVpc19kaWdyYXBoCiAgJWlzX3RyaWdyYXBoCiAgJGJsaV9wYXR0ZXJuCiAgJGJsaV9saXN0X3N0cmluZwogICVpc19jbG9zaW5nX3R5cGUKICAlaXNfb3BlbmluZ190eXBlCiAgJWlzX2Nsb3NpbmdfdG9rZW4KICAlaXNfb3BlbmluZ190b2tlbgoKICAld2VsZF9sZW5fbGVmdF9jbG9zaW5nCiAgJXdlbGRfbGVuX3JpZ2h0X2Nsb3NpbmcKICAld2VsZF9sZW5fbGVmdF9vcGVuaW5nCiAgJXdlbGRfbGVuX3JpZ2h0X29wZW5pbmcKCiAgJHJjdWRkbGVkX2Jsb2NrX3R5cGVzCgogICRTVUJfUEFUVEVSTgogICRBU1VCX1BBVFRFUk4KCiAgJE5WQVJTCgp9OwoKQkVHSU4gewoKICAgICMgQXJyYXkgaW5kZXggbmFtZXMgZm9yIHRva2VuIHZhcmlhYmxlcwogICAgbXkgJGkgPSAwOwogICAgdXNlIGNvbnN0YW50IHsKICAgICAgICBfQkxPQ0tfVFlQRV8gICAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9DSV9MRVZFTF8gICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX0NPTlRBSU5FUl9FTlZJUk9OTUVOVF8gPT4gJGkrKywKICAgICAgICBfQ09OVEFJTkVSX1RZUEVfICAgICAgICA9PiAkaSsrLAogICAgICAgIF9DVU1VTEFUSVZFX0xFTkdUSF8gICAgID0+ICRpKyssCiAgICAgICAgX0xJTkVfSU5ERVhfICAgICAgICAgICAgPT4gJGkrKywKICAgICAgICBfS05FWFRfU0VRX0lURU1fICAgICAgICA9PiAkaSsrLAogICAgICAgIF9MRVZFTF8gICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX0xFVkVMX1RSVUVfICAgICAgICAgICAgPT4gJGkrKywKICAgICAgICBfU0xFVkVMXyAgICAgICAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9UT0tFTl8gICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX1RZUEVfICAgICAgICAgICAgICAgICAgPT4gJGkrKywKICAgICAgICBfVFlQRV9TRVFVRU5DRV8gICAgICAgICA9PiAkaSsrLAogICAgfTsKICAgICROVkFSUyA9IDEgKyBfVFlQRV9TRVFVRU5DRV87CgogICAgIyBkZWZhdWx0IGxpc3Qgb2YgYmxvY2sgdHlwZXMgZm9yIHdoaWNoIC1ibGkgd291bGQgYXBwbHkKICAgICRibGlfbGlzdF9zdHJpbmcgPSAnaWYgZWxzZSBlbHNpZiB1bmxlc3Mgd2hpbGUgZm9yIGZvcmVhY2ggZG8gOiBzdWInOwoKICAgIG15IEBxOwoKICAgIEBxID0gcXcoCiAgICAgIC4uIDo6IDw8ID4+ICoqICYmIC4uIHx8IC8vIC0+ID0+ICs9IC09IC49ICU9ICY9IHw9IF49ICo9IDw+CiAgICAgIDw9ID49ID09ID1+ICF+ICE9ICsrIC0tIC89IHg9CiAgICApOwogICAgQGlzX2RpZ3JhcGh7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICBAcSA9IHF3KCAuLi4gKio9IDw8PSA+Pj0gJiY9IHx8PSAvLz0gPD0+IDw8fiApOwogICAgQGlzX3RyaWdyYXBoe0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CgogICAgQHEgPSBxdygKICAgICAgPSAqKj0gKz0gKj0gJj0gPDw9ICYmPQogICAgICAtPSAvPSB8PSA+Pj0gfHw9IC8vPQogICAgICAuPSAlPSBePQogICAgICB4PQogICAgKTsKICAgIEBpc19hc3NpZ25tZW50e0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CgogICAgQHEgPSBxdygKICAgICAgZ3JlcAogICAgICBrZXlzCiAgICAgIG1hcAogICAgICByZXZlcnNlCiAgICAgIHNvcnQKICAgICAgc3BsaXQKICAgICk7CiAgICBAaXNfa2V5d29yZF9yZXR1cm5pbmdfbGlzdHtAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgIEBxID0gcXcoaXMgaWYgdW5sZXNzIGFuZCBvciBlcnIgbGFzdCBuZXh0IHJlZG8gcmV0dXJuKTsKICAgIEBpc19pZl91bmxlc3NfYW5kX29yX2xhc3RfbmV4dF9yZWRvX3JldHVybntAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgIEBxID0gcXcobGFzdCBuZXh0IHJlZG8gcmV0dXJuKTsKICAgIEBpc19sYXN0X25leHRfcmVkb19yZXR1cm57QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICBAcSA9IHF3KHNvcnQgbWFwIGdyZXApOwogICAgQGlzX3NvcnRfbWFwX2dyZXB7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICBAcSA9IHF3KHNvcnQgbWFwIGdyZXAgZXZhbCk7CiAgICBAaXNfc29ydF9tYXBfZ3JlcF9ldmFse0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CgogICAgQHEgPSBxdyhzb3J0IG1hcCBncmVwIGV2YWwgZG8pOwogICAgQGlzX3NvcnRfbWFwX2dyZXBfZXZhbF9kb3tAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgIEBxID0gcXcoaWYgdW5sZXNzKTsKICAgIEBpc19pZl91bmxlc3N7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICBAcSA9IHF3KGFuZCBvciBlcnIpOwogICAgQGlzX2FuZF9vcntAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgICMgSWRlbnRpZnkgY2VydGFpbiBvcGVyYXRvcnMgd2hpY2ggb2Z0ZW4gb2NjdXIgaW4gY2hhaW5zLgogICAgIyBOb3RlOiB0aGUgbWludXMgKC0pIGNhdXNlcyBhIHNpZGUgZWZmZWN0IG9mIHBhZGRpbmcgb2YgdGhlIGZpcnN0IGxpbmUgaW4KICAgICMgc29tZXRoaW5nIGxpa2UgdGhpcyAoYnkgc3ViIHNldF9sb2dpY2FsX3BhZGRpbmcpOgogICAgIyAgICBDaGVja2J1dHRvbiA9PiAnVHJhbnNtaXNzaW9uIGNoZWNrZWQnLAogICAgIyAgIC12YXJpYWJsZSAgICA9PiBcJFRSQU5TCiAgICAjIFRoaXMgdXN1YWxseSBpbXByb3ZlcyBhcHBlYXJhbmNlIHNvIGl0IHNlZW1zIG9rLgogICAgQHEgPSBxdygmJiB8fCBhbmQgb3IgOiA/IC4gKyAtICogLyk7CiAgICBAaXNfY2hhaW5fb3BlcmF0b3J7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICAjIFdlIGNhbiByZW1vdmUgc2VtaWNvbG9ucyBhZnRlciBibG9ja3MgcHJlY2VkZWQgYnkgdGhlc2Uga2V5d29yZHMKICAgIEBxID0KICAgICAgcXcoQkVHSU4gRU5EIENIRUNLIElOSVQgQVVUT0xPQUQgREVTVFJPWSBVTklUQ0hFQ0sgY29udGludWUgaWYgZWxzaWYgZWxzZQogICAgICB1bmxlc3Mgd2hpbGUgdW50aWwgZm9yIGZvcmVhY2ggZ2l2ZW4gd2hlbiBkZWZhdWx0KTsKICAgIEBpc19ibG9ja193aXRob3V0X3NlbWljb2xvbntAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgICMgV2Ugd2lsbCBhbGxvdyBzZW1pY29sb25zIHRvIGJlIGFkZGVkIHdpdGhpbiB0aGVzZSBibG9jayB0eXBlcwogICAgIyBhcyB3ZWxsIGFzIHN1YiBhbmQgcGFja2FnZSBibG9ja3MuCiAgICAjIE5PVEVTOgogICAgIyAxLiBOb3RlIHRoYXQgdGhlc2Uga2V5d29yZHMgYXJlIG9taXR0ZWQ6CiAgICAjICAgICBzd2l0Y2ggY2FzZSBnaXZlbiB3aGVuIGRlZmF1bHQgc29ydCBtYXAgZ3JlcAogICAgIyAyLiBJdCBpcyBhbHNvIG9rIHRvIGFkZCBmb3Igc3ViIGFuZCBwYWNrYWdlIGJsb2NrcyBhbmQgYSBsYWJlbGVkIGJsb2NrCiAgICAjIDMuIEJ1dCBub3Qgb2theSBmb3Igb3RoZXIgcGVybHRpZHkgdHlwZXMgaW5jbHVkaW5nOgogICAgIyAgICAgeyB9IDsgRyB0CiAgICAjIDQuIFRlc3QgZmlsZXM6IGJsa3R5cGUudCwgYmxrdHlwZTEudCwgc2VtaWNvbG9uLnQKICAgIEBxID0KICAgICAgcXcoIEJFR0lOIEVORCBDSEVDSyBJTklUIEFVVE9MT0FEIERFU1RST1kgVU5JVENIRUNLIGNvbnRpbnVlIGlmIGVsc2lmIGVsc2UKICAgICAgdW5sZXNzIGRvIHdoaWxlIHVudGlsIGV2YWwgZm9yIGZvcmVhY2ggKTsKICAgIEBva190b19hZGRfc2VtaWNvbG9uX2Zvcl9ibG9ja190eXBle0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CgogICAgIyAnTCcgaXMgdG9rZW4gZm9yIG9wZW5pbmcgeyBhdCBoYXNoIGtleQogICAgQHEgPSBxdzwgTCB7ICggWyA+OwogICAgQGlzX29wZW5pbmdfdHlwZXtAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgICMgJ1InIGlzIHRva2VuIGZvciBjbG9zaW5nIH0gYXQgaGFzaCBrZXkKICAgIEBxID0gcXc8IFIgfSApIF0gPjsKICAgIEBpc19jbG9zaW5nX3R5cGV7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICBAcSA9IHF3PCB7ICggWyA+OwogICAgQGlzX29wZW5pbmdfdG9rZW57QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICBAcSA9IHF3PCB9ICkgXSA+OwogICAgQGlzX2Nsb3NpbmdfdG9rZW57QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICAjIFBhdHRlcm5zIGZvciBzdGFuZGFyZGl6aW5nIG1hdGNoZXMgdG8gYmxvY2sgdHlwZXMgZm9yIHJlZ3VsYXIgc3VicyBhbmQKICAgICMgYW5vbnltb3VzIHN1YnMuIEV4YW1wbGVzCiAgICAjICAnc3ViIHByb2Nlc3MnIGlzIGEgbmFtZWQgc3ViCiAgICAjICAnc3ViIDo6bScgaXMgYSBuYW1lZCBzdWIKICAgICMgICdzdWInIGlzIGFuIGFub255bW91cyBzdWIKICAgICMgICdzdWI6JyBpcyBhIGxhYmVsLCBub3QgYSBzdWIKICAgICMgICdzdWJzdHInIGlzIGEga2V5d29yZAogICAgJFNVQl9QQVRURVJOICA9ICdec3ViXHMrKDo6fFx3KSc7CiAgICAkQVNVQl9QQVRURVJOID0gJ15zdWIkJzsKfQoKIyB3aGl0ZXNwYWNlIGNvZGVzCnVzZSBjb25zdGFudCBXU19ZRVMgICAgICA9PiAxOwp1c2UgY29uc3RhbnQgV1NfT1BUSU9OQUwgPT4gMDsKdXNlIGNvbnN0YW50IFdTX05PICAgICAgID0+IC0xOwoKIyBUb2tlbiBib25kIHN0cmVuZ3Rocy4KdXNlIGNvbnN0YW50IE5PX0JSRUFLICAgID0+IDEwMDAwOwp1c2UgY29uc3RhbnQgVkVSWV9TVFJPTkcgPT4gMTAwOwp1c2UgY29uc3RhbnQgU1RST05HICAgICAgPT4gMi4xOwp1c2UgY29uc3RhbnQgTk9NSU5BTCAgICAgPT4gMS4xOwp1c2UgY29uc3RhbnQgV0VBSyAgICAgICAgPT4gMC44Owp1c2UgY29uc3RhbnQgVkVSWV9XRUFLICAgPT4gMC41NTsKCiMgdmFsdWVzIGZvciB0ZXN0aW5nIGluZGV4ZXMgaW4gb3V0cHV0IGFycmF5CnVzZSBjb25zdGFudCBVTkRFRklORURfSU5ERVggPT4gLTE7CgojIE1heGltdW0gbnVtYmVyIG9mIGxpdHRsZSBtZXNzYWdlczsgcHJvYmFibHkgbmVlZCBub3QgYmUgY2hhbmdlZC4KdXNlIGNvbnN0YW50IE1BWF9OQUdfTUVTU0FHRVMgPT4gNjsKCiMgaW5jcmVtZW50IGJldHdlZW4gc2VxdWVuY2UgbnVtYmVycyBmb3IgZWFjaCB0eXBlCiMgRm9yIGV4YW1wbGUsID86IHBhaXJzIG1pZ2h0IGhhdmUgbnVtYmVycyA3LDExLDE1LC4uLgp1c2UgY29uc3RhbnQgVFlQRV9TRVFVRU5DRV9JTkNSRU1FTlQgPT4gNDsKCnsKCiAgICAjIG1ldGhvZHMgdG8gY291bnQgaW5zdGFuY2VzCiAgICBteSAkX2NvdW50ID0gMDsKICAgIHN1YiBnZXRfY291bnQgICAgICAgIHsgcmV0dXJuICRfY291bnQ7IH0KICAgIHN1YiBfaW5jcmVtZW50X2NvdW50IHsgcmV0dXJuICsrJF9jb3VudCB9CiAgICBzdWIgX2RlY3JlbWVudF9jb3VudCB7IHJldHVybiAtLSRfY291bnQgfQp9CgpzdWIgdHJpbSB7CgogICAgIyB0cmltIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UgZnJvbSBhIHN0cmluZwogICAgbXkgJHN0ciA9IHNoaWZ0OwogICAgJHN0ciA9fiBzL1xzKyQvLzsKICAgICRzdHIgPX4gcy9eXHMrLy87CiAgICByZXR1cm4gJHN0cjsKfQoKc3ViIG1heCB7CiAgICBteSBAdmFscyA9IEBfOwogICAgbXkgJG1heCAgPSBzaGlmdCBAdmFsczsKICAgIGZvcmVhY2ggbXkgJHZhbCAoQHZhbHMpIHsKICAgICAgICAkbWF4ID0gKCAkbWF4IDwgJHZhbCApID8gJHZhbCA6ICRtYXg7CiAgICB9CiAgICByZXR1cm4gJG1heDsKfQoKc3ViIG1pbiB7CiAgICBteSBAdmFscyA9IEBfOwogICAgbXkgJG1pbiAgPSBzaGlmdCBAdmFsczsKICAgIGZvcmVhY2ggbXkgJHZhbCAoQHZhbHMpIHsKICAgICAgICAkbWluID0gKCAkbWluID4gJHZhbCApID8gJHZhbCA6ICRtaW47CiAgICB9CiAgICByZXR1cm4gJG1pbjsKfQoKc3ViIHNwbGl0X3dvcmRzIHsKCiAgICAjIGdpdmVuIGEgc3RyaW5nIGNvbnRhaW5pbmcgd29yZHMgc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2UsCiAgICAjIHJldHVybiB0aGUgbGlzdCBvZiB3b3JkcwogICAgbXkgKCRzdHIpID0gQF87CiAgICByZXR1cm4gdW5sZXNzICRzdHI7CiAgICAkc3RyID1+IHMvXHMrJC8vOwogICAgJHN0ciA9fiBzL15ccysvLzsKICAgIHJldHVybiBzcGxpdCggL1xzKy8sICRzdHIgKTsKfQoKc3ViIGNoZWNrX2tleXMgewogICAgbXkgKCAkcnRlc3QsICRydmFsaWQsICRtc2csICRleGFjdF9tYXRjaCApID0gQF87CgogICAgIyBDaGVjayB0aGUga2V5cyBvZiBhIGhhc2g6CiAgICAjICRydGVzdCAgID0gcmVmIHRvIGhhc2ggdG8gdGVzdAogICAgIyAkcnZhbGlkICA9IHJlZiB0byBoYXNoIHdpdGggdmFsaWQga2V5cwoKICAgICMgJG1zZyA9IGEgbWVzc2FnZSB0byB3cml0ZSBpbiBjYXNlIG9mIGVycm9yCiAgICAjICRleGFjdF9tYXRjaCBkZWZpbmVzIHRoZSB0eXBlIG9mIGNoZWNrOgogICAgIyAgICAgPSBmYWxzZTogdGVzdCBoYXNoIG11c3Qgbm90IGhhdmUgdW5rbm93biBrZXkKICAgICMgICAgID0gdHJ1ZTogIHRlc3QgaGFzaCBtdXN0IGhhdmUgZXhhY3RseSBzYW1lIGtleXMgYXMga25vd24gaGFzaAogICAgbXkgQHVua25vd25fa2V5cyA9CiAgICAgIGdyZXAgeyAhZXhpc3RzICRydmFsaWQtPnskX30gfSBrZXlzICV7JHJ0ZXN0fTsKICAgIG15IEBtaXNzaW5nX2tleXMgPQogICAgICBncmVwIHsgIWV4aXN0cyAkcnRlc3QtPnskX30gfSBrZXlzICV7JHJ2YWxpZH07CiAgICBteSAkZXJyb3IgPSBAdW5rbm93bl9rZXlzOwogICAgaWYgKCRleGFjdF9tYXRjaCkgeyAkZXJyb3IgfHw9IEBtaXNzaW5nX2tleXMgfQogICAgaWYgKCRlcnJvcikgewogICAgICAgIGxvY2FsICQiID0gJykoJzsKICAgICAgICBteSBAZXhwZWN0ZWRfa2V5cyA9IHNvcnQga2V5cyAleyRydmFsaWR9OwogICAgICAgIEB1bmtub3duX2tleXMgPSBzb3J0IEB1bmtub3duX2tleXM7CiAgICAgICAgRGllKDw8RU9NKTsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClByb2dyYW0gZXJyb3IgZGV0ZWN0ZWQgY2hlY2tpbmcgaGFzaCBrZXlzCk1lc3NhZ2UgaXM6ICckbXNnJwpFeHBlY3RlZCBrZXlzOiAoQGV4cGVjdGVkX2tleXMpClVua25vd24ga2V5KHMpOiAoQHVua25vd25fa2V5cykKTWlzc2luZyBrZXkocyk6IChAbWlzc2luZ19rZXlzKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRU9NCiAgICB9CiAgICByZXR1cm47Cn0KCiMgaW50ZXJmYWNlIHRvIFBlcmw6OlRpZHk6OkxvZ2dlciByb3V0aW5lcwpzdWIgd2FybmluZyB7CiAgICBteSAoJG1zZykgPSBAXzsKICAgIGlmICgkbG9nZ2VyX29iamVjdCkgeyAkbG9nZ2VyX29iamVjdC0+d2FybmluZygkbXNnKTsgfQogICAgcmV0dXJuOwp9CgpzdWIgY29tcGxhaW4gewogICAgbXkgKCRtc2cpID0gQF87CiAgICBpZiAoJGxvZ2dlcl9vYmplY3QpIHsKICAgICAgICAkbG9nZ2VyX29iamVjdC0+Y29tcGxhaW4oJG1zZyk7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiB3cml0ZV9sb2dmaWxlX2VudHJ5IHsKICAgIG15IEBtc2cgPSBAXzsKICAgIGlmICgkbG9nZ2VyX29iamVjdCkgewogICAgICAgICRsb2dnZXJfb2JqZWN0LT53cml0ZV9sb2dmaWxlX2VudHJ5KEBtc2cpOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgYmxhY2tfYm94IHsKICAgIG15IEBtc2cgPSBAXzsKICAgIGlmICgkbG9nZ2VyX29iamVjdCkgeyAkbG9nZ2VyX29iamVjdC0+YmxhY2tfYm94KEBtc2cpOyB9CiAgICByZXR1cm47Cn0KCnN1YiByZXBvcnRfZGVmaW5pdGVfYnVnIHsKICAgIGlmICgkbG9nZ2VyX29iamVjdCkgewogICAgICAgICRsb2dnZXJfb2JqZWN0LT5yZXBvcnRfZGVmaW5pdGVfYnVnKCk7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBnZXRfc2F3X2JyYWNlX2Vycm9yIHsKICAgIGlmICgkbG9nZ2VyX29iamVjdCkgewogICAgICAgIHJldHVybiAkbG9nZ2VyX29iamVjdC0+Z2V0X3Nhd19icmFjZV9lcnJvcigpOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgd2VfYXJlX2F0X3RoZV9sYXN0X2xpbmUgewogICAgaWYgKCRsb2dnZXJfb2JqZWN0KSB7CiAgICAgICAgJGxvZ2dlcl9vYmplY3QtPndlX2FyZV9hdF90aGVfbGFzdF9saW5lKCk7CiAgICB9CiAgICByZXR1cm47Cn0KCiMgaW50ZXJmYWNlIHRvIFBlcmw6OlRpZHk6OkRpYWdub3N0aWNzIHJvdXRpbmUKc3ViIHdyaXRlX2RpYWdub3N0aWNzIHsKICAgIG15ICRtc2cgPSBzaGlmdDsKICAgIGlmICgkZGlhZ25vc3RpY3Nfb2JqZWN0KSB7ICRkaWFnbm9zdGljc19vYmplY3QtPndyaXRlX2RpYWdub3N0aWNzKCRtc2cpOyB9CiAgICByZXR1cm47Cn0KCnN1YiBnZXRfYWRkZWRfc2VtaWNvbG9uX2NvdW50IHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICByZXR1cm4gJGFkZGVkX3NlbWljb2xvbl9jb3VudDsKfQoKc3ViIERFU1RST1kgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgICRzZWxmLT5fZGVjcmVtZW50X2NvdW50KCk7CiAgICByZXR1cm47Cn0KCnN1YiBnZXRfb3V0cHV0X2xpbmVfbnVtYmVyIHsKICAgIHJldHVybiAkdmVydGljYWxfYWxpZ25lcl9vYmplY3QtPmdldF9vdXRwdXRfbGluZV9udW1iZXIoKTsKfQoKc3ViIG5ldyB7CgogICAgbXkgKCAkY2xhc3MsIEBhcmdzICkgPSBAXzsKCiAgICAjIHdlIGFyZSBnaXZlbiBhbiBvYmplY3Qgd2l0aCBhIHdyaXRlX2xpbmUoKSBtZXRob2QgdG8gdGFrZSBsaW5lcwogICAgbXkgJWRlZmF1bHRzID0gKAogICAgICAgIHNpbmtfb2JqZWN0ICAgICAgICA9PiB1bmRlZiwKICAgICAgICBkaWFnbm9zdGljc19vYmplY3QgPT4gdW5kZWYsCiAgICAgICAgbG9nZ2VyX29iamVjdCAgICAgID0+IHVuZGVmLAogICAgKTsKICAgIG15ICVhcmdzID0gKCAlZGVmYXVsdHMsIEBhcmdzICk7CgogICAgJGxvZ2dlcl9vYmplY3QgICAgICA9ICRhcmdze2xvZ2dlcl9vYmplY3R9OwogICAgJGRpYWdub3N0aWNzX29iamVjdCA9ICRhcmdze2RpYWdub3N0aWNzX29iamVjdH07CgogICAgIyB3ZSBjcmVhdGUgYW5vdGhlciBvYmplY3Qgd2l0aCBhIGdldF9saW5lKCkgYW5kIHBlZWtfYWhlYWQoKSBtZXRob2QKICAgIG15ICRzaW5rX29iamVjdCA9ICRhcmdze3Npbmtfb2JqZWN0fTsKICAgICRmaWxlX3dyaXRlcl9vYmplY3QgPQogICAgICBQZXJsOjpUaWR5OjpGaWxlV3JpdGVyLT5uZXcoICRzaW5rX29iamVjdCwgJHJPcHRzLCAkbG9nZ2VyX29iamVjdCApOwoKICAgICMgaW5pdGlhbGl6ZSB0aGUgbGVhZGluZyB3aGl0ZXNwYWNlIHN0YWNrIHRvIG5lZ2F0aXZlIGxldmVscwogICAgIyBzbyB0aGF0IHdlIGNhbiBuZXZlciBydW4gb2ZmIHRoZSBlbmQgb2YgdGhlIHN0YWNrCiAgICAkcGVha19iYXRjaF9zaXplICAgICAgICA9IDA7ICAgICMgZmxhZyB0byBkZXRlcm1pbmUgaWYgd2UgaGF2ZSBvdXRwdXQgY29kZQogICAgJGdudV9wb3NpdGlvbl9wcmVkaWN0b3IgPSAwOyAgICAjIHdoZXJlIHRoZSBjdXJyZW50IHRva2VuIGlzIHByZWRpY3RlZCB0byBiZQogICAgJG1heF9nbnVfc3RhY2tfaW5kZXggICAgPSAwOwogICAgJG1heF9nbnVfaXRlbV9pbmRleCAgICAgPSAtMTsKICAgICRnbnVfc3RhY2tbMF0gICAgICAgICAgICAgICAgPSBuZXdfbHBfaW5kZW50YXRpb25faXRlbSggMCwgLTEsIC0xLCAwLCAwICk7CiAgICBAZ251X2l0ZW1fbGlzdCAgICAgICAgICAgICAgID0gKCk7CiAgICAkbGFzdF9vdXRwdXRfaW5kZW50YXRpb24gICAgID0gMDsKICAgICRsYXN0X2luZGVudGF0aW9uX3dyaXR0ZW4gICAgPSAwOwogICAgJGxhc3RfdW5hZGp1c3RlZF9pbmRlbnRhdGlvbiA9IDA7CiAgICAkbGFzdF9sZWFkaW5nX3Rva2VuICAgICAgICAgID0gIiI7CiAgICAkbGFzdF9vdXRwdXRfc2hvcnRfb3BlbmluZ190b2tlbiA9IDA7CgogICAgJHNhd19WRVJTSU9OX2luX3RoaXNfZmlsZSA9ICEkck9wdHMtPnsncGFzcy12ZXJzaW9uLWxpbmUnfTsKICAgICRzYXdfRU5EX29yX0RBVEFfICAgICAgICAgPSAwOwoKICAgIEBibG9ja190eXBlX3RvX2dvICAgICAgICAgICAgPSAoKTsKICAgIEB0eXBlX3NlcXVlbmNlX3RvX2dvICAgICAgICAgPSAoKTsKICAgIEBjb250YWluZXJfZW52aXJvbm1lbnRfdG9fZ28gPSAoKTsKICAgIEBib25kX3N0cmVuZ3RoX3RvX2dvICAgICAgICAgPSAoKTsKICAgIEBmb3JjZWRfYnJlYWtwb2ludF90b19nbyAgICAgPSAoKTsKICAgIEBzdW1tZWRfbGVuZ3Roc190b19nbyAgICAgICAgPSAoKTsgICAgIyBsaW5lIGxlbmd0aCB0byBzdGFydCBvZiBpdGggdG9rZW4KICAgIEB0b2tlbl9sZW5ndGhzX3RvX2dvICAgICAgICAgPSAoKTsKICAgIEBsZXZlbHNfdG9fZ28gICAgICAgICAgICAgICAgPSAoKTsKICAgIEBtYXRjaGluZ190b2tlbl90b19nbyAgICAgICAgPSAoKTsKICAgIEBtYXRlX2luZGV4X3RvX2dvICAgICAgICAgICAgPSAoKTsKICAgIEBjaV9sZXZlbHNfdG9fZ28gICAgICAgICAgICAgPSAoKTsKICAgIEBuZXN0aW5nX2RlcHRoX3RvX2dvICAgICAgICAgPSAoMCk7CiAgICBAbm9icmVha190b19nbyAgICAgICAgICAgICAgID0gKCk7CiAgICBAb2xkX2JyZWFrcG9pbnRfdG9fZ28gICAgICAgID0gKCk7CiAgICBAdG9rZW5zX3RvX2dvICAgICAgICAgICAgICAgID0gKCk7CiAgICBAS190b19nbyAgICAgICAgICAgICAgICAgICAgID0gKCk7CiAgICBAdHlwZXNfdG9fZ28gICAgICAgICAgICAgICAgID0gKCk7CiAgICBAbGVhZGluZ19zcGFjZXNfdG9fZ28gICAgICAgID0gKCk7CiAgICBAcmVkdWNlZF9zcGFjZXNfdG9fZ28gICAgICAgID0gKCk7CiAgICBAaW5leHRfdG9fZ28gICAgICAgICAgICAgICAgID0gKCk7CiAgICBAaXByZXZfdG9fZ28gICAgICAgICAgICAgICAgID0gKCk7CgogICAgQHdoaXRlc3BhY2VfbGV2ZWxfc3RhY2sgPSAoKTsKICAgICR3aGl0ZXNwYWNlX2xhc3RfbGV2ZWwgID0gLTE7CgogICAgQGRvbnRfYWxpZ24gICAgICAgICA9ICgpOwogICAgQGhhc19icm9rZW5fc3VibGlzdCA9ICgpOwogICAgQHdhbnRfY29tbWFfYnJlYWsgICA9ICgpOwoKICAgIEBjaV9zdGFjayAgICAgICAgICAgICAgICAgICA9ICgiIik7CiAgICAkZmlyc3RfdGFiYmluZ19kaXNhZ3JlZW1lbnQgPSAwOwogICAgJGxhc3RfdGFiYmluZ19kaXNhZ3JlZW1lbnQgID0gMDsKICAgICR0YWJiaW5nX2Rpc2FncmVlbWVudF9jb3VudCA9IDA7CiAgICAkaW5fdGFiYmluZ19kaXNhZ3JlZW1lbnQgICAgPSAwOwogICAgJGlucHV0X2xpbmVfdGFiYmluZyAgICAgICAgID0gdW5kZWY7CgogICAgJGxhc3RfbGFzdF9saW5lX2xlYWRpbmdfbGV2ZWwgPSAwOwogICAgJGxhc3RfbGluZV9sZWFkaW5nX2xldmVsICAgICAgPSAwOwogICAgJGxhc3RfbGluZV9sZWFkaW5nX3R5cGUgICAgICAgPSAnIyc7CgogICAgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gICAgICAgID0gJzsnOwogICAgJGxhc3Rfbm9uYmxhbmtfdHlwZSAgICAgICAgID0gJzsnOwogICAgJGxhc3RfbGFzdF9ub25ibGFua190b2tlbiAgID0gJzsnOwogICAgJGxhc3RfbGFzdF9ub25ibGFua190eXBlICAgID0gJzsnOwogICAgJGxhc3Rfbm9uYmxhbmtfYmxvY2tfdHlwZSAgID0gIiI7CiAgICAkbGFzdF9vdXRwdXRfbGV2ZWwgICAgICAgICAgPSAwOwogICAgJGxvb2tpbmdfZm9yX2Vsc2UgICAgICAgICAgID0gMDsKICAgICRlbWJlZGRlZF90YWJfY291bnQgICAgICAgICA9IDA7CiAgICAkZmlyc3RfZW1iZWRkZWRfdGFiX2F0ICAgICAgPSAwOwogICAgJGxhc3RfZW1iZWRkZWRfdGFiX2F0ICAgICAgID0gMDsKICAgICRkZWxldGVkX3NlbWljb2xvbl9jb3VudCAgICA9IDA7CiAgICAkZmlyc3RfZGVsZXRlZF9zZW1pY29sb25fYXQgPSAwOwogICAgJGxhc3RfZGVsZXRlZF9zZW1pY29sb25fYXQgID0gMDsKICAgICRhZGRlZF9zZW1pY29sb25fY291bnQgICAgICA9IDA7CiAgICAkZmlyc3RfYWRkZWRfc2VtaWNvbG9uX2F0ICAgPSAwOwogICAgJGxhc3RfYWRkZWRfc2VtaWNvbG9uX2F0ICAgID0gMDsKICAgICRpc19zdGF0aWNfYmxvY2tfY29tbWVudCAgICA9IDA7CiAgICAlcG9zdHBvbmVkX2JyZWFrcG9pbnQgICAgICAgPSAoKTsKCiAgICAjIHZhcmlhYmxlcyBmb3IgYWRkaW5nIHNpZGUgY29tbWVudHMKICAgICVibG9ja19sZWFkaW5nX3RleHQgICAgICAgID0gKCk7CiAgICAlYmxvY2tfb3BlbmluZ19saW5lX251bWJlciA9ICgpOwogICAgJGNzY19uZXdfc3RhdGVtZW50X29rICAgICAgPSAxOwogICAgJWNzY19ibG9ja19sYWJlbCAgICAgICAgICAgPSAoKTsKCiAgICAlc2F2ZWRfb3BlbmluZ19pbmRlbnRhdGlvbiA9ICgpOwoKICAgIHJlc2V0X2Jsb2NrX3RleHRfYWNjdW11bGF0b3IoKTsKCiAgICBwcmVwYXJlX2Zvcl9uZXdfaW5wdXRfbGluZXMoKTsKCiAgICAkdmVydGljYWxfYWxpZ25lcl9vYmplY3QgPQogICAgICBQZXJsOjpUaWR5OjpWZXJ0aWNhbEFsaWduZXItPmluaXRpYWxpemUoICRyT3B0cywgJGZpbGVfd3JpdGVyX29iamVjdCwKICAgICAgICAkbG9nZ2VyX29iamVjdCwgJGRpYWdub3N0aWNzX29iamVjdCApOwoKICAgIGlmICggJHJPcHRzLT57J2VudGFiLWxlYWRpbmctd2hpdGVzcGFjZSd9ICkgewogICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoCiJMZWFkaW5nIHdoaXRlc3BhY2Ugd2lsbCBiZSBlbnRhYmJlZCB3aXRoICRyT3B0cy0+eydlbnRhYi1sZWFkaW5nLXdoaXRlc3BhY2UnfSBzcGFjZXMgcGVyIHRhYlxuIgogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICRyT3B0cy0+eyd0YWJzJ30gKSB7CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiSW5kZW50YXRpb24gd2lsbCBiZSB3aXRoIGEgdGFiIGNoYXJhY3RlclxuIik7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KAogICAgICAgICAgICAiSW5kZW50YXRpb24gd2lsbCBiZSB3aXRoICRyT3B0cy0+eydpbmRlbnQtY29sdW1ucyd9IHNwYWNlc1xuIik7CiAgICB9CgogICAgIyBUaGlzIGhhc2ggaG9sZHMgdGhlIG1haW4gZGF0YSBzdHJ1Y3R1cmVzIGZvciBmb3JtYXR0aW5nCiAgICAjIEFsbCBoYXNoIGtleXMgbXVzdCBiZSBkZWZpbmVkIGhlcmUuCiAgICAkZm9ybWF0dGVyX3NlbGYgPSB7CiAgICAgICAgcmxpbmVzICAgICAgICAgICAgICA9PiBbXSwgICAgICAgIyA9IHJlZiB0byBhcnJheSBvZiBsaW5lcyBvZiB0aGUgZmlsZQogICAgICAgIHJsaW5lc19uZXcgICAgICAgICAgPT4gW10sICAgICAgICMgPSByZWYgdG8gYXJyYXkgb2Ygb3V0cHV0IGxpbmVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIChGT1IgRlVUVVJFIERFVkVMT1BNRU5UKQogICAgICAgIHJMTCAgICAgICAgICAgICAgICAgPT4gW10sICAgICAgICMgPSByZWYgdG8gYXJyYXkgd2l0aCBhbGwgdG9rZW5zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbiB0aGUgZmlsZS4gTEwgb3JpZ2luYWxseSBtZWFudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgJ0xpbmtlZCBMaXN0Jy4gTGlua2VkIGxpc3RzIHdlcmUgYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYmFkIGlkZWEgYnV0IExMIGlzIGVhc3kgdG8gdHlwZS4KICAgICAgICBLbGltaXQgICAgICAgICAgICAgID0+IHVuZGVmLCAgICAjID0gbWF4aW11bSBLIGluZGV4IGZvciByTEwuIFRoaXMgaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5lZWRlZCB0byBjYXRjaCBhbnkgYXV0b3ZpdmlmaWNhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcHJvYmxlbXMuCiAgICAgICAgcm5lc3RlZF9wYWlycyAgICAgICA9PiBbXSwgICAgICAgIyBmb3Igd2VsZGluZyBkZWNpc2lvbnMKICAgICAgICBLX29wZW5pbmdfY29udGFpbmVyID0+IHt9LCAgICAgICAjIGZvciBxdWlja2x5IHRyYXZlcnNpbmcgc3RydWN0dXJlCiAgICAgICAgS19jbG9zaW5nX2NvbnRhaW5lciA9PiB7fSwgICAgICAgIyBmb3IgcXVpY2tseSB0cmF2ZXJzaW5nIHN0cnVjdHVyZQogICAgICAgIEtfb3BlbmluZ190ZXJuYXJ5ICAgPT4ge30sICAgICAgICMgZm9yIHF1aWNrbHkgdHJhdmVyc2luZyBzdHJ1Y3R1cmUKICAgICAgICBLX2Nsb3NpbmdfdGVybmFyeSAgID0+IHt9LCAgICAgICAjIGZvciBxdWlja2x5IHRyYXZlcnNpbmcgc3RydWN0dXJlCiAgICAgICAgcmNvbnRhaW5lcl9tYXAgICAgICA9PiB7fSwgICAgICAgIyBoaWVyYXJjaGljYWwgbWFwIG9mIGNvbnRhaW5lcnMKICAgICAgICByS19waGFudG9tX3NlbWljb2xvbnMgPT4KICAgICAgICAgIHVuZGVmLCAgICAjIGZvciB1bmRvaW5nIHBoYW50b20gc2VtaWNvbG9ucyBpZiBpdGVyYXRpbmcKICAgICAgICBycGFpcmVkX3RvX2lubmVyX2NvbnRhaW5lciA9PiB7fSwKICAgICAgICByYnJlYWtfY29udGFpbmVyICAgICAgICAgICA9PiB7fSwgICAgIyBwcmV2ZW50IG9uZS1saW5lIGJsb2NrcwogICAgICAgIHJzaG9ydF9uZXN0ZWQgICAgICAgICAgICAgID0+IHt9LCAgICAjIGJsb2NrcyBub3QgZm9yY2VkIG9wZW4KICAgICAgICBydmFsaWRfc2VsZl9rZXlzICAgICAgICAgICA9PiBbXSwgICAgIyBmb3IgY2hlY2tpbmcKICAgICAgICB2YWxpZ25fYmF0Y2hfY291bnQgICAgICAgICA9PiAwLAogICAgfTsKICAgIG15IEB2YWxpZF9rZXlzID0ga2V5cyAleyRmb3JtYXR0ZXJfc2VsZn07CiAgICAkZm9ybWF0dGVyX3NlbGYtPntydmFsaWRfc2VsZl9rZXlzfSA9IFxAdmFsaWRfa2V5czsKCiAgICBibGVzcyAkZm9ybWF0dGVyX3NlbGYsICRjbGFzczsKCiAgICAjIFNhZmV0eSBjaGVjay4udGhpcyBpcyBub3QgYSBjbGFzcyB5ZXQKICAgIGlmICggX2luY3JlbWVudF9jb3VudCgpID4gMSApIHsKICAgICAgICBjb25mZXNzCiJBdHRlbXB0IHRvIGNyZWF0ZSBtb3JlIHRoYW4gMSBvYmplY3QgaW4gJGNsYXNzLCB3aGljaCBpcyBub3QgYSB0cnVlIGNsYXNzIHlldFxuIjsKICAgIH0KICAgIHJldHVybiAkZm9ybWF0dGVyX3NlbGY7Cn0KCiMgRnV0dXJlIHJvdXRpbmVzIGZvciBzdG9yaW5nIG5ldyBsaW5lcwpzdWIgcHVzaF9saW5lIHsKICAgIG15ICggJHNlbGYsICRybGluZSApID0gQF87CgogICAgIyBteSAkcmxpbmUgPSAkcmxpbmVzLT5bJGluZGV4X29sZF07CiAgICAjIHB1c2ggQHskcmxpbmVzX25ld30sICRybGluZTsKICAgIHJldHVybjsKfQoKc3ViIHB1c2hfb2xkX2xpbmUgewogICAgbXkgKCAkc2VsZiwgJGluZGV4X29sZCApID0gQF87CgogICAgIyBUT0RPOiBUaGlzIHdpbGwgY29weSBsaW5lIHdpdGggaW5kZXggJGluZGV4X29sZCB0byB0aGUgbmV3IGxpbmUgYXJyYXkKICAgICMgbXkgJHJsaW5lcyA9ICRzZWxmLT57cmxpbmVzfTsKICAgICMgbXkgJHJsaW5lID0gJHJsaW5lcy0+WyRpbmRleF9vbGRdOwogICAgIyAkc2VsZi0+cHVzaF9saW5lKCRybGluZSk7CiAgICByZXR1cm47Cn0KCnN1YiBwdXNoX2JsYW5rX2xpbmUgewogICAgbXkgKCRzZWxmKSA9IEBfOwoKICAgICMgbXkgJHJsaW5lID0gLi4uCiAgICAjICRzZWxmLT5wdXNoX2xpbmUoJHJsaW5lKTsKICAgIHJldHVybjsKfQoKc3ViIHB1c2hfQ09ERV9saW5lIHsKICAgIG15ICggJHNlbGYsICRLbWluLCAkS21heCApID0gQF87CgogICAgIyBUT0RPOiBUaGlzIHdpbGwgc3RvcmUgdGhlIHZhbHVlcyBmb3Igb25lIG5ldyBsaW5lIG9mIENPREUKICAgICMgQ0hFQ0sgVE9LRU4gUkFOR0UgSEVSRQogICAgIyAkc2VsZi0+cHVzaF9saW5lKCRybGluZSk7CiAgICByZXR1cm47Cn0KCnN1YiBpbmNyZW1lbnRfdmFsaWduX2JhdGNoX2NvdW50IHsKICAgIG15ICgkc2VsZikgPSBzaGlmdDsKICAgIHJldHVybiArKyRzZWxmLT57dmFsaWduX2JhdGNoX2NvdW50fTsKfQoKc3ViIGdldF92YWxpZ25fYmF0Y2hfY291bnQgewogICAgbXkgKCRzZWxmKSA9IHNoaWZ0OwogICAgcmV0dXJuICRzZWxmLT57dmFsaWduX2JhdGNoX2NvdW50fTsKfQoKc3ViIEZhdWx0IHsKICAgIG15ICgkbXNnKSA9IEBfOwoKICAgICMgVGhpcyByb3V0aW5lIGlzIGNhbGxlZCBmb3IgZXJyb3JzIHRoYXQgcmVhbGx5IHNob3VsZCBub3Qgb2NjdXIKICAgICMgZXhjZXB0IGlmIHRoZXJlIGhhcyBiZWVuIGEgYnVnIGludHJvZHVjZWQgYnkgYSByZWNlbnQgcHJvZ3JhbSBjaGFuZ2UKICAgIG15ICggJHBhY2thZ2UwLCAkZmlsZW5hbWUwLCAkbGluZTAsICRzdWJyb3V0aW5lMCApID0gY2FsbGVyKDApOwogICAgbXkgKCAkcGFja2FnZTEsICRmaWxlbmFtZTEsICRsaW5lMSwgJHN1YnJvdXRpbmUxICkgPSBjYWxsZXIoMSk7CiAgICBteSAoICRwYWNrYWdlMiwgJGZpbGVuYW1lMiwgJGxpbmUyLCAkc3Vicm91dGluZTIgKSA9IGNhbGxlcigyKTsKCiAgICBEaWUoPDxFT00pOwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRmF1bHQgZGV0ZWN0ZWQgYXQgbGluZSAkbGluZTAgb2Ygc3ViICckc3Vicm91dGluZTEnCmluIGZpbGUgJyRmaWxlbmFtZTEnCndoaWNoIHdhcyBjYWxsZWQgZnJvbSBsaW5lICRsaW5lMSBvZiBzdWIgJyRzdWJyb3V0aW5lMicKTWVzc2FnZTogJyRtc2cnClRoaXMgaXMgcHJvYmFibHkgYW4gZXJyb3IgaW50cm9kdWNlZCBieSBhIHJlY2VudCBwcm9ncmFtbWluZyBjaGFuZ2UuIAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRU9NCgogICAgIyBUaGlzIGlzIGZvciBQZXJsLUNyaXRpYwogICAgcmV0dXJuOwp9CgpzdWIgY2hlY2tfc2VsZl9oYXNoIHsKICAgIG15ICRzZWxmICAgICAgICAgICAgPSBzaGlmdDsKICAgIG15IEB2YWxpZF9zZWxmX2tleXMgPSBAeyAkc2VsZi0+e3J2YWxpZF9zZWxmX2tleXN9IH07CiAgICBteSAldmFsaWRfc2VsZl9oYXNoOwogICAgQHZhbGlkX3NlbGZfaGFzaHtAdmFsaWRfc2VsZl9rZXlzfSA9ICgxKSB4IHNjYWxhcihAdmFsaWRfc2VsZl9rZXlzKTsKICAgIGNoZWNrX2tleXMoICRzZWxmLCBcJXZhbGlkX3NlbGZfaGFzaCwgIkNoZWNrcG9pbnQ6IHNlbGYgZXJyb3IiLCAxICk7CiAgICByZXR1cm47Cn0KCnN1YiBjaGVja190b2tlbl9hcnJheSB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwoKICAgICMgQ2hlY2sgZm9yIGVycm9ycyBpbiB0aGUgYXJyYXkgb2YgdG9rZW5zCiAgICAjIFVzZXMgcGFja2FnZSB2YXJpYWJsZSAkTlZBUlMKICAgICRzZWxmLT5jaGVja19zZWxmX2hhc2goKTsKICAgIG15ICRyTEwgPSAkc2VsZi0+e3JMTH07CiAgICBmb3IgKCBteSAkS0sgPSAwIDsgJEtLIDwgQHskckxMfSA7ICRLSysrICkgewogICAgICAgIG15ICRudmFycyA9IEB7ICRyTEwtPlskS0tdIH07CiAgICAgICAgaWYgKCAkbnZhcnMgIT0gJE5WQVJTICkgewogICAgICAgICAgICBteSAkdHlwZSA9ICRyTEwtPlskS0tdLT5bX1RZUEVfXTsKICAgICAgICAgICAgJHR5cGUgPSAnKicgdW5sZXNzIGRlZmluZWQoJHR5cGUpOwogICAgICAgICAgICBGYXVsdCgKIm51bWJlciBvZiB2YXJzIGZvciBub2RlICRLSywgdHlwZSAnJHR5cGUnLCBpcyAkbnZhcnMgYnV0IHNob3VsZCBiZSAkTlZBUlMiCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGZvcmVhY2ggbXkgJHZhciAoIF9UT0tFTl8sIF9UWVBFXyApIHsKICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCggJHJMTC0+WyRLS10tPlskdmFyXSApICkgewogICAgICAgICAgICAgICAgbXkgJGlsaW5lID0gJHJMTC0+WyRLS10tPltfTElORV9JTkRFWF9dOwogICAgICAgICAgICAgICAgRmF1bHQoIlVuZGVmaW5lZCB2YXJpYWJsZSAkdmFyIGZvciBLPSRLSywgbGluZT0kaWxpbmVcbiIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgc2V0X3JMTF9tYXhfaW5kZXggewogICAgbXkgJHNlbGYgPSBzaGlmdDsKCiAgICAjIFNldCB0aGUgbGltaXQgb2YgdGhlIHJMTCBhcnJheSwgYXNzdW1pbmcgdGhhdCBpdCBpcyBjb3JyZWN0LgogICAgIyBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSByb3V0aW5lcyBhZnRlciB0aGV5IG1ha2UgY2hhbmdlcwogICAgIyB0byB0b2tlbml6YXRpb24KICAgIG15ICRyTEwgPSAkc2VsZi0+e3JMTH07CiAgICBpZiAoICFkZWZpbmVkKCRyTEwpICkgewoKICAgICAgICAjIFNob3VsZG4ndCBoYXBwZW4gYmVjYXVzZSByTEwgd2FzIGluaXRpYWxpemVkIHRvIGJlIGFuIGFycmF5IHJlZgogICAgICAgIEZhdWx0KCJVbmRlZmluZWQgTWVtb3J5IHJMTCIpOwogICAgfQogICAgbXkgJEtsaW1pdF9vbGQgPSAkc2VsZi0+e0tsaW1pdH07CiAgICBteSAkbnVtICAgICAgICA9IEB7JHJMTH07CiAgICBteSAkS2xpbWl0OwogICAgaWYgKCAkbnVtID4gMCApIHsgJEtsaW1pdCA9ICRudW0gLSAxIH0KICAgICRzZWxmLT57S2xpbWl0fSA9ICRLbGltaXQ7CiAgICByZXR1cm4gKCRLbGltaXQpOwp9CgpzdWIgZ2V0X3JMTF9tYXhfaW5kZXggewogICAgbXkgJHNlbGYgPSBzaGlmdDsKCiAgICAjIHRoZSBtZW1vcnkgbG9jYXRpb24gJHJMTCBhbmQgbnVtYmVyIG9mIHRva2VucyBzaG91bGQgYmUgb2J0YWluZWQKICAgICMgZnJvbSB0aGlzIHJvdXRpbmUgc28gdGhhdCBhbnkgYXV0b3ZpdmljYXRpb24gY2FuIGJlIGltbWVkaWF0ZWx5IGNhdWdodC4KICAgIG15ICRyTEwgICAgPSAkc2VsZi0+e3JMTH07CiAgICBteSAkS2xpbWl0ID0gJHNlbGYtPntLbGltaXR9OwogICAgaWYgKCAhZGVmaW5lZCgkckxMKSApIHsKCiAgICAgICAgIyBTaG91bGRuJ3QgaGFwcGVuIGJlY2F1c2UgckxMIHdhcyBpbml0aWFsaXplZCB0byBiZSBhbiBhcnJheSByZWYKICAgICAgICBGYXVsdCgiVW5kZWZpbmVkIE1lbW9yeSByTEwiKTsKICAgIH0KICAgIG15ICRudW0gPSBAeyRyTEx9OwogICAgaWYgKCAgICRudW0gPT0gMCAmJiBkZWZpbmVkKCRLbGltaXQpCiAgICAgICAgfHwgJG51bSA+IDAgJiYgIWRlZmluZWQoJEtsaW1pdCkKICAgICAgICB8fCAkbnVtID4gMCAmJiAkS2xpbWl0ICE9ICRudW0gLSAxICkKICAgIHsKCiAgICAgICAgIyBQb3NzaWJsZSBhdXRvdml2aWZpY2F0aW9uIHByb2JsZW0uLi4KICAgICAgICBpZiAoICFkZWZpbmVkKCRLbGltaXQpICkgeyAkS2xpbWl0ID0gJyonIH0KICAgICAgICBGYXVsdCgiRXJyb3IgZ2V0dGluZyByTEw6IE1lbW9yeSBpdGVtcz0kbnVtIGFuZCBLbGltaXQ9JEtsaW1pdCIpOwogICAgfQogICAgcmV0dXJuICgkS2xpbWl0KTsKfQoKc3ViIHByZXBhcmVfZm9yX25ld19pbnB1dF9saW5lcyB7CgogICAgIyBSZW1lbWJlciB0aGUgbGFyZ2VzdCBiYXRjaCBzaXplIHByb2Nlc3NlZC4gVGhpcyBpcyBuZWVkZWQKICAgICMgYnkgdGhlIHBhZCByb3V0aW5lIHRvIGF2b2lkIHBhZGRpbmcgdGhlIGZpcnN0IG5vbmJsYW5rIHRva2VuCiAgICBpZiAoICRtYXhfaW5kZXhfdG9fZ28gJiYgJG1heF9pbmRleF90b19nbyA+ICRwZWFrX2JhdGNoX3NpemUgKSB7CiAgICAgICAgJHBlYWtfYmF0Y2hfc2l6ZSA9ICRtYXhfaW5kZXhfdG9fZ287CiAgICB9CgogICAgJGdudV9zZXF1ZW5jZV9udW1iZXIrKzsgICAgIyBpbmNyZW1lbnQgb3V0cHV0IGJhdGNoIGNvdW50ZXIKICAgICVsYXN0X2dudV9lcXVhbHMgICAgICAgICAgICAgICAgPSAoKTsKICAgICVnbnVfY29tbWFfY291bnQgICAgICAgICAgICAgICAgPSAoKTsKICAgICVnbnVfYXJyb3dfY291bnQgICAgICAgICAgICAgICAgPSAoKTsKICAgICRsaW5lX3N0YXJ0X2luZGV4X3RvX2dvICAgICAgICAgPSAwOwogICAgJG1heF9nbnVfaXRlbV9pbmRleCAgICAgICAgICAgICA9IFVOREVGSU5FRF9JTkRFWDsKICAgICRpbmRleF9tYXhfZm9yY2VkX2JyZWFrICAgICAgICAgPSBVTkRFRklORURfSU5ERVg7CiAgICAkbWF4X2luZGV4X3RvX2dvICAgICAgICAgICAgICAgID0gVU5ERUZJTkVEX0lOREVYOwogICAgJGxhc3Rfbm9uYmxhbmtfaW5kZXhfdG9fZ28gICAgICA9IFVOREVGSU5FRF9JTkRFWDsKICAgICRsYXN0X25vbmJsYW5rX3R5cGVfdG9fZ28gICAgICAgPSAnJzsKICAgICRsYXN0X25vbmJsYW5rX3Rva2VuX3RvX2dvICAgICAgPSAnJzsKICAgICRsYXN0X2xhc3Rfbm9uYmxhbmtfaW5kZXhfdG9fZ28gPSBVTkRFRklORURfSU5ERVg7CiAgICAkbGFzdF9sYXN0X25vbmJsYW5rX3R5cGVfdG9fZ28gID0gJyc7CiAgICAkbGFzdF9sYXN0X25vbmJsYW5rX3Rva2VuX3RvX2dvID0gJyc7CiAgICAkZm9yY2VkX2JyZWFrcG9pbnRfY291bnQgICAgICAgID0gMDsKICAgICRmb3JjZWRfYnJlYWtwb2ludF91bmRvX2NvdW50ICAgPSAwOwogICAgJHJicmFjZV9mb2xsb3dlciAgICAgICAgICAgICAgICA9IHVuZGVmOwogICAgJHN1bW1lZF9sZW5ndGhzX3RvX2dvWzBdICAgICAgICA9IDA7CiAgICAkY29tbWFfY291bnRfaW5fYmF0Y2ggICAgICAgICAgID0gMDsKICAgICRzdGFydGluZ19pbl9xdW90ZSAgICAgICAgICAgICAgPSAwOwoKICAgIGRlc3Ryb3lfb25lX2xpbmVfYmxvY2soKTsKICAgIHJldHVybjsKfQoKc3ViIGtleXdvcmRfZ3JvdXBfc2NhbiB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwoKICAgICMgTWFuaXB1bGF0ZSBibGFuayBsaW5lcyBhcm91bmQga2V5d29yZCBncm91cHMgKGtnYiogZmxhZ3MpCiAgICAjIFNjYW4gYWxsIGxpbmVzIGxvb2tpbmcgZm9yIHJ1bnMgb2YgY29uc2VjdXRpdmUgbGluZXMgYmVnaW5uaW5nIHdpdGgKICAgICMgc2VsZWN0ZWQga2V5d29yZHMuICBFeGFtcGxlIGtleXdvcmRzIGFyZSAnbXknLCAnb3VyJywgJ2xvY2FsJywgLi4uIGJ1dAogICAgIyB0aGV5IG1heSBiZSBhbnl0aGluZy4gIFdlIHdpbGwgc2V0IGZsYWdzIHJlcXVlc3RpbmcgdGhhdCBibGFua3MgYmUKICAgICMgaW5zZXJ0ZWQgYXJvdW5kIGFuZCB3aXRoaW4gdGhlbSBhY2NvcmRpbmcgdG8gaW5wdXQgcGFyYW1ldGVycy4gIE5vdGUKICAgICMgdGhhdCB3ZSBhcmUgc2Nhbm5pbmcgdGhlIGxpbmVzIGFzIHRoZXkgY2FtZSBpbiBpbiB0aGUgaW5wdXQgc3RyZWFtLCBzbwogICAgIyB0aGV5IGFyZSBub3QgbmVjZXNzYXJpbHkgd2VsbCBmb3JtYXR0ZWQuCgogICAgIyBUaGUgb3V0cHV0IG9mIHRoaXMgc3ViIGlzIGEgcmV0dXJuIGhhc2ggcmVmIHdob3NlIGtleXMgYXJlIHRoZSBpbmRleGVzIG9mCiAgICAjIGxpbmVzIGFmdGVyIHdoaWNoIHdlIGRlc2lyZSBhIGJsYW5rIGxpbmUuICBGb3IgbGluZSBpbmRleCBpOgogICAgIyAgICAgJHJoYXNoX29mX2Rlc2lyZXMtPnskaX0gPSAxIG1lYW5zIHdlIHdhbnQgYSBibGFuayBsaW5lIEFGVEVSIGxpbmUgJGkKICAgICMgICAgICRyaGFzaF9vZl9kZXNpcmVzLT57JGl9ID0gMiBtZWFucyB3ZSB3YW50IGJsYW5rIGxpbmUgJGkgcmVtb3ZlZAogICAgbXkgJHJoYXNoX29mX2Rlc2lyZXMgPSB7fTsKCiAgICBteSAkT3B0X2JsYW5rc19iZWZvcmUgPSAkck9wdHMtPnsna2V5d29yZC1ncm91cC1ibGFua3MtYmVmb3JlJ307ICAgIyAnLWtnYmInCiAgICBteSAkT3B0X2JsYW5rc19hZnRlciAgPSAkck9wdHMtPnsna2V5d29yZC1ncm91cC1ibGFua3MtYWZ0ZXInfTsgICAgIyAnLWtnYmEnCiAgICBteSAkT3B0X2JsYW5rc19pbnNpZGUgPSAkck9wdHMtPnsna2V5d29yZC1ncm91cC1ibGFua3MtaW5zaWRlJ307ICAgIyAnLWtnYmknCiAgICBteSAkT3B0X2JsYW5rc19kZWxldGUgPSAkck9wdHMtPnsna2V5d29yZC1ncm91cC1ibGFua3MtZGVsZXRlJ307ICAgIyAnLWtnYmQnCiAgICBteSAkT3B0X3NpemUgICAgICAgICAgPSAkck9wdHMtPnsna2V5d29yZC1ncm91cC1ibGFua3Mtc2l6ZSd9OyAgICAgIyAnLWtnYnMnCgogICAgIyBBIHJhbmdlIG9mIHNpemVzIGNhbiBiZSBpbnB1dCB3aXRoIGRlY2ltYWwgbm90YXRpb24gbGlrZSAnbWluLm1heCcgd2l0aAogICAgIyBhbnkgbnVtYmVyIG9mIGRvdHMgYmV0d2VlbiB0aGUgdHdvIG51bWJlcnMuIEV4YW1wbGVzOgogICAgIyAgICBzdHJpbmcgICAgPT4gICAgbWluICAgIG1heCAgbWF0Y2hlcwogICAgIyAgICAxLjEgICAgICAgICAgICAgMSAgICAgIDEgICAgZXhhY3RseSAxCiAgICAjICAgIDEuMyAgICAgICAgICAgICAxICAgICAgMyAgICAxLDIsIG9yIDMKICAgICMgICAgMS4uMyAgICAgICAgICAgIDEgICAgICAzICAgIDEsMiwgb3IgMwogICAgIyAgICA1ICAgICAgICAgICAgICAgNSAgICAgIC0gICAgNSBvciBtb3JlCiAgICAjICAgIDYuICAgICAgICAgICAgICA2ICAgICAgLSAgICA2IG9yIG1vcmUKICAgICMgICAgLjIgICAgICAgICAgICAgIC0gICAgICAyICAgIHVwIHRvIDIKICAgICMgICAgMS4wICAgICAgICAgICAgIDEgICAgICAwICAgIG5vdGhpbmcKICAgIG15ICggJE9wdF9zaXplX21pbiwgJE9wdF9zaXplX21heCApID0gc3BsaXQgL1wuKy8sICRPcHRfc2l6ZTsKICAgIGlmICggICAkT3B0X3NpemVfbWluICYmICRPcHRfc2l6ZV9taW4gIX4gL15cZCskLwogICAgICAgIHx8ICRPcHRfc2l6ZV9tYXggJiYgJE9wdF9zaXplX21heCAhfiAvXlxkKyQvICkKICAgIHsKICAgICAgICBXYXJuKDw8RU9NKTsKVW5leHBlY3RlZCB2YWx1ZSBmb3IgLWtnYnM6ICckT3B0X3NpemUnOyBleHBlY3RpbmcgJ21pbicgb3IgJ21pbi5tYXgnOyAKaWdub3JpbmcgYWxsIC1rZ2IgZmxhZ3MKRU9NCiAgICAgICAgcmV0dXJuICRyaGFzaF9vZl9kZXNpcmVzOwogICAgfQogICAgJE9wdF9zaXplX21pbiA9IDEgdW5sZXNzICgkT3B0X3NpemVfbWluKTsKCiAgICBpZiAoICRPcHRfc2l6ZV9tYXggJiYgJE9wdF9zaXplX21heCA8ICRPcHRfc2l6ZV9taW4gKSB7CiAgICAgICAgcmV0dXJuICRyaGFzaF9vZl9kZXNpcmVzOwogICAgfQoKICAgICMgY29kZXMgZm9yICRPcHRfYmxhbmtzX2JlZm9yZSBhbmQgJE9wdF9ibGFua3NfYWZ0ZXI6CiAgICAjIDAgPSBuZXZlciAoZGVsZXRlIGlmIGV4aXN0KQogICAgIyAxID0gc3RhYmxlIChrZWVwIHVuY2hhbmdlZCkKICAgICMgMiA9IGFsd2F5cyAoaW5zZXJ0IGlmIG1pc3NpbmcpCgogICAgcmV0dXJuICRyaGFzaF9vZl9kZXNpcmVzCiAgICAgIHVubGVzcyAkT3B0X3NpemVfbWluID4gMAogICAgICAmJiAoICRPcHRfYmxhbmtzX2JlZm9yZSAhPSAxCiAgICAgICAgfHwgJE9wdF9ibGFua3NfYWZ0ZXIgIT0gMQogICAgICAgIHx8ICRPcHRfYmxhbmtzX2luc2lkZQogICAgICAgIHx8ICRPcHRfYmxhbmtzX2RlbGV0ZSApOwoKICAgIG15ICRPcHRfcGF0dGVybiAgICAgICAgID0gJGtleXdvcmRfZ3JvdXBfbGlzdF9wYXR0ZXJuOwogICAgbXkgJE9wdF9jb21tZW50X3BhdHRlcm4gPSAka2V5d29yZF9ncm91cF9saXN0X2NvbW1lbnRfcGF0dGVybjsKICAgIG15ICRPcHRfcmVwZWF0X2NvdW50ID0KICAgICAgJHJPcHRzLT57J2tleXdvcmQtZ3JvdXAtYmxhbmtzLXJlcGVhdC1jb3VudCd9OyAgICAjICcta2dicicKCiAgICBteSAkcmxpbmVzICAgICAgICAgICAgICA9ICRzZWxmLT57cmxpbmVzfTsKICAgIG15ICRyTEwgICAgICAgICAgICAgICAgID0gJHNlbGYtPntyTEx9OwogICAgbXkgJEtfY2xvc2luZ19jb250YWluZXIgPSAkc2VsZi0+e0tfY2xvc2luZ19jb250YWluZXJ9OwoKICAgICMgdmFyaWFibGVzIGZvciB0aGUgY3VycmVudCBncm91cCBhbmQgc3ViZ3JvdXBzOgogICAgbXkgKCAkaWJlZywgJGllbmQsICRjb3VudCwgJGxldmVsX2JlZywgJEtfY2xvc2luZywgQGlibGFua3MsIEBncm91cCwKICAgICAgICBAc3ViZ3JvdXAgKTsKCiAgICAjIERlZmluaXRpb25zOgogICAgIyAoJGliZWcsICRpZW5kKSA9IHN0YXJ0aW5nIGFuZCBlbmRpbmcgbGluZSBpbmRleGVzIG9mIHRoaXMgZW50aXJlIGdyb3VwCiAgICAjICAgICAgICAgJGNvdW50ID0gdG90YWwgbnVtYmVyIG9mIGtleXdvcmRzIHNlZW4gaW4gdGhpcyBlbnRpcmUgZ3JvdXAKICAgICMgICAgICRsZXZlbF9iZWcgPSBpbmRlbnRlbnRhdGlvbiBsZXZlbCBvZiB0aGlzIGdyb3VwCiAgICAjICAgICAgICAgQGdyb3VwID0gWyAkaSwgJHRva2VuLCAkY291bnQgXSA9bGlzdCBvZiBhbGwga2V5d29yZHMgJiBibGFua3MKICAgICMgICAgICBAc3ViZ3JvdXAgPSAgJGosIGluZGV4IG9mIGdyb3VwIHdoZXJlIHRva2VuIGNoYW5nZXMKICAgICMgICAgICAgQGlibGFua3MgPSBsaW5lIGluZGV4ZXMgb2YgYmxhbmsgbGluZXMgaW4gaW5wdXQgc3RyZWFtIGluIHRoaXMgZ3JvdXAKICAgICMgIHdoZXJlIGk9c3RhcnRpbmcgbGluZSBpbmRleAogICAgIyAgICAgICAgdG9rZW4gKHRoZSBrZXl3b3JkKQogICAgIyAgICAgICAgY291bnQgPSBudW1iZXIgb2YgdGhpcyB0b2tlbiBpbiB0aGlzIHN1Ymdyb3VwCiAgICAjICAgICAgICAgICAgaiA9IGluZGV4IGluIGdyb3VwIHdoZXJlIHRva2VuIGNoYW5nZXMKICAgICMKICAgICMgVGhlc2UgdmFycyB3aWxsIGNvbnRhaW4gdmFsdWVzIGZvciB0aGUgbW9zdCByZWNlbnRseSBzZWVuIGxpbmU6CiAgICBteSAoICRsaW5lX3R5cGUsICRDT0RFX3R5cGUsICRLX2ZpcnN0LCAkS19sYXN0ICk7CgogICAgbXkgJG51bWJlcl9vZl9ncm91cHNfc2VlbiA9IDA7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMgaGVscGVyIHN1YnJvdXRpbmVzCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgIG15ICRpbnNlcnRfYmxhbmtfYWZ0ZXIgPSBzdWIgewogICAgICAgIG15ICgkaSkgPSBAXzsKICAgICAgICAkcmhhc2hfb2ZfZGVzaXJlcy0+eyRpfSA9IDE7CiAgICAgICAgbXkgJGlwID0gJGkgKyAxOwogICAgICAgIGlmICggZGVmaW5lZCggJHJoYXNoX29mX2Rlc2lyZXMtPnskaXB9ICkKICAgICAgICAgICAgJiYgJHJoYXNoX29mX2Rlc2lyZXMtPnskaXB9ID09IDIgKQogICAgICAgIHsKICAgICAgICAgICAgJHJoYXNoX29mX2Rlc2lyZXMtPnskaXB9ID0gMDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgfTsKCiAgICBteSAkc3BsaXRfaW50b19zdWJfZ3JvdXBzID0gc3ViIHsKCiAgICAgICAgIyBwbGFjZSBibGFua3MgYXJvdW5kIGxvbmcgc3ViLWdyb3VwcyBvZiBrZXl3b3JkcwogICAgICAgICMgLi4uaWYgcmVxdWVzdGVkCiAgICAgICAgcmV0dXJuIHVubGVzcyAoJE9wdF9ibGFua3NfaW5zaWRlKTsKCiAgICAgICAgIyBsb29wIG92ZXIgc3ViLWdyb3VwcywgaW5kZXggawogICAgICAgIHB1c2ggQHN1Ymdyb3VwLCBzY2FsYXIgQGdyb3VwOwogICAgICAgIG15ICRrYmVnID0gMTsKICAgICAgICBteSAka2VuZCA9IEBzdWJncm91cCAtIDE7CiAgICAgICAgZm9yICggbXkgJGsgPSAka2JlZyA7ICRrIDw9ICRrZW5kIDsgJGsrKyApIHsKCiAgICAgICAgICAgICMgaW5kZXggaiBydW5zIHRocm91Z2ggYWxsIGtleXdvcmRzIGZvdW5kCiAgICAgICAgICAgIG15ICRqX2IgPSAkc3ViZ3JvdXBbICRrIC0gMSBdOwogICAgICAgICAgICBteSAkal9lID0gJHN1Ymdyb3VwWyRrXSAtIDE7CgogICAgICAgICAgICAjIGluZGV4IGkgaXMgdGhlIGFjdHVhbCBsaW5lIG51bWJlciBvZiBhIGtleXdvcmQKICAgICAgICAgICAgbXkgKCAkaV9iLCAkdG9rX2IsICRjb3VudF9iICkgPSBAeyAkZ3JvdXBbJGpfYl0gfTsKICAgICAgICAgICAgbXkgKCAkaV9lLCAkdG9rX2UsICRjb3VudF9lICkgPSBAeyAkZ3JvdXBbJGpfZV0gfTsKICAgICAgICAgICAgbXkgJG51bSA9ICRjb3VudF9lIC0gJGNvdW50X2IgKyAxOwoKICAgICAgICAgICAgIyBUaGlzIHN1Ymdyb3VwIHJ1bnMgZnJvbSBsaW5lICRpYiB0byBsaW5lICRpZS0xLCBidXQgbWF5IGNvbnRhaW4KICAgICAgICAgICAgIyBibGFuayBsaW5lcwogICAgICAgICAgICBpZiAoICRudW0gPj0gJE9wdF9zaXplX21pbiApIHsKCiAgICAgICAgICAgICAgICAjIGlmIHRoZXJlIGFyZSBibGFuayBsaW5lcywgd2UgcmVxdWlyZSB0aGF0IGF0IGxlYXN0ICRudW0gbGluZXMKICAgICAgICAgICAgICAgICMgYmUgbm9uLWJsYW5rIHVwIHRvIHRoZSBib3VuZGFyeSB3aXRoIHRoZSBuZXh0IHN1Ymdyb3VwLgogICAgICAgICAgICAgICAgbXkgJG5vZ19iID0gbXkgJG5vZ19lID0gMTsKICAgICAgICAgICAgICAgIGlmICggQGlibGFua3MgJiYgISRPcHRfYmxhbmtzX2RlbGV0ZSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkal9iYiA9ICRqX2IgKyAkbnVtIC0gMTsKICAgICAgICAgICAgICAgICAgICBteSAoICRpX2JiLCAkdG9rX2JiLCAkY291bnRfYmIgKSA9IEB7ICRncm91cFskal9iYl0gfTsKICAgICAgICAgICAgICAgICAgICAkbm9nX2IgPSAkY291bnRfYmIgLSAkY291bnRfYiArIDEgPT0gJG51bTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJGpfZWUgPSAkal9lIC0gKCAkbnVtIC0gMSApOwogICAgICAgICAgICAgICAgICAgIG15ICggJGlfZWUsICR0b2tfZWUsICRjb3VudF9lZSApID0gQHsgJGdyb3VwWyRqX2VlXSB9OwogICAgICAgICAgICAgICAgICAgICRub2dfZSA9ICRjb3VudF9lIC0gJGNvdW50X2VlICsgMSA9PSAkbnVtOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCAkbm9nX2IgJiYgJGsgPiAka2JlZyApIHsKICAgICAgICAgICAgICAgICAgICAkaW5zZXJ0X2JsYW5rX2FmdGVyLT4oICRpX2IgLSAxICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoICRub2dfZSAmJiAkayA8ICRrZW5kICkgewogICAgICAgICAgICAgICAgICAgIG15ICggJGlfZXAsICR0b2tfZXAsICRjb3VudF9lcCApID0gQHsgJGdyb3VwWyAkal9lICsgMSBdIH07CiAgICAgICAgICAgICAgICAgICAgJGluc2VydF9ibGFua19hZnRlci0+KCAkaV9lcCAtIDEgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07CgogICAgbXkgJGRlbGV0ZV9pZl9ibGFuayA9IHN1YiB7CiAgICAgICAgbXkgKCRpKSA9IEBfOwoKICAgICAgICAjIGRlbGV0ZSBsaW5lICRpIGlmIGl0IGlzIGJsYW5rCiAgICAgICAgcmV0dXJuIHVubGVzcyAoICRpID49IDAgJiYgJGkgPCBAeyRybGluZXN9ICk7CiAgICAgICAgbXkgJGxpbmVfdHlwZSA9ICRybGluZXMtPlskaV0tPntfbGluZV90eXBlfTsKICAgICAgICByZXR1cm4gaWYgKCAkbGluZV90eXBlIG5lICdDT0RFJyApOwogICAgICAgIG15ICRjb2RlX3R5cGUgPSAkcmxpbmVzLT5bJGldLT57X2NvZGVfdHlwZX07CiAgICAgICAgaWYgKCAkY29kZV90eXBlIGVxICdCTCcgKSB7ICRyaGFzaF9vZl9kZXNpcmVzLT57JGl9ID0gMjsgfQogICAgICAgIHJldHVybjsKICAgIH07CgogICAgbXkgJGRlbGV0ZV9pbm5lcl9ibGFua19saW5lcyA9IHN1YiB7CgogICAgICAgICMgYWx3YXlzIHJlbW92ZSB1bndhbnRlZCB0cmFpbGluZyBibGFuayBsaW5lcyBmcm9tIG91ciBsaXN0CiAgICAgICAgcmV0dXJuIHVubGVzcyAoQGlibGFua3MpOwogICAgICAgIHdoaWxlICggbXkgJGlibCA9IHBvcChAaWJsYW5rcykgKSB7CiAgICAgICAgICAgIGlmICggJGlibCA8ICRpZW5kICkgeyBwdXNoIEBpYmxhbmtzLCAkaWJsOyBsYXN0IH0KICAgICAgICAgICAgJGllbmQgPSAkaWJsOwogICAgICAgIH0KCiAgICAgICAgIyBub3cgbWFyayBtYXJrIGludGVyaW9yIGJsYW5rIGxpbmVzIGZvciBkZWxldGlvbiBpZiByZXF1ZXN0ZWQKICAgICAgICByZXR1cm4gdW5sZXNzICgkT3B0X2JsYW5rc19kZWxldGUpOwoKICAgICAgICB3aGlsZSAoIG15ICRpYmwgPSBwb3AoQGlibGFua3MpICkgeyAkcmhhc2hfb2ZfZGVzaXJlcy0+eyRpYmx9ID0gMiB9CgogICAgfTsKCiAgICBteSAkZW5kX2dyb3VwID0gc3ViIHsKCiAgICAgICAgIyBlbmQgYSBncm91cCBvZiBrZXl3b3JkcwogICAgICAgIG15ICgkYmFkX2VuZGluZykgPSBAXzsKICAgICAgICBpZiAoIGRlZmluZWQoJGliZWcpICYmICRpYmVnID49IDAgKSB7CgogICAgICAgICAgICAjIHRoZW4gaGFuZGxlIHN1ZmZpY2llbnRseSBsYXJnZSBncm91cHMKICAgICAgICAgICAgaWYgKCAkY291bnQgPj0gJE9wdF9zaXplX21pbiApIHsKCiAgICAgICAgICAgICAgICAkbnVtYmVyX29mX2dyb3Vwc19zZWVuKys7CgogICAgICAgICAgICAgICAgIyBkbyBhbnkgYmxhbmsgZGVsZXRpb25zIHJlZ2FyZGxlc3Mgb2YgdGhlIGNvdW50CiAgICAgICAgICAgICAgICAkZGVsZXRlX2lubmVyX2JsYW5rX2xpbmVzLT4oKTsKCiAgICAgICAgICAgICAgICBpZiAoICRpYmVnID4gMCApIHsKICAgICAgICAgICAgICAgICAgICBteSAkY29kZV90eXBlID0gJHJsaW5lcy0+WyAkaWJlZyAtIDEgXS0+e19jb2RlX3R5cGV9OwoKICAgICAgICAgICAgICAgICAgICAjIHBhdGNoIGZvciBoYXNoIGJhbmcgbGluZSB3aGljaCBpcyBub3QgY3VycmVudGx5IG1hcmtlZCBhcwogICAgICAgICAgICAgICAgICAgICMgYSBjb21tZW50OyBtYXJrIGl0IGFzIGEgY29tbWVudAogICAgICAgICAgICAgICAgICAgIGlmICggJGliZWcgPT0gMSAmJiAhJGNvZGVfdHlwZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGxpbmVfdGV4dCA9ICRybGluZXMtPlsgJGliZWcgLSAxIF0tPntfbGluZV90ZXh0fTsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvZGVfdHlwZSA9ICdCQycKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRsaW5lX3RleHQgJiYgJGxpbmVfdGV4dCA9fiAvXiMvICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIERvIG5vdCBpbnNlcnQgYSBibGFuayBhZnRlciBhIGNvbW1lbnQKICAgICAgICAgICAgICAgICAgICAjICh0aGlzIGNvdWxkIGJlIHN1YmplY3QgdG8gYSBmbGFnIGluIHRoZSBmdXR1cmUpCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkY29kZV90eXBlICF+IC8oQkN8U0JDfFNCQ1gpLyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkT3B0X2JsYW5rc19iZWZvcmUgPT0gSU5TRVJUICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluc2VydF9ibGFua19hZnRlci0+KCAkaWJlZyAtIDEgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkT3B0X2JsYW5rc19iZWZvcmUgPT0gREVMRVRFICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRlbGV0ZV9pZl9ibGFuay0+KCAkaWJlZyAtIDEgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIFdlIHdpbGwgb25seSBwdXQgYmxhbmtzIGJlZm9yZSBjb2RlIGxpbmVzLiBXZSBjb3VsZCBsb29zZW4KICAgICAgICAgICAgICAgICMgdGhpcyBydWxlIGEgbGl0dGxlLCBidXQgd2UgaGF2ZSB0byBiZSB2ZXJ5IGNhcmVmdWwgYmVjYXVzZQogICAgICAgICAgICAgICAgIyBmb3IgZXhhbXBsZSB3ZSBjZXJ0YWlubHkgZG9uJ3Qgd2FudCB0byBkcm9wIGEgYmxhbmsgbGluZQogICAgICAgICAgICAgICAgIyBhZnRlciBhIGxpbmUgbGlrZSB0aGlzOgogICAgICAgICAgICAgICAgIyAgIG15ICR2YXIgPSA8PEVPTTsKICAgICAgICAgICAgICAgIGlmICggJGxpbmVfdHlwZSBlcSAnQ09ERScgJiYgZGVmaW5lZCgkS19maXJzdCkgKSB7CgogICAgICAgICAgICAgICAgICAgICMgLSBEbyBub3QgcHV0IGEgYmxhbmsgYmVmb3JlIGEgbGluZSBvZiBkaWZmZXJlbnQgbGV2ZWwKICAgICAgICAgICAgICAgICAgICAjIC0gRG8gbm90IHB1dCBhIGJsYW5rIGxpbmUgaWYgd2UgZW5kZWQgdGhlIHNlYXJjaCBiYWRseQogICAgICAgICAgICAgICAgICAgICMgLSBEbyBub3QgcHV0IGEgYmxhbmsgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZQogICAgICAgICAgICAgICAgICAgICMgLSBEbyBub3QgcHV0IGEgYmxhbmsgbGluZSBiZWZvcmUgYSBoYW5naW5nIHNpZGUgY29tbWVudAogICAgICAgICAgICAgICAgICAgIG15ICRsZXZlbCAgICA9ICRyTEwtPlskS19maXJzdF0tPltfTEVWRUxfXTsKICAgICAgICAgICAgICAgICAgICBteSAkY2lfbGV2ZWwgPSAkckxMLT5bJEtfZmlyc3RdLT5bX0NJX0xFVkVMX107CgogICAgICAgICAgICAgICAgICAgIGlmICggICAkbGV2ZWwgPT0gJGxldmVsX2JlZwogICAgICAgICAgICAgICAgICAgICAgICAmJiAkY2lfbGV2ZWwgPT0gMAogICAgICAgICAgICAgICAgICAgICAgICAmJiAhJGJhZF9lbmRpbmcKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGllbmQgPCBAeyRybGluZXN9CiAgICAgICAgICAgICAgICAgICAgICAgICYmICRDT0RFX3R5cGUgbmUgJ0hTQycgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkT3B0X2JsYW5rc19hZnRlciA9PSBJTlNFUlQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW5zZXJ0X2JsYW5rX2FmdGVyLT4oJGllbmQpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICggJE9wdF9ibGFua3NfYWZ0ZXIgPT0gREVMRVRFICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRlbGV0ZV9pZl9ibGFuay0+KCAkaWVuZCArIDEgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkc3BsaXRfaW50b19zdWJfZ3JvdXBzLT4oKTsKICAgICAgICB9CgogICAgICAgICMgcmVzZXQgZm9yIGFub3RoZXIgZ3JvdXAKICAgICAgICAkaWJlZyAgICAgID0gLTE7CiAgICAgICAgJGllbmQgICAgICA9IHVuZGVmOwogICAgICAgICRsZXZlbF9iZWcgPSAtMTsKICAgICAgICAkS19jbG9zaW5nID0gdW5kZWY7CiAgICAgICAgQGdyb3VwICAgICA9ICgpOwogICAgICAgIEBzdWJncm91cCAgPSAoKTsKICAgICAgICBAaWJsYW5rcyAgID0gKCk7CiAgICB9OwoKICAgIG15ICRmaW5kX2NvbnRhaW5lcl9lbmQgPSBzdWIgewoKICAgICAgICAjIElmIHRoZSBrZXl3b3JkIGxpbmVzIGVuZHMgd2l0aCBhbiBvcGVuIHRva2VuLCBmaW5kIHRoZSBjbG9zaW5nIHRva2VuCiAgICAgICAgIyAnJEtfY2xvc2luZycgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IHNraXAgcGFzdCB0aGUgY29udGVudHMgb2YgdGhlCiAgICAgICAgIyBjb250YWluZXIuCiAgICAgICAgcmV0dXJuIGlmICggJEtfbGFzdCA8PSAkS19maXJzdCApOwogICAgICAgIG15ICRLSyAgICAgICAgPSAkS19sYXN0OwogICAgICAgIG15ICR0eXBlX2xhc3QgPSAkckxMLT5bJEtLXS0+W19UWVBFX107CiAgICAgICAgbXkgJHRva19sYXN0ICA9ICRyTEwtPlskS0tdLT5bX1RPS0VOX107CiAgICAgICAgaWYgKCAkdHlwZV9sYXN0IGVxICcjJyApIHsKICAgICAgICAgICAgJEtLICAgICAgID0gJHNlbGYtPktfcHJldmlvdXNfbm9uYmxhbmsoJEtLKTsKICAgICAgICAgICAgJHRva19sYXN0ID0gJHJMTC0+WyRLS10tPltfVE9LRU5fXTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkS0sgPiAkS19maXJzdCAmJiAkdG9rX2xhc3QgPX4gL15bXChce1xbXSQvICkgewoKICAgICAgICAgICAgbXkgJHR5cGVfc2VxdWVuY2UgPSAkckxMLT5bJEtLXS0+W19UWVBFX1NFUVVFTkNFX107CiAgICAgICAgICAgIG15ICRsZXYgICAgICAgICAgID0gJHJMTC0+WyRLS10tPltfTEVWRUxfXTsKICAgICAgICAgICAgaWYgKCAkbGV2ID09ICRsZXZlbF9iZWcgKSB7CiAgICAgICAgICAgICAgICAkS19jbG9zaW5nID0gJEtfY2xvc2luZ19jb250YWluZXItPnskdHlwZV9zZXF1ZW5jZX07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwoKICAgIG15ICRhZGRfdG9fZ3JvdXAgPSBzdWIgewogICAgICAgIG15ICggJGksICR0b2tlbiwgJGxldmVsICkgPSBAXzsKCiAgICAgICAgIyBFbmQgdGhlIHByZXZpb3VzIGdyb3VwIGlmIHdlIGhhdmUgcmVhY2hlZCB0aGUgbWF4aW11bQogICAgICAgICMgZ3JvdXAgc2l6ZQogICAgICAgIGlmICggJE9wdF9zaXplX21heCAmJiBAZ3JvdXAgPj0gJE9wdF9zaXplX21heCApIHsKICAgICAgICAgICAgJGVuZF9ncm91cC0+KCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIEBncm91cCA9PSAwICkgewogICAgICAgICAgICAkaWJlZyAgICAgID0gJGk7CiAgICAgICAgICAgICRsZXZlbF9iZWcgPSAkbGV2ZWw7CiAgICAgICAgICAgICRjb3VudCAgICAgPSAwOwogICAgICAgIH0KCiAgICAgICAgJGNvdW50Kys7CiAgICAgICAgJGllbmQgPSAkaTsKCiAgICAgICAgIyBOZXcgc3ViLWdyb3VwPwogICAgICAgIGlmICggIUBncm91cCB8fCAkdG9rZW4gbmUgJGdyb3VwWy0xXS0+WzFdICkgewogICAgICAgICAgICBwdXNoIEBzdWJncm91cCwgc2NhbGFyKEBncm91cCk7CiAgICAgICAgfQogICAgICAgIHB1c2ggQGdyb3VwLCBbICRpLCAkdG9rZW4sICRjb3VudCBdOwoKICAgICAgICAjIHJlbWVtYmVyIGlmIHRoaXMgbGluZSBlbmRzIGluIGFuIG9wZW4gY29udGFpbmVyCiAgICAgICAgJGZpbmRfY29udGFpbmVyX2VuZC0+KCk7CgogICAgICAgIHJldHVybjsKICAgIH07CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMgbG9vcCBvdmVyIGFsbCBsaW5lcyBvZiB0aGUgc291cmNlCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgJGVuZF9ncm91cC0+KCk7CiAgICBteSAkaSA9IC0xOwogICAgZm9yZWFjaCBteSAkbGluZV9vZl90b2tlbnMgKCBAeyRybGluZXN9ICkgewoKICAgICAgICAkaSsrOwogICAgICAgIGxhc3QKICAgICAgICAgIGlmICggJE9wdF9yZXBlYXRfY291bnQgPiAwCiAgICAgICAgICAgICYmICRudW1iZXJfb2ZfZ3JvdXBzX3NlZW4gPj0gJE9wdF9yZXBlYXRfY291bnQgKTsKCiAgICAgICAgJENPREVfdHlwZSA9ICIiOwogICAgICAgICRLX2ZpcnN0ICAgPSB1bmRlZjsKICAgICAgICAkS19sYXN0ICAgID0gdW5kZWY7CiAgICAgICAgJGxpbmVfdHlwZSA9ICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3R5cGV9OwoKICAgICAgICAjIGFsd2F5cyBlbmQgYSBncm91cCBhdCBub24tQ09ERQogICAgICAgIGlmICggJGxpbmVfdHlwZSBuZSAnQ09ERScgKSB7ICRlbmRfZ3JvdXAtPigpOyBuZXh0IH0KCiAgICAgICAgJENPREVfdHlwZSA9ICRsaW5lX29mX3Rva2Vucy0+e19jb2RlX3R5cGV9OwoKICAgICAgICAjIGVuZCBhbnkgZ3JvdXAgYXQgYSBmb3JtYXQgc2tpcHBpbmcgbGluZQogICAgICAgIGlmICggJENPREVfdHlwZSAmJiAkQ09ERV90eXBlIGVxICdGUycgKSB7CiAgICAgICAgICAgICRlbmRfZ3JvdXAtPigpOwogICAgICAgICAgICBuZXh0OwogICAgICAgIH0KCiAgICAgICAgIyBjb250aW51ZSBpbiBhIHZlcmJhdGltIChWQikgdHlwZTsgaXQgbWF5IGJlIHF1b3RlZCB0ZXh0CiAgICAgICAgaWYgKCAkQ09ERV90eXBlIGVxICdWQicgKSB7CiAgICAgICAgICAgIGlmICggJGliZWcgPj0gMCApIHsgJGllbmQgPSAkaTsgfQogICAgICAgICAgICBuZXh0OwogICAgICAgIH0KCiAgICAgICAgIyBhbmQgY29udGludWUgaW4gYmxhbmsgKEJMKSB0eXBlcwogICAgICAgIGlmICggJENPREVfdHlwZSBlcSAnQkwnICkgewogICAgICAgICAgICBpZiAoICRpYmVnID49IDAgKSB7CiAgICAgICAgICAgICAgICAkaWVuZCA9ICRpOwogICAgICAgICAgICAgICAgcHVzaCBAe2libGFua3N9LCAkaTsKCiAgICAgICAgICAgICAgICAjIHByb3BhZ2F0ZSBjdXJyZW50IHN1Ymdyb3VwIHRva2VuCiAgICAgICAgICAgICAgICBteSAkdG9rID0gJGdyb3VwWy0xXS0+WzFdOwogICAgICAgICAgICAgICAgcHVzaCBAZ3JvdXAsIFsgJGksICR0b2ssICRjb3VudCBdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG5leHQ7CiAgICAgICAgfQoKICAgICAgICAjIGV4YW1pbmUgdGhlIGZpcnN0IHRva2VuIG9mIHRoaXMgbGluZQogICAgICAgIG15ICRyS19yYW5nZSA9ICRsaW5lX29mX3Rva2Vucy0+e19yS19yYW5nZX07CiAgICAgICAgKCAkS19maXJzdCwgJEtfbGFzdCApID0gQHskcktfcmFuZ2V9OwogICAgICAgIGlmICggIWRlZmluZWQoJEtfZmlyc3QpICkgewoKICAgICAgICAgICAgIyBVbmV4cGVjdGVkIGJsYW5rIGxpbmUuLnNob3VsZG4ndCBoYXBwZW4KICAgICAgICAgICAgIyAkcktfcmFuZ2Ugc2hvdWxkIGJlIGRlZmluZWQgZm9yIGxpbmUgdHlwZSBDT0RFCiAgICAgICAgICAgIFdhcm4oCiJQcm9ncmFtbWluZyBFcnJvcjogVW5leHBlY3RlZCBCbGFuayBMaW5lIGluIHN1YiAna2V5d29yZF9ncm91cF9zY2FuJy4gSWdub3JpbmciCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiAkcmhhc2hfb2ZfZGVzaXJlczsKICAgICAgICB9CgogICAgICAgIG15ICRsZXZlbCAgICA9ICRyTEwtPlskS19maXJzdF0tPltfTEVWRUxfXTsKICAgICAgICBteSAkdHlwZSAgICAgPSAkckxMLT5bJEtfZmlyc3RdLT5bX1RZUEVfXTsKICAgICAgICBteSAkdG9rZW4gICAgPSAkckxMLT5bJEtfZmlyc3RdLT5bX1RPS0VOX107CiAgICAgICAgbXkgJGNpX2xldmVsID0gJHJMTC0+WyRLX2ZpcnN0XS0+W19DSV9MRVZFTF9dOwoKICAgICAgICAjIHNlZSBpZiB0aGlzIGlzIGEgY29kZSB0eXBlIHdlIHNlZWsgKGkuZS4gY29tbWVudCkKICAgICAgICBpZiAoICAgJENPREVfdHlwZQogICAgICAgICAgICAmJiAkT3B0X2NvbW1lbnRfcGF0dGVybgogICAgICAgICAgICAmJiAkQ09ERV90eXBlID1+IC8kT3B0X2NvbW1lbnRfcGF0dGVybi9vICkKICAgICAgICB7CgogICAgICAgICAgICBteSAkdG9rID0gJENPREVfdHlwZTsKCiAgICAgICAgICAgICMgQ29udGludWluZyBhIGdyb3VwCiAgICAgICAgICAgIGlmICggJGliZWcgPj0gMCAmJiAkbGV2ZWwgPT0gJGxldmVsX2JlZyApIHsKICAgICAgICAgICAgICAgICRhZGRfdG9fZ3JvdXAtPiggJGksICR0b2ssICRsZXZlbCApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFN0YXJ0IG5ldyBncm91cAogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGZpcnN0IGVuZCBvbGQgZ3JvdXAgaWYgYW55OyB3ZSBtaWdodCBiZSBzdGFydGluZyBuZXcKICAgICAgICAgICAgICAgICMga2V5d29yZHMgYXQgZGlmZmVyZW50IGxldmVsCiAgICAgICAgICAgICAgICBpZiAoICRpYmVnID4gMCApIHsgJGVuZF9ncm91cC0+KCk7IH0KICAgICAgICAgICAgICAgICRhZGRfdG9fZ3JvdXAtPiggJGksICR0b2ssICRsZXZlbCApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG5leHQ7CiAgICAgICAgfQoKICAgICAgICAjIFNlZSBpZiBpdCBpcyBhIGtleXdvcmQgd2Ugc2VlaywgYnV0IG5ldmVyIHN0YXJ0IGEgZ3JvdXAgaW4gYQogICAgICAgICMgY29udGludWF0aW9uIGxpbmU7IHRoZSBjb2RlIG1heSBiZSBiYWRseSBmb3JtYXR0ZWQuCiAgICAgICAgaWYgKCAgICRjaV9sZXZlbCA9PSAwCiAgICAgICAgICAgICYmICR0eXBlIGVxICdrJwogICAgICAgICAgICAmJiAkdG9rZW4gPX4gLyRPcHRfcGF0dGVybi9vICkKICAgICAgICB7CgogICAgICAgICAgICAjIENvbnRpbnVpbmcgYSBrZXl3b3JkIGdyb3VwCiAgICAgICAgICAgIGlmICggJGliZWcgPj0gMCAmJiAkbGV2ZWwgPT0gJGxldmVsX2JlZyApIHsKICAgICAgICAgICAgICAgICRhZGRfdG9fZ3JvdXAtPiggJGksICR0b2tlbiwgJGxldmVsICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgU3RhcnQgbmV3IGtleXdvcmQgZ3JvdXAKICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBmaXJzdCBlbmQgb2xkIGdyb3VwIGlmIGFueTsgd2UgbWlnaHQgYmUgc3RhcnRpbmcgbmV3CiAgICAgICAgICAgICAgICAjIGtleXdvcmRzIGF0IGRpZmZlcmVudCBsZXZlbAogICAgICAgICAgICAgICAgaWYgKCAkaWJlZyA+IDAgKSB7ICRlbmRfZ3JvdXAtPigpOyB9CiAgICAgICAgICAgICAgICAkYWRkX3RvX2dyb3VwLT4oICRpLCAkdG9rZW4sICRsZXZlbCApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG5leHQ7CiAgICAgICAgfQoKICAgICAgICAjIFRoaXMgaXMgbm90IG9uZSBvZiBvdXIga2V5d29yZHMsIGJ1dCB3ZSBhcmUgaW4gYSBrZXl3b3JkIGdyb3VwCiAgICAgICAgIyBzbyBzZWUgaWYgd2Ugc2hvdWxkIGNvbnRpbnVlIG9yIHF1aXQKICAgICAgICBlbHNpZiAoICRpYmVnID49IDAgKSB7CgogICAgICAgICAgICAjIC0gYmFpbCBvdXQgb24gYSBsYXJnZSBsZXZlbCBjaGFuZ2U7IHdlIG1heSBoYXZlIHdhbGtlZCBpbnRvIGEKICAgICAgICAgICAgIyAgIGRhdGEgc3RydWN0dXJlIG9yIGFub3ltb3VzIHN1YiBjb2RlLgogICAgICAgICAgICBpZiAoICRsZXZlbCA+ICRsZXZlbF9iZWcgKyAxIHx8ICRsZXZlbCA8ICRsZXZlbF9iZWcgKSB7CiAgICAgICAgICAgICAgICAkZW5kX2dyb3VwLT4oKTsKICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgLSBrZWVwIGdvaW5nIG9uIGEgY29udGludWF0aW9uIGxpbmUgb2YgdGhlIHNhbWUgbGV2ZWwsIHNpbmNlCiAgICAgICAgICAgICMgICBpdCBpcyBwcm9iYWJseSBhIGNvbnRpbnVhdGlvbiBvZiBvdXIgcHJldmlvdXMga2V5d29yZCwKICAgICAgICAgICAgIyAtIGFuZCBrZWVwIGdvaW5nIHBhc3QgaGFuZ2luZyBzaWRlIGNvbW1lbnRzIGJlY2F1c2Ugd2UgbmV2ZXIKICAgICAgICAgICAgIyAgIHdhbnQgdG8gaW50ZXJydXB0IHRoZW0uCiAgICAgICAgICAgIGlmICggKCAoICRsZXZlbCA9PSAkbGV2ZWxfYmVnICkgJiYgJGNpX2xldmVsID4gMCApCiAgICAgICAgICAgICAgICB8fCAkQ09ERV90eXBlIGVxICdIU0MnICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJGllbmQgPSAkaTsKICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgLSBjb250aW51ZSBpZiBpZiB3ZSBhcmUgd2l0aGluIGluIGEgY29udGFpbmVyIHdoaWNoIHN0YXJ0ZWQgd2l0aAogICAgICAgICAgICAjIHRoZSBsaW5lIG9mIHRoZSBwcmV2aW91cyBrZXl3b3JkLgogICAgICAgICAgICBpZiAoIGRlZmluZWQoJEtfY2xvc2luZykgJiYgJEtfZmlyc3QgPD0gJEtfY2xvc2luZyApIHsKCiAgICAgICAgICAgICAgICAjIGNvbnRpbnVlIGlmIGVudGlyZSBsaW5lIGlzIHdpdGhpbiBjb250YWluZXIKICAgICAgICAgICAgICAgIGlmICggJEtfbGFzdCA8PSAkS19jbG9zaW5nICkgeyAkaWVuZCA9ICRpOyBuZXh0IH0KCiAgICAgICAgICAgICAgICAjIGNvbnRpbnVlIGF0ICk7IG9yIH07IG9yIF07CiAgICAgICAgICAgICAgICBteSAkS0sgPSAkS19jbG9zaW5nICsgMTsKICAgICAgICAgICAgICAgIGlmICggJHJMTC0+WyRLS10tPltfVFlQRV9dIGVxICc7JyApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRLSyA8ICRLX2xhc3QgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJHJMTC0+WyArKyRLSyBdLT5bX1RZUEVfXSBlcSAnYicgKSB7ICsrJEtLIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkS0sgPiAkS19sYXN0IHx8ICRyTEwtPlskS0tdLT5bX1RZUEVfXSBuZSAnIycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZW5kX2dyb3VwLT4oMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRpZW5kID0gJGk7CiAgICAgICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkZW5kX2dyb3VwLT4oMSk7CiAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIC0gZW5kIHRoZSBncm91cCBpZiBub25lIG9mIHRoZSBhYm92ZQogICAgICAgICAgICAkZW5kX2dyb3VwLT4oKTsKICAgICAgICAgICAgbmV4dDsKICAgICAgICB9CgogICAgICAgICMgbm90IGluIGEga2V5d29yZCBncm91cDsgY29udGludWUKICAgICAgICBlbHNlIHsgbmV4dCB9CiAgICB9CgogICAgIyBlbmQgb2YgbG9vcCBvdmVyIGFsbCBsaW5lcwogICAgJGVuZF9ncm91cC0+KCk7CiAgICByZXR1cm4gJHJoYXNoX29mX2Rlc2lyZXM7Cn0KCnN1YiBicmVha19saW5lcyB7CgogICAgIyBMb29wIG92ZXIgb2xkIGxpbmVzIHRvIHNldCBuZXcgbGluZSBicmVhayBwb2ludHMKCiAgICBteSAkc2VsZiAgID0gc2hpZnQ7CiAgICBteSAkcmxpbmVzID0gJHNlbGYtPntybGluZXN9OwoKICAgICMgTm90ZSBmb3IgUlQjMTE4NTUzLCBsZWF2ZSBvbmx5IG9uZSBuZXdsaW5lIGF0IHRoZSBlbmQgb2YgYSBmaWxlLgogICAgIyBFeGFtcGxlIGNvZGUgdG8gZG8gdGhpcyBpcyBpbiBjb21tZW50cyBiZWxvdzoKICAgICMgbXkgJE9wdF90cmltX2VuZGluZ19ibGFua19saW5lcyA9IDA7CiAgICAjIGlmICgkT3B0X3RyaW1fZW5kaW5nX2JsYW5rX2xpbmVzKSB7CiAgICAjICAgICB3aGlsZSAoIG15ICRsaW5lX29mX3Rva2VucyA9IHBvcCBAeyRybGluZXN9ICkgewogICAgIyAgICAgICAgIG15ICRsaW5lX3R5cGUgPSAkbGluZV9vZl90b2tlbnMtPntfbGluZV90eXBlfTsKICAgICMgICAgICAgICBpZiAoICRsaW5lX3R5cGUgZXEgJ0NPREUnICkgewogICAgIyAgICAgICAgICAgICBteSAkQ09ERV90eXBlID0gJGxpbmVfb2ZfdG9rZW5zLT57X2NvZGVfdHlwZX07CiAgICAjICAgICAgICAgICAgIG5leHQgaWYgKCAkQ09ERV90eXBlIGVxICdCTCcgKTsKICAgICMgICAgICAgICB9CiAgICAjICAgICAgICAgcHVzaCBAeyRybGluZXN9LCAkbGluZV9vZl90b2tlbnM7CiAgICAjICAgICAgICAgbGFzdDsKICAgICMgICAgIH0KICAgICMgfQoKICAgIyBCdXQgd2hpbGUgdGhpcyB3b3VsZCBiZSBhIHRyaXZpYWwgdXBkYXRlLCBpdCB3b3VsZCBoYXZlIHZlcnkgdW5kZXNpcmFibGUKICAgIyBzaWRlIGVmZmVjdHMgd2hlbiBwZXJsdGlkeSBpcyBydW4gZnJvbSB3aXRoaW4gYW4gZWRpdG9yIG9uIGEgc21hbGwgc25pcHBldC4KICAgIyBTbyB0aGlzIGlzIGJlc3QgZG9uZSB3aXRoIGEgc2VwYXJhdGUgZmlsdGVyLCBzdWNoCiAgICMgYXMgJ2RlbGV0ZV9lbmRpbmdfYmxhbmtfbGluZXMucGwnIGluIHRoZSBleGFtcGxlcyBmb2xkZXIuCgogICAgIyBGbGFnIHRvIHByZXZlbnQgYmxhbmsgbGluZXMgd2hlbiBQT0Qgb2NjdXJzIGluIGEgZm9ybWF0IHNraXBwaW5nIHNlY3QuCiAgICBteSAkaW5fZm9ybWF0X3NraXBwaW5nX3NlY3Rpb247CgogICAgIyBzZXQgbG9jYXRpb25zIGZvciBibGFua3MgYXJvdW5kIGxvbmcgcnVucyBvZiBrZXl3b3JkcwogICAgbXkgJHJ3YW50X2JsYW5rX2xpbmVfYWZ0ZXIgPSAkc2VsZi0+a2V5d29yZF9ncm91cF9zY2FuKCk7CgogICAgbXkgJGxpbmVfdHlwZSA9ICIiOwogICAgbXkgJGkgICAgICAgICA9IC0xOwogICAgZm9yZWFjaCBteSAkbGluZV9vZl90b2tlbnMgKCBAeyRybGluZXN9ICkgewogICAgICAgICRpKys7CgogICAgICAgICMgaW5zZXJ0IGJsYW5rIGxpbmVzIHJlcXVlc3RlZCBmb3Iga2V5d29yZCBzZXF1ZW5jZXMKICAgICAgICBpZiAoICAgJGkgPiAwCiAgICAgICAgICAgICYmIGRlZmluZWQoICRyd2FudF9ibGFua19saW5lX2FmdGVyLT57ICRpIC0gMSB9ICkKICAgICAgICAgICAgJiYgJHJ3YW50X2JsYW5rX2xpbmVfYWZ0ZXItPnsgJGkgLSAxIH0gPT0gMSApCiAgICAgICAgewogICAgICAgICAgICAkc2VsZi0+d2FudF9ibGFua19saW5lKCk7CiAgICAgICAgfQoKICAgICAgICBteSAkbGFzdF9saW5lX3R5cGUgPSAkbGluZV90eXBlOwogICAgICAgICRsaW5lX3R5cGUgPSAkbGluZV9vZl90b2tlbnMtPntfbGluZV90eXBlfTsKICAgICAgICBteSAkaW5wdXRfbGluZSA9ICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3RleHR9OwoKICAgICAgICAjIF9saW5lX3R5cGUgY29kZXMgYXJlOgogICAgICAgICMgICBTWVNURU0gICAgICAgICAtIHN5c3RlbS1zcGVjaWZpYyBjb2RlIGJlZm9yZSBoYXNoLWJhbmcgbGluZQogICAgICAgICMgICBDT0RFICAgICAgICAgICAtIGxpbmUgb2YgcGVybCBjb2RlIChpbmNsdWRpbmcgY29tbWVudHMpCiAgICAgICAgIyAgIFBPRF9TVEFSVCAgICAgIC0gbGluZSBzdGFydGluZyBwb2QsIHN1Y2ggYXMgJz1oZWFkJwogICAgICAgICMgICBQT0QgICAgICAgICAgICAtIHBvZCBkb2N1bWVudGF0aW9uIHRleHQKICAgICAgICAjICAgUE9EX0VORCAgICAgICAgLSBsYXN0IGxpbmUgb2YgcG9kIHNlY3Rpb24sICc9Y3V0JwogICAgICAgICMgICBIRVJFICAgICAgICAgICAtIHRleHQgb2YgaGVyZS1kb2N1bWVudAogICAgICAgICMgICBIRVJFX0VORCAgICAgICAtIGxhc3QgbGluZSBvZiBoZXJlLWRvYyAodGFyZ2V0IHdvcmQpCiAgICAgICAgIyAgIEZPUk1BVCAgICAgICAgIC0gZm9ybWF0IHNlY3Rpb24KICAgICAgICAjICAgRk9STUFUX0VORCAgICAgLSBsYXN0IGxpbmUgb2YgZm9ybWF0IHNlY3Rpb24sICcuJwogICAgICAgICMgICBEQVRBX1NUQVJUICAgICAtIF9fREFUQV9fIGxpbmUKICAgICAgICAjICAgREFUQSAgICAgICAgICAgLSB1bmlkZW50aWZpZWQgdGV4dCBmb2xsb3dpbmcgX19EQVRBX18KICAgICAgICAjICAgRU5EX1NUQVJUICAgICAgLSBfX0VORF9fIGxpbmUKICAgICAgICAjICAgRU5EICAgICAgICAgICAgLSB1bmlkZW50aWZpZWQgdGV4dCBmb2xsb3dpbmcgX19FTkRfXwogICAgICAgICMgICBFUlJPUiAgICAgICAgICAtIHdlIGFyZSBpbiBiaWcgdHJvdWJsZSwgcHJvYmFibHkgbm90IGEgcGVybCBzY3JpcHQKCiAgICAgICAgIyBwdXQgYSBibGFuayBsaW5lIGFmdGVyIGFuID1jdXQgd2hpY2ggY29tZXMgYmVmb3JlIF9fRU5EX18gYW5kIF9fREFUQV9fCiAgICAgICAgIyAocmVxdWlyZWQgYnkgcG9kY2hlY2tlcikKICAgICAgICBpZiAoICRsYXN0X2xpbmVfdHlwZSBlcSAnUE9EX0VORCcgJiYgISRzYXdfRU5EX29yX0RBVEFfICkgewogICAgICAgICAgICAkZmlsZV93cml0ZXJfb2JqZWN0LT5yZXNldF9jb25zZWN1dGl2ZV9ibGFua19saW5lcygpOwogICAgICAgICAgICBpZiAoICEkaW5fZm9ybWF0X3NraXBwaW5nX3NlY3Rpb24gJiYgJGlucHV0X2xpbmUgIX4gL15ccyokLyApIHsKICAgICAgICAgICAgICAgICRzZWxmLT53YW50X2JsYW5rX2xpbmUoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBoYW5kbGUgbGluZSBvZiBjb2RlLi4KICAgICAgICBpZiAoICRsaW5lX3R5cGUgZXEgJ0NPREUnICkgewoKICAgICAgICAgICAgbXkgJENPREVfdHlwZSA9ICRsaW5lX29mX3Rva2Vucy0+e19jb2RlX3R5cGV9OwogICAgICAgICAgICAkaW5fZm9ybWF0X3NraXBwaW5nX3NlY3Rpb24gPSAkQ09ERV90eXBlIGVxICdGUyc7CgogICAgICAgICAgICAjIEhhbmRsZSBibGFuayBsaW5lcwogICAgICAgICAgICBpZiAoICRDT0RFX3R5cGUgZXEgJ0JMJyApIHsKCiAgICAgICAgICAgICAgICAjIElmIGtlZXAtb2xkLWJsYW5rLWxpbmVzIGlzIHplcm8sIHdlIGRlbGV0ZSBhbGwKICAgICAgICAgICAgICAgICMgb2xkIGJsYW5rIGxpbmVzIGFuZCBsZXQgdGhlIGJsYW5rIGxpbmUgcnVsZXMgZ2VuZXJhdGUgYW55CiAgICAgICAgICAgICAgICAjIG5lZWRlZCBibGFua3MuCgogICAgICAgICAgICAgICAgIyBXZSBhbHNvIGRlbGV0ZSBsaW5lcyByZXF1ZXN0ZWQgYnkgdGhlIGtleXdvcmQtZ3JvdXAgbG9naWMKICAgICAgICAgICAgICAgIG15ICRrZ2Jfa2VlcCA9ICEoIGRlZmluZWQoICRyd2FudF9ibGFua19saW5lX2FmdGVyLT57JGl9ICkKICAgICAgICAgICAgICAgICAgICAmJiAkcndhbnRfYmxhbmtfbGluZV9hZnRlci0+eyRpfSA9PSAyICk7CgogICAgICAgICAgICAgICAgIyBCdXQgdGhlIGtlZXAtb2xkLWJsYW5rLWxpbmVzIGZsYWcgaGFzIHByaW9yaXR5IG92ZXIga2diIGZsYWdzCiAgICAgICAgICAgICAgICAka2diX2tlZXAgPSAxIGlmICggJHJPcHRzX2tlZXBfb2xkX2JsYW5rX2xpbmVzID09IDIgKTsKCiAgICAgICAgICAgICAgICBpZiAoICRyT3B0c19rZWVwX29sZF9ibGFua19saW5lcyAmJiAka2diX2tlZXAgKSB7CiAgICAgICAgICAgICAgICAgICAgJHNlbGYtPmZsdXNoKCk7CiAgICAgICAgICAgICAgICAgICAgJGZpbGVfd3JpdGVyX29iamVjdC0+d3JpdGVfYmxhbmtfY29kZV9saW5lKAogICAgICAgICAgICAgICAgICAgICAgICAkck9wdHNfa2VlcF9vbGRfYmxhbmtfbGluZXMgPT0gMiApOwogICAgICAgICAgICAgICAgICAgICRsYXN0X2xpbmVfbGVhZGluZ190eXBlID0gJ2InOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGxldCBsb2dnZXIgc2VlIGFsbCBub24tYmxhbmsgbGluZXMgb2YgY29kZQogICAgICAgICAgICAgICAgbXkgJG91dHB1dF9saW5lX251bWJlciA9IGdldF9vdXRwdXRfbGluZV9udW1iZXIoKTsKICAgICAgICAgICAgICAgIGJsYWNrX2JveCggJGxpbmVfb2ZfdG9rZW5zLCAkb3V0cHV0X2xpbmVfbnVtYmVyICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgSGFuZGxlIEZvcm1hdCBTa2lwcGluZyAoRlMpIGFuZCBWZXJiYXRpbSAoVkIpIExpbmVzCiAgICAgICAgICAgIGlmICggJENPREVfdHlwZSBlcSAnVkInIHx8ICRDT0RFX3R5cGUgZXEgJ0ZTJyApIHsKICAgICAgICAgICAgICAgICRzZWxmLT53cml0ZV91bmluZGVudGVkX2xpbmUoIiRpbnB1dF9saW5lIik7CiAgICAgICAgICAgICAgICAkZmlsZV93cml0ZXJfb2JqZWN0LT5yZXNldF9jb25zZWN1dGl2ZV9ibGFua19saW5lcygpOwogICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBIYW5kbGUgYWxsIG90aGVyIGxpbmVzIG9mIGNvZGUKICAgICAgICAgICAgJHNlbGYtPnByaW50X2xpbmVfb2ZfdG9rZW5zKCRsaW5lX29mX3Rva2Vucyk7CiAgICAgICAgfQoKICAgICAgICAjIGhhbmRsZSBsaW5lIG9mIG5vbi1jb2RlLi4KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgc2V0IHNwZWNpYWwgZmxhZ3MKICAgICAgICAgICAgbXkgJHNraXBfbGluZSA9IDA7CiAgICAgICAgICAgIG15ICR0ZWVfbGluZSAgPSAwOwogICAgICAgICAgICBpZiAoICRsaW5lX3R5cGUgPX4gL15QT0QvICkgewoKICAgICAgICAgICAgICAgICMgUG9kIGRvY3Mgc2hvdWxkIGhhdmUgYSBwcmVjZWRpbmcgYmxhbmsgbGluZS4gIEJ1dCBzdGF5CiAgICAgICAgICAgICAgICAjIG91dCBvZiBfX0VORF9fIGFuZCBfX0RBVEFfXyBzZWN0aW9ucywgYmVjYXVzZQogICAgICAgICAgICAgICAgIyB0aGUgdXNlciBtYXkgYmUgdXNpbmcgdGhpcyBzZWN0aW9uIGZvciBhbnkgcHVycG9zZSB3aGF0c29ldmVyCiAgICAgICAgICAgICAgICBpZiAoICRyT3B0cy0+eydkZWxldGUtcG9kJ30gKSB7ICRza2lwX2xpbmUgPSAxOyB9CiAgICAgICAgICAgICAgICBpZiAoICRyT3B0cy0+eyd0ZWUtcG9kJ30gKSAgICB7ICR0ZWVfbGluZSA9IDE7IH0KICAgICAgICAgICAgICAgIGlmICggJHJPcHRzLT57J3RyaW0tcG9kJ30gKSAgIHsgJGlucHV0X2xpbmUgPX4gcy9ccyskLy8gfQogICAgICAgICAgICAgICAgaWYgKCAgICEkc2tpcF9saW5lCiAgICAgICAgICAgICAgICAgICAgJiYgISRpbl9mb3JtYXRfc2tpcHBpbmdfc2VjdGlvbgogICAgICAgICAgICAgICAgICAgICYmICRsaW5lX3R5cGUgZXEgJ1BPRF9TVEFSVCcKICAgICAgICAgICAgICAgICAgICAmJiAhJHNhd19FTkRfb3JfREFUQV8gKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRzZWxmLT53YW50X2JsYW5rX2xpbmUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBsZWF2ZSB0aGUgYmxhbmsgY291bnRlcnMgaW4gYSBwcmVkaWN0YWJsZSBzdGF0ZQogICAgICAgICAgICAjIGFmdGVyIF9fRU5EX18gb3IgX19EQVRBX18KICAgICAgICAgICAgZWxzaWYgKCAkbGluZV90eXBlID1+IC9eKEVORF9TVEFSVHxEQVRBX1NUQVJUKSQvICkgewogICAgICAgICAgICAgICAgJGZpbGVfd3JpdGVyX29iamVjdC0+cmVzZXRfY29uc2VjdXRpdmVfYmxhbmtfbGluZXMoKTsKICAgICAgICAgICAgICAgICRzYXdfRU5EX29yX0RBVEFfID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB3cml0ZSB1bmluZGVudGVkIG5vbi1jb2RlIGxpbmUKICAgICAgICAgICAgaWYgKCAhJHNraXBfbGluZSApIHsKICAgICAgICAgICAgICAgIGlmICgkdGVlX2xpbmUpIHsgJGZpbGVfd3JpdGVyX29iamVjdC0+dGVlX29uKCkgfQogICAgICAgICAgICAgICAgJHNlbGYtPndyaXRlX3VuaW5kZW50ZWRfbGluZSgkaW5wdXRfbGluZSk7CiAgICAgICAgICAgICAgICBpZiAoJHRlZV9saW5lKSB7ICRmaWxlX3dyaXRlcl9vYmplY3QtPnRlZV9vZmYoKSB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm47Cn0KCnsgICAgIyMgQmVnaW5uaW5nIG9mIHJvdXRpbmUgdG8gY2hlY2sgbGluZSBoYXNoZXMKCiAgICBteSAldmFsaWRfbGluZV9oYXNoOwoKICAgIEJFR0lOIHsKCiAgICAgICAgIyBUaGVzZSBrZXlzIGFyZSBkZWZpbmVkIGZvciBlYWNoIGxpbmUgaW4gdGhlIGZvcm1hdHRlcgogICAgICAgICMgRWFjaCBsaW5lIG11c3QgaGF2ZSBleGFjdGx5IHRoZXNlIHF1YW50aXRpZXMKICAgICAgICBteSBAdmFsaWRfbGluZV9rZXlzID0gcXcoCiAgICAgICAgICBfY3VybHlfYnJhY2VfZGVwdGgKICAgICAgICAgIF9lbmRpbmdfaW5fcXVvdGUKICAgICAgICAgIF9ndWVzc2VkX2luZGVudGF0aW9uX2xldmVsCiAgICAgICAgICBfbGluZV9udW1iZXIKICAgICAgICAgIF9saW5lX3RleHQKICAgICAgICAgIF9saW5lX3R5cGUKICAgICAgICAgIF9wYXJlbl9kZXB0aAogICAgICAgICAgX3F1b3RlX2NoYXJhY3RlcgogICAgICAgICAgX3JLX3JhbmdlCiAgICAgICAgICBfc3F1YXJlX2JyYWNrZXRfZGVwdGgKICAgICAgICAgIF9zdGFydGluZ19pbl9xdW90ZQogICAgICAgICAgX2VuZGVkX2luX2JsYW5rX3Rva2VuCiAgICAgICAgICBfY29kZV90eXBlCgogICAgICAgICAgX2NpX2xldmVsXzAKICAgICAgICAgIF9sZXZlbF8wCiAgICAgICAgICBfbmVzdGluZ19ibG9ja3NfMAogICAgICAgICAgX25lc3RpbmdfdG9rZW5zXzAKICAgICAgICApOwoKICAgICAgICBAdmFsaWRfbGluZV9oYXNoe0B2YWxpZF9saW5lX2tleXN9ID0gKDEpIHggc2NhbGFyKEB2YWxpZF9saW5lX2tleXMpOwogICAgfQoKICAgIHN1YiBjaGVja19saW5lX2hhc2hlcyB7CiAgICAgICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgICAgICAkc2VsZi0+Y2hlY2tfc2VsZl9oYXNoKCk7CiAgICAgICAgbXkgJHJsaW5lcyA9ICRzZWxmLT57cmxpbmVzfTsKICAgICAgICBmb3JlYWNoIG15ICRybGluZSAoIEB7JHJsaW5lc30gKSB7CiAgICAgICAgICAgIG15ICRpbGluZSAgICAgPSAkcmxpbmUtPntfbGluZV9udW1iZXJ9OwogICAgICAgICAgICBteSAkbGluZV90eXBlID0gJHJsaW5lLT57X2xpbmVfdHlwZX07CiAgICAgICAgICAgIGNoZWNrX2tleXMoICRybGluZSwgXCV2YWxpZF9saW5lX2hhc2gsCiAgICAgICAgICAgICAgICAiQ2hlY2twb2ludDogbGluZSBudW1iZXIgPSRpbGluZSwgIGxpbmVfdHlwZT0kbGluZV90eXBlIiwgMSApOwogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9Cgp9ICAgICMjIEVuZCBjaGVjayBsaW5lIGhhc2hlcwoKc3ViIHdyaXRlX2xpbmUgewoKICAgICMgV2UgYXJlIGNhY2hpbmcgdG9rZW5pemVkIGxpbmVzIGFzIHRoZXkgYXJyaXZlIGFuZCBjb252ZXJ0aW5nIHRoZW0gdG8gdGhlCiAgICAjIGZvcm1hdCBuZWVkZWQgZm9yIHRoZSBmaW5hbCBmb3JtYXR0aW5nLgogICAgbXkgKCAkc2VsZiwgJGxpbmVfb2ZfdG9rZW5zX29sZCApID0gQF87CiAgICBteSAkckxMICAgICAgICA9ICRzZWxmLT57ckxMfTsKICAgIG15ICRLbGltaXQgICAgID0gJHNlbGYtPntLbGltaXR9OwogICAgbXkgJHJsaW5lc19uZXcgPSAkc2VsZi0+e3JsaW5lc307CgogICAgbXkgJEtmaXJzdDsKICAgIG15ICRsaW5lX29mX3Rva2VucyA9IHt9OwogICAgZm9yZWFjaCBteSAka2V5ICgKICAgICAgICBxdygKICAgICAgICBfY3VybHlfYnJhY2VfZGVwdGgKICAgICAgICBfZW5kaW5nX2luX3F1b3RlCiAgICAgICAgX2d1ZXNzZWRfaW5kZW50YXRpb25fbGV2ZWwKICAgICAgICBfbGluZV9udW1iZXIKICAgICAgICBfbGluZV90ZXh0CiAgICAgICAgX2xpbmVfdHlwZQogICAgICAgIF9wYXJlbl9kZXB0aAogICAgICAgIF9xdW90ZV9jaGFyYWN0ZXIKICAgICAgICBfc3F1YXJlX2JyYWNrZXRfZGVwdGgKICAgICAgICBfc3RhcnRpbmdfaW5fcXVvdGUKICAgICAgICApCiAgICAgICkKICAgIHsKICAgICAgICAkbGluZV9vZl90b2tlbnMtPnska2V5fSA9ICRsaW5lX29mX3Rva2Vuc19vbGQtPnska2V5fTsKICAgIH0KCiAgICAjIERhdGEgbmVlZGVkIGJ5IExvZ2dlcgogICAgJGxpbmVfb2ZfdG9rZW5zLT57X2xldmVsXzB9ICAgICAgICAgID0gMDsKICAgICRsaW5lX29mX3Rva2Vucy0+e19jaV9sZXZlbF8wfSAgICAgICA9IDA7CiAgICAkbGluZV9vZl90b2tlbnMtPntfbmVzdGluZ19ibG9ja3NfMH0gPSAiIjsKICAgICRsaW5lX29mX3Rva2Vucy0+e19uZXN0aW5nX3Rva2Vuc18wfSA9ICIiOwoKICAgICMgTmVlZGVkIHRvIGF2b2lkIHRyaW1taW5nIHF1b3RlcwogICAgJGxpbmVfb2ZfdG9rZW5zLT57X2VuZGVkX2luX2JsYW5rX3Rva2VufSA9IHVuZGVmOwoKICAgIG15ICRsaW5lX3R5cGUgICAgID0gJGxpbmVfb2ZfdG9rZW5zX29sZC0+e19saW5lX3R5cGV9OwogICAgbXkgJGlucHV0X2xpbmVfbm8gPSAkbGluZV9vZl90b2tlbnNfb2xkLT57X2xpbmVfbnVtYmVyfSAtIDE7CiAgICBpZiAoICRsaW5lX3R5cGUgZXEgJ0NPREUnICkgewoKICAgICAgICBteSAkcnRva2VucyAgICAgICAgID0gJGxpbmVfb2ZfdG9rZW5zX29sZC0+e19ydG9rZW5zfTsKICAgICAgICBteSAkcnRva2VuX3R5cGUgICAgID0gJGxpbmVfb2ZfdG9rZW5zX29sZC0+e19ydG9rZW5fdHlwZX07CiAgICAgICAgbXkgJHJibG9ja190eXBlICAgICA9ICRsaW5lX29mX3Rva2Vuc19vbGQtPntfcmJsb2NrX3R5cGV9OwogICAgICAgIG15ICRyY29udGFpbmVyX3R5cGUgPSAkbGluZV9vZl90b2tlbnNfb2xkLT57X3Jjb250YWluZXJfdHlwZX07CiAgICAgICAgbXkgJHJjb250YWluZXJfZW52aXJvbm1lbnQgPQogICAgICAgICAgJGxpbmVfb2ZfdG9rZW5zX29sZC0+e19yY29udGFpbmVyX2Vudmlyb25tZW50fTsKICAgICAgICBteSAkcnR5cGVfc2VxdWVuY2UgID0gJGxpbmVfb2ZfdG9rZW5zX29sZC0+e19ydHlwZV9zZXF1ZW5jZX07CiAgICAgICAgbXkgJHJsZXZlbHMgICAgICAgICA9ICRsaW5lX29mX3Rva2Vuc19vbGQtPntfcmxldmVsc307CiAgICAgICAgbXkgJHJzbGV2ZWxzICAgICAgICA9ICRsaW5lX29mX3Rva2Vuc19vbGQtPntfcnNsZXZlbHN9OwogICAgICAgIG15ICRyY2lfbGV2ZWxzICAgICAgPSAkbGluZV9vZl90b2tlbnNfb2xkLT57X3JjaV9sZXZlbHN9OwogICAgICAgIG15ICRybmVzdGluZ19ibG9ja3MgPSAkbGluZV9vZl90b2tlbnNfb2xkLT57X3JuZXN0aW5nX2Jsb2Nrc307CiAgICAgICAgbXkgJHJuZXN0aW5nX3Rva2VucyA9ICRsaW5lX29mX3Rva2Vuc19vbGQtPntfcm5lc3RpbmdfdG9rZW5zfTsKCiAgICAgICAgbXkgJGptYXggPSBAeyRydG9rZW5zfSAtIDE7CiAgICAgICAgaWYgKCAkam1heCA+PSAwICkgewogICAgICAgICAgICAkS2ZpcnN0ID0gZGVmaW5lZCgkS2xpbWl0KSA/ICRLbGltaXQgKyAxIDogMDsKICAgICAgICAgICAgZm9yZWFjaCBteSAkaiAoIDAgLi4gJGptYXggKSB7CiAgICAgICAgICAgICAgICBteSBAdG9rYXJ5OwogICAgICAgICAgICAgICAgQHRva2FyeVsKICAgICAgICAgICAgICAgICAgX1RPS0VOXywgICAgICAgICAgICAgICAgIF9UWVBFXywKICAgICAgICAgICAgICAgICAgX0JMT0NLX1RZUEVfLCAgICAgICAgICAgIF9DT05UQUlORVJfVFlQRV8sCiAgICAgICAgICAgICAgICAgIF9DT05UQUlORVJfRU5WSVJPTk1FTlRfLCBfVFlQRV9TRVFVRU5DRV8sCiAgICAgICAgICAgICAgICAgIF9MRVZFTF8sICAgICAgICAgICAgICAgICBfTEVWRUxfVFJVRV8sCiAgICAgICAgICAgICAgICAgIF9TTEVWRUxfLCAgICAgICAgICAgICAgICBfQ0lfTEVWRUxfLAogICAgICAgICAgICAgICAgICBfTElORV9JTkRFWF8sCiAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgPSAoCiAgICAgICAgICAgICAgICAgICAgJHJ0b2tlbnMtPlskal0sICAgICAgICAgICAgICAgICRydG9rZW5fdHlwZS0+WyRqXSwKICAgICAgICAgICAgICAgICAgICAkcmJsb2NrX3R5cGUtPlskal0sICAgICAgICAgICAgJHJjb250YWluZXJfdHlwZS0+WyRqXSwKICAgICAgICAgICAgICAgICAgICAkcmNvbnRhaW5lcl9lbnZpcm9ubWVudC0+WyRqXSwgJHJ0eXBlX3NlcXVlbmNlLT5bJGpdLAogICAgICAgICAgICAgICAgICAgICRybGV2ZWxzLT5bJGpdLCAgICAgICAgICAgICAgICAkcmxldmVscy0+WyRqXSwKICAgICAgICAgICAgICAgICAgICAkcnNsZXZlbHMtPlskal0sICAgICAgICAgICAgICAgJHJjaV9sZXZlbHMtPlskal0sCiAgICAgICAgICAgICAgICAgICAgJGlucHV0X2xpbmVfbm8sCiAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBwdXNoIEB7JHJMTH0sIFxAdG9rYXJ5OwogICAgICAgICAgICB9CgogICAgICAgICAgICAkS2xpbWl0ID0gQHskckxMfSAtIDE7CgogICAgICAgICAgICAjIE5lZWQgdG8gcmVtZW1iZXIgaWYgd2UgY2FuIHRyaW0gdGhlIGlucHV0IGxpbmUKICAgICAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X2VuZGVkX2luX2JsYW5rX3Rva2VufSA9CiAgICAgICAgICAgICAgJHJ0b2tlbl90eXBlLT5bJGptYXhdIGVxICdiJzsKCiAgICAgICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19sZXZlbF8wfSAgICAgICAgICA9ICRybGV2ZWxzLT5bMF07CiAgICAgICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19jaV9sZXZlbF8wfSAgICAgICA9ICRyY2lfbGV2ZWxzLT5bMF07CiAgICAgICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19uZXN0aW5nX2Jsb2Nrc18wfSA9ICRybmVzdGluZ19ibG9ja3MtPlswXTsKICAgICAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X25lc3RpbmdfdG9rZW5zXzB9ID0gJHJuZXN0aW5nX3Rva2Vucy0+WzBdOwogICAgICAgIH0KICAgIH0KCiAgICAkbGluZV9vZl90b2tlbnMtPntfcktfcmFuZ2V9ICA9IFsgJEtmaXJzdCwgJEtsaW1pdCBdOwogICAgJGxpbmVfb2ZfdG9rZW5zLT57X2NvZGVfdHlwZX0gPSAiIjsKICAgICRzZWxmLT57S2xpbWl0fSAgICAgICAgICAgICAgID0gJEtsaW1pdDsKCiAgICBwdXNoIEB7JHJsaW5lc19uZXd9LCAkbGluZV9vZl90b2tlbnM7CiAgICByZXR1cm47Cn0KCnN1YiBpbml0aWFsaXplX3doaXRlc3BhY2VfaGFzaGVzIHsKCiAgICAjIGluaXRpYWxpemUgdGhlc2UgZ2xvYmFsIGhhc2hlcywgd2hpY2ggY29udHJvbCB0aGUgdXNlIG9mCiAgICAjIHdoaXRlc3BhY2UgYXJvdW5kIHRva2VuczoKICAgICMKICAgICMgJWJpbmFyeV93c19ydWxlcwogICAgIyAld2FudF9sZWZ0X3NwYWNlCiAgICAjICV3YW50X3JpZ2h0X3NwYWNlCiAgICAjICVzcGFjZV9hZnRlcl9rZXl3b3JkCiAgICAjCiAgICAjIE1hbnkgdG9rZW4gdHlwZXMgYXJlIGlkZW50aWNhbCB0byB0aGUgdG9rZW5zIHRoZW1zZWx2ZXMuCiAgICAjIFNlZSB0aGUgdG9rZW5pemVyIGZvciBhIGNvbXBsZXRlIGxpc3QuIEhlcmUgYXJlIHNvbWUgc3BlY2lhbCB0eXBlczoKICAgICMgICBrID0gcGVybCBrZXl3b3JkCiAgICAjICAgZiA9IHNlbWljb2xvbiBpbiBmb3Igc3RhdGVtZW50CiAgICAjICAgbSA9IHVuYXJ5IG1pbnVzCiAgICAjICAgcCA9IHVuYXJ5IHBsdXMKICAgICMgTm90ZSB0aGF0IDo6IGlzIGV4Y2x1ZGVkIHNpbmNlIGl0IHNob3VsZCBiZSBjb250YWluZWQgaW4gYW4gaWRlbnRpZmllcgogICAgIyBOb3RlIHRoYXQgJy0+JyBpcyBleGNsdWRlZCBiZWNhdXNlIGl0IG5ldmVyIGdldHMgc3BhY2UKICAgICMgcGFyZW50aGVzZXMgYW5kIGJyYWNrZXRzIGFyZSBleGNsdWRlZCBzaW5jZSB0aGV5IGFyZSBoYW5kbGVkIHNwZWNpYWxseQogICAgIyBjdXJseSBicmFjZXMgYXJlIGluY2x1ZGVkIGJ1dCBtYXkgYmUgb3ZlcnJpZGRlbiBieSBsb2dpYywgc3VjaCBhcwogICAgIyBuZXdsaW5lIGxvZ2ljLgoKICAgICMgTkVXX1RPS0VOUzogY3JlYXRlIGEgd2hpdGVzcGFjZSBydWxlIGhlcmUuICBUaGlzIGNhbiBiZSBhcwogICAgIyBzaW1wbGUgYXMgYWRkaW5nIHlvdXIgbmV3IGxldHRlciB0byBAc3BhY2VzX2JvdGhfc2lkZXMsIGZvcgogICAgIyBleGFtcGxlLgoKICAgIG15IEBvcGVuaW5nX3R5cGUgPSBxdzwgTCB7ICggWyA+OwogICAgQGlzX29wZW5pbmdfdHlwZXtAb3BlbmluZ190eXBlfSA9ICgxKSB4IHNjYWxhcihAb3BlbmluZ190eXBlKTsKCiAgICBteSBAY2xvc2luZ190eXBlID0gcXc8IFIgfSApIF0gPjsKICAgIEBpc19jbG9zaW5nX3R5cGV7QGNsb3NpbmdfdHlwZX0gPSAoMSkgeCBzY2FsYXIoQGNsb3NpbmdfdHlwZSk7CgogICAgbXkgQHNwYWNlc19ib3RoX3NpZGVzID0gcXcjCiAgICAgICsgLSAqIC8gJSA/ID0gLiA6IHggPCA+IHwgJiBeIC4uIDw8ID4+ICoqICYmIC4uIHx8IC8vID0+ICs9IC09CiAgICAgIC49ICU9IHg9ICY9IHw9IF49ICo9IDw+IDw9ID49ID09ID1+ICF+IC89ICE9IC4uLiA8PD0gPj49IH5+ICF+fgogICAgICAmJj0gfHw9IC8vPSA8PT4gQSBrIGYgdyBGIG4gQyBZIFUgRyB2CiAgICAgICM7CgogICAgbXkgQHNwYWNlc19sZWZ0X3NpZGUgPSBxdzwKICAgICAgdCAhIH4gbSBwIHsgXCBoIHBwIG1tIFogagogICAgPjsKICAgIHB1c2goIEBzcGFjZXNfbGVmdF9zaWRlLCAnIycgKTsgICAgIyBhdm9pZHMgd2FybmluZyBtZXNzYWdlCgogICAgbXkgQHNwYWNlc19yaWdodF9zaWRlID0gcXc8CiAgICAgIDsgfSApIF0gUiBKICsrIC0tICoqPQogICAgPjsKICAgIHB1c2goIEBzcGFjZXNfcmlnaHRfc2lkZSwgJywnICk7ICAgICMgYXZvaWRzIHdhcm5pbmcgbWVzc2FnZQoKICAgICMgTm90ZSB0aGF0IHdlIGFyZSBpbiBhIEJFR0lOIGJsb2NrIGhlcmUuICBMYXRlciBpbiBwcm9jZXNzaW5nCiAgICAjIHRoZSB2YWx1ZXMgb2YgJXdhbnRfbGVmdF9zcGFjZSBhbmQgICV3YW50X3JpZ2h0X3NwYWNlCiAgICAjIG1heSBiZSBvdmVycmlkZGVuIGJ5IGFueSB1c2VyIHNldHRpbmdzIHNwZWNpZmllZCBieSB0aGUKICAgICMgLXdscyBhbmQgLXdycyBwYXJhbWV0ZXJzLiAgSG93ZXZlciB0aGUgYmluYXJ5X3doaXRlc3BhY2VfcnVsZXMKICAgICMgYXJlIGhhcmR3aXJlZCBhbmQgaGF2ZSBwcmlvcml0eS4KICAgIEB3YW50X2xlZnRfc3BhY2V7QHNwYWNlc19ib3RoX3NpZGVzfSA9CiAgICAgICgxKSB4IHNjYWxhcihAc3BhY2VzX2JvdGhfc2lkZXMpOwogICAgQHdhbnRfcmlnaHRfc3BhY2V7QHNwYWNlc19ib3RoX3NpZGVzfSA9CiAgICAgICgxKSB4IHNjYWxhcihAc3BhY2VzX2JvdGhfc2lkZXMpOwogICAgQHdhbnRfbGVmdF9zcGFjZXtAc3BhY2VzX2xlZnRfc2lkZX0gPQogICAgICAoMSkgeCBzY2FsYXIoQHNwYWNlc19sZWZ0X3NpZGUpOwogICAgQHdhbnRfcmlnaHRfc3BhY2V7QHNwYWNlc19sZWZ0X3NpZGV9ID0KICAgICAgKC0xKSB4IHNjYWxhcihAc3BhY2VzX2xlZnRfc2lkZSk7CiAgICBAd2FudF9sZWZ0X3NwYWNle0BzcGFjZXNfcmlnaHRfc2lkZX0gPQogICAgICAoLTEpIHggc2NhbGFyKEBzcGFjZXNfcmlnaHRfc2lkZSk7CiAgICBAd2FudF9yaWdodF9zcGFjZXtAc3BhY2VzX3JpZ2h0X3NpZGV9ID0KICAgICAgKDEpIHggc2NhbGFyKEBzcGFjZXNfcmlnaHRfc2lkZSk7CiAgICAkd2FudF9sZWZ0X3NwYWNleyctPid9ICAgICAgPSBXU19OTzsKICAgICR3YW50X3JpZ2h0X3NwYWNleyctPid9ICAgICA9IFdTX05POwogICAgJHdhbnRfbGVmdF9zcGFjZXsnKionfSAgICAgID0gV1NfTk87CiAgICAkd2FudF9yaWdodF9zcGFjZXsnKionfSAgICAgPSBXU19OTzsKICAgICR3YW50X3JpZ2h0X3NwYWNleydDT1JFOjonfSA9IFdTX05POwoKICAgICMgVGhlc2UgYmluYXJ5X3dzX3J1bGVzIGFyZSBoYXJkd2lyZWQgYW5kIGhhdmUgcHJpb3JpdHkgb3ZlciB0aGUgYWJvdmUKICAgICMgc2V0dGluZ3MuICBJdCB3b3VsZCBiZSBuaWNlIHRvIGFsbG93IGFkanVzdG1lbnQgYnkgdGhlIHVzZXIsCiAgICAjIGJ1dCBpdCB3b3VsZCBiZSBjb21wbGljYXRlZCB0byBzcGVjaWZ5LgogICAgIwogICAgIyBoYXNoIHR5cGUgaW5mb3JtYXRpb24gbXVzdCBzdGF5IHRpZ2h0bHkgYm91bmQKICAgICMgYXMgaW4gOiAgJHt4eHh4fQogICAgJGJpbmFyeV93c19ydWxlc3snaSd9eydMJ30gPSBXU19OTzsKICAgICRiaW5hcnlfd3NfcnVsZXN7J2knfXsneyd9ID0gV1NfWUVTOwogICAgJGJpbmFyeV93c19ydWxlc3snayd9eyd7J30gPSBXU19ZRVM7CiAgICAkYmluYXJ5X3dzX3J1bGVzeydVJ317J3snfSA9IFdTX1lFUzsKICAgICRiaW5hcnlfd3NfcnVsZXN7J2knfXsnWyd9ID0gV1NfTk87CiAgICAkYmluYXJ5X3dzX3J1bGVzeydSJ317J0wnfSA9IFdTX05POwogICAgJGJpbmFyeV93c19ydWxlc3snUid9eyd7J30gPSBXU19OTzsKICAgICRiaW5hcnlfd3NfcnVsZXN7J3QnfXsnTCd9ID0gV1NfTk87CiAgICAkYmluYXJ5X3dzX3J1bGVzeyd0J317J3snfSA9IFdTX05POwogICAgJGJpbmFyeV93c19ydWxlc3snfSd9eydMJ30gPSBXU19OTzsKICAgICRiaW5hcnlfd3NfcnVsZXN7J30nfXsneyd9ID0gV1NfT1BUSU9OQUw7ICAgICMgUlQjMTI5ODUwOyB3YXMgV1NfTk8KICAgICRiaW5hcnlfd3NfcnVsZXN7JyQnfXsnTCd9ID0gV1NfTk87CiAgICAkYmluYXJ5X3dzX3J1bGVzeyckJ317J3snfSA9IFdTX05POwogICAgJGJpbmFyeV93c19ydWxlc3snQCd9eydMJ30gPSBXU19OTzsKICAgICRiaW5hcnlfd3NfcnVsZXN7J0AnfXsneyd9ID0gV1NfTk87CiAgICAkYmluYXJ5X3dzX3J1bGVzeyc9J317J0wnfSA9IFdTX1lFUzsKICAgICRiaW5hcnlfd3NfcnVsZXN7J0onfXsnSid9ID0gV1NfWUVTOwoKICAgICMgdGhlIGZvbGxvd2luZyBpbmNsdWRlcyAnKSB7JwogICAgIyBhcyBpbiA6ICAgIGlmICggeHh4ICkgeyB5eXkgfQogICAgJGJpbmFyeV93c19ydWxlc3snXSd9eydMJ30gPSBXU19OTzsKICAgICRiaW5hcnlfd3NfcnVsZXN7J10nfXsneyd9ID0gV1NfTk87CiAgICAkYmluYXJ5X3dzX3J1bGVzeycpJ317J3snfSA9IFdTX1lFUzsKICAgICRiaW5hcnlfd3NfcnVsZXN7JyknfXsnWyd9ID0gV1NfTk87CiAgICAkYmluYXJ5X3dzX3J1bGVzeyddJ317J1snfSA9IFdTX05POwogICAgJGJpbmFyeV93c19ydWxlc3snXSd9eyd7J30gPSBXU19OTzsKICAgICRiaW5hcnlfd3NfcnVsZXN7J30nfXsnWyd9ID0gV1NfTk87CiAgICAkYmluYXJ5X3dzX3J1bGVzeydSJ317J1snfSA9IFdTX05POwoKICAgICRiaW5hcnlfd3NfcnVsZXN7J10nfXsnKysnfSA9IFdTX05POwogICAgJGJpbmFyeV93c19ydWxlc3snXSd9eyctLSd9ID0gV1NfTk87CiAgICAkYmluYXJ5X3dzX3J1bGVzeycpJ317JysrJ30gPSBXU19OTzsKICAgICRiaW5hcnlfd3NfcnVsZXN7JyknfXsnLS0nfSA9IFdTX05POwoKICAgICRiaW5hcnlfd3NfcnVsZXN7J1InfXsnKysnfSA9IFdTX05POwogICAgJGJpbmFyeV93c19ydWxlc3snUid9eyctLSd9ID0gV1NfTk87CgogICAgJGJpbmFyeV93c19ydWxlc3snaSd9eydRJ30gPSBXU19ZRVM7CiAgICAkYmluYXJ5X3dzX3J1bGVzeyduJ317JygnfSA9IFdTX1lFUzsgICAgIyBvY2N1cnMgaW4gJ3VzZSBwYWNrYWdlIG4gKCknCgogICAgIyBGSVhNRTogd2UgY291bGQgdG8gc3BsaXQgJ2knIGludG8gdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMKICAgICMgYW5kIGhhdmUgbm8gc3BhY2UgZm9yIGZ1bmN0aW9ucyBidXQgc3BhY2UgZm9yIHZhcmlhYmxlcy4gIEZvciBub3csCiAgICAjIEkgaGF2ZSBhIHNwZWNpYWwgcGF0Y2ggaW4gdGhlIHNwZWNpYWwgcnVsZXMgYmVsb3cKICAgICRiaW5hcnlfd3NfcnVsZXN7J2knfXsnKCd9ID0gV1NfTk87CgogICAgJGJpbmFyeV93c19ydWxlc3sndyd9eycoJ30gPSBXU19OTzsKICAgICRiaW5hcnlfd3NfcnVsZXN7J3cnfXsneyd9ID0gV1NfWUVTOwogICAgcmV0dXJuOwoKfSAjIyBlbmQgaW5pdGlhbGl6ZV93aGl0ZXNwYWNlX2hhc2hlcwoKc3ViIHNldF93aGl0ZXNwYWNlX2ZsYWdzIHsKCiAgICAjICAgIFRoaXMgcm91dGluZSBleGFtaW5lcyBlYWNoIHBhaXIgb2Ygbm9uYmxhbmsgdG9rZW5zIGFuZAogICAgIyAgICBzZXRzIGEgZmxhZyBpbmRpY2F0aW5nIGlmIHdoaXRlIHNwYWNlIGlzIG5lZWRlZC4KICAgICMKICAgICMgICAgJHJ3aGl0ZXNwYWNlX2ZsYWdzLT5bJGpdIGlzIGEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgYSB3aGl0ZSBzcGFjZQogICAgIyAgICBCRUZPUkUgdG9rZW4gJGogaXMgbmVlZGVkLCB3aXRoIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgogICAgIwogICAgIyAgICAgICAgICAgICBXU19OTyAgICAgID0gLTEgZG8gbm90IHdhbnQgYSBzcGFjZSBiZWZvcmUgdG9rZW4gJGoKICAgICMgICAgICAgICAgICAgV1NfT1BUSU9OQUw9ICAwIG9wdGlvbmFsIHNwYWNlIG9yICRqIGlzIGEgd2hpdGVzcGFjZQogICAgIyAgICAgICAgICAgICBXU19ZRVMgICAgID0gIDEgd2FudCBhIHNwYWNlIGJlZm9yZSB0b2tlbiAkagogICAgIwoKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICBteSAkckxMICA9ICRzZWxmLT57ckxMfTsKCiAgICBteSAkcndoaXRlc3BhY2VfZmxhZ3MgPSBbXTsKCiAgICBteSAoICRsYXN0X3Rva2VuLCAkbGFzdF90eXBlLCAkbGFzdF9ibG9ja190eXBlLCAkbGFzdF9pbnB1dF9saW5lX25vLAogICAgICAgICR0b2tlbiwgJHR5cGUsICRibG9ja190eXBlLCAkaW5wdXRfbGluZV9ubyApOwogICAgbXkgJGpfdGlnaHRfY2xvc2luZ19wYXJlbiA9IC0xOwoKICAgICR0b2tlbiAgICAgICAgICAgICAgPSAnICc7CiAgICAkdHlwZSAgICAgICAgICAgICAgID0gJ2InOwogICAgJGJsb2NrX3R5cGUgICAgICAgICA9ICcnOwogICAgJGlucHV0X2xpbmVfbm8gICAgICA9IDA7CiAgICAkbGFzdF90b2tlbiAgICAgICAgID0gJyAnOwogICAgJGxhc3RfdHlwZSAgICAgICAgICA9ICdiJzsKICAgICRsYXN0X2Jsb2NrX3R5cGUgICAgPSAnJzsKICAgICRsYXN0X2lucHV0X2xpbmVfbm8gPSAwOwoKICAgIG15ICRqbWF4ID0gQHskckxMfSAtIDE7CgogICAgbXkgKCR3cyk7CgogICAgIyBUaGlzIGlzIHNvbWUgbG9naWMgbW92ZWQgdG8gYSBzdWIgdG8gYXZvaWQgZGVlcCBuZXN0aW5nIG9mIGlmIHN0bXRzCiAgICBteSAkd3NfaW5fY29udGFpbmVyID0gc3ViIHsKCiAgICAgICAgbXkgKCRqKSA9IEBfOwogICAgICAgIG15ICR3cyA9IFdTX1lFUzsKICAgICAgICBpZiAoICRqICsgMSA+ICRqbWF4ICkgeyByZXR1cm4gKFdTX05PKSB9CgogICAgICAgICMgUGF0Y2ggdG8gY291bnQgJy1mb28nIGFzIHNpbmdsZSB0b2tlbiBzbyB0aGF0CiAgICAgICAgIyBlYWNoIG9mICAkYXstZm9vfSBhbmQgJGF7Zm9vfSBhbmQgJGF7J2Zvbyd9IGRvCiAgICAgICAgIyBub3QgZ2V0IHNwYWNlcyB3aXRoIGRlZmF1bHQgZm9ybWF0dGluZy4KICAgICAgICBteSAkal9oZXJlID0gJGo7CiAgICAgICAgKyskal9oZXJlCiAgICAgICAgICBpZiAoICR0b2tlbiBlcSAnLScKICAgICAgICAgICAgJiYgJGxhc3RfdG9rZW4gZXEgJ3snCiAgICAgICAgICAgICYmICRyTEwtPlsgJGogKyAxIF0tPltfVFlQRV9dIGVxICd3JyApOwoKICAgICAgICAjICRqX25leHQgaXMgd2hlcmUgYSBjbG9zaW5nIHRva2VuIHNob3VsZCBiZSBpZgogICAgICAgICMgdGhlIGNvbnRhaW5lciBoYXMgYSBzaW5nbGUgdG9rZW4KICAgICAgICBpZiAoICRqX2hlcmUgKyAxID4gJGptYXggKSB7IHJldHVybiAoV1NfTk8pIH0KICAgICAgICBteSAkal9uZXh0ID0KICAgICAgICAgICggJHJMTC0+WyAkal9oZXJlICsgMSBdLT5bX1RZUEVfXSBlcSAnYicgKQogICAgICAgICAgPyAkal9oZXJlICsgMgogICAgICAgICAgOiAkal9oZXJlICsgMTsKCiAgICAgICAgaWYgKCAkal9uZXh0ID4gJGptYXggKSB7IHJldHVybiBXU19OTyB9CiAgICAgICAgbXkgJHRva19uZXh0ICA9ICRyTEwtPlskal9uZXh0XS0+W19UT0tFTl9dOwogICAgICAgIG15ICR0eXBlX25leHQgPSAkckxMLT5bJGpfbmV4dF0tPltfVFlQRV9dOwoKICAgICAgICAjIGZvciB0aWdodG5lc3MgPSAxLCBpZiB0aGVyZSBpcyBqdXN0IG9uZSB0b2tlbgogICAgICAgICMgd2l0aGluIHRoZSBtYXRjaGluZyBwYWlyLCB3ZSB3aWxsIGtlZXAgaXQgdGlnaHQKICAgICAgICBpZiAoCiAgICAgICAgICAgICR0b2tfbmV4dCBlcSAkbWF0Y2hpbmdfdG9rZW57JGxhc3RfdG9rZW59CgogICAgICAgICAgICAjIGJ1dCB3YXRjaCBvdXQgZm9yIHRoaXM6IFsgWyBdICAgIChtaXNjLnQpCiAgICAgICAgICAgICYmICRsYXN0X3Rva2VuIG5lICR0b2tlbgoKICAgICAgICAgICAgIyBkb3VibGUgZGlhbW9uZCBpcyB1c3VhbGx5IHNwYWNlZAogICAgICAgICAgICAmJiAkdG9rZW4gbmUgJzw8Pj4nCgogICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgICMgcmVtZW1iZXIgd2hlcmUgdG8gcHV0IHRoZSBzcGFjZSBmb3IgdGhlIGNsb3NpbmcgcGFyZW4KICAgICAgICAgICAgJGpfdGlnaHRfY2xvc2luZ19wYXJlbiA9ICRqX25leHQ7CiAgICAgICAgICAgIHJldHVybiAoV1NfTk8pOwogICAgICAgIH0KICAgICAgICByZXR1cm4gKFdTX1lFUyk7CiAgICB9OwoKICAgICMgbWFpbiBsb29wIG92ZXIgYWxsIHRva2VucyB0byBkZWZpbmUgdGhlIHdoaXRlc3BhY2UgZmxhZ3MKICAgIGZvciAoIG15ICRqID0gMCA7ICRqIDw9ICRqbWF4IDsgJGorKyApIHsKCiAgICAgICAgbXkgJHJ0b2toID0gJHJMTC0+WyRqXTsKCiAgICAgICAgIyBTZXQgYSBkZWZhdWx0CiAgICAgICAgJHJ3aGl0ZXNwYWNlX2ZsYWdzLT5bJGpdID0gV1NfT1BUSU9OQUw7CgogICAgICAgIGlmICggJHJ0b2toLT5bX1RZUEVfXSBlcSAnYicgKSB7CiAgICAgICAgICAgIG5leHQ7CiAgICAgICAgfQoKICAgICAgICAjIHNldCBhIGRlZmF1bHQgdmFsdWUsIHRvIGJlIGNoYW5nZWQgYXMgbmVlZGVkCiAgICAgICAgJHdzICAgICAgICAgICAgICAgICA9IHVuZGVmOwogICAgICAgICRsYXN0X3Rva2VuICAgICAgICAgPSAkdG9rZW47CiAgICAgICAgJGxhc3RfdHlwZSAgICAgICAgICA9ICR0eXBlOwogICAgICAgICRsYXN0X2Jsb2NrX3R5cGUgICAgPSAkYmxvY2tfdHlwZTsKICAgICAgICAkbGFzdF9pbnB1dF9saW5lX25vID0gJGlucHV0X2xpbmVfbm87CiAgICAgICAgJHRva2VuICAgICAgICAgICAgICA9ICRydG9raC0+W19UT0tFTl9dOwogICAgICAgICR0eXBlICAgICAgICAgICAgICAgPSAkcnRva2gtPltfVFlQRV9dOwogICAgICAgICRibG9ja190eXBlICAgICAgICAgPSAkcnRva2gtPltfQkxPQ0tfVFlQRV9dOwogICAgICAgICRpbnB1dF9saW5lX25vICAgICAgPSAkcnRva2gtPltfTElORV9JTkRFWF9dOwoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBXaGl0ZXNwYWNlIFJ1bGVzIFNlY3Rpb24gMToKICAgICAgICAjIEhhbmRsZSBzcGFjZSBvbiB0aGUgaW5zaWRlIG9mIG9wZW5pbmcgYnJhY2VzLgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgICAgIyAgICAvXltMXHtcKFxbXSQvCiAgICAgICAgaWYgKCAkaXNfb3BlbmluZ190eXBleyRsYXN0X3R5cGV9ICkgewoKICAgICAgICAgICAgJGpfdGlnaHRfY2xvc2luZ19wYXJlbiA9IC0xOwoKICAgICAgICAgICAgIyBsZXQgdXMga2VlcCBlbXB0eSBtYXRjaGVkIGJyYWNlcyB0b2dldGhlcjogKCkge30gW10KICAgICAgICAgICAgIyBleGNlcHQgZm9yIEJMT0NLUwogICAgICAgICAgICBpZiAoICR0b2tlbiBlcSAkbWF0Y2hpbmdfdG9rZW57JGxhc3RfdG9rZW59ICkgewogICAgICAgICAgICAgICAgaWYgKCRibG9ja190eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgJHdzID0gV1NfWUVTOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHdzID0gV1NfTk87CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyB3ZSdyZSBjb25zaWRlcmluZyB0aGUgcmlnaHQgb2YgYW4gb3BlbmluZyBicmFjZQogICAgICAgICAgICAgICAgIyB0aWdodG5lc3MgPSAwIG1lYW5zIGFsd2F5cyBwYWQgaW5zaWRlIHdpdGggc3BhY2UKICAgICAgICAgICAgICAgICMgdGlnaHRuZXNzID0gMSBtZWFucyBwYWQgaW5zaWRlIGlmICJjb21wbGV4IgogICAgICAgICAgICAgICAgIyB0aWdodG5lc3MgPSAyIG1lYW5zIG5ldmVyIHBhZCBpbnNpZGUgd2l0aCBzcGFjZQoKICAgICAgICAgICAgICAgIG15ICR0aWdodG5lc3M7CiAgICAgICAgICAgICAgICBpZiAoICAgJGxhc3RfdHlwZSBlcSAneycKICAgICAgICAgICAgICAgICAgICAmJiAkbGFzdF90b2tlbiBlcSAneycKICAgICAgICAgICAgICAgICAgICAmJiAkbGFzdF9ibG9ja190eXBlICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkdGlnaHRuZXNzID0gJHJPcHRzX2Jsb2NrX2JyYWNlX3RpZ2h0bmVzczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgeyAkdGlnaHRuZXNzID0gJHRpZ2h0bmVzc3skbGFzdF90b2tlbn0gfQoKICAgICAgICAgICAgICAgIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgIyBQYXRjaCBmb3IgdGVzdCBwcm9ibGVtIDw8c25pcHBldHMvZmFicmljZV9idWcuaW4+PgogICAgICAgICAgICAgICAjIFdlIG11c3QgYWx3YXlzIGF2b2lkIHNwYWNlcyBhcm91bmQgYSBiYXJlIHdvcmQgYmVnaW5uaW5nCiAgICAgICAgICAgICAgICMgd2l0aCBeIGFzIGluOgogICAgICAgICAgICAgICAjICAgIG15ICRiZWZvcmUgPSAke15QUkVNQVRDSH07CiAgICAgICAgICAgICAgICMgQmVjYXVzZSBhbGwgb2YgdGhlIGZvbGxvd2luZyBjYXVzZSBhbiBlcnJvciBpbiBwZXJsOgogICAgICAgICAgICAgICAjICAgIG15ICRiZWZvcmUgPSAkeyBeUFJFTUFUQ0ggfTsKICAgICAgICAgICAgICAgIyAgICBteSAkYmVmb3JlID0gJHsgXlBSRU1BVENIfTsKICAgICAgICAgICAgICAgIyAgICBteSAkYmVmb3JlID0gJHteUFJFTUFUQ0ggfTsKICAgICAgICAgICAgICAgIyBTbyBpZiBicmFjZSB0aWdodG5lc3MgZmxhZyBpcyAtYnQ9MCB3ZSBtdXN0IHRlbXBvcmFyaWx5IHJlc2V0CiAgICAgICAgICAgICAgICMgdG8gYnQ9MS4gIE5vdGUgdGhhdCBoZXJlIHdlIG11c3Qgc2V0IHRpZ2h0bmVzcz0xIGFuZCBub3QgMiBzbwogICAgICAgICAgICAgICAjIHRoYXQgdGhlIGNsb3Npbmcgc3BhY2UKICAgICAgICAgICAgICAgIyBpcyBhbHNvIGF2b2lkZWQgKHZpYSB0aGUgJGpfdGlnaHRfY2xvc2luZ19wYXJlbiBmbGFnIGluIGNvZGluZykKICAgICAgICAgICAgICAgIGlmICggJHR5cGUgZXEgJ3cnICYmICR0b2tlbiA9fiAvXlxeLyApIHsgJHRpZ2h0bmVzcyA9IDEgfQoKICAgICAgICAgICAgICAgICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgogICAgICAgICAgICAgICAgaWYgKCAkdGlnaHRuZXNzIDw9IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgJHdzID0gV1NfWUVTOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkdGlnaHRuZXNzID4gMSApIHsKICAgICAgICAgICAgICAgICAgICAkd3MgPSBXU19OTzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICR3cyA9ICR3c19pbl9jb250YWluZXItPigkaik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9ICAgICMgZW5kIHNldHRpbmcgc3BhY2UgZmxhZyBpbnNpZGUgb3BlbmluZyB0b2tlbnMKICAgICAgICBteSAkd3NfMTsKICAgICAgICAkd3NfMSA9ICR3cwogICAgICAgICAgaWYgRk9STUFUVEVSX0RFQlVHX0ZMQUdfV0hJVEU7CgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIFdoaXRlc3BhY2UgUnVsZXMgU2VjdGlvbiAyOgogICAgICAgICMgSGFuZGxlIHNwYWNlIG9uIGluc2lkZSBvZiBjbG9zaW5nIGJyYWNlIHBhaXJzLgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgICAgIyAgIC9bXH1cKVxdUl0vCiAgICAgICAgaWYgKCAkaXNfY2xvc2luZ190eXBleyR0eXBlfSApIHsKCiAgICAgICAgICAgIGlmICggJGogPT0gJGpfdGlnaHRfY2xvc2luZ19wYXJlbiApIHsKCiAgICAgICAgICAgICAgICAkal90aWdodF9jbG9zaW5nX3BhcmVuID0gLTE7CiAgICAgICAgICAgICAgICAkd3MgICAgICAgICAgICAgICAgICAgID0gV1NfTk87CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCgkd3MpICkgewoKICAgICAgICAgICAgICAgICAgICBteSAkdGlnaHRuZXNzOwogICAgICAgICAgICAgICAgICAgIGlmICggJHR5cGUgZXEgJ30nICYmICR0b2tlbiBlcSAnfScgJiYgJGJsb2NrX3R5cGUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aWdodG5lc3MgPSAkck9wdHNfYmxvY2tfYnJhY2VfdGlnaHRuZXNzOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsgJHRpZ2h0bmVzcyA9ICR0aWdodG5lc3N7JHRva2VufSB9CgogICAgICAgICAgICAgICAgICAgICR3cyA9ICggJHRpZ2h0bmVzcyA+IDEgKSA/IFdTX05PIDogV1NfWUVTOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSAgICAjIGVuZCBzZXR0aW5nIHNwYWNlIGZsYWcgaW5zaWRlIGNsb3NpbmcgdG9rZW5zCgogICAgICAgIG15ICR3c18yOwogICAgICAgICR3c18yID0gJHdzCiAgICAgICAgICBpZiBGT1JNQVRURVJfREVCVUdfRkxBR19XSElURTsKCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgV2hpdGVzcGFjZSBSdWxlcyBTZWN0aW9uIDM6CiAgICAgICAgIyBVc2UgdGhlIGJpbmFyeSBydWxlIHRhYmxlLgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBpZiAoICFkZWZpbmVkKCR3cykgKSB7CiAgICAgICAgICAgICR3cyA9ICRiaW5hcnlfd3NfcnVsZXN7JGxhc3RfdHlwZX17JHR5cGV9OwogICAgICAgIH0KICAgICAgICBteSAkd3NfMzsKICAgICAgICAkd3NfMyA9ICR3cwogICAgICAgICAgaWYgRk9STUFUVEVSX0RFQlVHX0ZMQUdfV0hJVEU7CgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIFdoaXRlc3BhY2UgUnVsZXMgU2VjdGlvbiA0OgogICAgICAgICMgSGFuZGxlIHNvbWUgc3BlY2lhbCBjYXNlcy4KICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgaWYgKCAkdG9rZW4gZXEgJygnICkgewoKICAgICAgICAgICAgIyBUaGlzIHdpbGwgaGF2ZSB0byBiZSB0d2Vha2VkIGFzIHRva2VuaXphdGlvbiBjaGFuZ2VzLgogICAgICAgICAgICAjIFdlIHVzdWFsbHkgd2FudCBhIHNwYWNlIGF0ICd9ICgnLCBmb3IgZXhhbXBsZToKICAgICAgICAgICAgIyA8PHNuaXBwZXRzL3NwYWNlMS5pbj4+CiAgICAgICAgICAgICMgICAgIG1hcCB7IDEgKiAkXzsgfSAoICR5LCAkTSwgJHcsICRkLCAkaCwgJG0sICRzICk7CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyBCdXQgbm90IG90aGVyczoKICAgICAgICAgICAgIyAgICAgJnsgJF8tPlsxXSB9KCBkZWxldGUgJF9bJCNfXXsgJF8tPlswXSB9ICk7CiAgICAgICAgICAgICMgQXQgcHJlc2VudCwgdGhlIGFib3ZlICYgYmxvY2sgaXMgbWFya2VkIGFzIHR5cGUgTC9SIHNvIHRoaXMgY2FzZQogICAgICAgICAgICAjIHdvbid0IGdvIHRocm91Z2ggaGVyZS4KICAgICAgICAgICAgaWYgKCAkbGFzdF90eXBlIGVxICd9JyApIHsgJHdzID0gV1NfWUVTIH0KCiAgICAgICAgICAgICMgTk9URTogc29tZSBvbGRlciB2ZXJzaW9ucyBvZiBQZXJsIGhhZCBvY2Nhc2lvbmFsIHByb2JsZW1zIGlmCiAgICAgICAgICAgICMgc3BhY2VzIGFyZSBpbnRyb2R1Y2VkIGJldHdlZW4ga2V5d29yZHMgb3IgZnVuY3Rpb25zIGFuZCBvcGVuaW5nCiAgICAgICAgICAgICMgcGFyZW5zLiAgU28gdGhlIGRlZmF1bHQgaXMgbm90IHRvIGRvIHRoaXMgZXhjZXB0IGlzIGNlcnRhaW4KICAgICAgICAgICAgIyBjYXNlcy4gIFRoZSBjdXJyZW50IFBlcmwgc2VlbXMgdG8gdG9sZXJhdGUgc3BhY2VzLgoKICAgICAgICAgICAgIyBTcGFjZSBiZXR3ZWVuIGtleXdvcmQgYW5kICcoJwogICAgICAgICAgICBlbHNpZiAoICRsYXN0X3R5cGUgZXEgJ2snICkgewogICAgICAgICAgICAgICAgJHdzID0gV1NfTk8KICAgICAgICAgICAgICAgICAgdW5sZXNzICggJHJPcHRzX3NwYWNlX2tleXdvcmRfcGFyZW4KICAgICAgICAgICAgICAgICAgICB8fCAkc3BhY2VfYWZ0ZXJfa2V5d29yZHskbGFzdF90b2tlbn0gKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBTcGFjZSBiZXR3ZWVuIGZ1bmN0aW9uIGFuZCAnKCcKICAgICAgICAgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAjICd3JyBhbmQgJ2knIGNoZWNrcyBmb3Igc29tZXRoaW5nIGxpa2U6CiAgICAgICAgICAgICMgICBteWZ1biggICAgJm15ZnVuKCAgIC0+bXlmdW4oCiAgICAgICAgICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgZWxzaWYgKCggJGxhc3RfdHlwZSA9fiAvXlt3VUddJC8gKQogICAgICAgICAgICAgICAgfHwgKCAkbGFzdF90eXBlID1+IC9eW3dpXSQvICYmICRsYXN0X3Rva2VuID1+IC9eKFwmfC0+KS8gKSApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICR3cyA9IFdTX05PIHVubGVzcyAoJHJPcHRzX3NwYWNlX2Z1bmN0aW9uX3BhcmVuKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzcGFjZSBiZXR3ZWVuIHNvbWV0aGluZyBsaWtlICRpIGFuZCAoIGluIDw8c25pcHBldHMvc3BhY2UyLmluPj4KICAgICAgICAgICAgIyBmb3IgJGkgKCAwIC4uIDIwICkgewogICAgICAgICAgICAjIEZJWE1FOiBldmVudHVhbGx5LCB0eXBlICdpJyBuZWVkcyB0byBiZSBzcGxpdCBpbnRvIG11bHRpcGxlCiAgICAgICAgICAgICMgdG9rZW4gdHlwZXMgc28gdGhpcyBjYW4gYmUgYSBoYXJkd2lyZWQgcnVsZS4KICAgICAgICAgICAgZWxzaWYgKCAkbGFzdF90eXBlIGVxICdpJyAmJiAkbGFzdF90b2tlbiA9fiAvXltcJFwlXEBdLyApIHsKICAgICAgICAgICAgICAgICR3cyA9IFdTX1lFUzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhbGxvdyBjb25zdGFudCBmdW5jdGlvbiBmb2xsb3dlZCBieSAnKCknIHRvIHJldGFpbiBubyBzcGFjZQogICAgICAgICAgICBlbHNpZiAoJGxhc3RfdHlwZSBlcSAnQycKICAgICAgICAgICAgICAgICYmICRyTEwtPlsgJGogKyAxIF0tPltfVE9LRU5fXSBlcSAnKScgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkd3MgPSBXU19OTzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBwYXRjaCBmb3IgU1dJVENIL0NBU0U6IG1ha2Ugc3BhY2UgYXQgJ117JyBvcHRpb25hbAogICAgICAgICMgc2luY2UgdGhlICd7JyBtaWdodCBiZWdpbiBhIGNhc2Ugb3Igd2hlbiBibG9jawogICAgICAgIGVsc2lmICggKCAkdG9rZW4gZXEgJ3snICYmICR0eXBlIG5lICdMJyApICYmICRsYXN0X3Rva2VuIGVxICddJyApIHsKICAgICAgICAgICAgJHdzID0gV1NfT1BUSU9OQUw7CiAgICAgICAgfQoKICAgICAgICAjIGtlZXAgc3BhY2UgYmV0d2VlbiAnc3ViJyBhbmQgJ3snIGZvciBhbm9ueW1vdXMgc3ViIGRlZmluaXRpb24KICAgICAgICBpZiAoICR0eXBlIGVxICd7JyApIHsKICAgICAgICAgICAgaWYgKCAkbGFzdF90b2tlbiBlcSAnc3ViJyApIHsKICAgICAgICAgICAgICAgICR3cyA9IFdTX1lFUzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB0aGlzIGlzIG5lZWRlZCB0byBhdm9pZCBubyBzcGFjZSBpbiAnKXsnCiAgICAgICAgICAgIGlmICggJGxhc3RfdG9rZW4gZXEgJyknICYmICR0b2tlbiBlcSAneycgKSB7ICR3cyA9IFdTX1lFUyB9CgogICAgICAgICAgICAjIGF2b2lkIGFueSBzcGFjZSBiZWZvcmUgdGhlIGJyYWNlIG9yIGJyYWNrZXQgaW4gc29tZXRoaW5nIGxpa2UKICAgICAgICAgICAgIyAgQG9wdHN7J2EnLCdiJywuLi59CiAgICAgICAgICAgIGlmICggJGxhc3RfdHlwZSBlcSAnaScgJiYgJGxhc3RfdG9rZW4gPX4gL15cQC8gKSB7CiAgICAgICAgICAgICAgICAkd3MgPSBXU19OTzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZWxzaWYgKCAkdHlwZSBlcSAnaScgKSB7CgogICAgICAgICAgICAjIG5ldmVyIGEgc3BhY2UgYmVmb3JlIC0+CiAgICAgICAgICAgIGlmICggJHRva2VuID1+IC9eXC1cPi8gKSB7CiAgICAgICAgICAgICAgICAkd3MgPSBXU19OTzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyByZXRhaW4gYW55IHNwYWNlIGJldHdlZW4gJy0nIGFuZCBiYXJlIHdvcmQKICAgICAgICBlbHNpZiAoICR0eXBlIGVxICd3JyB8fCAkdHlwZSBlcSAnQycgKSB7CiAgICAgICAgICAgICR3cyA9IFdTX09QVElPTkFMIGlmICRsYXN0X3R5cGUgZXEgJy0nOwoKICAgICAgICAgICAgIyBuZXZlciBhIHNwYWNlIGJlZm9yZSAtPgogICAgICAgICAgICBpZiAoICR0b2tlbiA9fiAvXlwtXD4vICkgewogICAgICAgICAgICAgICAgJHdzID0gV1NfTk87CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgcmV0YWluIGFueSBzcGFjZSBiZXR3ZWVuICctJyBhbmQgYmFyZSB3b3JkOyBmb3IgZXhhbXBsZQogICAgICAgICMgYXZvaWQgc3BhY2UgYmV0d2VlbiAnVVNFUicgYW5kICctJyBoZXJlOiA8PHNuaXBwZXRzL3NwYWNlMi5pbj4+CiAgICAgICAgIyAgICRteWhhc2h7VVNFUi1OQU1FfT0nc3RldmUnOwogICAgICAgIGVsc2lmICggJHR5cGUgZXEgJ20nIHx8ICR0eXBlIGVxICctJyApIHsKICAgICAgICAgICAgJHdzID0gV1NfT1BUSU9OQUwgaWYgKCAkbGFzdF90eXBlIGVxICd3JyApOwogICAgICAgIH0KCiAgICAgICAgIyBhbHdheXMgc3BhY2UgYmVmb3JlIHNpZGUgY29tbWVudAogICAgICAgIGVsc2lmICggJHR5cGUgZXEgJyMnICkgeyAkd3MgPSBXU19ZRVMgaWYgJGogPiAwIH0KCiAgICAgICAgIyBhbHdheXMgcHJlc2VydmVyIHdoYXRldmVyIHNwYWNlIHdhcyB1c2VkIGFmdGVyIGEgcG9zc2libGUKICAgICAgICAjIGZpbGVoYW5kbGUgKGV4Y2VwdCBfKSBvciBoZXJlIGRvYyBvcGVyYXRvcgogICAgICAgIGlmICgKICAgICAgICAgICAgJHR5cGUgbmUgJyMnCiAgICAgICAgICAgICYmICggKCAkbGFzdF90eXBlIGVxICdaJyAmJiAkbGFzdF90b2tlbiBuZSAnXycgKQogICAgICAgICAgICAgICAgfHwgJGxhc3RfdHlwZSBlcSAnaCcgKQogICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJHdzID0gV1NfT1BUSU9OQUw7CiAgICAgICAgfQoKICAgICAgICAjIHNwYWNlX2JhY2tzbGFzaF9xdW90ZTsgUlQgIzEyMzc3NCAgPDxzbmlwcGV0cy9ydDEyMzc3NC5pbj4+CiAgICAgICAgIyBhbGxvdyBhIHNwYWNlIGJldHdlZW4gYSBiYWNrc2xhc2ggYW5kIHNpbmdsZSBvciBkb3VibGUgcXVvdGUKICAgICAgICAjIHRvIGF2b2lkIGZvb2xpbmcgaHRtbCBmb3JtYXR0ZXJzCiAgICAgICAgZWxzaWYgKCAkbGFzdF90eXBlIGVxICdcXCcgJiYgJHR5cGUgZXEgJ1EnICYmICR0b2tlbiA9fiAvXltcIlwnXS8gKSB7CiAgICAgICAgICAgIGlmICgkck9wdHNfc3BhY2VfYmFja3NsYXNoX3F1b3RlKSB7CiAgICAgICAgICAgICAgICBpZiAoICRyT3B0c19zcGFjZV9iYWNrc2xhc2hfcXVvdGUgPT0gMSApIHsKICAgICAgICAgICAgICAgICAgICAkd3MgPSBXU19PUFRJT05BTDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJHJPcHRzX3NwYWNlX2JhY2tzbGFzaF9xdW90ZSA9PSAyICkgeyAkd3MgPSBXU19ZRVMgfQogICAgICAgICAgICAgICAgZWxzZSB7IH0gICAgIyBzaG91bGRudCBoYXBwZW4KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICR3cyA9IFdTX05POwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkd3NfNDsKICAgICAgICAkd3NfNCA9ICR3cwogICAgICAgICAgaWYgRk9STUFUVEVSX0RFQlVHX0ZMQUdfV0hJVEU7CgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIFdoaXRlc3BhY2UgUnVsZXMgU2VjdGlvbiA1OgogICAgICAgICMgQXBwbHkgZGVmYXVsdCBydWxlcyBub3QgY292ZXJlZCBhYm92ZS4KICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICAgICMgSWYgd2UgZmFsbCB0aHJvdWdoIHRvIGhlcmUsIGxvb2sgYXQgdGhlIHByZS1kZWZpbmVkIGhhc2ggdGFibGVzIGZvcgogICAgICAgICMgdGhlIHR3byB0b2tlbnMsIGFuZDoKICAgICAgICAjICBpZiAodGhleSBhcmUgZXF1YWwpIHVzZSB0aGUgY29tbW9uIHZhbHVlCiAgICAgICAgIyAgaWYgKGVpdGhlciBpcyB6ZXJvIG9yIHVuZGVmKSB1c2UgdGhlIG90aGVyCiAgICAgICAgIyAgaWYgKGVpdGhlciBpcyAtMSkgdXNlIGl0CiAgICAgICAgIyBUaGF0IGlzLAogICAgICAgICMgbGVmdCAgdnMgcmlnaHQKICAgICAgICAjICAxICAgIHZzICAgIDEgICAgIC0tPiAgMQogICAgICAgICMgIDAgICAgdnMgICAgMCAgICAgLS0+ICAwCiAgICAgICAgIyAtMSAgICB2cyAgIC0xICAgICAtLT4gLTEKICAgICAgICAjCiAgICAgICAgIyAgMCAgICB2cyAgIC0xICAgICAtLT4gLTEKICAgICAgICAjICAwICAgIHZzICAgIDEgICAgIC0tPiAgMQogICAgICAgICMgIDEgICAgdnMgICAgMCAgICAgLS0+ICAxCiAgICAgICAgIyAtMSAgICB2cyAgICAwICAgICAtLT4gLTEKICAgICAgICAjCiAgICAgICAgIyAtMSAgICB2cyAgICAxICAgICAtLT4gLTEKICAgICAgICAjICAxICAgIHZzICAgLTEgICAgIC0tPiAtMQogICAgICAgIGlmICggIWRlZmluZWQoJHdzKSApIHsKICAgICAgICAgICAgbXkgJHdsID0gJHdhbnRfbGVmdF9zcGFjZXskdHlwZX07CiAgICAgICAgICAgIG15ICR3ciA9ICR3YW50X3JpZ2h0X3NwYWNleyRsYXN0X3R5cGV9OwogICAgICAgICAgICBpZiAoICFkZWZpbmVkKCR3bCkgKSB7ICR3bCA9IDAgfQogICAgICAgICAgICBpZiAoICFkZWZpbmVkKCR3cikgKSB7ICR3ciA9IDAgfQogICAgICAgICAgICAkd3MgPSAoICggJHdsID09ICR3ciApIHx8ICggJHdsID09IC0xICkgfHwgISR3ciApID8gJHdsIDogJHdyOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAhZGVmaW5lZCgkd3MpICkgewogICAgICAgICAgICAkd3MgPSAwOwogICAgICAgICAgICB3cml0ZV9kaWFnbm9zdGljcygKICAgICAgICAgICAgICAgICJXUyBmbGFnIGlzIHVuZGVmaW5lZCBmb3IgdG9rZW5zICRsYXN0X3Rva2VuICR0b2tlblxuIik7CiAgICAgICAgfQoKICAgICAgICAjIFRyZWF0IG5ld2xpbmUgYXMgYSB3aGl0ZXNwYWNlLiBPdGhlcndpc2UsIHdlIG1pZ2h0IGNvbWJpbmUKICAgICAgICAjICdTZW5kJyBhbmQgJy1yZWNpcGllbnRzJyBoZXJlIGFjY29yZGluZyB0byB0aGUgYWJvdmUgcnVsZXM6CiAgICAgICAgIyA8PHNuaXBwZXRzL3NwYWNlMy5pbj4+CiAgICAgICAgIyAgICBteSAkbXNnID0gbmV3IEZheDo6U2VuZAogICAgICAgICMgICAgICAtcmVjaXBpZW50cyA9PiAkdG8sCiAgICAgICAgIyAgICAgIC1kYXRhID0+ICRkYXRhOwogICAgICAgIGlmICggJHdzID09IDAgJiYgJGlucHV0X2xpbmVfbm8gIT0gJGxhc3RfaW5wdXRfbGluZV9ubyApIHsgJHdzID0gMSB9CgogICAgICAgIGlmICggICAoICR3cyA9PSAwICkKICAgICAgICAgICAgJiYgJGogPiAwCiAgICAgICAgICAgICYmICRqIDwgJGptYXgKICAgICAgICAgICAgJiYgKCAkbGFzdF90eXBlICF+IC9eW1poXSQvICkgKQogICAgICAgIHsKCiAgICAgICAgICAgICMgSWYgdGhpcyBoYXBwZW5zLCB3ZSBoYXZlIGEgbm9uLWZhdGFsIGJ1dCB1bmRlc2lyYWJsZQogICAgICAgICAgICAjIGhvbGUgaW4gdGhlIGFib3ZlIHJ1bGVzIHdoaWNoIHNob3VsZCBiZSBwYXRjaGVkLgogICAgICAgICAgICB3cml0ZV9kaWFnbm9zdGljcygKICAgICAgICAgICAgICAgICJXUyBmbGFnIGlzIHplcm8gZm9yIHRva2VucyAkbGFzdF90b2tlbiAkdG9rZW5cbiIpOwogICAgICAgIH0KCiAgICAgICAgJHJ3aGl0ZXNwYWNlX2ZsYWdzLT5bJGpdID0gJHdzOwoKICAgICAgICBGT1JNQVRURVJfREVCVUdfRkxBR19XSElURSAmJiBkbyB7CiAgICAgICAgICAgIG15ICRzdHIgPSBzdWJzdHIoICRsYXN0X3Rva2VuLCAwLCAxNSApOwogICAgICAgICAgICAkc3RyIC49ICcgJyB4ICggMTYgLSBsZW5ndGgoJHN0cikgKTsKICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCgkd3NfMSkgKSB7ICR3c18xID0gIioiIH0KICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCgkd3NfMikgKSB7ICR3c18yID0gIioiIH0KICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCgkd3NfMykgKSB7ICR3c18zID0gIioiIH0KICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCgkd3NfNCkgKSB7ICR3c180ID0gIioiIH0KICAgICAgICAgICAgcHJpbnQgU1RET1VUCiJORVcgV0hJVEU6ICBpPSRqICRzdHIgJGxhc3RfdHlwZSAkdHlwZSAkd3NfMSA6ICR3c18yIDogJHdzXzMgOiAkd3NfNCA6ICR3cyBcbiI7CiAgICAgICAgfTsKICAgIH0gIyMgZW5kIG1haW4gbG9vcAoKICAgIGlmICggJHJPcHRzLT57J3RpZ2h0LXNlY3JldC1vcGVyYXRvcnMnfSApIHsKICAgICAgICBuZXdfc2VjcmV0X29wZXJhdG9yX3doaXRlc3BhY2UoICRyTEwsICRyd2hpdGVzcGFjZV9mbGFncyApOwogICAgfQogICAgcmV0dXJuICRyd2hpdGVzcGFjZV9mbGFnczsKfSAjIyBlbmQgc3ViIHNldF93aGl0ZXNwYWNlX2ZsYWdzCgpzdWIgcmVzcGFjZV90b2tlbnMgewoKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICByZXR1cm4gaWYgJHJPcHRzLT57J2luZGVudC1vbmx5J307CgogICAgIyBUaGlzIHJvdXRpbmUgbWFrZXMgYWxsIG5lY2Vzc2FyeSBjaGFuZ2VzIHRvIHRoZSB0b2tlbml6YXRpb24gYWZ0ZXIgdGhlCiAgICAjIGZpbGUgaGFzIGJlZW4gcmVhZC4gVGhpcyBjb25zaXN0cyBtb3N0bHkgb2YgaW5zZXJ0aW5nIGFuZCBkZWxldGluZyBzcGFjZXMKICAgICMgYWNjb3JkaW5nIHRvIHRoZSBzZWxlY3RlZCBwYXJhbWV0ZXJzLiBJbiBhIGZldyBjYXNlcyBub24tc3BhY2UgY2hhcmFjdGVycwogICAgIyBhcmUgYWRkZWQsIGRlbGV0ZWQgb3IgbW9kaWZpZWQuCgogICAgIyBUaGUgb2xkIHRva2VucyBhcmUgY29waWVkIG9uZS1ieS1vbmUsIHdpdGggY2hhbmdlcywgZnJvbSB0aGUgb2xkCiAgICAjIGxpbmVhciBzdG9yYWdlIGFycmF5IHRvIGEgbmV3IGFycmF5LgoKICAgIG15ICRyTEwgICAgICAgICAgICAgICAgICAgICAgICA9ICRzZWxmLT57ckxMfTsKICAgIG15ICRLbGltaXRfb2xkICAgICAgICAgICAgICAgICA9ICRzZWxmLT57S2xpbWl0fTsKICAgIG15ICRybGluZXMgICAgICAgICAgICAgICAgICAgICA9ICRzZWxmLT57cmxpbmVzfTsKICAgIG15ICRycGFpcmVkX3RvX2lubmVyX2NvbnRhaW5lciA9ICRzZWxmLT57cnBhaXJlZF90b19pbm5lcl9jb250YWluZXJ9OwoKICAgIG15ICRyTExfbmV3ID0gW107ICAgICMgVGhpcyBpcyB0aGUgbmV3IGFycmF5CiAgICBteSAkS0sgICAgICA9IDA7CiAgICBteSAkcnRva2VuX3ZhcnM7CiAgICBteSAkS21heCA9IEB7JHJMTH0gLSAxOwoKICAgICMgU2V0IHRoZSB3aGl0ZXNwYWNlIGZsYWdzLCB3aGljaCBpbmRpY2F0ZSB0aGUgdG9rZW4gc3BhY2luZyBwcmVmZXJlbmNlLgogICAgbXkgJHJ3aGl0ZXNwYWNlX2ZsYWdzID0gJHNlbGYtPnNldF93aGl0ZXNwYWNlX2ZsYWdzKCk7CgogICAgIyB3ZSB3aWxsIGJlIHNldHRpbmcgdG9rZW4gbGVuZ3RocyBhcyB3ZSBnbwogICAgbXkgJGN1bXVsYXRpdmVfbGVuZ3RoID0gMDsKCiAgICAjIFdlIGFsc28gZGVmaW5lIHRoZXNlIGhhc2ggaW5kZXhlcyBnaXZpbmcgY29udGFpbmVyIHRva2VuIGFycmF5IGluZGV4ZXMKICAgICMgYXMgYSBmdW5jdGlvbiBvZiB0aGUgY29udGFpbmVyIHNlcXVlbmNlIG51bWJlcnMuICBGb3IgZXhhbXBsZSwKICAgIG15ICRLX29wZW5pbmdfY29udGFpbmVyID0ge307ICAgICMgb3BlbmluZyBbIHsgb3IgKAogICAgbXkgJEtfY2xvc2luZ19jb250YWluZXIgPSB7fTsgICAgIyBjbG9zaW5nIF0gfSBvciApCiAgICBteSAkS19vcGVuaW5nX3Rlcm5hcnkgICA9IHt9OyAgICAjIG9wZW5pbmcgPyBvZiB0ZXJuYXJ5CiAgICBteSAkS19jbG9zaW5nX3Rlcm5hcnkgICA9IHt9OyAgICAjIGNsb3NpbmcgOiBvZiB0ZXJuYXJ5CgogICAgIyBMaXN0IG9mIG5ldyBLIGluZGV4ZXMgb2YgcGhhbnRvbSBzZW1pY29sb25zCiAgICAjIFRoaXMgd2lsbCBiZSBuZWVkZWQgaWYgd2Ugd2FudCB0byB1bmRvIHRoZW0gZm9yIGl0ZXJhdGlvbnMKICAgIG15ICRyS19waGFudG9tX3NlbWljb2xvbnMgPSBbXTsKCiAgICAjIFRlbXBvcmFyeSBoYXNoZXMgZm9yIGFkZGluZyBzZW1pY29sb25zCiAgICAjI215ICRyS2ZpcnN0X25ldyAgICAgICAgICAgICAgID0ge307CgogICAgIyBhIHN1YiB0byBsaW5rIHByZWNlZGluZyBub2RlcyBmb3J3YXJkIHRvIGEgbmV3IG5vZGUgdHlwZQogICAgbXkgJGxpbmtfYmFjayA9IHN1YiB7CiAgICAgICAgbXkgKCAkS3RvcCwgJGtleSApID0gQF87CgogICAgICAgIG15ICRLcHJldiA9ICRLdG9wIC0gMTsKICAgICAgICB3aGlsZSAoICRLcHJldiA+PSAwCiAgICAgICAgICAgICYmICFkZWZpbmVkKCAkckxMX25ldy0+WyRLcHJldl0tPlska2V5XSApICkKICAgICAgICB7CiAgICAgICAgICAgICRyTExfbmV3LT5bJEtwcmV2XS0+WyRrZXldID0gJEt0b3A7CiAgICAgICAgICAgICRLcHJldiAtPSAxOwogICAgICAgIH0KICAgIH07CgogICAgIyBBIHN1YiB0byBzdG9yZSBvbmUgdG9rZW4gaW4gdGhlIG5ldyBhcnJheQogICAgIyBBbGwgbmV3IHRva2VucyBtdXN0IGJlIHN0b3JlZCBieSB0aGlzIHN1YiBzbyB0aGF0IGl0IGNhbiB1cGRhdGUKICAgICMgYWxsIGRhdGEgc3RydWN0dXJlcyBvbiB0aGUgZmx5LgogICAgbXkgJGxhc3Rfbm9uYmxhbmtfdHlwZSA9ICc7JzsKICAgIG15ICRzdG9yZV90b2tlbiAgICAgICAgPSBzdWIgewogICAgICAgIG15ICgkaXRlbSkgPSBAXzsKCiAgICAgICAgIyBUaGlzIHdpbGwgYmUgdGhlIGluZGV4IG9mIHRoaXMgaXRlbSBpbiB0aGUgbmV3IGFycmF5CiAgICAgICAgbXkgJEtLX25ldyA9IEB7JHJMTF9uZXd9OwoKICAgICAgICAjIGNoZWNrIGZvciBhIHNlcXVlbmNlZCBpdGVtIChpLmUuLCBjb250YWluZXIgb3IgPy86KQogICAgICAgIG15ICR0eXBlX3NlcXVlbmNlID0gJGl0ZW0tPltfVFlQRV9TRVFVRU5DRV9dOwogICAgICAgIGlmICgkdHlwZV9zZXF1ZW5jZSkgewoKICAgICAgICAgICAgJGxpbmtfYmFjay0+KCAkS0tfbmV3LCBfS05FWFRfU0VRX0lURU1fICk7CgogICAgICAgICAgICBteSAkdG9rZW4gPSAkaXRlbS0+W19UT0tFTl9dOwogICAgICAgICAgICBpZiAoICRpc19vcGVuaW5nX3Rva2VueyR0b2tlbn0gKSB7CgogICAgICAgICAgICAgICAgJEtfb3BlbmluZ19jb250YWluZXItPnskdHlwZV9zZXF1ZW5jZX0gPSAkS0tfbmV3OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJGlzX2Nsb3NpbmdfdG9rZW57JHRva2VufSApIHsKCiAgICAgICAgICAgICAgICAkS19jbG9zaW5nX2NvbnRhaW5lci0+eyR0eXBlX3NlcXVlbmNlfSA9ICRLS19uZXc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgVGhlc2UgYXJlIG5vdCB5ZXQgdXNlZCBidXQgY291bGQgYmUgdXNlZnVsCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKCAkdG9rZW4gZXEgJz8nICkgewogICAgICAgICAgICAgICAgICAgICRLX29wZW5pbmdfdGVybmFyeS0+eyR0eXBlX3NlcXVlbmNlfSA9ICRLS19uZXc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICR0b2tlbiBlcSAnOicgKSB7CiAgICAgICAgICAgICAgICAgICAgJEtfY2xvc2luZ190ZXJuYXJ5LT57JHR5cGVfc2VxdWVuY2V9ID0gJEtLX25ldzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICMgc2hvdWxkbid0IGhhcHBlbgogICAgICAgICAgICAgICAgICAgIEZhdWx0KCJVZ2g6IHNob3VsZG4ndCBoYXBwZW4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBmaW5kIHRoZSBsZW5ndGggb2YgdGhpcyB0b2tlbgogICAgICAgIG15ICR0b2tlbl9sZW5ndGggPSBsZW5ndGgoICRpdGVtLT5bX1RPS0VOX10gKTsKCiAgICAgICAgIyBhbmQgdXBkYXRlIHRoZSBjdW11bGF0aXZlIGxlbmd0aAogICAgICAgICRjdW11bGF0aXZlX2xlbmd0aCArPSAkdG9rZW5fbGVuZ3RoOwoKICAgICAgICAjIFNhdmUgdGhlIGxlbmd0aCBzdW0gdG8ganVzdCBBRlRFUiB0aGlzIHRva2VuCiAgICAgICAgJGl0ZW0tPltfQ1VNVUxBVElWRV9MRU5HVEhfXSA9ICRjdW11bGF0aXZlX2xlbmd0aDsKCiAgICAgICAgbXkgJHR5cGUgPSAkaXRlbS0+W19UWVBFX107CiAgICAgICAgaWYgKCAkdHlwZSBuZSAnYicgKSB7ICRsYXN0X25vbmJsYW5rX3R5cGUgPSAkdHlwZSB9CgogICAgICAgICMgYW5kIGZpbmFsbHksIGFkZCB0aGlzIGl0ZW0gdG8gdGhlIG5ldyBhcnJheQogICAgICAgIHB1c2ggQHskckxMX25ld30sICRpdGVtOwogICAgfTsKCiAgICBteSAkc3RvcmVfdG9rZW5fYW5kX3NwYWNlID0gc3ViIHsKICAgICAgICBteSAoICRpdGVtLCAkd2FudF9zcGFjZSApID0gQF87CgogICAgICAgICMgc3RvcmUgYSB0b2tlbiB3aXRoIHByZWNlZGluZyBzcGFjZSBpZiByZXF1ZXN0ZWQgYW5kIG5lZWRlZAoKICAgICAgICAjIEZpcnN0IHN0b3JlIHRoZSBzcGFjZQogICAgICAgIGlmICggICAkd2FudF9zcGFjZQogICAgICAgICAgICAmJiBAeyRyTExfbmV3fQogICAgICAgICAgICAmJiAkckxMX25ldy0+Wy0xXS0+W19UWVBFX10gbmUgJ2InCiAgICAgICAgICAgICYmICRyT3B0c19hZGRfd2hpdGVzcGFjZSApCiAgICAgICAgewogICAgICAgICAgICBteSAkcmNvcHkgPSBjb3B5X3Rva2VuX2FzX3R5cGUoICRpdGVtLCAnYicsICcgJyApOwogICAgICAgICAgICAkcmNvcHktPltfTElORV9JTkRFWF9dID0KICAgICAgICAgICAgICAkckxMX25ldy0+Wy0xXS0+W19MSU5FX0lOREVYX107CiAgICAgICAgICAgICRzdG9yZV90b2tlbi0+KCRyY29weSk7CiAgICAgICAgfQoKICAgICAgICAjIHRoZW4gdGhlIHRva2VuCiAgICAgICAgJHN0b3JlX3Rva2VuLT4oJGl0ZW0pOwogICAgfTsKCiAgICBteSAkS19lbmRfcSA9IHN1YiB7CiAgICAgICAgbXkgKCRLSykgID0gQF87CiAgICAgICAgbXkgJEtfZW5kID0gJEtLOwogICAgICAgIG15ICRLbiAgICA9ICRzZWxmLT5LX25leHRfbm9uYmxhbmsoJEtLKTsKICAgICAgICB3aGlsZSAoIGRlZmluZWQoJEtuKSAmJiAkckxMLT5bJEtuXS0+W19UWVBFX10gZXEgJ3EnICkgewogICAgICAgICAgICAkS19lbmQgPSAkS247CiAgICAgICAgICAgICRLbiAgICA9ICRzZWxmLT5LX25leHRfbm9uYmxhbmsoJEtuKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRLX2VuZDsKICAgIH07CgogICAgbXkgJGFkZF9waGFudG9tX3NlbWljb2xvbiA9IHN1YiB7CgogICAgICAgIG15ICgkS0spID0gQF87CgogICAgICAgIG15ICRLcCA9ICRzZWxmLT5LX3ByZXZpb3VzX25vbmJsYW5rKCB1bmRlZiwgJHJMTF9uZXcgKTsKICAgICAgICByZXR1cm4gdW5sZXNzICggZGVmaW5lZCgkS3ApICk7CgogICAgICAgICMgd2UgYXJlIG9ubHkgYWRkaW5nIHNlbWljb2xvbnMgZm9yIGNlcnRhaW4gYmxvY2sgdHlwZXMKICAgICAgICBteSAkYmxvY2tfdHlwZSA9ICRyTEwtPlskS0tdLT5bX0JMT0NLX1RZUEVfXTsKICAgICAgICByZXR1cm4KICAgICAgICAgIHVubGVzcyAoICRva190b19hZGRfc2VtaWNvbG9uX2Zvcl9ibG9ja190eXBleyRibG9ja190eXBlfQogICAgICAgICAgICB8fCAkYmxvY2tfdHlwZSA9fiAvXihzdWJ8cGFja2FnZSkvCiAgICAgICAgICAgIHx8ICRibG9ja190eXBlID1+IC9eXHcrXDokLyApOwoKICAgICAgICBteSAkdHlwZV9zZXF1ZW5jZSA9ICRyTEwtPlskS0tdLT5bX1RZUEVfU0VRVUVOQ0VfXTsKCiAgICAgICAgbXkgJHByZXZpb3VzX25vbmJsYW5rX3R5cGUgID0gJHJMTF9uZXctPlskS3BdLT5bX1RZUEVfXTsKICAgICAgICBteSAkcHJldmlvdXNfbm9uYmxhbmtfdG9rZW4gPSAkckxMX25ldy0+WyRLcF0tPltfVE9LRU5fXTsKCiAgICAgICAgIyBEbyBub3QgYWRkIGEgc2VtaWNvbG9uIGlmLi4uCiAgICAgICAgcmV0dXJuCiAgICAgICAgICBpZiAoCgogICAgICAgICAgICAjIGl0IHdvdWxkIGZvbGxvdyBhIGNvbW1lbnQgKGFuZCBiZSBpc29sYXRlZCkKICAgICAgICAgICAgJHByZXZpb3VzX25vbmJsYW5rX3R5cGUgZXEgJyMnCgogICAgICAgICAgICAjIGl0IGZvbGxvd3MgYSBjb2RlIGJsb2NrICggYmVjYXVzZSB0aGV5IGFyZSBub3QgYWx3YXlzIHdhbnRlZAogICAgICAgICAgICAjIHRoZXJlIGFuZCBtYXkgYWRkIGNsdXR0ZXIpCiAgICAgICAgICAgIHx8ICRyTExfbmV3LT5bJEtwXS0+W19CTE9DS19UWVBFX10KCiAgICAgICAgICAgICMgaXQgd291bGQgZm9sbG93IGEgbGFiZWwKICAgICAgICAgICAgfHwgJHByZXZpb3VzX25vbmJsYW5rX3R5cGUgZXEgJ0onCgogICAgICAgICAgICAjIGl0IHdvdWxkIGJlIGluc2lkZSBhICdmb3JtYXQnIHN0YXRlbWVudCAoYW5kIGNhdXNlIHN5bnRheCBlcnJvcikKICAgICAgICAgICAgfHwgKCAgICRwcmV2aW91c19ub25ibGFua190eXBlIGVxICdrJwogICAgICAgICAgICAgICAgJiYgJHByZXZpb3VzX25vbmJsYW5rX3Rva2VuID1+IC9mb3JtYXQvICkKCiAgICAgICAgICAgICMgaWYgaXQgd291bGQgcHJldmVudCB3ZWxkaW5nIHR3byBjb250YWluZXJzCiAgICAgICAgICAgIHx8ICRycGFpcmVkX3RvX2lubmVyX2NvbnRhaW5lci0+eyR0eXBlX3NlcXVlbmNlfQoKICAgICAgICAgICk7CgogICAgICAgICMgV2Ugd2lsbCBpbnNlcnQgYW4gZW1wdHkgc2VtaWNvbG9uIGhlcmUgYXMgYSBwbGFjZWhvbGRlci4gIExhdGVyLCBpZgogICAgICAgICMgaXQgYmVjb21lcyB0aGUgbGFzdCB0b2tlbiBvbiBhIGxpbmUsIHdlIHdpbGwgYnJpbmcgaXQgdG8gbGlmZS4gIFRoZQogICAgICAgICMgYWR2YW50YWdlIG9mIGRvaW5nIHRoaXMgaXMgdGhhdCAoMSkgd2UganVzdCBoYXZlIHRvIGNoZWNrIGxpbmUKICAgICAgICAjIGVuZGluZ3MsIGFuZCAoMikgdGhlIHBoYW50b20gc2VtaWNvbG9uIGhhcyB6ZXJvIHdpZHRoIGFuZCB0aGVyZWZvcmUKICAgICAgICAjIHdvbid0IGNhdXNlIG5lZWRsZXNzIGJyZWFrcyBvZiBvbmUtbGluZSBibG9ja3MuCiAgICAgICAgbXkgJEt0b3AgPSAtMTsKICAgICAgICBpZiAoICAgJHJMTF9uZXctPlskS3RvcF0tPltfVFlQRV9dIGVxICdiJwogICAgICAgICAgICAmJiAkd2FudF9sZWZ0X3NwYWNleyc7J30gPT0gV1NfTk8gKQogICAgICAgIHsKCiAgICAgICAgICAgICMgY29udmVydCB0aGUgYmxhbmsgaW50byBhIHNlbWljb2xvbi4uCiAgICAgICAgICAgICMgYmUgY2FyZWZ1bDogd2UgYXJlIHdvcmtpbmcgb24gdGhlIG5ldyBzdGFjayB0b3AKICAgICAgICAgICAgIyBvbiBhIHRva2VuIHdoaWNoIGhhcyBiZWVuIHN0b3JlZC4KICAgICAgICAgICAgbXkgJHJjb3B5ID0gY29weV90b2tlbl9hc190eXBlKCAkckxMX25ldy0+WyRLdG9wXSwgJ2InLCAnICcgKTsKCiAgICAgICAgICAgICMgQ29udmVydCB0aGUgZXhpc3RpbmcgYmxhbmsgdG86CiAgICAgICAgICAgICMgICBhIHBoYW50b20gc2VtaWNvbG9uIGZvciBvbmVfbGluZV9ibG9jayBvcHRpb24gPSAwIG9yIDEKICAgICAgICAgICAgIyAgIGEgcmVhbCBzZW1pY29sb24gICAgZm9yIG9uZV9saW5lX2Jsb2NrIG9wdGlvbiA9IDIKICAgICAgICAgICAgbXkgJHRvayA9ICRyT3B0c19vbmVfbGluZV9ibG9ja19zZW1pY29sb25zID09IDIgPyAnOycgOiAnJzsKCiAgICAgICAgICAgICRyTExfbmV3LT5bJEt0b3BdLT5bX1RPS0VOX10gPSAkdG9rOyAgICAjIHplcm8gbGVuZ3RoIGlmIHBoYW50b20KICAgICAgICAgICAgJHJMTF9uZXctPlskS3RvcF0tPltfVFlQRV9dICA9ICc7JzsKICAgICAgICAgICAgJHJMTF9uZXctPlskS3RvcF0tPltfU0xFVkVMX10gPQogICAgICAgICAgICAgICRyTEwtPlskS0tdLT5bX1NMRVZFTF9dOwoKICAgICAgICAgICAgcHVzaCBAeyRyS19waGFudG9tX3NlbWljb2xvbnN9LCBAeyRyTExfbmV3fSAtIDE7CgogICAgICAgICAgICAjIFRoZW4gc3RvcmUgYSBuZXcgYmxhbmsKICAgICAgICAgICAgJHN0b3JlX3Rva2VuLT4oJHJjb3B5KTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIGluc2VydCBhIG5ldyB0b2tlbgogICAgICAgICAgICBteSAkcmNvcHkgPSBjb3B5X3Rva2VuX2FzX3R5cGUoICRyTExfbmV3LT5bJEtwXSwgJzsnLCAnJyApOwogICAgICAgICAgICAkcmNvcHktPltfU0xFVkVMX10gPSAkckxMLT5bJEtLXS0+W19TTEVWRUxfXTsKICAgICAgICAgICAgJHN0b3JlX3Rva2VuLT4oJHJjb3B5KTsKICAgICAgICAgICAgcHVzaCBAeyRyS19waGFudG9tX3NlbWljb2xvbnN9LCBAeyRyTExfbmV3fSAtIDE7CiAgICAgICAgfQogICAgfTsKCiAgICBteSAkY2hlY2tfUSA9IHN1YiB7CgogICAgICAgICMgQ2hlY2sgdGhhdCBhIHF1b3RlIGxvb2tzIG9rYXkKICAgICAgICAjIFRoaXMgc3ViIHdvcmtzIGJ1dCBuZWVkcyB0byBieSBzeW5jJ2Qgd2l0aCB0aGUgbG9nIGZpbGUgb3V0cHV0CiAgICAgICAgIyBiZWZvcmUgaXQgY2FuIGJlIHVzZWQuCiAgICAgICAgbXkgKCAkS0ssICRLZmlyc3QgKSA9IEBfOwogICAgICAgIG15ICR0b2tlbiA9ICRyTEwtPlskS0tdLT5bX1RPS0VOX107CiAgICAgICAgbm90ZV9lbWJlZGRlZF90YWIoKSBpZiAoICR0b2tlbiA9fiAiXHQiICk7CgogICAgICAgIG15ICRLcCA9ICRzZWxmLT5LX3ByZXZpb3VzX25vbmJsYW5rKCB1bmRlZiwgJHJMTF9uZXcgKTsKICAgICAgICByZXR1cm4gdW5sZXNzICggZGVmaW5lZCgkS3ApICk7CiAgICAgICAgbXkgJHByZXZpb3VzX25vbmJsYW5rX3R5cGUgID0gJHJMTF9uZXctPlskS3BdLT5bX1RZUEVfXTsKICAgICAgICBteSAkcHJldmlvdXNfbm9uYmxhbmtfdG9rZW4gPSAkckxMX25ldy0+WyRLcF0tPltfVE9LRU5fXTsKCiAgICAgICAgbXkgJHByZXZpb3VzX25vbmJsYW5rX3R5cGVfMiAgPSAnYic7CiAgICAgICAgbXkgJHByZXZpb3VzX25vbmJsYW5rX3Rva2VuXzIgPSAiIjsKICAgICAgICBteSAkS3BwID0gJHNlbGYtPktfcHJldmlvdXNfbm9uYmxhbmsoICRLcCwgJHJMTF9uZXcgKTsKICAgICAgICBpZiAoIGRlZmluZWQoJEtwcCkgKSB7CiAgICAgICAgICAgICRwcmV2aW91c19ub25ibGFua190eXBlXzIgID0gJHJMTF9uZXctPlskS3BwXS0+W19UWVBFX107CiAgICAgICAgICAgICRwcmV2aW91c19ub25ibGFua190b2tlbl8yID0gJHJMTF9uZXctPlskS3BwXS0+W19UT0tFTl9dOwogICAgICAgIH0KCiAgICAgICAgbXkgJEtuICAgICAgICAgICAgICAgICAgPSAkc2VsZi0+S19uZXh0X25vbmJsYW5rKCRLSyk7CiAgICAgICAgbXkgJG5leHRfbm9uYmxhbmtfdG9rZW4gPSAiIjsKICAgICAgICBpZiAoIGRlZmluZWQoJEtuKSApIHsKICAgICAgICAgICAgJG5leHRfbm9uYmxhbmtfdG9rZW4gPSAkckxMLT5bJEtuXS0+W19UT0tFTl9dOwogICAgICAgIH0KCiAgICAgICAgbXkgJHRva2VuXzAgPSAkckxMLT5bJEtmaXJzdF0tPltfVE9LRU5fXTsKICAgICAgICBteSAkdHlwZV8wICA9ICRyTEwtPlskS2ZpcnN0XS0+W19UWVBFX107CgogICAgICAgICMgbWFrZSBub3RlIG9mIHNvbWV0aGluZyBsaWtlICckdmFyID0gcy94eHgveXl5LzsnCiAgICAgICAgIyBpbiBjYXNlIGl0IHNob3VsZCBoYXZlIGJlZW4gJyR2YXIgPX4gcy94eHgveXl5LzsnCiAgICAgICAgaWYgKAogICAgICAgICAgICAgICAkdG9rZW4gPX4gL14oc3x0cnx5fG18XC8pLwogICAgICAgICAgICAmJiAkcHJldmlvdXNfbm9uYmxhbmtfdG9rZW4gPX4gL14oPXw9PXwhPSkkLwoKICAgICAgICAgICAgIyBwcmVjZWRlZCBieSBzaW1wbGUgc2NhbGFyCiAgICAgICAgICAgICYmICRwcmV2aW91c19ub25ibGFua190eXBlXzIgZXEgJ2knCiAgICAgICAgICAgICYmICRwcmV2aW91c19ub25ibGFua190b2tlbl8yID1+IC9eXCQvCgogICAgICAgICAgICAjIGZvbGxvd2VkIGJ5IHNvbWUga2luZCBvZiB0ZXJtaW5hdGlvbgogICAgICAgICAgICAjIChidXQgZ2l2ZSBjb21wbGFpbnQgaWYgd2UgY2FuIG5vdCBzZWUgZmFyIGVub3VnaCBhaGVhZCkKICAgICAgICAgICAgJiYgJG5leHRfbm9uYmxhbmtfdG9rZW4gPX4gL15bOyBcKVx9XSQvCgogICAgICAgICAgICAjIHNjYWxhciBpcyBub3QgZGVjbGFyZWQKICAgICAgICAgICAgJiYgISggJHR5cGVfMCBlcSAnaycgJiYgJHRva2VuXzAgPX4gL14obXl8b3VyfGxvY2FsKSQvICkKICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRndWVzcyA9IHN1YnN0ciggJGxhc3Rfbm9uYmxhbmtfdG9rZW4sIDAsIDEgKSAuICd+JzsKICAgICAgICAgICAgY29tcGxhaW4oCiJOb3RlOiBiZSBzdXJlIHlvdSB3YW50ICckcHJldmlvdXNfbm9uYmxhbmtfdG9rZW4nIGluc3RlYWQgb2YgJyRndWVzcycgaGVyZVxuIgogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH07CgogICAgIyBNYWluIGxvb3Agb3ZlciBhbGwgbGluZXMgb2YgdGhlIGZpbGUKICAgIG15ICRsYXN0X0tfb3V0OwogICAgbXkgJENPREVfdHlwZSA9ICIiOwogICAgbXkgJGxpbmVfdHlwZSA9ICIiOwoKICAgICMgVGVzdGluZyBvcHRpb24gdG8gYnJlYWsgcXcuICBEbyBub3QgdXNlOyBpdCBjYW4gbWFrZSBhIG1lc3MuCiAgICBteSAkQUxMT1dfQlJFQUtfTVVMVElMSU5FX1FXID0gMDsKICAgIG15ICRpbl9tdWx0aWxpbmVfcXc7CiAgICBmb3JlYWNoIG15ICRsaW5lX29mX3Rva2VucyAoIEB7JHJsaW5lc30gKSB7CgogICAgICAgICRpbnB1dF9saW5lX251bWJlciA9ICRsaW5lX29mX3Rva2Vucy0+e19saW5lX251bWJlcn07CiAgICAgICAgbXkgJGxhc3RfbGluZV90eXBlID0gJGxpbmVfdHlwZTsKICAgICAgICAkbGluZV90eXBlID0gJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdHlwZX07CiAgICAgICAgbmV4dCB1bmxlc3MgKCAkbGluZV90eXBlIGVxICdDT0RFJyApOwogICAgICAgIG15ICRsYXN0X0NPREVfdHlwZSA9ICRDT0RFX3R5cGU7CiAgICAgICAgJENPREVfdHlwZSA9ICRsaW5lX29mX3Rva2Vucy0+e19jb2RlX3R5cGV9OwogICAgICAgIG15ICRyS19yYW5nZSA9ICRsaW5lX29mX3Rva2Vucy0+e19yS19yYW5nZX07CiAgICAgICAgbXkgKCAkS2ZpcnN0LCAkS2xhc3QgKSA9IEB7JHJLX3JhbmdlfTsKICAgICAgICBuZXh0IHVubGVzcyBkZWZpbmVkKCRLZmlyc3QpOwoKICAgICAgICAjIENoZWNrIGZvciBjb3JyZWN0IHNlcXVlbmNlIG9mIHRva2VuIGluZGV4ZXMuLi4KICAgICAgICAjIEFuIGVycm9yIGhlcmUgbWVhbnMgdGhhdCBzdWIgd3JpdGVfbGluZSgpIGRpZCBub3QgY29ycmVjdGx5CiAgICAgICAgIyBwYWNrYWdlIHRoZSB0b2tlbml6ZWQgbGluZXMgYXMgaXQgcmVjZWl2ZWQgdGhlbS4KICAgICAgICBpZiAoIGRlZmluZWQoJGxhc3RfS19vdXQpICkgewogICAgICAgICAgICBpZiAoICRLZmlyc3QgIT0gJGxhc3RfS19vdXQgKyAxICkgewogICAgICAgICAgICAgICAgRmF1bHQoCiAgICAgICAgICAgICAgICAgICAgIlByb2dyYW0gQnVnOiBsYXN0IEsgb3V0IHdhcyAkbGFzdF9LX291dCBidXQgS2ZpcnN0PSRLZmlyc3QiCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBpZiAoICRLZmlyc3QgIT0gMCApIHsKICAgICAgICAgICAgICAgIEZhdWx0KCJQcm9ncmFtIEJ1ZzogZmlyc3QgSyBpcyAkS2ZpcnN0IGJ1dCBzaG91bGQgYmUgMCIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRsYXN0X0tfb3V0ID0gJEtsYXN0OwoKICAgICAgICAjIEhhbmRsZSBzcGVjaWFsIGxpbmVzIG9mIGNvZGUKICAgICAgICBpZiAoICRDT0RFX3R5cGUgJiYgJENPREVfdHlwZSBuZSAnTklOJyAmJiAkQ09ERV90eXBlIG5lICdWRVInICkgewoKICAgICAgICAgICAgIyBDT0RFX3R5cGVzIGFyZSBhcyBmb2xsb3dzLgogICAgICAgICAgICAjICdCTCcgPSBCbGFuayBMaW5lCiAgICAgICAgICAgICMgJ1ZCJyA9IFZlcmJhdGltIC0gbGluZSBnb2VzIG91dCB2ZXJiYXRpbQogICAgICAgICAgICAjICdGUycgPSBGb3JtYXQgU2tpcHBpbmcgLSBsaW5lIGdvZXMgb3V0IHZlcmJhdGltLCBubyBibGFua3MKICAgICAgICAgICAgIyAnSU8nID0gSW5kZW50IE9ubHkgLSBvbmx5IGluZGVudGF0aW9uIG1heSBiZSBjaGFuZ2VkCiAgICAgICAgICAgICMgJ05JTicgPSBObyBJbnRlcm5hbCBOZXdsaW5lcyAtIGxpbmUgZG9lcyBub3QgZ2V0IGJyb2tlbgogICAgICAgICAgICAjICdIU0MnPUhhbmdpbmcgU2lkZSBDb21tZW50IC0gZml4IHRoaXMgaGFuZ2luZyBzaWRlIGNvbW1lbnQKICAgICAgICAgICAgIyAnQkMnPUJsb2NrIENvbW1lbnQgLSBhbiBvcmRpbmFyeSBmdWxsIGxpbmUgY29tbWVudAogICAgICAgICAgICAjICdTQkMnPVN0YXRpYyBCbG9jayBDb21tZW50IC0gYSBibG9jayBjb21tZW50IHdoaWNoIGRvZXMgbm90IGdldAogICAgICAgICAgICAjICAgICAgaW5kZW50ZWQKICAgICAgICAgICAgIyAnU0JDWCc9U3RhdGljIEJsb2NrIENvbW1lbnQgV2l0aG91dCBMZWFkaW5nIFNwYWNlCiAgICAgICAgICAgICMgJ0RFTCc9RGVsZXRlIHRoaXMgbGluZQogICAgICAgICAgICAjICdWRVInPVZFUlNJT04gc3RhdGVtZW50CiAgICAgICAgICAgICMgJycgb3IgKHVuZGVmaW5lZCkgLSBubyByZXN0cnVjdGlvbnMKCiAgICAgICAgICAgICMgRm9yIGEgaGFuZ2luZyBzaWRlIGNvbW1lbnQgd2UgaW5zZXJ0IGFuIGVtcHR5IHF1b3RlIGJlZm9yZQogICAgICAgICAgICAjIHRoZSBjb21tZW50IHNvIHRoYXQgaXQgYmVjb21lcyBhIG5vcm1hbCBzaWRlIGNvbW1lbnQgYW5kCiAgICAgICAgICAgICMgd2lsbCBiZSBhbGlnbmVkIGJ5IHRoZSB2ZXJ0aWNhbCBhbGlnbmVyCiAgICAgICAgICAgIGlmICggJENPREVfdHlwZSBlcSAnSFNDJyApIHsKCiAgICAgICAgICAgICAgICAjIFNhZmV0eSBDaGVjazogVGhpcyBtdXN0IGJlIGEgbGluZSB3aXRoIG9uZSB0b2tlbiAoYSBjb21tZW50KQogICAgICAgICAgICAgICAgbXkgJHJ0b2tlbl92YXJzID0gJHJMTC0+WyRLZmlyc3RdOwogICAgICAgICAgICAgICAgaWYgKCAkS2ZpcnN0ID09ICRLbGFzdCAmJiAkcnRva2VuX3ZhcnMtPltfVFlQRV9dIGVxICcjJyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBOb3RlIHRoYXQgZXZlbiBpZiB0aGUgZmxhZyAnbm9hZGQtd2hpdGVzcGFjZScgaXMgc2V0LCB3ZQogICAgICAgICAgICAgICAgICAgICMgd2lsbCBtYWtlIGFuIGV4Y2VwdGlvbiBoZXJlIGFuZCBhbGxvdyBhIGJsYW5rIHRvIGJlCiAgICAgICAgICAgICAgICAgICAgIyBpbnNlcnRlZCB0byBwdXNoIHRoZSBjb21tZW50IHRvIHRoZSByaWdodC4gIFdlIGNhbiB0aGluawogICAgICAgICAgICAgICAgICAgICMgb2YgdGhpcyBhcyBhbiBhZGp1c3RtZW50IG9mIGluZGVudGF0aW9uIHJhdGhlciB0aGFuCiAgICAgICAgICAgICAgICAgICAgIyB3aGl0ZXNwYWNlIGJldHdlZW4gdG9rZW5zLiBUaGlzIHdpbGwgYWxzbyBwcmV2ZW50IHRoZQogICAgICAgICAgICAgICAgICAgICMgaGFuZ2luZyBzaWRlIGNvbW1lbnQgZnJvbSBnZXR0aW5nIGNvbnZlcnRlZCB0byBhIGJsb2NrCiAgICAgICAgICAgICAgICAgICAgIyBjb21tZW50IGlmIHdoaXRlc3BhY2UgZ2V0cyBkZWxldGVkLCBhcyBmb3IgZXhhbXBsZSB3aXRoCiAgICAgICAgICAgICAgICAgICAgIyB0aGUgLWV4dHJ1ZGUgYW5kIC1tYW5nbGUgb3B0aW9ucy4KICAgICAgICAgICAgICAgICAgICBteSAkcmNvcHkgPSBjb3B5X3Rva2VuX2FzX3R5cGUoICRydG9rZW5fdmFycywgJ3EnLCAnJyApOwogICAgICAgICAgICAgICAgICAgICRzdG9yZV90b2tlbi0+KCRyY29weSk7CiAgICAgICAgICAgICAgICAgICAgJHJjb3B5ID0gY29weV90b2tlbl9hc190eXBlKCAkcnRva2VuX3ZhcnMsICdiJywgJyAnICk7CiAgICAgICAgICAgICAgICAgICAgJHN0b3JlX3Rva2VuLT4oJHJjb3B5KTsKICAgICAgICAgICAgICAgICAgICAkc3RvcmVfdG9rZW4tPigkcnRva2VuX3ZhcnMpOwogICAgICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGxpbmUgd2FzIG1pcy1tYXJrZWQgYnkgc3ViIHNjYW5fY29tbWVudAogICAgICAgICAgICAgICAgICAgIEZhdWx0KAogICAgICAgICAgICAgICAgICAgICAgICAiUHJvZ3JhbSBidWcuIEEgaGFuZ2luZyBzaWRlIGNvbW1lbnQgaGFzIGJlZW4gbWlzbWFya2VkIgogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQ29weSB0b2tlbnMgdW5jaGFuZ2VkCiAgICAgICAgICAgIGZvcmVhY2ggbXkgJEtLICggJEtmaXJzdCAuLiAkS2xhc3QgKSB7CiAgICAgICAgICAgICAgICAkc3RvcmVfdG9rZW4tPiggJHJMTC0+WyRLS10gKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBuZXh0OwogICAgICAgIH0KCiAgICAgICAgIyBIYW5kbGUgbm9ybWFsIGxpbmUuLgoKICAgICAgICAjIEluc2VydCBhbnkgZXNzZW50aWFsIHdoaXRlc3BhY2UgYmV0d2VlbiBsaW5lcwogICAgICAgICMgaWYgbGFzdCBsaW5lIHdhcyBub3JtYWwgQ09ERS4KICAgICAgICAjIFBhdGNoIGZvciBydCAjMTI1MDEyOiB1c2UgS19wcmV2aW91c19jb2RlIHJhdGhlciB0aGFuICdfbm9uYmxhbmsnCiAgICAgICAgIyBiZWNhdXNlIGNvbW1lbnRzIG1heSBkaXNhcHBlYXIuCiAgICAgICAgbXkgJHR5cGVfbmV4dCAgPSAkckxMLT5bJEtmaXJzdF0tPltfVFlQRV9dOwogICAgICAgIG15ICR0b2tlbl9uZXh0ID0gJHJMTC0+WyRLZmlyc3RdLT5bX1RPS0VOX107CiAgICAgICAgbXkgJEtwICAgICAgICAgPSAkc2VsZi0+S19wcmV2aW91c19jb2RlKCB1bmRlZiwgJHJMTF9uZXcgKTsKICAgICAgICBpZiAoICAgJGxhc3RfbGluZV90eXBlIGVxICdDT0RFJwogICAgICAgICAgICAmJiAkdHlwZV9uZXh0IG5lICdiJwogICAgICAgICAgICAmJiBkZWZpbmVkKCRLcCkgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJHRva2VuX3AgPSAkckxMX25ldy0+WyRLcF0tPltfVE9LRU5fXTsKICAgICAgICAgICAgbXkgJHR5cGVfcCAgPSAkckxMX25ldy0+WyRLcF0tPltfVFlQRV9dOwoKICAgICAgICAgICAgbXkgKCAkdG9rZW5fcHAsICR0eXBlX3BwICk7CiAgICAgICAgICAgIG15ICRLcHAgPSAkc2VsZi0+S19wcmV2aW91c19jb2RlKCAkS3AsICRyTExfbmV3ICk7CiAgICAgICAgICAgIGlmICggZGVmaW5lZCgkS3BwKSApIHsKICAgICAgICAgICAgICAgICR0b2tlbl9wcCA9ICRyTExfbmV3LT5bJEtwcF0tPltfVE9LRU5fXTsKICAgICAgICAgICAgICAgICR0eXBlX3BwICA9ICRyTExfbmV3LT5bJEtwcF0tPltfVFlQRV9dOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJHRva2VuX3BwID0gIjsiOwogICAgICAgICAgICAgICAgJHR5cGVfcHAgID0gJzsnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICBpc19lc3NlbnRpYWxfd2hpdGVzcGFjZSgKICAgICAgICAgICAgICAgICAgICAkdG9rZW5fcHAsICR0eXBlX3BwLCAgICAkdG9rZW5fcCwKICAgICAgICAgICAgICAgICAgICAkdHlwZV9wLCAgICR0b2tlbl9uZXh0LCAkdHlwZV9uZXh0LAogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICMgQ29weSB0aGlzIGZpcnN0IHRva2VuIGFzIGJsYW5rLCBidXQgdXNlIHByZXZpb3VzIGxpbmUgbnVtYmVyCiAgICAgICAgICAgICAgICBteSAkcmNvcHkgPSBjb3B5X3Rva2VuX2FzX3R5cGUoICRyTEwtPlskS2ZpcnN0XSwgJ2InLCAnICcgKTsKICAgICAgICAgICAgICAgICRyY29weS0+W19MSU5FX0lOREVYX10gPQogICAgICAgICAgICAgICAgICAkckxMX25ldy0+Wy0xXS0+W19MSU5FX0lOREVYX107CiAgICAgICAgICAgICAgICAkc3RvcmVfdG9rZW4tPigkcmNvcHkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGxvb3AgdG8gY29weSBhbGwgdG9rZW5zIG9uIHRoaXMgbGluZSwgd2l0aCBhbnkgY2hhbmdlcwogICAgICAgIG15ICR0eXBlX3NlcXVlbmNlOwogICAgICAgIGZvciAoIG15ICRLSyA9ICRLZmlyc3QgOyAkS0sgPD0gJEtsYXN0IDsgJEtLKysgKSB7CiAgICAgICAgICAgICRydG9rZW5fdmFycyA9ICRyTEwtPlskS0tdOwogICAgICAgICAgICBteSAkdG9rZW4gICAgICAgICAgICAgID0gJHJ0b2tlbl92YXJzLT5bX1RPS0VOX107CiAgICAgICAgICAgIG15ICR0eXBlICAgICAgICAgICAgICAgPSAkcnRva2VuX3ZhcnMtPltfVFlQRV9dOwogICAgICAgICAgICBteSAkbGFzdF90eXBlX3NlcXVlbmNlID0gJHR5cGVfc2VxdWVuY2U7CiAgICAgICAgICAgICR0eXBlX3NlcXVlbmNlID0gJHJ0b2tlbl92YXJzLT5bX1RZUEVfU0VRVUVOQ0VfXTsKCiAgICAgICAgICAgICMgSGFuZGxlIGEgYmxhbmsgc3BhY2UgLi4uCiAgICAgICAgICAgIGlmICggJHR5cGUgZXEgJ2InICkgewoKICAgICAgICAgICAgICAgICMgRGVsZXRlIGl0IGlmIG5vdCB3YW50ZWQgYnkgd2hpdGVzcGFjZSBydWxlcwogICAgICAgICAgICAgICAgIyBvciB3ZSBhcmUgZGVsZXRpbmcgYWxsIHdoaXRlc3BhY2UKICAgICAgICAgICAgICAgICMgTm90ZSB0aGF0IHdoaXRlc3BhY2UgZmxhZyBpcyBhIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIGEKICAgICAgICAgICAgICAgICMgd2hpdGUgc3BhY2UgQkVGT1JFIHRoZSB0b2tlbiBpcyBuZWVkZWQKICAgICAgICAgICAgICAgIG5leHQgaWYgKCAkS0sgPj0gJEttYXggKTsgICAgIyBza2lwIHRlcm1pbmFsIGJsYW5rCiAgICAgICAgICAgICAgICBteSAkS25leHQgPSAkS0sgKyAxOwogICAgICAgICAgICAgICAgbXkgJHdzICAgID0gJHJ3aGl0ZXNwYWNlX2ZsYWdzLT5bJEtuZXh0XTsKICAgICAgICAgICAgICAgIGlmICggICAkd3MgPT0gLTEKICAgICAgICAgICAgICAgICAgICB8fCAkck9wdHNfZGVsZXRlX29sZF93aGl0ZXNwYWNlICkKICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogbWF5YmUgc3dpdGNoIHRvIHVzaW5nIF9uZXcKICAgICAgICAgICAgICAgICAgICBteSAkS3AgPSAkc2VsZi0+S19wcmV2aW91c19ub25ibGFuaygkS0spOwogICAgICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzIGRlZmluZWQoJEtwKTsKICAgICAgICAgICAgICAgICAgICBteSAkdG9rZW5fcCA9ICRyTEwtPlskS3BdLT5bX1RPS0VOX107CiAgICAgICAgICAgICAgICAgICAgbXkgJHR5cGVfcCAgPSAkckxMLT5bJEtwXS0+W19UWVBFX107CgogICAgICAgICAgICAgICAgICAgIG15ICggJHRva2VuX3BwLCAkdHlwZV9wcCApOwoKICAgICAgICAgICAgICAgICAgICAjbXkgJEtwcCA9ICRLX3ByZXZpb3VzX25vbmJsYW5rLT4oJEtwKTsKICAgICAgICAgICAgICAgICAgICBteSAkS3BwID0gJHNlbGYtPktfcHJldmlvdXNfbm9uYmxhbmsoJEtwKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQoJEtwcCkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0b2tlbl9wcCA9ICRyTEwtPlskS3BwXS0+W19UT0tFTl9dOwogICAgICAgICAgICAgICAgICAgICAgICAkdHlwZV9wcCAgPSAkckxMLT5bJEtwcF0tPltfVFlQRV9dOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRva2VuX3BwID0gIjsiOwogICAgICAgICAgICAgICAgICAgICAgICAkdHlwZV9wcCAgPSAnOyc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG15ICR0b2tlbl9uZXh0ID0gJHJMTC0+WyRLbmV4dF0tPltfVE9LRU5fXTsKICAgICAgICAgICAgICAgICAgICBteSAkdHlwZV9uZXh0ICA9ICRyTEwtPlskS25leHRdLT5bX1RZUEVfXTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJGRvX25vdF9kZWxldGUgPSBpc19lc3NlbnRpYWxfd2hpdGVzcGFjZSgKICAgICAgICAgICAgICAgICAgICAgICAgJHRva2VuX3BwLCAkdHlwZV9wcCwgICAgJHRva2VuX3AsCiAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlX3AsICAgJHRva2VuX25leHQsICR0eXBlX25leHQsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbmV4dCB1bmxlc3MgKCRkb19ub3RfZGVsZXRlKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIG1ha2UgaXQganVzdCBvbmUgY2hhcmFjdGVyIGlmIGFsbG93ZWQKICAgICAgICAgICAgICAgIGlmICgkck9wdHNfYWRkX3doaXRlc3BhY2UpIHsKICAgICAgICAgICAgICAgICAgICAkcnRva2VuX3ZhcnMtPltfVE9LRU5fXSA9ICcgJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRzdG9yZV90b2tlbi0+KCRydG9rZW5fdmFycyk7CiAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIEhhbmRsZSBhIG5vbmJsYW5rIHRva2VuLi4uCgogICAgICAgICAgICAjIGNoZWNrIGZvciBhIHF3IHF1b3RlCiAgICAgICAgICAgIGlmICggJHR5cGUgZXEgJ3EnICkgewoKICAgICAgICAgICAgICAgICMgdHJpbSBibGFua3MgZnJvbSByaWdodCBvZiBxdyBxdW90ZXMKICAgICAgICAgICAgICAgICMgKFRvIGF2b2lkIHRyaW1taW5nIHF3IHF1b3RlcyB1c2UgLW50cXc7IHRoZSB0b2tlbml6ZXIgaGFuZGxlcwogICAgICAgICAgICAgICAgIyB0aGlzKQogICAgICAgICAgICAgICAgJHRva2VuID1+IHMvXHMqJC8vOwogICAgICAgICAgICAgICAgJHJ0b2tlbl92YXJzLT5bX1RPS0VOX10gPSAkdG9rZW47CiAgICAgICAgICAgICAgICBub3RlX2VtYmVkZGVkX3RhYigpIGlmICggJHRva2VuID1+ICJcdCIgKTsKCiAgICAgICAgICAgICAgICBpZiAoJGluX211bHRpbGluZV9xdykgewoKICAgICAgICAgICAgICAgICAgICAjIElmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIGEgbXVsdGlsaW5lIHF3IC4uCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkaW5fbXVsdGlsaW5lX3F3ID09ICRLSyApIHsKCiAgICAgICAgICAgICAgICAgIyBTcGxpdCBvZmYgdGhlIGNsb3NpbmcgZGVsaW1pdGVyIGNoYXJhY3RlcgogICAgICAgICAgICAgICAgICMgc28gdGhhdCB0aGUgZm9ybWF0dGVyIGNhbiBwdXQgYSBsaW5lIGJyZWFrIHRoZXJlIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICAgICAgICAgICAgICBteSAkcGFydDEgPSAkdG9rZW47CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRwYXJ0MiA9IHN1YnN0ciggJHBhcnQxLCAtMSwgMSwgIiIgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcGFydDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRyY29weSA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlfdG9rZW5fYXNfdHlwZSggJHJ0b2tlbl92YXJzLCAncScsICRwYXJ0MSApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0b3JlX3Rva2VuLT4oJHJjb3B5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0b2tlbiA9ICRwYXJ0MjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRydG9rZW5fdmFycy0+W19UT0tFTl9dID0gJHRva2VuOwoKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAkaW5fbXVsdGlsaW5lX3F3ID0gdW5kZWY7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHN0b3JlIHdpdGhvdXQgcHJlY2VkaW5nIGJsYW5rCiAgICAgICAgICAgICAgICAgICAgICAgICRzdG9yZV90b2tlbi0+KCRydG9rZW5fdmFycyk7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnRpbnVpbmcgYSBtdWx0aWxpbmUgcXcKICAgICAgICAgICAgICAgICAgICAgICAgJHN0b3JlX3Rva2VuLT4oJHJ0b2tlbl92YXJzKTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICMgd2UgYXJlIGVuY291bnRlcmVkIG5ldyBxdyB0b2tlbi4uLnNlZSBpZiBtdWx0aWxpbmUKICAgICAgICAgICAgICAgICAgICBteSAkS19lbmQgPSAkS19lbmRfcS0+KCRLSyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkQUxMT1dfQlJFQUtfTVVMVElMSU5FX1FXICYmICRLX2VuZCAhPSAkS0sgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIFN0YXJ0aW5nIG11bHRpbGluZSBxdy4uLgogICAgICAgICAgICAgICAgICAgICAgICAjIHNldCBmbGFnIGVxdWFsIHRvIHRoZSBlbmRpbmcgSwogICAgICAgICAgICAgICAgICAgICAgICAkaW5fbXVsdGlsaW5lX3F3ID0gJEtfZW5kOwoKICAgICAgICAgICAgICAgICAjIFNwbGl0IG9mZiB0aGUgbGVhZGluZyBwYXJ0CiAgICAgICAgICAgICAgICAgIyBzbyB0aGF0IHRoZSBmb3JtYXR0ZXIgY2FuIHB1dCBhIGxpbmUgYnJlYWsgdGhlcmUgaWYgbmVjZXNzYXJ5CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJHRva2VuID1+IC9eKHF3XHMqLikoLiopJC8gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkcGFydDEgPSAkMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRwYXJ0MiA9ICQyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRwYXJ0MikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRyY29weSA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5X3Rva2VuX2FzX3R5cGUoICRydG9rZW5fdmFycywgJ3EnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFydDEgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RvcmVfdG9rZW5fYW5kX3NwYWNlLT4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyY29weSwgJHJ3aGl0ZXNwYWNlX2ZsYWdzLT5bJEtLXSA9PSBXU19ZRVMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0b2tlbiA9ICRwYXJ0MjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcnRva2VuX3ZhcnMtPltfVE9LRU5fXSA9ICR0b2tlbjsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTZWNvbmQgcGFydCBnb2VzIHdpdGhvdXQgaW50ZXJtZWRpYXRlIGJsYW5rCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0b3JlX3Rva2VuLT4oJHJ0b2tlbl92YXJzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGlzIGlzIGEgbmV3IHNpbmdsZSB0b2tlbiBxdyAtCiAgICAgICAgICAgICAgICAgICAgICAgICMgc3RvcmUgd2l0aCBwb3NzaWJsZSBwcmVjZWRpbmcgYmxhbmsKICAgICAgICAgICAgICAgICAgICAgICAgJHN0b3JlX3Rva2VuX2FuZF9zcGFjZS0+KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJ0b2tlbl92YXJzLCAkcndoaXRlc3BhY2VfZmxhZ3MtPlskS0tdID09IFdTX1lFUwogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCAkdHlwZSBlcSAncScgKQoKICAgICAgICAgICAgIyBNb2RpZnkgY2VydGFpbiB0b2tlbnMgaGVyZSBmb3Igd2hpdGVzcGFjZQogICAgICAgICAgICAjIFRoZSBmb2xsb3dpbmcgaXMgbm90IHlldCBkb25lLCBidXQgY291bGQgYmU6CiAgICAgICAgICAgICMgICBzdWIgKHggeCB4KQogICAgICAgICAgICBlbHNpZiAoICR0eXBlID1+IC9eW3dpdF0kLyApIHsKCiAgICAgICAgICAgICAgICAjIEV4YW1wbGVzOiA8PHNuaXBwZXRzL3NwYWNlMS5pbj4+CiAgICAgICAgICAgICAgICAjIGNoYW5nZSAnJCAgdmFyJyAgdG8gJyR2YXInIGV0YwogICAgICAgICAgICAgICAgIyAgICAgICAgJy0+IG5ldycgIHRvICctPm5ldycKICAgICAgICAgICAgICAgIGlmICggJHRva2VuID1+IC9eKFtcJFwmXCVcKlxAXXxcLVw+KVxzLyApIHsKICAgICAgICAgICAgICAgICAgICAkdG9rZW4gPX4gcy9ccyovL2c7CiAgICAgICAgICAgICAgICAgICAgJHJ0b2tlbl92YXJzLT5bX1RPS0VOX10gPSAkdG9rZW47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBTcGxpdCBpZGVudGlmaWVycyB3aXRoIGxlYWRpbmcgYXJyb3dzLCBpbnNlcnRpbmcgYmxhbmtzIGlmCiAgICAgICAgICAgICAgICAjIG5lY2Vzc2FyeS4gIEl0IGlzIGVhc2llciBhbmQgc2FmZXIgaGVyZSB0aGFuIGluIHRoZQogICAgICAgICAgICAgICAgIyB0b2tlbml6ZXIuICBGb3IgZXhhbXBsZSAnLT5uZXcnIGJlY29tZXMgdHdvIHRva2VucywgJy0+JyBhbmQKICAgICAgICAgICAgICAgICMgJ25ldycgd2l0aCBhIHBvc3NpYmxlIGJsYW5rIGJldHdlZW4uCiAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAjIE5vdGU6IHRoZXJlIGlzIGEgcmVsYXRlZCBwYXRjaCBpbiBzdWIgc2V0X3doaXRlc3BhY2VfZmxhZ3MKICAgICAgICAgICAgICAgIGlmICggJHRva2VuID1+IC9eXC1cPiguKikkLyAmJiAkMSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkdG9rZW5fc2F2ZSA9ICQxOwogICAgICAgICAgICAgICAgICAgIG15ICR0eXBlX3NhdmUgID0gJHR5cGU7CgogICAgICAgICAgICAgICAgICAgICMgc3RvcmUgYSBibGFuayB0byBsZWZ0IG9mIGFycm93IGlmIG5lY2Vzc2FyeQogICAgICAgICAgICAgICAgICAgIG15ICRLcHJldiA9ICRzZWxmLT5LX3ByZXZpb3VzX25vbmJsYW5rKCRLSyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAgIGRlZmluZWQoJEtwcmV2KQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkckxMLT5bJEtwcmV2XS0+W19UWVBFX10gbmUgJ2InCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRyT3B0c19hZGRfd2hpdGVzcGFjZQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkd2FudF9sZWZ0X3NwYWNleyctPid9ID09IFdTX1lFUyApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkcmNvcHkgPQogICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlfdG9rZW5fYXNfdHlwZSggJHJ0b2tlbl92YXJzLCAnYicsICcgJyApOwogICAgICAgICAgICAgICAgICAgICAgICAkc3RvcmVfdG9rZW4tPigkcmNvcHkpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyB0aGVuIHN0b3JlIHRoZSBhcnJvdwogICAgICAgICAgICAgICAgICAgIG15ICRyY29weSA9IGNvcHlfdG9rZW5fYXNfdHlwZSggJHJ0b2tlbl92YXJzLCAnLT4nLCAnLT4nICk7CiAgICAgICAgICAgICAgICAgICAgJHN0b3JlX3Rva2VuLT4oJHJjb3B5KTsKCiAgICAgICAgICAgICAgICAgICAgIyB0aGVuIHJlc2V0IHRoZSBjdXJyZW50IHRva2VuIHRvIGJlIHRoZSByZW1haW5kZXIsCiAgICAgICAgICAgICAgICAgICAgIyBhbmQgcmVzZXQgdGhlIHdoaXRlc3BhY2UgZmxhZyBhY2NvcmRpbmcgdG8gdGhlIGFycm93CiAgICAgICAgICAgICAgICAgICAgJHRva2VuID0gJHJ0b2tlbl92YXJzLT5bX1RPS0VOX10gPSAkdG9rZW5fc2F2ZTsKICAgICAgICAgICAgICAgICAgICAkdHlwZSAgPSAkcnRva2VuX3ZhcnMtPltfVFlQRV9dICA9ICR0eXBlX3NhdmU7CiAgICAgICAgICAgICAgICAgICAgJHN0b3JlX3Rva2VuLT4oJHJ0b2tlbl92YXJzKTsKICAgICAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggJHRva2VuID1+IC8kU1VCX1BBVFRFUk4vICkgewoKICAgICAgICAgICAgICAgICAgICAjIC1zcHAgPSAwIDogbm8gc3BhY2UgYmVmb3JlIG9wZW5pbmcgcHJvdG90eXBlIHBhcmVuCiAgICAgICAgICAgICAgICAgICAgIyAtc3BwID0gMSA6IHN0YWJsZSAoZm9sbG93IGlucHV0IHNwYWNpbmcpCiAgICAgICAgICAgICAgICAgICAgIyAtc3BwID0gMiA6IGFsd2F5cyBzcGFjZSBiZWZvcmUgb3BlbmluZyBwcm90b3R5cGUgcGFyZW4KICAgICAgICAgICAgICAgICAgICBteSAkc3BwID0gJHJPcHRzLT57J3NwYWNlLXByb3RvdHlwZS1wYXJlbid9OwogICAgICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCgkc3BwKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgICAgKCAkc3BwID09IDAgKSB7ICR0b2tlbiA9fiBzL1xzK1woL1woLzsgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRzcHAgPT0gMiApIHsgJHRva2VuID1+IHMvXCgvICgvOyB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIG9uZSBzcGFjZSBtYXgsIGFuZCBubyB0YWJzCiAgICAgICAgICAgICAgICAgICAgJHRva2VuID1+IHMvXHMrLyAvZzsKICAgICAgICAgICAgICAgICAgICAkcnRva2VuX3ZhcnMtPltfVE9LRU5fXSA9ICR0b2tlbjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHRyaW0gaWRlbnRpZmllcnMgb2YgdHJhaWxpbmcgYmxhbmtzIHdoaWNoIGNhbiBvY2N1cgogICAgICAgICAgICAgICAgIyB1bmRlciBzb21lIHVudXN1YWwgY2lyY3Vtc3RhbmNlcywgc3VjaCBhcyBpZiB0aGUKICAgICAgICAgICAgICAgICMgaWRlbnRpZmllciAnd2l0Y2gnIGhhcyB0cmFpbGluZyBibGFua3Mgb24gaW5wdXQgaGVyZToKICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICMgc3ViCiAgICAgICAgICAgICAgICAjIHdpdGNoCiAgICAgICAgICAgICAgICAjICgpICAgIyBwcm90b3R5cGUgbWF5IGJlIG9uIG5ldyBsaW5lIC4uLgogICAgICAgICAgICAgICAgIyAuLi4KICAgICAgICAgICAgICAgIGlmICggJHR5cGUgZXEgJ2knICkgewogICAgICAgICAgICAgICAgICAgICR0b2tlbiA9fiBzL1xzKyQvL2c7CiAgICAgICAgICAgICAgICAgICAgJHJ0b2tlbl92YXJzLT5bX1RPS0VOX10gPSAkdG9rZW47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hhbmdlICdMQUJFTCAgIDonICAgdG8gJ0xBQkVMOicKICAgICAgICAgICAgZWxzaWYgKCAkdHlwZSBlcSAnSicgKSB7CiAgICAgICAgICAgICAgICAkdG9rZW4gPX4gcy9ccysvL2c7CiAgICAgICAgICAgICAgICAkcnRva2VuX3ZhcnMtPltfVE9LRU5fXSA9ICR0b2tlbjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBwYXRjaCB0byBhZGQgc3BhY2UgdG8gc29tZXRoaW5nIGxpa2UgIngxMCIKICAgICAgICAgICAgIyBUaGlzIGF2b2lkcyBoYXZpbmcgdG8gc3BsaXQgdGhpcyB0b2tlbiBpbiB0aGUgcHJlLXRva2VuaXplcgogICAgICAgICAgICBlbHNpZiAoICR0eXBlIGVxICduJyApIHsKICAgICAgICAgICAgICAgIGlmICggJHRva2VuID1+IC9eeFxkKy8gKSB7CiAgICAgICAgICAgICAgICAgICAgJHRva2VuID1+IHMveC94IC87CiAgICAgICAgICAgICAgICAgICAgJHJ0b2tlbl92YXJzLT5bX1RPS0VOX10gPSAkdG9rZW47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgYSBxdW90ZSBmb3IgcHJvYmxlbXMKICAgICAgICAgICAgZWxzaWYgKCAkdHlwZSBlcSAnUScgKSB7CgogICAgICAgICAgICAgICAgIyBUaGlzIGlzIHJlYWR5IHRvIGdvIGJ1dCBpcyBjb21tZW50ZWQgb3V0IGJlY2F1c2UgdGhlcmUgaXMKICAgICAgICAgICAgICAgICMgc3RpbGwgaWRlbnRpY2FsIGxvZ2ljIGluIHN1YiBicmVha19saW5lcy4KICAgICAgICAgICAgICAgICMgJGNoZWNrX1EtPigkS0ssICRLZmlyc3QpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBlbHNpZiAoJHR5cGVfc2VxdWVuY2UpIHsKCiAgICAgICAgICAgICAgICAjICAgICAgICAgICAgICAgIGlmICggJGlzX29wZW5pbmdfdG9rZW57JHRva2VufSApIHsKICAgICAgICAgICAgICAgICMgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggJGlzX2Nsb3NpbmdfdG9rZW57JHRva2VufSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBJbnNlcnQgYSB0ZW50YXRpdmUgbWlzc2luZyBzZW1pY29sb24gaWYgdGhlIG5leHQgdG9rZW4gaXMKICAgICAgICAgICAgICAgICAgICAjIGEgY2xvc2luZyBibG9jayBicmFjZQogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUgZXEgJ30nCiAgICAgICAgICAgICAgICAgICAgICAgICYmICR0b2tlbiBlcSAnfScKCiAgICAgICAgICAgICAgICAgICAgICAgICMgbm90IHByZWNlZGVkIGJ5IGEgJzsnCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRsYXN0X25vbmJsYW5rX3R5cGUgbmUgJzsnCgogICAgICAgICAgICAgICAgICAgIyBhbmQgdGhpcyBpcyBub3QgYSBWRVJTSU9OIHN0bXQgKGlzIGFsbCBvbmUgbGluZSwgd2UgYXJlIG5vdAogICAgICAgICAgICAgICAgICAgIyBpbnNlcnRpbmcgc2VtaWNvbG9ucyBvbiBvbmUtbGluZSBibG9ja3MpCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRDT0RFX3R5cGUgbmUgJ1ZFUicKCiAgICAgICAgICAgICAgICAgICAgICAgICMgYW5kIHdlIGFyZSBhbGxvd2VkIHRvIGFkZCBzZW1pY29sb25zCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRyT3B0cy0+eydhZGQtc2VtaWNvbG9ucyd9CiAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkYWRkX3BoYW50b21fc2VtaWNvbG9uLT4oJEtLKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgU3RvcmUgdGhpcyB0b2tlbiB3aXRoIHBvc3NpYmxlIHByZXZpb3VzIGJsYW5rCiAgICAgICAgICAgICRzdG9yZV90b2tlbl9hbmRfc3BhY2UtPigKICAgICAgICAgICAgICAgICRydG9rZW5fdmFycywgJHJ3aGl0ZXNwYWNlX2ZsYWdzLT5bJEtLXSA9PSBXU19ZRVMKICAgICAgICAgICAgKTsKCiAgICAgICAgfSAgICAjIEVuZCB0b2tlbiBsb29wCiAgICB9ICAgICMgRW5kIGxpbmUgbG9vcAoKICAgICMgUmVzZXQgbWVtb3J5IHRvIGJlIHRoZSBuZXcgYXJyYXkKICAgICRzZWxmLT57ckxMfSA9ICRyTExfbmV3OwogICAgJHNlbGYtPnNldF9yTExfbWF4X2luZGV4KCk7CiAgICAkc2VsZi0+e0tfb3BlbmluZ19jb250YWluZXJ9ICAgPSAkS19vcGVuaW5nX2NvbnRhaW5lcjsKICAgICRzZWxmLT57S19jbG9zaW5nX2NvbnRhaW5lcn0gICA9ICRLX2Nsb3NpbmdfY29udGFpbmVyOwogICAgJHNlbGYtPntLX29wZW5pbmdfdGVybmFyeX0gICAgID0gJEtfb3BlbmluZ190ZXJuYXJ5OwogICAgJHNlbGYtPntLX2Nsb3NpbmdfdGVybmFyeX0gICAgID0gJEtfY2xvc2luZ190ZXJuYXJ5OwogICAgJHNlbGYtPntyS19waGFudG9tX3NlbWljb2xvbnN9ID0gJHJLX3BoYW50b21fc2VtaWNvbG9uczsKCiAgICAjIG1ha2Ugc3VyZSB0aGUgbmV3IGFycmF5IGxvb2tzIG9rYXkKICAgICRzZWxmLT5jaGVja190b2tlbl9hcnJheSgpOwoKICAgICMgcmVzZXQgdGhlIHRva2VuIGxpbWl0cyBvZiBlYWNoIGxpbmUKICAgICRzZWxmLT5yZXN5bmNfbGluZXNfYW5kX3Rva2VucygpOwoKICAgIHJldHVybjsKfQoKeyAgICAjIHNjYW5fY29tbWVudHMKCiAgICBteSAkTGFzdF9saW5lX2hhZF9zaWRlX2NvbW1lbnQ7CiAgICBteSAkSW5fZm9ybWF0X3NraXBwaW5nX3NlY3Rpb247CiAgICBteSAkU2F3X1ZFUlNJT05faW5fdGhpc19maWxlOwoKICAgIHN1YiBzY2FuX2NvbW1lbnRzIHsKICAgICAgICBteSAkc2VsZiAgID0gc2hpZnQ7CiAgICAgICAgbXkgJHJsaW5lcyA9ICRzZWxmLT57cmxpbmVzfTsKCiAgICAgICAgJExhc3RfbGluZV9oYWRfc2lkZV9jb21tZW50ID0gdW5kZWY7CiAgICAgICAgJEluX2Zvcm1hdF9za2lwcGluZ19zZWN0aW9uID0gdW5kZWY7CiAgICAgICAgJFNhd19WRVJTSU9OX2luX3RoaXNfZmlsZSAgID0gdW5kZWY7CgogICAgICAgICMgTG9vcCBvdmVyIGFsbCBsaW5lcwogICAgICAgIGZvcmVhY2ggbXkgJGxpbmVfb2ZfdG9rZW5zICggQHskcmxpbmVzfSApIHsKICAgICAgICAgICAgbXkgJGxpbmVfdHlwZSA9ICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3R5cGV9OwogICAgICAgICAgICBuZXh0IHVubGVzcyAoICRsaW5lX3R5cGUgZXEgJ0NPREUnICk7CiAgICAgICAgICAgIG15ICRDT0RFX3R5cGUgPSAkc2VsZi0+Z2V0X0NPREVfdHlwZSgkbGluZV9vZl90b2tlbnMpOwogICAgICAgICAgICAkbGluZV9vZl90b2tlbnMtPntfY29kZV90eXBlfSA9ICRDT0RFX3R5cGU7CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgZ2V0X0NPREVfdHlwZSB7CiAgICAgICAgbXkgKCAkc2VsZiwgJGxpbmVfb2ZfdG9rZW5zICkgPSBAXzsKCiAgICAgICAgIyBXZSBhcmUgbG9va2luZyBhdCBhIGxpbmUgb2YgY29kZSBhbmQgc2V0dGluZyBhIGZsYWcgdG8KICAgICAgICAjIGRlc2NyaWJlIGFueSBzcGVjaWFsIHByb2Nlc3NpbmcgdGhhdCBpdCByZXF1aXJlcwoKICAgICAgICAjIFBvc3NpYmxlIENPREVfdHlwZXMgYXJlIGFzIGZvbGxvd3MuCiAgICAgICAgIyAnQkwnID0gQmxhbmsgTGluZQogICAgICAgICMgJ1ZCJyA9IFZlcmJhdGltIC0gbGluZSBnb2VzIG91dCB2ZXJiYXRpbQogICAgICAgICMgJ0lPJyA9IEluZGVudCBPbmx5IC0gbGluZSBnb2VzIG91dCB1bmNoYW5nZWQgZXhjZXB0IGZvciBpbmRlbnRhdGlvbgogICAgICAgICMgJ05JTicgPSBObyBJbnRlcm5hbCBOZXdsaW5lcyAtIGxpbmUgZG9lcyBub3QgZ2V0IGJyb2tlbgogICAgICAgICMgJ0hTQyc9SGFuZ2luZyBTaWRlIENvbW1lbnQgLSBmaXggdGhpcyBoYW5naW5nIHNpZGUgY29tbWVudAogICAgICAgICMgJ0JDJz1CbG9jayBDb21tZW50IC0gYW4gb3JkaW5hcnkgZnVsbCBsaW5lIGNvbW1lbnQKICAgICAgICAjICdTQkMnPVN0YXRpYyBCbG9jayBDb21tZW50IC0gYSBibG9jayBjb21tZW50IHdoaWNoIGRvZXMgbm90IGdldAogICAgICAgICMgICAgICBpbmRlbnRlZAogICAgICAgICMgJ1NCQ1gnPVN0YXRpYyBCbG9jayBDb21tZW50IFdpdGhvdXQgTGVhZGluZyBTcGFjZQogICAgICAgICMgJ0RFTCc9RGVsZXRlIHRoaXMgbGluZQogICAgICAgICMgJ1ZFUic9VkVSU0lPTiBzdGF0ZW1lbnQKICAgICAgICAjICcnIG9yICh1bmRlZmluZWQpIC0gbm8gcmVzdHJ1Y3Rpb25zCgogICAgICAgIG15ICRyTEwgICAgPSAkc2VsZi0+e3JMTH07CiAgICAgICAgbXkgJEtsaW1pdCA9ICRzZWxmLT57S2xpbWl0fTsKCiAgICAgICAgbXkgJENPREVfdHlwZSAgICAgICAgICAgID0gJHJPcHRzLT57J2luZGVudC1vbmx5J30gPyAnSU8nIDogIiI7CiAgICAgICAgbXkgJG5vX2ludGVybmFsX25ld2xpbmVzID0gMSAtICRyT3B0c19hZGRfbmV3bGluZXM7CiAgICAgICAgaWYgKCAhJENPREVfdHlwZSAmJiAkbm9faW50ZXJuYWxfbmV3bGluZXMgKSB7ICRDT0RFX3R5cGUgPSAnTklOJyB9CgogICAgICAgICMgZXh0cmFjdCB3aGF0IHdlIG5lZWQgZm9yIHRoaXMgbGluZS4uCgogICAgICAgICMgR2xvYmFsIHZhbHVlIGZvciBlcnJvciBtZXNzYWdlczoKICAgICAgICAkaW5wdXRfbGluZV9udW1iZXIgPSAkbGluZV9vZl90b2tlbnMtPntfbGluZV9udW1iZXJ9OwoKICAgICAgICBteSAkcktfcmFuZ2UgPSAkbGluZV9vZl90b2tlbnMtPntfcktfcmFuZ2V9OwogICAgICAgIG15ICggJEtmaXJzdCwgJEtsYXN0ICkgPSBAeyRyS19yYW5nZX07CiAgICAgICAgbXkgJGptYXggPSAtMTsKICAgICAgICBpZiAoIGRlZmluZWQoJEtmaXJzdCkgKSB7ICRqbWF4ID0gJEtsYXN0IC0gJEtmaXJzdCB9CiAgICAgICAgbXkgJGlucHV0X2xpbmUgICAgICAgICA9ICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3RleHR9OwogICAgICAgIG15ICRpbl9jb250aW51ZWRfcXVvdGUgPSBteSAkc3RhcnRpbmdfaW5fcXVvdGUgPQogICAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X3N0YXJ0aW5nX2luX3F1b3RlfTsKICAgICAgICBteSAkaW5fcXVvdGUgICAgICAgID0gJGxpbmVfb2ZfdG9rZW5zLT57X2VuZGluZ19pbl9xdW90ZX07CiAgICAgICAgbXkgJGVuZGluZ19pbl9xdW90ZSA9ICRpbl9xdW90ZTsKICAgICAgICBteSAkZ3Vlc3NlZF9pbmRlbnRhdGlvbl9sZXZlbCA9CiAgICAgICAgICAkbGluZV9vZl90b2tlbnMtPntfZ3Vlc3NlZF9pbmRlbnRhdGlvbl9sZXZlbH07CgogICAgICAgIG15ICRpc19zdGF0aWNfYmxvY2tfY29tbWVudCA9IDA7CgogICAgICAgICMgSGFuZGxlIGEgY29udGludWVkIHF1b3RlLi4KICAgICAgICBpZiAoJGluX2NvbnRpbnVlZF9xdW90ZSkgewoKICAgICAgICAgICAgIyBBIGxpbmUgd2hpY2ggaXMgZW50aXJlbHkgYSBxdW90ZSBvciBwYXR0ZXJuIG11c3QgZ28gb3V0CiAgICAgICAgICAgICMgdmVyYmF0aW0uICBOb3RlOiB0aGUgXG4gaXMgY29udGFpbmVkIGluICRpbnB1dF9saW5lLgogICAgICAgICAgICBpZiAoICRqbWF4IDw9IDAgKSB7CiAgICAgICAgICAgICAgICBpZiAoICggJGlucHV0X2xpbmUgPX4gIlx0IiApICkgewogICAgICAgICAgICAgICAgICAgIG5vdGVfZW1iZWRkZWRfdGFiKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkTGFzdF9saW5lX2hhZF9zaWRlX2NvbW1lbnQgPSAwOwogICAgICAgICAgICAgICAgcmV0dXJuICdWQic7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRpc19ibG9ja19jb21tZW50ID0KICAgICAgICAgICggJGptYXggPT0gMCAmJiAkckxMLT5bJEtmaXJzdF0tPltfVFlQRV9dIGVxICcjJyApOwoKICAgICAgICAjIFdyaXRlIGxpbmUgdmVyYmF0aW0gaWYgd2UgYXJlIGluIGEgZm9ybWF0dGluZyBza2lwIHNlY3Rpb24KICAgICAgICBpZiAoJEluX2Zvcm1hdF9za2lwcGluZ19zZWN0aW9uKSB7CiAgICAgICAgICAgICRMYXN0X2xpbmVfaGFkX3NpZGVfY29tbWVudCA9IDA7CgogICAgICAgICAgICAjIE5vdGU6IGV4dHJhIHNwYWNlIGFwcGVuZGVkIHRvIGNvbW1lbnQgc2ltcGxpZmllcyBwYXR0ZXJuIG1hdGNoaW5nCiAgICAgICAgICAgIGlmICggJGlzX2Jsb2NrX2NvbW1lbnQKICAgICAgICAgICAgICAgICYmICggJHJMTC0+WyRLZmlyc3RdLT5bX1RPS0VOX10gLiAiICIgKSA9fgogICAgICAgICAgICAgICAgLyRmb3JtYXRfc2tpcHBpbmdfcGF0dGVybl9lbmQvbyApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRJbl9mb3JtYXRfc2tpcHBpbmdfc2VjdGlvbiA9IDA7CiAgICAgICAgICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCJFeGl0aW5nIGZvcm1hdHRpbmcgc2tpcCBzZWN0aW9uXG4iKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gJ0ZTJzsKICAgICAgICB9CgogICAgICAgICMgU2VlIGlmIHdlIGFyZSBlbnRlcmluZyBhIGZvcm1hdHRpbmcgc2tpcCBzZWN0aW9uCiAgICAgICAgaWYgKCAgICRyT3B0c19mb3JtYXRfc2tpcHBpbmcKICAgICAgICAgICAgJiYgJGlzX2Jsb2NrX2NvbW1lbnQKICAgICAgICAgICAgJiYgKCAkckxMLT5bJEtmaXJzdF0tPltfVE9LRU5fXSAuICIgIiApID1+CiAgICAgICAgICAgIC8kZm9ybWF0X3NraXBwaW5nX3BhdHRlcm5fYmVnaW4vbyApCiAgICAgICAgewogICAgICAgICAgICAkSW5fZm9ybWF0X3NraXBwaW5nX3NlY3Rpb24gPSAxOwogICAgICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCJFbnRlcmluZyBmb3JtYXR0aW5nIHNraXAgc2VjdGlvblxuIik7CiAgICAgICAgICAgICRMYXN0X2xpbmVfaGFkX3NpZGVfY29tbWVudCA9IDA7CiAgICAgICAgICAgIHJldHVybiAnRlMnOwogICAgICAgIH0KCiAgICAgICAgIyBpZ25vcmUgdHJhaWxpbmcgYmxhbmsgdG9rZW5zICh0aGV5IHdpbGwgZ2V0IGRlbGV0ZWQgbGF0ZXIpCiAgICAgICAgaWYgKCAkam1heCA+IDAgJiYgJHJMTC0+WyRLbGFzdF0tPltfVFlQRV9dIGVxICdiJyApIHsKICAgICAgICAgICAgJGptYXgtLTsKICAgICAgICB9CgogICAgICAgICMgSGFuZGxlIGEgYmxhbmsgbGluZS4uCiAgICAgICAgaWYgKCAkam1heCA8IDAgKSB7CiAgICAgICAgICAgICRMYXN0X2xpbmVfaGFkX3NpZGVfY29tbWVudCA9IDA7CiAgICAgICAgICAgIHJldHVybiAnQkwnOwogICAgICAgIH0KCiAgICAgICAgIyBzZWUgaWYgdGhpcyBpcyBhIHN0YXRpYyBibG9jayBjb21tZW50IChzdGFydHMgd2l0aCAjIyBieSBkZWZhdWx0KQogICAgICAgIG15ICRpc19zdGF0aWNfYmxvY2tfY29tbWVudF93aXRob3V0X2xlYWRpbmdfc3BhY2UgPSAwOwogICAgICAgIGlmICggICAkaXNfYmxvY2tfY29tbWVudAogICAgICAgICAgICAmJiAkck9wdHMtPnsnc3RhdGljLWJsb2NrLWNvbW1lbnRzJ30KICAgICAgICAgICAgJiYgJGlucHV0X2xpbmUgPX4gLyRzdGF0aWNfYmxvY2tfY29tbWVudF9wYXR0ZXJuL28gKQogICAgICAgIHsKICAgICAgICAgICAgJGlzX3N0YXRpY19ibG9ja19jb21tZW50ID0gMTsKICAgICAgICAgICAgJGlzX3N0YXRpY19ibG9ja19jb21tZW50X3dpdGhvdXRfbGVhZGluZ19zcGFjZSA9CiAgICAgICAgICAgICAgc3Vic3RyKCAkaW5wdXRfbGluZSwgMCwgMSApIGVxICcjJzsKICAgICAgICB9CgogICAgICAgICMgQ2hlY2sgZm9yIGNvbW1lbnRzIHdoaWNoIGFyZSBsaW5lIGRpcmVjdGl2ZXMKICAgICAgICAjIFRyZWF0IGV4YWN0bHkgYXMgc3RhdGljIGJsb2NrIGNvbW1lbnRzIHdpdGhvdXQgbGVhZGluZyBzcGFjZQogICAgICAgICMgcmVmZXJlbmNlOiBwZXJsc3luLCBuZWFyIGVuZCwgc2VjdGlvbiBQbGFpbiBPbGQgQ29tbWVudHMgKE5vdCEpCiAgICAgICAgIyBleGFtcGxlOiAnIyBsaW5lIDQyICJuZXdfZmlsZW5hbWUucGx4IicKICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICRpc19ibG9ja19jb21tZW50CiAgICAgICAgICAgICYmICRpbnB1dF9saW5lID1+IC9eXCMgICBccyoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgXHMrIChcZCspICAgXHMqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPzpccygiPykoW14iXSspXDIpPyBccyoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQveAogICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJGlzX3N0YXRpY19ibG9ja19jb21tZW50ICAgICAgICAgICAgICAgICAgICAgICA9IDE7CiAgICAgICAgICAgICRpc19zdGF0aWNfYmxvY2tfY29tbWVudF93aXRob3V0X2xlYWRpbmdfc3BhY2UgPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBsb29rIGZvciBoYW5naW5nIHNpZGUgY29tbWVudAogICAgICAgIGlmICgKICAgICAgICAgICAgICAgJGlzX2Jsb2NrX2NvbW1lbnQKICAgICAgICAgICAgJiYgJExhc3RfbGluZV9oYWRfc2lkZV9jb21tZW50ICAjIGxhc3QgbGluZSBoYWQgc2lkZSBjb21tZW50CiAgICAgICAgICAgICYmICRpbnB1dF9saW5lID1+IC9eXHMvICAgICAgICAgIyB0aGVyZSBpcyBzb21lIGxlYWRpbmcgc3BhY2UKICAgICAgICAgICAgJiYgISRpc19zdGF0aWNfYmxvY2tfY29tbWVudCAgICAjIGRvIG5vdCBtYWtlIHN0YXRpYyBjb21tZW50IGhhbmdpbmcKICAgICAgICAgICAgJiYgJHJPcHRzLT57J2hhbmdpbmctc2lkZS1jb21tZW50cyd9ICAgICMgdXNlciBpcyBhbGxvd2luZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBoYW5naW5nIHNpZGUgY29tbWVudHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbGlrZSB0aGlzCiAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkTGFzdF9saW5lX2hhZF9zaWRlX2NvbW1lbnQgPSAxOwogICAgICAgICAgICByZXR1cm4gJ0hTQyc7CiAgICAgICAgfQoKICAgICAgICAjIHJlbWVtYmVyIGlmIHRoaXMgbGluZSBoYXMgYSBzaWRlIGNvbW1lbnQKICAgICAgICAkTGFzdF9saW5lX2hhZF9zaWRlX2NvbW1lbnQgPQogICAgICAgICAgKCAkam1heCA+IDAgJiYgJHJMTC0+WyRLbGFzdF0tPltfVFlQRV9dIGVxICcjJyApOwoKICAgICAgICAjIEhhbmRsZSBhIGJsb2NrIChmdWxsLWxpbmUpIGNvbW1lbnQuLgogICAgICAgIGlmICgkaXNfYmxvY2tfY29tbWVudCkgewoKICAgICAgICAgICAgaWYgKCAkck9wdHMtPnsnZGVsZXRlLWJsb2NrLWNvbW1lbnRzJ30gKSB7IHJldHVybiAnREVMJyB9CgogICAgICAgICAgICAjIFRSSU0gQ09NTUVOVFMgLS0gVGhpcyBjb3VsZCBiZSB0dXJuZWQgb2ZmIGFzIGEgb3B0aW9uCiAgICAgICAgICAgICRyTEwtPlskS2ZpcnN0XS0+W19UT0tFTl9dID1+IHMvXHMqJC8vOyAgICAjIHRyaW0gcmlnaHQgZW5kCgogICAgICAgICAgICBpZiAoJGlzX3N0YXRpY19ibG9ja19jb21tZW50X3dpdGhvdXRfbGVhZGluZ19zcGFjZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICdTQkNYJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoJGlzX3N0YXRpY19ibG9ja19jb21tZW50KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJ1NCQyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJ0JDJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCj1wb2QKICAgICAgICAjIE5PVEU6IFRoaXMgZG9lcyBub3Qgd29yayB5ZXQuIFZlcnNpb24gaW4gcHJpbnQtbGluZS1vZi10b2tlbnMgCiAgICAgICAgIyBpcyBTdGlsbCB1c2VkIHVudGlsIGZpeGVkCgogICAgICAgICMgY29tcGFyZSBpbnB1dC9vdXRwdXQgaW5kZW50YXRpb24gZXhjZXB0IGZvciBjb250aW51YXRpb24gbGluZXMKICAgICAgICAjIChiZWNhdXNlIHRoZXkgaGF2ZSBhbiB1bmtub3duIGFtb3VudCBvZiBpbml0aWFsIGJsYW5rIHNwYWNlKQogICAgICAgICMgYW5kIGxpbmVzIHdoaWNoIGFyZSBxdW90ZXMgKGJlY2F1c2UgdGhleSBtYXkgaGF2ZSBiZWVuIG91dGRlbnRlZCkKICAgICAgICAjIE5vdGU6IHRoaXMgdGVzdCBpcyBwbGFjZWQgaGVyZSBiZWNhdXNlIHdlIGtub3cgdGhlIGNvbnRpbnVhdGlvbiBmbGFnCiAgICAgICAgIyBhdCB0aGlzIHBvaW50LCB3aGljaCBhbGxvd3MgdXMgdG8gYXZvaWQgbm9uLW1lYW5pbmdmdWwgY2hlY2tzLgogICAgICAgIG15ICRzdHJ1Y3R1cmFsX2luZGVudGF0aW9uX2xldmVsID0gJHJMTC0+WyRLZmlyc3RdLT5bX0xFVkVMX107CiAgICAgICAgY29tcGFyZV9pbmRlbnRhdGlvbl9sZXZlbHMoICRndWVzc2VkX2luZGVudGF0aW9uX2xldmVsLAogICAgICAgICAgICAkc3RydWN0dXJhbF9pbmRlbnRhdGlvbl9sZXZlbCApCiAgICAgICAgICB1bmxlc3MgKCAkckxMLT5bJEtmaXJzdF0tPltfQ0lfTEVWRUxfXSA+IDAKICAgICAgICAgICAgfHwgJGd1ZXNzZWRfaW5kZW50YXRpb25fbGV2ZWwgPT0gMAogICAgICAgICAgICAmJiAkckxMLT5bJEtmaXJzdF0tPltfVFlQRV9dIGVxICdRJyApOwo9Y3V0CgogICAgICAgICMgICBQYXRjaCBuZWVkZWQgZm9yIE1ha2VNYWtlci4gIERvIG5vdCBicmVhayBhIHN0YXRlbWVudAogICAgICAgICMgICBpbiB3aGljaCAkVkVSU0lPTiBtYXkgYmUgY2FsY3VsYXRlZC4gIFNlZSBNYWtlTWFrZXIucG07CiAgICAgICAgIyAgIHRoaXMgaXMgYmFzZWQgb24gdGhlIGNvZGluZyBpbiBpdC4KICAgICAgICAjICAgVGhlIGZpcnN0IGxpbmUgb2YgYSBmaWxlIHRoYXQgbWF0Y2hlcyB0aGlzIHdpbGwgYmUgZXZhbCdkOgogICAgICAgICMgICAgICAgLyhbXCQqXSkoKFtcd1w6XCddKilcYlZFUlNJT04pXGIuKlw9LwogICAgICAgICMgICBFeGFtcGxlczoKICAgICAgICAjICAgICAqVkVSU0lPTiA9IFwnMS4wMSc7CiAgICAgICAgIyAgICAgKCAkVkVSU0lPTiApID0gJyRSZXZpc2lvbjogMS43NCAkICcgPX4gL1wkUmV2aXNpb246XHMrKFteXHNdKykvOwogICAgICAgICMgICBXZSB3aWxsIHBhc3Mgc3VjaCBhIGxpbmUgc3RyYWlnaHQgdGhyb3VnaCB3aXRob3V0IGJyZWFraW5nCiAgICAgICAgIyAgIGl0IHVubGVzcyAtbnB2bCBpcyB1c2VkLgoKICAgICAgICAjICAgUGF0Y2ggZm9yIHByb2JsZW0gcmVwb3J0ZWQgaW4gUlQgIzgxODY2LCB3aGVyZSBmaWxlcwogICAgICAgICMgICBoYWQgYmVlbiBmbGF0dGVuZWQgaW50byBhIHNpbmdsZSBsaW5lIGFuZCBjb3VsZG4ndCBiZQogICAgICAgICMgICB0aWRpZWQgd2l0aG91dCAtbnB2bC4gIFRoZXJlIGFyZSB0d28gcGFydHMgdG8gdGhpcyBwYXRjaDoKICAgICAgICAjICAgRmlyc3QsIGl0IGlzIG5vdCBkb25lIGZvciBhIHJlYWxseSBsb25nIGxpbmUgKDgwIHRva2VucyBmb3Igbm93KS4KICAgICAgICAjICAgU2Vjb25kLCB3ZSB3aWxsIG9ubHkgYWxsb3cgdXAgdG8gb25lIHNlbWljb2xvbgogICAgICAgICMgICBiZWZvcmUgdGhlIFZFUlNJT04uICBXZSBuZWVkIHRvIGFsbG93IGF0IGxlYXN0IG9uZSBzZW1pY29sb24KICAgICAgICAjICAgZm9yIHN0YXRlbWVudHMgbGlrZSB0aGlzOgogICAgICAgICMgICAgICByZXF1aXJlIEV4cG9ydGVyOyAgb3VyICRWRVJTSU9OID0gJEV4cG9ydGVyOjpWRVJTSU9OOwogICAgICAgICMgICB3aGVyZSBib3RoIHN0YXRlbWVudHMgbXVzdCBiZSBvbiBhIHNpbmdsZSBsaW5lIGZvciBNYWtlTWFrZXIKCiAgICAgICAgbXkgJGlzX1ZFUlNJT05fc3RhdGVtZW50ID0gMDsKICAgICAgICBpZiAoICAhJFNhd19WRVJTSU9OX2luX3RoaXNfZmlsZQogICAgICAgICAgICAmJiAkam1heCA8IDgwCiAgICAgICAgICAgICYmICRpbnB1dF9saW5lID1+CiAgICAgICAgICAgIC9eW147XSo7P1teO10qKFtcJCpdKSgoW1x3XDpcJ10qKVxiVkVSU0lPTilcYi4qXD0vICkKICAgICAgICB7CiAgICAgICAgICAgICRTYXdfVkVSU0lPTl9pbl90aGlzX2ZpbGUgPSAxOwogICAgICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCJwYXNzaW5nIFZFUlNJT04gbGluZTsgLW5wdmwgZGVhY3RpdmF0ZXNcbiIpOwogICAgICAgICAgICAkQ09ERV90eXBlID0gJ1ZFUic7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkQ09ERV90eXBlOwogICAgfQp9CgpzdWIgZmluZF9uZXN0ZWRfcGFpcnMgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKCiAgICBteSAkckxMID0gJHNlbGYtPntyTEx9OwogICAgcmV0dXJuIHVubGVzcyAoIGRlZmluZWQoJHJMTCkgJiYgQHskckxMfSApOwoKICAgICMgV2UgZGVmaW5lIGFuIGFycmF5IG9mIHBhaXJzIG9mIG5lc3RlZCBjb250YWluZXJzCiAgICBteSBAbmVzdGVkX3BhaXJzOwoKICAgICMgV2UgYWxzbyBzZXQgdGhlIGZvbGxvd2luZyBoYXNoIHZhbHVlcyB0byBpZGVudGlmeSBjb250YWluZXIgcGFpcnMgZm9yCiAgICAjIHdoaWNoIHRoZSBvcGVuaW5nIGFuZCBjbG9zaW5nIHRva2VucyBhcmUgYWRqYWNlbnQgaW4gdGhlIHRva2VuIHN0cmVhbToKICAgICMgJHJwYWlyZWRfdG9faW5uZXJfY29udGFpbmVyLT57JHNlcW5vX291dH09JHNlcW5vX2luIHdoZXJlICRzZXFub19vdXQgYW5kCiAgICAjICRzZXFub19pbiBhcmUgdGhlIHNlcWVuY2UgbnVtYmVycyBvZiB0aGUgb3V0ZXIgYW5kIGlubmVyIGNvbnRhaW5lcnMgb2YKICAgICMgdGhlIHBhaXIgV2UgbmVlZCB0aGVzZSBsYXRlciB0byBkZWNpZGUgaWYgd2UgY2FuIGluc2VydCBhIG1pc3NpbmcKICAgICMgc2VtaWNvbG9uCiAgICBteSAkcnBhaXJlZF90b19pbm5lcl9jb250YWluZXIgPSB7fTsKCiAgICAjIFRoaXMgbG9jYWwgaGFzaCByZW1lbWJlcnMgaWYgYW4gb3V0ZXIgY29udGFpbmVyIGhhcyBhIGNsb3NlIGZvbGxvd2luZwogICAgIyBpbm5lciBjb250YWluZXI7CiAgICAjIFRoZSBrZXkgaXMgdGhlIG91dGVyIHNlcXVlbmNlIG51bWJlcgogICAgIyBUaGUgdmFsdWUgaXMgdGhlIHRva2VuX2hhc2ggb2YgdGhlIGlubmVyIGNvbnRhaW5lcgoKICAgIG15ICVoYXNfY2xvc2VfZm9sbG93aW5nX29wZW5pbmc7CgogICAgIyBOYW1lcyBvZiBjYWxsaW5nIHJvdXRpbmVzIGNhbiBlaXRoZXIgYmUgbWFya2VkIGFzICdpJyBvciAndycsCiAgICAjIGFuZCB0aGV5IG1heSBpbnZva2UgYSBzdWIgY2FsbCB3aXRoIGFuICctPicuIFdlIHdpbGwgY29uc2lkZXIKICAgICMgYW55IGNvbnNlY3V0aXZlIHN0cmluZyBvZiBzdWNoIHR5cGVzIGFzIGEgc2luZ2xlIHVuaXQgd2hlbiBtYWtpbmcKICAgICMgd2VsZCBkZWNpc2lvbnMuICBXZSBhbHNvIGFsbG93IGEgbGVhZGluZyAhCiAgICBteSAkaXNfbmFtZV90eXBlID0gewogICAgICAgICdpJyAgPT4gMSwKICAgICAgICAndycgID0+IDEsCiAgICAgICAgJ1UnICA9PiAxLAogICAgICAgICctPicgPT4gMSwKICAgICAgICAnIScgID0+IDEsCiAgICB9OwoKICAgIG15ICRpc19uYW1lID0gc3ViIHsKICAgICAgICBteSAkdHlwZSA9IHNoaWZ0OwogICAgICAgIHJldHVybiAkdHlwZSAmJiAkaXNfbmFtZV90eXBlLT57JHR5cGV9OwogICAgfTsKCiAgICBteSAkbGFzdF9jb250YWluZXI7CiAgICBteSAkbGFzdF9sYXN0X2NvbnRhaW5lcjsKICAgIG15ICRsYXN0X25vbmJsYW5rX3Rva2VuX3ZhcnM7CiAgICBteSAkbGFzdF9jb3VudDsKCiAgICBteSAkbm9uYmxhbmtfdG9rZW5fY291bnQgPSAwOwoKICAgICMgbG9vcCBvdmVyIGFsbCB0b2tlbnMKICAgIGZvcmVhY2ggbXkgJHJ0b2tlbl92YXJzICggQHskckxMfSApIHsKCiAgICAgICAgbXkgJHR5cGUgPSAkcnRva2VuX3ZhcnMtPltfVFlQRV9dOwoKICAgICAgICBuZXh0IGlmICggJHR5cGUgZXEgJ2InICk7CgogICAgICAgICMgbG9uZyBpZGVudGlmaWVyLWxpa2UgaXRlbXMgYXJlIGNvdW50ZWQgYXMgYSBzaW5nbGUgaXRlbQogICAgICAgICRub25ibGFua190b2tlbl9jb3VudCsrCiAgICAgICAgICB1bmxlc3MgKCAkaXNfbmFtZS0+KCR0eXBlKQogICAgICAgICAgICAmJiAkaXNfbmFtZS0+KCAkbGFzdF9ub25ibGFua190b2tlbl92YXJzLT5bX1RZUEVfXSApICk7CgogICAgICAgIG15ICR0eXBlX3NlcXVlbmNlID0gJHJ0b2tlbl92YXJzLT5bX1RZUEVfU0VRVUVOQ0VfXTsKICAgICAgICBpZiAoJHR5cGVfc2VxdWVuY2UpIHsKCiAgICAgICAgICAgIG15ICR0b2tlbiA9ICRydG9rZW5fdmFycy0+W19UT0tFTl9dOwoKICAgICAgICAgICAgaWYgKCAkaXNfb3BlbmluZ190b2tlbnskdG9rZW59ICkgewoKICAgICAgICAgICAgICAgICMgZm9sbG93aW5nIHByZXZpb3VzIG9wZW5pbmcgdG9rZW4gLi4uCiAgICAgICAgICAgICAgICBpZiAoICAgJGxhc3RfY29udGFpbmVyCiAgICAgICAgICAgICAgICAgICAgJiYgJGlzX29wZW5pbmdfdG9rZW57ICRsYXN0X2NvbnRhaW5lci0+W19UT0tFTl9dIH0gKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAjIGFkamFjZW50IHRvIHRoaXMgb25lCiAgICAgICAgICAgICAgICAgICAgbXkgJHRva19kaWZmID0gJG5vbmJsYW5rX3Rva2VuX2NvdW50IC0gJGxhc3RfY291bnQ7CgogICAgICAgICAgICAgICAgICAgIG15ICRsYXN0X3RvayA9ICRsYXN0X25vbmJsYW5rX3Rva2VuX3ZhcnMtPltfVE9LRU5fXTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAgICR0b2tfZGlmZiA9PSAxCiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICR0b2tfZGlmZiA9PSAyICYmICRsYXN0X2NvbnRhaW5lci0+W19UT0tFTl9dIGVxICcoJyApCiAgICAgICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyByZW1lbWJlciB0aGlzIHBhaXIuLi4KICAgICAgICAgICAgICAgICAgICAgICAgbXkgJG91dGVyX3NlcW5vID0gJGxhc3RfY29udGFpbmVyLT5bX1RZUEVfU0VRVUVOQ0VfXTsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGlubmVyX3NlcW5vID0gJHR5cGVfc2VxdWVuY2U7CiAgICAgICAgICAgICAgICAgICAgICAgICRoYXNfY2xvc2VfZm9sbG93aW5nX29wZW5pbmd7JG91dGVyX3NlcW5vfSA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgJHJ0b2tlbl92YXJzOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzaWYgKCAkaXNfY2xvc2luZ190b2tlbnskdG9rZW59ICkgewoKICAgICAgICAgICAgICAgICMgaWYgdGhlIGNvcnJlc3BvbmRpbmcgb3BlbmluZyB0b2tlbiBoYWQgYW4gYWRqYWNlbnQgb3BlbmluZwogICAgICAgICAgICAgICAgaWYgKCAgICRoYXNfY2xvc2VfZm9sbG93aW5nX29wZW5pbmd7JHR5cGVfc2VxdWVuY2V9CiAgICAgICAgICAgICAgICAgICAgJiYgJGlzX2Nsb3NpbmdfdG9rZW57ICRsYXN0X2NvbnRhaW5lci0+W19UT0tFTl9dIH0KICAgICAgICAgICAgICAgICAgICAmJiAkaGFzX2Nsb3NlX2ZvbGxvd2luZ19vcGVuaW5neyR0eXBlX3NlcXVlbmNlfQogICAgICAgICAgICAgICAgICAgIC0+W19UWVBFX1NFUVVFTkNFX10gPT0gJGxhc3RfY29udGFpbmVyLT5bX1RZUEVfU0VRVUVOQ0VfXSApCiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICMgVGhlIGNsb3Npbmcgd2VsZCB0b2tlbnMgbXVzdCBiZSBhZGphY2VudAogICAgICAgICAgICAgICAgICAgICMgTk9URTogc28gaW50ZXJtZWRpYXRlIGNvbW1hcyBhbmQgc2VtaWNvbG9ucwogICAgICAgICAgICAgICAgICAgICMgY2FuIGN1cnJlbnRseSBibG9jayBhIHdlbGQuICBUaGlzIGlzIHNvbWV0aGluZwogICAgICAgICAgICAgICAgICAgICMgdGhhdCBjb3VsZCBiZSBmaXhlZCBpbiB0aGUgZnV0dXJlIGJ5IGluY2x1ZGluZwogICAgICAgICAgICAgICAgICAgICMgYSBmbGFnIHRvIGRlbGV0ZSB1bi1uZWNlc3NhcnkgY29tbWFzIGFuZCBzZW1pY29sb25zLgogICAgICAgICAgICAgICAgICAgIG15ICR0b2tfZGlmZiA9ICRub25ibGFua190b2tlbl9jb3VudCAtICRsYXN0X2NvdW50OwoKICAgICAgICAgICAgICAgICAgICBpZiAoICR0b2tfZGlmZiA9PSAxICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIGEgY2xvc2VseSBuZXN0ZWQgcGFpciAuLgogICAgICAgICAgICAgICAgICAgICAgICBteSAkaW5uZXJfc2Vxbm8gPSAkbGFzdF9jb250YWluZXItPltfVFlQRV9TRVFVRU5DRV9dOwogICAgICAgICAgICAgICAgICAgICAgICBteSAkb3V0ZXJfc2Vxbm8gPSAkdHlwZV9zZXF1ZW5jZTsKICAgICAgICAgICAgICAgICAgICAgICAgJHJwYWlyZWRfdG9faW5uZXJfY29udGFpbmVyLT57JG91dGVyX3NlcW5vfSA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgJGlubmVyX3NlcW5vOwoKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAbmVzdGVkX3BhaXJzLCBbICRpbm5lcl9zZXFubywgJG91dGVyX3NlcW5vIF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkbGFzdF9sYXN0X2NvbnRhaW5lciA9ICRsYXN0X2NvbnRhaW5lcjsKICAgICAgICAgICAgJGxhc3RfY29udGFpbmVyICAgICAgPSAkcnRva2VuX3ZhcnM7CiAgICAgICAgICAgICRsYXN0X2NvdW50ICAgICAgICAgID0gJG5vbmJsYW5rX3Rva2VuX2NvdW50OwogICAgICAgIH0KICAgICAgICAkbGFzdF9ub25ibGFua190b2tlbl92YXJzID0gJHJ0b2tlbl92YXJzOwogICAgfQogICAgJHNlbGYtPntybmVzdGVkX3BhaXJzfSAgICAgICAgICAgICAgPSBcQG5lc3RlZF9wYWlyczsKICAgICRzZWxmLT57cnBhaXJlZF90b19pbm5lcl9jb250YWluZXJ9ID0gJHJwYWlyZWRfdG9faW5uZXJfY29udGFpbmVyOwogICAgcmV0dXJuOwp9CgpzdWIgZHVtcF90b2tlbnMgewoKICAgICMgYSBkZWJ1ZyByb3V0aW5lLCBub3Qgbm9ybWFsbHkgdXNlZAogICAgbXkgKCAkc2VsZiwgJG1zZyApID0gQF87CiAgICBteSAkckxMICAgPSAkc2VsZi0+e3JMTH07CiAgICBteSAkbnZhcnMgPSBAeyRyTEx9OwogICAgcHJpbnQgU1RERVJSICIkbXNnXG4iOwogICAgcHJpbnQgU1RERVJSICJudG9rZW5zPSRudmFyc1xuIjsKICAgIHByaW50IFNUREVSUiAiS1x0X1RPS0VOX1x0X1RZUEVfXG4iOwogICAgbXkgJEsgPSAwOwoKICAgIGZvcmVhY2ggbXkgJGl0ZW0gKCBAeyRyTEx9ICkgewogICAgICAgIHByaW50IFNUREVSUiAiJEtcdCRpdGVtLT5bX1RPS0VOX11cdCRpdGVtLT5bX1RZUEVfXVxuIjsKICAgICAgICAkSysrOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgZ2V0X29sZF9saW5lX2luZGV4IHsKICAgIG15ICggJHNlbGYsICRLICkgPSBAXzsKICAgIG15ICRyTEwgPSAkc2VsZi0+e3JMTH07CiAgICByZXR1cm4gMCB1bmxlc3MgZGVmaW5lZCgkSyk7CiAgICByZXR1cm4gJHJMTC0+WyRLXS0+W19MSU5FX0lOREVYX107Cn0KCnN1YiBnZXRfb2xkX2xpbmVfY291bnQgewogICAgbXkgKCAkc2VsZiwgJEtiZWcsICRLZW5kICkgPSBAXzsKICAgIG15ICRyTEwgPSAkc2VsZi0+e3JMTH07CiAgICByZXR1cm4gMCB1bmxlc3MgZGVmaW5lZCgkS2JlZyk7CiAgICByZXR1cm4gMCB1bmxlc3MgZGVmaW5lZCgkS2VuZCk7CiAgICByZXR1cm4gJHJMTC0+WyRLZW5kXS0+W19MSU5FX0lOREVYX10gLSAkckxMLT5bJEtiZWddLT5bX0xJTkVfSU5ERVhfXSArIDE7Cn0KCnN1YiBLX25leHRfY29kZSB7CiAgICBteSAoICRzZWxmLCAkS0ssICRyTEwgKSA9IEBfOwoKICAgICMgcmV0dXJuIHRoZSBpbmRleCBLIG9mIHRoZSBuZXh0IG5vbmJsYW5rLCBub24tY29tbWVudCB0b2tlbgogICAgcmV0dXJuIHVubGVzcyAoIGRlZmluZWQoJEtLKSAmJiAkS0sgPj0gMCApOwoKICAgICMgdXNlIHRoZSBzdGFuZGFyZCBhcnJheSB1bmxlc3MgZ2l2ZW4gb3RoZXJ3aXNlCiAgICAkckxMID0gJHNlbGYtPntyTEx9IHVubGVzcyAoIGRlZmluZWQoJHJMTCkgKTsKICAgIG15ICROdW0gID0gQHskckxMfTsKICAgIG15ICRLbm5iID0gJEtLICsgMTsKICAgIHdoaWxlICggJEtubmIgPCAkTnVtICkgewogICAgICAgIGlmICggIWRlZmluZWQoICRyTEwtPlskS25uYl0gKSApIHsKICAgICAgICAgICAgRmF1bHQoIlVuZGVmaW5lZCBlbnRyeSBmb3Igaz0kS25uYiIpOwogICAgICAgIH0KICAgICAgICBpZiAoICAgJHJMTC0+WyRLbm5iXS0+W19UWVBFX10gbmUgJ2InCiAgICAgICAgICAgICYmICRyTEwtPlskS25uYl0tPltfVFlQRV9dIG5lICcjJyApCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gJEtubmI7CiAgICAgICAgfQogICAgICAgICRLbm5iKys7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBLX25leHRfbm9uYmxhbmsgewogICAgbXkgKCAkc2VsZiwgJEtLLCAkckxMICkgPSBAXzsKCiAgICAjIHJldHVybiB0aGUgaW5kZXggSyBvZiB0aGUgbmV4dCBub25ibGFuayB0b2tlbgogICAgcmV0dXJuIHVubGVzcyAoIGRlZmluZWQoJEtLKSAmJiAkS0sgPj0gMCApOwoKICAgICMgdXNlIHRoZSBzdGFuZGFyZCBhcnJheSB1bmxlc3MgZ2l2ZW4gb3RoZXJ3aXNlCiAgICAkckxMID0gJHNlbGYtPntyTEx9IHVubGVzcyAoIGRlZmluZWQoJHJMTCkgKTsKICAgIG15ICROdW0gID0gQHskckxMfTsKICAgIG15ICRLbm5iID0gJEtLICsgMTsKICAgIHdoaWxlICggJEtubmIgPCAkTnVtICkgewogICAgICAgIGlmICggIWRlZmluZWQoICRyTEwtPlskS25uYl0gKSApIHsKICAgICAgICAgICAgRmF1bHQoIlVuZGVmaW5lZCBlbnRyeSBmb3Igaz0kS25uYiIpOwogICAgICAgIH0KICAgICAgICBpZiAoICRyTEwtPlskS25uYl0tPltfVFlQRV9dIG5lICdiJyApIHsgcmV0dXJuICRLbm5iIH0KICAgICAgICAkS25uYisrOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgS19wcmV2aW91c19jb2RlIHsKCiAgICAjIHJldHVybiB0aGUgaW5kZXggSyBvZiB0aGUgcHJldmlvdXMgbm9uYmxhbmssIG5vbi1jb21tZW50IHRva2VuCiAgICAjIENhbGwgd2l0aCAkS0s9dW5kZWYgdG8gc3RhcnQgc2VhcmNoIGF0IHRoZSB0b3Agb2YgdGhlIGFycmF5CiAgICBteSAoICRzZWxmLCAkS0ssICRyTEwgKSA9IEBfOwoKICAgICMgdXNlIHRoZSBzdGFuZGFyZCBhcnJheSB1bmxlc3MgZ2l2ZW4gb3RoZXJ3aXNlCiAgICAkckxMID0gJHNlbGYtPntyTEx9IHVubGVzcyAoIGRlZmluZWQoJHJMTCkgKTsKICAgIG15ICROdW0gPSBAeyRyTEx9OwogICAgaWYgKCAhZGVmaW5lZCgkS0spICkgeyAkS0sgPSAkTnVtIH0KICAgIGVsc2lmICggJEtLID4gJE51bSApIHsKCiAgICAgICAgIyBUaGUgY2FsbGVyIHNob3VsZCBtYWtlIHRoZSBmaXJzdCBjYWxsIHdpdGggS0tfbmV3PXVuZGVmIHRvCiAgICAgICAgIyBhdm9pZCB0aGlzIGVycm9yCiAgICAgICAgRmF1bHQoCiJQcm9ncmFtIEJ1ZzogS19wcmV2aW91c19ub25ibGFua19uZXcgY2FsbGVkIHdpdGggSz0kS0sgd2hpY2ggZXhjZWVkcyAkTnVtIgogICAgICAgICk7CiAgICB9CiAgICBteSAkS3BuYiA9ICRLSyAtIDE7CiAgICB3aGlsZSAoICRLcG5iID49IDAgKSB7CiAgICAgICAgaWYgKCAgICRyTEwtPlskS3BuYl0tPltfVFlQRV9dIG5lICdiJwogICAgICAgICAgICAmJiAkckxMLT5bJEtwbmJdLT5bX1RZUEVfXSBuZSAnIycgKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuICRLcG5iOwogICAgICAgIH0KICAgICAgICAkS3BuYi0tOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgS19wcmV2aW91c19ub25ibGFuayB7CgogICAgIyByZXR1cm4gaW5kZXggb2YgcHJldmlvdXMgbm9uYmxhbmsgdG9rZW4gYmVmb3JlIGl0ZW0gSzsKICAgICMgQ2FsbCB3aXRoICRLSz11bmRlZiB0byBzdGFydCBzZWFyY2ggYXQgdGhlIHRvcCBvZiB0aGUgYXJyYXkKICAgIG15ICggJHNlbGYsICRLSywgJHJMTCApID0gQF87CgogICAgIyB1c2UgdGhlIHN0YW5kYXJkIGFycmF5IHVubGVzcyBnaXZlbiBvdGhlcndpc2UKICAgICRyTEwgPSAkc2VsZi0+e3JMTH0gdW5sZXNzICggZGVmaW5lZCgkckxMKSApOwogICAgbXkgJE51bSA9IEB7JHJMTH07CiAgICBpZiAoICFkZWZpbmVkKCRLSykgKSB7ICRLSyA9ICROdW0gfQogICAgZWxzaWYgKCAkS0sgPiAkTnVtICkgewoKICAgICAgICAjIFRoZSBjYWxsZXIgc2hvdWxkIG1ha2UgdGhlIGZpcnN0IGNhbGwgd2l0aCBLS19uZXc9dW5kZWYgdG8KICAgICAgICAjIGF2b2lkIHRoaXMgZXJyb3IKICAgICAgICBGYXVsdCgKIlByb2dyYW0gQnVnOiBLX3ByZXZpb3VzX25vbmJsYW5rX25ldyBjYWxsZWQgd2l0aCBLPSRLSyB3aGljaCBleGNlZWRzICROdW0iCiAgICAgICAgKTsKICAgIH0KICAgIG15ICRLcG5iID0gJEtLIC0gMTsKICAgIHdoaWxlICggJEtwbmIgPj0gMCApIHsKICAgICAgICBpZiAoICRyTEwtPlskS3BuYl0tPltfVFlQRV9dIG5lICdiJyApIHsgcmV0dXJuICRLcG5iIH0KICAgICAgICAkS3BuYi0tOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgbWFwX2NvbnRhaW5lcnMgewoKICAgICMgTWFwcyB0aGUgY29udGFpbmVyIGhpZXJhcmNoeQogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIG15ICRyTEwgID0gJHNlbGYtPntyTEx9OwogICAgcmV0dXJuIHVubGVzcyAoIGRlZmluZWQoJHJMTCkgJiYgQHskckxMfSApOwoKICAgIG15ICRLX29wZW5pbmdfY29udGFpbmVyID0gJHNlbGYtPntLX29wZW5pbmdfY29udGFpbmVyfTsKICAgIG15ICRLX2Nsb3NpbmdfY29udGFpbmVyID0gJHNlbGYtPntLX2Nsb3NpbmdfY29udGFpbmVyfTsKICAgIG15ICRyY29udGFpbmVyX21hcCAgICAgID0gJHNlbGYtPntyY29udGFpbmVyX21hcH07CgogICAgIyBsb29wIG92ZXIgY29udGFpbmVycwogICAgbXkgQHN0YWNrOyAgICAjIHN0YWNrIG9mIGNvbnRhaW5lciBzZXF1ZW5jZSBudW1iZXJzCiAgICBteSAkS05FWFQgPSAwOwogICAgd2hpbGUgKCBkZWZpbmVkKCRLTkVYVCkgKSB7CiAgICAgICAgbXkgJEtLID0gJEtORVhUOwogICAgICAgICRLTkVYVCA9ICRyTEwtPlskS05FWFRdLT5bX0tORVhUX1NFUV9JVEVNX107CiAgICAgICAgbXkgJHJ0b2tlbl92YXJzICAgPSAkckxMLT5bJEtLXTsKICAgICAgICBteSAkdHlwZV9zZXF1ZW5jZSA9ICRydG9rZW5fdmFycy0+W19UWVBFX1NFUVVFTkNFX107CiAgICAgICAgaWYgKCAhJHR5cGVfc2VxdWVuY2UgKSB7CiAgICAgICAgICAgIG5leHQgaWYgKCAkS0sgPT0gMCApOyAgICAjIGZpcnN0IHRva2VuIGluIGZpbGUgbWF5IG5vdCBiZSBjb250YWluZXIKICAgICAgICAgICAgRmF1bHQoInNlcXVlbmNlID0gJHR5cGVfc2VxdWVuY2Ugbm90IGRlZmluZWQgYXQgSz0kS0siKTsKICAgICAgICB9CgogICAgICAgIG15ICR0b2tlbiA9ICRydG9rZW5fdmFycy0+W19UT0tFTl9dOwogICAgICAgIGlmICggJGlzX29wZW5pbmdfdG9rZW57JHRva2VufSApIHsKICAgICAgICAgICAgaWYgKEBzdGFjaykgewogICAgICAgICAgICAgICAgJHJjb250YWluZXJfbWFwLT57JHR5cGVfc2VxdWVuY2V9ID0gJHN0YWNrWy0xXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwdXNoIEBzdGFjaywgJHR5cGVfc2VxdWVuY2U7CiAgICAgICAgfQogICAgICAgIGlmICggJGlzX2Nsb3NpbmdfdG9rZW57JHRva2VufSApIHsKICAgICAgICAgICAgaWYgKEBzdGFjaykgewogICAgICAgICAgICAgICAgbXkgJHNlcW5vID0gcG9wIEBzdGFjazsKICAgICAgICAgICAgICAgIGlmICggJHNlcW5vICE9ICR0eXBlX3NlcXVlbmNlICkgewoKICAgICAgICAgICAgICAgICAgICAjIHNob3VsZG4ndCBoYXBwZW4gdW5sZXNzIGZpbGUgaXMgZ2FyYmFnZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgdGhlIHN0YWNrIHNob3VsZCBiZSBlbXB0eSBmb3IgYSBnb29kIGZpbGUKICAgIGlmIChAc3RhY2spIHsKCiAgICAgICAgIyB1bmJhbGFuY2VkIGNvbnRhaW5lcnM7IGZpbGUgcHJvYmFibHkgYmFkCiAgICB9CiAgICBlbHNlIHsKICAgICAgICAjIG9rCiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBtYXJrX3Nob3J0X25lc3RlZF9ibG9ja3MgewoKICAgICMgVGhpcyByb3V0aW5lIGxvb2tzIGF0IHRoZSBlbnRpcmUgZmlsZSBhbmQgbWFya3MgYW55IHNob3J0IG5lc3RlZCBibG9ja3MKICAgICMgd2hpY2ggc2hvdWxkIG5vdCBiZSBicm9rZW4uICBUaGUgcmVzdWx0cyBhcmUgc3RvcmVkIGluIHRoZSBoYXNoCiAgICAjICAgICAkcnNob3J0X25lc3RlZC0+eyR0eXBlX3NlcXVlbmNlfQogICAgIyB3aGljaCB3aWxsIGJlIHRydWUgaWYgdGhlIGNvbnRhaW5lciBzaG91bGQgcmVtYWluIGludGFjdC4KICAgICMKICAgICMgRm9yIGV4YW1wbGUsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgbGluZToKCiAgICAjICAgc3ViIGN4dF90d28geyBzb3J0IHsgJGEgPD0+ICRiIH0gdGVzdF9pZl9saXN0KCkgfQoKICAgICMgVGhlICdzb3J0JyBibG9jayBpcyBzaG9ydCBhbmQgbmVzdGVkIHdpdGhpbiBhbiBvdXRlciBzdWIgYmxvY2suCiAgICAjIE5vcm1hbGx5LCB0aGUgZXhpc3RhbmNlIG9mIHRoZSAnc29ydCcgYmxvY2sgd2lsbCBmb3JjZSB0aGUgc3ViIGJsb2NrIHRvCiAgICAjIGJyZWFrIG9wZW4sIGJ1dCB0aGlzIGlzIG5vdCBhbHdheXMgZGVzaXJhYmxlLiBIZXJlIHdlIHdpbGwgc2V0IGEgZmxhZyBmb3IKICAgICMgdGhlIHNvcnQgYmxvY2sgdG8gcHJldmVudCB0aGlzLiAgVG8gZ2l2ZSB0aGUgdXNlciBjb250cm9sLCB3ZSB3aWxsCiAgICAjIGZvbGxvdyB0aGUgaW5wdXQgZmlsZSBmb3JtYXR0aW5nLiAgSWYgZWl0aGVyIG9mIHRoZSBibG9ja3MgaXMgYnJva2VuIGluCiAgICAjIHRoZSBpbnB1dCBmaWxlIHRoZW4gd2Ugd2lsbCBhbGxvdyBpdCB0byByZW1haW4gYnJva2VuLiBPdGhlcndpc2Ugd2Ugd2lsbAogICAgIyBzZXQgYSBmbGFnIHRvIGtlZXAgaXQgdG9nZXRoZXIgaW4gbGF0ZXIgZm9ybWF0dGluZyBzdGVwcy4KCiAgICAjIFRoZSBmbGFnIHdoaWNoIGlzIHNldCBoZXJlIHdpbGwgYmUgY2hlY2tlZCBpbiB0d28gcGxhY2VzOgogICAgIyAnc3ViIHByaW50X2xpbmVfb2ZfdG9rZW5zJyBhbmQgJ3N1YiBzdGFydGluZ19vbmVfbGluZV9ibG9jaycKCiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgbXkgJHJMTCAgPSAkc2VsZi0+e3JMTH07CiAgICByZXR1cm4gdW5sZXNzICggZGVmaW5lZCgkckxMKSAmJiBAeyRyTEx9ICk7CgogICAgbXkgJEtfb3BlbmluZ19jb250YWluZXIgPSAkc2VsZi0+e0tfb3BlbmluZ19jb250YWluZXJ9OwogICAgbXkgJEtfY2xvc2luZ19jb250YWluZXIgPSAkc2VsZi0+e0tfY2xvc2luZ19jb250YWluZXJ9OwogICAgbXkgJHJicmVha19jb250YWluZXIgICAgPSAkc2VsZi0+e3JicmVha19jb250YWluZXJ9OwogICAgbXkgJHJzaG9ydF9uZXN0ZWQgICAgICAgPSAkc2VsZi0+e3JzaG9ydF9uZXN0ZWR9OwogICAgbXkgJHJjb250YWluZXJfbWFwICAgICAgPSAkc2VsZi0+e3Jjb250YWluZXJfbWFwfTsKICAgIG15ICRybGluZXMgICAgICAgICAgICAgID0gJHNlbGYtPntybGluZXN9OwoKICAgICMgVmFyaWFibGVzIG5lZWRlZCBmb3IgZXN0aW1hdGluZyBsaW5lIGxlbmd0aHMKICAgIG15ICRzdGFydGluZ19pbmRlbnQ7CiAgICBteSAkc3RhcnRpbmdfbGVudG90OwogICAgbXkgJGxlbmd0aF90b2wgPSAxOwoKICAgIG15ICRleGNlc3NfbGVuZ3RoX3RvX0sgPSBzdWIgewogICAgICAgIG15ICgkSykgPSBAXzsKCiAgICAgICAgIyBFc3RpbWF0ZSB0aGUgbGVuZ3RoIGZyb20gdGhlIGxpbmUgc3RhcnQgdG8gYSBnaXZlbiB0b2tlbgogICAgICAgIG15ICRsZW5ndGggPSAkc2VsZi0+Y3VtdWxhdGl2ZV9sZW5ndGhfYmVmb3JlX0soJEspIC0gJHN0YXJ0aW5nX2xlbnRvdDsKICAgICAgICBteSAkZXhjZXNzX2xlbmd0aCA9CiAgICAgICAgICAkc3RhcnRpbmdfaW5kZW50ICsgJGxlbmd0aCArICRsZW5ndGhfdG9sIC0gJHJPcHRzX21heGltdW1fbGluZV9sZW5ndGg7CiAgICAgICAgcmV0dXJuICgkZXhjZXNzX2xlbmd0aCk7CiAgICB9OwoKICAgIG15ICRpc19icm9rZW5fYmxvY2sgPSBzdWIgewoKICAgICAgICAjIGEgYmxvY2sgaXMgYnJva2VuIGlmIHRoZSBpbnB1dCBsaW5lIG51bWJlcnMgb2YgdGhlIGJyYWNlcyBkaWZmZXIKICAgICAgICBteSAoJHNlcW5vKSA9IEBfOwogICAgICAgIG15ICRLX29wZW5pbmcgPSAkS19vcGVuaW5nX2NvbnRhaW5lci0+eyRzZXFub307CiAgICAgICAgcmV0dXJuIHVubGVzcyAoIGRlZmluZWQoJEtfb3BlbmluZykgKTsKICAgICAgICBteSAkS19jbG9zaW5nID0gJEtfY2xvc2luZ19jb250YWluZXItPnskc2Vxbm99OwogICAgICAgIHJldHVybiB1bmxlc3MgKCBkZWZpbmVkKCRLX2Nsb3NpbmcpICk7CiAgICAgICAgcmV0dXJuICRyYnJlYWtfY29udGFpbmVyLT57JHNlcW5vfQogICAgICAgICAgfHwgJHJMTC0+WyRLX2Nsb3NpbmddLT5bX0xJTkVfSU5ERVhfXSAhPQogICAgICAgICAgJHJMTC0+WyRLX29wZW5pbmddLT5bX0xJTkVfSU5ERVhfXTsKICAgIH07CgogICAgIyBsb29wIG92ZXIgYWxsIGNvbnRhaW5lcnMKICAgIG15IEBvcGVuX2Jsb2NrX3N0YWNrOwogICAgbXkgJGlsaW5lID0gLTE7CiAgICBteSAkS05FWFQgPSAwOwogICAgd2hpbGUgKCBkZWZpbmVkKCRLTkVYVCkgKSB7CiAgICAgICAgbXkgJEtLID0gJEtORVhUOwogICAgICAgICRLTkVYVCA9ICRyTEwtPlskS05FWFRdLT5bX0tORVhUX1NFUV9JVEVNX107CiAgICAgICAgbXkgJHJ0b2tlbl92YXJzICAgPSAkckxMLT5bJEtLXTsKICAgICAgICBteSAkdHlwZV9zZXF1ZW5jZSA9ICRydG9rZW5fdmFycy0+W19UWVBFX1NFUVVFTkNFX107CiAgICAgICAgaWYgKCAhJHR5cGVfc2VxdWVuY2UgKSB7CiAgICAgICAgICAgIG5leHQgaWYgKCAkS0sgPT0gMCApOyAgICAjIGZpcnN0IHRva2VuIGluIGZpbGUgbWF5IG5vdCBiZSBjb250YWluZXIKCiAgICAgICAgICAgICMgYW4gZXJyb3IgaGVyZSBpcyBtb3N0IGxpa2VseSBkdWUgdG8gYSByZWNlbnQgcHJvZ3JhbW1pbmcgY2hhbmdlCiAgICAgICAgICAgIEZhdWx0KCJzZXF1ZW5jZSA9ICR0eXBlX3NlcXVlbmNlIG5vdCBkZWZpbmVkIGF0IEs9JEtLIik7CiAgICAgICAgfQoKICAgICAgICAjIFdlIGFyZSBqdXN0IGxvb2tpbmcgYXQgY29kZSBibG9ja3MKICAgICAgICBteSAkdG9rZW4gPSAkcnRva2VuX3ZhcnMtPltfVE9LRU5fXTsKICAgICAgICBteSAkdHlwZSAgPSAkcnRva2VuX3ZhcnMtPltfVFlQRV9dOwogICAgICAgIG5leHQgdW5sZXNzICggJHR5cGUgZXEgJHRva2VuICk7CiAgICAgICAgbXkgJGJsb2NrX3R5cGUgPSAkcnRva2VuX3ZhcnMtPltfQkxPQ0tfVFlQRV9dOwogICAgICAgIG5leHQgdW5sZXNzICgkYmxvY2tfdHlwZSk7CgogICAgICAgICMgS2VlcCBhIHN0YWNrIG9mIGFsbCBhY2NlcHRhYmxlIGJsb2NrIGJyYWNlcyBzZWVuLgogICAgICAgICMgT25seSBjb25zaWRlciBibG9ja3MgZW50aXJlbHkgb24gb25lIGxpbmUgc28gZHVtcCB0aGUgc3RhY2sgd2hlbiBsaW5lCiAgICAgICAgIyBjaGFuZ2VzLgogICAgICAgIG15ICRpbGluZV9sYXN0ID0gJGlsaW5lOwogICAgICAgICRpbGluZSA9ICRyTEwtPlskS0tdLT5bX0xJTkVfSU5ERVhfXTsKICAgICAgICBpZiAoICRpbGluZSAhPSAkaWxpbmVfbGFzdCApIHsgQG9wZW5fYmxvY2tfc3RhY2sgPSAoKSB9CgogICAgICAgIGlmICggJHRva2VuIGVxICd9JyApIHsKICAgICAgICAgICAgaWYgKEBvcGVuX2Jsb2NrX3N0YWNrKSB7IHBvcCBAb3Blbl9ibG9ja19zdGFjayB9CiAgICAgICAgfQogICAgICAgIG5leHQgdW5sZXNzICggJHRva2VuIGVxICd7JyApOwoKICAgICAgICAjIGJsb2NrIG11c3QgYmUgYmFsYW5jZWQgKGJhZCBzY3JpcHRzIG1heSBiZSB1bmJhbGFuY2VkKQogICAgICAgIG15ICRLX29wZW5pbmcgPSAkS19vcGVuaW5nX2NvbnRhaW5lci0+eyR0eXBlX3NlcXVlbmNlfTsKICAgICAgICBteSAkS19jbG9zaW5nID0gJEtfY2xvc2luZ19jb250YWluZXItPnskdHlwZV9zZXF1ZW5jZX07CiAgICAgICAgbmV4dCB1bmxlc3MgKCBkZWZpbmVkKCRLX29wZW5pbmcpICYmIGRlZmluZWQoJEtfY2xvc2luZykgKTsKCiAgICAgICAgIyByZXF1aXJlIHRoYXQgdGhpcyBibG9jayBiZSBlbnRpcmVseSBvbiBvbmUgbGluZQogICAgICAgIG5leHQgaWYgKCAkaXNfYnJva2VuX2Jsb2NrLT4oJHR5cGVfc2VxdWVuY2UpICk7CgogICAgICAgICMgU2VlIGlmIHRoaXMgYmxvY2sgZml0cyBvbiBvbmUgbGluZSBvZiBhbGxvd2VkIGxlbmd0aCAod2hpY2ggbWF5CiAgICAgICAgIyBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgaW5wdXQgc2NyaXB0KQogICAgICAgICRzdGFydGluZ19sZW50b3QgPQogICAgICAgICAgJEtLIDw9IDAgPyAwIDogJHJMTC0+WyAkS0sgLSAxIF0tPltfQ1VNVUxBVElWRV9MRU5HVEhfXTsKICAgICAgICAkc3RhcnRpbmdfaW5kZW50ID0gMDsKICAgICAgICBpZiAoICEkck9wdHNfdmFyaWFibGVfbWF4aW11bV9saW5lX2xlbmd0aCApIHsKICAgICAgICAgICAgbXkgJGxldmVsID0gJHJMTC0+WyRLS10tPltfTEVWRUxfXTsKICAgICAgICAgICAgJHN0YXJ0aW5nX2luZGVudCA9ICRyT3B0c19pbmRlbnRfY29sdW1ucyAqICRsZXZlbDsKICAgICAgICB9CgogICAgICAgICMgRHVtcCB0aGUgc3RhY2sgaWYgYmxvY2sgaXMgdG9vIGxvbmcgYW5kIHNraXAgdGhpcyBibG9jawogICAgICAgIGlmICggJGV4Y2Vzc19sZW5ndGhfdG9fSy0+KCRLX2Nsb3NpbmcpID4gMCApIHsKICAgICAgICAgICAgQG9wZW5fYmxvY2tfc3RhY2sgPSAoKTsKICAgICAgICAgICAgbmV4dDsKICAgICAgICB9CgogICAgICAgICMgT0ssIEJsb2NrIHBhc3NlcyB0ZXN0cywgcmVtZW1iZXIgaXQKICAgICAgICBwdXNoIEBvcGVuX2Jsb2NrX3N0YWNrLCAkdHlwZV9zZXF1ZW5jZTsKCiAgICAgICAgIyBXZSBhcmUgb25seSBtYXJraW5nIG5lc3RlZCBjb2RlIGJsb2NrcywKICAgICAgICAjIHNvIGNoZWNrIGZvciBhIHByZXZpb3VzIGJsb2NrIG9uIHRoZSBzdGFjawogICAgICAgIG5leHQgdW5sZXNzICggQG9wZW5fYmxvY2tfc3RhY2sgPiAxICk7CgogICAgICAgICMgTG9va3MgT0ssIG1hcmsgdGhpcyBhcyBhIHNob3J0IG5lc3RlZCBibG9jawogICAgICAgICRyc2hvcnRfbmVzdGVkLT57JHR5cGVfc2VxdWVuY2V9ID0gMTsKCiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiB3ZWxkX2NvbnRhaW5lcnMgewoKICAgICMgZG8gYW55IHdlbGRpbmcgb3BlcmF0aW9ucwogICAgbXkgJHNlbGYgPSBzaGlmdDsKCiAgIyBpbml0aWFsaXplIHdlbGQgbGVuZ3RoIGhhc2hlcyBuZWVkZWQgbGF0ZXIgZm9yIGNoZWNraW5nIGxpbmUgbGVuZ3RocwogICMgVE9ETzogVGhlc2Ugc2hvdWxkIGV2ZW50dWFsbHkgYmUgc3RvcmVkIGluICRzZWxmIHJhdGhlciB0aGFuIGJlIHBhY2thZ2UgdmFycwogICAgJXdlbGRfbGVuX2xlZnRfY2xvc2luZyAgPSAoKTsKICAgICV3ZWxkX2xlbl9yaWdodF9jbG9zaW5nID0gKCk7CiAgICAld2VsZF9sZW5fbGVmdF9vcGVuaW5nICA9ICgpOwogICAgJXdlbGRfbGVuX3JpZ2h0X29wZW5pbmcgPSAoKTsKCiAgICByZXR1cm4gaWYgKCAkck9wdHMtPnsnaW5kZW50LW9ubHknfSApOwogICAgcmV0dXJuIHVubGVzcyAoJHJPcHRzX2FkZF9uZXdsaW5lcyk7CgogICAgaWYgKCAkck9wdHMtPnsnd2VsZC1uZXN0ZWQtY29udGFpbmVycyd9ICkgewoKICAgICAgICAjIGlmIGNhbGxlZCwgd2VsZF9uZXN0ZWRfY29udGFpbmVycyBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgb3RoZXIgd2VsZAogICAgICAgICMgb3BlcmF0aW9ucy4gICMgVGhpcyBpcyBiZWNhdXNlIHdlbGRfbmVzdGVkX2NvbnRhaW5lcnMgY291bGQgb3ZlcndyaXRlCiAgICAgICAgIyBoYXNoIHZhbHVlcyB3cml0dGVuIGJ5IHdlbGRfY3VkZGxlZF9ibG9ja3MgYW5kIHdlbGRfbmVzdGVkX3F1b3Rlcy4KICAgICAgICAkc2VsZi0+d2VsZF9uZXN0ZWRfY29udGFpbmVycygpOwoKICAgICAgICAkc2VsZi0+d2VsZF9uZXN0ZWRfcXVvdGVzKCk7CiAgICB9CgogICAgIyBOb3RlIHRoYXQgd2VsZF9uZXN0ZWRfY29udGFpbmVycygpIGNoYW5nZXMgdGhlIF9MRVZFTF8gdmFsdWVzLCBzbwogICAgIyB3ZWxkX2N1ZGRsZWRfYmxvY2tzIG11c3QgdXNlIHRoZSBfVFJVRV9MRVZFTF8gdmFsdWVzIGluc3RlYWQuCgogICAgIyBIZXJlIGlzIGEgZ29vZCB0ZXN0IGNhc2UgdG8gIEJlIHN1cmUgdGhhdCBib3RoIGN1ZGRsaW5nIGFuZCB3ZWxkaW5nCiAgICAjIGFyZSB3b3JraW5nIGFuZCBub3QgaW50ZXJmZXJpbmcgd2l0aCBlYWNoIG90aGVyOiA8PHNuaXBwZXRzL2NlX3duMS5pbj4+CgogICAgIyAgIHBlcmx0aWR5IC13biAtY2UKCiAgICMgaWYgKCRCT0xEX01BVEgpIHsgKAogICAjICAgICAkbGFiZWxzLCAkY29tbWVudCwKICAgIyAgICAgam9pbiggJycsICc8Qj4nLCAmbWFrZV9tYXRoKCAkbW9kZSwgJycsICcnLCAkXyApLCAnPC9CPicgKQogICAjICkgfSBlbHNlIHsgKAogICAjICAgICAmcHJvY2Vzc19tYXRoX2luX2xhdGV4KCAkbW9kZSwgJG1hdGhfc3R5bGUsICRzbGV2ZWwsICJcXG1ib3h7JHRleHR9IiApLAogICAjICAgICAkYWZ0ZXIKICAgIyApIH0KCiAgICAkc2VsZi0+d2VsZF9jdWRkbGVkX2Jsb2NrcygpOwoKICAgIHJldHVybjsKfQoKc3ViIGN1bXVsYXRpdmVfbGVuZ3RoX2JlZm9yZV9LIHsKICAgIG15ICggJHNlbGYsICRLSyApID0gQF87CiAgICBteSAkckxMID0gJHNlbGYtPntyTEx9OwogICAgcmV0dXJuICggJEtLIDw9IDAgKSA/IDAgOiAkckxMLT5bICRLSyAtIDEgXS0+W19DVU1VTEFUSVZFX0xFTkdUSF9dOwp9CgpzdWIgY3VtdWxhdGl2ZV9sZW5ndGhfYWZ0ZXJfSyB7CiAgICBteSAoICRzZWxmLCAkS0sgKSA9IEBfOwogICAgbXkgJHJMTCA9ICRzZWxmLT57ckxMfTsKICAgIHJldHVybiAkckxMLT5bJEtLXS0+W19DVU1VTEFUSVZFX0xFTkdUSF9dOwp9CgpzdWIgd2VsZF9jdWRkbGVkX2Jsb2NrcyB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwoKICAgICMgVGhpcyByb3V0aW5lIGltcGxlbWVudHMgdGhlIC1jYiBmbGFnIGJ5IGZpbmRpbmcgdGhlIGFwcHJvcHJpYXRlCiAgICAjIGNsb3NpbmcgYW5kIG9wZW5pbmcgYmxvY2sgYnJhY2VzIGFuZCB3ZWxkaW5nIHRoZW0gdG9nZXRoZXIuCiAgICByZXR1cm4gdW5sZXNzICggJXskcmN1ZGRsZWRfYmxvY2tfdHlwZXN9ICk7CgogICAgbXkgJHJMTCA9ICRzZWxmLT57ckxMfTsKICAgIHJldHVybiB1bmxlc3MgKCBkZWZpbmVkKCRyTEwpICYmIEB7JHJMTH0gKTsKICAgIG15ICRyYnJlYWtfY29udGFpbmVyID0gJHNlbGYtPntyYnJlYWtfY29udGFpbmVyfTsKCiAgICBteSAkS19vcGVuaW5nX2NvbnRhaW5lciA9ICRzZWxmLT57S19vcGVuaW5nX2NvbnRhaW5lcn07CiAgICBteSAkS19jbG9zaW5nX2NvbnRhaW5lciA9ICRzZWxmLT57S19jbG9zaW5nX2NvbnRhaW5lcn07CgogICAgbXkgJGxlbmd0aF90b19vcGVuaW5nX3NlcW5vID0gc3ViIHsKICAgICAgICBteSAoJHNlcW5vKSA9IEBfOwogICAgICAgIG15ICRLSyAgICAgID0gJEtfb3BlbmluZ19jb250YWluZXItPnskc2Vxbm99OwogICAgICAgIG15ICRsZW50b3QgID0gJEtLIDw9IDAgPyAwIDogJHJMTC0+WyAkS0sgLSAxIF0tPltfQ1VNVUxBVElWRV9MRU5HVEhfXTsKICAgICAgICByZXR1cm4gJGxlbnRvdDsKICAgIH07CiAgICBteSAkbGVuZ3RoX3RvX2Nsb3Npbmdfc2Vxbm8gPSBzdWIgewogICAgICAgIG15ICgkc2Vxbm8pID0gQF87CiAgICAgICAgbXkgJEtLICAgICAgPSAkS19jbG9zaW5nX2NvbnRhaW5lci0+eyRzZXFub307CiAgICAgICAgbXkgJGxlbnRvdCAgPSAkS0sgPD0gMCA/IDAgOiAkckxMLT5bICRLSyAtIDEgXS0+W19DVU1VTEFUSVZFX0xFTkdUSF9dOwogICAgICAgIHJldHVybiAkbGVudG90OwogICAgfTsKCiAgICBteSAkaXNfYnJva2VuX2Jsb2NrID0gc3ViIHsKCiAgICAgICAgIyBhIGJsb2NrIGlzIGJyb2tlbiBpZiB0aGUgaW5wdXQgbGluZSBudW1iZXJzIG9mIHRoZSBicmFjZXMgZGlmZmVyCiAgICAgICAgIyB3ZSBjYW4gb25seSBjdWRkbGUgYmV0d2VlbiBicm9rZW4gYmxvY2tzCiAgICAgICAgbXkgKCRzZXFubykgPSBAXzsKICAgICAgICBteSAkS19vcGVuaW5nID0gJEtfb3BlbmluZ19jb250YWluZXItPnskc2Vxbm99OwogICAgICAgIHJldHVybiB1bmxlc3MgKCBkZWZpbmVkKCRLX29wZW5pbmcpICk7CiAgICAgICAgbXkgJEtfY2xvc2luZyA9ICRLX2Nsb3NpbmdfY29udGFpbmVyLT57JHNlcW5vfTsKICAgICAgICByZXR1cm4gdW5sZXNzICggZGVmaW5lZCgkS19jbG9zaW5nKSApOwogICAgICAgIHJldHVybiAkcmJyZWFrX2NvbnRhaW5lci0+eyRzZXFub30KICAgICAgICAgIHx8ICRyTEwtPlskS19jbG9zaW5nXS0+W19MSU5FX0lOREVYX10gIT0KICAgICAgICAgICRyTEwtPlskS19vcGVuaW5nXS0+W19MSU5FX0lOREVYX107CiAgICB9OwoKICAgICMgQSBzdGFjayB0byByZW1lbWJlciBvcGVuIGNoYWlucyBhdCBhbGwgbGV2ZWxzOgogICAgIyAkaW5fY2hhaW5bJGxldmVsXSA9IFskY2hhaW5fdHlwZSwgJHR5cGVfc2VxdWVuY2VdOwogICAgbXkgQGluX2NoYWluOwogICAgbXkgJENCTyA9ICRyT3B0cy0+eydjdWRkbGVkLWJyZWFrLW9wdGlvbid9OwoKICAgICMgbG9vcCBvdmVyIHN0cnVjdHVyZSBpdGVtcyB0byBmaW5kIGN1ZGRsZWQgcGFpcnMKICAgIG15ICRsZXZlbCA9IDA7CiAgICBteSAkS05FWFQgPSAwOwogICAgd2hpbGUgKCBkZWZpbmVkKCRLTkVYVCkgKSB7CiAgICAgICAgbXkgJEtLID0gJEtORVhUOwogICAgICAgICRLTkVYVCA9ICRyTEwtPlskS05FWFRdLT5bX0tORVhUX1NFUV9JVEVNX107CiAgICAgICAgbXkgJHJ0b2tlbl92YXJzICAgPSAkckxMLT5bJEtLXTsKICAgICAgICBteSAkdHlwZV9zZXF1ZW5jZSA9ICRydG9rZW5fdmFycy0+W19UWVBFX1NFUVVFTkNFX107CiAgICAgICAgaWYgKCAhJHR5cGVfc2VxdWVuY2UgKSB7CiAgICAgICAgICAgIG5leHQgaWYgKCAkS0sgPT0gMCApOyAgICAjIGZpcnN0IHRva2VuIGluIGZpbGUgbWF5IG5vdCBiZSBjb250YWluZXIKICAgICAgICAgICAgRmF1bHQoInNlcXVlbmNlID0gJHR5cGVfc2VxdWVuY2Ugbm90IGRlZmluZWQgYXQgSz0kS0siKTsKICAgICAgICB9CgogICAgICAgICMgV2UgdXNlIHRoZSBvcmlnaW5hbCBsZXZlbHMgYmVjYXVzZSB0aGV5IGdldCBjaGFuZ2VkIGJ5IHN1YgogICAgICAgICMgJ3dlbGRfbmVzdGVkX2NvbnRhaW5lcnMnLiBTbyBpZiB0aGlzIHdlcmUgdG8gYmUgY2FsbGVkIGJlZm9yZSB0aGF0CiAgICAgICAgIyByb3V0aW5lLCB0aGUgbGV2ZWxzIHdvdWxkIGJlIHdyb25nIGFuZCB0aGluZ3Mgd291bGQgZ28gYmFkLgogICAgICAgIG15ICRsYXN0X2xldmVsID0gJGxldmVsOwogICAgICAgICRsZXZlbCA9ICRydG9rZW5fdmFycy0+W19MRVZFTF9UUlVFX107CgogICAgICAgIGlmICAgICggJGxldmVsIDwgJGxhc3RfbGV2ZWwgKSB7ICRpbl9jaGFpblskbGFzdF9sZXZlbF0gPSB1bmRlZiB9CiAgICAgICAgZWxzaWYgKCAkbGV2ZWwgPiAkbGFzdF9sZXZlbCApIHsgJGluX2NoYWluWyRsZXZlbF0gICAgICA9IHVuZGVmIH0KCiAgICAgICAgIyBXZSBhcmUgb25seSBsb29raW5nIGF0IGNvZGUgYmxvY2tzCiAgICAgICAgbXkgJHRva2VuID0gJHJ0b2tlbl92YXJzLT5bX1RPS0VOX107CiAgICAgICAgbXkgJHR5cGUgID0gJHJ0b2tlbl92YXJzLT5bX1RZUEVfXTsKICAgICAgICBuZXh0IHVubGVzcyAoICR0eXBlIGVxICR0b2tlbiApOwoKICAgICAgICBpZiAoICR0b2tlbiBlcSAneycgKSB7CgogICAgICAgICAgICBteSAkYmxvY2tfdHlwZSA9ICRydG9rZW5fdmFycy0+W19CTE9DS19UWVBFX107CiAgICAgICAgICAgIGlmICggISRibG9ja190eXBlICkgewoKICAgICAgICAgICAgICAgICMgcGF0Y2ggZm9yIHVucmVjb2duaXplZCBibG9jayB0eXBlcyB3aGljaCBtYXkgbm90IGJlIGxhYmVsZWQKICAgICAgICAgICAgICAgIG15ICRLcCA9ICRzZWxmLT5LX3ByZXZpb3VzX25vbmJsYW5rKCRLSyk7CiAgICAgICAgICAgICAgICB3aGlsZSAoICRLcCAmJiAkckxMLT5bJEtwXS0+W19UWVBFX10gZXEgJyMnICkgewogICAgICAgICAgICAgICAgICAgICRLcCA9ICRzZWxmLT5LX3ByZXZpb3VzX25vbmJsYW5rKCRLcCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyAkS3A7CiAgICAgICAgICAgICAgICAkYmxvY2tfdHlwZSA9ICRyTEwtPlskS3BdLT5bX1RPS0VOX107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkaW5fY2hhaW5bJGxldmVsXSApIHsKCiAgICAgICAgICAgICAgICAjIHdlIGFyZSBpbiBhIGNoYWluIGFuZCBhcmUgYXQgYW4gb3BlbmluZyBibG9jayBicmFjZS4KICAgICAgICAgICAgICAgICMgU2VlIGlmIHdlIGFyZSB3ZWxkaW5nIHRoaXMgb3BlbmluZyBicmFjZSB3aXRoIHRoZSBwcmV2aW91cwogICAgICAgICAgICAgICAgIyBibG9jayBicmFjZS4gIEdldCB0aGVpciBpZGVudGlmaWNhdGlvbiBudW1iZXJzOgogICAgICAgICAgICAgICAgbXkgJGNsb3Npbmdfc2Vxbm8gPSAkaW5fY2hhaW5bJGxldmVsXS0+WzFdOwogICAgICAgICAgICAgICAgbXkgJG9wZW5pbmdfc2Vxbm8gPSAkdHlwZV9zZXF1ZW5jZTsKCiAgICAgICAgICAgICAgICAjIFRoZSBwcmVjZWRpbmcgYmxvY2sgbXVzdCBiZSBvbiBtdWx0aXBsZSBsaW5lcyBzbyB0aGF0IGl0cwogICAgICAgICAgICAgICAgIyBjbG9zaW5nIGJyYWNlIHdpbGwgc3RhcnQgYSBuZXcgbGluZS4KICAgICAgICAgICAgICAgIGlmICggISRpc19icm9rZW5fYmxvY2stPigkY2xvc2luZ19zZXFubykgKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCB1bmxlc3MgKCAkQ0JPID09IDIgKTsKICAgICAgICAgICAgICAgICAgICAkcmJyZWFrX2NvbnRhaW5lci0+eyRjbG9zaW5nX3NlcW5vfSA9IDE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB3ZSB3aWxsIGxldCB0aGUgdHJhaWxpbmcgYmxvY2sgYmUgZWl0aGVyIGJyb2tlbiBvciBpbnRhY3QKICAgICAgICAgICAgICAgICMjICYmICRpc19icm9rZW5fYmxvY2stPigkb3BlbmluZ19zZXFubyk7CgogICAgICAgICAgICAgICAgIyBXZSBjYW4gd2VsZCB0aGUgY2xvc2luZyBicmFjZSB0byBpdHMgZm9sbG93aW5nIHdvcmQgLi4KICAgICAgICAgICAgICAgIG15ICRLbyAgPSAkS19jbG9zaW5nX2NvbnRhaW5lci0+eyRjbG9zaW5nX3NlcW5vfTsKICAgICAgICAgICAgICAgIG15ICRLb24gPSAkc2VsZi0+S19uZXh0X25vbmJsYW5rKCRLbyk7CgogICAgICAgICAgICAgICAgIyAuLnVubGVzcyBpdCBpcyBhIGNvbW1lbnQKICAgICAgICAgICAgICAgIGlmICggJHJMTC0+WyRLb25dLT5bX1RZUEVfXSBuZSAnIycgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJGRsZW4gPQogICAgICAgICAgICAgICAgICAgICAgJHJMTC0+WyRLb25dLT5bX0NVTVVMQVRJVkVfTEVOR1RIX10gLQogICAgICAgICAgICAgICAgICAgICAgJHJMTC0+WyAkS28gLSAxIF0tPltfQ1VNVUxBVElWRV9MRU5HVEhfXTsKICAgICAgICAgICAgICAgICAgICAkd2VsZF9sZW5fcmlnaHRfY2xvc2luZ3skY2xvc2luZ19zZXFub30gPSAkZGxlbjsKCiAgICAgICAgICAgICAgICAgICAgIyBTZXQgZmxhZyB0aGF0IHdlIHdhbnQgdG8gYnJlYWsgdGhlIG5leHQgY29udGFpbmVyCiAgICAgICAgICAgICAgICAgICAgIyBzbyB0aGF0IHRoZSBjdWRkbGVkIGxpbmUgaXMgYmFsYW5jZWQuCiAgICAgICAgICAgICAgICAgICAgJHJicmVha19jb250YWluZXItPnskb3BlbmluZ19zZXFub30gPSAxCiAgICAgICAgICAgICAgICAgICAgICBpZiAoJENCTyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICMgV2UgYXJlIG5vdCBpbiBhIGNoYWluLiBTdGFydCBhIG5ldyBjaGFpbiBpZiB3ZSBzZWUgdGhlCiAgICAgICAgICAgICAgICAjIHN0YXJ0aW5nIGJsb2NrIHR5cGUuCiAgICAgICAgICAgICAgICBpZiAoICRyY3VkZGxlZF9ibG9ja190eXBlcy0+eyRibG9ja190eXBlfSApIHsKICAgICAgICAgICAgICAgICAgICAkaW5fY2hhaW5bJGxldmVsXSA9IFsgJGJsb2NrX3R5cGUsICR0eXBlX3NlcXVlbmNlIF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkYmxvY2tfdHlwZSA9ICcqJzsKICAgICAgICAgICAgICAgICAgICAkaW5fY2hhaW5bJGxldmVsXSA9IFsgJGJsb2NrX3R5cGUsICR0eXBlX3NlcXVlbmNlIF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkdG9rZW4gZXEgJ30nICkgewogICAgICAgICAgICBpZiAoICRpbl9jaGFpblskbGV2ZWxdICkgewoKICAgICAgICAgICAgICAgICMgV2UgYXJlIGluIGEgY2hhaW4gYXQgYSBjbG9zaW5nIGJyYWNlLiAgU2VlIGlmIHRoaXMgY2hhaW4KICAgICAgICAgICAgICAgICMgY29udGludWVzLi4KICAgICAgICAgICAgICAgIG15ICRLbm4gPSAkc2VsZi0+S19uZXh0X2NvZGUoJEtLKTsKICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzICRLbm47CgogICAgICAgICAgICAgICAgbXkgJGNoYWluX3R5cGUgICAgICAgICAgPSAkaW5fY2hhaW5bJGxldmVsXS0+WzBdOwogICAgICAgICAgICAgICAgbXkgJG5leHRfbm9uYmxhbmtfdG9rZW4gPSAkckxMLT5bJEtubl0tPltfVE9LRU5fXTsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkcmN1ZGRsZWRfYmxvY2tfdHlwZXMtPnskY2hhaW5fdHlwZX0tPnskbmV4dF9ub25ibGFua190b2tlbn0KICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAjIE5vdGUgdGhhdCB3ZSBkbyBub3Qgd2VsZCB5ZXQgYmVjYXVzZSB3ZSBtdXN0IHdhaXQgdW50aWwKICAgICAgICAgICAgICAgICAgICAjIHdlIHdlIGFyZSBzdXJlIHRoYXQgYW4gb3BlbmluZyBicmFjZSBmb3IgdGhpcyBmb2xsb3dzLgogICAgICAgICAgICAgICAgICAgICRpbl9jaGFpblskbGV2ZWxdLT5bMV0gPSAkdHlwZV9zZXF1ZW5jZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgeyAkaW5fY2hhaW5bJGxldmVsXSA9IHVuZGVmIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm47Cn0KCnN1YiB3ZWxkX25lc3RlZF9jb250YWluZXJzIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CgogICAgIyBUaGlzIHJvdXRpbmUgaW1wbGVtZW50cyB0aGUgLXduIGZsYWcgYnkgIndlbGRpbmcgdG9nZXRoZXIiCiAgICAjIHRoZSBuZXN0ZWQgY2xvc2luZyBhbmQgb3BlbmluZyB0b2tlbnMgd2hpY2ggd2VyZSBwcmV2aW91c2x5CiAgICAjIGlkZW50aWZpZWQgYnkgc3ViICdmaW5kX25lc3RlZF9wYWlycycuICAid2VsZGluZyIgc2ltcGx5CiAgICAjIGludm9sdmVzIHNldHRpbmcgY2VydGFpbiBoYXNoIHZhbHVlcyB3aGljaCB3aWxsIGJlIGNoZWNrZWQKICAgICMgbGF0ZXIgZHVyaW5nIGZvcm1hdHRpbmcuCgogICAgbXkgJHJMTCAgICAgICAgICAgICAgICAgPSAkc2VsZi0+e3JMTH07CiAgICBteSAkS2xpbWl0ICAgICAgICAgICAgICA9ICRzZWxmLT5nZXRfckxMX21heF9pbmRleCgpOwogICAgbXkgJHJuZXN0ZWRfcGFpcnMgICAgICAgPSAkc2VsZi0+e3JuZXN0ZWRfcGFpcnN9OwogICAgbXkgJHJsaW5lcyAgICAgICAgICAgICAgPSAkc2VsZi0+e3JsaW5lc307CiAgICBteSAkS19vcGVuaW5nX2NvbnRhaW5lciA9ICRzZWxmLT57S19vcGVuaW5nX2NvbnRhaW5lcn07CiAgICBteSAkS19jbG9zaW5nX2NvbnRhaW5lciA9ICRzZWxmLT57S19jbG9zaW5nX2NvbnRhaW5lcn07CgogICAgIyBSZXR1cm4gdW5sZXNzIHRoZXJlIGFyZSBuZXN0ZWQgcGFpcnMgdG8gd2VsZAogICAgcmV0dXJuIHVubGVzcyBkZWZpbmVkKCRybmVzdGVkX3BhaXJzKSAmJiBAeyRybmVzdGVkX3BhaXJzfTsKCiAgICAjIFRoaXMgYXJyYXkgd2lsbCBob2xkIHRoZSBzZXF1ZW5jZSBudW1iZXJzIG9mIHRoZSB0b2tlbnMgdG8gYmUgd2VsZGVkLgogICAgbXkgQHdlbGRzOwoKICAgICMgVmFyaWFibGVzIG5lZWRlZCBmb3IgZXN0aW1hdGluZyBsaW5lIGxlbmd0aHMKICAgIG15ICRzdGFydGluZ19pbmRlbnQ7CiAgICBteSAkc3RhcnRpbmdfbGVudG90OwoKICAgICMgQSB0b2xlcmFuY2UgdG8gdGhlIGxlbmd0aCBmb3IgbGVuZ3RoIGVzdGltYXRlcy4gIEluIHNvbWUgcmFyZSBjYXNlcwogICAgIyB0aGlzIGNhbiBhdm9pZCBwcm9ibGVtcyB3aGVyZSBhIGZpbmFsIHdlbGQgc2xpZ2h0bHkgZXhjZWVkcyB0aGUKICAgICMgbGluZSBsZW5ndGggYW5kIGdldHMgYnJva2VuIGluIGEgYmFkIHNwb3QuCiAgICBteSAkbGVuZ3RoX3RvbCA9IDE7CgogICAgbXkgJGV4Y2Vzc19sZW5ndGhfdG9fSyA9IHN1YiB7CiAgICAgICAgbXkgKCRLKSA9IEBfOwoKICAgICAgICAjIEVzdGltYXRlIHRoZSBsZW5ndGggZnJvbSB0aGUgbGluZSBzdGFydCB0byBhIGdpdmVuIHRva2VuCiAgICAgICAgbXkgJGxlbmd0aCA9ICRzZWxmLT5jdW11bGF0aXZlX2xlbmd0aF9iZWZvcmVfSygkSykgLSAkc3RhcnRpbmdfbGVudG90OwogICAgICAgIG15ICRleGNlc3NfbGVuZ3RoID0KICAgICAgICAgICRzdGFydGluZ19pbmRlbnQgKyAkbGVuZ3RoICsgJGxlbmd0aF90b2wgLSAkck9wdHNfbWF4aW11bV9saW5lX2xlbmd0aDsKICAgICAgICByZXR1cm4gKCRleGNlc3NfbGVuZ3RoKTsKICAgIH07CgogICAgbXkgJGxlbmd0aF90b19vcGVuaW5nX3NlcW5vID0gc3ViIHsKICAgICAgICBteSAoJHNlcW5vKSA9IEBfOwogICAgICAgIG15ICRLSyAgICAgID0gJEtfb3BlbmluZ19jb250YWluZXItPnskc2Vxbm99OwogICAgICAgIG15ICRsZW50b3QgID0gJEtLIDw9IDAgPyAwIDogJHJMTC0+WyAkS0sgLSAxIF0tPltfQ1VNVUxBVElWRV9MRU5HVEhfXTsKICAgICAgICByZXR1cm4gJGxlbnRvdDsKICAgIH07CgogICAgbXkgJGxlbmd0aF90b19jbG9zaW5nX3NlcW5vID0gc3ViIHsKICAgICAgICBteSAoJHNlcW5vKSA9IEBfOwogICAgICAgIG15ICRLSyAgICAgID0gJEtfY2xvc2luZ19jb250YWluZXItPnskc2Vxbm99OwogICAgICAgIG15ICRsZW50b3QgID0gJEtLIDw9IDAgPyAwIDogJHJMTC0+WyAkS0sgLSAxIF0tPltfQ1VNVUxBVElWRV9MRU5HVEhfXTsKICAgICAgICByZXR1cm4gJGxlbnRvdDsKICAgIH07CgogICAgIyBBYmJyZXZpYXRpb25zOgogICAgIyAgX29vPW91dGVyIG9wZW5pbmcsIGkuZS4gZmlyc3Qgb2YgIHsgewogICAgIyAgX2lvPWlubmVyIG9wZW5pbmcsIGkuZS4gc2Vjb25kIG9mIHsgewogICAgIyAgX29jPW91dGVyIGNsb3NpbmcsIGkuZS4gc2Vjb25kIG9mIH0gewogICAgIyAgX2ljPWlubmVyIGNsb3NpbmcsIGkuZS4gZmlyc3Qgb2YgIH0gfQoKICAgIG15ICRwcmV2aW91c19wYWlyOwoKICAgICMgV2UgYXJlIHdvcmtpbmcgZnJvbSBvdXRlcm1vc3QgdG8gaW5uZXJtb3N0IHBhaXJzIHNvIHRoYXQKICAgICMgbGV2ZWwgY2hhbmdlcyB3aWxsIGJlIGNvbXBsZXRlIHdoZW4gd2UgYXJyaXZlIGF0IHRoZSBpbm5lciBwYWlycy4KCiAgICB3aGlsZSAoIG15ICRpdGVtID0gcG9wKCBAeyRybmVzdGVkX3BhaXJzfSApICkgewogICAgICAgIG15ICggJGlubmVyX3NlcW5vLCAkb3V0ZXJfc2Vxbm8gKSA9IEB7JGl0ZW19OwoKICAgICAgICBteSAkS291dGVyX29wZW5pbmcgPSAkS19vcGVuaW5nX2NvbnRhaW5lci0+eyRvdXRlcl9zZXFub307CiAgICAgICAgbXkgJEtpbm5lcl9vcGVuaW5nID0gJEtfb3BlbmluZ19jb250YWluZXItPnskaW5uZXJfc2Vxbm99OwogICAgICAgIG15ICRLb3V0ZXJfY2xvc2luZyA9ICRLX2Nsb3NpbmdfY29udGFpbmVyLT57JG91dGVyX3NlcW5vfTsKICAgICAgICBteSAkS2lubmVyX2Nsb3NpbmcgPSAkS19jbG9zaW5nX2NvbnRhaW5lci0+eyRpbm5lcl9zZXFub307CgogICAgICAgIG15ICRvdXRlcl9vcGVuaW5nID0gJHJMTC0+WyRLb3V0ZXJfb3BlbmluZ107CiAgICAgICAgbXkgJGlubmVyX29wZW5pbmcgPSAkckxMLT5bJEtpbm5lcl9vcGVuaW5nXTsKICAgICAgICBteSAkb3V0ZXJfY2xvc2luZyA9ICRyTEwtPlskS291dGVyX2Nsb3NpbmddOwogICAgICAgIG15ICRpbm5lcl9jbG9zaW5nID0gJHJMTC0+WyRLaW5uZXJfY2xvc2luZ107CgogICAgICAgIG15ICRpbGluZV9vbyA9ICRvdXRlcl9vcGVuaW5nLT5bX0xJTkVfSU5ERVhfXTsKICAgICAgICBteSAkaWxpbmVfaW8gPSAkaW5uZXJfb3BlbmluZy0+W19MSU5FX0lOREVYX107CgogICAgICAgICMgU2V0IGZsYWcgc2F5aW5nIGlmIHRoaXMgcGFpciBzdGFydHMgYSBuZXcgd2VsZAogICAgICAgIG15ICRzdGFydGluZ19uZXdfd2VsZCA9ICEoIEB3ZWxkcyAmJiAkb3V0ZXJfc2Vxbm8gPT0gJHdlbGRzWy0xXS0+WzBdICk7CgogICAgICAgICMgU2V0IGZsYWcgc2F5aW5nIGlmIHRoaXMgcGFpciBpcyBhZGphY2VudCB0byB0aGUgcHJldmlvdXMgbmVzdGluZyBwYWlyCiAgICAgICAgIyAoZXZlbiBpZiBwcmV2aW91cyBwYWlyIHdhcyByZWplY3RlZCBhcyBhIHdlbGQpCiAgICAgICAgbXkgJHRvdWNoX3ByZXZpb3VzX3BhaXIgPQogICAgICAgICAgZGVmaW5lZCgkcHJldmlvdXNfcGFpcikgJiYgJG91dGVyX3NlcW5vID09ICRwcmV2aW91c19wYWlyLT5bMF07CiAgICAgICAgJHByZXZpb3VzX3BhaXIgPSAkaXRlbTsKCiAgICAgICAgIyBTZXQgYSBmbGFnIGlmIHdlIHNob3VsZCBub3Qgd2VsZC4gSXQgc29tZXRpbWVzIGxvb2tzIGJlc3Qgbm90IHRvIHdlbGQKICAgICAgICAjIHdoZW4gdGhlIG9wZW5pbmcgYW5kIGNsb3NpbmcgdG9rZW5zIGFyZSB2ZXJ5IGNsb3NlLiAgSG93ZXZlciwgdGhlcmUKICAgICAgICAjIGlzIGEgZGFuZ2VyIHRoYXQgd2Ugd2lsbCBjcmVhdGUgYSAiYmxpbmtlciIsIHdoaWNoIG9zY2lsbGF0ZXMgYmV0d2VlbgogICAgICAgICMgdHdvIHNlbWktc3RhYmxlIHN0YXRlcywgaWYgd2UgZG8gbm90IHdlbGQuICBTbyB0aGUgcnVsZXMgZm9yCiAgICAgICAgIyBub3Qgd2VsZGluZyBoYXZlIHRvIGJlIGNhcmVmdWxseSBkZWZpbmVkIGFuZCB0ZXN0ZWQuCiAgICAgICAgbXkgJGRvX25vdF93ZWxkOwogICAgICAgIGlmICggISR0b3VjaF9wcmV2aW91c19wYWlyICkgewoKICAgICAgICAgICAgIyBJZiB0aGlzIHBhaXIgaXMgbm90IGFkamFjZW50IHRvIHRoZSBwcmV2aW91cyBwYWlyIChza2lwcGVkIG9yCiAgICAgICAgICAgICMgbm90KSwgdGhlbiBtZWFzdXJlIGxlbmd0aHMgZnJvbSB0aGUgc3RhcnQgb2YgbGluZSBvZiBvbwoKICAgICAgICAgICAgbXkgJHJLX3JhbmdlID0gJHJsaW5lcy0+WyRpbGluZV9vb10tPntfcktfcmFuZ2V9OwogICAgICAgICAgICBteSAoICRLZmlyc3QsICRLbGFzdCApID0gQHskcktfcmFuZ2V9OwogICAgICAgICAgICAkc3RhcnRpbmdfbGVudG90ID0KICAgICAgICAgICAgICAkS2ZpcnN0IDw9IDAgPyAwIDogJHJMTC0+WyAkS2ZpcnN0IC0gMSBdLT5bX0NVTVVMQVRJVkVfTEVOR1RIX107CiAgICAgICAgICAgICRzdGFydGluZ19pbmRlbnQgPSAwOwogICAgICAgICAgICBpZiAoICEkck9wdHNfdmFyaWFibGVfbWF4aW11bV9saW5lX2xlbmd0aCApIHsKICAgICAgICAgICAgICAgIG15ICRsZXZlbCA9ICRyTEwtPlskS2ZpcnN0XS0+W19MRVZFTF9dOwogICAgICAgICAgICAgICAgJHN0YXJ0aW5nX2luZGVudCA9ICRyT3B0c19pbmRlbnRfY29sdW1ucyAqICRsZXZlbDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBETy1OT1QtV0VMRCBSVUxFIDE6CiAgICAgICAgICAgICMgRG8gbm90IHdlbGQgc29tZXRoaW5nIHRoYXQgbG9va3MgbGlrZSB0aGUgc3RhcnQgb2YgYSB0d28tbGluZQogICAgICAgICAgICAjIGZ1bmN0aW9uIGNhbGwsIGxpa2UgdGhpczogPDxzbmlwcGV0cy93bjYuaW4+PgogICAgICAgICAgICAjICAgICR0cmFucy0+YWRkX3RyYW5zZm9ybWF0aW9uKAogICAgICAgICAgICAjICAgICAgICBQREw6OkdyYXBoaWNzOjpUcmlEOjpTY2FsZS0+bmV3KCAkc3gsICRzeSwgJHN6ICkgKTsKICAgICAgICAgICAgIyBXZSB3aWxsIGxvb2sgZm9yIGEgc2VtaWNvbG9uIGFmdGVyIHRoZSBjbG9zaW5nIHBhcmVuLgoKICAgICAgICAgICAgIyBXZSB3YW50IHRvIHdlbGQgc29tZXRoaW5nIGNvbXBsZXgsIGxpa2UgdGhpcyB0aG91Z2gKICAgICAgICAgICAgIyBteSAkY29tcGFzcyA9IHVjKCBvcHBvc2l0ZV9kaXJlY3Rpb24oIGxpbmVfdG9fY2FudmFzX2RpcmVjdGlvbigKICAgICAgICAgICAgIyAgICAgQHsgJGNvb3Jkc1swXSB9LCBAeyAkY29vcmRzWzFdIH0gKSApICk7CiAgICAgICAgICAgICMgT3RoZXJ3aXNlIHdlIHdpbGwgZ2V0IGEgJ2JsaW5rZXInCgogICAgICAgICAgICBteSAkaWxpbmVfb2MgPSAkb3V0ZXJfY2xvc2luZy0+W19MSU5FX0lOREVYX107CiAgICAgICAgICAgIGlmICggJGlsaW5lX29jIDw9ICRpbGluZV9vbyArIDEgKSB7CgogICAgICAgICAgICAgICAgIyBMb29rIGZvciBmb2xsb3dpbmcgc2VtaWNvbG9uLi4uCiAgICAgICAgICAgICAgICBteSAkS25leHRfbm9uYmxhbmsgPSAkc2VsZi0+S19uZXh0X25vbmJsYW5rKCRLb3V0ZXJfY2xvc2luZyk7CiAgICAgICAgICAgICAgICBteSAkbmV4dF9ub25ibGFua190eXBlID0KICAgICAgICAgICAgICAgICAgZGVmaW5lZCgkS25leHRfbm9uYmxhbmspCiAgICAgICAgICAgICAgICAgID8gJHJMTC0+WyRLbmV4dF9ub25ibGFua10tPltfVFlQRV9dCiAgICAgICAgICAgICAgICAgIDogJ2InOwogICAgICAgICAgICAgICAgaWYgKCAkbmV4dF9ub25ibGFua190eXBlIGVxICc7JyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBUaGVuIGRvIG5vdCB3ZWxkIGlmIG5vIG90aGVyIGNvbnRhaW5lcnMgYmV0d2VlbiBpbm5lcgogICAgICAgICAgICAgICAgICAgICMgb3BlbmluZyBhbmQgY2xvc2luZy4KICAgICAgICAgICAgICAgICAgICBteSAkS25leHRfc2VxX2l0ZW0gPSAkaW5uZXJfb3BlbmluZy0+W19LTkVYVF9TRVFfSVRFTV9dOwogICAgICAgICAgICAgICAgICAgIGlmICggJEtuZXh0X3NlcV9pdGVtID09ICRLaW5uZXJfY2xvc2luZyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGRvX25vdF93ZWxkIHx8PSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJGlsaW5lX2ljID0gJGlubmVyX2Nsb3NpbmctPltfTElORV9JTkRFWF9dOwoKICAgICAgICAjIERPLU5PVC1XRUxEIFJVTEUgMjoKICAgICAgICAjIERvIG5vdCB3ZWxkIGFuIG9wZW5pbmcgcGFyZW4gdG8gYW4gaW5uZXIgb25lIGxpbmUgYnJhY2UgYmxvY2sKICAgICAgICAjIFdlIHdpbGwganVzdCB1c2Ugb2xkIGxpbmUgbnVtYmVycyBmb3IgdGhpcyB0ZXN0IGFuZCByZXF1aXJlCiAgICAgICAgIyBpdGVyYXRpb25zIGlmIG5lY2Vzc2FyeSBmb3IgY29udmVyZ2VuY2UKCiAgICAgICAgIyBGb3IgZXhhbXBsZSwgb3RoZXJ3aXNlIHdlIGNvdWxkIGNhdXNlIHRoZSBvcGVuaW5nIHBhcmVuCiAgICAgICAgIyBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUgdG8gc2VwYXJhdGUgZnJvbSB0aGUgY2FsbGVyIG5hbWUKICAgICAgICAjIGFzIGhlcmU6CgogICAgICAgICMgICAgJF9bMF0tPmNvZGVfaGFuZGxlcgogICAgICAgICMgICAgIAkoIHN1YiB7ICRtb3JlIC49ICRfWzFdIC4gIjoiIC4gJF9bMF0gLiAiXG4iIH0gKTsKCiAgICAgICAgIyBIZXJlIGlzIGFub3RoZXIgZXhhbXBsZSB3aGVyZSB3ZSBkbyBub3Qgd2FudCB0byB3ZWxkOgogICAgICAgICMgICR3cmFwcGVkLT5hZGRfYXJvdW5kX21vZGlmaWVyKAogICAgICAgICMgICAgc3ViIHsgcHVzaCBAdHJhY2Vsb2cgPT4gJ2Fyb3VuZCAxJzsgJF9bMF0tPigpOyB9ICk7CgogICAgICAgICMgSWYgdGhlIG9uZSBsaW5lIHN1YiBibG9jayBnZXRzIGJyb2tlbiBkdWUgdG8gbGVuZ3RoIG9yIGJ5IHRoZQogICAgICAgICMgdXNlciwgdGhlbiB3ZSBjYW4gd2VsZC4gIFRoZSByZXN1bHQgd2lsbCB0aGVuIGJlOgogICAgICAgICMgJHdyYXBwZWQtPmFkZF9hcm91bmRfbW9kaWZpZXIoIHN1YiB7CiAgICAgICAgIyAgICBwdXNoIEB0cmFjZWxvZyA9PiAnYXJvdW5kIDEnOwogICAgICAgICMgICAgJF9bMF0tPigpOwogICAgICAgICMgfSApOwoKICAgICAgICBpZiAoICRpbGluZV9pYyA9PSAkaWxpbmVfaW8gKSB7CgogICAgICAgICAgICBteSAkdG9rZW5fb28gICAgICA9ICRvdXRlcl9vcGVuaW5nLT5bX1RPS0VOX107CiAgICAgICAgICAgIG15ICRibG9ja190eXBlX2lvID0gJGlubmVyX29wZW5pbmctPltfQkxPQ0tfVFlQRV9dOwogICAgICAgICAgICBteSAkdG9rZW5faW8gICAgICA9ICRpbm5lcl9vcGVuaW5nLT5bX1RPS0VOX107CiAgICAgICAgICAgICRkb19ub3Rfd2VsZCB8fD0gJHRva2VuX29vIGVxICcoJyAmJiAkdG9rZW5faW8gZXEgJ3snOwogICAgICAgIH0KCiAgICAgICAgIyBETy1OT1QtV0VMRCBSVUxFIDM6CiAgICAgICAgIyBEbyBub3Qgd2VsZCBpZiB0aGlzIG1ha2VzIG91ciBsaW5lIHRvbyBsb25nCiAgICAgICAgJGRvX25vdF93ZWxkIHx8PSAkZXhjZXNzX2xlbmd0aF90b19LLT4oJEtpbm5lcl9vcGVuaW5nKSA+IDA7CgogICAgICAgICMgRE8tTk9ULVdFTEQgUlVMRSA0OyBpbXBsZW1lbnRlZCBmb3IgZ2l0IzEwOgogICAgICAgICMgRG8gbm90IHdlbGQgYW4gb3BlbmluZyAtY2UgYnJhY2UgaWYgdGhlIG5leHQgY29udGFpbmVyIGlzIG9uIGEgc2luZ2xlCiAgICAgICAgIyBsaW5lLCBkaWZmZXJlbnQgZnJvbSB0aGUgb3BlbmluZyBicmFjZS4gKFRoaXMgaXMgdmVyeSByYXJlKS4gIEZvcgogICAgICAgICMgZXhhbXBsZSwgZ2l2ZW4gdGhlIGZvbGxvd2luZyB3aXRoIC1jZSwgd2Ugd2lsbCBhdm9pZCBqb2luaW5nIHRoZSB7CiAgICAgICAgIyBhbmQgWwoKICAgICAgICAjICB9IGVsc2UgewogICAgICAgICMgICAgICBbICRfLCBsZW5ndGgoJF8pIF0KICAgICAgICAjICB9CgogICAgICAgICMgYmVjYXVzZSB0aGlzIHdvdWxkIHByb2R1Y2UgYSB0ZXJtaW5hbCBvbmUtbGluZSBibG9jazoKCiAgICAgICAgIyAgfSBlbHNlIHsgWyAkXywgbGVuZ3RoKCRfKSBdICB9CgogICAgICAgICMgd2hpY2ggbWF5IG5vdCBiZSB3aGF0IGlzIGRlc2lyZWQuIEJ1dCBnaXZlbiB0aGlzIGlucHV0OgoKICAgICAgICAjICB9IGVsc2UgeyBbICRfLCBsZW5ndGgoJF8pIF0gIH0KCiAgICAgICAgIyB0aGVuIHdlIHdpbGwgZG8gdGhlIHdlbGQgYW5kIHJldGFpbiB0aGUgb25lLWxpbmUgYmxvY2sKICAgICAgICBpZiAoICRyT3B0cy0+eydjdWRkbGVkLWVsc2UnfSApIHsKICAgICAgICAgICAgbXkgJGJsb2NrX3R5cGUgPSAkckxMLT5bJEtvdXRlcl9vcGVuaW5nXS0+W19CTE9DS19UWVBFX107CiAgICAgICAgICAgIGlmICggJGJsb2NrX3R5cGUgJiYgJHJjdWRkbGVkX2Jsb2NrX3R5cGVzLT57JyonfS0+eyRibG9ja190eXBlfSApIHsKICAgICAgICAgICAgICAgIG15ICRpb19saW5lID0gJGlubmVyX29wZW5pbmctPltfTElORV9JTkRFWF9dOwogICAgICAgICAgICAgICAgbXkgJGljX2xpbmUgPSAkaW5uZXJfY2xvc2luZy0+W19MSU5FX0lOREVYX107CiAgICAgICAgICAgICAgICBteSAkb29fbGluZSA9ICRvdXRlcl9vcGVuaW5nLT5bX0xJTkVfSU5ERVhfXTsKICAgICAgICAgICAgICAgICRkb19ub3Rfd2VsZCB8fD0KICAgICAgICAgICAgICAgICAgKCAkb29fbGluZSA8ICRpb19saW5lICYmICRpY19saW5lID09ICRpb19saW5lICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkZG9fbm90X3dlbGQpIHsKCiAgICAgICAgICAgICMgQWZ0ZXIgbmVnbGVjdGluZyBhIHBhaXIsIHdlIHN0YXJ0IG1lYXN1cmluZyBmcm9tIHN0YXJ0IG9mIHBvaW50IGlvCiAgICAgICAgICAgICRzdGFydGluZ19sZW50b3QgPQogICAgICAgICAgICAgICRzZWxmLT5jdW11bGF0aXZlX2xlbmd0aF9iZWZvcmVfSygkS2lubmVyX29wZW5pbmcpOwogICAgICAgICAgICAkc3RhcnRpbmdfaW5kZW50ID0gMDsKICAgICAgICAgICAgaWYgKCAhJHJPcHRzX3ZhcmlhYmxlX21heGltdW1fbGluZV9sZW5ndGggKSB7CiAgICAgICAgICAgICAgICBteSAkbGV2ZWwgPSAkaW5uZXJfb3BlbmluZy0+W19MRVZFTF9dOwogICAgICAgICAgICAgICAgJHN0YXJ0aW5nX2luZGVudCA9ICRyT3B0c19pbmRlbnRfY29sdW1ucyAqICRsZXZlbDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBOb3JtYWxseSwgYSBicm9rZW4gcGFpciBzaG91bGQgbm90IGRlY3JlYXNlIGluZGVudGF0aW9uIG9mCiAgICAgICAgICAgICMgaW50ZXJtZWRpYXRlIHRva2VuczoKICAgICAgICAgICAgIyMgICAgICBpZiAoICRsYXN0X3BhaXJfYnJva2VuICkgeyBuZXh0IH0KICAgICAgICAgICAgIyBIb3dldmVyLCBmb3IgbG9uZyBzdHJpbmdzIG9mIHdlbGRlZCB0b2tlbnMsIHN1Y2ggYXMgJ3t7e3t7ey4uLicKICAgICAgICAgICAgIyB3ZSB3aWxsIGFsbG93IGJyb2tlbiBwYWlycyB0byBhbHNvIHJlbW92ZSBpbmRlbnRhdGlvbi4KICAgICAgICAgICAgIyBUaGlzIHdpbGwga2VlcCB2ZXJ5IGxvbmcgc3RyaW5ncyBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nCiAgICAgICAgICAgICMgYnJhY2VzIGZyb20gbWFyY2hpbmcgb2ZmIHRvIHRoZSByaWdodC4gIFdlIHdpbGwgZG8gdGhpcyBpZiB0aGUKICAgICAgICAgICAgIyBudW1iZXIgb2YgdG9rZW5zIGluIGEgd2VsZCBiZWZvcmUgdGhlIGJyb2tlbiB3ZWxkIGlzIDQgb3IgbW9yZS4KICAgICAgICAgICAgIyBUaGlzIHJ1bGUgd2lsbCBtYWlubHkgYmUgbmVlZGVkIGZvciB0ZXN0IHNjcmlwdHMsIHNpbmNlIHR5cGljYWwKICAgICAgICAgICAgIyB3ZWxkcyBoYXZlIGZld2VyIHRoYW4gYWJvdXQgNCB3ZWxkZWQgdG9rZW5zLgogICAgICAgICAgICBpZiAoICFAd2VsZHMgfHwgQHsgJHdlbGRzWy0xXSB9IDwgNCApIHsgbmV4dCB9CiAgICAgICAgfQoKICAgICAgICAjIG90aGVyd2lzZSBzdGFydCBuZXcgd2VsZCAuLi4KICAgICAgICBlbHNpZiAoJHN0YXJ0aW5nX25ld193ZWxkKSB7CiAgICAgICAgICAgIHB1c2ggQHdlbGRzLCAkaXRlbTsKICAgICAgICB9CgogICAgICAgICMgLi4uIG9yIGV4dGVuZCBjdXJyZW50IHdlbGQKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdW5zaGlmdCBAeyAkd2VsZHNbLTFdIH0sICRpbm5lcl9zZXFubzsKICAgICAgICB9CgogICAgICAgICMgQWZ0ZXIgd2VsZGluZywgcmVkdWNlIHRoZSBpbmRlbnRhdGlvbiBsZXZlbCBpZiBhbGwgaW50ZXJtZWRpYXRlIHRva2VucwogICAgICAgIG15ICRkbGV2ZWwgPSAkb3V0ZXJfb3BlbmluZy0+W19MRVZFTF9dIC0gJGlubmVyX29wZW5pbmctPltfTEVWRUxfXTsKICAgICAgICBpZiAoICRkbGV2ZWwgIT0gMCApIHsKICAgICAgICAgICAgbXkgJEtzdGFydCA9ICRLaW5uZXJfb3BlbmluZzsKICAgICAgICAgICAgbXkgJEtzdG9wICA9ICRLaW5uZXJfY2xvc2luZzsKICAgICAgICAgICAgZm9yICggbXkgJEtLID0gJEtzdGFydCA7ICRLSyA8PSAkS3N0b3AgOyAkS0srKyApIHsKICAgICAgICAgICAgICAgICRyTEwtPlskS0tdLT5bX0xFVkVMX10gKz0gJGRsZXZlbDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIERlZmluZSB3ZWxkIGxlbmd0aHMgbmVlZGVkIGxhdGVyIHRvIHNldCBsaW5lIGJyZWFrcwogICAgZm9yZWFjaCBteSAkaXRlbSAoQHdlbGRzKSB7CgogICAgICAgICMgc3dlZXAgZnJvbSBpbm5lciB0byBvdXRlcgoKICAgICAgICBteSAkaW5uZXJfc2Vxbm87CiAgICAgICAgbXkgJGxlbl9jbG9zZSA9IDA7CiAgICAgICAgbXkgJGxlbl9vcGVuICA9IDA7CiAgICAgICAgZm9yZWFjaCBteSAkb3V0ZXJfc2Vxbm8gKCBAeyRpdGVtfSApIHsKICAgICAgICAgICAgaWYgKCRpbm5lcl9zZXFubykgewoKICAgICAgICAgICAgICAgIG15ICRkbGVuX29wZW5pbmcgPQogICAgICAgICAgICAgICAgICAkbGVuZ3RoX3RvX29wZW5pbmdfc2Vxbm8tPigkaW5uZXJfc2Vxbm8pIC0KICAgICAgICAgICAgICAgICAgJGxlbmd0aF90b19vcGVuaW5nX3NlcW5vLT4oJG91dGVyX3NlcW5vKTsKCiAgICAgICAgICAgICAgICBteSAkZGxlbl9jbG9zaW5nID0KICAgICAgICAgICAgICAgICAgJGxlbmd0aF90b19jbG9zaW5nX3NlcW5vLT4oJG91dGVyX3NlcW5vKSAtCiAgICAgICAgICAgICAgICAgICRsZW5ndGhfdG9fY2xvc2luZ19zZXFuby0+KCRpbm5lcl9zZXFubyk7CgogICAgICAgICAgICAgICAgJGxlbl9vcGVuICArPSAkZGxlbl9vcGVuaW5nOwogICAgICAgICAgICAgICAgJGxlbl9jbG9zZSArPSAkZGxlbl9jbG9zaW5nOwoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHdlbGRfbGVuX2xlZnRfY2xvc2luZ3skb3V0ZXJfc2Vxbm99ICA9ICRsZW5fY2xvc2U7CiAgICAgICAgICAgICR3ZWxkX2xlbl9yaWdodF9vcGVuaW5neyRvdXRlcl9zZXFub30gPSAkbGVuX29wZW47CgogICAgICAgICAgICAkaW5uZXJfc2Vxbm8gPSAkb3V0ZXJfc2Vxbm87CiAgICAgICAgfQoKICAgICAgICAjIHN3ZWVwIGZyb20gb3V0ZXIgdG8gaW5uZXIKICAgICAgICBmb3JlYWNoIG15ICRzZXFubyAoIHJldmVyc2UgQHskaXRlbX0gKSB7CiAgICAgICAgICAgICR3ZWxkX2xlbl9yaWdodF9jbG9zaW5neyRzZXFub30gPQogICAgICAgICAgICAgICRsZW5fY2xvc2UgLSAkd2VsZF9sZW5fbGVmdF9jbG9zaW5neyRzZXFub307CiAgICAgICAgICAgICR3ZWxkX2xlbl9sZWZ0X29wZW5pbmd7JHNlcW5vfSA9CiAgICAgICAgICAgICAgJGxlbl9vcGVuIC0gJHdlbGRfbGVuX3JpZ2h0X29wZW5pbmd7JHNlcW5vfTsKICAgICAgICB9CiAgICB9CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBERUJVRwogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgaWYgKDApIHsKICAgICAgICBteSAkY291bnQgPSAwOwogICAgICAgIGxvY2FsICQiID0gJykoJzsKICAgICAgICBmb3JlYWNoIG15ICR3ZWxkIChAd2VsZHMpIHsKICAgICAgICAgICAgcHJpbnQgIlxuV2VsZCBudW1iZXIgJGNvdW50IGhhcyBzZXE6IChAeyR3ZWxkfSlcbiI7CiAgICAgICAgICAgIGZvcmVhY2ggbXkgJHNlcSAoIEB7JHdlbGR9ICkgewogICAgICAgICAgICAgICAgcHJpbnQgPDxFT007CglzZXE9JHNlcQogICAgICAgIGxlZnRfb3BlbmluZz0kd2VsZF9sZW5fbGVmdF9vcGVuaW5neyRzZXF9OwogICAgICAgIHJpZ2h0X29wZW5pbmc9JHdlbGRfbGVuX3JpZ2h0X29wZW5pbmd7JHNlcX07CiAgICAgICAgbGVmdF9jbG9zaW5nPSR3ZWxkX2xlbl9sZWZ0X2Nsb3Npbmd7JHNlcX07CiAgICAgICAgcmlnaHRfY2xvc2luZz0kd2VsZF9sZW5fcmlnaHRfY2xvc2luZ3skc2VxfTsKRU9NCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRjb3VudCsrOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybjsKfQoKc3ViIHdlbGRfbmVzdGVkX3F1b3RlcyB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwoKICAgIG15ICRyTEwgPSAkc2VsZi0+e3JMTH07CiAgICByZXR1cm4gdW5sZXNzICggZGVmaW5lZCgkckxMKSAmJiBAeyRyTEx9ICk7CgogICAgbXkgJEtfb3BlbmluZ19jb250YWluZXIgPSAkc2VsZi0+e0tfb3BlbmluZ19jb250YWluZXJ9OwogICAgbXkgJEtfY2xvc2luZ19jb250YWluZXIgPSAkc2VsZi0+e0tfY2xvc2luZ19jb250YWluZXJ9OwogICAgbXkgJHJsaW5lcyAgICAgICAgICAgICAgPSAkc2VsZi0+e3JsaW5lc307CgogICAgbXkgJGlzX3NpbmdsZV9xdW90ZSA9IHN1YiB7CiAgICAgICAgbXkgKCAkS2JlZywgJEtlbmQsICRxdW90ZV90eXBlICkgPSBAXzsKICAgICAgICBmb3JlYWNoIG15ICRLICggJEtiZWcgLi4gJEtlbmQgKSB7CiAgICAgICAgICAgIG15ICR0ZXN0X3R5cGUgPSAkckxMLT5bJEtdLT5bX1RZUEVfXTsKICAgICAgICAgICAgbmV4dCAgIGlmICggJHRlc3RfdHlwZSBlcSAnYicgKTsKICAgICAgICAgICAgcmV0dXJuIGlmICggJHRlc3RfdHlwZSBuZSAkcXVvdGVfdHlwZSApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gMTsKICAgIH07CgogICAgbXkgJGV4Y2Vzc19saW5lX2xlbmd0aCA9IHN1YiB7CiAgICAgICAgbXkgKCAkS0ssICRLdGVzdCApID0gQF87CgogICAgICAgICMgd2hhdCBpcyB0aGUgZXhjZXNzIGxlbmd0aCBpZiB3ZSBhZGQgdG9rZW4gJEt0ZXN0IHRvIHRoZSBsaW5lIHdpdGggJEtLPwogICAgICAgIG15ICRpbGluZSAgICA9ICRyTEwtPlskS0tdLT5bX0xJTkVfSU5ERVhfXTsKICAgICAgICBteSAkcktfcmFuZ2UgPSAkcmxpbmVzLT5bJGlsaW5lXS0+e19yS19yYW5nZX07CiAgICAgICAgbXkgKCAkS2ZpcnN0LCAkS2xhc3QgKSA9IEB7JHJLX3JhbmdlfTsKICAgICAgICBteSAkc3RhcnRpbmdfbGVudG90ID0KICAgICAgICAgICRLZmlyc3QgPD0gMCA/IDAgOiAkckxMLT5bICRLZmlyc3QgLSAxIF0tPltfQ1VNVUxBVElWRV9MRU5HVEhfXTsKICAgICAgICBteSAkc3RhcnRpbmdfaW5kZW50ID0gMDsKICAgICAgICBteSAkbGVuZ3RoX3RvbCAgICAgID0gMTsKICAgICAgICBpZiAoICEkck9wdHNfdmFyaWFibGVfbWF4aW11bV9saW5lX2xlbmd0aCApIHsKICAgICAgICAgICAgbXkgJGxldmVsID0gJHJMTC0+WyRLZmlyc3RdLT5bX0xFVkVMX107CiAgICAgICAgICAgICRzdGFydGluZ19pbmRlbnQgPSAkck9wdHNfaW5kZW50X2NvbHVtbnMgKiAkbGV2ZWw7CiAgICAgICAgfQoKICAgICAgICBteSAkbGVuZ3RoID0gJHJMTC0+WyRLdGVzdF0tPltfQ1VNVUxBVElWRV9MRU5HVEhfXSAtICRzdGFydGluZ19sZW50b3Q7CiAgICAgICAgbXkgJGV4Y2Vzc19sZW5ndGggPQogICAgICAgICAgJHN0YXJ0aW5nX2luZGVudCArICRsZW5ndGggKyAkbGVuZ3RoX3RvbCAtICRyT3B0c19tYXhpbXVtX2xpbmVfbGVuZ3RoOwogICAgICAgIHJldHVybiAkZXhjZXNzX2xlbmd0aDsKICAgIH07CgogICAgIyBsb29rIGZvciBzaW5nbGUgcXcgcXVvdGVzIG5lc3RlZCBpbiBjb250YWluZXJzCiAgICBteSAkS05FWFQgPSAwOwogICAgd2hpbGUgKCBkZWZpbmVkKCRLTkVYVCkgKSB7CiAgICAgICAgbXkgJEtLID0gJEtORVhUOwogICAgICAgICRLTkVYVCA9ICRyTEwtPlskS05FWFRdLT5bX0tORVhUX1NFUV9JVEVNX107CiAgICAgICAgbXkgJHJ0b2tlbl92YXJzID0gJHJMTC0+WyRLS107CiAgICAgICAgbXkgJG91dGVyX3NlcW5vID0gJHJ0b2tlbl92YXJzLT5bX1RZUEVfU0VRVUVOQ0VfXTsKICAgICAgICBpZiAoICEkb3V0ZXJfc2Vxbm8gKSB7CiAgICAgICAgICAgIG5leHQgaWYgKCAkS0sgPT0gMCApOyAgICAjIGZpcnN0IHRva2VuIGluIGZpbGUgbWF5IG5vdCBiZSBjb250YWluZXIKICAgICAgICAgICAgRmF1bHQoInNlcXVlbmNlID0gJG91dGVyX3NlcW5vIG5vdCBkZWZpbmVkIGF0IEs9JEtLIik7CiAgICAgICAgfQoKICAgICAgICBteSAkdG9rZW4gPSAkcnRva2VuX3ZhcnMtPltfVE9LRU5fXTsKICAgICAgICBpZiAoICRpc19vcGVuaW5nX3Rva2VueyR0b2tlbn0gKSB7CgogICAgICAgICAgICAjIHNlZSBpZiB0aGUgbmV4dCB0b2tlbiBpcyBhIHF1b3RlIG9mIHNvbWUgdHlwZQogICAgICAgICAgICBteSAkS24gPSAkc2VsZi0+S19uZXh0X25vbmJsYW5rKCRLSyk7CiAgICAgICAgICAgIG5leHQgdW5sZXNzICRLbjsKICAgICAgICAgICAgbXkgJG5leHRfdG9rZW4gPSAkckxMLT5bJEtuXS0+W19UT0tFTl9dOwogICAgICAgICAgICBteSAkbmV4dF90eXBlICA9ICRyTEwtPlskS25dLT5bX1RZUEVfXTsKICAgICAgICAgICAgbmV4dAogICAgICAgICAgICAgIHVubGVzcyAoICggJG5leHRfdHlwZSBlcSAncScgfHwgJG5leHRfdHlwZSBlcSAnUScgKQogICAgICAgICAgICAgICAgJiYgJG5leHRfdG9rZW4gPX4gL15xLyApOwoKICAgICAgICAgICAgIyBUaGUgdG9rZW4gYmVmb3JlIHRoZSBjbG9zaW5nIGNvbnRhaW5lciBtdXN0IGFsc28gYmUgYSBxdW90ZQogICAgICAgICAgICBteSAkS19jbG9zaW5nID0gJEtfY2xvc2luZ19jb250YWluZXItPnskb3V0ZXJfc2Vxbm99OwogICAgICAgICAgICBteSAkS3RfZW5kICAgID0gJHNlbGYtPktfcHJldmlvdXNfbm9uYmxhbmsoJEtfY2xvc2luZyk7CiAgICAgICAgICAgIG5leHQgdW5sZXNzICRyTEwtPlskS3RfZW5kXS0+W19UWVBFX10gZXEgJG5leHRfdHlwZTsKCiAgICAgICAgICAgICMgRG8gbm90IHdlbGQgdG8gc2luZ2xlLWxpbmUgcXVvdGVzLiBOb3RoaW5nIGlzIGdhaW5lZCwgYW5kIGl0IG1heQogICAgICAgICAgICAjIGxvb2sgYmFkLgogICAgICAgICAgICBuZXh0IGlmICggJEt0X2VuZCA9PSAkS24gKTsKCiAgICAgICAgICAgICMgT25seSB3ZWxkIHRvIHF1b3RlcyBkZWxpbWl0ZWQgd2l0aCBjb250YWluZXIgdG9rZW5zLiBUaGlzIGlzCiAgICAgICAgICAgICMgYmVjYXVzZSB3ZWxkaW5nIHRvIGFyYml0cmFyeSBxdW90ZSBkZWxpbWl0ZXJzIGNhbiBwcm9kdWNlIGNvZGUKICAgICAgICAgICAgIyB3aGljaCBpcyBsZXNzIHJlYWRhYmxlIHRoYW4gd2l0aG91dCB3ZWxkaW5nLgogICAgICAgICAgICBteSAkY2xvc2luZ19kZWxpbWl0ZXIgPSBzdWJzdHIoICRyTEwtPlskS3RfZW5kXS0+W19UT0tFTl9dLCAtMSwgMSApOwogICAgICAgICAgICBuZXh0CiAgICAgICAgICAgICAgdW5sZXNzICggJGlzX2Nsb3NpbmdfdG9rZW57JGNsb3NpbmdfZGVsaW1pdGVyfQogICAgICAgICAgICAgICAgfHwgJGNsb3NpbmdfZGVsaW1pdGVyIGVxICc+JyApOwoKICAgICAgICAgICAgIyBOb3cgbWFrZSBzdXJlIHRoYXQgdGhlcmUgaXMganVzdCBhIHNpbmdsZSBxdW90ZSBpbiB0aGUgY29udGFpbmVyCiAgICAgICAgICAgIG5leHQKICAgICAgICAgICAgICB1bmxlc3MgKCAkaXNfc2luZ2xlX3F1b3RlLT4oICRLbiArIDEsICRLdF9lbmQgLSAxLCAkbmV4dF90eXBlICkgKTsKCiAgICAgICAgICAgICMgSWYgd2VsZGVkLCB0aGUgbGluZSBtdXN0IG5vdCBleGNlZWQgYWxsb3dlZCBsaW5lIGxlbmd0aAogICAgICAgICAgICAjIEFzc3VtZSBvbGQgbGluZSBicmVha3MgZm9yIHRoaXMgZXN0aW1hdGUuCiAgICAgICAgICAgIG5leHQgaWYgKCAkZXhjZXNzX2xpbmVfbGVuZ3RoLT4oICRLSywgJEtuICkgPiAwICk7CgogICAgICAgICAgICAjIE9LIHRvIHdlbGQKICAgICAgICAgICAgIyBGSVhNRTogQXJlIHRoZXNlIGFsd2F5cyBjb3JyZWN0PwogICAgICAgICAgICAkd2VsZF9sZW5fbGVmdF9jbG9zaW5neyRvdXRlcl9zZXFub30gID0gMTsKICAgICAgICAgICAgJHdlbGRfbGVuX3JpZ2h0X29wZW5pbmd7JG91dGVyX3NlcW5vfSA9IDI7CgogICAgICAgICAgICAjIFFXIFBBVENIIDEgKFRlc3RpbmcpCiAgICAgICAgICAgICMgdW5kbyBDSSBmb3Igd2VsZGVkIHF1b3RlcwogICAgICAgICAgICBmb3JlYWNoIG15ICRLICggJEtuIC4uICRLdF9lbmQgKSB7CiAgICAgICAgICAgICAgICAkckxMLT5bJEtdLT5bX0NJX0xFVkVMX10gPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIENoYW5nZSB0aGUgbGV2ZWwgb2YgYSBjbG9zaW5nIHF3IHRva2VuIHRvIGJlIHRoYXQgb2YgdGhlIG91dGVyCiAgICAgICAgICAgICMgY29udGFpbmluZyB0b2tlbi4gVGhpcyB3aWxsIGFsbG93IC1scCBpbmRlbnRhdGlvbiB0byBmdW5jdGlvbgogICAgICAgICAgICAjIGNvcnJlY3RseSBpbiB0aGUgdmVydGljYWwgYWxpZ25lci4KICAgICAgICAgICAgJHJMTC0+WyRLdF9lbmRdLT5bX0xFVkVMX10gPSAkckxMLT5bJEtfY2xvc2luZ10tPltfTEVWRUxfXTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiB3ZWxkX2xlbl9sZWZ0IHsKCiAgICBteSAoICRzZXFubywgJHR5cGVfb3JfdG9rICkgPSBAXzsKCiAgICAjIEdpdmVuIHRoZSBzZXF1ZW5jZSBudW1iZXIgb2YgYSB0b2tlbiwgYW5kIHRoZSB0b2tlbiBvciBpdHMgdHlwZSwKICAgICMgcmV0dXJuIHRoZSBsZW5ndGggb2YgYW55IHdlbGQgdG8gaXRzIGxlZnQKCiAgICBteSAkd2VsZF9sZW47CiAgICBpZiAoJHNlcW5vKSB7CiAgICAgICAgaWYgKCAkaXNfY2xvc2luZ190eXBleyR0eXBlX29yX3Rva30gKSB7CiAgICAgICAgICAgICR3ZWxkX2xlbiA9ICR3ZWxkX2xlbl9sZWZ0X2Nsb3Npbmd7JHNlcW5vfTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkaXNfb3BlbmluZ190eXBleyR0eXBlX29yX3Rva30gKSB7CiAgICAgICAgICAgICR3ZWxkX2xlbiA9ICR3ZWxkX2xlbl9sZWZ0X29wZW5pbmd7JHNlcW5vfTsKICAgICAgICB9CiAgICB9CiAgICBpZiAoICFkZWZpbmVkKCR3ZWxkX2xlbikgKSB7ICR3ZWxkX2xlbiA9IDAgfQogICAgcmV0dXJuICR3ZWxkX2xlbjsKfQoKc3ViIHdlbGRfbGVuX3JpZ2h0IHsKCiAgICBteSAoICRzZXFubywgJHR5cGVfb3JfdG9rICkgPSBAXzsKCiAgICAjIEdpdmVuIHRoZSBzZXF1ZW5jZSBudW1iZXIgb2YgYSB0b2tlbiwgYW5kIHRoZSB0b2tlbiBvciBpdHMgdHlwZSwKICAgICMgcmV0dXJuIHRoZSBsZW5ndGggb2YgYW55IHdlbGQgdG8gaXRzIHJpZ2h0CgogICAgbXkgJHdlbGRfbGVuOwogICAgaWYgKCRzZXFubykgewogICAgICAgIGlmICggJGlzX2Nsb3NpbmdfdHlwZXskdHlwZV9vcl90b2t9ICkgewogICAgICAgICAgICAkd2VsZF9sZW4gPSAkd2VsZF9sZW5fcmlnaHRfY2xvc2luZ3skc2Vxbm99OwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRpc19vcGVuaW5nX3R5cGV7JHR5cGVfb3JfdG9rfSApIHsKICAgICAgICAgICAgJHdlbGRfbGVuID0gJHdlbGRfbGVuX3JpZ2h0X29wZW5pbmd7JHNlcW5vfTsKICAgICAgICB9CiAgICB9CiAgICBpZiAoICFkZWZpbmVkKCR3ZWxkX2xlbikgKSB7ICR3ZWxkX2xlbiA9IDAgfQogICAgcmV0dXJuICR3ZWxkX2xlbjsKfQoKc3ViIHdlbGRfbGVuX2xlZnRfdG9fZ28gewogICAgbXkgKCRpKSA9IEBfOwoKICAgICMgR2l2ZW4gdGhlIGluZGV4IG9mIGEgdG9rZW4gaW4gdGhlICd0b19nbycgYXJyYXkKICAgICMgcmV0dXJuIHRoZSBsZW5ndGggb2YgYW55IHdlbGQgdG8gaXRzIGxlZnQKICAgIHJldHVybiBpZiAoICRpIDwgMCApOwogICAgbXkgJHdlbGRfbGVuID0KICAgICAgd2VsZF9sZW5fbGVmdCggJHR5cGVfc2VxdWVuY2VfdG9fZ29bJGldLCAkdHlwZXNfdG9fZ29bJGldICk7CiAgICByZXR1cm4gJHdlbGRfbGVuOwp9CgpzdWIgd2VsZF9sZW5fcmlnaHRfdG9fZ28gewogICAgbXkgKCRpKSA9IEBfOwoKICAgICMgR2l2ZW4gdGhlIGluZGV4IG9mIGEgdG9rZW4gaW4gdGhlICd0b19nbycgYXJyYXkKICAgICMgcmV0dXJuIHRoZSBsZW5ndGggb2YgYW55IHdlbGQgdG8gaXRzIHJpZ2h0CiAgICByZXR1cm4gaWYgKCAkaSA8IDAgKTsKICAgIGlmICggJGkgPiAwICYmICR0eXBlc190b19nb1skaV0gZXEgJ2InICkgeyAkaS0tIH0KICAgIG15ICR3ZWxkX2xlbiA9CiAgICAgIHdlbGRfbGVuX3JpZ2h0KCAkdHlwZV9zZXF1ZW5jZV90b19nb1skaV0sICR0eXBlc190b19nb1skaV0gKTsKICAgIHJldHVybiAkd2VsZF9sZW47Cn0KCnN1YiBsaW5rX3NlcXVlbmNlX2l0ZW1zIHsKCiAgICAjIFRoaXMgaGFzIGJlZW4gbWVyZ2VkIGludG8gJ3Jlc3BhY2VfdG9rZW5zJyBidXQgcmV0YWluZWQgZm9yIHJlZmVyZW5jZQogICAgbXkgJHNlbGYgICA9IHNoaWZ0OwogICAgbXkgJHJsaW5lcyA9ICRzZWxmLT57cmxpbmVzfTsKICAgIG15ICRyTEwgICAgPSAkc2VsZi0+e3JMTH07CgogICAgIyBXZSB3YWxrIHRoZSB0b2tlbiBsaXN0IGFuZCBtYWtlIGxpbmtzIHRvIHRoZSBuZXh0IHNlcXVlbmNlIGl0ZW0uCiAgICAjIFdlIGFsc28gZGVmaW5lIHRoZXNlIGhhc2hlcyB0byBjb250YWluZXIgdG9rZW5zIHVzaW5nIHNlcXVlbmNlIG51bWJlciBhcwogICAgIyB0aGUga2V5OgogICAgbXkgJEtfb3BlbmluZ19jb250YWluZXIgPSB7fTsgICAgIyBvcGVuaW5nIFsgeyBvciAoCiAgICBteSAkS19jbG9zaW5nX2NvbnRhaW5lciA9IHt9OyAgICAjIGNsb3NpbmcgXSB9IG9yICkKICAgIG15ICRLX29wZW5pbmdfdGVybmFyeSAgID0ge307ICAgICMgb3BlbmluZyA/IG9mIHRlcm5hcnkKICAgIG15ICRLX2Nsb3NpbmdfdGVybmFyeSAgID0ge307ICAgICMgY2xvc2luZyA6IG9mIHRlcm5hcnkKCiAgICAjIHN1YiB0byBsaW5rIHByZWNlZGluZyBub2RlcyBmb3J3YXJkIHRvIGEgbmV3IG5vZGUgdHlwZQogICAgbXkgJGxpbmtfYmFjayA9IHN1YiB7CiAgICAgICAgbXkgKCAkS3RvcCwgJGtleSApID0gQF87CgogICAgICAgIG15ICRLcHJldiA9ICRLdG9wIC0gMTsKICAgICAgICB3aGlsZSAoICRLcHJldiA+PSAwCiAgICAgICAgICAgICYmICFkZWZpbmVkKCAkckxMLT5bJEtwcmV2XS0+WyRrZXldICkgKQogICAgICAgIHsKICAgICAgICAgICAgJHJMTC0+WyRLcHJldl0tPlska2V5XSA9ICRLdG9wOwogICAgICAgICAgICAkS3ByZXYgLT0gMTsKICAgICAgICB9CiAgICB9OwoKICAgIGZvciAoIG15ICRLSyA9IDAgOyAkS0sgPCBAeyRyTEx9IDsgJEtLKysgKSB7CgogICAgICAgICRyTEwtPlskS0tdLT5bX0tORVhUX1NFUV9JVEVNX10gPSB1bmRlZjsKCiAgICAgICAgbXkgJHR5cGUgPSAkckxMLT5bJEtLXS0+W19UWVBFX107CgogICAgICAgIG5leHQgaWYgKCAkdHlwZSBlcSAnYicgKTsKCiAgICAgICAgbXkgJHR5cGVfc2VxdWVuY2UgPSAkckxMLT5bJEtLXS0+W19UWVBFX1NFUVVFTkNFX107CiAgICAgICAgaWYgKCR0eXBlX3NlcXVlbmNlKSB7CgogICAgICAgICAgICAkbGlua19iYWNrLT4oICRLSywgX0tORVhUX1NFUV9JVEVNXyApOwoKICAgICAgICAgICAgbXkgJHRva2VuID0gJHJMTC0+WyRLS10tPltfVE9LRU5fXTsKICAgICAgICAgICAgaWYgKCAkaXNfb3BlbmluZ190b2tlbnskdG9rZW59ICkgewoKICAgICAgICAgICAgICAgICRLX29wZW5pbmdfY29udGFpbmVyLT57JHR5cGVfc2VxdWVuY2V9ID0gJEtLOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJGlzX2Nsb3NpbmdfdG9rZW57JHRva2VufSApIHsKCiAgICAgICAgICAgICAgICAkS19jbG9zaW5nX2NvbnRhaW5lci0+eyR0eXBlX3NlcXVlbmNlfSA9ICRLSzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBUaGVzZSBhcmUgbm90IHlldCB1c2VkIGJ1dCBjb3VsZCBiZSB1c2VmdWwKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoICR0b2tlbiBlcSAnPycgKSB7CiAgICAgICAgICAgICAgICAgICAgJEtfb3BlbmluZ190ZXJuYXJ5LT57JHR5cGVfc2VxdWVuY2V9ID0gJEtLOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkdG9rZW4gZXEgJzonICkgewogICAgICAgICAgICAgICAgICAgICRLX2Nsb3NpbmdfdGVybmFyeS0+eyR0eXBlX3NlcXVlbmNlfSA9ICRLSzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIEZhdWx0KDw8RU9NKTsKVW5rbm93biBzZXF1ZW5jZWQgdG9rZW4gdHlwZSAnJHR5cGUnLiAgRXhwZWN0aW5nIG9uZSBvZiAne1soPzopXX0nCkVPTQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICRzZWxmLT57S19vcGVuaW5nX2NvbnRhaW5lcn0gPSAkS19vcGVuaW5nX2NvbnRhaW5lcjsKICAgICRzZWxmLT57S19jbG9zaW5nX2NvbnRhaW5lcn0gPSAkS19jbG9zaW5nX2NvbnRhaW5lcjsKICAgICRzZWxmLT57S19vcGVuaW5nX3Rlcm5hcnl9ICAgPSAkS19vcGVuaW5nX3Rlcm5hcnk7CiAgICAkc2VsZi0+e0tfY2xvc2luZ190ZXJuYXJ5fSAgID0gJEtfY2xvc2luZ190ZXJuYXJ5OwogICAgcmV0dXJuOwp9CgpzdWIgc3VtX3Rva2VuX2xlbmd0aHMgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKCiAgICAjIFRoaXMgaGFzIGJlZW4gbWVyZ2VkIGludG8gJ3Jlc3BhY2VfdG9rZW5zJyBidXQgcmV0YWluZWQgZm9yIHJlZmVyZW5jZQogICAgbXkgJHJMTCAgICAgICAgICAgICAgID0gJHNlbGYtPntyTEx9OwogICAgbXkgJGN1bXVsYXRpdmVfbGVuZ3RoID0gMDsKICAgIGZvciAoIG15ICRLSyA9IDAgOyAkS0sgPCBAeyRyTEx9IDsgJEtLKysgKSB7CgogICAgICAgICMgbm93IHNldCB0aGUgbGVuZ3RoIG9mIHRoaXMgdG9rZW4KICAgICAgICBteSAkdG9rZW5fbGVuZ3RoID0gbGVuZ3RoKCAkckxMLT5bJEtLXS0+W19UT0tFTl9dICk7CgogICAgICAgICRjdW11bGF0aXZlX2xlbmd0aCArPSAkdG9rZW5fbGVuZ3RoOwoKICAgICAgICAjIFNhdmUgdGhlIGxlbmd0aCBzdW0gdG8ganVzdCBBRlRFUiB0aGlzIHRva2VuCiAgICAgICAgJHJMTC0+WyRLS10tPltfQ1VNVUxBVElWRV9MRU5HVEhfXSA9ICRjdW11bGF0aXZlX2xlbmd0aDsKCiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiByZXN5bmNfbGluZXNfYW5kX3Rva2VucyB7CgogICAgbXkgJHNlbGYgICA9IHNoaWZ0OwogICAgbXkgJHJMTCAgICA9ICRzZWxmLT57ckxMfTsKICAgIG15ICRLbGltaXQgPSAkc2VsZi0+e0tsaW1pdH07CiAgICBteSAkcmxpbmVzID0gJHNlbGYtPntybGluZXN9OwoKICAgICMgUmUtY29uc3RydWN0IHRoZSBhcnJheXMgb2YgdG9rZW5zIGFzc29jaWF0ZWQgd2l0aCB0aGUgb3JpZ2luYWwgaW5wdXQgbGluZXMKICAgICMgc2luY2UgdGhleSBoYXZlIHByb2JhYmx5IGNoYW5nZWQgZHVlIHRvIGluc2VydGluZyBhbmQgZGVsZXRpbmcgYmxhbmtzCiAgICAjIGFuZCBhIGZldyBvdGhlciB0b2tlbnMuCgogICAgbXkgJEttYXggPSAtMTsKCiAgICAjIFRoaXMgaXMgdGhlIG5leHQgdG9rZW4gYW5kIGl0cyBsaW5lIGluZGV4OgogICAgbXkgJEtuZXh0ID0gMDsKICAgIG15ICRpbmV4dDsKICAgIGlmICggZGVmaW5lZCgkckxMKSAmJiBAeyRyTEx9ICkgewogICAgICAgICRLbWF4ICA9IEB7JHJMTH0gLSAxOwogICAgICAgICRpbmV4dCA9ICRyTEwtPlskS25leHRdLT5bX0xJTkVfSU5ERVhfXTsKICAgIH0KCiAgICBteSAkZ2V0X2luZXh0ID0gc3ViIHsKICAgICAgICBpZiAoICRLbmV4dCA8IDAgfHwgJEtuZXh0ID4gJEttYXggKSB7ICRpbmV4dCA9IHVuZGVmIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJGluZXh0ID0gJHJMTC0+WyRLbmV4dF0tPltfTElORV9JTkRFWF9dOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJGluZXh0OwogICAgfTsKCiAgICAjIFJlbWVtYmVyIHRoZSBtb3N0IHJlY2VudGx5IG91dHB1dCB0b2tlbiBpbmRleAogICAgbXkgJEtsYXN0X291dDsKCiAgICBteSAkaWxpbmUgPSAtMTsKICAgIGZvcmVhY2ggbXkgJGxpbmVfb2ZfdG9rZW5zICggQHskcmxpbmVzfSApIHsKICAgICAgICAkaWxpbmUrKzsKICAgICAgICBteSAkbGluZV90eXBlID0gJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdHlwZX07CiAgICAgICAgaWYgKCAkbGluZV90eXBlIGVxICdDT0RFJyApIHsKCiAgICAgICAgICAgIG15IEBLX2FycmF5OwogICAgICAgICAgICBteSAkcktfcmFuZ2U7CiAgICAgICAgICAgICRpbmV4dCA9ICRnZXRfaW5leHQtPigpOwogICAgICAgICAgICB3aGlsZSAoIGRlZmluZWQoJGluZXh0KSAmJiAkaW5leHQgPD0gJGlsaW5lICkgewogICAgICAgICAgICAgICAgcHVzaCBAe0tfYXJyYXl9LCAkS25leHQ7CiAgICAgICAgICAgICAgICAkS25leHQgKz0gMTsKICAgICAgICAgICAgICAgICRpbmV4dCA9ICRnZXRfaW5leHQtPigpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIERlbGV0ZSBhbnkgdGVybWluYWwgYmxhbmsgdG9rZW4KICAgICAgICAgICAgaWYgKEBLX2FycmF5KSB7CiAgICAgICAgICAgICAgICBpZiAoICRyTEwtPlsgJEtfYXJyYXlbLTFdIF0tPltfVFlQRV9dIGVxICdiJyApIHsKICAgICAgICAgICAgICAgICAgICBwb3AgQEtfYXJyYXk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgRGVmaW5lIHRoZSByYW5nZSBvZiBLIGluZGV4ZXMgZm9yIHRoZSBsaW5lOgogICAgICAgICAgICAjICRLZmlyc3QgPSBpbmRleCBvZiBmaXJzdCB0b2tlbiBvbiBsaW5lCiAgICAgICAgICAgICMgJEtsYXN0X291dCA9IGluZGV4IG9mIGxhc3QgdG9rZW4gb24gbGluZQogICAgICAgICAgICBteSAoICRLZmlyc3QsICRLbGFzdCApOwogICAgICAgICAgICBpZiAoQEtfYXJyYXkpIHsKICAgICAgICAgICAgICAgICRLZmlyc3QgICAgPSAkS19hcnJheVswXTsKICAgICAgICAgICAgICAgICRLbGFzdCAgICAgPSAkS19hcnJheVstMV07CiAgICAgICAgICAgICAgICAkS2xhc3Rfb3V0ID0gJEtsYXN0OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIEl0IGlzIG9ubHkgc2FmZSB0byB0cmltIHRoZSBhY3R1YWwgbGluZSB0ZXh0IGlmIHRoZSBpbnB1dAogICAgICAgICAgICAjIGxpbmUgaGFkIGEgdGVybWluYWwgYmxhbmsgdG9rZW4uIE90aGVyd2lzZSwgd2UgbWF5IGJlCiAgICAgICAgICAgICMgaW4gYSBxdW90ZS4KICAgICAgICAgICAgaWYgKCAkbGluZV9vZl90b2tlbnMtPntfZW5kZWRfaW5fYmxhbmtfdG9rZW59ICkgewogICAgICAgICAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdGV4dH0gPX4gcy9ccyskLy87CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X3JLX3JhbmdlfSA9IFsgJEtmaXJzdCwgJEtsYXN0IF07CiAgICAgICAgfQogICAgfQoKICAgICMgVGhlcmUgc2hvdWxkbid0IGJlIGFueSBub2RlcyBiZXlvbmQgdGhlIGxhc3Qgb25lIHVubGVzcyB3ZSBzdGFydAogICAgIyBhbGxvd2luZyAnbGlua19hZnRlcicgY2FsbHMKICAgIGlmICggZGVmaW5lZCgkaW5leHQpICkgewoKICAgICAgICBGYXVsdCgidW5leHBlY3RlZCB0b2tlbnMgYXQgZW5kIG9mIGZpbGUgd2hlbiByZWNvbnN0cnVjdGluZyBsaW5lcyIpOwogICAgfQoKICAgIHJldHVybjsKfQoKc3ViIGR1bXBfdmVyYmF0aW0gewogICAgbXkgJHNlbGYgICA9IHNoaWZ0OwogICAgbXkgJHJsaW5lcyA9ICRzZWxmLT57cmxpbmVzfTsKICAgIGZvcmVhY2ggbXkgJGxpbmUgKCBAeyRybGluZXN9ICkgewogICAgICAgIG15ICRpbnB1dF9saW5lID0gJGxpbmUtPntfbGluZV90ZXh0fTsKICAgICAgICAkc2VsZi0+d3JpdGVfdW5pbmRlbnRlZF9saW5lKCRpbnB1dF9saW5lKTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIGZpbmlzaF9mb3JtYXR0aW5nIHsKCiAgICBteSAoICRzZWxmLCAkc2V2ZXJlX2Vycm9yICkgPSBAXzsKCiAgICAjIFRoZSBmaWxlIGhhcyBiZWVuIHRva2VuaXplZCBhbmQgaXMgcmVhZHkgdG8gYmUgZm9ybWF0dGVkLgogICAgIyBBbGwgb2YgdGhlIHJlbGV2YW50IGRhdGEgaXMgc3RvcmVkIGluICRzZWxmLCByZWFkeSB0byBnby4KCiAgICAjIG91dHB1dCBmaWxlIHZlcmJhdGltIGlmIHNldmVyZSBlcnJvciBvciBubyBmb3JtYXR0aW5nIHJlcXVlc3RlZAogICAgaWYgKCAkc2V2ZXJlX2Vycm9yIHx8ICRyT3B0cy0+e25vdGlkeX0gKSB7CiAgICAgICAgJHNlbGYtPmR1bXBfdmVyYmF0aW0oKTsKICAgICAgICAkc2VsZi0+d3JhcHVwKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgTWFrZSBhIHBhc3MgdGhyb3VnaCB0aGUgbGluZXMsIGxvb2tpbmcgYXQgbGluZXMgb2YgQ09ERSBhbmQgaWRlbnRpZnlpbmcKICAgICMgc3BlY2lhbCBwcm9jZXNzaW5nIG5lZWRzLCBzdWNoIGZvcm1hdCBza2lwcGluZyBzZWN0aW9ucyBtYXJrZWQgYnkKICAgICMgc3BlY2lhbCBjb21tZW50cwogICAgJHNlbGYtPnNjYW5fY29tbWVudHMoKTsKCiAgICAjIEZpbmQgbmVzdGVkIHBhaXJzIG9mIGNvbnRhaW5lciB0b2tlbnMgZm9yIGFueSB3ZWxkaW5nLiBUaGlzIGluZm9ybWF0aW9uCiAgICAjIGlzIGFsc28gbmVlZGVkIGZvciBhZGRpbmcgc2VtaWNvbG9ucywgc28gaXQgaXMgc3BsaXQgYXBhcnQgZnJvbSB0aGUKICAgICMgd2VsZGluZyBzdGVwLgogICAgJHNlbGYtPmZpbmRfbmVzdGVkX3BhaXJzKCk7CgogICAgIyBNYWtlIHN1cmUgZXZlcnl0aGluZyBsb29rcyBnb29kCiAgICAkc2VsZi0+Y2hlY2tfbGluZV9oYXNoZXMoKTsKCiAgICAjIEZ1dHVyZTogUGxhY2UgdG8gQmVnaW4gZnV0dXJlIEl0ZXJhdGlvbiBMb29wCiAgICAjIGZvcmVhY2ggbXkgJGl0X2NvdW50KDEuLiRtYXhpdCkgewoKICAgICMgRnV0dXJlOiBXZSBtdXN0IHJlc2V0IHNvbWUgdGhpbmdzIGFmdGVyIHRoZSBmaXJzdCBpdGVyYXRpb24uCiAgICAjIFRoaXMgaW5jbHVkZXM6CiAgICAjICAgLSByZXNldHRpbmcgbGV2ZWxzIGlmIHRoZXJlIHdhcyBhbnkgd2VsZGluZwogICAgIyAgIC0gcmVzZXR0aW5nIGFueSBwaGFudG9tIHNlbWljb2xvbnMKICAgICMgICAtIGRlYWxpbmcgd2l0aCBhbnkgbGluZSBudW1iZXJpbmcgaXNzdWVzIHNvIHdlIGNhbiByZWxhdGUgZmluYWwgbGluZXMKICAgICMgICAgIGxpbmUgbnVtYmVycyB3aXRoIGlucHV0IGxpbmUgbnVtYmVycy4KICAgICMKICAgICMgSWYgKCRpdF9jb3VudD4xKSB7CiAgICAjICAgQ29weSB7bGV2ZWxfcmF3fSB0byBbX0xFVkVMX10gaWYgKCRpdF9jb3VudD4xKQogICAgIyAgIFJlbnVtYmVyIGxpbmVzCiAgICAjIH0KCiAgICAjIE1ha2UgYSBwYXNzIHRocm91Z2ggYWxsIHRva2VucywgYWRkaW5nIG9yIGRlbGV0aW5nIGFueSB3aGl0ZXNwYWNlIGFzCiAgICAjIHJlcXVpcmVkLiAgQWxzbyBtYWtlIGFueSBvdGhlciBjaGFuZ2VzLCBzdWNoIGFzIGFkZGluZyBzZW1pY29sb25zLgogICAgIyBBbGwgdG9rZW4gY2hhbmdlcyBtdXN0IGJlIG1hZGUgaGVyZSBzbyB0aGF0IHRoZSB0b2tlbiBkYXRhIHN0cnVjdHVyZQogICAgIyByZW1haW5zIGZpeGVkIGZvciB0aGUgcmVzdCBvZiB0aGlzIGl0ZXJhdGlvbi4KICAgICRzZWxmLT5yZXNwYWNlX3Rva2VucygpOwoKICAgICMgTWFrZSBhIGhpZXJhcmNoaWNhbCBtYXAgb2YgdGhlIGNvbnRhaW5lcnMKICAgICRzZWxmLT5tYXBfY29udGFpbmVycygpOwoKICAgICMgSW1wbGVtZW50IGFueSB3ZWxkaW5nIG5lZWRlZCBmb3IgdGhlIC13biBvciAtY2Igb3B0aW9ucwogICAgJHNlbGYtPndlbGRfY29udGFpbmVycygpOwoKICAgICMgTG9jYXRlIHNtYWxsIG5lc3RlZCBibG9ja3Mgd2hpY2ggc2hvdWxkIG5vdCBiZSBicm9rZW4KICAgICRzZWxmLT5tYXJrX3Nob3J0X25lc3RlZF9ibG9ja3MoKTsKCiAgICAjIEZpbmlzaGVzIGZvcm1hdHRpbmcgYW5kIHdyaXRlIHRoZSByZXN1bHQgdG8gdGhlIGxpbmUgc2luay4KICAgICMgRXZlbnR1YWxseSB0aGlzIGNhbGwgc2hvdWxkIGp1c3QgY2hhbmdlIHRoZSAncmxpbmVzJyBkYXRhIGFjY29yZGluZyB0byB0aGUKICAgICMgbmV3IGxpbmUgYnJlYWtzIGFuZCB0aGVuIHJldHVybiBzbyB0aGF0IHdlIGNhbiBkbyBhbiBpbnRlcm5hbCBpdGVyYXRpb24KICAgICMgYmVmb3JlIGNvbnRpbnVpbmcgd2l0aCB0aGUgbmV4dCBzdGFnZXMgb2YgZm9ybWF0dGluZy4KICAgICRzZWxmLT5icmVha19saW5lcygpOwoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBBIHBvc3NpYmxlIGZ1dHVyZSBkZWNvbXBvc2l0aW9uIG9mICdicmVha19saW5lcygpJyBmb2xsb3dzLgogICAgIyBCZW5lZml0czoKICAgICMgLSBhbGxvdyBwZXJsdGlkeSB0byBkbyBhbiBpbnRlcm5hbCBpdGVyYXRpb24gd2hpY2ggZWxpbWluYXRlcwogICAgIyAgIG1hbnkgdW5uZWNlc3Nhcnkgc3RlcHMsIHN1Y2ggYXMgcmUtcGFyc2luZyBhbmQgdmVydGljYWwgYWxpZ25tZW50LgogICAgIyAgIFRoaXMgd2lsbCBhbGxvdyBpdGVyYXRpb25zIHRvIGJlIGF1dG9tYXRpYy4KICAgICMgLSBjb25zb2xpZGF0ZSBhbGwgbGVuZ3RoIGNhbGN1bGF0aW9ucyB0byBhbGxvdyB1dGY4IGFsaWdubWVudAogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgIyBGdXR1cmU6IENoZWNrIGZvciBjb252ZXJnZW5jZSBvZiBiZWdpbm5pbmcgdG9rZW5zIG9uIENPREUgbGluZXMKCiAgICAjIEZ1dHVyZTogRW5kIG9mIEl0ZXJhdGlvbiBMb29wCgogICAgIyBGdXR1cmU6IGFkZF9wYWRkaW5nKCRyYXJncyk7CgogICAgIyBGdXR1cmU6IGFkZF9jbG9zaW5nX3NpZGVfY29tbWVudHMoJHJhcmdzKTsKCiAgICAjIEZ1dHVyZTogdmVydGljYWxfYWxpZ25tZW50KCRyYXJncyk7CgogICAgIyBGdXR1cmU6IG91dHB1dCByZXN1bHRzCgogICAgIyBBIGZpbmFsIHJvdXRpbmUgdG8gdGllIHVwIGFueSBsb29zZSBlbmRzCiAgICAkc2VsZi0+d3JhcHVwKCk7CiAgICByZXR1cm47Cn0KCnN1YiBjcmVhdGVfb25lX2xpbmVfYmxvY2sgewogICAgKCAkaW5kZXhfc3RhcnRfb25lX2xpbmVfYmxvY2ssICRzZW1pY29sb25zX2JlZm9yZV9ibG9ja19zZWxmX2Rlc3RydWN0ICkgPQogICAgICBAXzsKICAgIHJldHVybjsKfQoKc3ViIGRlc3Ryb3lfb25lX2xpbmVfYmxvY2sgewogICAgJGluZGV4X3N0YXJ0X29uZV9saW5lX2Jsb2NrICAgICAgICAgICAgPSBVTkRFRklORURfSU5ERVg7CiAgICAkc2VtaWNvbG9uc19iZWZvcmVfYmxvY2tfc2VsZl9kZXN0cnVjdCA9IDA7CiAgICByZXR1cm47Cn0KCnN1YiBsZWFkaW5nX3NwYWNlc190b19nbyB7CgogICAgIyByZXR1cm4gdGhlIG51bWJlciBvZiBpbmRlbnRhdGlvbiBzcGFjZXMgZm9yIGEgdG9rZW4gaW4gdGhlIG91dHB1dCBzdHJlYW07CiAgICAjIHRoZXNlIHdlcmUgcHJldmlvdXNseSBzdG9yZWQgYnkgJ3NldF9sZWFkaW5nX3doaXRlc3BhY2UnLgoKICAgIG15ICRpaSA9IHNoaWZ0OwogICAgaWYgKCAkaWkgPCAwICkgeyAkaWkgPSAwIH0KICAgIHJldHVybiBnZXRfc3BhY2VzKCAkbGVhZGluZ19zcGFjZXNfdG9fZ29bJGlpXSApOwoKfQoKc3ViIGdldF9zcGFjZXMgewoKICAgICMgcmV0dXJuIHRoZSBudW1iZXIgb2YgbGVhZGluZyBzcGFjZXMgYXNzb2NpYXRlZCB3aXRoIGFuIGluZGVudGF0aW9uCiAgICAjIHZhcmlhYmxlICRpbmRlbnRhdGlvbiBpcyBlaXRoZXIgYSBjb25zdGFudCBudW1iZXIgb2Ygc3BhY2VzIG9yIGFuIG9iamVjdAogICAgIyB3aXRoIGEgZ2V0X3NwYWNlcyBtZXRob2QuCiAgICBteSAkaW5kZW50YXRpb24gPSBzaGlmdDsKICAgIHJldHVybiByZWYoJGluZGVudGF0aW9uKSA/ICRpbmRlbnRhdGlvbi0+Z2V0X3NwYWNlcygpIDogJGluZGVudGF0aW9uOwp9CgpzdWIgZ2V0X3JlY292ZXJhYmxlX3NwYWNlcyB7CgogICAgIyByZXR1cm4gdGhlIG51bWJlciBvZiBzcGFjZXMgKCsgbWVhbnMgc2hpZnQgcmlnaHQsIC0gbWVhbnMgc2hpZnQgbGVmdCkKICAgICMgdGhhdCB3ZSB3b3VsZCBsaWtlIHRvIHNoaWZ0IGEgZ3JvdXAgb2YgbGluZXMgd2l0aCB0aGUgc2FtZSBpbmRlbnRhdGlvbgogICAgIyB0byBnZXQgdGhlbSB0byBsaW5lIHVwIHdpdGggdGhlaXIgb3BlbmluZyBwYXJlbnMKICAgIG15ICRpbmRlbnRhdGlvbiA9IHNoaWZ0OwogICAgcmV0dXJuIHJlZigkaW5kZW50YXRpb24pID8gJGluZGVudGF0aW9uLT5nZXRfcmVjb3ZlcmFibGVfc3BhY2VzKCkgOiAwOwp9CgpzdWIgZ2V0X2F2YWlsYWJsZV9zcGFjZXNfdG9fZ28gewoKICAgIG15ICRpaSAgID0gc2hpZnQ7CiAgICBteSAkaXRlbSA9ICRsZWFkaW5nX3NwYWNlc190b19nb1skaWldOwoKICAgICMgcmV0dXJuIHRoZSBudW1iZXIgb2YgYXZhaWxhYmxlIGxlYWRpbmcgc3BhY2VzIGFzc29jaWF0ZWQgd2l0aCBhbgogICAgIyBpbmRlbnRhdGlvbiB2YXJpYWJsZS4gICRpbmRlbnRhdGlvbiBpcyBlaXRoZXIgYSBjb25zdGFudCBudW1iZXIgb2YKICAgICMgc3BhY2VzIG9yIGFuIG9iamVjdCB3aXRoIGEgZ2V0X2F2YWlsYWJsZV9zcGFjZXMgbWV0aG9kLgogICAgcmV0dXJuIHJlZigkaXRlbSkgPyAkaXRlbS0+Z2V0X2F2YWlsYWJsZV9zcGFjZXMoKSA6IDA7Cn0KCnN1YiBuZXdfbHBfaW5kZW50YXRpb25faXRlbSB7CgogICAgIyB0aGlzIGlzIGFuIGludGVyZmFjZSB0byB0aGUgSW5kZW50YXRpb25JdGVtIGNsYXNzCiAgICBteSAoICRzcGFjZXMsICRsZXZlbCwgJGNpX2xldmVsLCAkYXZhaWxhYmxlX3NwYWNlcywgJGFsaWduX3BhcmVuICkgPSBAXzsKCiAgICAjIEEgbmVnYXRpdmUgbGV2ZWwgaW1wbGllcyBub3QgdG8gc3RvcmUgdGhlIGl0ZW0gaW4gdGhlIGl0ZW1fbGlzdAogICAgbXkgJGluZGV4ID0gMDsKICAgIGlmICggJGxldmVsID49IDAgKSB7ICRpbmRleCA9ICsrJG1heF9nbnVfaXRlbV9pbmRleDsgfQoKICAgIG15ICRpdGVtID0gUGVybDo6VGlkeTo6SW5kZW50YXRpb25JdGVtLT5uZXcoCiAgICAgICAgJHNwYWNlcywgICAgICAkbGV2ZWwsCiAgICAgICAgJGNpX2xldmVsLCAgICAkYXZhaWxhYmxlX3NwYWNlcywKICAgICAgICAkaW5kZXgsICAgICAgICRnbnVfc2VxdWVuY2VfbnVtYmVyLAogICAgICAgICRhbGlnbl9wYXJlbiwgJG1heF9nbnVfc3RhY2tfaW5kZXgsCiAgICAgICAgJGxpbmVfc3RhcnRfaW5kZXhfdG9fZ28sCiAgICApOwoKICAgIGlmICggJGxldmVsID49IDAgKSB7CiAgICAgICAgJGdudV9pdGVtX2xpc3RbJG1heF9nbnVfaXRlbV9pbmRleF0gPSAkaXRlbTsKICAgIH0KCiAgICByZXR1cm4gJGl0ZW07Cn0KCnN1YiBzZXRfbGVhZGluZ193aGl0ZXNwYWNlIHsKCiAgICAjIFRoaXMgcm91dGluZSBkZWZpbmVzIGxlYWRpbmcgd2hpdGVzcGFjZQogICAgIyBnaXZlbjogdGhlIGxldmVsIGFuZCBjb250aW51YXRpb25fbGV2ZWwgb2YgYSB0b2tlbiwKICAgICMgZGVmaW5lOiBzcGFjZSBjb3VudCBvZiBsZWFkaW5nIHN0cmluZyB3aGljaCB3b3VsZCBhcHBseSBpZiBpdAogICAgIyB3ZXJlIHRoZSBmaXJzdCB0b2tlbiBvZiBhIG5ldyBsaW5lLgoKICAgIG15ICggJGxldmVsX2FicywgJGNpX2xldmVsLCAkaW5fY29udGludWVkX3F1b3RlICkgPSBAXzsKCiAgICAjIEFkanVzdCBsZXZlbHMgaWYgbmVjZXNzYXJ5IHRvIHJlY3ljbGUgd2hpdGVzcGFjZToKICAgICMgZ2l2ZW4gJGxldmVsX2FicywgdGhlIGFic29sdXRlIGxldmVsCiAgICAjIGRlZmluZSAkbGV2ZWwsIGEgcG9zc2libHkgcmVkdWNlZCBsZXZlbCBmb3Igd2hpdGVzcGFjZQogICAgbXkgJGxldmVsID0gJGxldmVsX2FiczsKICAgIGlmICggJHJPcHRzX3doaXRlc3BhY2VfY3ljbGUgJiYgJHJPcHRzX3doaXRlc3BhY2VfY3ljbGUgPiAwICkgewogICAgICAgIGlmICggJGxldmVsX2FicyA8ICR3aGl0ZXNwYWNlX2xhc3RfbGV2ZWwgKSB7CiAgICAgICAgICAgIHBvcChAd2hpdGVzcGFjZV9sZXZlbF9zdGFjayk7CiAgICAgICAgfQogICAgICAgIGlmICggIUB3aGl0ZXNwYWNlX2xldmVsX3N0YWNrICkgewogICAgICAgICAgICBwdXNoIEB3aGl0ZXNwYWNlX2xldmVsX3N0YWNrLCAkbGV2ZWxfYWJzOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRsZXZlbF9hYnMgPiAkd2hpdGVzcGFjZV9sYXN0X2xldmVsICkgewogICAgICAgICAgICAkbGV2ZWwgPSAkd2hpdGVzcGFjZV9sZXZlbF9zdGFja1stMV0gKwogICAgICAgICAgICAgICggJGxldmVsX2FicyAtICR3aGl0ZXNwYWNlX2xhc3RfbGV2ZWwgKTsKCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICMgMSBUcnkgdG8gYnJlYWsgYXQgYSBibG9jayBicmFjZQogICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICAgICRsZXZlbCA+ICRyT3B0c193aGl0ZXNwYWNlX2N5Y2xlCiAgICAgICAgICAgICAgICAgICAgJiYgJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAneycKICAgICAgICAgICAgICAgICAgICAmJiAkbGFzdF9ub25ibGFua190b2tlbiBlcSAneycKICAgICAgICAgICAgICAgICkKCiAgICAgICAgICAgICAgICAjIDIgVGhlbiBlaXRoZXIgYSBicmFjZSBvciBicmFja2V0CiAgICAgICAgICAgICAgICB8fCAoICAgJGxldmVsID4gJHJPcHRzX3doaXRlc3BhY2VfY3ljbGUgKyAxCiAgICAgICAgICAgICAgICAgICAgJiYgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gPX4gL15bXHtcW10kLyApCgogICAgICAgICAgICAgICAgIyAzIFRoZW4gYSBwYXJlbiB0b28KICAgICAgICAgICAgICAgIHx8ICRsZXZlbCA+ICRyT3B0c193aGl0ZXNwYWNlX2N5Y2xlICsgMgogICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJGxldmVsID0gMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwdXNoIEB3aGl0ZXNwYWNlX2xldmVsX3N0YWNrLCAkbGV2ZWw7CiAgICAgICAgfQogICAgICAgICRsZXZlbCA9ICR3aGl0ZXNwYWNlX2xldmVsX3N0YWNrWy0xXTsKICAgIH0KICAgICR3aGl0ZXNwYWNlX2xhc3RfbGV2ZWwgPSAkbGV2ZWxfYWJzOwoKICAgICMgbW9kaWZ5IGZvciAtYmxpLCB3aGljaCBhZGRzIG9uZSBjb250aW51YXRpb24gaW5kZW50YXRpb24gZm9yCiAgICAjIG9wZW5pbmcgYnJhY2VzCiAgICBpZiAoICAgJHJPcHRzX2JyYWNlX2xlZnRfYW5kX2luZGVudAogICAgICAgICYmICRtYXhfaW5kZXhfdG9fZ28gPT0gMAogICAgICAgICYmICRibG9ja190eXBlX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dID1+IC8kYmxpX3BhdHRlcm4vbyApCiAgICB7CiAgICAgICAgJGNpX2xldmVsKys7CiAgICB9CgogICAgIyBwYXRjaCB0byBhdm9pZCB0cm91YmxlIHdoZW4gaW5wdXQgZmlsZSBoYXMgbmVnYXRpdmUgaW5kZW50YXRpb24uCiAgICAjIG90aGVyIGxvZ2ljIHNob3VsZCBjYXRjaCB0aGlzIGVycm9yLgogICAgaWYgKCAkbGV2ZWwgPCAwICkgeyAkbGV2ZWwgPSAwIH0KCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyBoYW5kbGUgdGhlIHN0YW5kYXJkIGluZGVudGF0aW9uIHNjaGVtZQogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIHVubGVzcyAoJHJPcHRzX2xpbmVfdXBfcGFyZW50aGVzZXMpIHsKICAgICAgICBteSAkc3BhY2VfY291bnQgPQogICAgICAgICAgJGNpX2xldmVsICogJHJPcHRzX2NvbnRpbnVhdGlvbl9pbmRlbnRhdGlvbiArCiAgICAgICAgICAkbGV2ZWwgKiAkck9wdHNfaW5kZW50X2NvbHVtbnM7CiAgICAgICAgbXkgJGNpX3NwYWNlcyA9CiAgICAgICAgICAoICRjaV9sZXZlbCA9PSAwICkgPyAwIDogJHJPcHRzX2NvbnRpbnVhdGlvbl9pbmRlbnRhdGlvbjsKCiAgICAgICAgaWYgKCRpbl9jb250aW51ZWRfcXVvdGUpIHsKICAgICAgICAgICAgJHNwYWNlX2NvdW50ID0gMDsKICAgICAgICAgICAgJGNpX3NwYWNlcyAgID0gMDsKICAgICAgICB9CiAgICAgICAgJGxlYWRpbmdfc3BhY2VzX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dID0gJHNwYWNlX2NvdW50OwogICAgICAgICRyZWR1Y2VkX3NwYWNlc190b19nb1skbWF4X2luZGV4X3RvX2dvXSA9ICRzcGFjZV9jb3VudCAtICRjaV9zcGFjZXM7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIGhhbmRsZSBjYXNlIG9mIC1scCBpbmRlbnRhdGlvbi4uCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICMgVGhlIGNvbnRpbnVlZF9xdW90ZSBmbGFnIG1lYW5zIHRoYXQgdGhpcyBpcyB0aGUgZmlyc3QgdG9rZW4gb2YgYQogICAgIyBsaW5lLCBhbmQgaXQgaXMgdGhlIGNvbnRpbnVhdGlvbiBvZiBzb21lIGtpbmQgb2YgbXVsdGktbGluZSBxdW90ZQogICAgIyBvciBwYXR0ZXJuLiAgSXQgcmVxdWlyZXMgc3BlY2lhbCB0cmVhdG1lbnQgYmVjYXVzZSBpdCBtdXN0IGhhdmUgbm8KICAgICMgYWRkZWQgbGVhZGluZyB3aGl0ZXNwYWNlLiBTbyB3ZSBjcmVhdGUgYSBzcGVjaWFsIGluZGVudGF0aW9uIGl0ZW0KICAgICMgd2hpY2ggaXMgbm90IGluIHRoZSBzdGFjay4KICAgIGlmICgkaW5fY29udGludWVkX3F1b3RlKSB7CiAgICAgICAgbXkgJHNwYWNlX2NvdW50ICAgICA9IDA7CiAgICAgICAgbXkgJGF2YWlsYWJsZV9zcGFjZSA9IDA7CiAgICAgICAgJGxldmVsID0gLTE7ICAgICMgZmxhZyB0byBwcmV2ZW50IHN0b3JpbmcgaW4gaXRlbV9saXN0CiAgICAgICAgJGxlYWRpbmdfc3BhY2VzX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dID0KICAgICAgICAgICRyZWR1Y2VkX3NwYWNlc190b19nb1skbWF4X2luZGV4X3RvX2dvXSA9CiAgICAgICAgICBuZXdfbHBfaW5kZW50YXRpb25faXRlbSggJHNwYWNlX2NvdW50LCAkbGV2ZWwsICRjaV9sZXZlbCwKICAgICAgICAgICAgJGF2YWlsYWJsZV9zcGFjZSwgMCApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCB0aGUgdG9wIHN0YXRlIGZyb20gdGhlIHN0YWNrCiAgICBteSAkc3BhY2VfY291bnQgICAgICA9ICRnbnVfc3RhY2tbJG1heF9nbnVfc3RhY2tfaW5kZXhdLT5nZXRfc3BhY2VzKCk7CiAgICBteSAkY3VycmVudF9sZXZlbCAgICA9ICRnbnVfc3RhY2tbJG1heF9nbnVfc3RhY2tfaW5kZXhdLT5nZXRfbGV2ZWwoKTsKICAgIG15ICRjdXJyZW50X2NpX2xldmVsID0gJGdudV9zdGFja1skbWF4X2dudV9zdGFja19pbmRleF0tPmdldF9jaV9sZXZlbCgpOwoKICAgIG15ICR0eXBlICAgICAgICA9ICR0eXBlc190b19nb1skbWF4X2luZGV4X3RvX2dvXTsKICAgIG15ICR0b2tlbiAgICAgICA9ICR0b2tlbnNfdG9fZ29bJG1heF9pbmRleF90b19nb107CiAgICBteSAkdG90YWxfZGVwdGggPSAkbmVzdGluZ19kZXB0aF90b19nb1skbWF4X2luZGV4X3RvX2dvXTsKCiAgICBpZiAoICR0eXBlIGVxICd7JyB8fCAkdHlwZSBlcSAnKCcgKSB7CgogICAgICAgICRnbnVfY29tbWFfY291bnR7ICR0b3RhbF9kZXB0aCArIDEgfSA9IDA7CiAgICAgICAgJGdudV9hcnJvd19jb3VudHsgJHRvdGFsX2RlcHRoICsgMSB9ID0gMDsKCiAgICAgICAgIyBJZiB3ZSBjb21lIHRvIGFuIG9wZW5pbmcgdG9rZW4gYWZ0ZXIgYW4gJz0nIHRva2VuIG9mIHNvbWUgdHlwZSwKICAgICAgICAjIHNlZSBpZiBpdCB3b3VsZCBiZSBoZWxwZnVsIHRvICdicmVhaycgYWZ0ZXIgdGhlICc9JyB0byBzYXZlIHNwYWNlCiAgICAgICAgbXkgJGxhc3RfZXF1YWxzID0gJGxhc3RfZ251X2VxdWFsc3skdG90YWxfZGVwdGh9OwogICAgICAgIGlmICggJGxhc3RfZXF1YWxzICYmICRsYXN0X2VxdWFscyA+ICRsaW5lX3N0YXJ0X2luZGV4X3RvX2dvICkgewoKICAgICAgICAgICAgIyBmaW5kIHRoZSBwb3NpdGlvbiBpZiB3ZSBicmVhayBhdCB0aGUgJz0nCiAgICAgICAgICAgIG15ICRpX3Rlc3QgPSAkbGFzdF9lcXVhbHM7CiAgICAgICAgICAgIGlmICggJHR5cGVzX3RvX2dvWyAkaV90ZXN0ICsgMSBdIGVxICdiJyApIHsgJGlfdGVzdCsrIH0KCiAgICAgICAgICAgICMgVEVTVElORwogICAgICAgICAgICAjI215ICR0b29fY2xvc2UgPSAoJGlfdGVzdD09JG1heF9pbmRleF90b19nby0xKTsKCiAgICAgICAgICAgIG15ICR0ZXN0X3Bvc2l0aW9uID0gdG90YWxfbGluZV9sZW5ndGgoICRpX3Rlc3QsICRtYXhfaW5kZXhfdG9fZ28gKTsKICAgICAgICAgICAgbXkgJG1sbCAgICAgICAgICAgPSBtYXhpbXVtX2xpbmVfbGVuZ3RoKCRpX3Rlc3QpOwoKICAgICAgICAgICAgaWYgKAoKICAgICAgICAgICAgICAgICMgdGhlIGVxdWFscyBpcyBub3QganVzdCBiZWZvcmUgYW4gb3BlbiBwYXJlbiAodGVzdGluZykKICAgICAgICAgICAgICAgICMjISR0b29fY2xvc2UgJiYKCiAgICAgICAgICAgICAgICAjIGlmIHdlIGFyZSBiZXlvbmQgdGhlIG1pZHBvaW50CiAgICAgICAgICAgICAgICAkZ251X3Bvc2l0aW9uX3ByZWRpY3RvciA+ICRtbGwgLSAkck9wdHNfbWF4aW11bV9saW5lX2xlbmd0aCAvIDIKCiAgICAgICAgICAgICAgICAjIG9yIHdlIGFyZSBiZXlvbmQgdGhlIDEvNCBwb2ludCBhbmQgdGhlcmUgd2FzIGFuIG9sZAogICAgICAgICAgICAgICAgIyBicmVhayBhdCB0aGUgZXF1YWxzCiAgICAgICAgICAgICAgICB8fCAoCiAgICAgICAgICAgICAgICAgICAgJGdudV9wb3NpdGlvbl9wcmVkaWN0b3IgPgogICAgICAgICAgICAgICAgICAgICRtbGwgLSAkck9wdHNfbWF4aW11bV9saW5lX2xlbmd0aCAqIDMgLyA0CiAgICAgICAgICAgICAgICAgICAgJiYgKAogICAgICAgICAgICAgICAgICAgICAgICAkb2xkX2JyZWFrcG9pbnRfdG9fZ29bJGxhc3RfZXF1YWxzXQogICAgICAgICAgICAgICAgICAgICAgICB8fCAoICAgJGxhc3RfZXF1YWxzID4gMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJG9sZF9icmVha3BvaW50X3RvX2dvWyAkbGFzdF9lcXVhbHMgLSAxIF0gKQogICAgICAgICAgICAgICAgICAgICAgICB8fCAoICAgJGxhc3RfZXF1YWxzID4gMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHR5cGVzX3RvX2dvWyAkbGFzdF9lcXVhbHMgLSAxIF0gZXEgJ2InCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkb2xkX2JyZWFrcG9pbnRfdG9fZ29bICRsYXN0X2VxdWFscyAtIDIgXSApCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICMgdGhlbiBtYWtlIHRoZSBzd2l0Y2ggLS0gbm90ZSB0aGF0IHdlIGRvIG5vdCBzZXQgYSByZWFsCiAgICAgICAgICAgICAgICAjIGJyZWFrcG9pbnQgaGVyZSBiZWNhdXNlIHdlIG1heSBub3QgcmVhbGx5IG5lZWQgb25lOyBzdWIKICAgICAgICAgICAgICAgICMgc2Nhbl9saXN0IHdpbGwgZG8gdGhhdCBpZiBuZWNlc3NhcnkKICAgICAgICAgICAgICAgICRsaW5lX3N0YXJ0X2luZGV4X3RvX2dvID0gJGlfdGVzdCArIDE7CiAgICAgICAgICAgICAgICAkZ251X3Bvc2l0aW9uX3ByZWRpY3RvciA9ICR0ZXN0X3Bvc2l0aW9uOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIG15ICRoYWxmd2F5ID0KICAgICAgbWF4aW11bV9saW5lX2xlbmd0aF9mb3JfbGV2ZWwoJGxldmVsKSAtICRyT3B0c19tYXhpbXVtX2xpbmVfbGVuZ3RoIC8gMjsKCiAgICAjIENoZWNrIGZvciBkZWNyZWFzaW5nIGRlcHRoIC4uCiAgICAjIE5vdGUgdGhhdCBvbmUgdG9rZW4gbWF5IGhhdmUgYm90aCBkZWNyZWFzaW5nIGFuZCB0aGVuIGluY3JlYXNpbmcKICAgICMgZGVwdGguIEZvciBleGFtcGxlLCAobGV2ZWwsIGNpKSBjYW4gZ28gZnJvbSAoMSwxKSB0byAoMiwwKS4gIFNvLAogICAgIyBpbiB0aGlzIGV4YW1wbGUgd2Ugd291bGQgZmlyc3QgZ28gYmFjayB0byAoMSwwKSB0aGVuIHVwIHRvICgyLDApCiAgICAjIGluIGEgc2luZ2xlIGNhbGwuCiAgICBpZiAoICRsZXZlbCA8ICRjdXJyZW50X2xldmVsIHx8ICRjaV9sZXZlbCA8ICRjdXJyZW50X2NpX2xldmVsICkgewoKICAgICAgICAjIGxvb3AgdG8gZmluZCB0aGUgZmlyc3QgZW50cnkgYXQgb3IgY29tcGxldGVseSBiZWxvdyB0aGlzIGxldmVsCiAgICAgICAgbXkgKCAkbGV2LCAkY2lfbGV2ICk7CiAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgaWYgKCRtYXhfZ251X3N0YWNrX2luZGV4KSB7CgogICAgICAgICAgICAgICAgIyBzYXZlIGluZGV4IG9mIHRva2VuIHdoaWNoIGNsb3NlcyB0aGlzIGxldmVsCiAgICAgICAgICAgICAgICAkZ251X3N0YWNrWyRtYXhfZ251X3N0YWNrX2luZGV4XS0+c2V0X2Nsb3NlZCgkbWF4X2luZGV4X3RvX2dvKTsKCiAgICAgICAgICAgICAgICAjIFVuZG8gYW55IGV4dHJhIGluZGVudGF0aW9uIGlmIHdlIHNhdyBubyBjb21tYXMKICAgICAgICAgICAgICAgIG15ICRhdmFpbGFibGVfc3BhY2VzID0KICAgICAgICAgICAgICAgICAgJGdudV9zdGFja1skbWF4X2dudV9zdGFja19pbmRleF0tPmdldF9hdmFpbGFibGVfc3BhY2VzKCk7CgogICAgICAgICAgICAgICAgbXkgJGNvbW1hX2NvdW50ID0gMDsKICAgICAgICAgICAgICAgIG15ICRhcnJvd19jb3VudCA9IDA7CiAgICAgICAgICAgICAgICBpZiAoICR0eXBlIGVxICd9JyB8fCAkdHlwZSBlcSAnKScgKSB7CiAgICAgICAgICAgICAgICAgICAgJGNvbW1hX2NvdW50ID0gJGdudV9jb21tYV9jb3VudHskdG90YWxfZGVwdGh9OwogICAgICAgICAgICAgICAgICAgICRhcnJvd19jb3VudCA9ICRnbnVfYXJyb3dfY291bnR7JHRvdGFsX2RlcHRofTsKICAgICAgICAgICAgICAgICAgICAkY29tbWFfY291bnQgPSAwIHVubGVzcyAkY29tbWFfY291bnQ7CiAgICAgICAgICAgICAgICAgICAgJGFycm93X2NvdW50ID0gMCB1bmxlc3MgJGFycm93X2NvdW50OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGdudV9zdGFja1skbWF4X2dudV9zdGFja19pbmRleF0tPnNldF9jb21tYV9jb3VudCgkY29tbWFfY291bnQpOwogICAgICAgICAgICAgICAgJGdudV9zdGFja1skbWF4X2dudV9zdGFja19pbmRleF0tPnNldF9hcnJvd19jb3VudCgkYXJyb3dfY291bnQpOwoKICAgICAgICAgICAgICAgIGlmICggJGF2YWlsYWJsZV9zcGFjZXMgPiAwICkgewoKICAgICAgICAgICAgICAgICAgICBpZiAoICRjb21tYV9jb3VudCA8PSAwIHx8ICRhcnJvd19jb3VudCA+IDAgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBteSAkaSA9ICRnbnVfc3RhY2tbJG1heF9nbnVfc3RhY2tfaW5kZXhdLT5nZXRfaW5kZXgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHNlcW5vID0KICAgICAgICAgICAgICAgICAgICAgICAgICAkZ251X3N0YWNrWyRtYXhfZ251X3N0YWNrX2luZGV4XQogICAgICAgICAgICAgICAgICAgICAgICAgIC0+Z2V0X3NlcXVlbmNlX251bWJlcigpOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBCZSBzdXJlIHRoaXMgaXRlbSB3YXMgY3JlYXRlZCBpbiB0aGlzIGJhdGNoLiAgVGhpcwogICAgICAgICAgICAgICAgICAgICAgICAjIHNob3VsZCBiZSB0cnVlIGJlY2F1c2Ugd2UgZGVsZXRlIGFueSBhdmFpbGFibGUKICAgICAgICAgICAgICAgICAgICAgICAgIyBzcGFjZSBmcm9tIG9wZW4gaXRlbXMgYXQgdGhlIGVuZCBvZiBlYWNoIGJhdGNoLgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICAgJGdudV9zZXF1ZW5jZV9udW1iZXIgIT0gJHNlcW5vCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkaSA+ICRtYXhfZ251X2l0ZW1faW5kZXggKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nKAoiUHJvZ3JhbSBidWcgd2l0aCAtbHAuICBzZXFubz0kc2Vxbm8gc2hvdWxkIGJlICRnbnVfc2VxdWVuY2VfbnVtYmVyIGFuZCBpPSRpIHNob3VsZCBiZSBsZXNzIHRoYW4gbWF4PSRtYXhfZ251X2l0ZW1faW5kZXhcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvcnRfZGVmaW5pdGVfYnVnKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkYXJyb3dfY291bnQgPT0gMCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZ251X2l0ZW1fbGlzdFskaV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+cGVybWFuZW50bHlfZGVjcmVhc2VfYXZhaWxhYmxlX3NwYWNlcygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGF2YWlsYWJsZV9zcGFjZXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGdudV9pdGVtX2xpc3RbJGldCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRlbnRhdGl2ZWx5X2RlY3JlYXNlX2F2YWlsYWJsZV9zcGFjZXMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhdmFpbGFibGVfc3BhY2VzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGogKCAkaSArIDEgLi4gJG1heF9nbnVfaXRlbV9pbmRleCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZ251X2l0ZW1fbGlzdFskal0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ZGVjcmVhc2VfU1BBQ0VTKCRhdmFpbGFibGVfc3BhY2VzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGdvIGRvd24gb25lIGxldmVsCiAgICAgICAgICAgICAgICAtLSRtYXhfZ251X3N0YWNrX2luZGV4OwogICAgICAgICAgICAgICAgJGxldiAgICA9ICRnbnVfc3RhY2tbJG1heF9nbnVfc3RhY2tfaW5kZXhdLT5nZXRfbGV2ZWwoKTsKICAgICAgICAgICAgICAgICRjaV9sZXYgPSAkZ251X3N0YWNrWyRtYXhfZ251X3N0YWNrX2luZGV4XS0+Z2V0X2NpX2xldmVsKCk7CgogICAgICAgICAgICAgICAgIyBzdG9wIHdoZW4gd2UgcmVhY2ggYSBsZXZlbCBhdCBvciBiZWxvdyB0aGUgY3VycmVudCBsZXZlbAogICAgICAgICAgICAgICAgaWYgKCAkbGV2IDw9ICRsZXZlbCAmJiAkY2lfbGV2IDw9ICRjaV9sZXZlbCApIHsKICAgICAgICAgICAgICAgICAgICAkc3BhY2VfY291bnQgPQogICAgICAgICAgICAgICAgICAgICAgJGdudV9zdGFja1skbWF4X2dudV9zdGFja19pbmRleF0tPmdldF9zcGFjZXMoKTsKICAgICAgICAgICAgICAgICAgICAkY3VycmVudF9sZXZlbCAgICA9ICRsZXY7CiAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRfY2lfbGV2ZWwgPSAkY2lfbGV2OwogICAgICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmVhY2hlZCBib3R0b20gb2Ygc3RhY2sgLi4gc2hvdWxkIG5ldmVyIGhhcHBlbiBiZWNhdXNlCiAgICAgICAgICAgICMgb25seSBuZWdhdGl2ZSBsZXZlbHMgY2FuIGdldCBoZXJlLCBhbmQgJGxldmVsIHdhcyBmb3JjZWQKICAgICAgICAgICAgIyB0byBiZSBwb3NpdGl2ZSBhYm92ZS4KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB3YXJuaW5nKAoicHJvZ3JhbSBidWcgd2l0aCAtbHA6IHN0YWNrX2Vycm9yLiBsZXZlbD0kbGV2ZWw7IGxldj0kbGV2OyBjaV9sZXZlbD0kY2lfbGV2ZWw7IGNpX2xldj0kY2lfbGV2OyByZXJ1biB3aXRoIC1ubHBcbiIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXBvcnRfZGVmaW5pdGVfYnVnKCk7CiAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgaGFuZGxlIGluY3JlYXNpbmcgZGVwdGgKICAgIGlmICggJGxldmVsID4gJGN1cnJlbnRfbGV2ZWwgfHwgJGNpX2xldmVsID4gJGN1cnJlbnRfY2lfbGV2ZWwgKSB7CgogICAgICAgICMgQ29tcHV0ZSB0aGUgc3RhbmRhcmQgaW5jcmVtZW50YWwgd2hpdGVzcGFjZS4gIFRoaXMgd2lsbCBiZQogICAgICAgICMgdGhlIG1pbmltdW0gaW5jcmVtZW50YWwgd2hpdGVzcGFjZSB0aGF0IHdpbGwgYmUgdXNlZC4gIFRoaXMKICAgICAgICAjIGNob2ljZSByZXN1bHRzIGluIGEgc21vb3RoIHRyYW5zaXRpb24gYmV0d2VlbiB0aGUgZ251LXN0eWxlCiAgICAgICAgIyBhbmQgdGhlIHN0YW5kYXJkIHN0eWxlLgogICAgICAgIG15ICRzdGFuZGFyZF9pbmNyZW1lbnQgPQogICAgICAgICAgKCAkbGV2ZWwgLSAkY3VycmVudF9sZXZlbCApICogJHJPcHRzX2luZGVudF9jb2x1bW5zICsKICAgICAgICAgICggJGNpX2xldmVsIC0gJGN1cnJlbnRfY2lfbGV2ZWwgKSAqICRyT3B0c19jb250aW51YXRpb25faW5kZW50YXRpb247CgogICAgICAgICMgTm93IHdlIGhhdmUgdG8gZGVmaW5lIGhvdyBtdWNoIGV4dHJhIGluY3JlbWVudGFsIHNwYWNlCiAgICAgICAgIyAoIiRhdmFpbGFibGVfc3BhY2UiKSB3ZSB3YW50LiAgVGhpcyBleHRyYSBzcGFjZSB3aWxsIGJlCiAgICAgICAgIyByZWR1Y2VkIGFzIG5lY2Vzc2FyeSB3aGVuIGxvbmcgbGluZXMgYXJlIGVuY291bnRlcmVkIG9yIHdoZW4KICAgICAgICAjIGl0IGJlY29tZXMgY2xlYXIgdGhhdCB3ZSBkbyBub3QgaGF2ZSBhIGdvb2QgbGlzdC4KICAgICAgICBteSAkYXZhaWxhYmxlX3NwYWNlID0gMDsKICAgICAgICBteSAkYWxpZ25fcGFyZW4gICAgID0gMDsKICAgICAgICBteSAkZXhjZXNzICAgICAgICAgID0gMDsKCiAgICAgICAgIyBpbml0aWFsaXphdGlvbiBvbiBlbXB0eSBzdGFjay4uCiAgICAgICAgaWYgKCAkbWF4X2dudV9zdGFja19pbmRleCA9PSAwICkgewogICAgICAgICAgICAkc3BhY2VfY291bnQgPSAkbGV2ZWwgKiAkck9wdHNfaW5kZW50X2NvbHVtbnM7CiAgICAgICAgfQoKICAgICAgICAjIGlmIHRoaXMgaXMgYSBCTE9DSywgYWRkIHRoZSBzdGFuZGFyZCBpbmNyZW1lbnQKICAgICAgICBlbHNpZiAoJGxhc3Rfbm9uYmxhbmtfYmxvY2tfdHlwZSkgewogICAgICAgICAgICAkc3BhY2VfY291bnQgKz0gJHN0YW5kYXJkX2luY3JlbWVudDsKICAgICAgICB9CgogICAgICAgICMgaWYgbGFzdCBub25ibGFuayB0b2tlbiB3YXMgbm90IHN0cnVjdHVyYWwgaW5kZW50YXRpb24sCiAgICAgICAgIyBqdXN0IHVzZSBzdGFuZGFyZCBpbmNyZW1lbnQKICAgICAgICBlbHNpZiAoICRsYXN0X25vbmJsYW5rX3R5cGUgbmUgJ3snICkgewogICAgICAgICAgICAkc3BhY2VfY291bnQgKz0gJHN0YW5kYXJkX2luY3JlbWVudDsKICAgICAgICB9CgogICAgICAgICMgb3RoZXJ3aXNlIHVzZSB0aGUgc3BhY2UgdG8gdGhlIGZpcnN0IG5vbi1ibGFuayBsZXZlbCBjaGFuZ2UgdG9rZW4KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICRzcGFjZV9jb3VudCA9ICRnbnVfcG9zaXRpb25fcHJlZGljdG9yOwoKICAgICAgICAgICAgbXkgJG1pbl9nbnVfaW5kZW50YXRpb24gPQogICAgICAgICAgICAgICRnbnVfc3RhY2tbJG1heF9nbnVfc3RhY2tfaW5kZXhdLT5nZXRfc3BhY2VzKCk7CgogICAgICAgICAgICAkYXZhaWxhYmxlX3NwYWNlID0gJHNwYWNlX2NvdW50IC0gJG1pbl9nbnVfaW5kZW50YXRpb247CiAgICAgICAgICAgIGlmICggJGF2YWlsYWJsZV9zcGFjZSA+PSAkc3RhbmRhcmRfaW5jcmVtZW50ICkgewogICAgICAgICAgICAgICAgJG1pbl9nbnVfaW5kZW50YXRpb24gKz0gJHN0YW5kYXJkX2luY3JlbWVudDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRhdmFpbGFibGVfc3BhY2UgPiAxICkgewogICAgICAgICAgICAgICAgJG1pbl9nbnVfaW5kZW50YXRpb24gKz0gJGF2YWlsYWJsZV9zcGFjZSArIDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkbGFzdF9ub25ibGFua190b2tlbiA9fiAvXltce1xbXChdJC8gKSB7CiAgICAgICAgICAgICAgICBpZiAoICggJHRpZ2h0bmVzc3skbGFzdF9ub25ibGFua190b2tlbn0gPCAyICkgKSB7CiAgICAgICAgICAgICAgICAgICAgJG1pbl9nbnVfaW5kZW50YXRpb24gKz0gMjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRtaW5fZ251X2luZGVudGF0aW9uICs9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkbWluX2dudV9pbmRlbnRhdGlvbiArPSAkc3RhbmRhcmRfaW5jcmVtZW50OwogICAgICAgICAgICB9CiAgICAgICAgICAgICRhdmFpbGFibGVfc3BhY2UgPSAkc3BhY2VfY291bnQgLSAkbWluX2dudV9pbmRlbnRhdGlvbjsKCiAgICAgICAgICAgIGlmICggJGF2YWlsYWJsZV9zcGFjZSA8IDAgKSB7CiAgICAgICAgICAgICAgICAkc3BhY2VfY291bnQgICAgID0gJG1pbl9nbnVfaW5kZW50YXRpb247CiAgICAgICAgICAgICAgICAkYXZhaWxhYmxlX3NwYWNlID0gMDsKICAgICAgICAgICAgfQogICAgICAgICAgICAkYWxpZ25fcGFyZW4gPSAxOwogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUgc3RhdGUsIGJ1dCBub3Qgb24gYSBibGFuayB0b2tlbgogICAgICAgIGlmICggJHR5cGVzX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dIG5lICdiJyApIHsKCiAgICAgICAgICAgICRnbnVfc3RhY2tbJG1heF9nbnVfc3RhY2tfaW5kZXhdLT5zZXRfaGF2ZV9jaGlsZCgxKTsKCiAgICAgICAgICAgICsrJG1heF9nbnVfc3RhY2tfaW5kZXg7CiAgICAgICAgICAgICRnbnVfc3RhY2tbJG1heF9nbnVfc3RhY2tfaW5kZXhdID0KICAgICAgICAgICAgICBuZXdfbHBfaW5kZW50YXRpb25faXRlbSggJHNwYWNlX2NvdW50LCAkbGV2ZWwsICRjaV9sZXZlbCwKICAgICAgICAgICAgICAgICRhdmFpbGFibGVfc3BhY2UsICRhbGlnbl9wYXJlbiApOwoKICAgICAgICAgICAgIyBJZiB0aGUgb3BlbmluZyBwYXJlbiBpcyBiZXlvbmQgdGhlIGhhbGYtbGluZSBsZW5ndGgsIHRoZW4KICAgICAgICAgICAgIyB3ZSB3aWxsIHVzZSB0aGUgbWluaW11bSAoc3RhbmRhcmQpIGluZGVudGF0aW9uLiAgVGhpcyB3aWxsCiAgICAgICAgICAgICMgaGVscCBhdm9pZCBwcm9ibGVtcyBhc3NvY2lhdGVkIHdpdGggcnVubmluZyBvdXQgb2Ygc3BhY2UKICAgICAgICAgICAgIyBuZWFyIHRoZSBlbmQgb2YgYSBsaW5lLiAgQXMgYSByZXN1bHQsIGluIGRlZXBseSBuZXN0ZWQKICAgICAgICAgICAgIyBsaXN0cywgdGhlcmUgd2lsbCBiZSBzb21lIGluZGVudGF0aW9ucyB3aGljaCBhcmUgbGltaXRlZAogICAgICAgICAgICAjIHRvIHRoaXMgbWluaW11bSBzdGFuZGFyZCBpbmRlbnRhdGlvbi4gQnV0IHRoZSBtb3N0IGRlZXBseQogICAgICAgICAgICAjIG5lc3RlZCBjb250YWluZXIgd2lsbCBzdGlsbCBwcm9iYWJseSBiZSBhYmxlIHRvIHNoaWZ0IGl0cwogICAgICAgICAgICAjIHBhcmFtZXRlcnMgdG8gdGhlIHJpZ2h0IGZvciBwcm9wZXIgYWxpZ25tZW50LCBzbyBpbiBtb3N0CiAgICAgICAgICAgICMgY2FzZXMgdGhpcyB3aWxsIG5vdCBiZSBub3RpY2VhYmxlLgogICAgICAgICAgICBpZiAoICRhdmFpbGFibGVfc3BhY2UgPiAwICYmICRzcGFjZV9jb3VudCA+ICRoYWxmd2F5ICkgewogICAgICAgICAgICAgICAgJGdudV9zdGFja1skbWF4X2dudV9zdGFja19pbmRleF0KICAgICAgICAgICAgICAgICAgLT50ZW50YXRpdmVseV9kZWNyZWFzZV9hdmFpbGFibGVfc3BhY2VzKCRhdmFpbGFibGVfc3BhY2UpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgQ291bnQgY29tbWFzIGFuZCBsb29rIGZvciBub24tbGlzdCBjaGFyYWN0ZXJzLiAgT25jZSB3ZSBzZWUgYQogICAgIyBub24tbGlzdCBjaGFyYWN0ZXIsIHdlIGdpdmUgdXAgYW5kIGRvbid0IGxvb2sgZm9yIGFueSBtb3JlIGNvbW1hcy4KICAgIGlmICggJHR5cGUgZXEgJz0+JyApIHsKICAgICAgICAkZ251X2Fycm93X2NvdW50eyR0b3RhbF9kZXB0aH0rKzsKCiAgICAgICAgIyB0ZW50YXRpdmVseSB0cmVhdGluZyAnPT4nIGxpa2UgJz0nIGZvciBlc3RpbWF0aW5nIGJyZWFrcwogICAgICAgICMgVE9ETzogdGhpcyBjb3VsZCB1c2Ugc29tZSBleHBlcmltZW50YXRpb24KICAgICAgICAkbGFzdF9nbnVfZXF1YWxzeyR0b3RhbF9kZXB0aH0gPSAkbWF4X2luZGV4X3RvX2dvOwogICAgfQoKICAgIGVsc2lmICggJHR5cGUgZXEgJywnICkgewogICAgICAgICRnbnVfY29tbWFfY291bnR7JHRvdGFsX2RlcHRofSsrOwogICAgfQoKICAgIGVsc2lmICggJGlzX2Fzc2lnbm1lbnR7JHR5cGV9ICkgewogICAgICAgICRsYXN0X2dudV9lcXVhbHN7JHRvdGFsX2RlcHRofSA9ICRtYXhfaW5kZXhfdG9fZ287CiAgICB9CgogICAgIyB0aGlzIHRva2VuIG1pZ2h0IHN0YXJ0IGEgbmV3IGxpbmUKICAgICMgaWYgdGhpcyBpcyBhIG5vbi1ibGFuay4uCiAgICBpZiAoICR0eXBlIG5lICdiJyApIHsKCiAgICAgICAgIyBhbmQgaWYgLi4KICAgICAgICBpZiAoCgogICAgICAgICAgICAjIHRoaXMgaXMgdGhlIGZpcnN0IG5vbmJsYW5rIHRva2VuIG9mIHRoZSBsaW5lCiAgICAgICAgICAgICRtYXhfaW5kZXhfdG9fZ28gPT0gMSAmJiAkdHlwZXNfdG9fZ29bMF0gZXEgJ2InCgogICAgICAgICAgICAjIG9yIHByZXZpb3VzIGNoYXJhY3RlciB3YXMgb25lIG9mIHRoZXNlOgogICAgICAgICAgICB8fCAkbGFzdF9ub25ibGFua190eXBlX3RvX2dvID1+IC9eKFtcOlw/XCxmXSkkLwoKICAgICAgICAgICAgIyBvciBwcmV2aW91cyBjaGFyYWN0ZXIgd2FzIG9wZW5pbmcgYW5kIHRoaXMgZG9lcyBub3QgY2xvc2UgaXQKICAgICAgICAgICAgfHwgKCAkbGFzdF9ub25ibGFua190eXBlX3RvX2dvIGVxICd7JyAmJiAkdHlwZSBuZSAnfScgKQogICAgICAgICAgICB8fCAoICRsYXN0X25vbmJsYW5rX3R5cGVfdG9fZ28gZXEgJygnIGFuZCAkdHlwZSBuZSAnKScgKQoKICAgICAgICAgICAgIyBvciB0aGlzIHRva2VuIGlzIG9uZSBvZiB0aGVzZToKICAgICAgICAgICAgfHwgJHR5cGUgPX4gL14oW1wuXXxcfFx8fFwmXCYpJC8KCiAgICAgICAgICAgICMgb3IgdGhpcyBpcyBhIGNsb3Npbmcgc3RydWN0dXJlCiAgICAgICAgICAgIHx8ICggICAkbGFzdF9ub25ibGFua190eXBlX3RvX2dvIGVxICd9JwogICAgICAgICAgICAgICAgJiYgJGxhc3Rfbm9uYmxhbmtfdG9rZW5fdG9fZ28gZXEgJGxhc3Rfbm9uYmxhbmtfdHlwZV90b19nbyApCgogICAgICAgICAgICAjIG9yIHByZXZpb3VzIHRva2VuIHdhcyBrZXl3b3JkICdyZXR1cm4nCiAgICAgICAgICAgIHx8ICggJGxhc3Rfbm9uYmxhbmtfdHlwZV90b19nbyBlcSAnaycKICAgICAgICAgICAgICAgICYmICggJGxhc3Rfbm9uYmxhbmtfdG9rZW5fdG9fZ28gZXEgJ3JldHVybicgJiYgJHR5cGUgbmUgJ3snICkgKQoKICAgICAgICAgICAgIyBvciBzdGFydGluZyBhIG5ldyBsaW5lIGF0IGNlcnRhaW4ga2V5d29yZHMgaXMgZmluZQogICAgICAgICAgICB8fCAoICAgJHR5cGUgZXEgJ2snCiAgICAgICAgICAgICAgICAmJiAkaXNfaWZfdW5sZXNzX2FuZF9vcl9sYXN0X25leHRfcmVkb19yZXR1cm57JHRva2VufSApCgogICAgICAgICAgICAjIG9yIHRoaXMgaXMgYWZ0ZXIgYW4gYXNzaWdubWVudCBhZnRlciBhIGNsb3Npbmcgc3RydWN0dXJlCiAgICAgICAgICAgIHx8ICgKICAgICAgICAgICAgICAgICRpc19hc3NpZ25tZW50eyRsYXN0X25vbmJsYW5rX3R5cGVfdG9fZ299CiAgICAgICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAgICAgJGxhc3RfbGFzdF9ub25ibGFua190eXBlX3RvX2dvID1+IC9eW1x9XClcXV0kLwoKICAgICAgICAgICAgICAgICAgICAjIGFuZCBpdCBpcyBzaWduaWZpY2FudGx5IHRvIHRoZSByaWdodAogICAgICAgICAgICAgICAgICAgIHx8ICRnbnVfcG9zaXRpb25fcHJlZGljdG9yID4gJGhhbGZ3YXkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgY2hlY2tfZm9yX2xvbmdfZ251X3N0eWxlX2xpbmVzKCk7CiAgICAgICAgICAgICRsaW5lX3N0YXJ0X2luZGV4X3RvX2dvID0gJG1heF9pbmRleF90b19nbzsKCiAgICAgICAgICAgICMgYmFjayB1cCAxIHRva2VuIGlmIHdlIHdhbnQgdG8gYnJlYWsgYmVmb3JlIHRoYXQgdHlwZQogICAgICAgICAgICAjIG90aGVyd2lzZSwgd2UgbWF5IHN0cmFuZCB0b2tlbnMgbGlrZSAnPycgb3IgJzonIG9uIGEgbGluZQogICAgICAgICAgICBpZiAoICRsaW5lX3N0YXJ0X2luZGV4X3RvX2dvID4gMCApIHsKICAgICAgICAgICAgICAgIGlmICggJGxhc3Rfbm9uYmxhbmtfdHlwZV90b19nbyBlcSAnaycgKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICggJHdhbnRfYnJlYWtfYmVmb3JleyRsYXN0X25vbmJsYW5rX3Rva2VuX3RvX2dvfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmVfc3RhcnRfaW5kZXhfdG9fZ28tLTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICR3YW50X2JyZWFrX2JlZm9yZXskbGFzdF9ub25ibGFua190eXBlX3RvX2dvfSApIHsKICAgICAgICAgICAgICAgICAgICAkbGluZV9zdGFydF9pbmRleF90b19nby0tOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgcmVtZW1iZXIgdGhlIHByZWRpY3RlZCBwb3NpdGlvbiBvZiB0aGlzIHRva2VuIG9uIHRoZSBvdXRwdXQgbGluZQogICAgaWYgKCAkbWF4X2luZGV4X3RvX2dvID4gJGxpbmVfc3RhcnRfaW5kZXhfdG9fZ28gKSB7CiAgICAgICAgJGdudV9wb3NpdGlvbl9wcmVkaWN0b3IgPQogICAgICAgICAgdG90YWxfbGluZV9sZW5ndGgoICRsaW5lX3N0YXJ0X2luZGV4X3RvX2dvLCAkbWF4X2luZGV4X3RvX2dvICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkZ251X3Bvc2l0aW9uX3ByZWRpY3RvciA9CiAgICAgICAgICAkc3BhY2VfY291bnQgKyAkdG9rZW5fbGVuZ3Roc190b19nb1skbWF4X2luZGV4X3RvX2dvXTsKICAgIH0KCiAgICAjIHN0b3JlIHRoZSBpbmRlbnRhdGlvbiBvYmplY3QgZm9yIHRoaXMgdG9rZW4KICAgICMgdGhpcyBhbGxvd3MgdXMgdG8gbWFuaXB1bGF0ZSB0aGUgbGVhZGluZyB3aGl0ZXNwYWNlCiAgICAjIChpbiBjYXNlIHdlIGhhdmUgdG8gcmVkdWNlIGluZGVudGF0aW9uIHRvIGZpdCBhIGxpbmUpIHdpdGhvdXQKICAgICMgaGF2aW5nIHRvIGNoYW5nZSBhbnkgdG9rZW4gdmFsdWVzCiAgICAkbGVhZGluZ19zcGFjZXNfdG9fZ29bJG1heF9pbmRleF90b19nb10gPSAkZ251X3N0YWNrWyRtYXhfZ251X3N0YWNrX2luZGV4XTsKICAgICRyZWR1Y2VkX3NwYWNlc190b19nb1skbWF4X2luZGV4X3RvX2dvXSA9CiAgICAgICggJG1heF9nbnVfc3RhY2tfaW5kZXggPiAwICYmICRjaV9sZXZlbCApCiAgICAgID8gJGdudV9zdGFja1sgJG1heF9nbnVfc3RhY2tfaW5kZXggLSAxIF0KICAgICAgOiAkZ251X3N0YWNrWyRtYXhfZ251X3N0YWNrX2luZGV4XTsKICAgIHJldHVybjsKfQoKc3ViIGNoZWNrX2Zvcl9sb25nX2dudV9zdHlsZV9saW5lcyB7CgogICAgIyBsb29rIGF0IHRoZSBjdXJyZW50IGVzdGltYXRlZCBtYXhpbXVtIGxpbmUgbGVuZ3RoLCBhbmQKICAgICMgcmVtb3ZlIHNvbWUgd2hpdGVzcGFjZSBpZiBpdCBleGNlZWRzIHRoZSBkZXNpcmVkIG1heGltdW0KCiAgICAjIHRoaXMgaXMgb25seSBmb3IgdGhlICctbHAnIHN0eWxlCiAgICByZXR1cm4gdW5sZXNzICgkck9wdHNfbGluZV91cF9wYXJlbnRoZXNlcyk7CgogICAgIyBub3RoaW5nIGNhbiBiZSBkb25lIGlmIG5vIHN0YWNrIGl0ZW1zIGRlZmluZWQgZm9yIHRoaXMgbGluZQogICAgcmV0dXJuIGlmICggJG1heF9nbnVfaXRlbV9pbmRleCA9PSBVTkRFRklORURfSU5ERVggKTsKCiAgICAjIHNlZSBpZiB3ZSBoYXZlIGV4Y2VlZGVkIHRoZSBtYXhpbXVtIGRlc2lyZWQgbGluZSBsZW5ndGgKICAgICMga2VlcCAyIGV4dHJhIGZyZWUgYmVjYXVzZSB0aGV5IGFyZSBuZWVkZWQgaW4gc29tZSBjYXNlcwogICAgIyAocmVzdWx0IG9mIHRyaWFsLWFuZC1lcnJvciB0ZXN0aW5nKQogICAgbXkgJHNwYWNlc19uZWVkZWQgPQogICAgICAkZ251X3Bvc2l0aW9uX3ByZWRpY3RvciAtIG1heGltdW1fbGluZV9sZW5ndGgoJG1heF9pbmRleF90b19nbykgKyAyOwoKICAgIHJldHVybiBpZiAoICRzcGFjZXNfbmVlZGVkIDw9IDAgKTsKCiAgICAjIFdlIGFyZSBvdmVyIHRoZSBsaW1pdCwgc28gdHJ5IHRvIHJlbW92ZSBhIHJlcXVlc3RlZCBudW1iZXIgb2YKICAgICMgc3BhY2VzIGZyb20gbGVhZGluZyB3aGl0ZXNwYWNlLiAgV2UgYXJlIG9ubHkgYWxsb3dlZCB0byByZW1vdmUKICAgICMgZnJvbSB3aGl0ZXNwYWNlIGl0ZW1zIGNyZWF0ZWQgb24gdGhpcyBiYXRjaCwgc2luY2Ugb3RoZXJzIGhhdmUKICAgICMgYWxyZWFkeSBiZWVuIHVzZWQgYW5kIGNhbm5vdCBiZSB1bmRvbmUuCiAgICBteSBAY2FuZGlkYXRlcyA9ICgpOwogICAgbXkgJGk7CgogICAgIyBsb29wIG92ZXIgYWxsIHdoaXRlc3BhY2UgaXRlbXMgY3JlYXRlZCBmb3IgdGhlIGN1cnJlbnQgYmF0Y2gKICAgIGZvciAoICRpID0gMCA7ICRpIDw9ICRtYXhfZ251X2l0ZW1faW5kZXggOyAkaSsrICkgewogICAgICAgIG15ICRpdGVtID0gJGdudV9pdGVtX2xpc3RbJGldOwoKICAgICAgICAjIGl0ZW0gbXVzdCBzdGlsbCBiZSBvcGVuIHRvIGJlIGEgY2FuZGlkYXRlIChvdGhlcndpc2UgaXQKICAgICAgICAjIGNhbm5vdCBpbmZsdWVuY2UgdGhlIGN1cnJlbnQgdG9rZW4pCiAgICAgICAgbmV4dCBpZiAoICRpdGVtLT5nZXRfY2xvc2VkKCkgPj0gMCApOwoKICAgICAgICBteSAkYXZhaWxhYmxlX3NwYWNlcyA9ICRpdGVtLT5nZXRfYXZhaWxhYmxlX3NwYWNlcygpOwoKICAgICAgICBpZiAoICRhdmFpbGFibGVfc3BhY2VzID4gMCApIHsKICAgICAgICAgICAgcHVzaCggQGNhbmRpZGF0ZXMsIFsgJGksICRhdmFpbGFibGVfc3BhY2VzIF0gKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIHVubGVzcyAoQGNhbmRpZGF0ZXMpOwoKICAgICMgc29ydCBieSBhdmFpbGFibGUgd2hpdGVzcGFjZSBzbyB0aGF0IHdlIGNhbiByZW1vdmUgd2hpdGVzcGFjZQogICAgIyBmcm9tIHRoZSBtYXhpbXVtIGF2YWlsYWJsZSBmaXJzdAogICAgQGNhbmRpZGF0ZXMgPSBzb3J0IHsgJGItPlsxXSA8PT4gJGEtPlsxXSB9IEBjYW5kaWRhdGVzOwoKICAgICMga2VlcCByZW1vdmluZyB3aGl0ZXNwYWNlIHVudGlsIHdlIGFyZSBkb25lIG9yIGhhdmUgbm8gbW9yZQogICAgZm9yZWFjaCBteSAkY2FuZGlkYXRlIChAY2FuZGlkYXRlcykgewogICAgICAgIG15ICggJGksICRhdmFpbGFibGVfc3BhY2VzICkgPSBAeyRjYW5kaWRhdGV9OwogICAgICAgIG15ICRkZWxldGVkX3NwYWNlcyA9CiAgICAgICAgICAoICRhdmFpbGFibGVfc3BhY2VzID4gJHNwYWNlc19uZWVkZWQgKQogICAgICAgICAgPyAkc3BhY2VzX25lZWRlZAogICAgICAgICAgOiAkYXZhaWxhYmxlX3NwYWNlczsKCiAgICAgICAgIyByZW1vdmUgdGhlIGluY3JlbWVudGFsIHNwYWNlIGZyb20gdGhpcyBpdGVtCiAgICAgICAgJGdudV9pdGVtX2xpc3RbJGldLT5kZWNyZWFzZV9hdmFpbGFibGVfc3BhY2VzKCRkZWxldGVkX3NwYWNlcyk7CgogICAgICAgIG15ICRpX2RlYnVnID0gJGk7CgogICAgICAgICMgdXBkYXRlIHRoZSBsZWFkaW5nIHdoaXRlc3BhY2Ugb2YgdGhpcyBpdGVtIGFuZCBhbGwgaXRlbXMKICAgICAgICAjIHRoYXQgY2FtZSBhZnRlciBpdAogICAgICAgIGZvciAoIDsgJGkgPD0gJG1heF9nbnVfaXRlbV9pbmRleCA7ICRpKysgKSB7CgogICAgICAgICAgICBteSAkb2xkX3NwYWNlcyA9ICRnbnVfaXRlbV9saXN0WyRpXS0+Z2V0X3NwYWNlcygpOwogICAgICAgICAgICBpZiAoICRvbGRfc3BhY2VzID49ICRkZWxldGVkX3NwYWNlcyApIHsKICAgICAgICAgICAgICAgICRnbnVfaXRlbV9saXN0WyRpXS0+ZGVjcmVhc2VfU1BBQ0VTKCRkZWxldGVkX3NwYWNlcyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2hvdWxkbid0IGhhcHBlbiBleGNlcHQgZm9yIGNvZGUgYnVnOgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIG15ICRsZXZlbCAgICAgICAgPSAkZ251X2l0ZW1fbGlzdFskaV9kZWJ1Z10tPmdldF9sZXZlbCgpOwogICAgICAgICAgICAgICAgbXkgJGNpX2xldmVsICAgICA9ICRnbnVfaXRlbV9saXN0WyRpX2RlYnVnXS0+Z2V0X2NpX2xldmVsKCk7CiAgICAgICAgICAgICAgICBteSAkb2xkX2xldmVsICAgID0gJGdudV9pdGVtX2xpc3RbJGldLT5nZXRfbGV2ZWwoKTsKICAgICAgICAgICAgICAgIG15ICRvbGRfY2lfbGV2ZWwgPSAkZ251X2l0ZW1fbGlzdFskaV0tPmdldF9jaV9sZXZlbCgpOwogICAgICAgICAgICAgICAgd2FybmluZygKInByb2dyYW0gYnVnIHdpdGggLWxwOiB3YW50IHRvIGRlbGV0ZSAkZGVsZXRlZF9zcGFjZXMgZnJvbSBpdGVtICRpLCBidXQgb2xkPSRvbGRfc3BhY2VzIGRlbGV0ZWQ6IGxldj0kbGV2ZWwgY2k9JGNpX2xldmVsICBkZWxldGVkOiBsZXZlbD0kb2xkX2xldmVsIGNpPSRjaV9sZXZlbFxuIgogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJlcG9ydF9kZWZpbml0ZV9idWcoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkZ251X3Bvc2l0aW9uX3ByZWRpY3RvciAtPSAkZGVsZXRlZF9zcGFjZXM7CiAgICAgICAgJHNwYWNlc19uZWVkZWQgICAgICAgICAgLT0gJGRlbGV0ZWRfc3BhY2VzOwogICAgICAgIGxhc3QgdW5sZXNzICggJHNwYWNlc19uZWVkZWQgPiAwICk7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBmaW5pc2hfbHBfYmF0Y2ggewoKICAgICMgVGhpcyByb3V0aW5lIGlzIGNhbGxlZCBvbmNlIGFmdGVyIGVhY2ggb3V0cHV0IHN0cmVhbSBiYXRjaCBpcwogICAgIyBmaW5pc2hlZCB0byB1bmRvIGluZGVudGF0aW9uIGZvciBhbGwgaW5jb21wbGV0ZSAtbHAKICAgICMgaW5kZW50YXRpb24gbGV2ZWxzLiAgSXQgaXMgdG9vIHJpc2t5IHRvIGxlYXZlIGEgbGV2ZWwgb3BlbiwKICAgICMgYmVjYXVzZSB0aGVuIHdlIGNhbid0IGJhY2t0cmFjayBpbiBjYXNlIG9mIGEgbG9uZyBsaW5lIHRvIGZvbGxvdy4KICAgICMgVGhpcyBtZWFucyB0aGF0IGNvbW1lbnRzIGFuZCBibGFuayBsaW5lcyB3aWxsIGRpc3J1cHQgdGhpcwogICAgIyBpbmRlbnRhdGlvbiBzdHlsZS4gIEJ1dCB0aGUgdmVydGljYWwgYWxpZ25lciBtYXkgYmUgYWJsZSB0bwogICAgIyBnZXQgdGhlIHNwYWNlIGJhY2sgaWYgdGhlcmUgYXJlIHNpZGUgY29tbWVudHMuCgogICAgIyB0aGlzIGlzIG9ubHkgZm9yIHRoZSAnbHAnIHN0eWxlCiAgICByZXR1cm4gdW5sZXNzICgkck9wdHNfbGluZV91cF9wYXJlbnRoZXNlcyk7CgogICAgIyBub3RoaW5nIGNhbiBiZSBkb25lIGlmIG5vIHN0YWNrIGl0ZW1zIGRlZmluZWQgZm9yIHRoaXMgbGluZQogICAgcmV0dXJuIGlmICggJG1heF9nbnVfaXRlbV9pbmRleCA9PSBVTkRFRklORURfSU5ERVggKTsKCiAgICAjIGxvb3Agb3ZlciBhbGwgd2hpdGVzcGFjZSBpdGVtcyBjcmVhdGVkIGZvciB0aGUgY3VycmVudCBiYXRjaAogICAgZm9yZWFjaCBteSAkaSAoIDAgLi4gJG1heF9nbnVfaXRlbV9pbmRleCApIHsKICAgICAgICBteSAkaXRlbSA9ICRnbnVfaXRlbV9saXN0WyRpXTsKCiAgICAgICAgIyBvbmx5IGxvb2sgZm9yIG9wZW4gaXRlbXMKICAgICAgICBuZXh0IGlmICggJGl0ZW0tPmdldF9jbG9zZWQoKSA+PSAwICk7CgogICAgICAgICMgVGVudGF0aXZlbHkgcmVtb3ZlIGFsbCBvZiB0aGUgYXZhaWxhYmxlIHNwYWNlCiAgICAgICAgIyAoVGhlIHZlcnRpY2FsIGFsaWduZXIgd2lsbCB0cnkgdG8gZ2V0IGl0IGJhY2sgbGF0ZXIpCiAgICAgICAgbXkgJGF2YWlsYWJsZV9zcGFjZXMgPSAkaXRlbS0+Z2V0X2F2YWlsYWJsZV9zcGFjZXMoKTsKICAgICAgICBpZiAoICRhdmFpbGFibGVfc3BhY2VzID4gMCApIHsKCiAgICAgICAgICAgICMgZGVsZXRlIGluY3JlbWVudGFsIHNwYWNlIGZvciB0aGlzIGl0ZW0KICAgICAgICAgICAgJGdudV9pdGVtX2xpc3RbJGldCiAgICAgICAgICAgICAgLT50ZW50YXRpdmVseV9kZWNyZWFzZV9hdmFpbGFibGVfc3BhY2VzKCRhdmFpbGFibGVfc3BhY2VzKTsKCiAgICAgICAgICAgICMgUmVkdWNlIHRoZSB0b3RhbCBpbmRlbnRhdGlvbiBzcGFjZSBvZiBhbnkgbm9kZXMgdGhhdCBmb2xsb3cKICAgICAgICAgICAgIyBOb3RlIHRoYXQgYW55IHN1Y2ggbm9kZXMgbXVzdCBuZWNlc3NhcmlseSBiZSBkZXBlbmRlbnRzCiAgICAgICAgICAgICMgb2YgdGhpcyBub2RlLgogICAgICAgICAgICBmb3JlYWNoICggJGkgKyAxIC4uICRtYXhfZ251X2l0ZW1faW5kZXggKSB7CiAgICAgICAgICAgICAgICAkZ251X2l0ZW1fbGlzdFskX10tPmRlY3JlYXNlX1NQQUNFUygkYXZhaWxhYmxlX3NwYWNlcyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiByZWR1Y2VfbHBfaW5kZW50YXRpb24gewoKICAgICMgcmVkdWNlIHRoZSBsZWFkaW5nIHdoaXRlc3BhY2UgYXQgdG9rZW4gJGkgaWYgcG9zc2libGUgYnkgJHNwYWNlc19uZWVkZWQKICAgICMgKGEgbGFyZ2UgdmFsdWUgb2YgJHNwYWNlc19uZWVkZWQgd2lsbCByZW1vdmUgYWxsIGV4Y2VzcyBzcGFjZSkKICAgICMgTk9URTogdG8gYmUgY2FsbGVkIGZyb20gc2Nhbl9saXN0IG9ubHkgZm9yIGEgc2VxdWVuY2Ugb2YgdG9rZW5zCiAgICAjIGNvbnRhaW5lZCBiZXR3ZWVuIG9wZW5pbmcgYW5kIGNsb3NpbmcgcGFyZW5zL2JyYWNlcy9icmFja2V0cwoKICAgIG15ICggJGksICRzcGFjZXNfd2FudGVkICkgPSBAXzsKICAgIG15ICRkZWxldGVkX3NwYWNlcyA9IDA7CgogICAgbXkgJGl0ZW0gICAgICAgICAgICAgPSAkbGVhZGluZ19zcGFjZXNfdG9fZ29bJGldOwogICAgbXkgJGF2YWlsYWJsZV9zcGFjZXMgPSAkaXRlbS0+Z2V0X2F2YWlsYWJsZV9zcGFjZXMoKTsKCiAgICBpZiAoCiAgICAgICAgJGF2YWlsYWJsZV9zcGFjZXMgPiAwCiAgICAgICAgJiYgKCAoICRzcGFjZXNfd2FudGVkIDw9ICRhdmFpbGFibGVfc3BhY2VzICkKICAgICAgICAgICAgfHwgISRpdGVtLT5nZXRfaGF2ZV9jaGlsZCgpICkKICAgICAgKQogICAgewoKICAgICAgICAjIHdlJ2xsIHJlbW92ZSB0aGVzZSBzcGFjZXMsIGJ1dCBtYXJrIHRoZW0gYXMgcmVjb3ZlcmFibGUKICAgICAgICAkZGVsZXRlZF9zcGFjZXMgPQogICAgICAgICAgJGl0ZW0tPnRlbnRhdGl2ZWx5X2RlY3JlYXNlX2F2YWlsYWJsZV9zcGFjZXMoJHNwYWNlc193YW50ZWQpOwogICAgfQoKICAgIHJldHVybiAkZGVsZXRlZF9zcGFjZXM7Cn0KCnN1YiB0b2tlbl9zZXF1ZW5jZV9sZW5ndGggewoKICAgICMgcmV0dXJuIGxlbmd0aCBvZiB0b2tlbnMgKCRpYmVnIC4uICRpZW5kKSBpbmNsdWRpbmcgJGliZWcgJiAkaWVuZAogICAgIyByZXR1cm5zIDAgaWYgJGliZWcgPiAkaWVuZCAoc2hvdWxkbid0IGhhcHBlbikKICAgIG15ICggJGliZWcsICRpZW5kICkgPSBAXzsKICAgIHJldHVybiAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJGllbmQgPCAwIHx8ICRpYmVnID4gJGllbmQgKTsKICAgIHJldHVybiAkc3VtbWVkX2xlbmd0aHNfdG9fZ29bICRpZW5kICsgMSBdIGlmICggJGliZWcgPCAwICk7CiAgICByZXR1cm4gJHN1bW1lZF9sZW5ndGhzX3RvX2dvWyAkaWVuZCArIDEgXSAtICRzdW1tZWRfbGVuZ3Roc190b19nb1skaWJlZ107Cn0KCnN1YiB0b3RhbF9saW5lX2xlbmd0aCB7CgogICAgIyByZXR1cm4gbGVuZ3RoIG9mIGEgbGluZSBvZiB0b2tlbnMgKCRpYmVnIC4uICRpZW5kKQogICAgbXkgKCAkaWJlZywgJGllbmQgKSA9IEBfOwogICAgcmV0dXJuIGxlYWRpbmdfc3BhY2VzX3RvX2dvKCRpYmVnKSArIHRva2VuX3NlcXVlbmNlX2xlbmd0aCggJGliZWcsICRpZW5kICk7Cn0KCnN1YiBtYXhpbXVtX2xpbmVfbGVuZ3RoX2Zvcl9sZXZlbCB7CgogICAgIyByZXR1cm4gbWF4aW11bSBsaW5lIGxlbmd0aCBmb3IgbGluZSBzdGFydGluZyB3aXRoIGEgZ2l2ZW4gbGV2ZWwKICAgIG15ICRtYXhpbXVtX2xpbmVfbGVuZ3RoID0gJHJPcHRzX21heGltdW1fbGluZV9sZW5ndGg7CgogICAgIyBNb2RpZnkgaWYgLXZtbGwgb3B0aW9uIGlzIHNlbGVjdGVkCiAgICBpZiAoJHJPcHRzX3ZhcmlhYmxlX21heGltdW1fbGluZV9sZW5ndGgpIHsKICAgICAgICBteSAkbGV2ZWwgPSBzaGlmdDsKICAgICAgICBpZiAoICRsZXZlbCA8IDAgKSB7ICRsZXZlbCA9IDAgfQogICAgICAgICRtYXhpbXVtX2xpbmVfbGVuZ3RoICs9ICRsZXZlbCAqICRyT3B0c19pbmRlbnRfY29sdW1uczsKICAgIH0KICAgIHJldHVybiAkbWF4aW11bV9saW5lX2xlbmd0aDsKfQoKc3ViIG1heGltdW1fbGluZV9sZW5ndGggewoKICAgICMgcmV0dXJuIG1heGltdW0gbGluZSBsZW5ndGggZm9yIGxpbmUgc3RhcnRpbmcgd2l0aCB0aGUgdG9rZW4gYXQgZ2l2ZW4gaW5kZXgKICAgIG15ICRpaSA9IHNoaWZ0OwogICAgcmV0dXJuIG1heGltdW1fbGluZV9sZW5ndGhfZm9yX2xldmVsKCAkbGV2ZWxzX3RvX2dvWyRpaV0gKTsKfQoKc3ViIGV4Y2Vzc19saW5lX2xlbmd0aCB7CgogICAgIyByZXR1cm4gbnVtYmVyIG9mIGNoYXJhY3RlcnMgYnkgd2hpY2ggYSBsaW5lIG9mIHRva2VucyAoJGliZWcuLiRpZW5kKQogICAgIyBleGNlZWRzIHRoZSBhbGxvd2FibGUgbGluZSBsZW5ndGguCiAgICBteSAoICRpYmVnLCAkaWVuZCwgJGlnbm9yZV9sZWZ0X3dlbGQsICRpZ25vcmVfcmlnaHRfd2VsZCApID0gQF87CgogICAgIyBJbmNsdWRlIGxlZnQgYW5kIHJpZ2h0IHdlbGQgbGVuZ3RocyB1bmxlc3MgcmVxdWVzdGVkIG5vdCB0bwogICAgbXkgJHdsID0gJGlnbm9yZV9sZWZ0X3dlbGQgID8gMCA6IHdlbGRfbGVuX2xlZnRfdG9fZ28oJGllbmQpOwogICAgbXkgJHdyID0gJGlnbm9yZV9yaWdodF93ZWxkID8gMCA6IHdlbGRfbGVuX3JpZ2h0X3RvX2dvKCRpZW5kKTsKCiAgICByZXR1cm4gdG90YWxfbGluZV9sZW5ndGgoICRpYmVnLCAkaWVuZCApICsgJHdsICsgJHdyIC0KICAgICAgbWF4aW11bV9saW5lX2xlbmd0aCgkaWJlZyk7Cn0KCnN1YiB3cmFwdXAgewoKICAgICMgZmx1c2ggYnVmZmVyIGFuZCB3cml0ZSBhbnkgaW5mb3JtYXRpdmUgbWVzc2FnZXMKICAgIG15ICRzZWxmID0gc2hpZnQ7CgogICAgJHNlbGYtPmZsdXNoKCk7CiAgICAkZmlsZV93cml0ZXJfb2JqZWN0LT5kZWNyZW1lbnRfb3V0cHV0X2xpbmVfbnVtYmVyKCkKICAgICAgOyAgICAjIGZpeCB1cCBsaW5lIG51bWJlciBzaW5jZSBpdCB3YXMgaW5jcmVtZW50ZWQKICAgIHdlX2FyZV9hdF90aGVfbGFzdF9saW5lKCk7CiAgICBpZiAoICRhZGRlZF9zZW1pY29sb25fY291bnQgPiAwICkgewogICAgICAgIG15ICRmaXJzdCA9ICggJGFkZGVkX3NlbWljb2xvbl9jb3VudCA+IDEgKSA/ICJGaXJzdCIgOiAiIjsKICAgICAgICBteSAkd2hhdCA9CiAgICAgICAgICAoICRhZGRlZF9zZW1pY29sb25fY291bnQgPiAxICkgPyAic2VtaWNvbG9ucyB3ZXJlIiA6ICJzZW1pY29sb24gd2FzIjsKICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCIkYWRkZWRfc2VtaWNvbG9uX2NvdW50ICR3aGF0IGFkZGVkOlxuIik7CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgKICAgICAgICAgICAgIiAgJGZpcnN0IGF0IGlucHV0IGxpbmUgJGZpcnN0X2FkZGVkX3NlbWljb2xvbl9hdFxuIik7CgogICAgICAgIGlmICggJGFkZGVkX3NlbWljb2xvbl9jb3VudCA+IDEgKSB7CiAgICAgICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoCiAgICAgICAgICAgICAgICAiICAgTGFzdCBhdCBpbnB1dCBsaW5lICRsYXN0X2FkZGVkX3NlbWljb2xvbl9hdFxuIik7CiAgICAgICAgfQogICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoIiAgKFVzZSAtbmFzYyB0byBwcmV2ZW50IHNlbWljb2xvbiBhZGRpdGlvbilcbiIpOwogICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoIlxuIik7CiAgICB9CgogICAgaWYgKCAkZGVsZXRlZF9zZW1pY29sb25fY291bnQgPiAwICkgewogICAgICAgIG15ICRmaXJzdCA9ICggJGRlbGV0ZWRfc2VtaWNvbG9uX2NvdW50ID4gMSApID8gIkZpcnN0IiA6ICIiOwogICAgICAgIG15ICR3aGF0ID0KICAgICAgICAgICggJGRlbGV0ZWRfc2VtaWNvbG9uX2NvdW50ID4gMSApCiAgICAgICAgICA/ICJzZW1pY29sb25zIHdlcmUiCiAgICAgICAgICA6ICJzZW1pY29sb24gd2FzIjsKICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KAogICAgICAgICAgICAiJGRlbGV0ZWRfc2VtaWNvbG9uX2NvdW50IHVubmVjZXNzYXJ5ICR3aGF0IGRlbGV0ZWQ6XG4iKTsKICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KAogICAgICAgICAgICAiICAkZmlyc3QgYXQgaW5wdXQgbGluZSAkZmlyc3RfZGVsZXRlZF9zZW1pY29sb25fYXRcbiIpOwoKICAgICAgICBpZiAoICRkZWxldGVkX3NlbWljb2xvbl9jb3VudCA+IDEgKSB7CiAgICAgICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoCiAgICAgICAgICAgICAgICAiICAgTGFzdCBhdCBpbnB1dCBsaW5lICRsYXN0X2RlbGV0ZWRfc2VtaWNvbG9uX2F0XG4iKTsKICAgICAgICB9CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiICAoVXNlIC1uZHNjIHRvIHByZXZlbnQgc2VtaWNvbG9uIGRlbGV0aW9uKVxuIik7CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiXG4iKTsKICAgIH0KCiAgICBpZiAoICRlbWJlZGRlZF90YWJfY291bnQgPiAwICkgewogICAgICAgIG15ICRmaXJzdCA9ICggJGVtYmVkZGVkX3RhYl9jb3VudCA+IDEgKSA/ICJGaXJzdCIgOiAiIjsKICAgICAgICBteSAkd2hhdCA9CiAgICAgICAgICAoICRlbWJlZGRlZF90YWJfY291bnQgPiAxICkKICAgICAgICAgID8gInF1b3RlcyBvciBwYXR0ZXJucyIKICAgICAgICAgIDogInF1b3RlIG9yIHBhdHRlcm4iOwogICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoIiRlbWJlZGRlZF90YWJfY291bnQgJHdoYXQgaGFkIGVtYmVkZGVkIHRhYnM6XG4iKTsKICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KAoiVGhpcyBtZWFucyB0aGUgZGlzcGxheSBvZiB0aGlzIHNjcmlwdCBjb3VsZCB2YXJ5IHdpdGggZGV2aWNlIG9yIHNvZnR3YXJlXG4iCiAgICAgICAgKTsKICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCIgICRmaXJzdCBhdCBpbnB1dCBsaW5lICRmaXJzdF9lbWJlZGRlZF90YWJfYXRcbiIpOwoKICAgICAgICBpZiAoICRlbWJlZGRlZF90YWJfY291bnQgPiAxICkgewogICAgICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KAogICAgICAgICAgICAgICAgIiAgIExhc3QgYXQgaW5wdXQgbGluZSAkbGFzdF9lbWJlZGRlZF90YWJfYXRcbiIpOwogICAgICAgIH0KICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCJcbiIpOwogICAgfQoKICAgIGlmICgkZmlyc3RfdGFiYmluZ19kaXNhZ3JlZW1lbnQpIHsKICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KAoiRmlyc3QgaW5kZW50YXRpb24gZGlzYWdyZWVtZW50IHNlZW4gYXQgaW5wdXQgbGluZSAkZmlyc3RfdGFiYmluZ19kaXNhZ3JlZW1lbnRcbiIKICAgICAgICApOwogICAgfQoKICAgIGlmICgkaW5fdGFiYmluZ19kaXNhZ3JlZW1lbnQpIHsKICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KAoiRW5kaW5nIHdpdGggaW5kZW50YXRpb24gZGlzYWdyZWVtZW50IHdoaWNoIHN0YXJ0ZWQgYXQgaW5wdXQgbGluZSAkaW5fdGFiYmluZ19kaXNhZ3JlZW1lbnRcbiIKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgIGlmICgkbGFzdF90YWJiaW5nX2Rpc2FncmVlbWVudCkgewoKICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgKIkxhc3QgaW5kZW50YXRpb24gZGlzYWdyZWVtZW50IHNlZW4gYXQgaW5wdXQgbGluZSAkbGFzdF90YWJiaW5nX2Rpc2FncmVlbWVudFxuIgogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiTm8gaW5kZW50YXRpb24gZGlzYWdyZWVtZW50IHNlZW5cbiIpOwogICAgICAgIH0KICAgIH0KICAgIGlmICgkZmlyc3RfdGFiYmluZ19kaXNhZ3JlZW1lbnQpIHsKICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KAoiTm90ZTogSW5kZW50YXRpb24gZGlzYWdyZWVtZW50IGRldGVjdGlvbiBpcyBub3QgYWNjdXJhdGUgZm9yIG91dGRlbnRpbmcgYW5kIC1scC5cbiIKICAgICAgICApOwogICAgfQogICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiXG4iKTsKCiAgICAkdmVydGljYWxfYWxpZ25lcl9vYmplY3QtPnJlcG9ydF9hbnl0aGluZ191bnVzdWFsKCk7CgogICAgJGZpbGVfd3JpdGVyX29iamVjdC0+cmVwb3J0X2xpbmVfbGVuZ3RoX2Vycm9ycygpOwoKICAgIHJldHVybjsKfQoKc3ViIGNoZWNrX29wdGlvbnMgewoKICAgICMgVGhpcyByb3V0aW5lIGlzIGNhbGxlZCB0byBjaGVjayB0aGUgT3B0cyBoYXNoIGFmdGVyIGl0IGlzIGRlZmluZWQKICAgICRyT3B0cyA9IHNoaWZ0OwoKICAgIGluaXRpYWxpemVfd2hpdGVzcGFjZV9oYXNoZXMoKTsKICAgIGluaXRpYWxpemVfYm9uZF9zdHJlbmd0aF9oYXNoZXMoKTsKCiAgICBtYWtlX3N0YXRpY19ibG9ja19jb21tZW50X3BhdHRlcm4oKTsKICAgIG1ha2Vfc3RhdGljX3NpZGVfY29tbWVudF9wYXR0ZXJuKCk7CiAgICBtYWtlX2Nsb3Npbmdfc2lkZV9jb21tZW50X3ByZWZpeCgpOwogICAgbWFrZV9jbG9zaW5nX3NpZGVfY29tbWVudF9saXN0X3BhdHRlcm4oKTsKICAgICRmb3JtYXRfc2tpcHBpbmdfcGF0dGVybl9iZWdpbiA9CiAgICAgIG1ha2VfZm9ybWF0X3NraXBwaW5nX3BhdHRlcm4oICdmb3JtYXQtc2tpcHBpbmctYmVnaW4nLCAnIzw8PCcgKTsKICAgICRmb3JtYXRfc2tpcHBpbmdfcGF0dGVybl9lbmQgPQogICAgICBtYWtlX2Zvcm1hdF9za2lwcGluZ19wYXR0ZXJuKCAnZm9ybWF0LXNraXBwaW5nLWVuZCcsICcjPj4+JyApOwoKICAgICMgSWYgY2xvc2luZyBzaWRlIGNvbW1lbnRzIEFSRSBzZWxlY3RlZCwgdGhlbiB3ZSBjYW4gc2FmZWx5CiAgICAjIGRlbGV0ZSBvbGQgY2xvc2luZyBzaWRlIGNvbW1lbnRzIHVubGVzcyBjbG9zaW5nIHNpZGUgY29tbWVudAogICAgIyB3YXJuaW5ncyBhcmUgcmVxdWVzdGVkLiAgVGhpcyBpcyBhIGdvb2QgaWRlYSBiZWNhdXNlIGl0IHdpbGwKICAgICMgZWxpbWluYXRlIGFueSBvbGQgY3NjJ3Mgd2hpY2ggZmFsbCBiZWxvdyB0aGUgbGluZSBjb3VudCB0aHJlc2hvbGQuCiAgICAjIFdlIGNhbm5vdCBkbyB0aGlzIGlmIHdhcm5pbmdzIGFyZSB0dXJuZWQgb24sIHRob3VnaCwgYmVjYXVzZSB3ZQogICAgIyBtaWdodCBkZWxldGUgc29tZSB0ZXh0IHdoaWNoIGhhcyBiZWVuIGFkZGVkLiAgU28gdGhhdCBtdXN0CiAgICAjIGJlIGhhbmRsZWQgd2hlbiBjb21tZW50cyBhcmUgY3JlYXRlZC4KICAgIGlmICggJHJPcHRzLT57J2Nsb3Npbmctc2lkZS1jb21tZW50cyd9ICkgewogICAgICAgIGlmICggISRyT3B0cy0+eydjbG9zaW5nLXNpZGUtY29tbWVudC13YXJuaW5ncyd9ICkgewogICAgICAgICAgICAkck9wdHMtPnsnZGVsZXRlLWNsb3Npbmctc2lkZS1jb21tZW50cyd9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgIyBJZiBjbG9zaW5nIHNpZGUgY29tbWVudHMgQVJFIE5PVCBzZWxlY3RlZCwgYnV0IHdhcm5pbmdzIEFSRQogICAgIyBzZWxlY3RlZCBhbmQgd2UgQVJFIERFTEVUSU5HIGNzYydzLCB0aGVuIHdlIHdpbGwgcHJldGVuZCB0byBiZQogICAgIyBhZGRpbmcgd2l0aCBhIGh1Z2UgaW50ZXJ2YWwuICBUaGlzIHdpbGwgZm9yY2UgdGhlIGNvbW1lbnRzIHRvIGJlCiAgICAjIGdlbmVyYXRlZCBmb3IgY29tcGFyaXNvbiB3aXRoIHRoZSBvbGQgY29tbWVudHMsIGJ1dCBub3QgYWRkZWQuCiAgICBlbHNpZiAoICRyT3B0cy0+eydjbG9zaW5nLXNpZGUtY29tbWVudC13YXJuaW5ncyd9ICkgewogICAgICAgIGlmICggJHJPcHRzLT57J2RlbGV0ZS1jbG9zaW5nLXNpZGUtY29tbWVudHMnfSApIHsKICAgICAgICAgICAgJHJPcHRzLT57J2RlbGV0ZS1jbG9zaW5nLXNpZGUtY29tbWVudHMnfSAgPSAwOwogICAgICAgICAgICAkck9wdHMtPnsnY2xvc2luZy1zaWRlLWNvbW1lbnRzJ30gICAgICAgICA9IDE7CiAgICAgICAgICAgICRyT3B0cy0+eydjbG9zaW5nLXNpZGUtY29tbWVudC1pbnRlcnZhbCd9ID0gMTAwMDAwMDAwOwogICAgICAgIH0KICAgIH0KCiAgICBtYWtlX3N1Yl9tYXRjaGluZ19wYXR0ZXJuKCk7CiAgICBtYWtlX2JsaV9wYXR0ZXJuKCk7CiAgICBtYWtlX2Jsb2NrX2JyYWNlX3ZlcnRpY2FsX3RpZ2h0bmVzc19wYXR0ZXJuKCk7CiAgICBtYWtlX2JsYW5rX2xpbmVfcGF0dGVybigpOwogICAgbWFrZV9rZXl3b3JkX2dyb3VwX2xpc3RfcGF0dGVybigpOwoKICAgICMgTWFrZSBpbml0aWFsIGxpc3Qgb2YgZGVzaXJlZCBvbmUgbGluZSBibG9jayB0eXBlcwogICAgIyBUaGV5IHdpbGwgYmUgbW9kaWZpZWQgYnkgJ3ByZXBhcmVfY3VkZGxlZF9ibG9ja190eXBlcycKICAgICV3YW50X29uZV9saW5lX2Jsb2NrID0gJWlzX3NvcnRfbWFwX2dyZXBfZXZhbDsKCiAgICBwcmVwYXJlX2N1ZGRsZWRfYmxvY2tfdHlwZXMoKTsKICAgIGlmICggJHJPcHRzLT57J2R1bXAtY3VkZGxlZC1ibG9jay1saXN0J30gKSB7CiAgICAgICAgZHVtcF9jdWRkbGVkX2Jsb2NrX2xpc3QoKlNURE9VVCk7CiAgICAgICAgRXhpdCgwKTsKICAgIH0KCiAgICBpZiAoICRyT3B0cy0+eydsaW5lLXVwLXBhcmVudGhlc2VzJ30gKSB7CgogICAgICAgIGlmICggICAkck9wdHMtPnsnaW5kZW50LW9ubHknfQogICAgICAgICAgICB8fCAhJHJPcHRzLT57J2FkZC1uZXdsaW5lcyd9CiAgICAgICAgICAgIHx8ICEkck9wdHMtPnsnZGVsZXRlLW9sZC1uZXdsaW5lcyd9ICkKICAgICAgICB7CiAgICAgICAgICAgIFdhcm4oPDxFT00pOwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpDb25mbGljdDogLWxwICBjb25mbGljdHMgd2l0aCAtaW8sIC1mbmwsIC1uYW5sLCBvciAtbmRubDsgaWdub3JpbmcgLWxwCiAgICAKVGhlIC1scCBpbmRlbnRhdGlvbiBsb2dpYyByZXF1aXJlcyB0aGF0IHBlcmx0aWR5IGJlIGFibGUgdG8gY29vcmRpbmF0ZQphcmJpdHJhcmlseSBsYXJnZSBudW1iZXJzIG9mIGxpbmUgYnJlYWtwb2ludHMuICBUaGlzIGlzbid0IHBvc3NpYmxlCndpdGggdGhlc2UgZmxhZ3MuIFNvbWV0aW1lcyBhbiBhY2NlcHRhYmxlIHdvcmthcm91bmQgaXMgdG8gdXNlIC13b2NiPTMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRU9NCiAgICAgICAgICAgICRyT3B0cy0+eydsaW5lLXVwLXBhcmVudGhlc2VzJ30gPSAwOwogICAgICAgIH0KICAgIH0KCiAgICAjIEF0IHByZXNlbnQsIHRhYnMgYXJlIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIGxpbmUtdXAtcGFyZW50aGVzZXMgc3R5bGUKICAgICMgKGl0IHdvdWxkIGJlIHBvc3NpYmxlIHRvIGVudGFiIHRoZSB0b3RhbCBsZWFkaW5nIHdoaXRlc3BhY2UKICAgICMganVzdCBwcmlvciB0byB3cml0aW5nIHRoZSBsaW5lLCBpZiBkZXNpcmVkKS4KICAgIGlmICggJHJPcHRzLT57J2xpbmUtdXAtcGFyZW50aGVzZXMnfSAmJiAkck9wdHMtPnsndGFicyd9ICkgewogICAgICAgIFdhcm4oPDxFT00pOwpDb25mbGljdDogLXQgKHRhYnMpIGNhbm5vdCBiZSB1c2VkIHdpdGggdGhlIC1scCAgb3B0aW9uOyBpZ25vcmluZyAtdDsgc2VlIC1ldC4KRU9NCiAgICAgICAgJHJPcHRzLT57J3RhYnMnfSA9IDA7CiAgICB9CgogICAgIyBMaWtld2lzZSwgdGFicyBhcmUgbm90IGNvbXBhdGlibGUgd2l0aCBvdXRkZW50aW5nLi4KICAgIGlmICggJHJPcHRzLT57J291dGRlbnQta2V5d29yZHMnfSAmJiAkck9wdHMtPnsndGFicyd9ICkgewogICAgICAgIFdhcm4oPDxFT00pOwpDb25mbGljdDogLXQgKHRhYnMpIGNhbm5vdCBiZSB1c2VkIHdpdGggdGhlIC1va3cgb3B0aW9uczsgaWdub3JpbmcgLXQ7IHNlZSAtZXQuCkVPTQogICAgICAgICRyT3B0cy0+eyd0YWJzJ30gPSAwOwogICAgfQoKICAgIGlmICggJHJPcHRzLT57J291dGRlbnQtbGFiZWxzJ30gJiYgJHJPcHRzLT57J3RhYnMnfSApIHsKICAgICAgICBXYXJuKDw8RU9NKTsKQ29uZmxpY3Q6IC10ICh0YWJzKSBjYW5ub3QgYmUgdXNlZCB3aXRoIHRoZSAtb2xhICBvcHRpb247IGlnbm9yaW5nIC10OyBzZWUgLWV0LgpFT00KICAgICAgICAkck9wdHMtPnsndGFicyd9ID0gMDsKICAgIH0KCiAgICBpZiAoICEkck9wdHMtPnsnc3BhY2UtZm9yLXNlbWljb2xvbid9ICkgewogICAgICAgICR3YW50X2xlZnRfc3BhY2V7J2YnfSA9IC0xOwogICAgfQoKICAgIGlmICggJHJPcHRzLT57J3NwYWNlLXRlcm1pbmFsLXNlbWljb2xvbid9ICkgewogICAgICAgICR3YW50X2xlZnRfc3BhY2V7JzsnfSA9IDE7CiAgICB9CgogICAgIyBpbXBsZW1lbnQgb3V0ZGVudGluZyBwcmVmZXJlbmNlcyBmb3Iga2V5d29yZHMKICAgICVvdXRkZW50X2tleXdvcmQgPSAoKTsKICAgIG15IEBva3cgPSBzcGxpdF93b3JkcyggJHJPcHRzLT57J291dGRlbnQta2V5d29yZC1va2wnfSApOwogICAgdW5sZXNzIChAb2t3KSB7CiAgICAgICAgQG9rdyA9IHF3KG5leHQgbGFzdCByZWRvIGdvdG8gcmV0dXJuKTsgICAgIyBkZWZhdWx0cwogICAgfQoKICAgICMgRlVUVVJFOiBpZiBub3QgYSBrZXl3b3JkLCBhc3N1bWUgdGhhdCBpdCBpcyBhbiBpZGVudGlmaWVyCiAgICBmb3JlYWNoIChAb2t3KSB7CiAgICAgICAgaWYgKCAkUGVybDo6VGlkeTo6VG9rZW5pemVyOjppc19rZXl3b3JkeyRffSApIHsKICAgICAgICAgICAgJG91dGRlbnRfa2V5d29yZHskX30gPSAxOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgV2FybigiaWdub3JpbmcgJyRfJyBpbiAtb2t3bCBsaXN0OyBub3QgYSBwZXJsIGtleXdvcmQiKTsKICAgICAgICB9CiAgICB9CgogICAgIyBpbXBsZW1lbnQgdXNlciB3aGl0ZXNwYWNlIHByZWZlcmVuY2VzCiAgICBpZiAoIG15IEBxID0gc3BsaXRfd29yZHMoICRyT3B0cy0+eyd3YW50LWxlZnQtc3BhY2UnfSApICkgewogICAgICAgIEB3YW50X2xlZnRfc3BhY2V7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKICAgIH0KCiAgICBpZiAoIG15IEBxID0gc3BsaXRfd29yZHMoICRyT3B0cy0+eyd3YW50LXJpZ2h0LXNwYWNlJ30gKSApIHsKICAgICAgICBAd2FudF9yaWdodF9zcGFjZXtAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwogICAgfQoKICAgIGlmICggbXkgQHEgPSBzcGxpdF93b3JkcyggJHJPcHRzLT57J25vd2FudC1sZWZ0LXNwYWNlJ30gKSApIHsKICAgICAgICBAd2FudF9sZWZ0X3NwYWNle0BxfSA9ICgtMSkgeCBzY2FsYXIoQHEpOwogICAgfQoKICAgIGlmICggbXkgQHEgPSBzcGxpdF93b3JkcyggJHJPcHRzLT57J25vd2FudC1yaWdodC1zcGFjZSd9ICkgKSB7CiAgICAgICAgQHdhbnRfcmlnaHRfc3BhY2V7QHF9ID0gKC0xKSB4IHNjYWxhcihAcSk7CiAgICB9CiAgICBpZiAoICRyT3B0cy0+eydkdW1wLXdhbnQtbGVmdC1zcGFjZSd9ICkgewogICAgICAgIGR1bXBfd2FudF9sZWZ0X3NwYWNlKCpTVERPVVQpOwogICAgICAgIEV4aXQoMCk7CiAgICB9CgogICAgaWYgKCAkck9wdHMtPnsnZHVtcC13YW50LXJpZ2h0LXNwYWNlJ30gKSB7CiAgICAgICAgZHVtcF93YW50X3JpZ2h0X3NwYWNlKCpTVERPVVQpOwogICAgICAgIEV4aXQoMCk7CiAgICB9CgogICAgIyBkZWZhdWx0IGtleXdvcmRzIGZvciB3aGljaCBzcGFjZSBpcyBpbnRyb2R1Y2VkIGJlZm9yZSBhbiBvcGVuaW5nIHBhcmVuCiAgICAjIChhdCBwcmVzZW50LCBpbmNsdWRpbmcgdGhlbSBtZXNzZXMgdXAgdmVydGljYWwgYWxpZ25tZW50KQogICAgbXkgQHNhayA9IHF3KG15IGxvY2FsIG91ciBhbmQgb3IgZXJyIGVxIG5lIGlmIGVsc2UgZWxzaWYgdW50aWwKICAgICAgdW5sZXNzIHdoaWxlIGZvciBmb3JlYWNoIHJldHVybiBzd2l0Y2ggY2FzZSBnaXZlbiB3aGVuIGNhdGNoKTsKICAgIEBzcGFjZV9hZnRlcl9rZXl3b3Jke0BzYWt9ID0gKDEpIHggc2NhbGFyKEBzYWspOwoKICAgICMgZmlyc3QgcmVtb3ZlIGFueSBvciBhbGwgb2YgdGhlc2UgaWYgZGVzaXJlZAogICAgaWYgKCBteSBAcSA9IHNwbGl0X3dvcmRzKCAkck9wdHMtPnsnbm9zcGFjZS1hZnRlci1rZXl3b3JkJ30gKSApIHsKCiAgICAgICAgIyAtbnNhaz0nKicgc2VsZWN0cyBhbGwgdGhlIGFib3ZlIGtleXdvcmRzCiAgICAgICAgaWYgKCBAcSA9PSAxICYmICRxWzBdIGVxICcqJyApIHsgQHEgPSBrZXlzKCVzcGFjZV9hZnRlcl9rZXl3b3JkKSB9CiAgICAgICAgQHNwYWNlX2FmdGVyX2tleXdvcmR7QHF9ID0gKDApIHggc2NhbGFyKEBxKTsKICAgIH0KCiAgICAjIHRoZW4gYWxsb3cgdXNlciB0byBhZGQgdG8gdGhlc2UgZGVmYXVsdHMKICAgIGlmICggbXkgQHEgPSBzcGxpdF93b3JkcyggJHJPcHRzLT57J3NwYWNlLWFmdGVyLWtleXdvcmQnfSApICkgewogICAgICAgIEBzcGFjZV9hZnRlcl9rZXl3b3Jke0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CiAgICB9CgogICAgIyBpbXBsZW1lbnQgdXNlciBicmVhayBwcmVmZXJlbmNlcwogICAgbXkgQGFsbF9vcGVyYXRvcnMgPSBxdyglICsgLSAqIC8geCAhPSA9PSA+PSA8PSA9fiAhfiA8ID4gfCAmCiAgICAgID0gKio9ICs9ICo9ICY9IDw8PSAmJj0gLT0gLz0gfD0gPj49IHx8PSAvLz0gLj0gJT0gXj0geD0KICAgICAgLiA6ID8gJiYgfHwgYW5kIG9yIGVyciB4b3IKICAgICk7CgogICAgbXkgJGJyZWFrX2FmdGVyID0gc3ViIHsKICAgICAgICBteSBAdG9rcyA9IEBfOwogICAgICAgIGZvcmVhY2ggbXkgJHRvayAoQHRva3MpIHsKICAgICAgICAgICAgaWYgKCAkdG9rIGVxICc/JyApIHsgJHRvayA9ICc6JyB9ICAgICMgcGF0Y2ggdG8gY29vcmRpbmF0ZSA/LzoKICAgICAgICAgICAgbXkgJGxicyA9ICRsZWZ0X2JvbmRfc3RyZW5ndGh7JHRva307CiAgICAgICAgICAgIG15ICRyYnMgPSAkcmlnaHRfYm9uZF9zdHJlbmd0aHskdG9rfTsKICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCRsYnMpICYmIGRlZmluZWQoJHJicykgJiYgJGxicyA8ICRyYnMgKSB7CiAgICAgICAgICAgICAgICAoICRyaWdodF9ib25kX3N0cmVuZ3RoeyR0b2t9LCAkbGVmdF9ib25kX3N0cmVuZ3RoeyR0b2t9ICkgPQogICAgICAgICAgICAgICAgICAoICRsYnMsICRyYnMgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07CgogICAgbXkgJGJyZWFrX2JlZm9yZSA9IHN1YiB7CiAgICAgICAgbXkgQHRva3MgPSBAXzsKICAgICAgICBmb3JlYWNoIG15ICR0b2sgKEB0b2tzKSB7CiAgICAgICAgICAgIG15ICRsYnMgPSAkbGVmdF9ib25kX3N0cmVuZ3RoeyR0b2t9OwogICAgICAgICAgICBteSAkcmJzID0gJHJpZ2h0X2JvbmRfc3RyZW5ndGh7JHRva307CiAgICAgICAgICAgIGlmICggZGVmaW5lZCgkbGJzKSAmJiBkZWZpbmVkKCRyYnMpICYmICRyYnMgPCAkbGJzICkgewogICAgICAgICAgICAgICAgKCAkcmlnaHRfYm9uZF9zdHJlbmd0aHskdG9rfSwgJGxlZnRfYm9uZF9zdHJlbmd0aHskdG9rfSApID0KICAgICAgICAgICAgICAgICAgKCAkbGJzLCAkcmJzICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwoKICAgICRicmVha19hZnRlci0+KEBhbGxfb3BlcmF0b3JzKSBpZiAoICRyT3B0cy0+eydicmVhay1hZnRlci1hbGwtb3BlcmF0b3JzJ30gKTsKICAgICRicmVha19iZWZvcmUtPihAYWxsX29wZXJhdG9ycykKICAgICAgaWYgKCAkck9wdHMtPnsnYnJlYWstYmVmb3JlLWFsbC1vcGVyYXRvcnMnfSApOwoKICAgICRicmVha19hZnRlci0+KCBzcGxpdF93b3JkcyggJHJPcHRzLT57J3dhbnQtYnJlYWstYWZ0ZXInfSApICk7CiAgICAkYnJlYWtfYmVmb3JlLT4oIHNwbGl0X3dvcmRzKCAkck9wdHMtPnsnd2FudC1icmVhay1iZWZvcmUnfSApICk7CgogICAgIyBtYWtlIG5vdGUgaWYgYnJlYWtzIGFyZSBiZWZvcmUgY2VydGFpbiBrZXkgdHlwZXMKICAgICV3YW50X2JyZWFrX2JlZm9yZSA9ICgpOwogICAgZm9yZWFjaCBteSAkdG9rICggQGFsbF9vcGVyYXRvcnMsICcsJyApIHsKICAgICAgICAkd2FudF9icmVha19iZWZvcmV7JHRva30gPQogICAgICAgICAgJGxlZnRfYm9uZF9zdHJlbmd0aHskdG9rfSA8ICRyaWdodF9ib25kX3N0cmVuZ3RoeyR0b2t9OwogICAgfQoKICAgICMgQ29vcmRpbmF0ZSA/LzogYnJlYWtzLCB3aGljaCBtdXN0IGJlIHNpbWlsYXIKICAgIGlmICggISR3YW50X2JyZWFrX2JlZm9yZXsnOid9ICkgewogICAgICAgICR3YW50X2JyZWFrX2JlZm9yZXsnPyd9ICAgPSAkd2FudF9icmVha19iZWZvcmV7JzonfTsKICAgICAgICAkcmlnaHRfYm9uZF9zdHJlbmd0aHsnPyd9ID0gJHJpZ2h0X2JvbmRfc3RyZW5ndGh7JzonfSArIDAuMDE7CiAgICAgICAgJGxlZnRfYm9uZF9zdHJlbmd0aHsnPyd9ICA9IE5PX0JSRUFLOwogICAgfQoKICAgICMgRGVmaW5lIGhlcmUgdG9rZW5zIHdoaWNoIG1heSBmb2xsb3cgdGhlIGNsb3NpbmcgYnJhY2Ugb2YgYSBkbyBzdGF0ZW1lbnQKICAgICMgb24gdGhlIHNhbWUgbGluZSwgYXMgaW46CiAgICAjICAgfSB3aGlsZSAoICRzb21ldGhpbmcpOwogICAgbXkgQGRvZiA9IHF3KHVudGlsIHdoaWxlIHVubGVzcyBpZiA7IDogKTsKICAgIHB1c2ggQGRvZiwgJywnOwogICAgQGlzX2RvX2ZvbGxvd2Vye0Bkb2Z9ID0gKDEpIHggc2NhbGFyKEBkb2YpOwoKICAgICMgV2hhdCB0b2tlbnMgbWF5IGZvbGxvdyB0aGUgY2xvc2luZyBicmFjZSBvZiBhbiBpZiBvciBlbHNpZiBibG9jaz8KICAgICMgTm90IHVzZWQuIFByZXZpb3VzbHkgdXNlZCBmb3IgY3VkZGxlZCBlbHNlLCBidXQgbm8gbG9uZ2VyIG5lZWRlZC4KICAgICVpc19pZl9icmFjZV9mb2xsb3dlciA9ICgpOwoKICAgICMgbm90aGluZyBjYW4gZm9sbG93IHRoZSBjbG9zaW5nIGN1cmx5IG9mIGFuIGVsc2UgeyB9IGJsb2NrOgogICAgJWlzX2Vsc2VfYnJhY2VfZm9sbG93ZXIgPSAoKTsKCiAgICAjIHdoYXQgY2FuIGZvbGxvdyBhIG11bHRpLWxpbmUgYW5vbnltb3VzIHN1YiBkZWZpbml0aW9uIGNsb3NpbmcgY3VybHk6CiAgICBteSBAYXNmID0gcXcjIDsgOiA9PiBvciBhbmQgICYmIHx8IH5+ICF+fiApICM7CiAgICBwdXNoIEBhc2YsICcsJzsKICAgIEBpc19hbm9uX3N1Yl9icmFjZV9mb2xsb3dlcntAYXNmfSA9ICgxKSB4IHNjYWxhcihAYXNmKTsKCiAgICAjIHdoYXQgY2FuIGZvbGxvdyBhIG9uZS1saW5lIGFub255bW91cyBzdWIgY2xvc2luZyBjdXJseToKICAgICMgb25lLWxpbmUgYW5vbnltb3VzIHN1YnMgYWxzbyBoYXZlICddJyBoZXJlLi4uCiAgICAjIHNlZSB0azMudCBhbmQgUFAucG0KICAgIG15IEBhc2YxID0gcXcjICA7IDogPT4gb3IgYW5kICAmJiB8fCApIF0gfn4gIX5+ICM7CiAgICBwdXNoIEBhc2YxLCAnLCc7CiAgICBAaXNfYW5vbl9zdWJfMV9icmFjZV9mb2xsb3dlcntAYXNmMX0gPSAoMSkgeCBzY2FsYXIoQGFzZjEpOwoKICAgICMgV2hhdCBjYW4gZm9sbG93IGEgY2xvc2luZyBjdXJseSBvZiBhIGJsb2NrCiAgICAjIHdoaWNoIGlzIG5vdCBhbiBpZi9lbHNpZi9lbHNlL2RvL3NvcnQvbWFwL2dyZXAvZXZhbC9zdWIKICAgICMgVGVzdGZpbGVzOiAnVG9vbGJhci5wbScsICdNZW51YmFyLnBtJywgYmxlc3MudCwgJzNydWxlcy5wbCcKICAgIG15IEBvYmYgPSBxdyMgIDsgOiA9PiBvciBhbmQgICYmIHx8ICkgIzsKICAgIHB1c2ggQG9iZiwgJywnOwogICAgQGlzX290aGVyX2JyYWNlX2ZvbGxvd2Vye0BvYmZ9ID0gKDEpIHggc2NhbGFyKEBvYmYpOwoKICAgICRyaWdodF9ib25kX3N0cmVuZ3Roeyd7J30gPSBXRUFLOwogICAgJGxlZnRfYm9uZF9zdHJlbmd0aHsneyd9ICA9IFZFUllfU1RST05HOwoKICAgICMgbWFrZSAtbD0wICBlcXVhbCB0byAtbD1pbmZpbml0ZQogICAgaWYgKCAhJHJPcHRzLT57J21heGltdW0tbGluZS1sZW5ndGgnfSApIHsKICAgICAgICAkck9wdHMtPnsnbWF4aW11bS1saW5lLWxlbmd0aCd9ID0gMTAwMDAwMDsKICAgIH0KCiAgICAjIG1ha2UgLWxibD0wICBlcXVhbCB0byAtbGJsPWluZmluaXRlCiAgICBpZiAoICEkck9wdHMtPnsnbG9uZy1ibG9jay1saW5lLWNvdW50J30gKSB7CiAgICAgICAgJHJPcHRzLT57J2xvbmctYmxvY2stbGluZS1jb3VudCd9ID0gMTAwMDAwMDsKICAgIH0KCiAgICBteSAkZW5jID0gJHJPcHRzLT57J2NoYXJhY3Rlci1lbmNvZGluZyd9OwogICAgaWYgKCAkZW5jICYmICRlbmMgIX4gL14obm9uZXx1dGY4KSQvaSApIHsKICAgICAgICBEaWUoPDxFT00pOwpVbnJlY29nbml6ZWQgY2hhcmFjdGVyLWVuY29kaW5nICckZW5jJzsgZXhwZWN0aW5nIG9uZSBvZjogKG5vbmUsIHV0ZjgpCkVPTQogICAgfQoKICAgIG15ICRvbGUgPSAkck9wdHMtPnsnb3V0cHV0LWxpbmUtZW5kaW5nJ307CiAgICBpZiAoJG9sZSkgewogICAgICAgIG15ICVlbmRpbmdzID0gKAogICAgICAgICAgICBkb3MgID0+ICJcMDE1XDAxMiIsCiAgICAgICAgICAgIHdpbiAgPT4gIlwwMTVcMDEyIiwKICAgICAgICAgICAgbWFjICA9PiAiXDAxNSIsCiAgICAgICAgICAgIHVuaXggPT4gIlwwMTIiLAogICAgICAgICk7CgogICAgICAgICMgUGF0Y2ggZm9yIFJUICM5OTUxNCwgYSBtZW1vaXphdGlvbiBpc3N1ZS4KICAgICAgICAjIE5vcm1hbGx5LCB0aGUgdXNlciBlbnRlcnMgb25lIG9mICdkb3MnLCAnd2luJywgZXRjLCBhbmQgd2UgY2hhbmdlIHRoZQogICAgICAgICMgdmFsdWUgaW4gdGhlIG9wdGlvbnMgcGFyYW1ldGVyIHRvIGJlIHRoZSBjb3JyZXNwb25kaW5nIGxpbmUgZW5kaW5nCiAgICAgICAgIyBjaGFyYWN0ZXIuICBCdXQsIGlmIHdlIGFyZSB1c2luZyBtZW1vaXphdGlvbiwgb24gbGF0ZXIgcGFzc2VzIHRocm91Z2gKICAgICAgICAjIGhlcmUgdGhlIG9wdGlvbiBwYXJhbWV0ZXIgd2lsbCBhbHJlYWR5IGhhdmUgdGhlIGRlc2lyZWQgZW5kaW5nCiAgICAgICAgIyBjaGFyYWN0ZXIgcmF0aGVyIHRoYW4gdGhlIGtleXdvcmQgJ2RvcycsICd3aW4nLCBldGMuICBTbwogICAgICAgICMgd2UgbXVzdCBjaGVjayB0byBzZWUgaWYgY29udmVyc2lvbiBoYXMgYWxyZWFkeSBiZWVuIGRvbmUgYW5kLCBpZiBzbywKICAgICAgICAjIGJ5cGFzcyB0aGUgY29udmVyc2lvbiBzdGVwLgogICAgICAgIG15ICVlbmRpbmdzX2ludmVydGVkID0gKAogICAgICAgICAgICAiXDAxNVwwMTIiID0+ICdkb3MnLAogICAgICAgICAgICAiXDAxNVwwMTIiID0+ICd3aW4nLAogICAgICAgICAgICAiXDAxNSIgICAgID0+ICdtYWMnLAogICAgICAgICAgICAiXDAxMiIgICAgID0+ICd1bml4JywKICAgICAgICApOwoKICAgICAgICBpZiAoIGRlZmluZWQoICRlbmRpbmdzX2ludmVydGVkeyRvbGV9ICkgKSB7CgogICAgICAgICAgICAjIHdlIGFscmVhZHkgaGF2ZSB2YWxpZCBsaW5lIGVuZGluZywgbm90aGluZyBtb3JlIHRvIGRvCiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkb2xlID0gbGMgJG9sZTsKICAgICAgICAgICAgdW5sZXNzICggJHJPcHRzLT57J291dHB1dC1saW5lLWVuZGluZyd9ID0gJGVuZGluZ3N7JG9sZX0gKSB7CiAgICAgICAgICAgICAgICBteSAkc3RyID0gam9pbiAiICIsIGtleXMgJWVuZGluZ3M7CiAgICAgICAgICAgICAgICBEaWUoPDxFT00pOwpVbnJlY29nbml6ZWQgbGluZSBlbmRpbmcgJyRvbGUnOyBleHBlY3Rpbmcgb25lIG9mOiAkc3RyCkVPTQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJHJPcHRzLT57J3ByZXNlcnZlLWxpbmUtZW5kaW5ncyd9ICkgewogICAgICAgICAgICAgICAgV2FybigiSWdub3JpbmcgLXBsZTsgY29uZmxpY3RzIHdpdGggLW9sZVxuIik7CiAgICAgICAgICAgICAgICAkck9wdHMtPnsncHJlc2VydmUtbGluZS1lbmRpbmdzJ30gPSB1bmRlZjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGhhc2hlcyB1c2VkIHRvIHNpbXBsaWZ5IHNldHRpbmcgd2hpdGVzcGFjZQogICAgJXRpZ2h0bmVzcyA9ICgKICAgICAgICAneycgPT4gJHJPcHRzLT57J2JyYWNlLXRpZ2h0bmVzcyd9LAogICAgICAgICd9JyA9PiAkck9wdHMtPnsnYnJhY2UtdGlnaHRuZXNzJ30sCiAgICAgICAgJygnID0+ICRyT3B0cy0+eydwYXJlbi10aWdodG5lc3MnfSwKICAgICAgICAnKScgPT4gJHJPcHRzLT57J3BhcmVuLXRpZ2h0bmVzcyd9LAogICAgICAgICdbJyA9PiAkck9wdHMtPnsnc3F1YXJlLWJyYWNrZXQtdGlnaHRuZXNzJ30sCiAgICAgICAgJ10nID0+ICRyT3B0cy0+eydzcXVhcmUtYnJhY2tldC10aWdodG5lc3MnfSwKICAgICk7CiAgICAlbWF0Y2hpbmdfdG9rZW4gPSAoCiAgICAgICAgJ3snID0+ICd9JywKICAgICAgICAnKCcgPT4gJyknLAogICAgICAgICdbJyA9PiAnXScsCiAgICAgICAgJz8nID0+ICc6JywKICAgICk7CgogICAgaWYgKCAkck9wdHMtPnsnaWdub3JlLW9sZC1icmVha3BvaW50cyd9ICkgewogICAgICAgIGlmICggJHJPcHRzLT57J2JyZWFrLWF0LW9sZC1tZXRob2QtYnJlYWtwb2ludHMnfSApIHsKICAgICAgICAgICAgV2FybigiQ29uZmxpY3RpbmcgcGFyYW1ldGVyczogLWlvYiBhbmQgLWJvbTsgLWJvbSB3aWxsIGJlIGlnbm9yZWRcbiIKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkck9wdHMtPnsnYnJlYWstYXQtb2xkLWNvbW1hLWJyZWFrcG9pbnRzJ30gKSB7CiAgICAgICAgICAgIFdhcm4oIkNvbmZsaWN0aW5nIHBhcmFtZXRlcnM6IC1pb2IgYW5kIC1ib2M7IC1ib2Mgd2lsbCBiZSBpZ25vcmVkXG4iCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIE5vdGU6IHRoZXJlIGFyZSBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgdGhhdCBjYW4gYmUgbWFkZSBpbmFjdGl2ZSBieQogICAgICAgICMgLWlvYiwgYnV0IHRoZXkgYXJlIG9uIGJ5IGRlZmF1bHQgc28gd2Ugd291bGQgZ2VuZXJhdGUgZXhjZXNzaXZlCiAgICAgICAgIyB3YXJuaW5ncyBpZiB3ZSBub3RlZCB0aGVtLiBUaGV5IGFyZToKICAgICAgICAjICRyT3B0cy0+eydicmVhay1hdC1vbGQta2V5d29yZC1icmVha3BvaW50cyd9CiAgICAgICAgIyAkck9wdHMtPnsnYnJlYWstYXQtb2xkLWxvZ2ljYWwtYnJlYWtwb2ludHMnfQogICAgICAgICMgJHJPcHRzLT57J2JyZWFrLWF0LW9sZC10ZXJuYXJ5LWJyZWFrcG9pbnRzJ30KICAgICAgICAjICRyT3B0cy0+eydicmVhay1hdC1vbGQtYXR0cmlidXRlLWJyZWFrcG9pbnRzJ30KICAgIH0KCiAgICAjIGZyZXF1ZW50bHkgdXNlZCBwYXJhbWV0ZXJzCiAgICAkck9wdHNfYWRkX25ld2xpbmVzICAgICAgICAgID0gJHJPcHRzLT57J2FkZC1uZXdsaW5lcyd9OwogICAgJHJPcHRzX2FkZF93aGl0ZXNwYWNlICAgICAgICA9ICRyT3B0cy0+eydhZGQtd2hpdGVzcGFjZSd9OwogICAgJHJPcHRzX2Jsb2NrX2JyYWNlX3RpZ2h0bmVzcyA9ICRyT3B0cy0+eydibG9jay1icmFjZS10aWdodG5lc3MnfTsKICAgICRyT3B0c19ibG9ja19icmFjZV92ZXJ0aWNhbF90aWdodG5lc3MgPQogICAgICAkck9wdHMtPnsnYmxvY2stYnJhY2UtdmVydGljYWwtdGlnaHRuZXNzJ307CiAgICAkck9wdHNfYnJhY2VfbGVmdF9hbmRfaW5kZW50ICAgPSAkck9wdHMtPnsnYnJhY2UtbGVmdC1hbmQtaW5kZW50J307CiAgICAkck9wdHNfY29tbWFfYXJyb3dfYnJlYWtwb2ludHMgPSAkck9wdHMtPnsnY29tbWEtYXJyb3ctYnJlYWtwb2ludHMnfTsKICAgICRyT3B0c19icmVha19hdF9vbGRfdGVybmFyeV9icmVha3BvaW50cyA9CiAgICAgICRyT3B0cy0+eydicmVhay1hdC1vbGQtdGVybmFyeS1icmVha3BvaW50cyd9OwogICAgJHJPcHRzX2JyZWFrX2F0X29sZF9hdHRyaWJ1dGVfYnJlYWtwb2ludHMgPQogICAgICAkck9wdHMtPnsnYnJlYWstYXQtb2xkLWF0dHJpYnV0ZS1icmVha3BvaW50cyd9OwogICAgJHJPcHRzX2JyZWFrX2F0X29sZF9jb21tYV9icmVha3BvaW50cyA9CiAgICAgICRyT3B0cy0+eydicmVhay1hdC1vbGQtY29tbWEtYnJlYWtwb2ludHMnfTsKICAgICRyT3B0c19icmVha19hdF9vbGRfa2V5d29yZF9icmVha3BvaW50cyA9CiAgICAgICRyT3B0cy0+eydicmVhay1hdC1vbGQta2V5d29yZC1icmVha3BvaW50cyd9OwogICAgJHJPcHRzX2JyZWFrX2F0X29sZF9sb2dpY2FsX2JyZWFrcG9pbnRzID0KICAgICAgJHJPcHRzLT57J2JyZWFrLWF0LW9sZC1sb2dpY2FsLWJyZWFrcG9pbnRzJ307CiAgICAkck9wdHNfYnJlYWtfYXRfb2xkX21ldGhvZF9icmVha3BvaW50cyA9CiAgICAgICRyT3B0cy0+eydicmVhay1hdC1vbGQtbWV0aG9kLWJyZWFrcG9pbnRzJ307CiAgICAkck9wdHNfY2xvc2luZ19zaWRlX2NvbW1lbnRfZWxzZV9mbGFnID0KICAgICAgJHJPcHRzLT57J2Nsb3Npbmctc2lkZS1jb21tZW50LWVsc2UtZmxhZyd9OwogICAgJHJPcHRzX2Nsb3Npbmdfc2lkZV9jb21tZW50X21heGltdW1fdGV4dCA9CiAgICAgICRyT3B0cy0+eydjbG9zaW5nLXNpZGUtY29tbWVudC1tYXhpbXVtLXRleHQnfTsKICAgICRyT3B0c19jb250aW51YXRpb25faW5kZW50YXRpb24gID0gJHJPcHRzLT57J2NvbnRpbnVhdGlvbi1pbmRlbnRhdGlvbid9OwogICAgJHJPcHRzX2RlbGV0ZV9vbGRfd2hpdGVzcGFjZSAgICAgPSAkck9wdHMtPnsnZGVsZXRlLW9sZC13aGl0ZXNwYWNlJ307CiAgICAkck9wdHNfZnV6enlfbGluZV9sZW5ndGggICAgICAgICA9ICRyT3B0cy0+eydmdXp6eS1saW5lLWxlbmd0aCd9OwogICAgJHJPcHRzX2luZGVudF9jb2x1bW5zICAgICAgICAgICAgPSAkck9wdHMtPnsnaW5kZW50LWNvbHVtbnMnfTsKICAgICRyT3B0c19saW5lX3VwX3BhcmVudGhlc2VzICAgICAgID0gJHJPcHRzLT57J2xpbmUtdXAtcGFyZW50aGVzZXMnfTsKICAgICRyT3B0c19tYXhpbXVtX2ZpZWxkc19wZXJfdGFibGUgID0gJHJPcHRzLT57J21heGltdW0tZmllbGRzLXBlci10YWJsZSd9OwogICAgJHJPcHRzX21heGltdW1fbGluZV9sZW5ndGggICAgICAgPSAkck9wdHMtPnsnbWF4aW11bS1saW5lLWxlbmd0aCd9OwogICAgJHJPcHRzX3doaXRlc3BhY2VfY3ljbGUgICAgICAgICAgPSAkck9wdHMtPnsnd2hpdGVzcGFjZS1jeWNsZSd9OwogICAgJHJPcHRzX29uZV9saW5lX2Jsb2NrX3NlbWljb2xvbnMgPSAkck9wdHMtPnsnb25lLWxpbmUtYmxvY2stc2VtaWNvbG9ucyd9OwoKICAgICRyT3B0c192YXJpYWJsZV9tYXhpbXVtX2xpbmVfbGVuZ3RoID0KICAgICAgJHJPcHRzLT57J3ZhcmlhYmxlLW1heGltdW0tbGluZS1sZW5ndGgnfTsKICAgICRyT3B0c19zaG9ydF9jb25jYXRlbmF0aW9uX2l0ZW1fbGVuZ3RoID0KICAgICAgJHJPcHRzLT57J3Nob3J0LWNvbmNhdGVuYXRpb24taXRlbS1sZW5ndGgnfTsKCiAgICAkck9wdHNfa2VlcF9vbGRfYmxhbmtfbGluZXMgICAgID0gJHJPcHRzLT57J2tlZXAtb2xkLWJsYW5rLWxpbmVzJ307CiAgICAkck9wdHNfaWdub3JlX29sZF9icmVha3BvaW50cyAgID0gJHJPcHRzLT57J2lnbm9yZS1vbGQtYnJlYWtwb2ludHMnfTsKICAgICRyT3B0c19mb3JtYXRfc2tpcHBpbmcgICAgICAgICAgPSAkck9wdHMtPnsnZm9ybWF0LXNraXBwaW5nJ307CiAgICAkck9wdHNfc3BhY2VfZnVuY3Rpb25fcGFyZW4gICAgID0gJHJPcHRzLT57J3NwYWNlLWZ1bmN0aW9uLXBhcmVuJ307CiAgICAkck9wdHNfc3BhY2Vfa2V5d29yZF9wYXJlbiAgICAgID0gJHJPcHRzLT57J3NwYWNlLWtleXdvcmQtcGFyZW4nfTsKICAgICRyT3B0c19rZWVwX2ludGVyaW9yX3NlbWljb2xvbnMgPSAkck9wdHMtPnsna2VlcC1pbnRlcmlvci1zZW1pY29sb25zJ307CiAgICAkck9wdHNfaWdub3JlX3NpZGVfY29tbWVudF9sZW5ndGhzID0KICAgICAgJHJPcHRzLT57J2lnbm9yZS1zaWRlLWNvbW1lbnQtbGVuZ3Rocyd9OwoKICAgICMgTm90ZSB0aGF0IGJvdGggb3BlbmluZyBhbmQgY2xvc2luZyB0b2tlbnMgY2FuIGFjY2VzcyB0aGUgb3BlbmluZwogICAgIyBhbmQgY2xvc2luZyBmbGFncyBvZiB0aGVpciBjb250YWluZXIgdHlwZXMuCiAgICAlb3BlbmluZ192ZXJ0aWNhbF90aWdodG5lc3MgPSAoCiAgICAgICAgJygnID0+ICRyT3B0cy0+eydwYXJlbi12ZXJ0aWNhbC10aWdodG5lc3MnfSwKICAgICAgICAneycgPT4gJHJPcHRzLT57J2JyYWNlLXZlcnRpY2FsLXRpZ2h0bmVzcyd9LAogICAgICAgICdbJyA9PiAkck9wdHMtPnsnc3F1YXJlLWJyYWNrZXQtdmVydGljYWwtdGlnaHRuZXNzJ30sCiAgICAgICAgJyknID0+ICRyT3B0cy0+eydwYXJlbi12ZXJ0aWNhbC10aWdodG5lc3MnfSwKICAgICAgICAnfScgPT4gJHJPcHRzLT57J2JyYWNlLXZlcnRpY2FsLXRpZ2h0bmVzcyd9LAogICAgICAgICddJyA9PiAkck9wdHMtPnsnc3F1YXJlLWJyYWNrZXQtdmVydGljYWwtdGlnaHRuZXNzJ30sCiAgICApOwoKICAgICVjbG9zaW5nX3ZlcnRpY2FsX3RpZ2h0bmVzcyA9ICgKICAgICAgICAnKCcgPT4gJHJPcHRzLT57J3BhcmVuLXZlcnRpY2FsLXRpZ2h0bmVzcy1jbG9zaW5nJ30sCiAgICAgICAgJ3snID0+ICRyT3B0cy0+eydicmFjZS12ZXJ0aWNhbC10aWdodG5lc3MtY2xvc2luZyd9LAogICAgICAgICdbJyA9PiAkck9wdHMtPnsnc3F1YXJlLWJyYWNrZXQtdmVydGljYWwtdGlnaHRuZXNzLWNsb3NpbmcnfSwKICAgICAgICAnKScgPT4gJHJPcHRzLT57J3BhcmVuLXZlcnRpY2FsLXRpZ2h0bmVzcy1jbG9zaW5nJ30sCiAgICAgICAgJ30nID0+ICRyT3B0cy0+eydicmFjZS12ZXJ0aWNhbC10aWdodG5lc3MtY2xvc2luZyd9LAogICAgICAgICddJyA9PiAkck9wdHMtPnsnc3F1YXJlLWJyYWNrZXQtdmVydGljYWwtdGlnaHRuZXNzLWNsb3NpbmcnfSwKICAgICk7CgogICAgIyBhc3N1bWUgZmxhZyBmb3IgJz4nIHNhbWUgYXMgJyknIGZvciBjbG9zaW5nIHF3IHF1b3RlcwogICAgJWNsb3NpbmdfdG9rZW5faW5kZW50YXRpb24gPSAoCiAgICAgICAgJyknID0+ICRyT3B0cy0+eydjbG9zaW5nLXBhcmVuLWluZGVudGF0aW9uJ30sCiAgICAgICAgJ30nID0+ICRyT3B0cy0+eydjbG9zaW5nLWJyYWNlLWluZGVudGF0aW9uJ30sCiAgICAgICAgJ10nID0+ICRyT3B0cy0+eydjbG9zaW5nLXNxdWFyZS1icmFja2V0LWluZGVudGF0aW9uJ30sCiAgICAgICAgJz4nID0+ICRyT3B0cy0+eydjbG9zaW5nLXBhcmVuLWluZGVudGF0aW9uJ30sCiAgICApOwoKICAgICMgZmxhZyBpbmRpY2F0aW5nIGlmIGFueSBjbG9zaW5nIHRva2VucyBhcmUgaW5kZW50ZWQKICAgICRzb21lX2Nsb3NpbmdfdG9rZW5faW5kZW50YXRpb24gPQogICAgICAgICAkck9wdHMtPnsnY2xvc2luZy1wYXJlbi1pbmRlbnRhdGlvbid9CiAgICAgIHx8ICRyT3B0cy0+eydjbG9zaW5nLWJyYWNlLWluZGVudGF0aW9uJ30KICAgICAgfHwgJHJPcHRzLT57J2Nsb3Npbmctc3F1YXJlLWJyYWNrZXQtaW5kZW50YXRpb24nfQogICAgICB8fCAkck9wdHMtPnsnaW5kZW50LWNsb3NpbmctYnJhY2UnfTsKCiAgICAlb3BlbmluZ190b2tlbl9yaWdodCA9ICgKICAgICAgICAnKCcgPT4gJHJPcHRzLT57J29wZW5pbmctcGFyZW4tcmlnaHQnfSwKICAgICAgICAneycgPT4gJHJPcHRzLT57J29wZW5pbmctaGFzaC1icmFjZS1yaWdodCd9LAogICAgICAgICdbJyA9PiAkck9wdHMtPnsnb3BlbmluZy1zcXVhcmUtYnJhY2tldC1yaWdodCd9LAogICAgKTsKCiAgICAlc3RhY2tfb3BlbmluZ190b2tlbiA9ICgKICAgICAgICAnKCcgPT4gJHJPcHRzLT57J3N0YWNrLW9wZW5pbmctcGFyZW4nfSwKICAgICAgICAneycgPT4gJHJPcHRzLT57J3N0YWNrLW9wZW5pbmctaGFzaC1icmFjZSd9LAogICAgICAgICdbJyA9PiAkck9wdHMtPnsnc3RhY2stb3BlbmluZy1zcXVhcmUtYnJhY2tldCd9LAogICAgKTsKCiAgICAlc3RhY2tfY2xvc2luZ190b2tlbiA9ICgKICAgICAgICAnKScgPT4gJHJPcHRzLT57J3N0YWNrLWNsb3NpbmctcGFyZW4nfSwKICAgICAgICAnfScgPT4gJHJPcHRzLT57J3N0YWNrLWNsb3NpbmctaGFzaC1icmFjZSd9LAogICAgICAgICddJyA9PiAkck9wdHMtPnsnc3RhY2stY2xvc2luZy1zcXVhcmUtYnJhY2tldCd9LAogICAgKTsKICAgICRyT3B0c19zdGFja19jbG9zaW5nX2Jsb2NrX2JyYWNlID0gJHJPcHRzLT57J3N0YWNrLWNsb3NpbmctYmxvY2stYnJhY2UnfTsKICAgICRyT3B0c19zcGFjZV9iYWNrc2xhc2hfcXVvdGUgICAgID0gJHJPcHRzLT57J3NwYWNlLWJhY2tzbGFzaC1xdW90ZSd9OwogICAgcmV0dXJuOwp9CgpzdWIgYmFkX3BhdHRlcm4gewoKICAgICMgU2VlIGlmIGEgcGF0dGVybiB3aWxsIGNvbXBpbGUuIFdlIGhhdmUgdG8gdXNlIGEgc3RyaW5nIGV2YWwgaGVyZSwKICAgICMgYnV0IGl0IHNob3VsZCBiZSBzYWZlIGJlY2F1c2UgdGhlIHBhdHRlcm4gaGFzIGJlZW4gY29uc3RydWN0ZWQKICAgICMgYnkgdGhpcyBwcm9ncmFtLgogICAgbXkgKCRwYXR0ZXJuKSA9IEBfOwogICAgZXZhbCAiJyMjJz1+LyRwYXR0ZXJuLyI7CiAgICByZXR1cm4gJEA7Cn0KCnsKICAgIG15ICVub19jdWRkbGU7CgogICAgIyBBZGQga2V5d29yZHMgaGVyZSB3aGljaCByZWFsbHkgc2hvdWxkIG5vdCBiZSBjdWRkbGVkCiAgICBCRUdJTiB7CiAgICAgICAgbXkgQHEgPSBxdyhpZiB1bmxlc3MgZm9yIGZvcmVhY2ggd2hpbGUpOwogICAgICAgIEBub19jdWRkbGV7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKICAgIH0KCiAgICBzdWIgcHJlcGFyZV9jdWRkbGVkX2Jsb2NrX3R5cGVzIHsKCiAgICAgICAgIyB0aGUgY3VkZGxlZC1lbHNlIHN0eWxlLCBpZiB1c2VkLCBpcyBjb250cm9sbGVkIGJ5IGEgaGFzaCB0aGF0CiAgICAgICAgIyB3ZSBjb25zdHJ1Y3QgaGVyZQoKICAgICAgICAjIEluY2x1ZGUga2V5d29yZHMgaGVyZSB3aGljaCBzaG91bGQgbm90IGJlIGN1ZGRsZWQKCiAgICAgICAgbXkgJGN1ZGRsZWRfc3RyaW5nID0gIiI7CiAgICAgICAgaWYgKCAkck9wdHMtPnsnY3VkZGxlZC1lbHNlJ30gKSB7CgogICAgICAgICAgICAjIHNldCB0aGUgZGVmYXVsdAogICAgICAgICAgICAkY3VkZGxlZF9zdHJpbmcgPSAnZWxzaWYgZWxzZSBjb250aW51ZSBjYXRjaCBmaW5hbGx5JwogICAgICAgICAgICAgIHVubGVzcyAoICRyT3B0cy0+eydjdWRkbGVkLWJsb2NrLWxpc3QtZXhjbHVzaXZlJ30gKTsKCiAgICAgICAgICAgICMgVGhpcyBpcyB0aGUgb2xkIGVxdWl2YWxlbnQgYnV0IG1vcmUgY29tcGxleCB2ZXJzaW9uCiAgICAgICAgICAgICMgJGN1ZGRsZWRfc3RyaW5nID0gJ2lmLWVsc2lmLWVsc2UgdW5sZXNzLWVsc2lmLWVsc2UgLWNvbnRpbnVlICc7CgogICAgICAgICAgICAjIEFkZCB1c2VycyBvdGhlciBibG9ja3MgdG8gYmUgY3VkZGxlZAogICAgICAgICAgICBteSAkY3VkZGxlZF9ibG9ja19saXN0ID0gJHJPcHRzLT57J2N1ZGRsZWQtYmxvY2stbGlzdCd9OwogICAgICAgICAgICBpZiAoJGN1ZGRsZWRfYmxvY2tfbGlzdCkgewogICAgICAgICAgICAgICAgJGN1ZGRsZWRfc3RyaW5nIC49ICIgIiAuICRjdWRkbGVkX2Jsb2NrX2xpc3Q7CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgICAjIElmIHdlIGhhdmUgYSBjdWRkbGVkIHN0cmluZyBvZiB0aGUgZm9ybQogICAgICAgICMgICd0cnktY2F0Y2gtZmluYWxseScKCiAgICAgICAgIyB3ZSB3YW50IHRvIHByZXBhcmUgYSBoYXNoIG9mIHRoZSBmb3JtCgogICAgICAgICMgJHJjdWRkbGVkX2Jsb2NrX3R5cGVzID0gewogICAgICAgICMgICAgJ3RyeScgPT4gewogICAgICAgICMgICAgICAgICdjYXRjaCcgICA9PiAxLAogICAgICAgICMgICAgICAgICdmaW5hbGx5JyA9PiAxCiAgICAgICAgIyAgICB9LAogICAgICAgICMgfTsKCiAgICAgICAgIyB1c2UgLWRjYmwgdG8gZHVtcCB0aGlzIGhhc2gKCiAgICAgICAgIyBNdWx0aXBsZSBzdWNoIHN0cmluZ3MgYXJlIGlucHV0IGFzIGEgc3BhY2Ugb3IgY29tbWEgc2VwYXJhdGVkIGxpc3QKCiAgICAgICAgIyBJZiB3ZSBnZXQgdHdvIGxpc3RzIHdpdGggdGhlIHNhbWUgbGVhZGluZyB0eXBlLCBzdWNoIGFzCiAgICAgICAgIyAgIC1jYmwgPSAiLXRyeS1jYXRjaC1maW5hbGx5ICAtdHJ5LWNhdGNoLW90aGVyd2lzZSIKICAgICAgICAjIHRoZW4gdGhleSB3aWxsIGdldCBtZXJnZWQgYXMgZm9sbG93czoKICAgICAgICAjICRyY3VkZGxlZF9ibG9ja190eXBlcyA9IHsKICAgICAgICAjICAgICd0cnknID0+IHsKICAgICAgICAjICAgICAgICAnY2F0Y2gnICAgICA9PiAxLAogICAgICAgICMgICAgICAgICdmaW5hbGx5JyAgID0+IDIsCiAgICAgICAgIyAgICAgICAgJ290aGVyd2lzZScgPT4gMSwKICAgICAgICAjICAgIH0sCiAgICAgICAgIyB9OwogICAgICAgICMgVGhpcyB3aWxsIGFsbG93IGVpdGhlciB0eXBlIG9mIGNoYWluIHRvIGJlIGZvbGxvd2VkLgoKICAgICAgICAkY3VkZGxlZF9zdHJpbmcgPX4gcy8sLyAvZzsgICAgIyBhbGxvdyBzcGFjZSBvciBjb21tYSBzZXBhcmF0ZWQgbGlzdHMKICAgICAgICBteSBAY3VkZGxlZF9zdHJpbmdzID0gc3BsaXQgL1xzKy8sICRjdWRkbGVkX3N0cmluZzsKCiAgICAgICAgJHJjdWRkbGVkX2Jsb2NrX3R5cGVzID0ge307CgogICAgICAgICMgcHJvY2VzcyBlYWNoIGRhc2gtc2VwYXJhdGVkIHN0cmluZy4uLgogICAgICAgIG15ICRzdHJpbmdfY291bnQgPSAwOwogICAgICAgIGZvcmVhY2ggbXkgJHN0cmluZyAoQGN1ZGRsZWRfc3RyaW5ncykgewogICAgICAgICAgICBuZXh0IHVubGVzcyAkc3RyaW5nOwogICAgICAgICAgICBteSBAd29yZHMgPSBzcGxpdCAvLSsvLCAkc3RyaW5nOyAgICAjIGFsbG93IG11bHRpcGxlIGRhc2hlcwoKICAgICAgICAgICAgIyB3ZSBjb3VsZCBsb29rIGZvciBhbmQgcmVwb3J0IHBvc3NpYmxlIGVycm9ycyBoZXJlLi4uCiAgICAgICAgICAgIG5leHQgdW5sZXNzICggQHdvcmRzID4gMCApOwoKICAgICAgICAgICAjIGFsbG93IGVpdGhlciAnLWNvbnRpbnVlJyBvciAqLWNvbnRpbnVlJyBmb3IgYXJiaXRyYXJ5IHN0YXJ0aW5nIHR5cGUKICAgICAgICAgICAgbXkgJHN0YXJ0ID0gJyonOwoKICAgICAgICAgICAgIyBhIHNpbmdsZSB3b3JkIHdpdGhvdXQgZGFzaGVzIGlzIGEgc2Vjb25kYXJ5IGJsb2NrIHR5cGUKICAgICAgICAgICAgaWYgKCBAd29yZHMgPiAxICkgewogICAgICAgICAgICAgICAgJHN0YXJ0ID0gc2hpZnQgQHdvcmRzOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFsd2F5cyBtYWtlIGFuIGVudHJ5IGZvciB0aGUgbGVhZGluZyB3b3JkLiBJZiBub25lIGZvbGxvdywgdGhpcwogICAgICAgICAgICAjIHdpbGwgc3RpbGwgcHJldmVudCBhIHdpbGRjYXJkIGZyb20gbWF0Y2hpbmcgdGhpcyB3b3JkLgogICAgICAgICAgICBpZiAoICFkZWZpbmVkKCAkcmN1ZGRsZWRfYmxvY2tfdHlwZXMtPnskc3RhcnR9ICkgKSB7CiAgICAgICAgICAgICAgICAkcmN1ZGRsZWRfYmxvY2tfdHlwZXMtPnskc3RhcnR9ID0ge307CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgVGhlIGNvdW50IGdpdmVzIHRoZSBvcmlnaW5hbCB3b3JkIG9yZGVyIGluIGNhc2Ugd2UgZXZlciB3YW50IGl0LgogICAgICAgICAgICAkc3RyaW5nX2NvdW50Kys7CiAgICAgICAgICAgIG15ICR3b3JkX2NvdW50ID0gMDsKICAgICAgICAgICAgZm9yZWFjaCBteSAkd29yZCAoQHdvcmRzKSB7CiAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyAkd29yZDsKICAgICAgICAgICAgICAgIGlmICggJG5vX2N1ZGRsZXskd29yZH0gKSB7CiAgICAgICAgICAgICAgICAgICAgV2FybigKIiMjIElnbm9yaW5nIGtleXdvcmQgJyR3b3JkJyBpbiAtY2JsOyBkb2VzIG5vdCBzZWVtIHJpZ2h0XG4iCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHdvcmRfY291bnQrKzsKICAgICAgICAgICAgICAgICRyY3VkZGxlZF9ibG9ja190eXBlcy0+eyRzdGFydH0tPnskd29yZH0gPQogICAgICAgICAgICAgICAgICAxOyAgICAjIiRzdHJpbmdfY291bnQuJHdvcmRfY291bnQiOwoKICAgICAgICAgICAgICAgICMgZ2l0Izk6IFJlbW92ZSB0aGlzIHdvcmQgZnJvbSB0aGUgbGlzdCBvZiBkZXNpcmVkIG9uZS1saW5lCiAgICAgICAgICAgICAgICAjIGJsb2NrcwogICAgICAgICAgICAgICAgJHdhbnRfb25lX2xpbmVfYmxvY2t7JHdvcmR9ID0gMDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9Cn0KCnN1YiBkdW1wX2N1ZGRsZWRfYmxvY2tfbGlzdCB7CiAgICBteSAoJGZoKSA9IEBfOwoKICAgICMgT1JJR0lOQUwgTUVUSE9EOiBIZXJlIGlzIHRoZSBmb3JtYXQgb2YgdGhlIGN1ZGRsZWQgYmxvY2sgdHlwZSBoYXNoCiAgICAjIHdoaWNoIGNvbnRyb2xzIHRoaXMgcm91dGluZQogICAgIyAgICBteSAkcmN1ZGRsZWRfYmxvY2tfdHlwZXMgPSB7CiAgICAjICAgICAgICAnaWYnID0+IHsKICAgICMgICAgICAgICAgICAnZWxzZScgID0+IDEsCiAgICAjICAgICAgICAgICAgJ2Vsc2lmJyA9PiAxCiAgICAjICAgICAgICB9LAogICAgIyAgICAgICAgJ3RyeScgPT4gewogICAgIyAgICAgICAgICAgICdjYXRjaCcgICA9PiAxLAogICAgIyAgICAgICAgICAgICdmaW5hbGx5JyA9PiAxCiAgICAjICAgICAgICB9LAogICAgIyAgICB9OwoKICAgICMgU0lNUExGSUVEIE1FVEhPRDogdGhlIHNpbXBsaWZpZWQgbWV0aG9kIHVzZXMgYSB3aWxkY2FyZCBmb3IKICAgICMgdGhlIHN0YXJ0aW5nIGJsb2NrIHR5cGUgYW5kIHB1dHMgYWxsIGN1ZGRsZWQgYmxvY2tzIHRvZ2V0aGVyOgogICAgIyAgICBteSAkcmN1ZGRsZWRfYmxvY2tfdHlwZXMgPSB7CiAgICAjICAgICAgICAnKicgPT4gewogICAgIyAgICAgICAgICAgICdlbHNlJyAgPT4gMSwKICAgICMgICAgICAgICAgICAnZWxzaWYnID0+IDEKICAgICMgICAgICAgICAgICAnY2F0Y2gnICAgPT4gMSwKICAgICMgICAgICAgICAgICAnZmluYWxseScgPT4gMQogICAgIyAgICAgICAgfSwKICAgICMgICAgfTsKCiAgICAjIEJvdGggbWV0aG9kcyB3b3JrLCBidXQgdGhlIHNpbXBsaWZpZWQgbWV0aG9kIGhhcyBwcm92ZW4gdG8gYmUgYWRlcXVhdGUgYW5kCiAgICAjIGVhc2llciB0byBtYW5hZ2UuCgogICAgbXkgJGN1ZGRsZWRfc3RyaW5nID0gJHJPcHRzLT57J2N1ZGRsZWQtYmxvY2stbGlzdCd9OwogICAgJGN1ZGRsZWRfc3RyaW5nID0gJycgdW5sZXNzICRjdWRkbGVkX3N0cmluZzsKCiAgICBteSAkZmxhZ3MgPSAiIjsKICAgICRmbGFncyAuPSAiLWNlIiBpZiAoICRyT3B0cy0+eydjdWRkbGVkLWVsc2UnfSApOwogICAgJGZsYWdzIC49ICIgLWNibD0nJGN1ZGRsZWRfc3RyaW5nJyI7CgogICAgdW5sZXNzICggJHJPcHRzLT57J2N1ZGRsZWQtZWxzZSd9ICkgewogICAgICAgICRmbGFncyAuPSAiXG5Ob3RlOiBZb3UgbXVzdCBzcGVjaWZ5IC1jZSB0byBnZW5lcmF0ZSBhIGN1ZGRsZWQgaGFzaCI7CiAgICB9CgogICAgJGZoLT5wcmludCg8PEVPTSk7Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpIYXNoIG9mIGN1ZGRsZWQgYmxvY2sgdHlwZXMgcHJlcGFyZWQgZm9yIGEgcnVuIHdpdGggdGhlc2UgcGFyYW1ldGVyczoKICAkZmxhZ3MKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVPTQoKICAgIHVzZSBEYXRhOjpEdW1wZXI7CiAgICAkZmgtPnByaW50KCBEdW1wZXIoJHJjdWRkbGVkX2Jsb2NrX3R5cGVzKSApOwoKICAgICRmaC0+cHJpbnQoPDxFT00pOwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRU9NCiAgICByZXR1cm47Cn0KCnN1YiBtYWtlX3N0YXRpY19ibG9ja19jb21tZW50X3BhdHRlcm4gewoKICAgICMgY3JlYXRlIHRoZSBwYXR0ZXJuIHVzZWQgdG8gaWRlbnRpZnkgc3RhdGljIGJsb2NrIGNvbW1lbnRzCiAgICAkc3RhdGljX2Jsb2NrX2NvbW1lbnRfcGF0dGVybiA9ICdeXHMqIyMnOwoKICAgICMgYWxsb3cgdGhlIHVzZXIgdG8gY2hhbmdlIGl0CiAgICBpZiAoICRyT3B0cy0+eydzdGF0aWMtYmxvY2stY29tbWVudC1wcmVmaXgnfSApIHsKICAgICAgICBteSAkcHJlZml4ID0gJHJPcHRzLT57J3N0YXRpYy1ibG9jay1jb21tZW50LXByZWZpeCd9OwogICAgICAgICRwcmVmaXggPX4gcy9eXHMqLy87CiAgICAgICAgbXkgJHBhdHRlcm4gPSAkcHJlZml4OwoKICAgICAgICAjIHVzZXIgbWF5IGdpdmUgbGVhZGluZyBjYXJldCB0byBmb3JjZSBtYXRjaGluZyBsZWZ0IGNvbW1lbnRzIG9ubHkKICAgICAgICBpZiAoICRwcmVmaXggIX4gL15cXiMvICkgewogICAgICAgICAgICBpZiAoICRwcmVmaXggIX4gL14jLyApIHsKICAgICAgICAgICAgICAgIERpZSgKIkVSUk9SOiB0aGUgLXNiY3AgcHJlZml4IGlzICckcHJlZml4JyBidXQgbXVzdCBiZWdpbiB3aXRoICcjJyBvciAnXiMnXG4iCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRwYXR0ZXJuID0gJ15ccyonIC4gJHByZWZpeDsKICAgICAgICB9CiAgICAgICAgaWYgKCBiYWRfcGF0dGVybigkcGF0dGVybikgKSB7CiAgICAgICAgICAgIERpZSgKIkVSUk9SOiB0aGUgLXNiYyBwcmVmaXggJyRwcmVmaXgnIGNhdXNlcyB0aGUgaW52YWxpZCByZWdleCAnJHBhdHRlcm4nXG4iCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgICRzdGF0aWNfYmxvY2tfY29tbWVudF9wYXR0ZXJuID0gJHBhdHRlcm47CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBtYWtlX2Zvcm1hdF9za2lwcGluZ19wYXR0ZXJuIHsKICAgIG15ICggJG9wdF9uYW1lLCAkZGVmYXVsdCApID0gQF87CiAgICBteSAkcGFyYW0gPSAkck9wdHMtPnskb3B0X25hbWV9OwogICAgdW5sZXNzICgkcGFyYW0pIHsgJHBhcmFtID0gJGRlZmF1bHQgfQogICAgJHBhcmFtID1+IHMvXlxzKi8vOwogICAgaWYgKCAkcGFyYW0gIX4gL14jLyApIHsKICAgICAgICBEaWUoIkVSUk9SOiB0aGUgJG9wdF9uYW1lIHBhcmFtZXRlciAnJHBhcmFtJyBtdXN0IGJlZ2luIHdpdGggJyMnXG4iKTsKICAgIH0KICAgIG15ICRwYXR0ZXJuID0gJ14nIC4gJHBhcmFtIC4gJ1xzJzsKICAgIGlmICggYmFkX3BhdHRlcm4oJHBhdHRlcm4pICkgewogICAgICAgIERpZSgKIkVSUk9SOiB0aGUgJG9wdF9uYW1lIHBhcmFtZXRlciAnJHBhcmFtJyBjYXVzZXMgdGhlIGludmFsaWQgcmVnZXggJyRwYXR0ZXJuJ1xuIgogICAgICAgICk7CiAgICB9CiAgICByZXR1cm4gJHBhdHRlcm47Cn0KCnN1YiBtYWtlX2Nsb3Npbmdfc2lkZV9jb21tZW50X2xpc3RfcGF0dGVybiB7CgogICAgIyB0dXJuIGFueSBpbnB1dCBsaXN0IGludG8gYSByZWdleCBmb3IgcmVjb2duaXppbmcgc2VsZWN0ZWQgYmxvY2sgdHlwZXMKICAgICRjbG9zaW5nX3NpZGVfY29tbWVudF9saXN0X3BhdHRlcm4gPSAnXlx3Kyc7CiAgICBpZiAoIGRlZmluZWQoICRyT3B0cy0+eydjbG9zaW5nLXNpZGUtY29tbWVudC1saXN0J30gKQogICAgICAgICYmICRyT3B0cy0+eydjbG9zaW5nLXNpZGUtY29tbWVudC1saXN0J30gKQogICAgewogICAgICAgICRjbG9zaW5nX3NpZGVfY29tbWVudF9saXN0X3BhdHRlcm4gPQogICAgICAgICAgbWFrZV9ibG9ja19wYXR0ZXJuKCAnLWNzY2wnLCAkck9wdHMtPnsnY2xvc2luZy1zaWRlLWNvbW1lbnQtbGlzdCd9ICk7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBtYWtlX3N1Yl9tYXRjaGluZ19wYXR0ZXJuIHsKCiAgICAkU1VCX1BBVFRFUk4gID0gJ15zdWJccysoOjp8XHcpJzsKICAgICRBU1VCX1BBVFRFUk4gPSAnXnN1YiQnOwoKICAgIGlmICggJHJPcHRzLT57J3N1Yi1hbGlhcy1saXN0J30gKSB7CgogICAgICAgICMgTm90ZSB0aGF0IGFueSAnc3ViLWFsaWFzLWxpc3QnIGhhcyBiZWVuIHByZXByb2Nlc3NlZCB0bwogICAgICAgICMgYmUgYSB0cmltbWVkLCBzcGFjZS1zZXBhcmF0ZWQgbGlzdCB3aGljaCBpbmNsdWRlcyAnc3ViJwogICAgICAgICMgZm9yIGV4YW1wbGUsIGl0IG1pZ2h0IGJlICdzdWIgbWV0aG9kIGZ1bicKICAgICAgICBteSAkc3ViX2FsaWFzX2xpc3QgPSAkck9wdHMtPnsnc3ViLWFsaWFzLWxpc3QnfTsKICAgICAgICAkc3ViX2FsaWFzX2xpc3QgPX4gcy9ccysvXHwvZzsKICAgICAgICAkU1VCX1BBVFRFUk4gICAgPX4gcy9zdWIvXCgkc3ViX2FsaWFzX2xpc3RcKS87CiAgICAgICAgJEFTVUJfUEFUVEVSTiAgID1+IHMvc3ViL1woJHN1Yl9hbGlhc19saXN0XCkvOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgbWFrZV9ibGlfcGF0dGVybiB7CgogICAgaWYgKCBkZWZpbmVkKCAkck9wdHMtPnsnYnJhY2UtbGVmdC1hbmQtaW5kZW50LWxpc3QnfSApCiAgICAgICAgJiYgJHJPcHRzLT57J2JyYWNlLWxlZnQtYW5kLWluZGVudC1saXN0J30gKQogICAgewogICAgICAgICRibGlfbGlzdF9zdHJpbmcgPSAkck9wdHMtPnsnYnJhY2UtbGVmdC1hbmQtaW5kZW50LWxpc3QnfTsKICAgIH0KCiAgICAkYmxpX3BhdHRlcm4gPSBtYWtlX2Jsb2NrX3BhdHRlcm4oICctYmxpbCcsICRibGlfbGlzdF9zdHJpbmcgKTsKICAgIHJldHVybjsKfQoKc3ViIG1ha2Vfa2V5d29yZF9ncm91cF9saXN0X3BhdHRlcm4gewoKICAgICMgdHVybiBhbnkgaW5wdXQgbGlzdCBpbnRvIGEgcmVnZXggZm9yIHJlY29nbml6aW5nIHNlbGVjdGVkIGJsb2NrIHR5cGVzLgogICAgIyBIZXJlIGFyZSB0aGUgZGVmYXVsdHM6CiAgICAka2V5d29yZF9ncm91cF9saXN0X3BhdHRlcm4gICAgICAgICA9ICdeKG91cnxsb2NhbHxteXx1c2V8cmVxdWlyZXwpJCc7CiAgICAka2V5d29yZF9ncm91cF9saXN0X2NvbW1lbnRfcGF0dGVybiA9ICcnOwogICAgaWYgKCBkZWZpbmVkKCAkck9wdHMtPnsna2V5d29yZC1ncm91cC1ibGFua3MtbGlzdCd9ICkKICAgICAgICAmJiAkck9wdHMtPnsna2V5d29yZC1ncm91cC1ibGFua3MtbGlzdCd9ICkKICAgIHsKICAgICAgICBteSBAd29yZHMgPSBzcGxpdCAvXHMrLywgJHJPcHRzLT57J2tleXdvcmQtZ3JvdXAtYmxhbmtzLWxpc3QnfTsKICAgICAgICBteSBAa2V5d29yZF9saXN0OwogICAgICAgIG15IEBjb21tZW50X2xpc3Q7CiAgICAgICAgZm9yZWFjaCBteSAkd29yZCAoQHdvcmRzKSB7CiAgICAgICAgICAgIGlmICggJHdvcmQgPX4gL14oQkN8U0JDKSQvICkgewogICAgICAgICAgICAgICAgcHVzaCBAY29tbWVudF9saXN0LCAkd29yZDsKICAgICAgICAgICAgICAgIGlmICggJHdvcmQgZXEgJ1NCQycgKSB7IHB1c2ggQGNvbW1lbnRfbGlzdCwgJ1NCQ1gnIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHB1c2ggQGtleXdvcmRfbGlzdCwgJHdvcmQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJGtleXdvcmRfZ3JvdXBfbGlzdF9wYXR0ZXJuID0KICAgICAgICAgIG1ha2VfYmxvY2tfcGF0dGVybiggJy1rZ2JsJywgJHJPcHRzLT57J2tleXdvcmQtZ3JvdXAtYmxhbmtzLWxpc3QnfSApOwogICAgICAgICRrZXl3b3JkX2dyb3VwX2xpc3RfY29tbWVudF9wYXR0ZXJuID0KICAgICAgICAgIG1ha2VfYmxvY2tfcGF0dGVybiggJy1rZ2JsJywgam9pbiggJyAnLCBAY29tbWVudF9saXN0ICkgKTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIG1ha2VfYmxvY2tfYnJhY2VfdmVydGljYWxfdGlnaHRuZXNzX3BhdHRlcm4gewoKICAgICMgdHVybiBhbnkgaW5wdXQgbGlzdCBpbnRvIGEgcmVnZXggZm9yIHJlY29nbml6aW5nIHNlbGVjdGVkIGJsb2NrIHR5cGVzCiAgICAkYmxvY2tfYnJhY2VfdmVydGljYWxfdGlnaHRuZXNzX3BhdHRlcm4gPQogICAgICAnXigoaWZ8ZWxzZXxlbHNpZnx1bmxlc3N8d2hpbGV8Zm9yfGZvcmVhY2h8ZG98XHcrOikkfHN1YiknOwogICAgaWYgKCBkZWZpbmVkKCAkck9wdHMtPnsnYmxvY2stYnJhY2UtdmVydGljYWwtdGlnaHRuZXNzLWxpc3QnfSApCiAgICAgICAgJiYgJHJPcHRzLT57J2Jsb2NrLWJyYWNlLXZlcnRpY2FsLXRpZ2h0bmVzcy1saXN0J30gKQogICAgewogICAgICAgICRibG9ja19icmFjZV92ZXJ0aWNhbF90aWdodG5lc3NfcGF0dGVybiA9CiAgICAgICAgICBtYWtlX2Jsb2NrX3BhdHRlcm4oICctYmJ2dGwnLAogICAgICAgICAgICAkck9wdHMtPnsnYmxvY2stYnJhY2UtdmVydGljYWwtdGlnaHRuZXNzLWxpc3QnfSApOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgbWFrZV9ibGFua19saW5lX3BhdHRlcm4gewoKICAgICRibGFua19saW5lc19iZWZvcmVfY2xvc2luZ19ibG9ja19wYXR0ZXJuID0gJFNVQl9QQVRURVJOOwogICAgbXkgJGtleSA9ICdibGFuay1saW5lcy1iZWZvcmUtY2xvc2luZy1ibG9jay1saXN0JzsKICAgIGlmICggZGVmaW5lZCggJHJPcHRzLT57JGtleX0gKSAmJiAkck9wdHMtPnska2V5fSApIHsKICAgICAgICAkYmxhbmtfbGluZXNfYmVmb3JlX2Nsb3NpbmdfYmxvY2tfcGF0dGVybiA9CiAgICAgICAgICBtYWtlX2Jsb2NrX3BhdHRlcm4oICctYmxiY2wnLCAkck9wdHMtPnska2V5fSApOwogICAgfQoKICAgICRibGFua19saW5lc19hZnRlcl9vcGVuaW5nX2Jsb2NrX3BhdHRlcm4gPSAkU1VCX1BBVFRFUk47CiAgICAka2V5ID0gJ2JsYW5rLWxpbmVzLWFmdGVyLW9wZW5pbmctYmxvY2stbGlzdCc7CiAgICBpZiAoIGRlZmluZWQoICRyT3B0cy0+eyRrZXl9ICkgJiYgJHJPcHRzLT57JGtleX0gKSB7CiAgICAgICAgJGJsYW5rX2xpbmVzX2FmdGVyX29wZW5pbmdfYmxvY2tfcGF0dGVybiA9CiAgICAgICAgICBtYWtlX2Jsb2NrX3BhdHRlcm4oICctYmxhb2wnLCAkck9wdHMtPnska2V5fSApOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgbWFrZV9ibG9ja19wYXR0ZXJuIHsKCiAgICAjICBnaXZlbiBhIHN0cmluZyBvZiBibG9jay10eXBlIGtleXdvcmRzLCByZXR1cm4gYSByZWdleCB0byBtYXRjaCB0aGVtCiAgICAjICBUaGUgb25seSB0cmlja3kgcGFydCBpcyB0aGF0IGxhYmVscyBhcmUgaW5kaWNhdGVkIHdpdGggYSBzaW5nbGUgJzonCiAgICAjICBhbmQgdGhlICdzdWInIHRva2VuIHRleHQgbWF5IGhhdmUgYWRkaXRpb25hbCB0ZXh0IGFmdGVyIGl0IChuYW1lIG9mCiAgICAjICBzdWIpLgogICAgIwogICAgIyAgRXhhbXBsZToKICAgICMKICAgICMgICBpbnB1dCBzdHJpbmc6ICJpZiBlbHNlIGVsc2lmIHVubGVzcyB3aGlsZSBmb3IgZm9yZWFjaCBkbyA6IHN1YiI7CiAgICAjICAgcGF0dGVybjogICdeKChpZnxlbHNlfGVsc2lmfHVubGVzc3x3aGlsZXxmb3J8Zm9yZWFjaHxkb3xcdys6KSR8c3ViKSc7CgogICAgIyAgTWlub3IgVXBkYXRlOgogICAgIwogICAgIyAgVG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBhbm9ueW1vdXMgc3VicyBhbmQgbmFtZWQgc3VicywgdXNlICdzdWInIHRvCiAgICAjICAgaW5kaWNhdGUgYSBuYW1lZCBzdWIsIGFuZCAnYXN1YicgdG8gaW5kaWNhdGUgYW4gYW5vbnltb3VzIHN1YgoKICAgIG15ICggJGFiYnJldiwgJHN0cmluZyApID0gQF87CiAgICBteSBAbGlzdCAgPSBzcGxpdF93b3Jkcygkc3RyaW5nKTsKICAgIG15IEB3b3JkcyA9ICgpOwogICAgbXkgJXNlZW47CiAgICBmb3IgbXkgJGkgKEBsaXN0KSB7CiAgICAgICAgaWYgKCAkaSBlcSAnKicgKSB7IG15ICRwYXR0ZXJuID0gJ14uKic7IHJldHVybiAkcGF0dGVybiB9CiAgICAgICAgbmV4dCBpZiAkc2VlbnskaX07CiAgICAgICAgJHNlZW57JGl9ID0gMTsKICAgICAgICBpZiAoICRpIGVxICdzdWInICkgewogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRpIGVxICdhc3ViJyApIHsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkaSBlcSAnOycgKSB7CiAgICAgICAgICAgIHB1c2ggQHdvcmRzLCAnOyc7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJGkgZXEgJ3snICkgewogICAgICAgICAgICBwdXNoIEB3b3JkcywgJ1x7JzsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkaSBlcSAnOicgKSB7CiAgICAgICAgICAgIHB1c2ggQHdvcmRzLCAnXHcrOic7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJGkgPX4gL15cdy8gKSB7CiAgICAgICAgICAgIHB1c2ggQHdvcmRzLCAkaTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIFdhcm4oInVucmVjb2duaXplZCBibG9jayB0eXBlICRpIGFmdGVyICRhYmJyZXYsIGlnbm9yaW5nXG4iKTsKICAgICAgICB9CiAgICB9CiAgICBteSAkcGF0dGVybiAgICAgID0gJygnIC4gam9pbiggJ3wnLCBAd29yZHMgKSAuICcpJCc7CiAgICBteSAkc3ViX3BhdHRlcm5zID0gIiI7CiAgICBpZiAoICRzZWVueydzdWInfSApIHsKICAgICAgICAkc3ViX3BhdHRlcm5zIC49ICd8JyAuICRTVUJfUEFUVEVSTjsKICAgIH0KICAgIGlmICggJHNlZW57J2FzdWInfSApIHsKICAgICAgICAkc3ViX3BhdHRlcm5zIC49ICd8JyAuICRBU1VCX1BBVFRFUk47CiAgICB9CiAgICBpZiAoJHN1Yl9wYXR0ZXJucykgewogICAgICAgICRwYXR0ZXJuID0gJygnIC4gJHBhdHRlcm4gLiAkc3ViX3BhdHRlcm5zIC4gJyknOwogICAgfQogICAgJHBhdHRlcm4gPSAnXicgLiAkcGF0dGVybjsKICAgIHJldHVybiAkcGF0dGVybjsKfQoKc3ViIG1ha2Vfc3RhdGljX3NpZGVfY29tbWVudF9wYXR0ZXJuIHsKCiAgICAjIGNyZWF0ZSB0aGUgcGF0dGVybiB1c2VkIHRvIGlkZW50aWZ5IHN0YXRpYyBzaWRlIGNvbW1lbnRzCiAgICAkc3RhdGljX3NpZGVfY29tbWVudF9wYXR0ZXJuID0gJ14jIyc7CgogICAgIyBhbGxvdyB0aGUgdXNlciB0byBjaGFuZ2UgaXQKICAgIGlmICggJHJPcHRzLT57J3N0YXRpYy1zaWRlLWNvbW1lbnQtcHJlZml4J30gKSB7CiAgICAgICAgbXkgJHByZWZpeCA9ICRyT3B0cy0+eydzdGF0aWMtc2lkZS1jb21tZW50LXByZWZpeCd9OwogICAgICAgICRwcmVmaXggPX4gcy9eXHMqLy87CiAgICAgICAgbXkgJHBhdHRlcm4gPSAnXicgLiAkcHJlZml4OwogICAgICAgIGlmICggYmFkX3BhdHRlcm4oJHBhdHRlcm4pICkgewogICAgICAgICAgICBEaWUoCiJFUlJPUjogdGhlIC1zc2NwIHByZWZpeCAnJHByZWZpeCcgY2F1c2VzIHRoZSBpbnZhbGlkIHJlZ2V4ICckcGF0dGVybidcbiIKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgJHN0YXRpY19zaWRlX2NvbW1lbnRfcGF0dGVybiA9ICRwYXR0ZXJuOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgbWFrZV9jbG9zaW5nX3NpZGVfY29tbWVudF9wcmVmaXggewoKICAgICMgQmUgc3VyZSB3ZSBoYXZlIGEgdmFsaWQgY2xvc2luZyBzaWRlIGNvbW1lbnQgcHJlZml4CiAgICBteSAkY3NjX3ByZWZpeCA9ICRyT3B0cy0+eydjbG9zaW5nLXNpZGUtY29tbWVudC1wcmVmaXgnfTsKICAgIG15ICRjc2NfcHJlZml4X3BhdHRlcm47CiAgICBpZiAoICFkZWZpbmVkKCRjc2NfcHJlZml4KSApIHsKICAgICAgICAkY3NjX3ByZWZpeCAgICAgICAgID0gJyMjIGVuZCc7CiAgICAgICAgJGNzY19wcmVmaXhfcGF0dGVybiA9ICdeIyNccytlbmQnOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgbXkgJHRlc3RfY3NjX3ByZWZpeCA9ICRjc2NfcHJlZml4OwogICAgICAgIGlmICggJHRlc3RfY3NjX3ByZWZpeCAhfiAvXiMvICkgewogICAgICAgICAgICAkdGVzdF9jc2NfcHJlZml4ID0gJyMnIC4gJHRlc3RfY3NjX3ByZWZpeDsKICAgICAgICB9CgogICAgICAgICMgbWFrZSBhIHJlZ2V4IHRvIHJlY29nbml6ZSB0aGUgcHJlZml4CiAgICAgICAgbXkgJHRlc3RfY3NjX3ByZWZpeF9wYXR0ZXJuID0gJHRlc3RfY3NjX3ByZWZpeDsKCiAgICAgICAgIyBlc2NhcGUgYW55IHNwZWNpYWwgY2hhcmFjdGVycwogICAgICAgICR0ZXN0X2NzY19wcmVmaXhfcGF0dGVybiA9fiBzLyhbXiNcc1x3XSkvXFwkMS9nOwoKICAgICAgICAkdGVzdF9jc2NfcHJlZml4X3BhdHRlcm4gPSAnXicgLiAkdGVzdF9jc2NfcHJlZml4X3BhdHRlcm47CgogICAgICAgICMgYWxsb3cgZXhhY3QgbnVtYmVyIG9mIGludGVybWVkaWF0ZSBzcGFjZXMgdG8gdmFyeQogICAgICAgICR0ZXN0X2NzY19wcmVmaXhfcGF0dGVybiA9fiBzL1xzKy9cXHNcKy9nOwoKICAgICAgICAjIG1ha2Ugc3VyZSB3ZSBoYXZlIGEgZ29vZCBwYXR0ZXJuCiAgICAgICAgIyBpZiB3ZSBmYWlsIHRoaXMgd2UgcHJvYmFibHkgaGF2ZSBhbiBlcnJvciBpbiBlc2NhcGluZwogICAgICAgICMgY2hhcmFjdGVycy4KCiAgICAgICAgaWYgKCBiYWRfcGF0dGVybigkdGVzdF9jc2NfcHJlZml4X3BhdHRlcm4pICkgewoKICAgICAgICAgICAgIyBzaG91bGRuJ3QgaGFwcGVuLi5tdXN0IGhhdmUgc2NyZXdlZCB1cCBlc2NhcGluZywgYWJvdmUKICAgICAgICAgICAgcmVwb3J0X2RlZmluaXRlX2J1ZygpOwogICAgICAgICAgICBXYXJuKAoiUHJvZ3JhbSBFcnJvcjogdGhlIC1jc2NwIHByZWZpeCAnJGNzY19wcmVmaXgnIGNhdXNlZCB0aGUgaW52YWxpZCByZWdleCAnJGNzY19wcmVmaXhfcGF0dGVybidcbiIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMganVzdCB3YXJuIGFuZCBrZWVwIGdvaW5nIHdpdGggZGVmYXVsdHMKICAgICAgICAgICAgV2FybigiUGxlYXNlIGNvbnNpZGVyIHVzaW5nIGEgc2ltcGxlciAtY3NjcCBwcmVmaXhcbiIpOwogICAgICAgICAgICBXYXJuKCJVc2luZyBkZWZhdWx0IC1jc2NwIGluc3RlYWQ7IHBsZWFzZSBjaGVjayBvdXRwdXRcbiIpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJGNzY19wcmVmaXggICAgICAgICA9ICR0ZXN0X2NzY19wcmVmaXg7CiAgICAgICAgICAgICRjc2NfcHJlZml4X3BhdHRlcm4gPSAkdGVzdF9jc2NfcHJlZml4X3BhdHRlcm47CiAgICAgICAgfQogICAgfQogICAgJHJPcHRzLT57J2Nsb3Npbmctc2lkZS1jb21tZW50LXByZWZpeCd9ID0gJGNzY19wcmVmaXg7CiAgICAkY2xvc2luZ19zaWRlX2NvbW1lbnRfcHJlZml4X3BhdHRlcm4gPSAkY3NjX3ByZWZpeF9wYXR0ZXJuOwogICAgcmV0dXJuOwp9CgpzdWIgZHVtcF93YW50X2xlZnRfc3BhY2UgewogICAgbXkgJGZoID0gc2hpZnQ7CiAgICBsb2NhbCAkIiA9ICJcbiI7CiAgICBwcmludCAkZmggPDxFT007ClRoZXNlIHZhbHVlcyBhcmUgdGhlIG1haW4gY29udHJvbCBvZiB3aGl0ZXNwYWNlIHRvIHRoZSBsZWZ0IG9mIGEgdG9rZW4gdHlwZTsKVGhleSBtYXkgYmUgYWx0ZXJlZCB3aXRoIHRoZSAtd2xzIHBhcmFtZXRlci4KRm9yIGEgbGlzdCBvZiB0b2tlbiB0eXBlcywgdXNlIHBlcmx0aWR5IC0tZHVtcC10b2tlbi10eXBlcyAoLWR0dCkKIDEgbWVhbnMgdGhlIHRva2VuIHdhbnRzIGEgc3BhY2UgdG8gaXRzIGxlZnQKLTEgbWVhbnMgdGhlIHRva2VuIGRvZXMgbm90IHdhbnQgYSBzcGFjZSB0byBpdHMgbGVmdAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRU9NCiAgICBmb3JlYWNoIG15ICRrZXkgKCBzb3J0IGtleXMgJXdhbnRfbGVmdF9zcGFjZSApIHsKICAgICAgICBwcmludCAkZmggIiRrZXlcdCR3YW50X2xlZnRfc3BhY2V7JGtleX1cbiI7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBkdW1wX3dhbnRfcmlnaHRfc3BhY2UgewogICAgbXkgJGZoID0gc2hpZnQ7CiAgICBsb2NhbCAkIiA9ICJcbiI7CiAgICBwcmludCAkZmggPDxFT007ClRoZXNlIHZhbHVlcyBhcmUgdGhlIG1haW4gY29udHJvbCBvZiB3aGl0ZXNwYWNlIHRvIHRoZSByaWdodCBvZiBhIHRva2VuIHR5cGU7ClRoZXkgbWF5IGJlIGFsdGVyZWQgd2l0aCB0aGUgLXdycyBwYXJhbWV0ZXIuCkZvciBhIGxpc3Qgb2YgdG9rZW4gdHlwZXMsIHVzZSBwZXJsdGlkeSAtLWR1bXAtdG9rZW4tdHlwZXMgKC1kdHQpCiAxIG1lYW5zIHRoZSB0b2tlbiB3YW50cyBhIHNwYWNlIHRvIGl0cyByaWdodAotMSBtZWFucyB0aGUgdG9rZW4gZG9lcyBub3Qgd2FudCBhIHNwYWNlIHRvIGl0cyByaWdodAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRU9NCiAgICBmb3JlYWNoIG15ICRrZXkgKCBzb3J0IGtleXMgJXdhbnRfcmlnaHRfc3BhY2UgKSB7CiAgICAgICAgcHJpbnQgJGZoICIka2V5XHQkd2FudF9yaWdodF9zcGFjZXska2V5fVxuIjsKICAgIH0KICAgIHJldHVybjsKfQoKeyAgICAjIGJlZ2luIGlzX2Vzc2VudGlhbF93aGl0ZXNwYWNlCgogICAgbXkgJWlzX3NvcnRfZ3JlcF9tYXA7CiAgICBteSAlaXNfZm9yX2ZvcmVhY2g7CgogICAgQkVHSU4gewoKICAgICAgICBteSBAcTsKICAgICAgICBAcSA9IHF3KHNvcnQgZ3JlcCBtYXApOwogICAgICAgIEBpc19zb3J0X2dyZXBfbWFwe0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CgogICAgICAgIEBxID0gcXcoZm9yIGZvcmVhY2gpOwogICAgICAgIEBpc19mb3JfZm9yZWFjaHtAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgIH0KCiAgICBzdWIgaXNfZXNzZW50aWFsX3doaXRlc3BhY2UgewoKICAgICAgICAjIEVzc2VudGlhbCB3aGl0ZXNwYWNlIG1lYW5zIHdoaXRlc3BhY2Ugd2hpY2ggY2Fubm90IGJlIHNhZmVseSBkZWxldGVkCiAgICAgICAgIyB3aXRob3V0IHJpc2tpbmcgdGhlIGludHJvZHVjdGlvbiBvZiBhIHN5bnRheCBlcnJvci4KICAgICAgICAjIFdlIGFyZSBnaXZlbiB0aHJlZSB0b2tlbnMgYW5kIHRoZWlyIHR5cGVzOgogICAgICAgICMgKCR0b2tlbmwsICR0eXBlbCkgaXMgdGhlIHRva2VuIHRvIHRoZSBsZWZ0IG9mIHRoZSBzcGFjZSBpbiBxdWVzdGlvbgogICAgICAgICMgKCR0b2tlbnIsICR0eXBlcikgaXMgdGhlIHRva2VuIHRvIHRoZSByaWdodCBvZiB0aGUgc3BhY2UgaW4gcXVlc3Rpb24KICAgICAgICAjICgkdG9rZW5sbCwgJHR5cGVsbCkgaXMgcHJldmlvdXMgbm9uYmxhbmsgdG9rZW4gdG8gdGhlIGxlZnQgb2YgJHRva2VubAogICAgICAgICMKICAgICAgICAjIFRoaXMgaXMgYSBzbG93IHJvdXRpbmUgYnV0IGlzIG5vdCBuZWVkZWQgdG9vIG9mdGVuIGV4Y2VwdCB3aGVuIC1tYW5nbGUKICAgICAgICAjIGlzIHVzZWQuCiAgICAgICAgIwogICAgICAgICMgTm90ZTogVGhpcyByb3V0aW5lIHNob3VsZCBhbG1vc3QgbmV2ZXIgbmVlZCB0byBiZSBjaGFuZ2VkLiAgSXQgaXMKICAgICAgICAjIGZvciBhdm9pZGluZyBzeW50YXggcHJvYmxlbXMgcmF0aGVyIHRoYW4gZm9yIGZvcm1hdHRpbmcuCiAgICAgICAgbXkgKCAkdG9rZW5sbCwgJHR5cGVsbCwgJHRva2VubCwgJHR5cGVsLCAkdG9rZW5yLCAkdHlwZXIgKSA9IEBfOwoKICAgICAgICBteSAkcmVzdWx0ID0KCiAgICAgICAgICAjIG5ldmVyIGNvbWJpbmUgdHdvIGJhcmUgd29yZHMgb3IgbnVtYmVycwogICAgICAgICAgIyBleGFtcGxlczogIGFuZCA6Om9rKDEpCiAgICAgICAgICAjICAgICAgICAgICAgcmV0dXJuIDo6c3B3KC4uLikKICAgICAgICAgICMgICAgICAgICAgICBmb3IgYmxhOjpibGE6OiBhYmMKICAgICAgICAgICMgZXhhbXBsZSBpcyAiJW92ZXJsb2FkOjogYW5kIiBpbiBmaWxlcyBEdW1wdmFsdWUucG0gb3IgY29sb25idWcucGwKICAgICAgICAgICMgICAgICAgICAgICAkaW5wdXQgZXEicXVpdCIgdG8gbWFrZSAkaW5wdXRlcSJxdWl0IgogICAgICAgICAgIyAgICAgICAgICAgIG15ICRzaXplPS1zOjpTSU5LIGlmICRmaWxlOyAgPD09T0sgYnV0IHdlIHdvbid0IGRvIGl0CiAgICAgICAgICAjIGRvbid0IGpvaW4gc29tZXRoaW5nIGxpa2U6IGZvciBibGE6OmJsYTo6IGFiYwogICAgICAgICAgIyBleGFtcGxlIGlzICIlb3ZlcmxvYWQ6OiBhbmQiIGluIGZpbGVzIER1bXB2YWx1ZS5wbSBvciBjb2xvbmJ1Zy5wbAogICAgICAgICAgKCAgICAgICggJHRva2VubCA9fiAvKFtcJ1x3XXxcOlw6KSQvICYmICR0eXBlbCBuZSAnQ09SRTo6JyApCiAgICAgICAgICAgICAgJiYgKCAkdG9rZW5yID1+IC9eKFtcJ1x3XXxcOlw6KS8gKSApCgogICAgICAgICAgIyBkbyBub3QgY29tYmluZSBhIG51bWJlciB3aXRoIGEgY29uY2F0ZW5hdGlvbiBkb3QKICAgICAgICAgICMgZXhhbXBsZTogcG9tLmNhcHV0bzoKICAgICAgICAgICMgJHZ0MTAwX2NvbXBhdGlibGUgPyAiXGVbMDswSCIgOiAoJy0nIHggNzggLiAiXG4iKTsKICAgICAgICAgIHx8ICggKCAkdHlwZWwgZXEgJ24nICkgJiYgKCAkdG9rZW5yIGVxICcuJyApICkKICAgICAgICAgIHx8ICggKCAkdHlwZXIgZXEgJ24nICkgJiYgKCAkdG9rZW5sIGVxICcuJyApICkKCiAgICAgICAgICAjIGRvIG5vdCBqb2luIGEgbWludXMgd2l0aCBhIGJhcmUgd29yZCwgYmVjYXVzZSB5b3UgbWlnaHQgZm9ybQogICAgICAgICAgIyBhIGZpbGUgdGVzdCBvcGVyYXRvci4gIEV4YW1wbGUgZnJvbSBDb21wbGV4LnBtOgogICAgICAgICAgIyBpZiAoQ09SRTo6YWJzKCR6IC0gaSkgPCAkZXBzKTsgInotaSIgd291bGQgYmUgdGFrZW4gYXMgYSBmaWxlIHRlc3QuCiAgICAgICAgICB8fCAoICggJHRva2VubCBlcSAnLScgKSAmJiAoICR0b2tlbnIgPX4gL15bX0EtWmEtel0kLyApICkKCiAgICAgICAgICAjIGRvIG5vdCBqb2luIGEgYmFyZSB3b3JkIHdpdGggYSBtaW51cywgbGlrZSBiZXR3ZWVuICdTZW5kJyBhbmQKICAgICAgICAgICMgJy1yZWNpcGllbnRzJyBoZXJlIDw8c25pcHBldHMvc3BhY2UzLmluPj4KICAgICAgICAgICMgICBteSAkbXNnID0gbmV3IEZheDo6U2VuZAogICAgICAgICAgIyAgICAgLXJlY2lwaWVudHMgPT4gJHRvLAogICAgICAgICAgIyAgICAgLWRhdGEgPT4gJGRhdGE7CiAgICAgICAgICAjIFRoaXMgaXMgdGhlIHNhZmVzdCB0aGluZyB0byBkby4gSWYgd2UgaGFkIHRoZSB0b2tlbiB0byB0aGUgcmlnaHQgb2YKICAgICAgICAgICMgdGhlIG1pbnVzIHdlIGNvdWxkIGRvIGEgYmV0dGVyIGNoZWNrLgogICAgICAgICAgfHwgKCAoICR0b2tlbnIgZXEgJy0nICkgJiYgKCAkdHlwZWwgZXEgJ3cnICkgKQoKICAgICAgICAgICMgYW5kIHNvbWV0aGluZyBsaWtlIHRoaXMgY291bGQgYmVjb21lIGFtYmlndW91cyB3aXRob3V0IHNwYWNlCiAgICAgICAgICAjIGFmdGVyIHRoZSAnLSc6CiAgICAgICAgICAjICAgdXNlIGNvbnN0YW50IElJST0+MTsKICAgICAgICAgICMgICAkYSA9ICRiIC0gSUlJOwogICAgICAgICAgIyBhbmQgZXZlbiB0aGlzOgogICAgICAgICAgIyAgICRhID0gLSBJSUk7CiAgICAgICAgICB8fCAoICggJHRva2VubCBlcSAnLScgKQogICAgICAgICAgICAmJiAoICR0eXBlciA9fiAvXlt3Q10kLyAmJiAkdG9rZW5yID1+IC9eW19BLVphLXpdLyApICkKCiAgICAgICAgICAjICc9IC0nIHNob3VsZCBub3QgYmVjb21lID0tIG9yIHlvdSB3aWxsIGdldCBhIHdhcm5pbmcKICAgICAgICAgICMgYWJvdXQgcmV2ZXJzZWQgLT0KICAgICAgICAgICMgfHwgKCR0b2tlbnIgZXEgJy0nKQoKICAgICAgICAgICMga2VlcCBhIHNwYWNlIGJldHdlZW4gYSBxdW90ZSBhbmQgYSBiYXJld29yZCB0byBwcmV2ZW50IHRoZQogICAgICAgICAgIyBiYXJld29yZCBmcm9tIGJlY29taW5nIGEgcXVvdGUgbW9kaWZpZXIuCiAgICAgICAgICB8fCAoICggJHR5cGVsIGVxICdRJyApICYmICggJHRva2VuciA9fiAvXlthLXpBLVpfXS8gKSApCgogICAgICAgICAgIyBrZWVwIGEgc3BhY2UgYmV0d2VlbiBhIHRva2VuIGVuZGluZyBpbiAnJCcgYW5kIGFueSB3b3JkOwogICAgICAgICAgIyB0aGlzIGNhdXNlZCB0cm91YmxlOiAgImRpZSBAJCBpZiAkQCIKICAgICAgICAgIHx8ICggKCAkdHlwZWwgZXEgJ2knICYmICR0b2tlbmwgPX4gL1wkJC8gKQogICAgICAgICAgICAmJiAoICR0b2tlbnIgPX4gL15bYS16QS1aX10vICkgKQoKICAgICAgICAgICMgcGVybCBpcyB2ZXJ5IGZ1c3N5IGFib3V0IHNwYWNlcyBiZWZvcmUgPDwKICAgICAgICAgIHx8ICggJHRva2VuciA9fiAvXlw8XDwvICkKCiAgICAgICAgICAjIGF2b2lkIGNvbWJpbmluZyB0b2tlbnMgdG8gY3JlYXRlIG5ldyBtZWFuaW5ncy4gRXhhbXBsZToKICAgICAgICAgICMgICAgICRhKyArJGIgbXVzdCBub3QgYmVjb21lICRhKyskYgogICAgICAgICAgfHwgKCAkaXNfZGlncmFwaHsgJHRva2VubCAuICR0b2tlbnIgfSApCiAgICAgICAgICB8fCAoICRpc190cmlncmFwaHsgJHRva2VubCAuICR0b2tlbnIgfSApCgogICAgICAgICAgIyBhbm90aGVyIGV4YW1wbGU6IGRvIG5vdCBjb21iaW5lIHRoZXNlIHR3byAmJ3M6CiAgICAgICAgICAjICAgICBhbGxvd19vcHRpb25zICYgJk9QVF9FWEVDQ0dJCiAgICAgICAgICB8fCAoICRpc19kaWdyYXBoeyAkdG9rZW5sIC4gc3Vic3RyKCAkdG9rZW5yLCAwLCAxICkgfSApCgogICAgICAgICAgIyBkb24ndCBjb21iaW5lICQkIG9yICQjIHdpdGggYW55IGFscGhhbnVtZXJpYwogICAgICAgICAgIyAodGVzdGZpbGUgbWFuZ2xlLnQgd2l0aCAtLW1hbmdsZSkKICAgICAgICAgIHx8ICggKCAkdG9rZW5sID1+IC9eXCRbXCRcI10kLyApICYmICggJHRva2VuciA9fiAvXlx3LyApICkKCiAgICAgICAgICAjIHJldGFpbiBhbnkgc3BhY2UgYWZ0ZXIgcG9zc2libGUgZmlsZWhhbmRsZQogICAgICAgICAgIyAodGVzdGZpbGVzIHBybnRlcnIxLnQgd2l0aCAtLWV4dHJ1ZGUgYW5kIG1hbmdsZS50IHdpdGggLS1tYW5nbGUpCiAgICAgICAgICB8fCAoICR0eXBlbCBlcSAnWicgKQoKICAgICAgICAgICMgUGVybCBpcyBzZW5zaXRpdmUgdG8gd2hpdGVzcGFjZSBhZnRlciB0aGUgKyBoZXJlOgogICAgICAgICAgIyAgJGIgPSB4dmFscyAkYSArIDAuMSAqIHl2YWxzICRhOwogICAgICAgICAgfHwgKCAkdHlwZWxsIGVxICdaJyAmJiAkdHlwZWwgPX4gL15bXC9cP1wrXC1cKl0kLyApCgogICAgICAgICAgIyBrZWVwIHBhcmVuIHNlcGFyYXRlIGluICd1c2UgRm9vOjpCYXIgKCknCiAgICAgICAgICB8fCAoICR0b2tlbnIgZXEgJygnCiAgICAgICAgICAgICYmICR0eXBlbCBlcSAndycKICAgICAgICAgICAgJiYgJHR5cGVsbCBlcSAnaycKICAgICAgICAgICAgJiYgJHRva2VubGwgZXEgJ3VzZScgKQoKICAgICAgICAgICMga2VlcCBhbnkgc3BhY2UgYmV0d2VlbiBmaWxlaGFuZGxlIGFuZCBwYXJlbjoKICAgICAgICAgICMgZmlsZSBtYW5nbGUudCB3aXRoIC0tbWFuZ2xlOgogICAgICAgICAgfHwgKCAkdHlwZWwgZXEgJ1knICYmICR0b2tlbnIgZXEgJygnICkKCiAgICAgICAgICAjIHJldGFpbiBhbnkgc3BhY2UgYWZ0ZXIgaGVyZSBkb2Mgb3BlcmF0b3IgKCBoZXJlZXJyLnQpCiAgICAgICAgICB8fCAoICR0eXBlbCBlcSAnaCcgKQoKICAgICAgICAgICMgYmUgY2FyZWZ1bCB3aXRoIGEgc3BhY2UgYXJvdW5kICsrIGFuZCAtLSwgdG8gYXZvaWQgYW1iaWd1aXR5IGFzIHRvCiAgICAgICAgICAjIHdoaWNoIHRva2VuIGl0IGFwcGxpZXMKICAgICAgICAgIHx8ICggKCAkdHlwZXIgPX4gL14ocHB8bW0pJC8gKSAgICAgJiYgKCAkdG9rZW5sICF+IC9eW1w7XHtcKFxbXS8gKSApCiAgICAgICAgICB8fCAoICggJHR5cGVsID1+IC9eKFwrXCt8XC1cLSkkLyApICYmICggJHRva2VuciAhfiAvXltcO1x9XClcXV0vICkgKQoKICAgICAgICAgICMgbmVlZCBzcGFjZSBhZnRlciBmb3JlYWNoIG15OyBmb3IgZXhhbXBsZSwgdGhpcyB3aWxsIGZhaWwgaW4KICAgICAgICAgICMgb2xkZXIgdmVyc2lvbnMgb2YgUGVybDoKICAgICAgICAgICMgZm9yZWFjaCBteSRmdChAZmlsZXR5cGVzKS4uLgogICAgICAgICAgfHwgKAogICAgICAgICAgICAkdG9rZW5sIGVxICdteScKCiAgICAgICAgICAgICMgIC9eKGZvcnxmb3JlYWNoKSQvCiAgICAgICAgICAgICYmICRpc19mb3JfZm9yZWFjaHskdG9rZW5sbH0KICAgICAgICAgICAgJiYgJHRva2VuciA9fiAvXlwkLwogICAgICAgICAgKQoKICAgICAgICAgICMgbXVzdCBoYXZlIHNwYWNlIGJldHdlZW4gZ3JlcCBhbmQgbGVmdCBwYXJlbjsgImdyZXAoIiB3aWxsIGZhaWwKICAgICAgICAgIHx8ICggJHRva2VuciBlcSAnKCcgJiYgJGlzX3NvcnRfZ3JlcF9tYXB7JHRva2VubH0gKQoKICAgICAgICAgICMgZG9uJ3Qgc3RpY2sgbnVtYmVycyBuZXh0IHRvIGxlZnQgcGFyZW5zLCBhcyBpbjoKICAgICAgICAgICN1c2UgTWFpbDo6SW50ZXJuZXQgMS4yOCAoKTsgKHNlZSBFbnRpdHkucG0sIEhlYWQucG0sIFRlc3QucG0pCiAgICAgICAgICB8fCAoICggJHR5cGVsIGVxICduJyApICYmICggJHRva2VuciBlcSAnKCcgKSApCgogICAgICAgICAgIyBXZSBtdXN0IGJlIHN1cmUgdGhhdCBhIHNwYWNlIGJldHdlZW4gYSA/IGFuZCBhIHF1b3RlZCBzdHJpbmcKICAgICAgICAgICMgcmVtYWlucyBpZiB0aGUgc3BhY2UgYmVmb3JlIHRoZSA/IHJlbWFpbnMuICBbTG9jYS5wbSwgbG9ja2FyZWFdCiAgICAgICAgICAjIGllLAogICAgICAgICAgIyAgICAkYj1qb2luICRjb21tYSA/ICcsJyA6ICc6JywgQF87ICAjIG9rCiAgICAgICAgICAjICAgICRiPWpvaW4gJGNvbW1hPycsJyA6ICc6JywgQF87ICAgICMgb2shCiAgICAgICAgICAjICAgICRiPWpvaW4gJGNvbW1hID8nLCcgOiAnOicsIEBfOyAgICMgZXJyb3IhCiAgICAgICAgICAjIE5vdCByZWFsbHkgcmVxdWlyZWQ6CiAgICAgICAgICAjIyB8fCAoICggJHR5cGVsIGVxICc/JyApICYmICggJHR5cGVyIGVxICdRJyApICkKCiAgICAgICAgICAjIGRvIG5vdCByZW1vdmUgc3BhY2UgYmV0d2VlbiBhbiAnJicgYW5kIGEgYmFyZSB3b3JkIGJlY2F1c2UKICAgICAgICAgICMgaXQgbWF5IHR1cm4gaW50byBhIGZ1bmN0aW9uIGV2YWx1YXRpb24sIGxpa2UgaGVyZQogICAgICAgICAgIyBiZXR3ZWVuICcmJyBhbmQgJ09fQUNDTU9ERScsIHByb2R1Y2luZyBhIHN5bnRheCBlcnJvciBbRmlsZS5wbV0KICAgICAgICAgICMgICAgJG9wdHN7cmRvbmx5fSA9ICgoJG9wdHN7bW9kZX0gJiBPX0FDQ01PREUpID09IE9fUkRPTkxZKTsKICAgICAgICAgIHx8ICggKCAkdHlwZWwgZXEgJyYnICkgJiYgKCAkdG9rZW5yID1+IC9eW2EtekEtWl9dLyApICkKCiAgICAgICAgICAjIHNwYWNlIHN0YWNrZWQgbGFiZWxzICAoVE9ETzogY2hlY2sgaWYgcmVhbGx5IG5lY2Vzc2FyeSkKICAgICAgICAgIHx8ICggJHR5cGVsIGVxICdKJyAmJiAkdHlwZXIgZXEgJ0onICkKCiAgICAgICAgICA7ICAgICMgdGhlIHZhbHVlIG9mIHRoaXMgbG9uZyBsb2dpYyBzZXF1ZW5jZSBpcyB0aGUgcmVzdWx0IHdlIHdhbnQKIyNpZiAoJHR5cGVsIGVxICdqJykge3ByaW50IFNUREVSUiAidHlwZWw9JHR5cGVsIHR5cGVyPSR0eXBlciByZXN1bHQ9JyRyZXN1bHQnXG4ifQogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQp9Cgp7CiAgICBteSAlc2VjcmV0X29wZXJhdG9yczsKICAgIG15ICVpc19sZWFkaW5nX3NlY3JldF90b2tlbjsKCiAgICBCRUdJTiB7CgogICAgICAgICMgdG9rZW4gbGlzdHMgZm9yIHBlcmwgc2VjcmV0IG9wZXJhdG9ycyBhcyBjb21waWxlZCBieSBQaGlsaXBwZSBCcnVoYXQKICAgICAgICAjIGF0OiBodHRwczovL21ldGFjcGFuLm9yZy9tb2R1bGUvcGVybHNlY3JldAogICAgICAgICVzZWNyZXRfb3BlcmF0b3JzID0gKAogICAgICAgICAgICAnR29hdHNlJyAgICAgICAgICAgICA9PiBbcXcjPSAoICkgPSNdLCAgICAgICAgIz0oICk9CiAgICAgICAgICAgICdWZW51czEnICAgICAgICAgICAgID0+IFtxdyMwICsjXSwgICAgICAgICAgICAjIDArCiAgICAgICAgICAgICdWZW51czInICAgICAgICAgICAgID0+IFtxdyMrIDAjXSwgICAgICAgICAgICAjICswCiAgICAgICAgICAgICdFbnRlcnByaXNlJyAgICAgICAgID0+IFtxdyMpIHggISAhI10sICAgICAgICAjICgpeCEhCiAgICAgICAgICAgICdLaXRlMScgICAgICAgICAgICAgID0+IFtxdyN+IH4gPD4jXSwgICAgICAgICAjIH5+PD4KICAgICAgICAgICAgJ0tpdGUyJyAgICAgICAgICAgICAgPT4gW3F3I35+IDw+I10sICAgICAgICAgICMgfn48PgogICAgICAgICAgICAnV2lua2luZyBGYXQgQ29tbWEnICA9PiBbICggJywnLCAnPT4nICkgXSwgICAgIyAsPT4KICAgICAgICAgICAgJ0JhbmcgYmFuZyAgICAgICAgICcgPT4gW3F3IyEgISNdLCAgICAgICAgICAgICMgISEKICAgICAgICApOwoKICAgICAgICAjIFRoZSBmb2xsb3dpbmcgb3BlcmF0b3JzIGFuZCBjb25zdGFudHMgYXJlIG5vdCBpbmNsdWRlZCBiZWNhdXNlIHRoZXkKICAgICAgICAjIGFyZSBub3JtYWxseSBrZXB0IHRpZ2h0IGJ5IHBlcmx0aWR5OgogICAgICAgICMgfn4gPH4+CiAgICAgICAgIwoKICAgICAgICAjIE1ha2UgYSBsb29rdXAgdGFibGUgaW5kZXhlZCBieSB0aGUgZmlyc3QgdG9rZW4gb2YgZWFjaCBvcGVyYXRvcjoKICAgICAgICAjIGZpcnN0IHRva2VuID0+IFtsaXN0LCBsaXN0LCAuLi5dCiAgICAgICAgZm9yZWFjaCBteSAkdmFsdWUgKCB2YWx1ZXMoJXNlY3JldF9vcGVyYXRvcnMpICkgewogICAgICAgICAgICBteSAkdG9rID0gJHZhbHVlLT5bMF07CiAgICAgICAgICAgIHB1c2ggQHsgJGlzX2xlYWRpbmdfc2VjcmV0X3Rva2VueyR0b2t9IH0sICR2YWx1ZTsKICAgICAgICB9CiAgICB9CgogICAgc3ViIG5ld19zZWNyZXRfb3BlcmF0b3Jfd2hpdGVzcGFjZSB7CgogICAgICAgIG15ICggJHJsb25nX2FycmF5LCAkcndoaXRlc3BhY2VfZmxhZ3MgKSA9IEBfOwoKICAgICAgICAjIExvb3Agb3ZlciBhbGwgdG9rZW5zIGluIHRoaXMgbGluZQogICAgICAgIG15ICggJHRva2VuLCAkdHlwZSApOwogICAgICAgIG15ICRqbWF4ID0gQHskcmxvbmdfYXJyYXl9IC0gMTsKICAgICAgICBmb3JlYWNoIG15ICRqICggMCAuLiAkam1heCApIHsKCiAgICAgICAgICAgICR0b2tlbiA9ICRybG9uZ19hcnJheS0+WyRqXS0+W19UT0tFTl9dOwogICAgICAgICAgICAkdHlwZSAgPSAkcmxvbmdfYXJyYXktPlskal0tPltfVFlQRV9dOwoKICAgICAgICAgICAgIyBTa2lwIHVubGVzcyB0aGlzIHRva2VuIG1pZ2h0IHN0YXJ0IGEgc2VjcmV0IG9wZXJhdG9yCiAgICAgICAgICAgIG5leHQgaWYgKCAkdHlwZSBlcSAnYicgKTsKICAgICAgICAgICAgbmV4dCB1bmxlc3MgKCAkaXNfbGVhZGluZ19zZWNyZXRfdG9rZW57JHRva2VufSApOwoKICAgICAgICAgICAgIyAgICAgIExvb3Agb3ZlciBhbGwgc2VjcmV0IG9wZXJhdG9ycyB3aXRoIHRoaXMgbGVhZGluZyB0b2tlbgogICAgICAgICAgICBmb3JlYWNoIG15ICRycGF0dGVybiAoIEB7ICRpc19sZWFkaW5nX3NlY3JldF90b2tlbnskdG9rZW59IH0gKSB7CiAgICAgICAgICAgICAgICBteSAkamVuZCA9ICRqIC0gMTsKICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJHRvayAoIEB7JHJwYXR0ZXJufSApIHsKICAgICAgICAgICAgICAgICAgICAkamVuZCsrOwogICAgICAgICAgICAgICAgICAgICRqZW5kKysKCiAgICAgICAgICAgICAgICAgICAgICBpZiAoICRqZW5kIDw9ICRqbWF4CiAgICAgICAgICAgICAgICAgICAgICAgICYmICRybG9uZ19hcnJheS0+WyRqZW5kXS0+W19UWVBFX10gZXEgJ2InICk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAgICRqZW5kID4gJGptYXgKICAgICAgICAgICAgICAgICAgICAgICAgfHwgJHRvayBuZSAkcmxvbmdfYXJyYXktPlskamVuZF0tPltfVE9LRU5fXSApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkamVuZCA9IHVuZGVmOwogICAgICAgICAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJGplbmQpIHsKCiAgICAgICAgICAgICAgICAgICAgIyBzZXQgZmxhZ3MgdG8gcHJldmVudCBzcGFjZXMgd2l0aGluIHRoaXMgb3BlcmF0b3IKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRqaiAoICRqICsgMSAuLiAkamVuZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHJ3aGl0ZXNwYWNlX2ZsYWdzLT5bJGpqXSA9IFdTX05POwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkaiA9ICRqZW5kOwogICAgICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gICAgIyMgICAgICBFbmQgTG9vcCBvdmVyIGFsbCBvcGVyYXRvcnMKICAgICAgICB9ICAgICMjIEVuZCBsb29wIG92ZXIgYWxsIHRva2VucwogICAgICAgIHJldHVybjsKICAgIH0gICAgIyBFbmQgc3ViCn0KCnsgICAgICAgICMgYmVnaW4gcHJpbnRfbGluZV9vZl90b2tlbnMKCiAgICBteSAkcmlucHV0X3Rva2VuX2FycmF5OyAgICAjIEN1cnJlbnQgd29ya2luZyBhcnJheQogICAgbXkgJHJpbnB1dF9LX2FycmF5OyAgICAgICAgIyBGdXR1cmUgd29ya2luZyBhcnJheQoKICAgIG15ICRpbl9xdW90ZTsKICAgIG15ICRndWVzc2VkX2luZGVudGF0aW9uX2xldmVsOwoKICAgICMgVGhpcyBzaG91bGQgYmUgYSByZXR1cm4gdmFyaWFibGUgZnJvbSBleHRyYWN0X3Rva2VuCiAgICAjIFRoZXNlIGxvY2FsIHRva2VuIHZhcmlhYmxlcyBhcmUgc3RvcmVkIGJ5IHN0b3JlX3Rva2VuX3RvX2dvOgogICAgbXkgJEt0b2tlbl92YXJzOwogICAgbXkgJGJsb2NrX3R5cGU7CiAgICBteSAkY2lfbGV2ZWw7CiAgICBteSAkY29udGFpbmVyX2Vudmlyb25tZW50OwogICAgbXkgJGNvbnRhaW5lcl90eXBlOwogICAgbXkgJGluX2NvbnRpbnVlZF9xdW90ZTsKICAgIG15ICRsZXZlbDsKICAgIG15ICRub19pbnRlcm5hbF9uZXdsaW5lczsKICAgIG15ICRzbGV2ZWw7CiAgICBteSAkdG9rZW47CiAgICBteSAkdHlwZTsKICAgIG15ICR0eXBlX3NlcXVlbmNlOwoKICAgICMgcm91dGluZSB0byBwdWxsIHRoZSBqdGggdG9rZW4gZnJvbSB0aGUgbGluZSBvZiB0b2tlbnMKICAgIHN1YiBleHRyYWN0X3Rva2VuIHsKICAgICAgICBteSAoICRzZWxmLCAkaiApID0gQF87CgogICAgICAgIG15ICRyTEwgPSAkc2VsZi0+e3JMTH07CiAgICAgICAgJEt0b2tlbl92YXJzID0gJHJpbnB1dF9LX2FycmF5LT5bJGpdOwogICAgICAgIGlmICggIWRlZmluZWQoJEt0b2tlbl92YXJzKSApIHsKCiAgICAgICAjIFNob3VsZG4ndCBoYXBwZW46IGFuIGVycm9yIGhlcmUgd291bGQgYmUgZHVlIHRvIGEgcmVjZW50IHByb2dyYW0gY2hhbmdlCiAgICAgICAgICAgIEZhdWx0KCJ1bmRlZmluZWQgaW5kZXggSyBmb3Igaj0kaiIpOwogICAgICAgIH0KICAgICAgICBteSAkcnRva2VuX3ZhcnMgPSAkckxMLT5bJEt0b2tlbl92YXJzXTsKCiAgICAgICAgaWYgKCAkcnRva2VuX3ZhcnMtPltfVE9LRU5fXSBuZSAkckxMLT5bJEt0b2tlbl92YXJzXS0+W19UT0tFTl9dICkgewoKICAgICAgICMgU2hvdWxkbid0IGhhcHBlbjogYW4gZXJyb3IgaGVyZSB3b3VsZCBiZSBkdWUgdG8gYSByZWNlbnQgcHJvZ3JhbSBjaGFuZ2UKICAgICAgICAgICAgRmF1bHQoPDxFT00pOwogaj0kaiwgSz0kS3Rva2VuX3ZhcnMsICckcnRva2VuX3ZhcnMtPltfVE9LRU5fXScgbmUgJyRyTEwtPlskS3Rva2VuX3ZhcnNdJwpFT00KICAgICAgICB9CgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgdGhlc2UgYXJlIG5vdyByZWR1bmRhbnQgYW5kIGNhbiBldmVudHVhbGx5IGJlIGVsaW1pbmF0ZWQKCiAgICAgICAgJHRva2VuICAgICAgICAgICAgICAgICA9ICRydG9rZW5fdmFycy0+W19UT0tFTl9dOwogICAgICAgICR0eXBlICAgICAgICAgICAgICAgICAgPSAkcnRva2VuX3ZhcnMtPltfVFlQRV9dOwogICAgICAgICRibG9ja190eXBlICAgICAgICAgICAgPSAkcnRva2VuX3ZhcnMtPltfQkxPQ0tfVFlQRV9dOwogICAgICAgICRjb250YWluZXJfdHlwZSAgICAgICAgPSAkcnRva2VuX3ZhcnMtPltfQ09OVEFJTkVSX1RZUEVfXTsKICAgICAgICAkY29udGFpbmVyX2Vudmlyb25tZW50ID0gJHJ0b2tlbl92YXJzLT5bX0NPTlRBSU5FUl9FTlZJUk9OTUVOVF9dOwogICAgICAgICR0eXBlX3NlcXVlbmNlICAgICAgICAgPSAkcnRva2VuX3ZhcnMtPltfVFlQRV9TRVFVRU5DRV9dOwogICAgICAgICRsZXZlbCAgICAgICAgICAgICAgICAgPSAkcnRva2VuX3ZhcnMtPltfTEVWRUxfXTsKICAgICAgICAkc2xldmVsICAgICAgICAgICAgICAgID0gJHJ0b2tlbl92YXJzLT5bX1NMRVZFTF9dOwogICAgICAgICRjaV9sZXZlbCAgICAgICAgICAgICAgPSAkcnRva2VuX3ZhcnMtPltfQ0lfTEVWRUxfXTsKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHsKICAgICAgICBteSBAc2F2ZWRfdG9rZW47CgogICAgICAgIHN1YiBzYXZlX2N1cnJlbnRfdG9rZW4gewoKICAgICAgICAgICAgQHNhdmVkX3Rva2VuID0gKAogICAgICAgICAgICAgICAgJGJsb2NrX3R5cGUsICAgICAgICAgICAgJGNpX2xldmVsLAogICAgICAgICAgICAgICAgJGNvbnRhaW5lcl9lbnZpcm9ubWVudCwgJGNvbnRhaW5lcl90eXBlLAogICAgICAgICAgICAgICAgJGluX2NvbnRpbnVlZF9xdW90ZSwgICAgJGxldmVsLAogICAgICAgICAgICAgICAgJG5vX2ludGVybmFsX25ld2xpbmVzLCAgJHNsZXZlbCwKICAgICAgICAgICAgICAgICR0b2tlbiwgICAgICAgICAgICAgICAgICR0eXBlLAogICAgICAgICAgICAgICAgJHR5cGVfc2VxdWVuY2UsICAgICAgICAgJEt0b2tlbl92YXJzLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBzdWIgcmVzdG9yZV9jdXJyZW50X3Rva2VuIHsKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgJGJsb2NrX3R5cGUsICAgICAgICAgICAgJGNpX2xldmVsLAogICAgICAgICAgICAgICAgJGNvbnRhaW5lcl9lbnZpcm9ubWVudCwgJGNvbnRhaW5lcl90eXBlLAogICAgICAgICAgICAgICAgJGluX2NvbnRpbnVlZF9xdW90ZSwgICAgJGxldmVsLAogICAgICAgICAgICAgICAgJG5vX2ludGVybmFsX25ld2xpbmVzLCAgJHNsZXZlbCwKICAgICAgICAgICAgICAgICR0b2tlbiwgICAgICAgICAgICAgICAgICR0eXBlLAogICAgICAgICAgICAgICAgJHR5cGVfc2VxdWVuY2UsICAgICAgICAgJEt0b2tlbl92YXJzLAogICAgICAgICAgICApID0gQHNhdmVkX3Rva2VuOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHN1YiB0b2tlbl9sZW5ndGggewoKICAgICAgICAjIFJldHVybnMgdGhlIGxlbmd0aCBvZiBhIHRva2VuLCBnaXZlbjoKICAgICAgICAjICAkdG9rZW49dGV4dCBvZiB0aGUgdG9rZW4KICAgICAgICAjICAkdHlwZSA9IHR5cGUKICAgICAgICAjICAkbm90X2ZpcnN0X3Rva2VuID0gc2hvdWxkIGJlIFRSVUUgaWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IHRva2VuIG9mCiAgICAgICAgIyAgIHRoZSBsaW5lLiAgSXQgbWlnaHQgdGhlIGluZGV4IG9mIHRoaXMgdG9rZW4gaW4gYW4gYXJyYXkuICBJdCBpcwogICAgICAgICMgICB1c2VkIHRvIHRlc3QgZm9yIGEgc2lkZSBjb21tZW50IHZzIGEgYmxvY2sgY29tbWVudC4KICAgICAgICAjIE5vdGU6IEV2ZW50dWFsbHkgdGhpcyBzaG91bGQgYmUgdGhlIG9ubHkgcm91dGluZSBkZXRlcm1pbmluZyB0aGUKICAgICAgICAjIGxlbmd0aCBvZiBhIHRva2VuIGluIHRoaXMgcGFja2FnZS4KICAgICAgICBteSAoICR0b2tlbiwgJHR5cGUsICRub3RfZmlyc3RfdG9rZW4gKSA9IEBfOwogICAgICAgIG15ICR0b2tlbl9sZW5ndGggPSBsZW5ndGgoJHRva2VuKTsKCiAgICAgICAgIyBXZSBtYXJrIGxlbmd0aHMgb2Ygc2lkZSBjb21tZW50cyBhcyBqdXN0IDEgaWYgd2UgYXJlCiAgICAgICAgIyBpZ25vcmluZyB0aGVpciBsZW5ndGhzIHdoZW4gc2V0dGluZyBsaW5lIGJyZWFrcy4KICAgICAgICAkdG9rZW5fbGVuZ3RoID0gMQogICAgICAgICAgaWYgKCAkck9wdHNfaWdub3JlX3NpZGVfY29tbWVudF9sZW5ndGhzCiAgICAgICAgICAgICYmICRub3RfZmlyc3RfdG9rZW4KICAgICAgICAgICAgJiYgJHR5cGUgZXEgJyMnICk7CiAgICAgICAgcmV0dXJuICR0b2tlbl9sZW5ndGg7CiAgICB9CgogICAgc3ViIHJ0b2tlbl9sZW5ndGggewoKICAgICAgICAjIHJldHVybiBsZW5ndGggb2YgaXRoIHRva2VuIGluIEB7JHJ0b2tlbnN9CiAgICAgICAgbXkgKCRpKSA9IEBfOwogICAgICAgIHJldHVybiB0b2tlbl9sZW5ndGgoICRyaW5wdXRfdG9rZW5fYXJyYXktPlskaV0tPltfVE9LRU5fXSwKICAgICAgICAgICAgJHJpbnB1dF90b2tlbl9hcnJheS0+WyRpXS0+W19UWVBFX10sICRpICk7CiAgICB9CgogICAgIyBSb3V0aW5lIHRvIHBsYWNlIHRoZSBjdXJyZW50IHRva2VuIGludG8gdGhlIG91dHB1dCBzdHJlYW0uCiAgICAjIENhbGxlZCBvbmNlIHBlciBvdXRwdXQgdG9rZW4uCiAgICBzdWIgc3RvcmVfdG9rZW5fdG9fZ28gewoKICAgICAgICBteSAoICRzZWxmLCAkc2lkZV9jb21tZW50X2ZvbGxvd3MgKSA9IEBfOwoKICAgICAgICBteSAkZmxhZyA9ICRzaWRlX2NvbW1lbnRfZm9sbG93cyA/IDEgOiAkbm9faW50ZXJuYWxfbmV3bGluZXM7CgogICAgICAgICsrJG1heF9pbmRleF90b19nbzsKICAgICAgICAkS190b19nb1skbWF4X2luZGV4X3RvX2dvXSAgICAgICAgICAgICAgICAgICAgID0gJEt0b2tlbl92YXJzOwogICAgICAgICR0b2tlbnNfdG9fZ29bJG1heF9pbmRleF90b19nb10gICAgICAgICAgICAgICAgPSAkdG9rZW47CiAgICAgICAgJHR5cGVzX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dICAgICAgICAgICAgICAgICA9ICR0eXBlOwogICAgICAgICRub2JyZWFrX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dICAgICAgICAgICAgICAgPSAkZmxhZzsKICAgICAgICAkb2xkX2JyZWFrcG9pbnRfdG9fZ29bJG1heF9pbmRleF90b19nb10gICAgICAgID0gMDsKICAgICAgICAkZm9yY2VkX2JyZWFrcG9pbnRfdG9fZ29bJG1heF9pbmRleF90b19nb10gICAgID0gMDsKICAgICAgICAkYmxvY2tfdHlwZV90b19nb1skbWF4X2luZGV4X3RvX2dvXSAgICAgICAgICAgID0gJGJsb2NrX3R5cGU7CiAgICAgICAgJHR5cGVfc2VxdWVuY2VfdG9fZ29bJG1heF9pbmRleF90b19nb10gICAgICAgICA9ICR0eXBlX3NlcXVlbmNlOwogICAgICAgICRjb250YWluZXJfZW52aXJvbm1lbnRfdG9fZ29bJG1heF9pbmRleF90b19nb10gPSAkY29udGFpbmVyX2Vudmlyb25tZW50OwogICAgICAgICRjaV9sZXZlbHNfdG9fZ29bJG1heF9pbmRleF90b19nb10gICAgICAgICAgICAgPSAkY2lfbGV2ZWw7CiAgICAgICAgJG1hdGVfaW5kZXhfdG9fZ29bJG1heF9pbmRleF90b19nb10gICAgICAgICAgICA9IC0xOwogICAgICAgICRtYXRjaGluZ190b2tlbl90b19nb1skbWF4X2luZGV4X3RvX2dvXSAgICAgICAgPSAnJzsKICAgICAgICAkYm9uZF9zdHJlbmd0aF90b19nb1skbWF4X2luZGV4X3RvX2dvXSAgICAgICAgID0gMDsKCiAgICAgICAgIyBOb3RlOiBuZWdhdGl2ZSBsZXZlbHMgYXJlIGN1cnJlbnRseSByZXRhaW5lZCBhcyBhIGRpYWdub3N0aWMgc28gdGhhdAogICAgICAgICMgdGhlICdmaW5hbCBpbmRlbnRhdGlvbiBsZXZlbCcgaXMgY29ycmVjdGx5IHJlcG9ydGVkIGZvciBiYWQgc2NyaXB0cy4KICAgICAgICAjIEJ1dCB0aGlzIG1lYW5zIHRoYXQgZXZlcnkgdXNlIG9mICRsZXZlbCBhcyBhbiBpbmRleCBtdXN0IGJlIGNoZWNrZWQuCiAgICAgICAgIyBJZiB0aGlzIGJlY29tZXMgdG9vIG11Y2ggb2YgYSBwcm9ibGVtLCB3ZSBtaWdodCBnaXZlIHVwIGFuZCBqdXN0IGNsaXAKICAgICAgICAjIHRoZW0gYXQgemVyby4KICAgICAgICAjIyAkbGV2ZWxzX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dID0gKCAkbGV2ZWwgPiAwICkgPyAkbGV2ZWwgOiAwOwogICAgICAgICRsZXZlbHNfdG9fZ29bJG1heF9pbmRleF90b19nb10gICAgICAgID0gJGxldmVsOwogICAgICAgICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dID0gKCAkc2xldmVsID49IDAgKSA/ICRzbGV2ZWwgOiAwOwoKICAgICAgICAjIGxpbmsgdGhlIG5vbi1ibGFuayB0b2tlbnMKICAgICAgICBteSAkaXByZXYgPSAkbWF4X2luZGV4X3RvX2dvIC0gMTsKICAgICAgICAkaXByZXYtLSBpZiAoICRpcHJldiA+PSAwICYmICR0eXBlc190b19nb1skaXByZXZdIGVxICdiJyApOwogICAgICAgICRpcHJldl90b19nb1skbWF4X2luZGV4X3RvX2dvXSA9ICRpcHJldjsKICAgICAgICAkaW5leHRfdG9fZ29bJGlwcmV2XSAgICAgICAgICAgPSAkbWF4X2luZGV4X3RvX2dvCiAgICAgICAgICBpZiAoICRpcHJldiA+PSAwICYmICR0eXBlIG5lICdiJyApOwogICAgICAgICRpbmV4dF90b19nb1skbWF4X2luZGV4X3RvX2dvXSA9ICRtYXhfaW5kZXhfdG9fZ28gKyAxOwoKICAgICAgICAkdG9rZW5fbGVuZ3Roc190b19nb1skbWF4X2luZGV4X3RvX2dvXSA9CiAgICAgICAgICB0b2tlbl9sZW5ndGgoICR0b2tlbiwgJHR5cGUsICRtYXhfaW5kZXhfdG9fZ28gKTsKCiAgICAgICAgIyBXZSBrZWVwIGEgcnVubmluZyBzdW0gb2YgdG9rZW4gbGVuZ3RocyBmcm9tIHRoZSBzdGFydCBvZiB0aGlzIGJhdGNoOgogICAgICAgICMgICBzdW1tZWRfbGVuZ3Roc190b19nb1skaV0gICA9IHRvdGFsIGxlbmd0aCB0byBqdXN0IGJlZm9yZSB0b2tlbiAkaQogICAgICAgICMgICBzdW1tZWRfbGVuZ3Roc190b19nb1skaSsxXSA9IHRvdGFsIGxlbmd0aCB0byBqdXN0IGFmdGVyIHRva2VuICRpCiAgICAgICAgJHN1bW1lZF9sZW5ndGhzX3RvX2dvWyAkbWF4X2luZGV4X3RvX2dvICsgMSBdID0KICAgICAgICAgICRzdW1tZWRfbGVuZ3Roc190b19nb1skbWF4X2luZGV4X3RvX2dvXSArCiAgICAgICAgICAkdG9rZW5fbGVuZ3Roc190b19nb1skbWF4X2luZGV4X3RvX2dvXTsKCiAgICAgICAgIyBEZWZpbmUgdGhlIGluZGVudGF0aW9uIHRoYXQgdGhpcyB0b2tlbiB3b3VsZCBoYXZlIGlmIGl0IHN0YXJ0ZWQKICAgICAgICAjIGEgbmV3IGxpbmUuICBXZSBoYXZlIHRvIGRvIHRoaXMgbm93IGJlY2F1c2Ugd2UgbmVlZCB0byBrbm93IHRoaXMKICAgICAgICAjIHdoZW4gY29uc2lkZXJpbmcgb25lLWxpbmUgYmxvY2tzLgogICAgICAgIHNldF9sZWFkaW5nX3doaXRlc3BhY2UoICRsZXZlbCwgJGNpX2xldmVsLCAkaW5fY29udGludWVkX3F1b3RlICk7CgogICAgICAgICMgcmVtZW1iZXIgcHJldmlvdXMgbm9uYmxhbmsgdG9rZW5zIHNlZW4KICAgICAgICBpZiAoICR0eXBlIG5lICdiJyApIHsKICAgICAgICAgICAgJGxhc3RfbGFzdF9ub25ibGFua19pbmRleF90b19nbyA9ICRsYXN0X25vbmJsYW5rX2luZGV4X3RvX2dvOwogICAgICAgICAgICAkbGFzdF9sYXN0X25vbmJsYW5rX3R5cGVfdG9fZ28gID0gJGxhc3Rfbm9uYmxhbmtfdHlwZV90b19nbzsKICAgICAgICAgICAgJGxhc3RfbGFzdF9ub25ibGFua190b2tlbl90b19nbyA9ICRsYXN0X25vbmJsYW5rX3Rva2VuX3RvX2dvOwogICAgICAgICAgICAkbGFzdF9ub25ibGFua19pbmRleF90b19nbyAgICAgID0gJG1heF9pbmRleF90b19nbzsKICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfdHlwZV90b19nbyAgICAgICA9ICR0eXBlOwogICAgICAgICAgICAkbGFzdF9ub25ibGFua190b2tlbl90b19nbyAgICAgID0gJHRva2VuOwogICAgICAgICAgICBpZiAoICR0eXBlIGVxICcsJyApIHsKICAgICAgICAgICAgICAgICRjb21tYV9jb3VudF9pbl9iYXRjaCsrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBGT1JNQVRURVJfREVCVUdfRkxBR19TVE9SRSAmJiBkbyB7CiAgICAgICAgICAgIG15ICggJGEsICRiLCAkYyApID0gY2FsbGVyKCk7CiAgICAgICAgICAgIHByaW50IFNURE9VVAoiU1RPUkU6IGZyb20gJGEgJGM6IHN0b3JpbmcgdG9rZW4gJHRva2VuIHR5cGUgJHR5cGUgbGV2PSRsZXZlbCBzbGV2PSRzbGV2ZWwgYXQgJG1heF9pbmRleF90b19nb1xuIjsKICAgICAgICB9OwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgaW5zZXJ0X25ld190b2tlbl90b19nbyB7CgogICAgICAgICMgaW5zZXJ0IGEgbmV3IHRva2VuIGludG8gdGhlIG91dHB1dCBzdHJlYW0uICB1c2Ugc2FtZSBsZXZlbCBhcwogICAgICAgICMgcHJldmlvdXMgdG9rZW47IGFzc3VtZXMgYSBjaGFyYWN0ZXIgYXQgbWF4X2luZGV4X3RvX2dvLgogICAgICAgIG15ICggJHNlbGYsIEBhcmdzICkgPSBAXzsKICAgICAgICBzYXZlX2N1cnJlbnRfdG9rZW4oKTsKICAgICAgICAoICR0b2tlbiwgJHR5cGUsICRzbGV2ZWwsICRub19pbnRlcm5hbF9uZXdsaW5lcyApID0gQGFyZ3M7CgogICAgICAgIGlmICggJG1heF9pbmRleF90b19nbyA9PSBVTkRFRklORURfSU5ERVggKSB7CiAgICAgICAgICAgIHdhcm5pbmcoImNvZGUgYnVnOiBiYWQgY2FsbCB0byBpbnNlcnRfbmV3X3Rva2VuX3RvX2dvXG4iKTsKICAgICAgICB9CiAgICAgICAgJGxldmVsID0gJGxldmVsc190b19nb1skbWF4X2luZGV4X3RvX2dvXTsKCiAgICAgICAgIyBGSVhNRTogaXQgc2VlbXMgdG8gYmUgbmVjZXNzYXJ5IHRvIHVzZSB0aGUgbmV4dCwgcmF0aGVyIHRoYW4KICAgICAgICAjIHByZXZpb3VzLCB2YWx1ZSBvZiB0aGlzIHZhcmlhYmxlIHdoZW4gY3JlYXRpbmcgYSBuZXcgYmxhbmsgKGFsaWduLnQpCiAgICAgICAgI215ICRzbGV2ZWwgICAgICAgICA9ICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dOwogICAgICAgICRjaV9sZXZlbCAgICAgICAgICAgICAgPSAkY2lfbGV2ZWxzX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dOwogICAgICAgICRjb250YWluZXJfZW52aXJvbm1lbnQgPSAkY29udGFpbmVyX2Vudmlyb25tZW50X3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dOwogICAgICAgICRpbl9jb250aW51ZWRfcXVvdGUgICAgPSAwOwogICAgICAgICRibG9ja190eXBlICAgICAgICAgICAgPSAiIjsKICAgICAgICAkdHlwZV9zZXF1ZW5jZSAgICAgICAgID0gIiI7CgogICAgICAgICMgc3RvcmUgYW4gdW5kZWYgZm9yIHRoZSBLIHZhbHVlIHRvIGNhdGNoIHVuZXhwZWN0ZWQgdXNhZ2UKICAgICAgICAjIFRoaXMgcm91dGluZSBpcyBvbmx5IGNhbGxlZCBieSBhZGRfY2xvc2luZ19zaWRlX2NvbW1lbnRzLCBhbmQKICAgICAgICAjIGV2ZW50dWFsbHkgdGhhdCBjYWxsIHdpbGwgYmUgZWxpbWluYXRlZC4KICAgICAgICAkS3Rva2VuX3ZhcnMgPSB1bmRlZjsKCiAgICAgICAgJHNlbGYtPnN0b3JlX3Rva2VuX3RvX2dvKCk7CiAgICAgICAgcmVzdG9yZV9jdXJyZW50X3Rva2VuKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBjb3B5X2hhc2ggewogICAgICAgIG15ICgkcm9sZF90b2tlbl9oYXNoKSA9IEBfOwogICAgICAgIG15ICVuZXdfdG9rZW5faGFzaCA9CiAgICAgICAgICBtYXAgeyAoICRfLCAkcm9sZF90b2tlbl9oYXNoLT57JF99ICkgfSBrZXlzICV7JHJvbGRfdG9rZW5faGFzaH07CiAgICAgICAgcmV0dXJuIFwlbmV3X3Rva2VuX2hhc2g7CiAgICB9CgogICAgc3ViIGNvcHlfYXJyYXkgewogICAgICAgIG15ICgkcm9sZCkgPSBAXzsKICAgICAgICBteSBAbmV3ID0gbWFwIHsgJF8gfSBAeyRyb2xkfTsKICAgICAgICByZXR1cm4gXEBuZXc7CiAgICB9CgogICAgc3ViIGNvcHlfdG9rZW5fYXNfdHlwZSB7CiAgICAgICAgbXkgKCAkcm9sZF90b2tlbiwgJHR5cGUsICR0b2tlbiApID0gQF87CiAgICAgICAgaWYgKCAkdHlwZSBlcSAnYicgKSB7CiAgICAgICAgICAgICR0b2tlbiA9ICIgIiB1bmxlc3MgZGVmaW5lZCgkdG9rZW4pOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICR0eXBlIGVxICdxJyApIHsKICAgICAgICAgICAgJHRva2VuID0gJycgdW5sZXNzIGRlZmluZWQoJHRva2VuKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkdHlwZSBlcSAnLT4nICkgewogICAgICAgICAgICAkdG9rZW4gPSAnLT4nIHVubGVzcyBkZWZpbmVkKCR0b2tlbik7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJHR5cGUgZXEgJzsnICkgewogICAgICAgICAgICAkdG9rZW4gPSAnOycgdW5sZXNzIGRlZmluZWQoJHRva2VuKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIEZhdWx0KAoiUHJvZ3JhbW1pbmcgZXJyb3I6IGNvcHlfdG9rZW5fYXMgaGFzIHR5cGUgJHR5cGUgYnV0IHNob3VsZCBiZSAnYicgb3IgJ3EnIgogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBteSAkcm5ld190b2tlbiA9IGNvcHlfYXJyYXkoJHJvbGRfdG9rZW4pOwogICAgICAgICRybmV3X3Rva2VuLT5bX1RZUEVfXSAgICAgICAgICAgICAgICAgID0gJHR5cGU7CiAgICAgICAgJHJuZXdfdG9rZW4tPltfVE9LRU5fXSAgICAgICAgICAgICAgICAgPSAkdG9rZW47CiAgICAgICAgJHJuZXdfdG9rZW4tPltfQkxPQ0tfVFlQRV9dICAgICAgICAgICAgPSAnJzsKICAgICAgICAkcm5ld190b2tlbi0+W19DT05UQUlORVJfVFlQRV9dICAgICAgICA9ICcnOwogICAgICAgICRybmV3X3Rva2VuLT5bX0NPTlRBSU5FUl9FTlZJUk9OTUVOVF9dID0gJyc7CiAgICAgICAgJHJuZXdfdG9rZW4tPltfVFlQRV9TRVFVRU5DRV9dICAgICAgICAgPSAnJzsKICAgICAgICByZXR1cm4gJHJuZXdfdG9rZW47CiAgICB9CgogICAgc3ViIGJvb2xlYW5fZXF1YWxzIHsKICAgICAgICBteSAoICR2YWwxLCAkdmFsMiApID0gQF87CiAgICAgICAgcmV0dXJuICggJHZhbDEgJiYgJHZhbDIgfHwgISR2YWwxICYmICEkdmFsMiApOwogICAgfQoKICAgIHN1YiBwcmludF9saW5lX29mX3Rva2VucyB7CgogICAgICAgIG15ICggJHNlbGYsICRsaW5lX29mX3Rva2VucyApID0gQF87CgogICAgICAgICMgVGhpcyByb3V0aW5lIGlzIGNhbGxlZCBvbmNlIHBlciBpbnB1dCBsaW5lIHRvIHByb2Nlc3MgYWxsIG9mCiAgICAgICAgIyB0aGUgdG9rZW5zIG9uIHRoYXQgbGluZS4gIFRoaXMgaXMgdGhlIGZpcnN0IHN0YWdlIG9mCiAgICAgICAgIyBiZWF1dGlmaWNhdGlvbi4KICAgICAgICAjCiAgICAgICAgIyBGdWxsLWxpbmUgY29tbWVudHMgYW5kIGJsYW5rIGxpbmVzIG1heSBiZSBwcm9jZXNzZWQgaW1tZWRpYXRlbHkuCiAgICAgICAgIwogICAgICAgICMgRm9yIG5vcm1hbCBsaW5lcyBvZiBjb2RlLCB0aGUgdG9rZW5zIGFyZSBzdG9yZWQgb25lLWJ5LW9uZSwKICAgICAgICAjIHZpYSBjYWxscyB0byAnc3ViIHN0b3JlX3Rva2VuX3RvX2dvJywgdW50aWwgYSBrbm93biBsaW5lIGJyZWFrCiAgICAgICAgIyBwb2ludCBpcyByZWFjaGVkLiAgVGhlbiwgdGhlIGJhdGNoIG9mIGNvbGxlY3RlZCB0b2tlbnMgaXMKICAgICAgICAjIHBhc3NlZCBhbG9uZyB0byAnc3ViIG91dHB1dF9saW5lX3RvX2dvJyBmb3IgZnVydGhlcgogICAgICAgICMgcHJvY2Vzc2luZy4gIFRoaXMgcm91dGluZSBkZWNpZGVzIGlmIHRoZXJlIHNob3VsZCBiZQogICAgICAgICMgd2hpdGVzcGFjZSBiZXR3ZWVuIGVhY2ggcGFpciBvZiBub24td2hpdGUgdG9rZW5zLCBzbyBsYXRlcgogICAgICAgICMgcm91dGluZXMgb25seSBuZWVkIHRvIGRlY2lkZSBvbiBhbnkgYWRkaXRpb25hbCBsaW5lIGJyZWFrcy4KICAgICAgICAjIEFueSB3aGl0ZXNwYWNlIGlzIGluaXRpYWxseSBhIHNpbmdsZSBzcGFjZSBjaGFyYWN0ZXIuICBMYXRlciwKICAgICAgICAjIHRoZSB2ZXJ0aWNhbCBhbGlnbmVyIG1heSBleHBhbmQgdGhhdCB0byBiZSBtdWx0aXBsZSBzcGFjZQogICAgICAgICMgY2hhcmFjdGVycyBpZiBuZWNlc3NhcnkgZm9yIGFsaWdubWVudC4KCiAgICAgICAgJGlucHV0X2xpbmVfbnVtYmVyID0gJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfbnVtYmVyfTsKICAgICAgICBteSAkaW5wdXRfbGluZSA9ICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3RleHR9OwogICAgICAgIG15ICRDT0RFX3R5cGUgID0gJGxpbmVfb2ZfdG9rZW5zLT57X2NvZGVfdHlwZX07CgogICAgICAgIG15ICRyS19yYW5nZSA9ICRsaW5lX29mX3Rva2Vucy0+e19yS19yYW5nZX07CiAgICAgICAgbXkgKCAkS19maXJzdCwgJEtfbGFzdCApID0gQHskcktfcmFuZ2V9OwoKICAgICAgICBteSAkckxMICAgICAgICAgICAgICA9ICRzZWxmLT57ckxMfTsKICAgICAgICBteSAkcmJyZWFrX2NvbnRhaW5lciA9ICRzZWxmLT57cmJyZWFrX2NvbnRhaW5lcn07CiAgICAgICAgbXkgJHJzaG9ydF9uZXN0ZWQgICAgPSAkc2VsZi0+e3JzaG9ydF9uZXN0ZWR9OwoKICAgICAgICBpZiAoICFkZWZpbmVkKCRLX2ZpcnN0KSApIHsKCiAgICAgICAgICAgICMgVW5leHBlY3RlZCBibGFuayBsaW5lLi4KICAgICAgICAgICAgIyBDYWxsaW5nIHJvdXRpbmUgd2FzIHN1cHBvc2VkIHRvIGhhbmRsZSB0aGlzCiAgICAgICAgICAgIFdhcm4oCiJQcm9ncmFtbWluZyBFcnJvcjogVW5leHBlY3RlZCBCbGFuayBMaW5lIGluIHByaW50X2xpbmVfb2ZfdG9rZW5zLiBJZ25vcmluZyIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJG5vX2ludGVybmFsX25ld2xpbmVzID0gMSAtICRyT3B0c19hZGRfbmV3bGluZXM7CiAgICAgICAgbXkgJGlzX2NvbW1lbnQgPQogICAgICAgICAgKCAkS19maXJzdCA9PSAkS19sYXN0ICYmICRyTEwtPlskS19maXJzdF0tPltfVFlQRV9dIGVxICcjJyApOwogICAgICAgIG15ICRpc19zdGF0aWNfYmxvY2tfY29tbWVudF93aXRob3V0X2xlYWRpbmdfc3BhY2UgPQogICAgICAgICAgJENPREVfdHlwZSBlcSAnU0JDWCc7CiAgICAgICAgJGlzX3N0YXRpY19ibG9ja19jb21tZW50ID0KICAgICAgICAgICRDT0RFX3R5cGUgZXEgJ1NCQycgfHwgJGlzX3N0YXRpY19ibG9ja19jb21tZW50X3dpdGhvdXRfbGVhZGluZ19zcGFjZTsKICAgICAgICBteSAkaXNfaGFuZ2luZ19zaWRlX2NvbW1lbnQgPSAkQ09ERV90eXBlIGVxICdIU0MnOwogICAgICAgIG15ICRpc19WRVJTSU9OX3N0YXRlbWVudCAgICA9ICRDT0RFX3R5cGUgZXEgJ1ZFUic7CiAgICAgICAgaWYgKCRpc19WRVJTSU9OX3N0YXRlbWVudCkgewogICAgICAgICAgICAkc2F3X1ZFUlNJT05faW5fdGhpc19maWxlID0gMTsKICAgICAgICAgICAgJG5vX2ludGVybmFsX25ld2xpbmVzICAgICA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIEFkZCBpbnRlcmxpbmUgYmxhbmsgaWYgYW55CiAgICAgICAgbXkgJGxhc3Rfb2xkX25vbmJsYW5rX3R5cGUgICA9ICJiIjsKICAgICAgICBteSAkZmlyc3RfbmV3X25vbmJsYW5rX3R5cGUgID0gImIiOwogICAgICAgIG15ICRmaXJzdF9uZXdfbm9uYmxhbmtfdG9rZW4gPSAiICI7CiAgICAgICAgaWYgKCAkbWF4X2luZGV4X3RvX2dvID49IDAgKSB7CiAgICAgICAgICAgICRsYXN0X29sZF9ub25ibGFua190eXBlICAgPSAkdHlwZXNfdG9fZ29bJG1heF9pbmRleF90b19nb107CiAgICAgICAgICAgICRmaXJzdF9uZXdfbm9uYmxhbmtfdHlwZSAgPSAkckxMLT5bJEtfZmlyc3RdLT5bX1RZUEVfXTsKICAgICAgICAgICAgJGZpcnN0X25ld19ub25ibGFua190b2tlbiA9ICRyTEwtPlskS19maXJzdF0tPltfVE9LRU5fXTsKICAgICAgICAgICAgaWYgKCAgISRpc19jb21tZW50CiAgICAgICAgICAgICAgICAmJiAkdHlwZXNfdG9fZ29bJG1heF9pbmRleF90b19nb10gbmUgJ2InCiAgICAgICAgICAgICAgICAmJiAkS19maXJzdCA+IDAKICAgICAgICAgICAgICAgICYmICRyTEwtPlsgJEtfZmlyc3QgLSAxIF0tPltfVFlQRV9dIGVxICdiJyApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRLX2ZpcnN0IC09IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgQ29weSB0aGUgdG9rZW5zIGludG8gbG9jYWwgYXJyYXlzCiAgICAgICAgJHJpbnB1dF90b2tlbl9hcnJheSA9IFtdOwogICAgICAgICRyaW5wdXRfS19hcnJheSAgICAgPSBbXTsKICAgICAgICAkcmlucHV0X0tfYXJyYXkgICAgID0gWyAoICRLX2ZpcnN0IC4uICRLX2xhc3QgKSBdOwogICAgICAgICRyaW5wdXRfdG9rZW5fYXJyYXkgPSBbIG1hcCB7ICRyTEwtPlskX10gfSBAeyRyaW5wdXRfS19hcnJheX0gXTsKICAgICAgICBteSAkam1heCA9IEB7JHJpbnB1dF9LX2FycmF5fSAtIDE7CgogICAgICAgICRpbl9jb250aW51ZWRfcXVvdGUgPSAkc3RhcnRpbmdfaW5fcXVvdGUgPQogICAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X3N0YXJ0aW5nX2luX3F1b3RlfTsKICAgICAgICAkaW5fcXVvdGUgICAgICAgID0gJGxpbmVfb2ZfdG9rZW5zLT57X2VuZGluZ19pbl9xdW90ZX07CiAgICAgICAgJGVuZGluZ19pbl9xdW90ZSA9ICRpbl9xdW90ZTsKICAgICAgICAkZ3Vlc3NlZF9pbmRlbnRhdGlvbl9sZXZlbCA9CiAgICAgICAgICAkbGluZV9vZl90b2tlbnMtPntfZ3Vlc3NlZF9pbmRlbnRhdGlvbl9sZXZlbH07CgogICAgICAgIG15ICRqX25leHQ7CiAgICAgICAgbXkgJG5leHRfbm9uYmxhbmtfdG9rZW47CiAgICAgICAgbXkgJG5leHRfbm9uYmxhbmtfdG9rZW5fdHlwZTsKCiAgICAgICAgJGJsb2NrX3R5cGUgICAgICAgICAgICA9ICIiOwogICAgICAgICRjb250YWluZXJfdHlwZSAgICAgICAgPSAiIjsKICAgICAgICAkY29udGFpbmVyX2Vudmlyb25tZW50ID0gIiI7CiAgICAgICAgJHR5cGVfc2VxdWVuY2UgICAgICAgICA9ICIiOwoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgSGFuZGxlIGEgYmxvY2sgKGZ1bGwtbGluZSkgY29tbWVudC4uCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICBpZiAoJGlzX2NvbW1lbnQpIHsKCiAgICAgICAgICAgIGlmICggJHJPcHRzLT57J2RlbGV0ZS1ibG9jay1jb21tZW50cyd9ICkgeyByZXR1cm4gfQoKICAgICAgICAgICAgaWYgKCAkck9wdHMtPnsndGVlLWJsb2NrLWNvbW1lbnRzJ30gKSB7CiAgICAgICAgICAgICAgICAkZmlsZV93cml0ZXJfb2JqZWN0LT50ZWVfb24oKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZGVzdHJveV9vbmVfbGluZV9ibG9jaygpOwogICAgICAgICAgICAkc2VsZi0+b3V0cHV0X2xpbmVfdG9fZ28oKTsKCiAgICAgICAgICAgICMgb3V0cHV0IGEgYmxhbmsgbGluZSBiZWZvcmUgYmxvY2sgY29tbWVudHMKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgIyB1bmxlc3Mgd2UgZm9sbG93IGEgYmxhbmsgb3IgY29tbWVudCBsaW5lCiAgICAgICAgICAgICAgICAkbGFzdF9saW5lX2xlYWRpbmdfdHlwZSAhfiAvXlsjYl0kLwoKICAgICAgICAgICAgICAgICMgb25seSBpZiBhbGxvd2VkCiAgICAgICAgICAgICAgICAmJiAkck9wdHMtPnsnYmxhbmtzLWJlZm9yZS1jb21tZW50cyd9CgogICAgICAgICAgICAgICAgIyBpZiB0aGlzIGlzIE5PVCBhbiBlbXB0eSBjb21tZW50IGxpbmUKICAgICAgICAgICAgICAgICYmICRyaW5wdXRfdG9rZW5fYXJyYXktPlswXS0+W19UT0tFTl9dIG5lICcjJwoKICAgICAgICAgICAgICAgICMgbm90IGFmdGVyIGEgc2hvcnQgbGluZSBlbmRpbmcgaW4gYW4gb3BlbmluZyB0b2tlbgogICAgICAgICAgICAgICAgIyBiZWNhdXNlIHdlIGFscmVhZHkgaGF2ZSBzcGFjZSBhYm92ZSB0aGlzIGNvbW1lbnQuCiAgICAgICAgICAgICAgICAjIE5vdGUgdGhhdCB0aGUgZmlyc3QgY29tbWVudCBpbiB0aGlzIGlmIGJsb2NrLCBhZnRlcgogICAgICAgICAgICAgICAgIyB0aGUgJ2lmICgnLCBkb2VzIG5vdCBnZXQgYSBibGFuayBsaW5lIGJlY2F1c2Ugb2YgdGhpcy4KICAgICAgICAgICAgICAgICYmICEkbGFzdF9vdXRwdXRfc2hvcnRfb3BlbmluZ190b2tlbgoKICAgICAgICAgICAgICAgICMgbmV2ZXIgYmVmb3JlIHN0YXRpYyBibG9jayBjb21tZW50cwogICAgICAgICAgICAgICAgJiYgISRpc19zdGF0aWNfYmxvY2tfY29tbWVudAogICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHNlbGYtPmZsdXNoKCk7ICAgICMgc3dpdGNoaW5nIHRvIG5ldyBvdXRwdXQgc3RyZWFtCiAgICAgICAgICAgICAgICAkZmlsZV93cml0ZXJfb2JqZWN0LT53cml0ZV9ibGFua19jb2RlX2xpbmUoKTsKICAgICAgICAgICAgICAgICRsYXN0X2xpbmVfbGVhZGluZ190eXBlID0gJ2InOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFRSSU0gQ09NTUVOVFMgLS0gVGhpcyBjb3VsZCBiZSB0dXJuZWQgb2ZmIGFzIGEgb3B0aW9uCiAgICAgICAgICAgICRyaW5wdXRfdG9rZW5fYXJyYXktPlswXS0+W19UT0tFTl9dID1+IHMvXHMqJC8vOyAgICAjIHRyaW0gcmlnaHQgZW5kCgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkck9wdHMtPnsnaW5kZW50LWJsb2NrLWNvbW1lbnRzJ30KICAgICAgICAgICAgICAgICYmICggICEkck9wdHMtPnsnaW5kZW50LXNwYWNlZC1ibG9jay1jb21tZW50cyd9CiAgICAgICAgICAgICAgICAgICAgfHwgJGlucHV0X2xpbmUgPX4gL15ccysvICkKICAgICAgICAgICAgICAgICYmICEkaXNfc3RhdGljX2Jsb2NrX2NvbW1lbnRfd2l0aG91dF9sZWFkaW5nX3NwYWNlCiAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkc2VsZi0+ZXh0cmFjdF90b2tlbigwKTsKICAgICAgICAgICAgICAgICRzZWxmLT5zdG9yZV90b2tlbl90b19nbygpOwogICAgICAgICAgICAgICAgJHNlbGYtPm91dHB1dF9saW5lX3RvX2dvKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkc2VsZi0+Zmx1c2goKTsgICAgIyBzd2l0Y2hpbmcgdG8gbmV3IG91dHB1dCBzdHJlYW0KICAgICAgICAgICAgICAgICRmaWxlX3dyaXRlcl9vYmplY3QtPndyaXRlX2NvZGVfbGluZSgKICAgICAgICAgICAgICAgICAgICAkcmlucHV0X3Rva2VuX2FycmF5LT5bMF0tPltfVE9LRU5fXSAuICJcbiIgKTsKICAgICAgICAgICAgICAgICRsYXN0X2xpbmVfbGVhZGluZ190eXBlID0gJyMnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJHJPcHRzLT57J3RlZS1ibG9jay1jb21tZW50cyd9ICkgewogICAgICAgICAgICAgICAgJGZpbGVfd3JpdGVyX29iamVjdC0+dGVlX29mZigpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgVE9ETzogTW92ZSB0byBzdWIgc2Nhbl9jb21tZW50cwogICAgICAgICMgY29tcGFyZSBpbnB1dC9vdXRwdXQgaW5kZW50YXRpb24gZXhjZXB0IGZvciBjb250aW51YXRpb24gbGluZXMKICAgICAgICAjIChiZWNhdXNlIHRoZXkgaGF2ZSBhbiB1bmtub3duIGFtb3VudCBvZiBpbml0aWFsIGJsYW5rIHNwYWNlKQogICAgICAgICMgYW5kIGxpbmVzIHdoaWNoIGFyZSBxdW90ZXMgKGJlY2F1c2UgdGhleSBtYXkgaGF2ZSBiZWVuIG91dGRlbnRlZCkKICAgICAgICAjIE5vdGU6IHRoaXMgdGVzdCBpcyBwbGFjZWQgaGVyZSBiZWNhdXNlIHdlIGtub3cgdGhlIGNvbnRpbnVhdGlvbiBmbGFnCiAgICAgICAgIyBhdCB0aGlzIHBvaW50LCB3aGljaCBhbGxvd3MgdXMgdG8gYXZvaWQgbm9uLW1lYW5pbmdmdWwgY2hlY2tzLgogICAgICAgIG15ICRzdHJ1Y3R1cmFsX2luZGVudGF0aW9uX2xldmVsID0gJHJpbnB1dF90b2tlbl9hcnJheS0+WzBdLT5bX0xFVkVMX107CiAgICAgICAgY29tcGFyZV9pbmRlbnRhdGlvbl9sZXZlbHMoICRndWVzc2VkX2luZGVudGF0aW9uX2xldmVsLAogICAgICAgICAgICAkc3RydWN0dXJhbF9pbmRlbnRhdGlvbl9sZXZlbCApCiAgICAgICAgICB1bmxlc3MgKCAkaXNfaGFuZ2luZ19zaWRlX2NvbW1lbnQKICAgICAgICAgICAgfHwgJHJpbnB1dF90b2tlbl9hcnJheS0+WzBdLT5bX0NJX0xFVkVMX10gPiAwCiAgICAgICAgICAgIHx8ICRndWVzc2VkX2luZGVudGF0aW9uX2xldmVsID09IDAKICAgICAgICAgICAgJiYgJHJpbnB1dF90b2tlbl9hcnJheS0+WzBdLT5bX1RZUEVfXSBlcSAnUScgKTsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIEhhbmRsZSBpbmRlbnRhdGlvbi1vbmx5CiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgIyBOT1RFOiBJbiBwcmV2aW91cyB2ZXJzaW9ucyB3ZSBzZW50IGFsbCBxdyBsaW5lcyBvdXQgaW1tZWRpYXRlbHkgaGVyZS4KICAgICAgICAjIE5vIGxvbmdlciBkb2luZyB0aGlzOiBhbHNvIHdyaXRlIGEgbGluZSB3aGljaCBpcyBlbnRpcmVseSBhICdxdycgbGlzdAogICAgICAgICMgdG8gYWxsb3cgc3RhY2tpbmcgb2Ygb3BlbmluZyBhbmQgY2xvc2luZyB0b2tlbnMuICBOb3RlIHRoYXQgaW50ZXJpb3IKICAgICAgICAjIHF3IGxpbmVzIHdpbGwgc3RpbGwgZ28gb3V0IGF0IHRoZSBlbmQgb2YgdGhpcyByb3V0aW5lLgogICAgICAgIGlmICggJENPREVfdHlwZSBlcSAnSU8nICkgewogICAgICAgICAgICAkc2VsZi0+Zmx1c2goKTsKICAgICAgICAgICAgbXkgJGxpbmUgPSAkaW5wdXRfbGluZTsKCiAgICAgICAgICAgICMgZGVsZXRlIHNpZGUgY29tbWVudHMgaWYgcmVxdWVzdGVkIHdpdGggLWlvLCBidXQKICAgICAgICAgICAgIyB3ZSB3aWxsIG5vdCBhbGxvdyBkZWxldGluZyBvZiBjbG9zaW5nIHNpZGUgY29tbWVudHMgd2l0aCAtaW8KICAgICAgICAgICAgIyBiZWNhdXNlIHRoZSBjb2Rpbmcgd291bGQgYmUgbW9yZSBjb21wbGV4CiAgICAgICAgICAgIGlmICggICAkck9wdHMtPnsnZGVsZXRlLXNpZGUtY29tbWVudHMnfQogICAgICAgICAgICAgICAgJiYgJHJpbnB1dF90b2tlbl9hcnJheS0+WyRqbWF4XS0+W19UWVBFX10gZXEgJyMnICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICRsaW5lID0gIiI7CiAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRqaiAoIDAgLi4gJGptYXggLSAxICkgewogICAgICAgICAgICAgICAgICAgICRsaW5lIC49ICRyaW5wdXRfdG9rZW5fYXJyYXktPlskampdLT5bX1RPS0VOX107CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgRml4IGZvciBydCAjMTI1NTA2IFVuZXhwZWN0ZWQgc3RyaW5nIGZvcm1hdGluZwogICAgICAgICAgICAjIGluIHdoaWNoIGxlYWRpbmcgc3BhY2Ugb2YgYSB0ZXJtaW5hbCBxdW90ZSB3YXMgcmVtb3ZlZAogICAgICAgICAgICAkbGluZSA9fiBzL1xzKyQvLzsKICAgICAgICAgICAgJGxpbmUgPX4gcy9eXHMrLy8gdW5sZXNzICgkaW5fY29udGludWVkX3F1b3RlKTsKCiAgICAgICAgICAgICRzZWxmLT5leHRyYWN0X3Rva2VuKDApOwogICAgICAgICAgICAkdG9rZW4gICAgICAgICAgICAgICAgID0gJGxpbmU7CiAgICAgICAgICAgICR0eXBlICAgICAgICAgICAgICAgICAgPSAncSc7CiAgICAgICAgICAgICRibG9ja190eXBlICAgICAgICAgICAgPSAiIjsKICAgICAgICAgICAgJGNvbnRhaW5lcl90eXBlICAgICAgICA9ICIiOwogICAgICAgICAgICAkY29udGFpbmVyX2Vudmlyb25tZW50ID0gIiI7CiAgICAgICAgICAgICR0eXBlX3NlcXVlbmNlICAgICAgICAgPSAiIjsKICAgICAgICAgICAgJHNlbGYtPnN0b3JlX3Rva2VuX3RvX2dvKCk7CiAgICAgICAgICAgICRzZWxmLT5vdXRwdXRfbGluZV90b19nbygpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBIYW5kbGUgYWxsIG90aGVyIGxpbmVzIC4uLgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgRklYTUU6IHRoaXMgc2hvdWxkIGJlY29tZSB1bm5lY2Vzc2FyeQogICAgICAgICMgbWFraW5nICRqKzIgdmFsaWQgc2ltcGxpZmllcyBjb2RpbmcKICAgICAgICBteSAkcm5ld19ibGFuayA9CiAgICAgICAgICBjb3B5X3Rva2VuX2FzX3R5cGUoICRyaW5wdXRfdG9rZW5fYXJyYXktPlskam1heF0sICdiJyApOwogICAgICAgIHB1c2ggQHskcmlucHV0X3Rva2VuX2FycmF5fSwgJHJuZXdfYmxhbms7CiAgICAgICAgcHVzaCBAeyRyaW5wdXRfdG9rZW5fYXJyYXl9LCAkcm5ld19ibGFuazsKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgICMgSWYgd2UganVzdCBzYXcgdGhlIGVuZCBvZiBhbiBlbHNpZiBibG9jaywgd3JpdGUgbmFnIG1lc3NhZ2UKICAgICAgICAjIGlmIHdlIGRvIG5vdCBzZWUgYW5vdGhlciBlbHNlaWYgb3IgYW4gZWxzZS4KICAgICAgICBpZiAoJGxvb2tpbmdfZm9yX2Vsc2UpIHsKCiAgICAgICAgICAgIHVubGVzcyAoICRyaW5wdXRfdG9rZW5fYXJyYXktPlswXS0+W19UT0tFTl9dID1+IC9eKGVsc2lmfGVsc2UpJC8gKSB7CiAgICAgICAgICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCIoTm8gZWxzZSBibG9jaylcbiIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRsb29raW5nX2Zvcl9lbHNlID0gMDsKICAgICAgICB9CgogICAgICAgICMgVGhpcyBpcyBhIGdvb2QgcGxhY2UgdG8ga2lsbCBpbmNvbXBsZXRlIG9uZS1saW5lIGJsb2NrcwogICAgICAgIGlmICgKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgKCAkc2VtaWNvbG9uc19iZWZvcmVfYmxvY2tfc2VsZl9kZXN0cnVjdCA9PSAwICkKICAgICAgICAgICAgICAgICYmICggJG1heF9pbmRleF90b19nbyA+PSAwICkKICAgICAgICAgICAgICAgICYmICggJGxhc3Rfb2xkX25vbmJsYW5rX3R5cGUgZXEgJzsnICkKICAgICAgICAgICAgICAgICYmICggJGZpcnN0X25ld19ub25ibGFua190b2tlbiBuZSAnfScgKQogICAgICAgICAgICApCgogICAgICAgICAgICAjIFBhdGNoIGZvciBSVCAjOTg5MDIuIEhvbm9yIHJlcXVlc3QgdG8gYnJlYWsgYXQgb2xkIGNvbW1hcy4KICAgICAgICAgICAgfHwgKCAgICRyT3B0c19icmVha19hdF9vbGRfY29tbWFfYnJlYWtwb2ludHMKICAgICAgICAgICAgICAgICYmICRtYXhfaW5kZXhfdG9fZ28gPj0gMAogICAgICAgICAgICAgICAgJiYgJGxhc3Rfb2xkX25vbmJsYW5rX3R5cGUgZXEgJywnICkKICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRmb3JjZWRfYnJlYWtwb2ludF90b19nb1skbWF4X2luZGV4X3RvX2dvXSA9IDEKICAgICAgICAgICAgICBpZiAoJHJPcHRzX2JyZWFrX2F0X29sZF9jb21tYV9icmVha3BvaW50cyk7CiAgICAgICAgICAgIGRlc3Ryb3lfb25lX2xpbmVfYmxvY2soKTsKICAgICAgICAgICAgJHNlbGYtPm91dHB1dF9saW5lX3RvX2dvKCk7CiAgICAgICAgfQoKICAgICAgICAjIGxvb3AgdG8gcHJvY2VzcyB0aGUgdG9rZW5zIG9uZS1ieS1vbmUKICAgICAgICAkdHlwZSAgPSAnYic7CiAgICAgICAgJHRva2VuID0gIiI7CgogICAgICAgICMgV2UgZG8gbm90IHdhbnQgYSBsZWFkaW5nIGJsYW5rIGlmIHRoZSBwcmV2aW91cyBiYXRjaCBqdXN0IGdvdCBvdXRwdXQKICAgICAgICBteSAkam1pbiA9IDA7CiAgICAgICAgaWYgKCAkbWF4X2luZGV4X3RvX2dvIDwgMCAmJiAkckxMLT5bJEtfZmlyc3RdLT5bX1RZUEVfXSBlcSAnYicgKSB7CiAgICAgICAgICAgICRqbWluID0gMTsKICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggbXkgJGogKCAkam1pbiAuLiAkam1heCApIHsKCiAgICAgICAgICAgICMgcHVsbCBvdXQgdGhlIGxvY2FsIHZhbHVlcyBmb3IgdGhpcyB0b2tlbgogICAgICAgICAgICAkc2VsZi0+ZXh0cmFjdF90b2tlbigkaik7CgogICAgICAgICAgICBpZiAoICR0eXBlIGVxICcjJyApIHsKCiAgICAgICAgICAgICAgICAjIHRyaW0gdHJhaWxpbmcgd2hpdGVzcGFjZQogICAgICAgICAgICAgICAgIyAodGhlcmUgaXMgbm8gb3B0aW9uIGF0IHByZXNlbnQgdG8gcHJldmVudCB0aGlzKQogICAgICAgICAgICAgICAgJHRva2VuID1+IHMvXHMqJC8vOwoKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkck9wdHMtPnsnZGVsZXRlLXNpZGUtY29tbWVudHMnfQoKICAgICAgICAgICAgICAgICAgICAjIGRlbGV0ZSBjbG9zaW5nIHNpZGUgY29tbWVudHMgaWYgbmVjZXNzYXJ5CiAgICAgICAgICAgICAgICAgICAgfHwgKCAgICRyT3B0cy0+eydkZWxldGUtY2xvc2luZy1zaWRlLWNvbW1lbnRzJ30KICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHRva2VuID1+IC8kY2xvc2luZ19zaWRlX2NvbW1lbnRfcHJlZml4X3BhdHRlcm4vbwogICAgICAgICAgICAgICAgICAgICAgICAmJiAkbGFzdF9ub25ibGFua19ibG9ja190eXBlID1+CiAgICAgICAgICAgICAgICAgICAgICAgIC8kY2xvc2luZ19zaWRlX2NvbW1lbnRfbGlzdF9wYXR0ZXJuL28gKQogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bJG1heF9pbmRleF90b19nb10gZXEgJ2InICkgewogICAgICAgICAgICAgICAgICAgICAgICB1bnN0b3JlX3Rva2VuX3RvX2dvKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgSWYgd2UgYXJlIGNvbnRpbnVpbmcgYWZ0ZXIgc2VlaW5nIGEgcmlnaHQgY3VybHkgYnJhY2UsIGZsdXNoCiAgICAgICAgICAgICMgYnVmZmVyIHVubGVzcyB3ZSBzZWUgd2hhdCB3ZSBhcmUgbG9va2luZyBmb3IsIGFzIGluCiAgICAgICAgICAgICMgICB9IGVsc2UgLi4uCiAgICAgICAgICAgIGlmICggJHJicmFjZV9mb2xsb3dlciAmJiAkdHlwZSBuZSAnYicgKSB7CgogICAgICAgICAgICAgICAgdW5sZXNzICggJHJicmFjZV9mb2xsb3dlci0+eyR0b2tlbn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJHNlbGYtPm91dHB1dF9saW5lX3RvX2dvKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkcmJyYWNlX2ZvbGxvd2VyID0gdW5kZWY7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRqX25leHQgPQogICAgICAgICAgICAgICggJHJpbnB1dF90b2tlbl9hcnJheS0+WyAkaiArIDEgXS0+W19UWVBFX10gZXEgJ2InICkKICAgICAgICAgICAgICA/ICRqICsgMgogICAgICAgICAgICAgIDogJGogKyAxOwogICAgICAgICAgICAkbmV4dF9ub25ibGFua190b2tlbiA9ICRyaW5wdXRfdG9rZW5fYXJyYXktPlskal9uZXh0XS0+W19UT0tFTl9dOwogICAgICAgICAgICAkbmV4dF9ub25ibGFua190b2tlbl90eXBlID0KICAgICAgICAgICAgICAkcmlucHV0X3Rva2VuX2FycmF5LT5bJGpfbmV4dF0tPltfVFlQRV9dOwoKICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICAgICAjIE1BWUJFIE1PVkUgRUxTRVdIRVJFPwogICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgICAgIGlmICggJHR5cGUgZXEgJ1EnICkgewogICAgICAgICAgICAgICAgbm90ZV9lbWJlZGRlZF90YWIoKSBpZiAoICR0b2tlbiA9fiAiXHQiICk7CgogICAgICAgICAgICAgICAgIyBtYWtlIG5vdGUgb2Ygc29tZXRoaW5nIGxpa2UgJyR2YXIgPSBzL3h4eC95eXkvOycKICAgICAgICAgICAgICAgICMgaW4gY2FzZSBpdCBzaG91bGQgaGF2ZSBiZWVuICckdmFyID1+IHMveHh4L3l5eS87JwogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICR0b2tlbiA9fiAvXihzfHRyfHl8bXxcLykvCiAgICAgICAgICAgICAgICAgICAgJiYgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gPX4gL14oPXw9PXwhPSkkLwoKICAgICAgICAgICAgICAgICAgICAjIHByZWNlZGVkIGJ5IHNpbXBsZSBzY2FsYXIKICAgICAgICAgICAgICAgICAgICAmJiAkbGFzdF9sYXN0X25vbmJsYW5rX3R5cGUgZXEgJ2knCiAgICAgICAgICAgICAgICAgICAgJiYgJGxhc3RfbGFzdF9ub25ibGFua190b2tlbiA9fiAvXlwkLwoKICAgICAgICAgICAgICAgICAgICAjIGZvbGxvd2VkIGJ5IHNvbWUga2luZCBvZiB0ZXJtaW5hdGlvbgogICAgICAgICAgICAgICAgICAgICMgKGJ1dCBnaXZlIGNvbXBsYWludCBpZiB3ZSBjYW4ncyBzZWUgZmFyIGVub3VnaCBhaGVhZCkKICAgICAgICAgICAgICAgICAgICAmJiAkbmV4dF9ub25ibGFua190b2tlbiA9fiAvXls7IFwpXH1dJC8KCiAgICAgICAgICAgICAgICAgICAgIyBzY2FsYXIgaXMgbm90IGRlY2xhcmVkCiAgICAgICAgICAgICAgICAgICAgJiYgISgKICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGVzX3RvX2dvWzBdIGVxICdrJwogICAgICAgICAgICAgICAgICAgICAgICAmJiAkdG9rZW5zX3RvX2dvWzBdID1+IC9eKG15fG91cnxsb2NhbCkkLwogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIG15ICRndWVzcyA9IHN1YnN0ciggJGxhc3Rfbm9uYmxhbmtfdG9rZW4sIDAsIDEgKSAuICd+JzsKICAgICAgICAgICAgICAgICAgICBjb21wbGFpbigKIk5vdGU6IGJlIHN1cmUgeW91IHdhbnQgJyRsYXN0X25vbmJsYW5rX3Rva2VuJyBpbnN0ZWFkIG9mICckZ3Vlc3MnIGhlcmVcbiIKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIERvIG5vdCBhbGxvdyBicmVha3Mgd2hpY2ggd291bGQgcHJvbW90ZSBhIHNpZGUgY29tbWVudCB0byBhCiAgICAgICAgICAgICMgYmxvY2sgY29tbWVudC4gIEluIG9yZGVyIHRvIGFsbG93IGEgYnJlYWsgYmVmb3JlIGFuIG9wZW5pbmcKICAgICAgICAgICAgIyBvciBjbG9zaW5nIEJMT0NLLCBmb2xsb3dlZCBieSBhIHNpZGUgY29tbWVudCwgdGhvc2Ugc2VjdGlvbnMKICAgICAgICAgICAgIyBvZiBjb2RlIHdpbGwgaGFuZGxlIHRoaXMgZmxhZyBzZXBhcmF0ZWx5LgogICAgICAgICAgICBteSAkc2lkZV9jb21tZW50X2ZvbGxvd3MgPSAoICRuZXh0X25vbmJsYW5rX3Rva2VuX3R5cGUgZXEgJyMnICk7CiAgICAgICAgICAgIG15ICRpc19vcGVuaW5nX0JMT0NLID0KICAgICAgICAgICAgICAoICAgICAgJHR5cGUgZXEgJ3snCiAgICAgICAgICAgICAgICAgICYmICR0b2tlbiBlcSAneycKICAgICAgICAgICAgICAgICAgJiYgJGJsb2NrX3R5cGUKICAgICAgICAgICAgICAgICAgJiYgISRyc2hvcnRfbmVzdGVkLT57JHR5cGVfc2VxdWVuY2V9CiAgICAgICAgICAgICAgICAgICYmICRibG9ja190eXBlIG5lICd0JyApOwogICAgICAgICAgICBteSAkaXNfY2xvc2luZ19CTE9DSyA9CiAgICAgICAgICAgICAgKCAgICAgICR0eXBlIGVxICd9JwogICAgICAgICAgICAgICAgICAmJiAkdG9rZW4gZXEgJ30nCiAgICAgICAgICAgICAgICAgICYmICRibG9ja190eXBlCiAgICAgICAgICAgICAgICAgICYmICEkcnNob3J0X25lc3RlZC0+eyR0eXBlX3NlcXVlbmNlfQogICAgICAgICAgICAgICAgICAmJiAkYmxvY2tfdHlwZSBuZSAndCcgKTsKCiAgICAgICAgICAgIGlmICggICAkc2lkZV9jb21tZW50X2ZvbGxvd3MKICAgICAgICAgICAgICAgICYmICEkaXNfb3BlbmluZ19CTE9DSwogICAgICAgICAgICAgICAgJiYgISRpc19jbG9zaW5nX0JMT0NLICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJG5vX2ludGVybmFsX25ld2xpbmVzID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBXZSdyZSBvbmx5IGdvaW5nIHRvIGhhbmRsZSBicmVha2luZyBmb3IgY29kZSBCTE9DS1MgYXQgdGhpcwogICAgICAgICAgICAjICh0b3ApIGxldmVsLiAgT3RoZXIgaW5kZW50YXRpb24gYnJlYWtzIHdpbGwgYmUgaGFuZGxlZCBieQogICAgICAgICAgICAjIHN1YiBzY2FuX2xpc3QsIHdoaWNoIGlzIGJldHRlciBzdWl0ZWQgdG8gZGVhbGluZyB3aXRoIHRoZW0uCiAgICAgICAgICAgIGlmICgkaXNfb3BlbmluZ19CTE9DSykgewoKICAgICAgICAgICAgICAgICMgVGVudGF0aXZlbHkgb3V0cHV0IHRoaXMgdG9rZW4uICBUaGlzIGlzIHJlcXVpcmVkIGJlZm9yZQogICAgICAgICAgICAgICAgIyBjYWxsaW5nIHN0YXJ0aW5nX29uZV9saW5lX2Jsb2NrLiAgV2UgbWF5IGhhdmUgdG8gdW5zdG9yZQogICAgICAgICAgICAgICAgIyBpdCwgdGhvdWdoLCBpZiB3ZSBoYXZlIHRvIGJyZWFrIGJlZm9yZSBpdC4KICAgICAgICAgICAgICAgICRzZWxmLT5zdG9yZV90b2tlbl90b19nbygkc2lkZV9jb21tZW50X2ZvbGxvd3MpOwoKICAgICAgICAgICAgICAgICMgTG9vayBhaGVhZCB0byBzZWUgaWYgd2UgbWlnaHQgZm9ybSBhIG9uZS1saW5lIGJsb2NrLi4KICAgICAgICAgICAgICAgIG15ICR0b29fbG9uZyA9CiAgICAgICAgICAgICAgICAgICRzZWxmLT5zdGFydGluZ19vbmVfbGluZV9ibG9jayggJGosICRqbWF4LCAkbGV2ZWwsICRzbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgJGNpX2xldmVsLCAkcmlucHV0X3Rva2VuX2FycmF5ICk7CiAgICAgICAgICAgICAgICBjbGVhcl9icmVha3BvaW50X3VuZG9fc3RhY2soKTsKCiAgICAgICAgICAgICAgICAjIHRvIHNpbXBsaWZ5IHRoZSBsb2dpYyBiZWxvdywgc2V0IGEgZmxhZyB0byBpbmRpY2F0ZSBpZgogICAgICAgICAgICAgICAgIyB0aGlzIG9wZW5pbmcgYnJhY2UgaXMgZmFyIGZyb20gdGhlIGtleXdvcmQgd2hpY2ggaW50cm9kdWNlcyBpdAogICAgICAgICAgICAgICAgbXkgJGtleXdvcmRfb25fc2FtZV9saW5lID0gMTsKICAgICAgICAgICAgICAgIGlmICggICAoICRtYXhfaW5kZXhfdG9fZ28gPj0gMCApCiAgICAgICAgICAgICAgICAgICAgJiYgKCAkbGFzdF9ub25ibGFua190eXBlIGVxICcpJyApCiAgICAgICAgICAgICAgICAgICAgJiYgKCAoICRzbGV2ZWwgPCAkbmVzdGluZ19kZXB0aF90b19nb1swXSApIHx8ICR0b29fbG9uZyApICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAka2V5d29yZF9vbl9zYW1lX2xpbmUgPSAwOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZGVjaWRlIGlmIHVzZXIgcmVxdWVzdGVkIGJyZWFrIGJlZm9yZSAneycKICAgICAgICAgICAgICAgIG15ICR3YW50X2JyZWFrID0KCiAgICAgICAgICAgICAgICAgICMgdXNlIC1ibCBmbGFnIGlmIG5vdCBhIHN1YiBibG9jayBvZiBhbnkgdHlwZQogICAgICAgICAgICAgICAgICAkYmxvY2tfdHlwZSAhfiAvXnN1YlxiLwogICAgICAgICAgICAgICAgICA/ICRyT3B0cy0+eydvcGVuaW5nLWJyYWNlLW9uLW5ldy1saW5lJ30KCiAgICAgICAgICAgICAgICAgICMgdXNlIC1zYmwgZmxhZyBmb3IgYSBuYW1lZCBzdWIgYmxvY2sKICAgICAgICAgICAgICAgICAgOiAkYmxvY2tfdHlwZSAhfiAvJEFTVUJfUEFUVEVSTi8KICAgICAgICAgICAgICAgICAgPyAkck9wdHMtPnsnb3BlbmluZy1zdWItYnJhY2Utb24tbmV3LWxpbmUnfQoKICAgICAgICAgICAgICAgICAgIyB1c2UgLWFzYmwgZmxhZyBmb3IgYW4gYW5vbnltb3VzIHN1YiBibG9jawogICAgICAgICAgICAgICAgICA6ICRyT3B0cy0+eydvcGVuaW5nLWFub255bW91cy1zdWItYnJhY2Utb24tbmV3LWxpbmUnfTsKCiAgICAgICAgICAgICAgICAjIERvIG5vdCBicmVhayBpZiB0aGlzIHRva2VuIGlzIHdlbGRlZCB0byB0aGUgbGVmdAogICAgICAgICAgICAgICAgaWYgKCB3ZWxkX2xlbl9sZWZ0KCAkdHlwZV9zZXF1ZW5jZSwgJHRva2VuICkgKSB7CiAgICAgICAgICAgICAgICAgICAgJHdhbnRfYnJlYWsgPSAwOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgQnJlYWsgYmVmb3JlIGFuIG9wZW5pbmcgJ3snIC4uLgogICAgICAgICAgICAgICAgaWYgKAoKICAgICAgICAgICAgICAgICAgICAjIGlmIHJlcXVlc3RlZAogICAgICAgICAgICAgICAgICAgICR3YW50X2JyZWFrCgogICAgICAgICAgICAgICAgICAgICMgYW5kIHdlIHdlcmUgdW5hYmxlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIGEgYmxvY2ssCiAgICAgICAgICAgICAgICAgICAgJiYgJGluZGV4X3N0YXJ0X29uZV9saW5lX2Jsb2NrID09IFVOREVGSU5FRF9JTkRFWAoKICAgICAgICAgICAgICAgICAgICAjIG9yIGlmIGl0IHdpbGwgbm90IGJlIG9uIHNhbWUgbGluZSBhcyBpdHMga2V5d29yZCwgc28gdGhhdAogICAgICAgICAgICAgICAgICAgICMgaXQgd2lsbCBiZSBvdXRkZW50ZWQgKGV2YWwudCwgb3ZlcmxvYWQudCksIGFuZCB0aGUgdXNlcgogICAgICAgICAgICAgICAgICAgICMgaGFzIG5vdCBpbnNpc3RlZCBvbiBrZWVwaW5nIGl0IG9uIHRoZSByaWdodAogICAgICAgICAgICAgICAgICAgIHx8ICggICAhJGtleXdvcmRfb25fc2FtZV9saW5lCiAgICAgICAgICAgICAgICAgICAgICAgICYmICEkck9wdHMtPnsnb3BlbmluZy1icmFjZS1hbHdheXMtb24tcmlnaHQnfSApCgogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICMgYnV0IG9ubHkgaWYgYWxsb3dlZAogICAgICAgICAgICAgICAgICAgIHVubGVzcyAoJG5vX2ludGVybmFsX25ld2xpbmVzKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHNpbmNlIHdlIGFscmVhZHkgc3RvcmVkIHRoaXMgdG9rZW4sIHdlIG11c3QgdW5zdG9yZSBpdAogICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi0+dW5zdG9yZV90b2tlbl90b19nbygpOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGVuIG91dHB1dCB0aGUgbGluZQogICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi0+b3V0cHV0X2xpbmVfdG9fZ28oKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgYW5kIG5vdyBzdG9yZSB0aGlzIHRva2VuIGF0IHRoZSBzdGFydCBvZiBhIG5ldyBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT5zdG9yZV90b2tlbl90b19nbygkc2lkZV9jb21tZW50X2ZvbGxvd3MpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIE5vdyB1cGRhdGUgZm9yIHNpZGUgY29tbWVudAogICAgICAgICAgICAgICAgaWYgKCRzaWRlX2NvbW1lbnRfZm9sbG93cykgeyAkbm9faW50ZXJuYWxfbmV3bGluZXMgPSAxIH0KCiAgICAgICAgICAgICAgICAjIG5vdyBvdXRwdXQgdGhpcyBsaW5lCiAgICAgICAgICAgICAgICB1bmxlc3MgKCRub19pbnRlcm5hbF9uZXdsaW5lcykgewogICAgICAgICAgICAgICAgICAgICRzZWxmLT5vdXRwdXRfbGluZV90b19nbygpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBlbHNpZiAoJGlzX2Nsb3NpbmdfQkxPQ0spIHsKCiAgICAgICAgICAgICAgICAjIElmIHRoZXJlIGlzIGEgcGVuZGluZyBvbmUtbGluZSBibG9jayAuLgogICAgICAgICAgICAgICAgaWYgKCAkaW5kZXhfc3RhcnRfb25lX2xpbmVfYmxvY2sgIT0gVU5ERUZJTkVEX0lOREVYICkgewoKICAgICAgICAgICAgICAgICAgICAjIHdlIGhhdmUgdG8gdGVybWluYXRlIGl0IGlmLi4KICAgICAgICAgICAgICAgICAgICBpZiAoCgogICAgICAgICAgICAgICAgICAgICAgICAjIGl0IGlzIHRvbyBsb25nIChmaW5hbCBsZW5ndGggbWF5IGJlIGRpZmZlcmVudCBmcm9tCiAgICAgICAgICAgICAgICAgICAgICAgICMgaW5pdGlhbCBlc3RpbWF0ZSkuIG5vdGU6IG11c3QgYWxsb3cgMSBzcGFjZSBmb3IgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICAjIHRva2VuCiAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vzc19saW5lX2xlbmd0aCggJGluZGV4X3N0YXJ0X29uZV9saW5lX2Jsb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1heF9pbmRleF90b19nbyApID49IDAKCiAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgaWYgaXQgaGFzIHRvbyBtYW55IHNlbWljb2xvbnMKICAgICAgICAgICAgICAgICAgICAgICAgfHwgKCAgICRzZW1pY29sb25zX2JlZm9yZV9ibG9ja19zZWxmX2Rlc3RydWN0ID09IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICRsYXN0X25vbmJsYW5rX3R5cGUgbmUgJzsnICkKICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Ryb3lfb25lX2xpbmVfYmxvY2soKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBwdXQgYSBicmVhayBiZWZvcmUgdGhpcyBjbG9zaW5nIGN1cmx5IGJyYWNlIGlmIGFwcHJvcHJpYXRlCiAgICAgICAgICAgICAgICB1bmxlc3MgKCAkbm9faW50ZXJuYWxfbmV3bGluZXMKICAgICAgICAgICAgICAgICAgICB8fCAkaW5kZXhfc3RhcnRfb25lX2xpbmVfYmxvY2sgIT0gVU5ERUZJTkVEX0lOREVYICkKICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgIyB3cml0ZSBvdXQgZXZlcnl0aGluZyBiZWZvcmUgdGhpcyBjbG9zaW5nIGN1cmx5IGJyYWNlCiAgICAgICAgICAgICAgICAgICAgJHNlbGYtPm91dHB1dF9saW5lX3RvX2dvKCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBOb3cgdXBkYXRlIGZvciBzaWRlIGNvbW1lbnQKICAgICAgICAgICAgICAgIGlmICgkc2lkZV9jb21tZW50X2ZvbGxvd3MpIHsgJG5vX2ludGVybmFsX25ld2xpbmVzID0gMSB9CgogICAgICAgICAgICAgICAgIyBzdG9yZSB0aGUgY2xvc2luZyBjdXJseSBicmFjZQogICAgICAgICAgICAgICAgJHNlbGYtPnN0b3JlX3Rva2VuX3RvX2dvKCk7CgogICAgICAgICAgICAgICAgIyBvaywgd2UganVzdCBzdG9yZWQgYSBjbG9zaW5nIGN1cmx5IGJyYWNlLiAgT2Z0ZW4sIGJ1dAogICAgICAgICAgICAgICAgIyBub3QgYWx3YXlzLCB3ZSB3YW50IHRvIGVuZCB0aGUgbGluZSBpbW1lZGlhdGVseS4KICAgICAgICAgICAgICAgICMgU28gbm93IHdlIGhhdmUgdG8gY2hlY2sgZm9yIHNwZWNpYWwgY2FzZXMuCgogICAgICAgICAgICAgICAgIyBpZiB0aGlzICd9JyBzdWNjZXNzZnVsbHkgZW5kcyBhIG9uZS1saW5lIGJsb2NrLi4KICAgICAgICAgICAgICAgIG15ICRpc19vbmVfbGluZV9ibG9jayA9IDA7CiAgICAgICAgICAgICAgICBteSAka2VlcF9nb2luZyAgICAgICAgPSAwOwogICAgICAgICAgICAgICAgaWYgKCAkaW5kZXhfc3RhcnRfb25lX2xpbmVfYmxvY2sgIT0gVU5ERUZJTkVEX0lOREVYICkgewoKICAgICAgICAgICAgICAgICAgICAjIFJlbWVtYmVyIHRoZSB0eXBlIG9mIHRva2VuIGp1c3QgYmVmb3JlIHRoZQogICAgICAgICAgICAgICAgICAgICMgb3BlbmluZyBicmFjZS4gIEl0IHdvdWxkIGJlIG1vcmUgZ2VuZXJhbCB0byB1c2UKICAgICAgICAgICAgICAgICAgICAjIGEgc3RhY2ssIGJ1dCB0aGlzIHdpbGwgd29yayBmb3Igb25lLWxpbmUgYmxvY2tzLgogICAgICAgICAgICAgICAgICAgICRpc19vbmVfbGluZV9ibG9jayA9CiAgICAgICAgICAgICAgICAgICAgICAkdHlwZXNfdG9fZ29bJGluZGV4X3N0YXJ0X29uZV9saW5lX2Jsb2NrXTsKCiAgICAgICAgICAgICAgICAgICAgIyB3ZSBoYXZlIHRvIGFjdHVhbGx5IG1ha2UgaXQgYnkgcmVtb3ZpbmcgdGVudGF0aXZlCiAgICAgICAgICAgICAgICAgICAgIyBicmVha3MgdGhhdCB3ZXJlIHNldCB3aXRoaW4gaXQKICAgICAgICAgICAgICAgICAgICB1bmRvX2ZvcmNlZF9icmVha3BvaW50X3N0YWNrKDApOwogICAgICAgICAgICAgICAgICAgIHNldF9ub2JyZWFrcyggJGluZGV4X3N0YXJ0X29uZV9saW5lX2Jsb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAkbWF4X2luZGV4X3RvX2dvIC0gMSApOwoKICAgICAgICAgICAgICAgICAgICAjIHRoZW4gcmUtaW5pdGlhbGl6ZSBmb3IgdGhlIG5leHQgb25lLWxpbmUgYmxvY2sKICAgICAgICAgICAgICAgICAgICBkZXN0cm95X29uZV9saW5lX2Jsb2NrKCk7CgogICAgICAgICAgICAgICAgICAgICMgdGhlbiBkZWNpZGUgaWYgd2Ugd2FudCB0byBicmVhayBhZnRlciB0aGUgJ30nIC4uCiAgICAgICAgICAgICAgICAgICAgIyBXZSB3aWxsIGtlZXAgZ29pbmcgdG8gYWxsb3cgY2VydGFpbiBicmFjZSBmb2xsb3dlcnMgYXMgaW46CiAgICAgICAgICAgICAgICAgICAgIyAgIGRvIHsgJGlmY2xvc2VkID0gMTsgbGFzdCB9IHVubGVzcyAkbG9zaW5nOwogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIEJ1dCBtYWtlIGEgbGluZSBicmVhayBpZiB0aGUgY3VybHkgZW5kcyBhCiAgICAgICAgICAgICAgICAgICAgIyBzaWduaWZpY2FudCBibG9jazoKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpc19ibG9ja193aXRob3V0X3NlbWljb2xvbnskYmxvY2tfdHlwZX0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZvbGxvdyB1c2VycyBicmVhayBwb2ludCBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb25lIGxpbmUgYmxvY2sgdHlwZXMgVSAmIEcsIHN1Y2ggYXMgYSAndHJ5JyBibG9jawogICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJGlzX29uZV9saW5lX2Jsb2NrID1+IC9eW1VHXSQvICYmICRqID09ICRqbWF4CiAgICAgICAgICAgICAgICAgICAgICAgICkKCiAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgbmVlZGxlc3Mgc2VtaWNvbG9uIGZvbGxvd3Mgd2UgaGFuZGxlIGl0IGxhdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRuZXh0X25vbmJsYW5rX3Rva2VuIG5lICc7JwogICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYtPm91dHB1dF9saW5lX3RvX2dvKCkKICAgICAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgKCRub19pbnRlcm5hbF9uZXdsaW5lcyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgc2V0IHN0cmluZyBpbmRpY2F0aW5nIHdoYXQgd2UgbmVlZCB0byBsb29rIGZvciBicmFjZSBmb2xsb3dlcgogICAgICAgICAgICAgICAgIyB0b2tlbnMKICAgICAgICAgICAgICAgIGlmICggJGJsb2NrX3R5cGUgZXEgJ2RvJyApIHsKICAgICAgICAgICAgICAgICAgICAkcmJyYWNlX2ZvbGxvd2VyID0gXCVpc19kb19mb2xsb3dlcjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJGJsb2NrX3R5cGUgPX4gL14oaWZ8ZWxzaWZ8dW5sZXNzKSQvICkgewogICAgICAgICAgICAgICAgICAgICRyYnJhY2VfZm9sbG93ZXIgPSBcJWlzX2lmX2JyYWNlX2ZvbGxvd2VyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkYmxvY2tfdHlwZSBlcSAnZWxzZScgKSB7CiAgICAgICAgICAgICAgICAgICAgJHJicmFjZV9mb2xsb3dlciA9IFwlaXNfZWxzZV9icmFjZV9mb2xsb3dlcjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGFkZGVkIGV2YWwgZm9yIGJvcnJpcy50CiAgICAgICAgICAgICAgICBlbHNpZiAoJGlzX3NvcnRfbWFwX2dyZXBfZXZhbHskYmxvY2tfdHlwZX0KICAgICAgICAgICAgICAgICAgICB8fCAkaXNfb25lX2xpbmVfYmxvY2sgZXEgJ0cnICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkcmJyYWNlX2ZvbGxvd2VyID0gdW5kZWY7CiAgICAgICAgICAgICAgICAgICAgJGtlZXBfZ29pbmcgICAgICA9IDE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBhbm9ueW1vdXMgc3ViCiAgICAgICAgICAgICAgICBlbHNpZiAoICRibG9ja190eXBlID1+IC8kQVNVQl9QQVRURVJOLyApIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCRpc19vbmVfbGluZV9ibG9jaykgewogICAgICAgICAgICAgICAgICAgICAgICAkcmJyYWNlX2ZvbGxvd2VyID0gXCVpc19hbm9uX3N1Yl8xX2JyYWNlX2ZvbGxvd2VyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHJicmFjZV9mb2xsb3dlciA9IFwlaXNfYW5vbl9zdWJfYnJhY2VfZm9sbG93ZXI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgTm9uZSBvZiB0aGUgYWJvdmU6IHNwZWNpZnkgd2hhdCBjYW4gZm9sbG93IGEgY2xvc2luZwogICAgICAgICAgICAgICAgIyBicmFjZSBvZiBhIGJsb2NrIHdoaWNoIGlzIG5vdCBhbgogICAgICAgICAgICAgICAgIyBpZi9lbHNpZi9lbHNlL2RvL3NvcnQvbWFwL2dyZXAvZXZhbAogICAgICAgICAgICAgICAgIyBUZXN0ZmlsZXM6CiAgICAgICAgICAgICAgICAjICdUb29sYmFyLnBtJywgJ01lbnViYXIucG0nLCBibGVzcy50LCAnM3J1bGVzLnBsJywgJ2JyZWFrMS50CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkcmJyYWNlX2ZvbGxvd2VyID0gXCVpc19vdGhlcl9icmFjZV9mb2xsb3dlcjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIFNlZSBpZiBhbiBlbHNpZiBibG9jayBpcyBmb2xsb3dlZCBieSBhbm90aGVyIGVsc2lmIG9yIGVsc2U7CiAgICAgICAgICAgICAgICAjIGNvbXBsYWluIGlmIG5vdC4KICAgICAgICAgICAgICAgIGlmICggJGJsb2NrX3R5cGUgZXEgJ2Vsc2lmJyApIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkbmV4dF9ub25ibGFua190b2tlbl90eXBlIGVxICdiJyApIHsgICAgIyBlbmQgb2YgbGluZT8KICAgICAgICAgICAgICAgICAgICAgICAgJGxvb2tpbmdfZm9yX2Vsc2UgPSAxOyAgICAjIG9rLCBjaGVjayBvbiBuZXh0IGxpbmUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgKCAkbmV4dF9ub25ibGFua190b2tlbiA9fiAvXihlbHNpZnxlbHNlKSQvICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiTm8gZWxzZSBibG9jayA6KFxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBrZWVwIGdvaW5nIGFmdGVyIGNlcnRhaW4gYmxvY2sgdHlwZXMgKG1hcCxzb3J0LGdyZXAsZXZhbCkKICAgICAgICAgICAgICAgICMgYWRkZWQgZXZhbCBmb3IgYm9ycmlzLnQKICAgICAgICAgICAgICAgIGlmICgka2VlcF9nb2luZykgewoKICAgICAgICAgICAgICAgICAgICAjIGtlZXAgZ29pbmcKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGlmIG5vIG1vcmUgdG9rZW5zLCBwb3N0cG9uZSBkZWNpc2lvbiB1bnRpbCByZS1lbnRyaW5nCiAgICAgICAgICAgICAgICBlbHNpZiAoICggJG5leHRfbm9uYmxhbmtfdG9rZW5fdHlwZSBlcSAnYicgKQogICAgICAgICAgICAgICAgICAgICYmICRyT3B0c19hZGRfbmV3bGluZXMgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHVubGVzcyAoJHJicmFjZV9mb2xsb3dlcikgewogICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi0+b3V0cHV0X2xpbmVfdG9fZ28oKQogICAgICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyAoJG5vX2ludGVybmFsX25ld2xpbmVzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZWxzaWYgKCRyYnJhY2VfZm9sbG93ZXIpIHsKCiAgICAgICAgICAgICAgICAgICAgdW5sZXNzICggJHJicmFjZV9mb2xsb3dlci0+eyRuZXh0X25vbmJsYW5rX3Rva2VufSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYtPm91dHB1dF9saW5lX3RvX2dvKCkKICAgICAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgKCRub19pbnRlcm5hbF9uZXdsaW5lcyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRyYnJhY2VfZm9sbG93ZXIgPSB1bmRlZjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkc2VsZi0+b3V0cHV0X2xpbmVfdG9fZ28oKSB1bmxlc3MgKCRub19pbnRlcm5hbF9uZXdsaW5lcyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9ICAgICMgZW5kIHRyZWF0bWVudCBvZiBjbG9zaW5nIGJsb2NrIHRva2VuCgogICAgICAgICAgICAjIGhhbmRsZSBzZW1pY29sb24KICAgICAgICAgICAgZWxzaWYgKCAkdHlwZSBlcSAnOycgKSB7CgogICAgICAgICAgICAgICAgIyBraWxsIG9uZS1saW5lIGJsb2NrcyB3aXRoIHRvbyBtYW55IHNlbWljb2xvbnMKICAgICAgICAgICAgICAgICRzZW1pY29sb25zX2JlZm9yZV9ibG9ja19zZWxmX2Rlc3RydWN0LS07CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgKCAkc2VtaWNvbG9uc19iZWZvcmVfYmxvY2tfc2VsZl9kZXN0cnVjdCA8IDAgKQogICAgICAgICAgICAgICAgICAgIHx8ICggICAkc2VtaWNvbG9uc19iZWZvcmVfYmxvY2tfc2VsZl9kZXN0cnVjdCA9PSAwCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRuZXh0X25vbmJsYW5rX3Rva2VuX3R5cGUgIX4gL15bYlx9XSQvICkKICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGRlc3Ryb3lfb25lX2xpbmVfYmxvY2soKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIFJlbW92ZSB1bm5lY2Vzc2FyeSBzZW1pY29sb25zLCBidXQgbm90IGFmdGVyIGJhcmUKICAgICAgICAgICAgICAgICMgYmxvY2tzLCB3aGVyZSBpdCBjb3VsZCBiZSB1bnNhZmUgaWYgdGhlIGJyYWNlIGlzCiAgICAgICAgICAgICAgICAjIG1pc3Rva2VuaXplZC4KICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3Rva2VuIGVxICd9JwogICAgICAgICAgICAgICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXNfYmxvY2tfd2l0aG91dF9zZW1pY29sb257CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfYmxvY2tfdHlwZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRsYXN0X25vbmJsYW5rX2Jsb2NrX3R5cGUgPX4gLyRTVUJfUEFUVEVSTi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRsYXN0X25vbmJsYW5rX2Jsb2NrX3R5cGUgPX4gL15cdys6JC8gKQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB8fCAkbGFzdF9ub25ibGFua190eXBlIGVxICc7JwogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJHJPcHRzLT57J2RlbGV0ZS1zZW1pY29sb25zJ30KCiAgICAgICAgICAgICAgICAgICAgICAgICMgZG9uJ3QgZGVsZXRlIDsgYmVmb3JlIGEgIyBiZWNhdXNlIGl0IHdvdWxkIHByb21vdGUgaXQKICAgICAgICAgICAgICAgICAgICAgICAgIyB0byBhIGJsb2NrIGNvbW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCAkbmV4dF9ub25ibGFua190b2tlbl90eXBlIG5lICcjJyApCiAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBub3RlX2RlbGV0ZWRfc2VtaWNvbG9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT5vdXRwdXRfbGluZV90b19nbygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5sZXNzICggJG5vX2ludGVybmFsX25ld2xpbmVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkaW5kZXhfc3RhcnRfb25lX2xpbmVfYmxvY2sgIT0gVU5ERUZJTkVEX0lOREVYICk7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCJFeHRyYSAnOydcbiIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRzZWxmLT5zdG9yZV90b2tlbl90b19nbygpOwoKICAgICAgICAgICAgICAgICRzZWxmLT5vdXRwdXRfbGluZV90b19nbygpCiAgICAgICAgICAgICAgICAgIHVubGVzcyAoICRub19pbnRlcm5hbF9uZXdsaW5lcwogICAgICAgICAgICAgICAgICAgIHx8ICggJHJPcHRzX2tlZXBfaW50ZXJpb3Jfc2VtaWNvbG9ucyAmJiAkaiA8ICRqbWF4ICkKICAgICAgICAgICAgICAgICAgICB8fCAoICRuZXh0X25vbmJsYW5rX3Rva2VuIGVxICd9JyApICk7CgogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGhhbmRsZSBoZXJlX2RvYyB0YXJnZXQgc3RyaW5nCiAgICAgICAgICAgIGVsc2lmICggJHR5cGUgZXEgJ2gnICkgewoKICAgICAgICAgICAgICAgICMgbm8gbmV3bGluZXMgYWZ0ZXIgc2VlaW5nIGhlcmUtdGFyZ2V0CiAgICAgICAgICAgICAgICAkbm9faW50ZXJuYWxfbmV3bGluZXMgPSAxOwogICAgICAgICAgICAgICAgZGVzdHJveV9vbmVfbGluZV9ibG9jaygpOwogICAgICAgICAgICAgICAgJHNlbGYtPnN0b3JlX3Rva2VuX3RvX2dvKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaGFuZGxlIGFsbCBvdGhlciB0b2tlbiB0eXBlcwogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAkc2VsZi0+c3RvcmVfdG9rZW5fdG9fZ28oKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyByZW1lbWJlciB0d28gcHJldmlvdXMgbm9uYmxhbmsgT1VUUFVUIHRva2VucwogICAgICAgICAgICBpZiAoICR0eXBlIG5lICcjJyAmJiAkdHlwZSBuZSAnYicgKSB7CiAgICAgICAgICAgICAgICAkbGFzdF9sYXN0X25vbmJsYW5rX3Rva2VuID0gJGxhc3Rfbm9uYmxhbmtfdG9rZW47CiAgICAgICAgICAgICAgICAkbGFzdF9sYXN0X25vbmJsYW5rX3R5cGUgID0gJGxhc3Rfbm9uYmxhbmtfdHlwZTsKICAgICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3Rva2VuICAgICAgPSAkdG9rZW47CiAgICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua190eXBlICAgICAgID0gJHR5cGU7CiAgICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua19ibG9ja190eXBlID0gJGJsb2NrX3R5cGU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgdW5zZXQgdGhlIGNvbnRpbnVlZC1xdW90ZSBmbGFnIHNpbmNlIGl0IG9ubHkgYXBwbGllcyB0byB0aGUKICAgICAgICAgICAgIyBmaXJzdCB0b2tlbiwgYW5kIHdlIHdhbnQgdG8gcmVzdW1lIG5vcm1hbCBmb3JtYXR0aW5nIGlmCiAgICAgICAgICAgICMgdGhlcmUgYXJlIGFkZGl0aW9uYWwgdG9rZW5zIG9uIHRoZSBsaW5lCiAgICAgICAgICAgICRpbl9jb250aW51ZWRfcXVvdGUgPSAwOwoKICAgICAgICB9ICAgICMgZW5kIG9mIGxvb3Agb3ZlciBhbGwgdG9rZW5zIGluIHRoaXMgJ2xpbmVfb2ZfdG9rZW5zJwoKICAgICAgICAjIHdlIGhhdmUgdG8gZmx1c2ggLi4KICAgICAgICBpZiAoCgogICAgICAgICAgICAjIGlmIHRoZXJlIGlzIGEgc2lkZSBjb21tZW50CiAgICAgICAgICAgICggKCAkdHlwZSBlcSAnIycgKSAmJiAhJHJPcHRzLT57J2RlbGV0ZS1zaWRlLWNvbW1lbnRzJ30gKQoKICAgICAgICAgICAgIyBpZiB0aGlzIGxpbmUgZW5kcyBpbiBhIHF1b3RlCiAgICAgICAgICAgICMgTk9URTogVGhpcyBpcyBjcml0aWNhbGx5IGltcG9ydGFudCBmb3IgaW5zdXJpbmcgdGhhdCBxdW90ZWQgbGluZXMKICAgICAgICAgICAgIyBkbyBub3QgZ2V0IHByb2Nlc3NlZCBieSB0aGluZ3MgbGlrZSAtc290IGFuZCAtc2N0CiAgICAgICAgICAgIHx8ICRpbl9xdW90ZQoKICAgICAgICAgICAgIyBpZiB0aGlzIGlzIGEgVkVSU0lPTiBzdGF0ZW1lbnQKICAgICAgICAgICAgfHwgJGlzX1ZFUlNJT05fc3RhdGVtZW50CgogICAgICAgICAgICAjIHRvIGtlZXAgYSBsYWJlbCBhdCB0aGUgZW5kIG9mIGEgbGluZQogICAgICAgICAgICB8fCAkdHlwZSBlcSAnSicKCiAgICAgICAgICAgICMgaWYgd2UgYXJlIGluc3RydWN0ZWQgdG8ga2VlcCBhbGwgb2xkIGxpbmUgYnJlYWtzCiAgICAgICAgICAgIHx8ICEkck9wdHMtPnsnZGVsZXRlLW9sZC1uZXdsaW5lcyd9CiAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBkZXN0cm95X29uZV9saW5lX2Jsb2NrKCk7CiAgICAgICAgICAgICRzZWxmLT5vdXRwdXRfbGluZV90b19nbygpOwogICAgICAgIH0KCiAgICAgICAgIyBtYXJrIG9sZCBsaW5lIGJyZWFrcG9pbnRzIGluIGN1cnJlbnQgb3V0cHV0IHN0cmVhbQogICAgICAgIGlmICggJG1heF9pbmRleF90b19nbyA+PSAwICYmICEkck9wdHNfaWdub3JlX29sZF9icmVha3BvaW50cyApIHsKICAgICAgICAgICAgbXkgJGpvYnAgPSAkbWF4X2luZGV4X3RvX2dvOwogICAgICAgICAgICBpZiAoICR0eXBlc190b19nb1skbWF4X2luZGV4X3RvX2dvXSBlcSAnYicgJiYgJG1heF9pbmRleF90b19nbyA+IDAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkam9icC0tOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRvbGRfYnJlYWtwb2ludF90b19nb1skam9icF0gPSAxOwogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9ICMjIGVuZCBzdWIgcHJpbnRfbGluZV9vZl90b2tlbnMKfSAjIyBlbmQgYmxvY2sgcHJpbnRfbGluZV9vZl90b2tlbnMKCnN1YiBjb25zZWN1dGl2ZV9ub25ibGFua19saW5lcyB7CiAgICByZXR1cm4gJGZpbGVfd3JpdGVyX29iamVjdC0+Z2V0X2NvbnNlY3V0aXZlX25vbmJsYW5rX2xpbmVzKCkgKwogICAgICAkdmVydGljYWxfYWxpZ25lcl9vYmplY3QtPmdldF9jYWNoZWRfbGluZV9jb3VudCgpOwp9CgojIHN1YiBvdXRwdXRfbGluZV90b19nbyBzZW5kcyBvbmUgbG9naWNhbCBsaW5lIG9mIHRva2VucyBvbiBkb3duIHRoZQojIHBpcGVsaW5lIHRvIHRoZSBWZXJ0aWNhbEFsaWduZXIgcGFja2FnZSwgYnJlYWtpbmcgdGhlIGxpbmUgaW50byBjb250aW51YXRpb24KIyBsaW5lcyBhcyBuZWNlc3NhcnkuICBUaGUgbGluZSBvZiB0b2tlbnMgaXMgcmVhZHkgdG8gZ28gaW4gdGhlICJ0b19nbyIKIyBhcnJheXMuCnN1YiBvdXRwdXRfbGluZV90b19nbyB7CgogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIG15ICRyTEwgID0gJHNlbGYtPntyTEx9OwoKICAgICMgZGVidWcgc3R1ZmY7IHRoaXMgcm91dGluZSBjYW4gYmUgY2FsbGVkIGZyb20gbWFueSBwb2ludHMKICAgIEZPUk1BVFRFUl9ERUJVR19GTEFHX09VVFBVVCAmJiBkbyB7CiAgICAgICAgbXkgKCAkYSwgJGIsICRjICkgPSBjYWxsZXI7CiAgICAgICAgd3JpdGVfZGlhZ25vc3RpY3MoCiJPVVRQVVQ6IG91dHB1dF9saW5lX3RvX2dvIGNhbGxlZDogJGEgJGMgJGxhc3Rfbm9uYmxhbmtfdHlwZSAkbGFzdF9ub25ibGFua190b2tlbiwgb25lX2xpbmU9JGluZGV4X3N0YXJ0X29uZV9saW5lX2Jsb2NrLCB0b2tlbnMgdG8gd3JpdGU9JG1heF9pbmRleF90b19nb1xuIgogICAgICAgICk7CiAgICAgICAgbXkgJG91dHB1dF9zdHIgPSBqb2luICIiLCBAdG9rZW5zX3RvX2dvWyAwIC4uICRtYXhfaW5kZXhfdG9fZ28gXTsKICAgICAgICB3cml0ZV9kaWFnbm9zdGljcygiJG91dHB1dF9zdHJcbiIpOwogICAgfTsKCiAgICAjIERvIG5vdCBlbmQgbGluZSBpbiBhIHdlbGQKICAgICMgVE9ETzogTW92ZSB0aGlzIGZpeCBpbnRvIHRoZSByb3V0aW5lPwogICAgI215ICRqbmIgPSAkbWF4X2luZGV4X3RvX2dvOwogICAgI2lmICggJGpuYiA+IDAgJiYgJHR5cGVzX3RvX2dvWyRqbmJdIGVxICdiJyApIHsgJGpuYi0tIH0KICAgIHJldHVybiBpZiAoIHdlbGRfbGVuX3JpZ2h0X3RvX2dvKCRtYXhfaW5kZXhfdG9fZ28pICk7CgogICAgIyBqdXN0IHNldCBhIHRlbnRhdGl2ZSBicmVha3BvaW50IGlmIHdlIG1pZ2h0IGJlIGluIGEgb25lLWxpbmUgYmxvY2sKICAgIGlmICggJGluZGV4X3N0YXJ0X29uZV9saW5lX2Jsb2NrICE9IFVOREVGSU5FRF9JTkRFWCApIHsKICAgICAgICBzZXRfZm9yY2VkX2JyZWFrcG9pbnQoJG1heF9pbmRleF90b19nbyk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKIyMgICAgbXkgJGNzY3dfYmxvY2tfY29tbWVudDsKIyMgICAgJGNzY3dfYmxvY2tfY29tbWVudCA9ICRzZWxmLT5hZGRfY2xvc2luZ19zaWRlX2NvbW1lbnQoKQojIyAgICAgIGlmICggJHJPcHRzLT57J2Nsb3Npbmctc2lkZS1jb21tZW50cyd9ICYmICRtYXhfaW5kZXhfdG9fZ28gPj0gMCApOwoKICAgIG15ICRjb21tYV9hcnJvd19jb3VudF9jb250YWluZWQgPSBtYXRjaF9vcGVuaW5nX2FuZF9jbG9zaW5nX3Rva2VucygpOwoKICAgICMgdGVsbCB0aGUgLWxwIG9wdGlvbiB3ZSBhcmUgb3V0cHV0dGluZyBhIGJhdGNoIHNvIGl0IGNhbiBjbG9zZQogICAgIyBhbnkgdW5maW5pc2hlZCBpdGVtcyBpbiBpdHMgc3RhY2sKICAgIGZpbmlzaF9scF9iYXRjaCgpOwoKICAgICMgSWYgdGhpcyBsaW5lIGVuZHMgaW4gYSBjb2RlIGJsb2NrIGJyYWNlLCBzZXQgYnJlYWtzIGF0IGFueQogICAgIyBwcmV2aW91cyBjbG9zaW5nIGNvZGUgYmxvY2sgYnJhY2VzIHRvIGJyZWFrdXAgYSBjaGFpbiBvZiBjb2RlCiAgICAjIGJsb2NrcyBvbiBvbmUgbGluZS4gIFRoaXMgaXMgdmVyeSByYXJlIGJ1dCBjYW4gaGFwcGVuIGZvcgogICAgIyB1c2VyLWRlZmluZWQgc3Vicy4gIEZvciBleGFtcGxlIHdlIG1pZ2h0IGJlIGxvb2tpbmcgYXQgdGhpczoKICAgICMgIEJPT0wgeyAkc2VydmVyX2RhdGF7dXB0aW1lfSA+IDA7IH0gTlVNIHsgJHNlcnZlcl9kYXRhe2xvYWR9OyB9IFNUUiB7CiAgICBteSAkc2F3X2dvb2RfYnJlYWsgPSAwOyAgICAjIGZsYWcgdG8gZm9yY2UgYnJlYWtzIGV2ZW4gaWYgc2hvcnQgbGluZQogICAgaWYgKAoKICAgICAgICAjIGxvb2tpbmcgZm9yIG9wZW5pbmcgb3IgY2xvc2luZyBibG9jayBicmFjZQogICAgICAgICRibG9ja190eXBlX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dCgogICAgICAgICMgYnV0IG5vdCBvbmUgb2YgdGhlc2Ugd2hpY2ggYXJlIG5ldmVyIGR1cGxpY2F0ZWQgb24gYSBsaW5lOgogICAgICAgICMgdW50aWx8d2hpbGV8Zm9yfGlmfGVsc2lmfGVsc2UKICAgICAgICAmJiAhJGlzX2Jsb2NrX3dpdGhvdXRfc2VtaWNvbG9ueyAkYmxvY2tfdHlwZV90b19nb1skbWF4X2luZGV4X3RvX2dvXSB9CiAgICAgICkKICAgIHsKICAgICAgICBteSAkbGV2ID0gJG5lc3RpbmdfZGVwdGhfdG9fZ29bJG1heF9pbmRleF90b19nb107CgogICAgICAgICMgV2FsayBiYWNrd2FyZHMgZnJvbSB0aGUgZW5kIGFuZAogICAgICAgICMgc2V0IGJyZWFrIGF0IGFueSBjbG9zaW5nIGJsb2NrIGJyYWNlcyBhdCB0aGUgc2FtZSBsZXZlbC4KICAgICAgICAjIEJ1dCBxdWl0IGlmIHdlIGFyZSBub3QgaW4gYSBjaGFpbiBvZiBibG9ja3MuCiAgICAgICAgZm9yICggbXkgJGkgPSAkbWF4X2luZGV4X3RvX2dvIC0gMSA7ICRpID49IDAgOyAkaS0tICkgewogICAgICAgICAgICBsYXN0IGlmICggJGxldmVsc190b19nb1skaV0gPCAkbGV2ICk7ICAgICMgc3RvcCBhdCBhIGxvd2VyIGxldmVsCiAgICAgICAgICAgIG5leHQgaWYgKCAkbGV2ZWxzX3RvX2dvWyRpXSA+ICRsZXYgKTsgICAgIyBza2lwIHBhc3QgaGlnaGVyIGxldmVsCgogICAgICAgICAgICBpZiAoICRibG9ja190eXBlX3RvX2dvWyRpXSApIHsKICAgICAgICAgICAgICAgIGlmICggJHRva2Vuc190b19nb1skaV0gZXEgJ30nICkgewogICAgICAgICAgICAgICAgICAgIHNldF9mb3JjZWRfYnJlYWtwb2ludCgkaSk7CiAgICAgICAgICAgICAgICAgICAgJHNhd19nb29kX2JyZWFrID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBxdWl0IGlmIHdlIHNlZSBhbnl0aGluZyBiZXNpZGVzIHdvcmRzLCBmdW5jdGlvbiwgYmxhbmtzCiAgICAgICAgICAgICMgYXQgdGhpcyBsZXZlbAogICAgICAgICAgICBlbHNpZiAoICR0eXBlc190b19nb1skaV0gIX4gL15bXChcKUd3aWJdJC8gKSB7IGxhc3QgfQogICAgICAgIH0KICAgIH0KCiAgICBteSAkaW1pbiA9IDA7CiAgICBteSAkaW1heCA9ICRtYXhfaW5kZXhfdG9fZ287CgogICAgIyB0cmltIGFueSBibGFuayB0b2tlbnMKICAgIGlmICggJG1heF9pbmRleF90b19nbyA+PSAwICkgewogICAgICAgIGlmICggJHR5cGVzX3RvX2dvWyRpbWluXSBlcSAnYicgKSB7ICRpbWluKysgfQogICAgICAgIGlmICggJHR5cGVzX3RvX2dvWyRpbWF4XSBlcSAnYicgKSB7ICRpbWF4LS0gfQogICAgfQoKICAgICMgYW55dGhpbmcgbGVmdCB0byB3cml0ZT8KICAgIGlmICggJGltaW4gPD0gJGltYXggKSB7CgogICAgICAgICMgYWRkIGEgYmxhbmsgbGluZSBiZWZvcmUgY2VydGFpbiBrZXkgdHlwZXMgYnV0IG5vdCBhZnRlciBhIGNvbW1lbnQKICAgICAgICBpZiAoICRsYXN0X2xpbmVfbGVhZGluZ190eXBlICF+IC9eWyNdLyApIHsKICAgICAgICAgICAgbXkgJHdhbnRfYmxhbmsgICAgPSAwOwogICAgICAgICAgICBteSAkbGVhZGluZ190b2tlbiA9ICR0b2tlbnNfdG9fZ29bJGltaW5dOwogICAgICAgICAgICBteSAkbGVhZGluZ190eXBlICA9ICR0eXBlc190b19nb1skaW1pbl07CgogICAgICAgICAgICAjIGJsYW5rIGxpbmVzIGJlZm9yZSBzdWJzIGV4Y2VwdCBkZWNsYXJhdGlvbnMgYW5kIG9uZS1saW5lcnMKICAgICAgICAgICAgIyBNQ09OVkVSU0lPTiBMT0NBVElPTiAtIGZvciBzdWIgdG9rZW5pemF0aW9uIGNoYW5nZQogICAgICAgICAgICBpZiAoICRsZWFkaW5nX3Rva2VuID1+IC9eKHN1YlxzKS8gJiYgJGxlYWRpbmdfdHlwZSBlcSAnaScgKSB7CiAgICAgICAgICAgICAgICAkd2FudF9ibGFuayA9ICRyT3B0cy0+eydibGFuay1saW5lcy1iZWZvcmUtc3Vicyd9CiAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICB0ZXJtaW5hbF90eXBlKCBcQHR5cGVzX3RvX2dvLCBcQGJsb2NrX3R5cGVfdG9fZ28sICRpbWluLAogICAgICAgICAgICAgICAgICAgICAgICAkaW1heCApICF+IC9eW1w7XH1dJC8KICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBicmVhayBiZWZvcmUgYWxsIHBhY2thZ2UgZGVjbGFyYXRpb25zCiAgICAgICAgICAgICMgTUNPTlZFUlNJT04gTE9DQVRJT04gLSBmb3IgdG9rZW5pemF0b24gY2hhbmdlCiAgICAgICAgICAgIGVsc2lmICgkbGVhZGluZ190b2tlbiA9fiAvXihwYWNrYWdlXHMpLwogICAgICAgICAgICAgICAgJiYgJGxlYWRpbmdfdHlwZSBlcSAnaScgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkd2FudF9ibGFuayA9ICRyT3B0cy0+eydibGFuay1saW5lcy1iZWZvcmUtcGFja2FnZXMnfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBicmVhayBiZWZvcmUgY2VydGFpbiBrZXkgYmxvY2tzIGV4Y2VwdCBvbmUtbGluZXJzCiAgICAgICAgICAgIGlmICggJGxlYWRpbmdfdG9rZW4gPX4gL14oQkVHSU58RU5EKSQvICYmICRsZWFkaW5nX3R5cGUgZXEgJ2snICkgewogICAgICAgICAgICAgICAgJHdhbnRfYmxhbmsgPSAkck9wdHMtPnsnYmxhbmstbGluZXMtYmVmb3JlLXN1YnMnfQogICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgdGVybWluYWxfdHlwZSggXEB0eXBlc190b19nbywgXEBibG9ja190eXBlX3RvX2dvLCAkaW1pbiwKICAgICAgICAgICAgICAgICAgICAgICAgJGltYXggKSBuZSAnfScKICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBCcmVhayBiZWZvcmUgY2VydGFpbiBibG9jayB0eXBlcyBpZiB3ZSBoYXZlbid0IGhhZCBhCiAgICAgICAgICAgICMgYnJlYWsgYXQgdGhpcyBsZXZlbCBmb3IgYSB3aGlsZS4gIFRoaXMgaXMgdGhlCiAgICAgICAgICAgICMgZGlmZmljdWx0IGRlY2lzaW9uLi4KICAgICAgICAgICAgZWxzaWYgKCRsZWFkaW5nX3R5cGUgZXEgJ2snCiAgICAgICAgICAgICAgICAmJiAkbGFzdF9saW5lX2xlYWRpbmdfdHlwZSBuZSAnYicKICAgICAgICAgICAgICAgICYmICRsZWFkaW5nX3Rva2VuID1+IC9eKHVubGVzc3xpZnx3aGlsZXx1bnRpbHxmb3J8Zm9yZWFjaCkkLyApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG15ICRsYyA9ICRub25ibGFua19saW5lc19hdF9kZXB0aFskbGFzdF9saW5lX2xlYWRpbmdfbGV2ZWxdOwogICAgICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCgkbGMpICkgeyAkbGMgPSAwIH0KCiAgICAgICAgICAgICAgICAjIHBhdGNoIGZvciBSVCAjMTI4MjE2OiBubyBibGFuayBsaW5lIGluc2VydGVkIGF0IGEgbGV2ZWwgY2hhbmdlCiAgICAgICAgICAgICAgICBpZiAoICRsZXZlbHNfdG9fZ29bJGltaW5dICE9ICRsYXN0X2xpbmVfbGVhZGluZ19sZXZlbCApIHsKICAgICAgICAgICAgICAgICAgICAkbGMgPSAwOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICR3YW50X2JsYW5rID0KICAgICAgICAgICAgICAgICAgICAgJHJPcHRzLT57J2JsYW5rcy1iZWZvcmUtYmxvY2tzJ30KICAgICAgICAgICAgICAgICAgJiYgJGxjID49ICRyT3B0cy0+eydsb25nLWJsb2NrLWxpbmUtY291bnQnfQogICAgICAgICAgICAgICAgICAmJiBjb25zZWN1dGl2ZV9ub25ibGFua19saW5lcygpID49CiAgICAgICAgICAgICAgICAgICRyT3B0cy0+eydsb25nLWJsb2NrLWxpbmUtY291bnQnfQogICAgICAgICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAgICAgdGVybWluYWxfdHlwZSggXEB0eXBlc190b19nbywgXEBibG9ja190eXBlX3RvX2dvLCAkaW1pbiwKICAgICAgICAgICAgICAgICAgICAgICAgJGltYXggKSBuZSAnfScKICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBDaGVjayBmb3IgYmxhbmsgbGluZXMgd2FudGVkIGJlZm9yZSBhIGNsb3NpbmcgYnJhY2UKICAgICAgICAgICAgaWYgKCAkbGVhZGluZ190b2tlbiBlcSAnfScgKSB7CiAgICAgICAgICAgICAgICBpZiAoICAgJHJPcHRzLT57J2JsYW5rLWxpbmVzLWJlZm9yZS1jbG9zaW5nLWJsb2NrJ30KICAgICAgICAgICAgICAgICAgICAmJiAkYmxvY2tfdHlwZV90b19nb1skaW1pbl0KICAgICAgICAgICAgICAgICAgICAmJiAkYmxvY2tfdHlwZV90b19nb1skaW1pbl0gPX4KICAgICAgICAgICAgICAgICAgICAvJGJsYW5rX2xpbmVzX2JlZm9yZV9jbG9zaW5nX2Jsb2NrX3BhdHRlcm4vICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBteSAkbmJsYW5rcyA9ICRyT3B0cy0+eydibGFuay1saW5lcy1iZWZvcmUtY2xvc2luZy1ibG9jayd9OwogICAgICAgICAgICAgICAgICAgIGlmICggJG5ibGFua3MgPiAkd2FudF9ibGFuayApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHdhbnRfYmxhbmsgPSAkbmJsYW5rczsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkd2FudF9ibGFuaykgewoKICAgICAgICAgICAgICAgICMgZnV0dXJlOiBzZW5kIGJsYW5rIGxpbmUgZG93biBub3JtYWwgcGF0aCB0byBWZXJ0aWNhbEFsaWduZXIKICAgICAgICAgICAgICAgIFBlcmw6OlRpZHk6OlZlcnRpY2FsQWxpZ25lcjo6Zmx1c2goKTsKICAgICAgICAgICAgICAgICRmaWxlX3dyaXRlcl9vYmplY3QtPnJlcXVpcmVfYmxhbmtfY29kZV9saW5lcygkd2FudF9ibGFuayk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdXBkYXRlIGJsYW5rIGxpbmUgdmFyaWFibGVzIGFuZCBjb3VudCBudW1iZXIgb2YgY29uc2VjdXRpdmUKICAgICAgICAjIG5vbi1ibGFuaywgbm9uLWNvbW1lbnQgbGluZXMgYXQgdGhpcyBsZXZlbAogICAgICAgICRsYXN0X2xhc3RfbGluZV9sZWFkaW5nX2xldmVsID0gJGxhc3RfbGluZV9sZWFkaW5nX2xldmVsOwogICAgICAgICRsYXN0X2xpbmVfbGVhZGluZ19sZXZlbCAgICAgID0gJGxldmVsc190b19nb1skaW1pbl07CiAgICAgICAgaWYgKCAkbGFzdF9saW5lX2xlYWRpbmdfbGV2ZWwgPCAwICkgeyAkbGFzdF9saW5lX2xlYWRpbmdfbGV2ZWwgPSAwIH0KICAgICAgICAkbGFzdF9saW5lX2xlYWRpbmdfdHlwZSA9ICR0eXBlc190b19nb1skaW1pbl07CiAgICAgICAgaWYgKCAgICRsYXN0X2xpbmVfbGVhZGluZ19sZXZlbCA9PSAkbGFzdF9sYXN0X2xpbmVfbGVhZGluZ19sZXZlbAogICAgICAgICAgICAmJiAkbGFzdF9saW5lX2xlYWRpbmdfdHlwZSBuZSAnYicKICAgICAgICAgICAgJiYgJGxhc3RfbGluZV9sZWFkaW5nX3R5cGUgbmUgJyMnCiAgICAgICAgICAgICYmIGRlZmluZWQoICRub25ibGFua19saW5lc19hdF9kZXB0aFskbGFzdF9saW5lX2xlYWRpbmdfbGV2ZWxdICkgKQogICAgICAgIHsKICAgICAgICAgICAgJG5vbmJsYW5rX2xpbmVzX2F0X2RlcHRoWyRsYXN0X2xpbmVfbGVhZGluZ19sZXZlbF0rKzsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRub25ibGFua19saW5lc19hdF9kZXB0aFskbGFzdF9saW5lX2xlYWRpbmdfbGV2ZWxdID0gMTsKICAgICAgICB9CgogICAgICAgIEZPUk1BVFRFUl9ERUJVR19GTEFHX0ZMVVNIICYmIGRvIHsKICAgICAgICAgICAgbXkgKCAkcGFja2FnZSwgJGZpbGUsICRsaW5lICkgPSBjYWxsZXI7CiAgICAgICAgICAgIHByaW50IFNURE9VVAoiRkxVU0g6IGZsdXNoaW5nIGZyb20gJHBhY2thZ2UgJGZpbGUgJGxpbmUsIHR5cGVzPSAkdHlwZXNfdG9fZ29bJGltaW5dIHRvICR0eXBlc190b19nb1skaW1heF1cbiI7CiAgICAgICAgfTsKCiAgICAgICAgIyBhZGQgYSBjb3VwbGUgb2YgZXh0cmEgdGVybWluYWwgYmxhbmsgdG9rZW5zCiAgICAgICAgcGFkX2FycmF5X3RvX2dvKCk7CgogICAgICAgICMgc2V0IGFsbCBmb3JjZWQgYnJlYWtwb2ludHMgZm9yIGdvb2QgbGlzdCBmb3JtYXR0aW5nCiAgICAgICAgbXkgJGlzX2xvbmdfbGluZSA9IGV4Y2Vzc19saW5lX2xlbmd0aCggJGltaW4sICRtYXhfaW5kZXhfdG9fZ28gKSA+IDA7CgogICAgICAgIG15ICRvbGRfbGluZV9jb3VudF9pbl9iYXRjaCA9CiAgICAgICAgICAkc2VsZi0+Z2V0X29sZF9saW5lX2NvdW50KCAkS190b19nb1swXSwgJEtfdG9fZ29bJG1heF9pbmRleF90b19nb10gKTsKCiAgICAgICAgaWYgKAogICAgICAgICAgICAgICAkaXNfbG9uZ19saW5lCiAgICAgICAgICAgIHx8ICRvbGRfbGluZV9jb3VudF9pbl9iYXRjaCA+IDEKCiAgICAgICAgICAgICMgbXVzdCBhbHdheXMgY2FsbCBzY2FuX2xpc3QoKSB3aXRoIHVuYmFsYW5jZWQgYmF0Y2hlcyBiZWNhdXNlIGl0CiAgICAgICAgICAgICMgaXMgbWFpbnRhaW5pbmcgc29tZSBzdGFja3MKICAgICAgICAgICAgfHwgaXNfdW5iYWxhbmNlZF9iYXRjaCgpCgogICAgICAgICAgICAjIGNhbGwgc2Nhbl9saXN0IGlmIHdlIG1pZ2h0IHdhbnQgdG8gYnJlYWsgYXQgY29tbWFzCiAgICAgICAgICAgIHx8ICgKICAgICAgICAgICAgICAgICRjb21tYV9jb3VudF9pbl9iYXRjaAogICAgICAgICAgICAgICAgJiYgKCAgICRyT3B0c19tYXhpbXVtX2ZpZWxkc19wZXJfdGFibGUgPiAwCiAgICAgICAgICAgICAgICAgICAgfHwgJHJPcHRzX2NvbW1hX2Fycm93X2JyZWFrcG9pbnRzID09IDAgKQogICAgICAgICAgICApCgogICAgICAgICAgICAjIGNhbGwgc2Nhbl9saXN0IGlmIHVzZXIgbWF5IHdhbnQgdG8gYnJlYWsgb3BlbiBzb21lIG9uZS1saW5lCiAgICAgICAgICAgICMgaGFzaCByZWZlcmVuY2VzCiAgICAgICAgICAgIHx8ICggICAkY29tbWFfYXJyb3dfY291bnRfY29udGFpbmVkCiAgICAgICAgICAgICAgICAmJiAkck9wdHNfY29tbWFfYXJyb3dfYnJlYWtwb2ludHMgIT0gMyApCiAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAjIyBUaGlzIGNhdXNlZCBwcm9ibGVtcyBpbiBvbmUgdmVyc2lvbiBvZiBwZXJsIGZvciB1bmtub3duIHJlYXNvbnM6CiAgICAgICAgICAgICMjICRzYXdfZ29vZF9icmVhayB8fD0gc2Nhbl9saXN0KCk7CiAgICAgICAgICAgIG15ICRzZ2IgPSBzY2FuX2xpc3QoKTsKICAgICAgICAgICAgJHNhd19nb29kX2JyZWFrIHx8PSAkc2diOwogICAgICAgIH0KCiAgICAgICAgIyBsZXQgJHJpX2ZpcnN0IGFuZCAkcmlfbGFzdCBiZSByZWZlcmVuY2VzIHRvIGxpc3RzIG9mCiAgICAgICAgIyBmaXJzdCBhbmQgbGFzdCB0b2tlbnMgb2YgbGluZSBmcmFnbWVudHMgdG8gb3V0cHV0Li4KICAgICAgICBteSAoICRyaV9maXJzdCwgJHJpX2xhc3QgKTsKCiAgICAgICAgIyB3cml0ZSBhIHNpbmdsZSBsaW5lIGlmLi4KICAgICAgICBpZiAoCgogICAgICAgICAgICAjIHdlIGFyZW4ndCBhbGxvd2VkIHRvIGFkZCBhbnkgbmV3bGluZXMKICAgICAgICAgICAgISRyT3B0c19hZGRfbmV3bGluZXMKCiAgICAgICAgICAgICMgb3IsIHdlIGRvbid0IGFscmVhZHkgaGF2ZSBhbiBpbnRlcmlvciBicmVha3BvaW50CiAgICAgICAgICAgICMgYW5kIHdlIGRpZG4ndCBzZWUgYSBnb29kIGJyZWFrcG9pbnQKICAgICAgICAgICAgfHwgKAogICAgICAgICAgICAgICAgICAgISRmb3JjZWRfYnJlYWtwb2ludF9jb3VudAogICAgICAgICAgICAgICAgJiYgISRzYXdfZ29vZF9icmVhawoKICAgICAgICAgICAgICAgICMgYW5kIHRoaXMgbGluZSBpcyAnc2hvcnQnCiAgICAgICAgICAgICAgICAmJiAhJGlzX2xvbmdfbGluZQogICAgICAgICAgICApCiAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBAeyRyaV9maXJzdH0gPSAoJGltaW4pOwogICAgICAgICAgICBAeyRyaV9sYXN0fSAgPSAoJGltYXgpOwogICAgICAgIH0KCiAgICAgICAgIyBvdGhlcndpc2UgdXNlIG11bHRpcGxlIGxpbmVzCiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAoICRyaV9maXJzdCwgJHJpX2xhc3QsIG15ICRjb2xvbl9jb3VudCApID0KICAgICAgICAgICAgICBzZXRfY29udGludWF0aW9uX2JyZWFrcygkc2F3X2dvb2RfYnJlYWspOwoKICAgICAgICAgICAgYnJlYWtfYWxsX2NoYWluX3Rva2VucyggJHJpX2ZpcnN0LCAkcmlfbGFzdCApOwoKICAgICAgICAgICAgYnJlYWtfZXF1YWxzKCAkcmlfZmlyc3QsICRyaV9sYXN0ICk7CgogICAgICAgICAgICAjIG5vdyB3ZSBkbyBhIGNvcnJlY3Rpb24gc3RlcCB0byBjbGVhbiB0aGlzIHVwIGEgYml0CiAgICAgICAgICAgICMgKFRoZSBvbmx5IHRpbWUgd2Ugd291bGQgbm90IGRvIHRoaXMgaXMgZm9yIGRlYnVnZ2luZykKICAgICAgICAgICAgaWYgKCAkck9wdHMtPnsncmVjb21iaW5lJ30gKSB7CiAgICAgICAgICAgICAgICAoICRyaV9maXJzdCwgJHJpX2xhc3QgKSA9CiAgICAgICAgICAgICAgICAgIHJlY29tYmluZV9icmVha3BvaW50cyggJHJpX2ZpcnN0LCAkcmlfbGFzdCApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpbnNlcnRfZmluYWxfYnJlYWtzKCAkcmlfZmlyc3QsICRyaV9sYXN0ICkgaWYgJGNvbG9uX2NvdW50OwogICAgICAgIH0KCiAgICAgICAgIyBkbyBjb3JyZWN0b3Igc3RlcCBpZiAtbHAgb3B0aW9uIGlzIHVzZWQKICAgICAgICBteSAkZG9fbm90X3BhZCA9IDA7CiAgICAgICAgaWYgKCRyT3B0c19saW5lX3VwX3BhcmVudGhlc2VzKSB7CiAgICAgICAgICAgICRkb19ub3RfcGFkID0gY29ycmVjdF9scF9pbmRlbnRhdGlvbiggJHJpX2ZpcnN0LCAkcmlfbGFzdCApOwogICAgICAgIH0KICAgICAgICAkc2VsZi0+dW5tYXNrX3BoYW50b21fc2VtaWNvbG9ucyggJHJpX2ZpcnN0LCAkcmlfbGFzdCApOwogICAgICAgIGlmICggJHJPcHRzX29uZV9saW5lX2Jsb2NrX3NlbWljb2xvbnMgPT0gMCApIHsKICAgICAgICAgICAgJHNlbGYtPmRlbGV0ZV9vbmVfbGluZV9zZW1pY29sb25zKCAkcmlfZmlyc3QsICRyaV9sYXN0ICk7CiAgICAgICAgfQogICAgICAgICRzZWxmLT5zZW5kX2xpbmVzX3RvX3ZlcnRpY2FsX2FsaWduZXIoICRyaV9maXJzdCwgJHJpX2xhc3QsCiAgICAgICAgICAgICRkb19ub3RfcGFkICk7CgogICAgICAgICMgSW5zZXJ0IGFueSByZXF1ZXN0ZWQgYmxhbmsgbGluZXMgYWZ0ZXIgYW4gb3BlbmluZyBicmFjZS4gIFdlIGhhdmUgdG8KICAgICAgICAjIHNraXAgYmFjayBiZWZvcmUgYW55IHNpZGUgY29tbWVudCB0byBmaW5kIHRoZSB0ZXJtaW5hbCB0b2tlbgogICAgICAgIG15ICRpdGVybTsKICAgICAgICBmb3IgKCAkaXRlcm0gPSAkaW1heCA7ICRpdGVybSA+PSAkaW1pbiA7ICRpdGVybS0tICkgewogICAgICAgICAgICBuZXh0IGlmICR0eXBlc190b19nb1skaXRlcm1dIGVxICcjJzsKICAgICAgICAgICAgbmV4dCBpZiAkdHlwZXNfdG9fZ29bJGl0ZXJtXSBlcSAnYic7CiAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgfQoKICAgICAgICAjIHdyaXRlIHJlcXVlc3RlZCBudW1iZXIgb2YgYmxhbmsgbGluZXMgYWZ0ZXIgYW4gb3BlbmluZyBibG9jayBicmFjZQogICAgICAgIGlmICggJGl0ZXJtID49ICRpbWluICYmICR0eXBlc190b19nb1skaXRlcm1dIGVxICd7JyApIHsKICAgICAgICAgICAgaWYgKCAgICRyT3B0cy0+eydibGFuay1saW5lcy1hZnRlci1vcGVuaW5nLWJsb2NrJ30KICAgICAgICAgICAgICAgICYmICRibG9ja190eXBlX3RvX2dvWyRpdGVybV0KICAgICAgICAgICAgICAgICYmICRibG9ja190eXBlX3RvX2dvWyRpdGVybV0gPX4KICAgICAgICAgICAgICAgIC8kYmxhbmtfbGluZXNfYWZ0ZXJfb3BlbmluZ19ibG9ja19wYXR0ZXJuLyApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG15ICRuYmxhbmtzID0gJHJPcHRzLT57J2JsYW5rLWxpbmVzLWFmdGVyLW9wZW5pbmctYmxvY2snfTsKICAgICAgICAgICAgICAgIFBlcmw6OlRpZHk6OlZlcnRpY2FsQWxpZ25lcjo6Zmx1c2goKTsKICAgICAgICAgICAgICAgICRmaWxlX3dyaXRlcl9vYmplY3QtPnJlcXVpcmVfYmxhbmtfY29kZV9saW5lcygkbmJsYW5rcyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHJlcGFyZV9mb3JfbmV3X2lucHV0X2xpbmVzKCk7CgojIyAgICAjIG91dHB1dCBhbnkgbmV3IC1jc2N3IGJsb2NrIGNvbW1lbnQKIyMgICAgaWYgKCRjc2N3X2Jsb2NrX2NvbW1lbnQpIHsKIyMgICAgICAgICRzZWxmLT5mbHVzaCgpOwojIyAgICAgICAgJGZpbGVfd3JpdGVyX29iamVjdC0+d3JpdGVfY29kZV9saW5lKCAkY3Njd19ibG9ja19jb21tZW50IC4gIlxuIiApOwojIyAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBub3RlX2FkZGVkX3NlbWljb2xvbiB7CiAgICBteSAoJGxpbmVfbnVtYmVyKSA9IEBfOwogICAgJGxhc3RfYWRkZWRfc2VtaWNvbG9uX2F0ID0gJGxpbmVfbnVtYmVyOwogICAgaWYgKCAkYWRkZWRfc2VtaWNvbG9uX2NvdW50ID09IDAgKSB7CiAgICAgICAgJGZpcnN0X2FkZGVkX3NlbWljb2xvbl9hdCA9ICRsYXN0X2FkZGVkX3NlbWljb2xvbl9hdDsKICAgIH0KICAgICRhZGRlZF9zZW1pY29sb25fY291bnQrKzsKICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoIkFkZGVkICc7JyBoZXJlXG4iKTsKICAgIHJldHVybjsKfQoKc3ViIG5vdGVfZGVsZXRlZF9zZW1pY29sb24gewogICAgJGxhc3RfZGVsZXRlZF9zZW1pY29sb25fYXQgPSAkaW5wdXRfbGluZV9udW1iZXI7CiAgICBpZiAoICRkZWxldGVkX3NlbWljb2xvbl9jb3VudCA9PSAwICkgewogICAgICAgICRmaXJzdF9kZWxldGVkX3NlbWljb2xvbl9hdCA9ICRsYXN0X2RlbGV0ZWRfc2VtaWNvbG9uX2F0OwogICAgfQogICAgJGRlbGV0ZWRfc2VtaWNvbG9uX2NvdW50Kys7CiAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCJEZWxldGVkIHVubmVjZXNzYXJ5ICc7J1xuIik7ICAgICMgaSBob3BlIDspCiAgICByZXR1cm47Cn0KCnN1YiBub3RlX2VtYmVkZGVkX3RhYiB7CiAgICAkZW1iZWRkZWRfdGFiX2NvdW50Kys7CiAgICAkbGFzdF9lbWJlZGRlZF90YWJfYXQgPSAkaW5wdXRfbGluZV9udW1iZXI7CiAgICBpZiAoICEkZmlyc3RfZW1iZWRkZWRfdGFiX2F0ICkgewogICAgICAgICRmaXJzdF9lbWJlZGRlZF90YWJfYXQgPSAkbGFzdF9lbWJlZGRlZF90YWJfYXQ7CiAgICB9CgogICAgaWYgKCAkZW1iZWRkZWRfdGFiX2NvdW50IDw9IE1BWF9OQUdfTUVTU0FHRVMgKSB7CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiRW1iZWRkZWQgdGFicyBpbiBxdW90ZSBvciBwYXR0ZXJuXG4iKTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIHN0YXJ0aW5nX29uZV9saW5lX2Jsb2NrIHsKCiAgICAjIGFmdGVyIHNlZWluZyBhbiBvcGVuaW5nIGN1cmx5IGJyYWNlLCBsb29rIGZvciB0aGUgY2xvc2luZyBicmFjZQogICAgIyBhbmQgc2VlIGlmIHRoZSBlbnRpcmUgYmxvY2sgd2lsbCBmaXQgb24gYSBsaW5lLiAgVGhpcyByb3V0aW5lIGlzCiAgICAjIG5vdCBhbHdheXMgcmlnaHQgYmVjYXVzZSBpdCB1c2VzIHRoZSBvbGQgd2hpdGVzcGFjZSwgc28gYSBjaGVjawogICAgIyBpcyBtYWRlIGxhdGVyIChhdCB0aGUgY2xvc2luZyBicmFjZSkgdG8gbWFrZSBzdXJlIHdlIHJlYWxseQogICAgIyBoYXZlIGEgb25lLWxpbmUgYmxvY2suICBXZSBoYXZlIHRvIGRvIHRoaXMgcHJlbGltaW5hcnkgY2hlY2ssCiAgICAjIHRob3VnaCwgYmVjYXVzZSBvdGhlcndpc2Ugd2Ugd291bGQgYWx3YXlzIGJyZWFrIGF0IGEgc2VtaWNvbG9uCiAgICAjIHdpdGhpbiBhIG9uZS1saW5lIGJsb2NrIGlmIHRoZSBibG9jayBjb250YWlucyBtdWx0aXBsZSBzdGF0ZW1lbnRzLgoKICAgIG15ICggJHNlbGYsICRqLCAkam1heCwgJGxldmVsLCAkc2xldmVsLCAkY2lfbGV2ZWwsICRydG9rZW5fYXJyYXkgKSA9IEBfOwogICAgbXkgJHJicmVha19jb250YWluZXIgPSAkc2VsZi0+e3JicmVha19jb250YWluZXJ9OwogICAgbXkgJHJzaG9ydF9uZXN0ZWQgICAgPSAkc2VsZi0+e3JzaG9ydF9uZXN0ZWR9OwoKICAgIG15ICRqbWF4X2NoZWNrID0gQHskcnRva2VuX2FycmF5fTsKICAgIGlmICggJGptYXhfY2hlY2sgPCAkam1heCApIHsKICAgICAgICBGYXVsdCgiam1heD0kam1heCA+ICRqbWF4X2NoZWNrIik7CiAgICB9CgogICAgIyBraWxsIGFueSBjdXJyZW50IGJsb2NrIC0gd2UgY2FuIG9ubHkgZ28gMSBkZWVwCiAgICBkZXN0cm95X29uZV9saW5lX2Jsb2NrKCk7CgogICAgIyByZXR1cm4gdmFsdWU6CiAgICAjICAxPWRpc3RhbmNlIGZyb20gc3RhcnQgb2YgYmxvY2sgdG8gb3BlbmluZyBicmFjZSBleGNlZWRzIGxpbmUgbGVuZ3RoCiAgICAjICAwPW90aGVyd2lzZQoKICAgIG15ICRpX3N0YXJ0ID0gMDsKCiAgICAjIHNob3VsZG4ndCBoYXBwZW46IHRoZXJlIG11c3QgaGF2ZSBiZWVuIGEgcHJpb3IgY2FsbCB0bwogICAgIyBzdG9yZV90b2tlbl90b19nbyB0byBwdXQgdGhlIG9wZW5pbmcgYnJhY2UgaW4gdGhlIG91dHB1dCBzdHJlYW0KICAgIGlmICggJG1heF9pbmRleF90b19nbyA8IDAgKSB7CiAgICAgICAgRmF1bHQoInByb2dyYW0gYnVnOiBzdG9yZV90b2tlbl90b19nbyBjYWxsZWQgaW5jb3JyZWN0bHlcbiIpOwogICAgfQoKICAgICMgcmV0dXJuIGlmIGJsb2NrIHNob3VsZCBiZSBicm9rZW4KICAgIG15ICR0eXBlX3NlcXVlbmNlID0gJHJ0b2tlbl9hcnJheS0+WyRqXS0+W19UWVBFX1NFUVVFTkNFX107CiAgICBpZiAoICRyYnJlYWtfY29udGFpbmVyLT57JHR5cGVfc2VxdWVuY2V9ICkgewogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIG15ICRibG9ja190eXBlID0gJHJ0b2tlbl9hcnJheS0+WyRqXS0+W19CTE9DS19UWVBFX107CgogICAgIyBmaW5kIHRoZSBzdGFydGluZyBrZXl3b3JkIGZvciB0aGlzIGJsb2NrIChzdWNoIGFzICdpZicsICdlbHNlJywgLi4uKQoKICAgIGlmICggJGJsb2NrX3R5cGUgPX4gL15bXHtcfVw7XDpdJC8gfHwgJGJsb2NrX3R5cGUgPX4gL15wYWNrYWdlLyApIHsKICAgICAgICAkaV9zdGFydCA9ICRtYXhfaW5kZXhfdG9fZ287CiAgICB9CgogICAgIyB0aGUgcHJldmlvdXMgbm9uYmxhbmsgdG9rZW4gc2hvdWxkIHN0YXJ0IHRoZXNlIGJsb2NrIHR5cGVzCiAgICBlbHNpZiAoKCAkbGFzdF9sYXN0X25vbmJsYW5rX3Rva2VuX3RvX2dvIGVxICRibG9ja190eXBlICkKICAgICAgICB8fCAoICRibG9ja190eXBlID1+IC9ec3ViXGIvICkKICAgICAgICB8fCAkYmxvY2tfdHlwZSA9fiAvXChcKS8gKQogICAgewogICAgICAgICRpX3N0YXJ0ID0gJGxhc3RfbGFzdF9ub25ibGFua19pbmRleF90b19nbzsKCiAgICAgICAgIyBGb3Igc2lnbmF0dXJlcyBhbmQgZXh0ZW5kZWQgc3ludGF4IC4uLgogICAgICAgICMgSWYgdGhpcyBicmFjZSBmb2xsb3dzIGEgcGFyZW50aGVzaXplZCBsaXN0LCB3ZSBzaG91bGQgbG9vayBiYWNrIHRvCiAgICAgICAgIyBmaW5kIHRoZSBrZXl3b3JkIGJlZm9yZSB0aGUgb3BlbmluZyBwYXJlbiBiZWNhdXNlIG90aGVyd2lzZSB3ZSBtaWdodAogICAgICAgICMgZm9ybSBhIG9uZSBsaW5lIGJsb2NrIHdoaWNoIHN0YXlzIGludGFjaywgYW5kIGNhdXNlIHRoZSBwYXJlbnRoZXNpemVkCiAgICAgICAgIyBleHByZXNzaW9uIHRvIGJyZWFrIG9wZW4uIFRoYXQgbG9va3MgYmFkLiAgSG93ZXZlciwgYWN0dWFsbHkKICAgICAgICAjIHNlYXJjaGluZyBmb3IgdGhlIG9wZW5pbmcgcGFyZW4gaXMgc2xvdyBhbmQgdGVkaXVzLgogICAgICAgICMgVGhlIGFjdHVhbCBrZXl3b3JkIGlzIG9mdGVuIGF0IHRoZSBzdGFydCBvZiBhIGxpbmUsIGJ1dCBtaWdodCBub3QgYmUuCiAgICAgICAgIyBGb3IgZXhhbXBsZSwgd2UgbWlnaHQgaGF2ZSBhbiBhbm9ueW1vdXMgc3ViIHdpdGggc2lnbmF0dXJlIGxpc3QKICAgICAgICAjIGZvbGxvd2luZyBhID0+LiAgSXQgaXMgc2FmZSB0byBtYXJrIHRoZSBzdGFydCBhbnl3aGVyZSBiZWZvcmUgdGhlCiAgICAgICAgIyBvcGVuaW5nIHBhcmVuLCBzbyB3ZSBqdXN0IGdvIGJhY2sgdG8gdGhlIHByZXZvaW91cyBicmVhayAob3Igc3RhcnQgb2YKICAgICAgICAjIHRoZSBsaW5lKSBpZiB0aGF0IGlzIGJlZm9yZSB0aGUgb3BlbmluZyBwYXJlbi4gIFRoZSBtaW5vciBkb3duc2lkZSBpcwogICAgICAgICMgdGhhdCB3ZSBtYXkgdmVyeSBvY2Nhc2lvbmFsbHkgYnJlYWsgb3BlbiBhIGJsb2NrIHVubmVjZXNzYXJpbHkuCiAgICAgICAgaWYgKCAkdG9rZW5zX3RvX2dvWyRpX3N0YXJ0XSBlcSAnKScgKSB7CiAgICAgICAgICAgICRpX3N0YXJ0ID0gJGluZGV4X21heF9mb3JjZWRfYnJlYWsgKyAxOwogICAgICAgICAgICBpZiAoICR0eXBlc190b19nb1skaV9zdGFydF0gZXEgJ2InICkgeyAkaV9zdGFydCsrOyB9CiAgICAgICAgICAgIG15ICRsZXYgPSAkbGV2ZWxzX3RvX2dvWyRpX3N0YXJ0XTsKICAgICAgICAgICAgaWYgKCAkbGV2ID4gJGxldmVsICkgeyByZXR1cm4gMCB9CiAgICAgICAgfQogICAgfQoKICAgIGVsc2lmICggJGxhc3RfbGFzdF9ub25ibGFua190b2tlbl90b19nbyBlcSAnKScgKSB7CgogICAgICAgICMgRm9yIHNvbWV0aGluZyBsaWtlICJpZiAoeHh4KSB7IiwgdGhlIGtleXdvcmQgImlmIiB3aWxsIGJlCiAgICAgICAgIyBqdXN0IGFmdGVyIHRoZSBtb3N0IHJlY2VudCBicmVhay4gVGhpcyB3aWxsIGJlIDAgdW5sZXNzCiAgICAgICAgIyB3ZSBoYXZlIGp1c3Qga2lsbGVkIGEgb25lLWxpbmUgYmxvY2sgYW5kIGFyZSBzdGFydGluZyBhbm90aGVyLgogICAgICAgICMgKGRvaWYudCkKICAgICAgICAjIE5vdGU6IGNhbm5vdCB1c2UgaW5leHRfaW5kZXhfdG9fZ29bXSBoZXJlIGJlY2F1c2UgdGhhdCBhcnJheQogICAgICAgICMgaXMgc3RpbGwgYmVpbmcgY29uc3RydWN0ZWQuCiAgICAgICAgJGlfc3RhcnQgPSAkaW5kZXhfbWF4X2ZvcmNlZF9icmVhayArIDE7CiAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bJGlfc3RhcnRdIGVxICdiJyApIHsKICAgICAgICAgICAgJGlfc3RhcnQrKzsKICAgICAgICB9CgogICAgICAgICMgUGF0Y2ggdG8gYXZvaWQgYnJlYWtpbmcgc2hvcnQgYmxvY2tzIGRlZmluZWQgd2l0aCBleHRlbmRlZF9zeW50YXg6CiAgICAgICAgIyBTdHJpcCBvZmYgYW55IHRyYWlsaW5nICgpIHdoaWNoIHdhcyBhZGRlZCBpbiB0aGUgcGFyc2VyIHRvIG1hcmsKICAgICAgICAjIHRoZSBvcGVuaW5nIGtleXdvcmQuICBGb3IgZXhhbXBsZSwgaW4gdGhlIGZvbGxvd2luZwogICAgICAgICMgICAgY3JlYXRlKCBUeXBlRm9vICRlKSB7JGJ1YmJhfQogICAgICAgICMgdGhlIGJsb2NrdHlwZSB3b3VsZCBiZSBtYXJrZWQgYXMgY3JlYXRlKCkKICAgICAgICBteSAkc3RyaXBwZWRfYmxvY2tfdHlwZSA9ICRibG9ja190eXBlOwogICAgICAgICRzdHJpcHBlZF9ibG9ja190eXBlID1+IHMvXChcKSQvLzsKCiAgICAgICAgdW5sZXNzICggJHRva2Vuc190b19nb1skaV9zdGFydF0gZXEgJHN0cmlwcGVkX2Jsb2NrX3R5cGUgKSB7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgIH0KCiAgICAjIHBhdGNoIGZvciBTV0lUQ0gvQ0FTRSB0byByZXRhaW4gb25lLWxpbmUgY2FzZS93aGVuIGJsb2NrcwogICAgZWxzaWYgKCAkYmxvY2tfdHlwZSBlcSAnY2FzZScgfHwgJGJsb2NrX3R5cGUgZXEgJ3doZW4nICkgewoKICAgICAgICAjIE5vdGU6IGNhbm5vdCB1c2UgaW5leHRfaW5kZXhfdG9fZ29bXSBoZXJlIGJlY2F1c2UgdGhhdCBhcnJheQogICAgICAgICMgaXMgc3RpbGwgYmVpbmcgY29uc3RydWN0ZWQuCiAgICAgICAgJGlfc3RhcnQgPSAkaW5kZXhfbWF4X2ZvcmNlZF9icmVhayArIDE7CiAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bJGlfc3RhcnRdIGVxICdiJyApIHsKICAgICAgICAgICAgJGlfc3RhcnQrKzsKICAgICAgICB9CiAgICAgICAgdW5sZXNzICggJHRva2Vuc190b19nb1skaV9zdGFydF0gZXEgJGJsb2NrX3R5cGUgKSB7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgIH0KCiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBteSAkcG9zID0gdG90YWxfbGluZV9sZW5ndGgoICRpX3N0YXJ0LCAkbWF4X2luZGV4X3RvX2dvICkgLSAxOwoKICAgICMgc2VlIGlmIGxlbmd0aCBpcyB0b28gbG9uZyB0byBldmVuIHN0YXJ0CiAgICBpZiAoICRwb3MgPiBtYXhpbXVtX2xpbmVfbGVuZ3RoKCRpX3N0YXJ0KSApIHsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBmb3JlYWNoIG15ICRpICggJGogKyAxIC4uICRqbWF4ICkgewoKICAgICAgICAjIG9sZCB3aGl0ZXNwYWNlIGNvdWxkIGJlIGFyYml0cmFyaWx5IGxhcmdlLCBzbyBkb24ndCB1c2UgaXQKICAgICAgICBpZiAoICRydG9rZW5fYXJyYXktPlskaV0tPltfVFlQRV9dIGVxICdiJyApIHsgJHBvcyArPSAxIH0KICAgICAgICBlbHNlIHsgJHBvcyArPSBydG9rZW5fbGVuZ3RoKCRpKSB9CgogICAgICAgICMgaWdub3JlIHNvbWUgc21hbGwgYmxvY2tzCiAgICAgICAgbXkgJHR5cGVfc2VxdWVuY2UgPSAkcnRva2VuX2FycmF5LT5bJGldLT5bX1RZUEVfU0VRVUVOQ0VfXTsKICAgICAgICBteSAkbm9icmVhayAgICAgICA9ICRyc2hvcnRfbmVzdGVkLT57JHR5cGVfc2VxdWVuY2V9OwoKICAgICAgICAjIFJldHVybiBmYWxzZSByZXN1bHQgaWYgd2UgZXhjZWVkIHRoZSBtYXhpbXVtIGxpbmUgbGVuZ3RoLAogICAgICAgIGlmICggJHBvcyA+IG1heGltdW1fbGluZV9sZW5ndGgoJGlfc3RhcnQpICkgewogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICAgICMga2VlcCBnb2luZyBmb3Igbm9uLWNvbnRhaW5lcnMKICAgICAgICBlbHNpZiAoICEkdHlwZV9zZXF1ZW5jZSApIHsKCiAgICAgICAgfQoKICAgICAgICAjIHJldHVybiBpZiB3ZSBlbmNvdW50ZXIgYW5vdGhlciBvcGVuaW5nIGJyYWNlIGJlZm9yZSBmaW5kaW5nIHRoZQogICAgICAgICMgY2xvc2luZyBicmFjZS4KICAgICAgICBlbHNpZiAoJHJ0b2tlbl9hcnJheS0+WyRpXS0+W19UT0tFTl9dIGVxICd7JwogICAgICAgICAgICAmJiAkcnRva2VuX2FycmF5LT5bJGldLT5bX1RZUEVfXSBlcSAneycKICAgICAgICAgICAgJiYgJHJ0b2tlbl9hcnJheS0+WyRpXS0+W19CTE9DS19UWVBFX10KICAgICAgICAgICAgJiYgISRub2JyZWFrICkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgICAgIyBpZiB3ZSBmaW5kIG91ciBjbG9zaW5nIGJyYWNlLi4KICAgICAgICBlbHNpZiAoJHJ0b2tlbl9hcnJheS0+WyRpXS0+W19UT0tFTl9dIGVxICd9JwogICAgICAgICAgICAmJiAkcnRva2VuX2FycmF5LT5bJGldLT5bX1RZUEVfXSBlcSAnfScKICAgICAgICAgICAgJiYgJHJ0b2tlbl9hcnJheS0+WyRpXS0+W19CTE9DS19UWVBFX10KICAgICAgICAgICAgJiYgISRub2JyZWFrICkKICAgICAgICB7CgogICAgICAgICAgICAjIGJlIHN1cmUgYW55IHRyYWlsaW5nIGNvbW1lbnQgYWxzbyBmaXRzIG9uIHRoZSBsaW5lCiAgICAgICAgICAgIG15ICRpX25vbmJsYW5rID0KICAgICAgICAgICAgICAoICRydG9rZW5fYXJyYXktPlsgJGkgKyAxIF0tPltfVFlQRV9dIGVxICdiJyApID8gJGkgKyAyIDogJGkgKyAxOwoKICAgICAgICAgICAgIyBQYXRjaCBmb3Igb25lLWxpbmUgc29ydC9tYXAvZ3JlcC9ldmFsIGJsb2NrcyB3aXRoIHNpZGUgY29tbWVudHM6CiAgICAgICAgICAgICMgV2Ugd2lsbCBpZ25vcmUgdGhlIHNpZGUgY29tbWVudCBsZW5ndGggZm9yIHNvcnQvbWFwL2dyZXAvZXZhbAogICAgICAgICAgICAjIGJlY2F1c2UgdGhpcyBjYW4gbGVhZCB0byBzdGF0ZW1lbnRzIHdoaWNoIGNoYW5nZSBldmVyeSB0aW1lCiAgICAgICAgICAgICMgcGVybHRpZHkgaXMgcnVuLiAgSGVyZSBpcyBhbiBleGFtcGxlIGZyb20gRGVuaXMgTW9za293aXR6IHdoaWNoCiAgICAgICAgICAgICMgb3NjaWxsYXRlcyBiZXR3ZWVuIHRoZXNlIHR3byBzdGF0ZXMgd2l0aG91dCB0aGlzIHBhdGNoOgoKIyMgLS0tLS0tLS0KIyMgZ3JlcCB7ICRfLT5mb28gbmUgJ2JhcicgfSAjIGFzZGZhIGFzZGYgYXNkZiBhc2RmIGFzZGYgYXNkZiBhc2RmIGFzZGYgYXNkZiBhc2RmIGFzZGYKIyMgIEBiYXo7CiMjCiMjIGdyZXAgewojIyAgICAgJF8tPmZvbyBuZSAnYmFyJwojIyAgIH0gICAgIyBhc2RmYSBhc2RmIGFzZGYgYXNkZiBhc2RmIGFzZGYgYXNkZiBhc2RmIGFzZGYgYXNkZiBhc2RmCiMjICAgQGJhejsKIyMgLS0tLS0tLS0KCiAgICAgICAgICAgICMgV2hlbiB0aGUgZmlyc3QgbGluZSBpcyBpbnB1dCBpdCBnZXRzIGJyb2tlbiBhcGFydCBieSB0aGUgbWFpbgogICAgICAgICAgICAjIGxpbmUgYnJlYWsgbG9naWMgaW4gc3ViIHByaW50X2xpbmVfb2ZfdG9rZW5zLgogICAgICAgICAgICAjIFdoZW4gdGhlIHNlY29uZCBsaW5lIGlzIGlucHV0IGl0IGdldHMgcmVjb21iaW5lZCBieQogICAgICAgICAgICAjIHByaW50X2xpbmVfb2ZfdG9rZW5zIGFuZCBwYXNzZWQgdG8gdGhlIG91dHB1dCByb3V0aW5lcy4gIFRoZQogICAgICAgICAgICAjIG91dHB1dCByb3V0aW5lcyAoc2V0X2NvbnRpbnVhdGlvbl9icmVha3MpIGRvIG5vdCBicmVhayBpdCBhcGFydAogICAgICAgICAgICAjIGJlY2F1c2UgdGhlIGJvbmQgc3RyZW5ndGhzIGFyZSBzZXQgdG8gdGhlIGhpZ2hlc3QgcG9zc2libGUgdmFsdWUKICAgICAgICAgICAgIyBmb3IgZ3JlcC9tYXAvZXZhbC9zb3J0IGJsb2Nrcywgc28gdGhlIGZpcnN0IHZlcnNpb24gZ2V0cyBvdXRwdXQuCiAgICAgICAgICAgICMgSXQgd291bGQgYmUgcG9zc2libGUgdG8gZml4IHRoaXMgYnkgY2hhbmdpbmcgYm9uZCBzdHJlbmd0aHMsCiAgICAgICAgICAgICMgYnV0IHRoZXkgYXJlIGhpZ2ggdG8gcHJldmVudCBlcnJvcnMgaW4gb2xkZXIgdmVyc2lvbnMgb2YgcGVybC4KCiAgICAgICAgICAgIGlmICggJHJ0b2tlbl9hcnJheS0+WyRpX25vbmJsYW5rXS0+W19UWVBFX10gZXEgJyMnCiAgICAgICAgICAgICAgICAmJiAhJGlzX3NvcnRfbWFwX2dyZXB7JGJsb2NrX3R5cGV9ICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICRwb3MgKz0gcnRva2VuX2xlbmd0aCgkaV9ub25ibGFuayk7CgogICAgICAgICAgICAgICAgaWYgKCAkaV9ub25ibGFuayA+ICRpICsgMSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBzb3VyY2Ugd2hpdGVzcGFjZSBjb3VsZCBiZSBhbnl0aGluZywgYXNzdW1lCiAgICAgICAgICAgICAgICAgICAgIyBhdCBsZWFzdCBvbmUgc3BhY2UgYmVmb3JlIHRoZSBoYXNoIG9uIG91dHB1dAogICAgICAgICAgICAgICAgICAgIGlmICggJHJ0b2tlbl9hcnJheS0+WyAkaSArIDEgXS0+W19UWVBFX10gZXEgJ2InICkgewogICAgICAgICAgICAgICAgICAgICAgICAkcG9zICs9IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgeyAkcG9zICs9IHJ0b2tlbl9sZW5ndGgoICRpICsgMSApIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICRwb3MgPj0gbWF4aW11bV9saW5lX2xlbmd0aCgkaV9zdGFydCkgKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgb2ssIGl0J3MgYSBvbmUtbGluZSBibG9jawogICAgICAgICAgICBjcmVhdGVfb25lX2xpbmVfYmxvY2soICRpX3N0YXJ0LCAyMCApOwogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICAgICMganVzdCBrZWVwIGdvaW5nIGZvciBvdGhlciBjaGFyYWN0ZXJzCiAgICAgICAgZWxzZSB7CiAgICAgICAgfQogICAgfQoKICAgICMgQWxsb3cgY2VydGFpbiB0eXBlcyBvZiBuZXcgb25lLWxpbmUgYmxvY2tzIHRvIGZvcm0gYnkgam9pbmluZwogICAgIyBpbnB1dCBsaW5lcy4gIFRoZXNlIGNhbiBiZSBzYWZlbHkgZG9uZSwgYnV0IGZvciBvdGhlciBibG9jayB0eXBlcywKICAgICMgd2Uga2VlcCBvbGQgb25lLWxpbmUgYmxvY2tzIGJ1dCBkbyBub3QgZm9ybSBuZXcgb25lcy4gSXQgaXMgbm90CiAgICAjIGFsd2F5cyBhIGdvb2QgaWRlYSB0byBtYWtlIGFzIG1hbnkgb25lLWxpbmUgYmxvY2tzIGFzIHBvc3NpYmxlLAogICAgIyBzbyBvdGhlciB0eXBlcyBhcmUgbm90IGRvbmUuICBUaGUgdXNlciBjYW4gYWx3YXlzIHVzZSAtbWFuZ2xlLgogICAgaWYgKCAkd2FudF9vbmVfbGluZV9ibG9ja3skYmxvY2tfdHlwZX0gKSB7CiAgICAgICAgY3JlYXRlX29uZV9saW5lX2Jsb2NrKCAkaV9zdGFydCwgMSApOwogICAgfQogICAgcmV0dXJuIDA7Cn0KCnN1YiB1bnN0b3JlX3Rva2VuX3RvX2dvIHsKCiAgICAjIHJlbW92ZSBtb3N0IHJlY2VudCB0b2tlbiBmcm9tIG91dHB1dCBzdHJlYW0KICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICBpZiAoICRtYXhfaW5kZXhfdG9fZ28gPiAwICkgewogICAgICAgICRtYXhfaW5kZXhfdG9fZ28tLTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRtYXhfaW5kZXhfdG9fZ28gPSBVTkRFRklORURfSU5ERVg7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiB3YW50X2JsYW5rX2xpbmUgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgICRzZWxmLT5mbHVzaCgpOwogICAgJGZpbGVfd3JpdGVyX29iamVjdC0+d2FudF9ibGFua19saW5lKCk7CiAgICByZXR1cm47Cn0KCnN1YiB3cml0ZV91bmluZGVudGVkX2xpbmUgewogICAgbXkgKCAkc2VsZiwgJGxpbmUgKSA9IEBfOwogICAgJHNlbGYtPmZsdXNoKCk7CiAgICAkZmlsZV93cml0ZXJfb2JqZWN0LT53cml0ZV9saW5lKCRsaW5lKTsKICAgIHJldHVybjsKfQoKc3ViIHVuZG9fY2kgewoKICAgICMgVW5kbyBjb250aW51YXRpb24gaW5kZW50YXRpb24gaW4gY2VydGFpbiBzZXF1ZW5jZXMKICAgICMgRm9yIGV4YW1wbGUsIHdlIGNhbiB1bmRvIGNvbnRpbnVhdGlvbiBpbmRlbnRhdGlvbiBpbiBzb3J0L21hcC9ncmVwIGNoYWlucwogICAgIyAgICBteSAkZGF0MSA9IHBhY2soICJuKiIsCiAgICAjICAgICAgICBtYXAgeyAkXywgJGxvb2t1cC0+eyRffSB9CiAgICAjICAgICAgICAgIHNvcnQgeyAkYSA8PT4gJGIgfQogICAgIyAgICAgICAgICBncmVwIHsgJGxvb2t1cC0+eyRffSBuZSAkZGVmYXVsdCB9IGtleXMgJSRsb29rdXAgKTsKICAgICMgVG8gYWxpZ24gdGhlIG1hcC9zb3J0L2dyZXAga2V5d29yZHMgbGlrZSB0aGlzOgogICAgIyAgICBteSAkZGF0MSA9IHBhY2soICJuKiIsCiAgICAjICAgICAgICBtYXAgeyAkXywgJGxvb2t1cC0+eyRffSB9CiAgICAjICAgICAgICBzb3J0IHsgJGEgPD0+ICRiIH0KICAgICMgICAgICAgIGdyZXAgeyAkbG9va3VwLT57JF99IG5lICRkZWZhdWx0IH0ga2V5cyAlJGxvb2t1cCApOwogICAgbXkgKCAkcmlfZmlyc3QsICRyaV9sYXN0ICkgPSBAXzsKICAgIG15ICggJGxpbmVfMSwgJGxpbmVfMiwgJGxldl9sYXN0ICk7CiAgICBteSAkdGhpc19saW5lX2lzX3NlbWljb2xvbl90ZXJtaW5hdGVkOwogICAgbXkgJG1heF9saW5lID0gQHskcmlfZmlyc3R9IC0gMTsKCiAgICAjIGxvb2tpbmcgYXQgZWFjaCBsaW5lIG9mIHRoaXMgYmF0Y2guLgogICAgIyBXZSBhcmUgbG9va2luZyBhdCBsZWFkaW5nIHRva2VucyBhbmQgbG9va2luZyBmb3IgYSBzZXF1ZW5jZQogICAgIyBhbGwgYXQgdGhlIHNhbWUgbGV2ZWwgYW5kIGhpZ2hlciBsZXZlbCB0aGFuIGVuY2xvc2luZyBsaW5lcy4KICAgIGZvcmVhY2ggbXkgJGxpbmUgKCAwIC4uICRtYXhfbGluZSApIHsKCiAgICAgICAgbXkgJGliZWcgPSAkcmlfZmlyc3QtPlskbGluZV07CiAgICAgICAgbXkgJGxldiAgPSAkbGV2ZWxzX3RvX2dvWyRpYmVnXTsKICAgICAgICBpZiAoICRsaW5lID4gMCApIHsKCiAgICAgICAgICAgICMgaWYgd2UgaGF2ZSBzdGFydGVkIGEgY2hhaW4uLgogICAgICAgICAgICBpZiAoJGxpbmVfMSkgewoKICAgICAgICAgICAgICAgICMgc2VlIGlmIGl0IGNvbnRpbnVlcy4uCiAgICAgICAgICAgICAgICBpZiAoICRsZXYgPT0gJGxldl9sYXN0ICkgewogICAgICAgICAgICAgICAgICAgIGlmICggICAkdHlwZXNfdG9fZ29bJGliZWddIGVxICdrJwogICAgICAgICAgICAgICAgICAgICAgICAmJiAkaXNfc29ydF9tYXBfZ3JlcHsgJHRva2Vuc190b19nb1skaWJlZ10gfSApCiAgICAgICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjaGFpbiBjb250aW51ZXMuLi4KICAgICAgICAgICAgICAgICAgICAgICAgIyBjaGVjayBmb3IgY2hhaW4gZW5kaW5nIGF0IGVuZCBvZiBhIHN0YXRlbWVudAogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRsaW5lID09ICRtYXhfbGluZSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNlZSBvZiB0aGlzIGxpbmUgZW5kcyBhIHN0YXRlbWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGllbmQgPSAkcmlfbGFzdC0+WyRsaW5lXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzX2xpbmVfaXNfc2VtaWNvbG9uX3Rlcm1pbmF0ZWQgPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZXNfdG9fZ29bJGllbmRdIGVxICc7JwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3aXRoIHBvc3NpYmxlIHNpZGUgY29tbWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoICR0eXBlc190b19nb1skaWVuZF0gZXEgJyMnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGllbmQgLSAkaWJlZyA+PSAyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHR5cGVzX3RvX2dvWyAkaWVuZCAtIDIgXSBlcSAnOycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkdHlwZXNfdG9fZ29bICRpZW5kIC0gMSBdIGVxICdiJyApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICRsaW5lXzIgPSAkbGluZSBpZiAoJHRoaXNfbGluZV9pc19zZW1pY29sb25fdGVybWluYXRlZCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBraWxsIGNoYWluCiAgICAgICAgICAgICAgICAgICAgICAgICRsaW5lXzEgPSB1bmRlZjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRsZXYgPCAkbGV2X2xhc3QgKSB7CgogICAgICAgICAgICAgICAgICAgICMgY2hhaW4gZW5kcyB3aXRoIHByZXZpb3VzIGxpbmUKICAgICAgICAgICAgICAgICAgICAkbGluZV8yID0gJGxpbmUgLSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkbGV2ID4gJGxldl9sYXN0ICkgewoKICAgICAgICAgICAgICAgICAgICAjIGtpbGwgY2hhaW4KICAgICAgICAgICAgICAgICAgICAkbGluZV8xID0gdW5kZWY7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB1bmRvIHRoZSBjb250aW51YXRpb24gaW5kZW50YXRpb24gaWYgYSBjaGFpbiBlbmRzCiAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQoJGxpbmVfMikgJiYgZGVmaW5lZCgkbGluZV8xKSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkY29udGludWF0aW9uX2xpbmVfY291bnQgPSAkbGluZV8yIC0gJGxpbmVfMSArIDE7CiAgICAgICAgICAgICAgICAgICAgQGNpX2xldmVsc190b19nb1sgQHskcmlfZmlyc3R9WyAkbGluZV8xIC4uICRsaW5lXzIgXSBdID0KICAgICAgICAgICAgICAgICAgICAgICgwKSB4ICgkY29udGludWF0aW9uX2xpbmVfY291bnQpCiAgICAgICAgICAgICAgICAgICAgICBpZiAoICRjb250aW51YXRpb25fbGluZV9jb3VudCA+PSAwICk7CiAgICAgICAgICAgICAgICAgICAgQGxlYWRpbmdfc3BhY2VzX3RvX2dvWyBAeyRyaV9maXJzdH1bICRsaW5lXzEgLi4gJGxpbmVfMiBdIF0KICAgICAgICAgICAgICAgICAgICAgID0gQHJlZHVjZWRfc3BhY2VzX3RvX2dvWyBAeyRyaV9maXJzdH0KICAgICAgICAgICAgICAgICAgICAgIFsgJGxpbmVfMSAuLiAkbGluZV8yIF0gXTsKICAgICAgICAgICAgICAgICAgICAkbGluZV8xID0gdW5kZWY7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgbm90IGluIGEgY2hhaW4geWV0Li4KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBsb29rIGZvciBzdGFydCBvZiBhIG5ldyBzb3J0L21hcC9ncmVwIGNoYWluCiAgICAgICAgICAgICAgICBpZiAoICRsZXYgPiAkbGV2X2xhc3QgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAgICR0eXBlc190b19nb1skaWJlZ10gZXEgJ2snCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRpc19zb3J0X21hcF9ncmVweyAkdG9rZW5zX3RvX2dvWyRpYmVnXSB9ICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRsaW5lXzEgPSAkbGluZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJGxldl9sYXN0ID0gJGxldjsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIHVuZG9fbHBfY2kgewoKICAgICMgSWYgdGhlcmUgaXMgYSBzaW5nbGUsIGxvbmcgcGFyYW1ldGVyIHdpdGhpbiBwYXJlbnMsIGxpa2UgdGhpczoKICAgICMKICAgICMgICRzZWxmLT5jb21tYW5kKCAiL21zZyAiCiAgICAjICAgICAgICAuICRpbmZvbGluZS0+Y2hhbgogICAgIyAgICAgICAgLiAiIFlvdSBzYWlkICQxLCBidXQgZGlkIHlvdSBrbm93IHRoYXQgaXQncyBzcXVhcmUgd2FzICIKICAgICMgICAgICAgIC4gJDEgKiAkMSAuICIgPyIgKTsKICAgICMKICAgICMgd2UgY2FuIHJlbW92ZSB0aGUgY29udGludWF0aW9uIGluZGVudGF0aW9uIG9mIHRoZSAybmQgYW5kIGhpZ2hlciBsaW5lcwogICAgIyB0byBhY2hpZXZlIHRoaXMgZWZmZWN0LCB3aGljaCBpcyBtb3JlIHBsZWFzaW5nOgogICAgIwogICAgIyAgJHNlbGYtPmNvbW1hbmQoIi9tc2cgIgogICAgIyAgICAgICAgICAgICAgICAgLiAkaW5mb2xpbmUtPmNoYW4KICAgICMgICAgICAgICAgICAgICAgIC4gIiBZb3Ugc2FpZCAkMSwgYnV0IGRpZCB5b3Uga25vdyB0aGF0IGl0J3Mgc3F1YXJlIHdhcyAiCiAgICAjICAgICAgICAgICAgICAgICAuICQxICogJDEgLiAiID8iKTsKCiAgICBteSAoICRsaW5lX29wZW4sICRpX3N0YXJ0LCAkY2xvc2luZ19pbmRleCwgJHJpX2ZpcnN0LCAkcmlfbGFzdCApID0gQF87CiAgICBteSAkbWF4X2xpbmUgPSBAeyRyaV9maXJzdH0gLSAxOwoKICAgICMgbXVzdCBiZSBtdWx0aXBsZSBsaW5lcwogICAgcmV0dXJuIHVubGVzcyAkbWF4X2xpbmUgPiAkbGluZV9vcGVuOwoKICAgIG15ICRsZXZfc3RhcnQgICAgID0gJGxldmVsc190b19nb1skaV9zdGFydF07CiAgICBteSAkY2lfc3RhcnRfcGx1cyA9IDEgKyAkY2lfbGV2ZWxzX3RvX2dvWyRpX3N0YXJ0XTsKCiAgICAjIHNlZSBpZiBhbGwgYWRkaXRpb25hbCBsaW5lcyBpbiB0aGlzIGNvbnRhaW5lciBoYXZlIGNvbnRpbnVhdGlvbgogICAgIyBpbmRlbnRhdGlvbgogICAgbXkgJG47CiAgICBteSAkbGluZV8xID0gMSArICRsaW5lX29wZW47CiAgICBmb3IgKCAkbiA9ICRsaW5lXzEgOyAkbiA8PSAkbWF4X2xpbmUgOyArKyRuICkgewogICAgICAgIG15ICRpYmVnID0gJHJpX2ZpcnN0LT5bJG5dOwogICAgICAgIG15ICRpZW5kID0gJHJpX2xhc3QtPlskbl07CiAgICAgICAgaWYgKCAkaWJlZyBlcSAkY2xvc2luZ19pbmRleCApIHsgJG4tLTsgbGFzdCB9CiAgICAgICAgcmV0dXJuIGlmICggJGxldl9zdGFydCAhPSAkbGV2ZWxzX3RvX2dvWyRpYmVnXSApOwogICAgICAgIHJldHVybiBpZiAoICRjaV9zdGFydF9wbHVzICE9ICRjaV9sZXZlbHNfdG9fZ29bJGliZWddICk7CiAgICAgICAgbGFzdCAgIGlmICggJGNsb3NpbmdfaW5kZXggPD0gJGllbmQgKTsKICAgIH0KCiAgICAjIHdlIGNhbiByZWR1Y2UgdGhlIGluZGVudGF0aW9uIG9mIGFsbCBjb250aW51YXRpb24gbGluZXMKICAgIG15ICRjb250aW51YXRpb25fbGluZV9jb3VudCA9ICRuIC0gJGxpbmVfb3BlbjsKICAgIEBjaV9sZXZlbHNfdG9fZ29bIEB7JHJpX2ZpcnN0fVsgJGxpbmVfMSAuLiAkbiBdIF0gPQogICAgICAoMCkgeCAoJGNvbnRpbnVhdGlvbl9saW5lX2NvdW50KTsKICAgIEBsZWFkaW5nX3NwYWNlc190b19nb1sgQHskcmlfZmlyc3R9WyAkbGluZV8xIC4uICRuIF0gXSA9CiAgICAgIEByZWR1Y2VkX3NwYWNlc190b19nb1sgQHskcmlfZmlyc3R9WyAkbGluZV8xIC4uICRuIF0gXTsKICAgIHJldHVybjsKfQoKc3ViIHBhZF90b2tlbiB7CgogICAgIyBpbnNlcnQgJHBhZF9zcGFjZXMgYmVmb3JlIHRva2VuIG51bWJlciAkaXBhZAogICAgbXkgKCAkaXBhZCwgJHBhZF9zcGFjZXMgKSA9IEBfOwogICAgaWYgKCAkcGFkX3NwYWNlcyA+IDAgKSB7CiAgICAgICAgJHRva2Vuc190b19nb1skaXBhZF0gPSAnICcgeCAkcGFkX3NwYWNlcyAuICR0b2tlbnNfdG9fZ29bJGlwYWRdOwogICAgfQogICAgZWxzaWYgKCAkcGFkX3NwYWNlcyA9PSAtMSAmJiAkdG9rZW5zX3RvX2dvWyRpcGFkXSBlcSAnICcgKSB7CiAgICAgICAgJHRva2Vuc190b19nb1skaXBhZF0gPSAiIjsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIHNob3VsZG4ndCBoYXBwZW4KICAgICAgICByZXR1cm47CiAgICB9CgogICAgJHRva2VuX2xlbmd0aHNfdG9fZ29bJGlwYWRdICs9ICRwYWRfc3BhY2VzOwogICAgZm9yZWFjaCBteSAkaSAoICRpcGFkIC4uICRtYXhfaW5kZXhfdG9fZ28gKSB7CiAgICAgICAgJHN1bW1lZF9sZW5ndGhzX3RvX2dvWyAkaSArIDEgXSArPSAkcGFkX3NwYWNlczsKICAgIH0KICAgIHJldHVybjsKfQoKewogICAgbXkgJWlzX21hdGhfb3A7CgogICAgQkVHSU4gewoKICAgICAgICBteSBAcSA9IHF3KCArIC0gKiAvICk7CiAgICAgICAgQGlzX21hdGhfb3B7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKICAgIH0KCiAgICBzdWIgc2V0X2xvZ2ljYWxfcGFkZGluZyB7CgogICAgICAgICMgTG9vayBhdCBhIGJhdGNoIG9mIGxpbmVzIGFuZCBzZWUgaWYgZXh0cmEgcGFkZGluZyBjYW4gaW1wcm92ZSB0aGUKICAgICAgICAjIGFsaWdubWVudCB3aGVuIHRoZXJlIGFyZSBjZXJ0YWluIGxlYWRpbmcgb3BlcmF0b3JzLiBIZXJlIGlzIGFuCiAgICAgICAgIyBleGFtcGxlLCBpbiB3aGljaCBzb21lIGV4dHJhIHNwYWNlIGlzIGludHJvZHVjZWQgYmVmb3JlCiAgICAgICAgIyAnKCAkeWVhcicgdG8gbWFrZSBpdCBsaW5lIHVwIHdpdGggdGhlIHN1YnNlcXVlbnQgbGluZXM6CiAgICAgICAgIwogICAgICAgICMgICAgICAgaWYgKCAgICggJFllYXIgPCAxNjAxICkKICAgICAgICAjICAgICAgICAgICB8fCAoICRZZWFyID4gMjg5OSApCiAgICAgICAgIyAgICAgICAgICAgfHwgKCAkRW5kWWVhciA8IDE2MDEgKQogICAgICAgICMgICAgICAgICAgIHx8ICggJEVuZFllYXIgPiAyODk5ICkgKQogICAgICAgICMgICAgICAgewogICAgICAgICMgICAgICAgICAgICZFcnJvcl9PdXRPZlJhbmdlOwogICAgICAgICMgICAgICAgfQogICAgICAgICMKICAgICAgICBteSAoICRyaV9maXJzdCwgJHJpX2xhc3QgKSA9IEBfOwogICAgICAgIG15ICRtYXhfbGluZSA9IEB7JHJpX2ZpcnN0fSAtIDE7CgogICAgICAgICMgRklYTUU6IG1vdmUgdGhlc2UgZGVjbGFyYXRpb25zIGJlbG93CiAgICAgICAgbXkgKCAkaWJlZywgJGliZWdfbmV4dCwgJGliZWdtLCAkaWVuZCwgJGllbmRtLCAkaXBhZCwgJHBhZF9zcGFjZXMsCiAgICAgICAgICAgICR0b2tfbmV4dCwgJHR5cGVfbmV4dCwgJGhhc19sZWFkaW5nX29wX25leHQsICRoYXNfbGVhZGluZ19vcCApOwoKICAgICAgICAjIGxvb2tpbmcgYXQgZWFjaCBsaW5lIG9mIHRoaXMgYmF0Y2guLgogICAgICAgIGZvcmVhY2ggbXkgJGxpbmUgKCAwIC4uICRtYXhfbGluZSAtIDEgKSB7CgogICAgICAgICAgICAjIHNlZSBpZiB0aGUgbmV4dCBsaW5lIGJlZ2lucyB3aXRoIGEgbG9naWNhbCBvcGVyYXRvcgogICAgICAgICAgICAkaWJlZyAgICAgID0gJHJpX2ZpcnN0LT5bJGxpbmVdOwogICAgICAgICAgICAkaWVuZCAgICAgID0gJHJpX2xhc3QtPlskbGluZV07CiAgICAgICAgICAgICRpYmVnX25leHQgPSAkcmlfZmlyc3QtPlsgJGxpbmUgKyAxIF07CiAgICAgICAgICAgICR0b2tfbmV4dCAgPSAkdG9rZW5zX3RvX2dvWyRpYmVnX25leHRdOwogICAgICAgICAgICAkdHlwZV9uZXh0ID0gJHR5cGVzX3RvX2dvWyRpYmVnX25leHRdOwoKICAgICAgICAgICAgJGhhc19sZWFkaW5nX29wX25leHQgPSAoICR0b2tfbmV4dCA9fiAvXlx3LyApCiAgICAgICAgICAgICAgPyAkaXNfY2hhaW5fb3BlcmF0b3J7JHRva19uZXh0fSAgICAgICMgKyAtICogLyA6ID8gJiYgfHwKICAgICAgICAgICAgICA6ICRpc19jaGFpbl9vcGVyYXRvcnskdHlwZV9uZXh0fTsgICAgIyBhbmQsIG9yCgogICAgICAgICAgICBuZXh0IHVubGVzcyAoJGhhc19sZWFkaW5nX29wX25leHQpOwoKICAgICAgICAgICAgIyBuZXh0IGxpbmUgbXVzdCBub3QgYmUgYXQgbGVzc2VyIGRlcHRoCiAgICAgICAgICAgIG5leHQKICAgICAgICAgICAgICBpZiAoICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpYmVnXSA+CiAgICAgICAgICAgICAgICAkbmVzdGluZ19kZXB0aF90b19nb1skaWJlZ19uZXh0XSApOwoKICAgICAgICAgICAgIyBpZGVudGlmeSB0aGUgdG9rZW4gaW4gdGhpcyBsaW5lIHRvIGJlIHBhZGRlZCBvbiB0aGUgbGVmdAogICAgICAgICAgICAkaXBhZCA9IHVuZGVmOwoKICAgICAgICAgICAgIyBoYW5kbGUgbGluZXMgYXQgc2FtZSBkZXB0aC4uLgogICAgICAgICAgICBpZiAoICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpYmVnXSA9PQogICAgICAgICAgICAgICAgJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGliZWdfbmV4dF0gKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgIyBpZiB0aGlzIGlzIG5vdCBmaXJzdCBsaW5lIG9mIHRoZSBiYXRjaCAuLi4KICAgICAgICAgICAgICAgIGlmICggJGxpbmUgPiAwICkgewoKICAgICAgICAgICAgICAgICAgICAjIGFuZCB3ZSBoYXZlIGxlYWRpbmcgb3BlcmF0b3IuLgogICAgICAgICAgICAgICAgICAgIG5leHQgaWYgJGhhc19sZWFkaW5nX29wOwoKICAgICAgICAgICAgICAgICAgICAjIEludHJvZHVjZSBwYWRkaW5nIGlmLi4KICAgICAgICAgICAgICAgICAgICAjIDEuIHRoZSBwcmV2aW91cyBsaW5lIGlzIGF0IGxlc3NlciBkZXB0aCwgb3IKICAgICAgICAgICAgICAgICAgICAjIDIuIHRoZSBwcmV2aW91cyBsaW5lIGVuZHMgaW4gYW4gYXNzaWdubWVudAogICAgICAgICAgICAgICAgICAgICMgMy4gdGhlIHByZXZpb3VzIGxpbmUgZW5kcyBpbiBhICdyZXR1cm4nCiAgICAgICAgICAgICAgICAgICAgIyA0LiB0aGUgcHJldmlvdXMgbGluZSBlbmRzIGluIGEgY29tbWEKICAgICAgICAgICAgICAgICAgICAjIEV4YW1wbGUgMTogcHJldmlvdXMgbGluZSBhdCBsZXNzZXIgZGVwdGgKICAgICAgICAgICAgICAgICAgICAjICAgICAgIGlmICggICAoICRZZWFyIDwgMTYwMSApICAgICAgIyA8LSB3ZSBhcmUgaGVyZSBidXQKICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICB8fCAoICRZZWFyID4gMjg5OSApICAgICAgIyAgbGlzdCBoYXMgbm90IHlldAogICAgICAgICAgICAgICAgICAgICMgICAgICAgICAgIHx8ICggJEVuZFllYXIgPCAxNjAxICkgICAjIGNvbGxhcHNlZCB2ZXJ0aWNhbGx5CiAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICAgfHwgKCAkRW5kWWVhciA+IDI4OTkgKSApCiAgICAgICAgICAgICAgICAgICAgIyAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgRXhhbXBsZSAyOiBwcmV2aW91cyBsaW5lIGVuZGluZyBpbiBhc3NpZ25tZW50OgogICAgICAgICAgICAgICAgICAgICMgICAgJGxlYXB5ZWFyID0KICAgICAgICAgICAgICAgICAgICAjICAgICAgICAkeWVhciAlIDQgICA/IDAgICAgICMgPC0gV2UgYXJlIGhlcmUKICAgICAgICAgICAgICAgICAgICAjICAgICAgOiAkeWVhciAlIDEwMCA/IDEKICAgICAgICAgICAgICAgICAgICAjICAgICAgOiAkeWVhciAlIDQwMCA/IDAKICAgICAgICAgICAgICAgICAgICAjICAgICAgOiAxOwogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIEV4YW1wbGUgMzogcHJldmlvdXMgbGluZSBlbmRpbmcgaW4gY29tbWE6CiAgICAgICAgICAgICAgICAgICAgIyAgICBwdXNoIEBleHByLAogICAgICAgICAgICAgICAgICAgICMgICAgICAgIC90ZXN0LyAgID8gdW5kZWYKICAgICAgICAgICAgICAgICAgICAjICAgICAgOiBldmFsKCRfKSA/IDEKICAgICAgICAgICAgICAgICAgICAjICAgICAgOiBldmFsKCRfKSA/IDEKICAgICAgICAgICAgICAgICAgICAjICAgICAgOiAgICAgICAgICAgIDA7CgogICAgICAgICAgICAgICAgICAgIyBiZSBzdXJlIGxldmVscyBhZ3JlZSAoZG8gbm90IGluZGVudCBhZnRlciBhbiBpbmRlbnRlZCAnaWYnKQogICAgICAgICAgICAgICAgICAgIG5leHQKICAgICAgICAgICAgICAgICAgICAgIGlmICggJGxldmVsc190b19nb1skaWJlZ10gbmUgJGxldmVsc190b19nb1skaWJlZ19uZXh0XSApOwoKICAgICAgICAgICAgICAgICAgICAjIGFsbG93IHBhZGRpbmcgb24gZmlyc3QgbGluZSBhZnRlciBhIGNvbW1hIGJ1dCBvbmx5IGlmOgogICAgICAgICAgICAgICAgICAgICMgKDEpIHRoaXMgaXMgbGluZSAyIGFuZAogICAgICAgICAgICAgICAgICAgICMgKDIpIHRoZXJlIGFyZSBhdCBtb3JlIHRoYW4gdGhyZWUgbGluZXMgYW5kCiAgICAgICAgICAgICAgICAgICAgIyAoMykgbGluZXMgMyBhbmQgNCBoYXZlIHRoZSBzYW1lIGxlYWRpbmcgb3BlcmF0b3IKICAgICAgICAgICAgICAgICAgICAjIFRoZXNlIHJ1bGVzIHRyeSB0byBwcmV2ZW50IHBhZGRpbmcgd2l0aGluIGEgbG9uZwogICAgICAgICAgICAgICAgICAgICMgY29tbWEtc2VwYXJhdGVkIGxpc3QuCiAgICAgICAgICAgICAgICAgICAgbXkgJG9rX2NvbW1hOwogICAgICAgICAgICAgICAgICAgIGlmICggICAkdHlwZXNfdG9fZ29bJGllbmRtXSBlcSAnLCcKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGxpbmUgPT0gMQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkbWF4X2xpbmUgPiAyICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpYmVnX25leHRfbmV4dCA9ICRyaV9maXJzdC0+WyAkbGluZSArIDIgXTsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHRva19uZXh0X25leHQgID0gJHRva2Vuc190b19nb1skaWJlZ19uZXh0X25leHRdOwogICAgICAgICAgICAgICAgICAgICAgICAkb2tfY29tbWEgPSAkdG9rX25leHRfbmV4dCBlcSAkdG9rX25leHQ7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBuZXh0CiAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAkaXNfYXNzaWdubWVudHsgJHR5cGVzX3RvX2dvWyRpZW5kbV0gfQogICAgICAgICAgICAgICAgICAgICAgICB8fCAkb2tfY29tbWEKICAgICAgICAgICAgICAgICAgICAgICAgfHwgKCAkbmVzdGluZ19kZXB0aF90b19nb1skaWJlZ21dIDwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpYmVnXSApCiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICggICAkdHlwZXNfdG9fZ29bJGllbmRtXSBlcSAnaycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICR0b2tlbnNfdG9fZ29bJGllbmRtXSBlcSAncmV0dXJuJyApCiAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIHdlIHdpbGwgYWRkIHBhZGRpbmcgYmVmb3JlIHRoZSBmaXJzdCB0b2tlbgogICAgICAgICAgICAgICAgICAgICRpcGFkID0gJGliZWc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBmb3IgZmlyc3QgbGluZSBvZiB0aGUgYmF0Y2guLgogICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICMgV0FSTklORzogTmV2ZXIgaW5kZW50IGlmIGZpcnN0IGxpbmUgaXMgc3RhcnRpbmcgaW4gYQogICAgICAgICAgICAgICAgICAgICMgY29udGludWVkIHF1b3RlLCB3aGljaCB3b3VsZCBjaGFuZ2UgdGhlIHF1b3RlLgogICAgICAgICAgICAgICAgICAgIG5leHQgaWYgJHN0YXJ0aW5nX2luX3F1b3RlOwoKICAgICAgICAgICAgICAgICAgICAjIGlmIHRoaXMgaXMgdGV4dCBhZnRlciBjbG9zaW5nICd9JwogICAgICAgICAgICAgICAgICAgICMgdGhlbiBsb29rIGZvciBhbiBpbnRlcmlvciB0b2tlbiB0byBwYWQKICAgICAgICAgICAgICAgICAgICBpZiAoICR0eXBlc190b19nb1skaWJlZ10gZXEgJ30nICkgewoKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlLCB3ZSBtaWdodCBwYWQgaWYgaXQgbG9va3MgcmVhbGx5IGdvb2QKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgd2UgbWlnaHQgcGFkIHRva2VuICRpYmVnLCBzbyBiZSBzdXJlIHRoYXQgaXQKICAgICAgICAgICAgICAgICAgICAgICAgIyBpcyBhdCB0aGUgc2FtZSBkZXB0aCBhcyB0aGUgbmV4dCBsaW5lLgogICAgICAgICAgICAgICAgICAgICAgICBuZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkbmVzdGluZ19kZXB0aF90b19nb1skaWJlZ10gIT0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpYmVnX25leHRdICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIFdlIGNhbiBwYWQgb24gbGluZSAxIG9mIGEgc3RhdGVtZW50IGlmIGF0IGxlYXN0IDMKICAgICAgICAgICAgICAgICAgICAgICAgIyBsaW5lcyB3aWxsIGJlIGFsaWduZWQuIE90aGVyd2lzZSwgaXQKICAgICAgICAgICAgICAgICAgICAgICAgIyBjYW4gbG9vayB2ZXJ5IGNvbmZ1c2luZy4KCiAgICAgICAgICAgICAgICAgIyBXZSBoYXZlIHRvIGJlIGNhcmVmdWwgbm90IHRvIHBhZCBpZiB0aGVyZSBhcmUgdG9vIGZldwogICAgICAgICAgICAgICAgICMgbGluZXMuICBUaGUgY3VycmVudCBydWxlIGlzOgogICAgICAgICAgICAgICAgICMgKDEpIGluIGdlbmVyYWwgd2UgcmVxdWlyZSBhdCBsZWFzdCAzIGNvbnNlY3V0aXZlIGxpbmVzCiAgICAgICAgICAgICAgICAgIyB3aXRoIHRoZSBzYW1lIGxlYWRpbmcgY2hhaW4gb3BlcmF0b3IgdG9rZW4sCiAgICAgICAgICAgICAgICAgIyAoMikgYnV0IGFuIGV4Y2VwdGlvbiBpcyB0aGF0IHdlIG9ubHkgcmVxdWlyZSB0d28gbGluZXMKICAgICAgICAgICAgICAgICAjIHdpdGggbGVhZGluZyBjb2xvbnMgaWYgdGhlcmUgYXJlIG5vIG1vcmUgbGluZXMuICBGb3IgZXhhbXBsZSwKICAgICAgICAgICAgICAgICAjIHRoZSBmaXJzdCAkaSBpbiB0aGUgZm9sbG93aW5nIHNuaXBwZXQgd291bGQgZ2V0IHBhZGRpbmcKICAgICAgICAgICAgICAgICAjIGJ5IHRoZSBzZWNvbmQgcnVsZToKICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgIyAgICRpID09IDEgPyAoICJGaXJzdCIsICJDb2xvciIgKQogICAgICAgICAgICAgICAgICMgOiAkaSA9PSAyID8gKCAiVGhlbiIsICAiUmFyaXR5IiApCiAgICAgICAgICAgICAgICAgIyA6ICAgICAgICAgICAoICJUaGVuIiwgICJOYW1lIiApOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkbWF4X2xpbmUgPiAxICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGxlYWRpbmdfdG9rZW4gPSAkdG9rZW5zX3RvX2dvWyRpYmVnX25leHRdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHRva2Vuc19kaWZmZXI7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBuZXZlciBpbmRlbnQgbGluZSAxIG9mIGEgJy4nIHNlcmllcyBiZWNhdXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHByZXZpb3VzIGxpbmUgaXMgbW9zdCBsaWtlbHkgYXQgc2FtZSBsZXZlbC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVE9ETzogd2Ugc2hvdWxkIGFsc28gbG9vayBhdCB0aGUgbGVhc2luZ19zcGFjZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb2YgdGhlIGxhc3Qgb3V0cHV0IGxpbmUgYW5kIHNraXAgaWYgaXQgaXMgc2FtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhcyB0aGlzIGxpbmUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IGlmICggJGxlYWRpbmdfdG9rZW4gZXEgJy4nICk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGNvdW50ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGwgKCAyIC4uIDMgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCBpZiAoICRsaW5lICsgJGwgPiAkbWF4X2xpbmUgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkaWJlZ19uZXh0X25leHQgPSAkcmlfZmlyc3QtPlsgJGxpbmUgKyAkbCBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJHRva2Vuc190b19nb1skaWJlZ19uZXh0X25leHRdIG5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsZWFkaW5nX3Rva2VuICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0b2tlbnNfZGlmZmVyID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvdW50Kys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IGlmICgkdG9rZW5zX2RpZmZlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IGlmICggJGNvdW50IDwgMyAmJiAkbGVhZGluZ190b2tlbiBuZSAnOicgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpcGFkID0gJGliZWc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGZpbmQgaW50ZXJpb3IgdG9rZW4gdG8gcGFkIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICBpZiAoICFkZWZpbmVkKCRpcGFkKSApIHsKCiAgICAgICAgICAgICAgICBmb3IgKCBteSAkaSA9ICRpYmVnIDsgKCAkaSA8ICRpZW5kICkgJiYgISRpcGFkIDsgJGkrKyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBmaW5kIGFueSB1bmNsb3NlZCBjb250YWluZXIKICAgICAgICAgICAgICAgICAgICBuZXh0CiAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgKCAkdHlwZV9zZXF1ZW5jZV90b19nb1skaV0KICAgICAgICAgICAgICAgICAgICAgICAgJiYgJG1hdGVfaW5kZXhfdG9fZ29bJGldID4gJGllbmQgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBmaW5kIG5leHQgbm9uYmxhbmsgdG9rZW4gdG8gcGFkCiAgICAgICAgICAgICAgICAgICAgJGlwYWQgPSAkaW5leHRfdG9fZ29bJGldOwogICAgICAgICAgICAgICAgICAgIGxhc3QgaWYgKCAkaXBhZCA+ICRpZW5kICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBsYXN0IHVubGVzcyAkaXBhZDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBXZSBjYW5ub3QgcGFkIHRoZSBmaXJzdCBsZWFkaW5nIHRva2VuIG9mIGEgZmlsZSBiZWNhdXNlCiAgICAgICAgICAgICMgaXQgY291bGQgY2F1c2UgYSBidWcgaW4gd2hpY2ggdGhlIHN0YXJ0aW5nIGluZGVudGF0aW9uCiAgICAgICAgICAgICMgbGV2ZWwgaXMgZ3Vlc3NlZCBpbmNvcnJlY3RseSBlYWNoIHRpbWUgdGhlIGNvZGUgaXMgcnVuCiAgICAgICAgICAgICMgdGhvdWdoIHBlcmx0aWR5LCB0aHVzIGNhdXNpbmcgdGhlIGNvZGUgdG8gbWFyY2ggb2ZmIHRvCiAgICAgICAgICAgICMgdGhlIHJpZ2h0LiAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgc25pcHBldCB3b3VsZCBoYXZlCiAgICAgICAgICAgICMgdGhpcyBwcm9ibGVtOgoKIyMgICAgIG92X21ldGhvZCBteWNhbiggJHBhY2thZ2UsICcoIiInICksICAgICAgICRwYWNrYWdlCiMjICBvciBvdl9tZXRob2QgbXljYW4oICRwYWNrYWdlLCAnKDArJyApLCAgICAgICAkcGFja2FnZQojIyAgb3Igb3ZfbWV0aG9kIG15Y2FuKCAkcGFja2FnZSwgJyhib29sJyApLCAgICAgJHBhY2thZ2UKIyMgIG9yIG92X21ldGhvZCBteWNhbiggJHBhY2thZ2UsICcobm9tZXRob2QnICksICRwYWNrYWdlOwoKICAgICAgICAgICAgIyBJZiB0aGlzIHNuaXBwZXQgaXMgd2l0aGluIGEgYmxvY2sgdGhpcyB3b24ndCBoYXBwZW4KICAgICAgICAgICAgIyB1bmxlc3MgdGhlIHVzZXIganVzdCBwcm9jZXNzZXMgdGhlIHNuaXBwZXQgYWxvbmUgd2l0aGluCiAgICAgICAgICAgICMgYW4gZWRpdG9yLiAgSW4gdGhhdCBjYXNlIGVpdGhlciB0aGUgdXNlciB3aWxsIHNlZSBhbmQKICAgICAgICAgICAgIyBmaXggdGhlIHByb2JsZW0gb3IgaXQgd2lsbCBiZSBjb3JyZWN0ZWQgbmV4dCB0aW1lIHRoZQogICAgICAgICAgICAjIGVudGlyZSBmaWxlIGlzIHByb2Nlc3NlZCB3aXRoIHBlcmx0aWR5LgogICAgICAgICAgICBuZXh0IGlmICggJGlwYWQgPT0gMCAmJiAkcGVha19iYXRjaF9zaXplIDw9IDEgKTsKCiMjIFRISVMgUEFUQ0ggUkVNT1ZFUyBUSEUgRk9MTE9XSU5HIFBPT1IgUEFERElORyAobWF0aC50KSB3aXRoIC1wYnAsIEJVVAojIyBJVCBESUQgTU9SRSBIQVJNIFRIQU4gR09PRAojIyAgICAgICAgICAgIGNlaWwoCiMjICAgICAgICAgICAgICAgICAgICAgICRmb250LT57J2xvY2EnfS0+eydnbHlwaHMnfVskeF0tPnJlYWQtPnsneE1pbid9ICogMTAwMAojIyAgICAgICAgICAgICAgICAgICAgLyAkdXBlbQojIyAgICAgICAgICAgICksCiMjPyAgICAgICAgICAgICMgZG8gbm90IHB1dCBsZWFkaW5nIHBhZGRpbmcgZm9yIGp1c3QgMiBsaW5lcyBvZiBtYXRoCiMjPyAgICAgICAgICAgIGlmICggICAkaXBhZCA9PSAkaWJlZwojIz8gICAgICAgICAgICAgICAgJiYgJGxpbmUgPiAwCiMjPyAgICAgICAgICAgICAgICAmJiAkbGV2ZWxzX3RvX2dvWyRpcGFkXSA+ICRsZXZlbHNfdG9fZ29bICRpcGFkIC0gMSBdCiMjPyAgICAgICAgICAgICAgICAmJiAkaXNfbWF0aF9vcHskdHlwZV9uZXh0fQojIz8gICAgICAgICAgICAgICAgJiYgJGxpbmUgKyAyIDw9ICRtYXhfbGluZSApCiMjPyAgICAgICAgICAgIHsKIyM/ICAgICAgICAgICAgICAgIG15ICRpYmVnX25leHRfbmV4dCA9ICRyaV9maXJzdC0+WyAkbGluZSArIDIgXTsKIyM/ICAgICAgICAgICAgICAgIG15ICR0eXBlX25leHRfbmV4dCA9ICR0eXBlc190b19nb1skaWJlZ19uZXh0X25leHRdOwojIz8gICAgICAgICAgICAgICAgbmV4dCBpZiAhJGlzX21hdGhfb3B7JHR5cGVfbmV4dF9uZXh0fTsKIyM/ICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBuZXh0IGxpbmUgbXVzdCBub3QgYmUgYXQgZ3JlYXRlciBkZXB0aAogICAgICAgICAgICBteSAkaWVuZF9uZXh0ID0gJHJpX2xhc3QtPlsgJGxpbmUgKyAxIF07CiAgICAgICAgICAgIG5leHQKICAgICAgICAgICAgICBpZiAoICRuZXN0aW5nX2RlcHRoX3RvX2dvWyAkaWVuZF9uZXh0ICsgMSBdID4KICAgICAgICAgICAgICAgICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpcGFkXSApOwoKICAgICAgICAgICAgIyBsaW5lcyBtdXN0IGJlIHNvbWV3aGF0IHNpbWlsYXIgdG8gYmUgcGFkZGVkLi4KICAgICAgICAgICAgbXkgJGluZXh0X25leHQgPSAkaW5leHRfdG9fZ29bJGliZWdfbmV4dF07CiAgICAgICAgICAgIG15ICR0eXBlICAgICAgID0gJHR5cGVzX3RvX2dvWyRpcGFkXTsKICAgICAgICAgICAgbXkgJHR5cGVfbmV4dCAgPSAkdHlwZXNfdG9fZ29bICRpcGFkICsgMSBdOwoKICAgICAgICAgICAgIyBzZWUgaWYgdGhlcmUgYXJlIG11bHRpcGxlIGNvbnRpbnVhdGlvbiBsaW5lcwogICAgICAgICAgICBteSAkbG9naWNhbF9jb250aW51YXRpb25fbGluZXMgPSAxOwogICAgICAgICAgICBpZiAoICRsaW5lICsgMiA8PSAkbWF4X2xpbmUgKSB7CiAgICAgICAgICAgICAgICBteSAkbGVhZGluZ190b2tlbiAgPSAkdG9rZW5zX3RvX2dvWyRpYmVnX25leHRdOwogICAgICAgICAgICAgICAgbXkgJGliZWdfbmV4dF9uZXh0ID0gJHJpX2ZpcnN0LT5bICRsaW5lICsgMiBdOwogICAgICAgICAgICAgICAgaWYgKCAgICR0b2tlbnNfdG9fZ29bJGliZWdfbmV4dF9uZXh0XSBlcSAkbGVhZGluZ190b2tlbgogICAgICAgICAgICAgICAgICAgICYmICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpYmVnX25leHRdIGVxCiAgICAgICAgICAgICAgICAgICAgJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGliZWdfbmV4dF9uZXh0XSApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJGxvZ2ljYWxfY29udGludWF0aW9uX2xpbmVzKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2VlIGlmIGxlYWRpbmcgdHlwZXMgbWF0Y2gKICAgICAgICAgICAgbXkgJHR5cGVzX21hdGNoID0gJHR5cGVzX3RvX2dvWyRpbmV4dF9uZXh0XSBlcSAkdHlwZTsKICAgICAgICAgICAgbXkgJG1hdGNoZXNfd2l0aG91dF9iYW5nOwoKICAgICAgICAgICAgIyBpZiBmaXJzdCBsaW5lIGhhcyBsZWFkaW5nICEgdGhlbiBjb21wYXJlIHRoZSBmb2xsb3dpbmcgdG9rZW4KICAgICAgICAgICAgaWYgKCAhJHR5cGVzX21hdGNoICYmICR0eXBlIGVxICchJyApIHsKICAgICAgICAgICAgICAgICR0eXBlc19tYXRjaCA9ICRtYXRjaGVzX3dpdGhvdXRfYmFuZyA9CiAgICAgICAgICAgICAgICAgICR0eXBlc190b19nb1skaW5leHRfbmV4dF0gZXEgJHR5cGVzX3RvX2dvWyAkaXBhZCArIDEgXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKAoKICAgICAgICAgICAgICAgICMgZWl0aGVyIHdlIGhhdmUgbXVsdGlwbGUgY29udGludWF0aW9uIGxpbmVzIHRvIGZvbGxvdwogICAgICAgICAgICAgICAgIyBhbmQgd2UgYXJlIG5vdCBwYWRkaW5nIHRoZSBmaXJzdCB0b2tlbgogICAgICAgICAgICAgICAgKCAkbG9naWNhbF9jb250aW51YXRpb25fbGluZXMgPiAxICYmICRpcGFkID4gMCApCgogICAgICAgICAgICAgICAgIyBvci4uCiAgICAgICAgICAgICAgICB8fCAoCgogICAgICAgICAgICAgICAgICAgICMgdHlwZXMgbXVzdCBtYXRjaAogICAgICAgICAgICAgICAgICAgICR0eXBlc19tYXRjaAoKICAgICAgICAgICAgICAgICAgICAjIGFuZCBrZXl3b3JkcyBtdXN0IG1hdGNoIGlmIGtleXdvcmQKICAgICAgICAgICAgICAgICAgICAmJiAhKAogICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSBlcSAnaycKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHRva2Vuc190b19nb1skaXBhZF0gbmUgJHRva2Vuc190b19nb1skaW5leHRfbmV4dF0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS1iZWdpbiBzcGVjaWFsIGNoZWNrcy0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAjIFNQRUNJQUwgQ0hFQ0sgMToKICAgICAgICAgICAgICAgICMgQSBjaGVjayBpcyBuZWVkZWQgYmVmb3JlIHdlIGNhbiBtYWtlIHRoZSBwYWQuCiAgICAgICAgICAgICAgICAjIElmIHdlIGFyZSBpbiBhIGxpc3Qgd2l0aCBzb21lIGxvbmcgaXRlbXMsIHdlIHdhbnQgZWFjaAogICAgICAgICAgICAgICAgIyBpdGVtIHRvIHN0YW5kIG91dC4gIFNvIGluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgdGhlCiAgICAgICAgICAgICAgICAjIGZpcnN0IGxpbmUgYmVnaW5uaW5nIHdpdGggJyRjYXNlZm9sZC0+JyB3b3VsZCBsb29rIGdvb2QKICAgICAgICAgICAgICAgICMgcGFkZGVkIHRvIGFsaWduIHdpdGggdGhlIG5leHQgbGluZSwgYnV0IHRoZW4gaXQKICAgICAgICAgICAgICAgICMgd291bGQgYmUgaW5kZW50ZWQgbW9yZSB0aGFuIHRoZSBsYXN0IGxpbmUsIHNvIHdlCiAgICAgICAgICAgICAgICAjIHdvbid0IGRvIGl0LgogICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgIyAgb2soCiAgICAgICAgICAgICAgICAjICAgICAgJGNhc2Vmb2xkLT57Y29kZX0gICAgICAgICBlcSAnMDA0MScKICAgICAgICAgICAgICAgICMgICAgICAgICYmICRjYXNlZm9sZC0+e3N0YXR1c30gIGVxICdDJwogICAgICAgICAgICAgICAgIyAgICAgICAgJiYgJGNhc2Vmb2xkLT57bWFwcGluZ30gZXEgJzAwNjEnLAogICAgICAgICAgICAgICAgIyAgICAgICdjYXNlZm9sZCAweDQxJwogICAgICAgICAgICAgICAgIyAgKTsKICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICMgTm90ZToKICAgICAgICAgICAgICAgICMgSXQgd291bGQgYmUgZmFzdGVyLCBhbmQgYWxtb3N0IGFzIGdvb2QsIHRvIHVzZSBhIGNvbW1hCiAgICAgICAgICAgICAgICAjIGNvdW50LCBhbmQgbm90IHBhZCBpZiBjb21tYV9jb3VudCA+IDEgYW5kIHRoZSBwcmV2aW91cwogICAgICAgICAgICAgICAgIyBsaW5lIGRpZCBub3QgZW5kIHdpdGggYSBjb21tYS4KICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgIG15ICRva190b19wYWQgPSAxOwoKICAgICAgICAgICAgICAgIG15ICRpYmcgICA9ICRyaV9maXJzdC0+WyAkbGluZSArIDEgXTsKICAgICAgICAgICAgICAgIG15ICRkZXB0aCA9ICRuZXN0aW5nX2RlcHRoX3RvX2dvWyAkaWJnICsgMSBdOwoKICAgICAgICAgICAgICAgICMganVzdCB1c2Ugc2ltcGxpZmllZCBmb3JtdWxhIGZvciBsZWFkaW5nIHNwYWNlcyB0byBhdm9pZAogICAgICAgICAgICAgICAgIyBuZWVkbGVzcyBzdWIgY2FsbHMKICAgICAgICAgICAgICAgIG15ICRsc3AgPSAkbGV2ZWxzX3RvX2dvWyRpYmddICsgJGNpX2xldmVsc190b19nb1skaWJnXTsKCiAgICAgICAgICAgICAgICAjIGxvb2sgYXQgZWFjaCBsaW5lIGJleW9uZCB0aGUgbmV4dCAuLgogICAgICAgICAgICAgICAgbXkgJGwgPSAkbGluZSArIDE7CiAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRsdGVzdCAoICRsaW5lICsgMiAuLiAkbWF4X2xpbmUgKSB7CiAgICAgICAgICAgICAgICAgICAgJGwgPSAkbHRlc3Q7CiAgICAgICAgICAgICAgICAgICAgbXkgJGliZyA9ICRyaV9maXJzdC0+WyRsXTsKCiAgICAgICAgICAgICAgICAgICAgIyBxdWl0IGxvb2tpbmcgYXQgdGhlIGVuZCBvZiB0aGlzIGNvbnRhaW5lcgogICAgICAgICAgICAgICAgICAgIGxhc3QKICAgICAgICAgICAgICAgICAgICAgIGlmICggJG5lc3RpbmdfZGVwdGhfdG9fZ29bICRpYmcgKyAxIF0gPCAkZGVwdGggKQogICAgICAgICAgICAgICAgICAgICAgfHwgKCAkbmVzdGluZ19kZXB0aF90b19nb1skaWJnXSA8ICRkZXB0aCApOwoKICAgICAgICAgICAgICAgICAgICAjIGNhbm5vdCBkbyB0aGUgcGFkIGlmIGEgbGF0ZXIgbGluZSB3b3VsZCBiZQogICAgICAgICAgICAgICAgICAgICMgb3V0ZGVudGVkIG1vcmUKICAgICAgICAgICAgICAgICAgICBpZiAoICRsZXZlbHNfdG9fZ29bJGliZ10gKyAkY2lfbGV2ZWxzX3RvX2dvWyRpYmddIDwgJGxzcCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG9rX3RvX3BhZCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZG9uJ3QgcGFkIGlmIHdlIGVuZCBpbiBhIGJyb2tlbiBsaXN0CiAgICAgICAgICAgICAgICBpZiAoICRsID09ICRtYXhfbGluZSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkaTIgPSAkcmlfbGFzdC0+WyRsXTsKICAgICAgICAgICAgICAgICAgICBpZiAoICR0eXBlc190b19nb1skaTJdIGVxICcjJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGkxID0gJHJpX2ZpcnN0LT5bJGxdOwogICAgICAgICAgICAgICAgICAgICAgICBuZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybWluYWxfdHlwZSggXEB0eXBlc190b19nbywgXEBibG9ja190eXBlX3RvX2dvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpMSwgJGkyICkgZXEgJywnCiAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBTUEVDSUFMIENIRUNLIDI6CiAgICAgICAgICAgICAgICAjIGEgbWludXMgbWF5IGludHJvZHVjZSBhIHF1b3RlZCB2YXJpYWJsZSwgYW5kIHdlIHdpbGwKICAgICAgICAgICAgICAgICMgYWRkIHRoZSBwYWQgb25seSBpZiB0aGlzIGxpbmUgYmVnaW5zIHdpdGggYSBiYXJlIHdvcmQsCiAgICAgICAgICAgICAgICAjIHN1Y2ggYXMgZm9yIHRoZSB3b3JkICdCdXR0b24nIGhlcmU6CiAgICAgICAgICAgICAgICAjICAgIFsKICAgICAgICAgICAgICAgICMgICAgICAgICBCdXR0b24gICAgICA9PiAiUHJpbnQgbGV0dGVyIFwifiRfXCIiLAogICAgICAgICAgICAgICAgIyAgICAgICAgLWNvbW1hbmQgICAgID0+IFsgc3ViIHsgcHJpbnQgIiRfWzBdXG4iIH0sICRfIF0sCiAgICAgICAgICAgICAgICAjICAgICAgICAtYWNjZWxlcmF0b3IgPT4gIk1ldGErJF8iCiAgICAgICAgICAgICAgICAjICAgIF07CiAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAjICBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgJ0J1dHRvbicgaXMgcXVvdGVkLCBpdCBsb29rcyBiZXN0CiAgICAgICAgICAgICAgICAjICBub3QgdG8gcGFkOgogICAgICAgICAgICAgICAgIyAgICBbCiAgICAgICAgICAgICAgICAjICAgICAgICAnQnV0dG9uJyAgICAgPT4gIlByaW50IGxldHRlciBcIn4kX1wiIiwKICAgICAgICAgICAgICAgICMgICAgICAgIC1jb21tYW5kICAgICA9PiBbIHN1YiB7IHByaW50ICIkX1swXVxuIiB9LCAkXyBdLAogICAgICAgICAgICAgICAgIyAgICAgICAgLWFjY2VsZXJhdG9yID0+ICJNZXRhKyRfIgogICAgICAgICAgICAgICAgIyAgICBdOwogICAgICAgICAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bJGliZWdfbmV4dF0gZXEgJ20nICkgewogICAgICAgICAgICAgICAgICAgICRva190b19wYWQgPSAwIGlmICR0eXBlc190b19nb1skaWJlZ10gZXEgJ1EnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzICRva190b19wYWQ7CgogICAgICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS1lbmQgc3BlY2lhbCBjaGVjay0tLS0tLS0tLS0tLS0tLQoKICAgICAgICAgICAgICAgIG15ICRsZW5ndGhfMSA9IHRvdGFsX2xpbmVfbGVuZ3RoKCAkaWJlZywgICAgICAkaXBhZCAtIDEgKTsKICAgICAgICAgICAgICAgIG15ICRsZW5ndGhfMiA9IHRvdGFsX2xpbmVfbGVuZ3RoKCAkaWJlZ19uZXh0LCAkaW5leHRfbmV4dCAtIDEgKTsKICAgICAgICAgICAgICAgICRwYWRfc3BhY2VzID0gJGxlbmd0aF8yIC0gJGxlbmd0aF8xOwoKICAgICAgICAgICAgICAgICMgSWYgdGhlIGZpcnN0IGxpbmUgaGFzIGEgbGVhZGluZyAhIGFuZCB0aGUgc2Vjb25kIGRvZXMKICAgICAgICAgICAgICAgICMgbm90LCB0aGVuIHJlbW92ZSBvbmUgc3BhY2UgdG8gdHJ5IHRvIGFsaWduIHRoZSBuZXh0CiAgICAgICAgICAgICAgICAjIGxlYWRpbmcgY2hhcmFjdGVycywgd2hpY2ggYXJlIG9mdGVuIHRoZSBzYW1lLiAgRm9yIGV4YW1wbGU6CiAgICAgICAgICAgICAgICAjICBpZiAoICAhJHRzCiAgICAgICAgICAgICAgICAjICAgICAgfHwgJHRzID09ICRzZWxmLT5Ib2xkZXIKICAgICAgICAgICAgICAgICMgICAgICB8fCAkc2VsZi0+SG9sZGVyLT5UeXBlIGVxICJBcmVuYSIgKQogICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgIyBUaGlzIHVzdWFsbHkgaGVscHMgcmVhZGFiaWxpdHksIGJ1dCBpZiB0aGVyZSBhcmUgc3Vic2VxdWVudAogICAgICAgICAgICAgICAgIyAhIG9wZXJhdG9ycyB0aGluZ3Mgd2lsbCBzdGlsbCBnZXQgbWVzc2VkIHVwLiAgRm9yIGV4YW1wbGU6CiAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAjICBpZiAoICAhZXhpc3RzICROZXQ6OkROUzo6dHlwZXNieW5hbWV7JHF0eXBlfQogICAgICAgICAgICAgICAgIyAgICAgICYmIGV4aXN0cyAkTmV0OjpETlM6OmNsYXNzZXNieW5hbWV7JHF0eXBlfQogICAgICAgICAgICAgICAgIyAgICAgICYmICFleGlzdHMgJE5ldDo6RE5TOjpjbGFzc2VzYnluYW1leyRxY2xhc3N9CiAgICAgICAgICAgICAgICAjICAgICAgJiYgZXhpc3RzICROZXQ6OkROUzo6dHlwZXNieW5hbWV7JHFjbGFzc30gKQogICAgICAgICAgICAgICAgIyBXZSBjYW4ndCBmaXggdGhhdC4KICAgICAgICAgICAgICAgIGlmICgkbWF0Y2hlc193aXRob3V0X2JhbmcpIHsgJHBhZF9zcGFjZXMtLSB9CgogICAgICAgICAgICAgICAgIyBtYWtlIHN1cmUgdGhpcyB3b24ndCBjaGFuZ2UgaWYgLWxwIGlzIHVzZWQKICAgICAgICAgICAgICAgIG15ICRpbmRlbnRhdGlvbl8xID0gJGxlYWRpbmdfc3BhY2VzX3RvX2dvWyRpYmVnXTsKICAgICAgICAgICAgICAgIGlmICggcmVmKCRpbmRlbnRhdGlvbl8xKSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRpbmRlbnRhdGlvbl8xLT5nZXRfcmVjb3ZlcmFibGVfc3BhY2VzKCkgPT0gMCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGluZGVudGF0aW9uXzIgPSAkbGVhZGluZ19zcGFjZXNfdG9fZ29bJGliZWdfbmV4dF07CiAgICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyAoICRpbmRlbnRhdGlvbl8yLT5nZXRfcmVjb3ZlcmFibGVfc3BhY2VzKCkgPT0gMCApCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYWRfc3BhY2VzID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHdlIG1pZ2h0IGJlIGFibGUgdG8gaGFuZGxlIGEgcGFkIG9mIC0xIGJ5IHJlbW92aW5nIGEgYmxhbmsKICAgICAgICAgICAgICAgICMgdG9rZW4KICAgICAgICAgICAgICAgIGlmICggJHBhZF9zcGFjZXMgPCAwICkgewoKICAgICAgICAgICAgICAgICAgICBpZiAoICRwYWRfc3BhY2VzID09IC0xICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRpcGFkID4gJGliZWcgJiYgJHR5cGVzX3RvX2dvWyAkaXBhZCAtIDEgXSBlcSAnYicgKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRfdG9rZW4oICRpcGFkIC0gMSwgJHBhZF9zcGFjZXMgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkcGFkX3NwYWNlcyA9IDA7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBub3cgYXBwbHkgYW55IHBhZGRpbmcgZm9yIGFsaWdubWVudAogICAgICAgICAgICAgICAgaWYgKCAkaXBhZCA+PSAwICYmICRwYWRfc3BhY2VzICkgewoKICAgICAgICAgICAgICAgICAgICBteSAkbGVuZ3RoX3QgPSB0b3RhbF9saW5lX2xlbmd0aCggJGliZWcsICRpZW5kICk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkcGFkX3NwYWNlcyArICRsZW5ndGhfdCA8PSBtYXhpbXVtX2xpbmVfbGVuZ3RoKCRpYmVnKSApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBwYWRfdG9rZW4oICRpcGFkLCAkcGFkX3NwYWNlcyApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjb250aW51ZSB7CiAgICAgICAgICAgICRpZW5kbSAgICAgICAgICA9ICRpZW5kOwogICAgICAgICAgICAkaWJlZ20gICAgICAgICAgPSAkaWJlZzsKICAgICAgICAgICAgJGhhc19sZWFkaW5nX29wID0gJGhhc19sZWFkaW5nX29wX25leHQ7CiAgICAgICAgfSAgICAjIGVuZCBvZiBsb29wIG92ZXIgbGluZXMKICAgICAgICByZXR1cm47CiAgICB9Cn0KCnN1YiBjb3JyZWN0X2xwX2luZGVudGF0aW9uIHsKCiAgICAjIFdoZW4gdGhlIC1scCBvcHRpb24gaXMgdXNlZCwgd2UgbmVlZCB0byBtYWtlIGEgbGFzdCBwYXNzIHRocm91Z2gKICAgICMgZWFjaCBsaW5lIHRvIGNvcnJlY3QgdGhlIGluZGVudGF0aW9uIHBvc2l0aW9ucyBpbiBjYXNlIHRoZXkgZGlmZmVyCiAgICAjIGZyb20gdGhlIHByZWRpY3Rpb25zLiAgVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBwZXJsdGlkeSB1c2VzIGEKICAgICMgcHJlZGljdG9yL2NvcnJlY3RvciBtZXRob2QgZm9yIGFsaWduaW5nIHdpdGggb3BlbmluZyBwYXJlbnMuICBUaGUKICAgICMgcHJlZGljdG9yIGlzIHVzdWFsbHkgZ29vZCwgYnV0IHNvbWV0aW1lcyBzdHVtYmxlcy4gIFRoZSBjb3JyZWN0b3IKICAgICMgdHJpZXMgdG8gcGF0Y2ggdGhpbmdzIHVwIG9uY2UgdGhlIGFjdHVhbCBvcGVuaW5nIHBhcmVuIGxvY2F0aW9ucwogICAgIyBhcmUga25vd24uCiAgICBteSAoICRyaV9maXJzdCwgJHJpX2xhc3QgKSA9IEBfOwogICAgbXkgJGRvX25vdF9wYWQgPSAwOwoKICAgICMgIE5vdGUgb24gZmxhZyAnJGRvX25vdF9wYWQnOgogICAgIyAgV2Ugd2FudCB0byBhdm9pZCBhIHNpdHVhdGlvbiBsaWtlIHRoaXMsIHdoZXJlIHRoZSBhbGlnbmVyIGluc2VydHMKICAgICMgIHdoaXRlc3BhY2UgYmVmb3JlIHRoZSAnPScgdG8gYWxpZ24gaXQgd2l0aCBhIHByZXZpb3VzICc9JywgYmVjYXVzZQogICAgIyAgb3RoZXJ3aXNlIHRoZSBwYXJlbnMgbWlnaHQgYmVjb21lIG1pcy1hbGlnbmVkIGluIGEgc2l0dWF0aW9uIGxpa2UKICAgICMgIHRoaXMsIHdoZXJlIHRoZSAnPScgaGFzIGJlY29tZSBhbGlnbmVkIHdpdGggdGhlIHByZXZpb3VzIGxpbmUsCiAgICAjICBwdXNoaW5nIHRoZSBvcGVuaW5nICcoJyBmb3J3YXJkIGJleW9uZCB3aGVyZSB3ZSB3YW50IGl0LgogICAgIwogICAgIyAgJG1rRmxvb3I6OmN1cnJlbnRSb29tID0gJyc7CiAgICAjICAkbWtGbG9vcjo6Y19lbnRyeSAgICAgPSAkYy0+RW50cnkoCiAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXdpZHRoICAgICAgICA9PiAnMTAnLAogICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1yZWxpZWYgICAgICAgPT4gJ3N1bmtlbicsCiAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCiAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICMKICAgICMgIFdlIGxlYXZlIGl0IHRvIHRoZSBhbGlnbmVyIHRvIGRlY2lkZSBob3cgdG8gZG8gdGhpcy4KCiAgICAjIGZpcnN0IHJlbW92ZSBjb250aW51YXRpb24gaW5kZW50YXRpb24gaWYgYXBwcm9wcmlhdGUKICAgIG15ICRtYXhfbGluZSA9IEB7JHJpX2ZpcnN0fSAtIDE7CgogICAgIyBsb29raW5nIGF0IGVhY2ggbGluZSBvZiB0aGlzIGJhdGNoLi4KICAgIG15ICggJGliZWcsICRpZW5kICk7CiAgICBmb3JlYWNoIG15ICRsaW5lICggMCAuLiAkbWF4X2xpbmUgKSB7CiAgICAgICAgJGliZWcgPSAkcmlfZmlyc3QtPlskbGluZV07CiAgICAgICAgJGllbmQgPSAkcmlfbGFzdC0+WyRsaW5lXTsKCiAgICAgICAgIyBsb29raW5nIGF0IGVhY2ggdG9rZW4gaW4gdGhpcyBvdXRwdXQgbGluZS4uCiAgICAgICAgZm9yZWFjaCBteSAkaSAoICRpYmVnIC4uICRpZW5kICkgewoKICAgICAgICAgICAgIyBIb3cgbWFueSBzcGFjZSBjaGFyYWN0ZXJzIHRvIHBsYWNlIGJlZm9yZSB0aGlzIHRva2VuCiAgICAgICAgICAgICMgZm9yIHNwZWNpYWwgYWxpZ25tZW50LiAgQWN0dWFsIHBhZGRpbmcgaXMgZG9uZSBpbiB0aGUKICAgICAgICAgICAgIyBjb250aW51ZSBibG9jay4KCiAgICAgICAgICAgICMgbG9va2luZyBmb3IgbmV4dCB1bnZpc2l0ZWQgaW5kZW50YXRpb24gaXRlbQogICAgICAgICAgICBteSAkaW5kZW50YXRpb24gPSAkbGVhZGluZ19zcGFjZXNfdG9fZ29bJGldOwogICAgICAgICAgICBpZiAoICEkaW5kZW50YXRpb24tPmdldF9tYXJrZWQoKSApIHsKICAgICAgICAgICAgICAgICRpbmRlbnRhdGlvbi0+c2V0X21hcmtlZCgxKTsKCiAgICAgICAgICAgICAgICAjIGxvb2tpbmcgZm9yIGluZGVudGF0aW9uIGl0ZW0gZm9yIHdoaWNoIHdlIGFyZSBhbGlnbmluZwogICAgICAgICAgICAgICAgIyB3aXRoIHBhcmVucywgYnJhY2VzLCBhbmQgYnJhY2tldHMKICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzICggJGluZGVudGF0aW9uLT5nZXRfYWxpZ25fcGFyZW4oKSApOwoKICAgICAgICAgICAgICAgICMgc2tpcCBjbG9zZWQgY29udGFpbmVyIG9uIHRoaXMgbGluZQogICAgICAgICAgICAgICAgaWYgKCAkaSA+ICRpYmVnICkgewogICAgICAgICAgICAgICAgICAgIG15ICRpbSA9IG1heCggJGliZWcsICRpcHJldl90b19nb1skaV0gKTsKICAgICAgICAgICAgICAgICAgICBpZiAoICAgJHR5cGVfc2VxdWVuY2VfdG9fZ29bJGltXQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkbWF0ZV9pbmRleF90b19nb1skaW1dIDw9ICRpZW5kICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggJGxpbmUgPT0gMSAmJiAkaSA9PSAkaWJlZyApIHsKICAgICAgICAgICAgICAgICAgICAkZG9fbm90X3BhZCA9IDE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBPaywgbGV0J3Mgc2VlIHdoYXQgdGhlIGVycm9yIGlzIGFuZCB0cnkgdG8gZml4IGl0CiAgICAgICAgICAgICAgICBteSAkYWN0dWFsX3BvczsKICAgICAgICAgICAgICAgIG15ICRwcmVkaWN0ZWRfcG9zID0gJGluZGVudGF0aW9uLT5nZXRfc3BhY2VzKCk7CiAgICAgICAgICAgICAgICBpZiAoICRpID4gJGliZWcgKSB7CgogICAgICAgICAgICAgICAgICAgICMgdG9rZW4gaXMgbWlkLWxpbmUgLSB1c2UgbGVuZ3RoIHRvIHByZXZpb3VzIHRva2VuCiAgICAgICAgICAgICAgICAgICAgJGFjdHVhbF9wb3MgPSB0b3RhbF9saW5lX2xlbmd0aCggJGliZWcsICRpIC0gMSApOwoKICAgICAgICAgICAgICAgICAgICAjIGZvciBtaWQtbGluZSB0b2tlbiwgd2UgbXVzdCBjaGVjayB0byBzZWUgaWYgYWxsCiAgICAgICAgICAgICAgICAgICAgIyBhZGRpdGlvbmFsIGxpbmVzIGhhdmUgY29udGludWF0aW9uIGluZGVudGF0aW9uLAogICAgICAgICAgICAgICAgICAgICMgYW5kIHJlbW92ZSBpdCBpZiBzby4gIE90aGVyd2lzZSwgd2UgZG8gbm90IGdldAogICAgICAgICAgICAgICAgICAgICMgZ29vZCBhbGlnbm1lbnQuCiAgICAgICAgICAgICAgICAgICAgbXkgJGNsb3NpbmdfaW5kZXggPSAkaW5kZW50YXRpb24tPmdldF9jbG9zZWQoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoICRjbG9zaW5nX2luZGV4ID4gJGllbmQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpYmVnX25leHQgPSAkcmlfZmlyc3QtPlsgJGxpbmUgKyAxIF07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJGNpX2xldmVsc190b19nb1skaWJlZ19uZXh0XSA+IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRvX2xwX2NpKCAkbGluZSwgJGksICRjbG9zaW5nX2luZGV4LCAkcmlfZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJpX2xhc3QgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJGxpbmUgPiAwICkgewoKICAgICAgICAgICAgICAgICAgICAjIGhhbmRsZSBjYXNlIHdoZXJlIHRva2VuIHN0YXJ0cyBhIG5ldyBsaW5lOwogICAgICAgICAgICAgICAgICAgICMgdXNlIGxlbmd0aCBvZiBwcmV2aW91cyBsaW5lCiAgICAgICAgICAgICAgICAgICAgbXkgJGliZWdtID0gJHJpX2ZpcnN0LT5bICRsaW5lIC0gMSBdOwogICAgICAgICAgICAgICAgICAgIG15ICRpZW5kbSA9ICRyaV9sYXN0LT5bICRsaW5lIC0gMSBdOwogICAgICAgICAgICAgICAgICAgICRhY3R1YWxfcG9zID0gdG90YWxfbGluZV9sZW5ndGgoICRpYmVnbSwgJGllbmRtICk7CgogICAgICAgICAgICAgICAgICAgICMgZm9sbG93IC1wdCBzdHlsZQogICAgICAgICAgICAgICAgICAgICsrJGFjdHVhbF9wb3MKICAgICAgICAgICAgICAgICAgICAgIGlmICggJHR5cGVzX3RvX2dvWyAkaWVuZG0gKyAxIF0gZXEgJ2InICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgIyB0b2tlbiBpcyBmaXJzdCBjaGFyYWN0ZXIgb2YgZmlyc3QgbGluZSBvZiBiYXRjaAogICAgICAgICAgICAgICAgICAgICRhY3R1YWxfcG9zID0gJHByZWRpY3RlZF9wb3M7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJG1vdmVfcmlnaHQgPSAkYWN0dWFsX3BvcyAtICRwcmVkaWN0ZWRfcG9zOwoKICAgICAgICAgICAgICAgICMgZG9uZSBpZiBubyBlcnJvciB0byBjb3JyZWN0IChnbnUyLnQpCiAgICAgICAgICAgICAgICBpZiAoICRtb3ZlX3JpZ2h0ID09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgJGluZGVudGF0aW9uLT5zZXRfcmVjb3ZlcmFibGVfc3BhY2VzKCRtb3ZlX3JpZ2h0KTsKICAgICAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgaWYgd2UgaGF2ZSBub3Qgc2VlbiBjbG9zdXJlIGZvciB0aGlzIGluZGVudGF0aW9uIGluCiAgICAgICAgICAgICAgICAjIHRoaXMgYmF0Y2gsIHdlIGNhbiBvbmx5IHBhc3Mgb24gYSByZXF1ZXN0IHRvIHRoZQogICAgICAgICAgICAgICAgIyB2ZXJ0aWNhbCBhbGlnbmVyCiAgICAgICAgICAgICAgICBteSAkY2xvc2luZ19pbmRleCA9ICRpbmRlbnRhdGlvbi0+Z2V0X2Nsb3NlZCgpOwoKICAgICAgICAgICAgICAgIGlmICggJGNsb3NpbmdfaW5kZXggPCAwICkgewogICAgICAgICAgICAgICAgICAgICRpbmRlbnRhdGlvbi0+c2V0X3JlY292ZXJhYmxlX3NwYWNlcygkbW92ZV9yaWdodCk7CiAgICAgICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIElmIG5lY2Vzc2FyeSwgbG9vayBhaGVhZCB0byBzZWUgaWYgdGhlcmUgaXMgcmVhbGx5IGFueQogICAgICAgICAgICAgICAgIyBsZWFkaW5nIHdoaXRlc3BhY2UgZGVwZW5kZW50IG9uIHRoaXMgd2hpdGVzcGFjZSwgYW5kCiAgICAgICAgICAgICAgICAjIGFsc28gZmluZCB0aGUgbG9uZ2VzdCBsaW5lIHVzaW5nIHRoaXMgd2hpdGVzcGFjZS4KICAgICAgICAgICAgICAgICMgU2luY2UgaXQgaXMgYWx3YXlzIHNhZmUgdG8gbW92ZSBsZWZ0IGlmIHRoZXJlIGFyZSBubwogICAgICAgICAgICAgICAgIyBkZXBlbmRlbnRzLCB3ZSBvbmx5IG5lZWQgdG8gZG8gdGhpcyBpZiB3ZSBtYXkgaGF2ZQogICAgICAgICAgICAgICAgIyBkZXBlbmRlbnQgbm9kZXMgb3IgbmVlZCB0byBtb3ZlIHJpZ2h0LgoKICAgICAgICAgICAgICAgIG15ICRyaWdodF9tYXJnaW4gPSAwOwogICAgICAgICAgICAgICAgbXkgJGhhdmVfY2hpbGQgICA9ICRpbmRlbnRhdGlvbi0+Z2V0X2hhdmVfY2hpbGQoKTsKCiAgICAgICAgICAgICAgICBteSAlc2F3X2luZGVudGF0aW9uOwogICAgICAgICAgICAgICAgbXkgJGxpbmVfY291bnQgPSAxOwogICAgICAgICAgICAgICAgJHNhd19pbmRlbnRhdGlvbnskaW5kZW50YXRpb259ID0gJGluZGVudGF0aW9uOwoKICAgICAgICAgICAgICAgIGlmICggJGhhdmVfY2hpbGQgfHwgJG1vdmVfcmlnaHQgPiAwICkgewogICAgICAgICAgICAgICAgICAgICRoYXZlX2NoaWxkID0gMDsKICAgICAgICAgICAgICAgICAgICBteSAkbWF4X2xlbmd0aCA9IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkaSA9PSAkaWJlZyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG1heF9sZW5ndGggPSB0b3RhbF9saW5lX2xlbmd0aCggJGliZWcsICRpZW5kICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGxvb2sgYWhlYWQgYXQgdGhlIHJlc3Qgb2YgdGhlIGxpbmVzIG9mIHRoaXMgYmF0Y2guLgogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGxpbmVfdCAoICRsaW5lICsgMSAuLiAkbWF4X2xpbmUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpYmVnX3QgPSAkcmlfZmlyc3QtPlskbGluZV90XTsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGllbmRfdCA9ICRyaV9sYXN0LT5bJGxpbmVfdF07CiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgaWYgKCAkY2xvc2luZ19pbmRleCA8PSAkaWJlZ190ICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHJlbWVtYmVyIGFsbCBkaWZmZXJlbnQgaW5kZW50YXRpb24gb2JqZWN0cwogICAgICAgICAgICAgICAgICAgICAgICBteSAkaW5kZW50YXRpb25fdCA9ICRsZWFkaW5nX3NwYWNlc190b19nb1skaWJlZ190XTsKICAgICAgICAgICAgICAgICAgICAgICAgJHNhd19pbmRlbnRhdGlvbnskaW5kZW50YXRpb25fdH0gPSAkaW5kZW50YXRpb25fdDsKICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmVfY291bnQrKzsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgcmVtZW1iZXIgbG9uZ2VzdCBsaW5lIGluIHRoZSBncm91cAogICAgICAgICAgICAgICAgICAgICAgICBteSAkbGVuZ3RoX3QgPSB0b3RhbF9saW5lX2xlbmd0aCggJGliZWdfdCwgJGllbmRfdCApOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRsZW5ndGhfdCA+ICRtYXhfbGVuZ3RoICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1heF9sZW5ndGggPSAkbGVuZ3RoX3Q7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJHJpZ2h0X21hcmdpbiA9IG1heGltdW1fbGluZV9sZW5ndGgoJGliZWcpIC0gJG1heF9sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkcmlnaHRfbWFyZ2luIDwgMCApIHsgJHJpZ2h0X21hcmdpbiA9IDAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRmaXJzdF9saW5lX2NvbW1hX2NvdW50ID0KICAgICAgICAgICAgICAgICAgZ3JlcCB7ICRfIGVxICcsJyB9IEB0eXBlc190b19nb1sgJGliZWcgLi4gJGllbmQgXTsKICAgICAgICAgICAgICAgIG15ICRjb21tYV9jb3VudCA9ICRpbmRlbnRhdGlvbi0+Z2V0X2NvbW1hX2NvdW50KCk7CiAgICAgICAgICAgICAgICBteSAkYXJyb3dfY291bnQgPSAkaW5kZW50YXRpb24tPmdldF9hcnJvd19jb3VudCgpOwoKICAgICAgICAgICAgICAgICMgVGhpcyBpcyBhIHNpbXBsZSBhcHByb3hpbWF0ZSB0ZXN0IGZvciB2ZXJ0aWNhbCBhbGlnbm1lbnQ6CiAgICAgICAgICAgICAgICAjIGlmIHdlIGJyb2tlIGp1c3QgYWZ0ZXIgYW4gb3BlbmluZyBwYXJlbiwgYnJhY2UsIGJyYWNrZXQsCiAgICAgICAgICAgICAgICAjIGFuZCB0aGVyZSBhcmUgMiBvciBtb3JlIGNvbW1hcyBpbiB0aGUgZmlyc3QgbGluZSwKICAgICAgICAgICAgICAgICMgYW5kIHRoZXJlIGFyZSBubyAnPT4ncywKICAgICAgICAgICAgICAgICMgdGhlbiB3ZSBhcmUgcHJvYmFibHkgdmVydGljYWxseSBhbGlnbmVkLiAgV2UgY291bGQgc2V0CiAgICAgICAgICAgICAgICAjIGFuIGV4YWN0IGZsYWcgaW4gc3ViIHNjYW5fbGlzdCwgYnV0IHRoaXMgaXMgZ29vZAogICAgICAgICAgICAgICAgIyBlbm91Z2guCiAgICAgICAgICAgICAgICBteSAkaW5kZW50YXRpb25fY291bnQgPSBrZXlzICVzYXdfaW5kZW50YXRpb247CiAgICAgICAgICAgICAgICBteSAkaXNfdmVydGljYWxseV9hbGlnbmVkID0KICAgICAgICAgICAgICAgICAgKCAgICAgICRpID09ICRpYmVnCiAgICAgICAgICAgICAgICAgICAgICAmJiAkZmlyc3RfbGluZV9jb21tYV9jb3VudCA+IDEKICAgICAgICAgICAgICAgICAgICAgICYmICRpbmRlbnRhdGlvbl9jb3VudCA9PSAxCiAgICAgICAgICAgICAgICAgICAgICAmJiAoICRhcnJvd19jb3VudCA9PSAwIHx8ICRhcnJvd19jb3VudCA9PSAkbGluZV9jb3VudCApICk7CgogICAgICAgICAgICAgICAgIyBNYWtlIHRoZSBtb3ZlIGlmIHBvc3NpYmxlIC4uCiAgICAgICAgICAgICAgICBpZiAoCgogICAgICAgICAgICAgICAgICAgICMgd2UgY2FuIGFsd2F5cyBtb3ZlIGxlZnQKICAgICAgICAgICAgICAgICAgICAkbW92ZV9yaWdodCA8IDAKCiAgICAgICAgICAgICAgICAgICAgIyBidXQgd2Ugc2hvdWxkIG9ubHkgbW92ZSByaWdodCBpZiB3ZSBhcmUgc3VyZSBpdCB3aWxsCiAgICAgICAgICAgICAgICAgICAgIyBub3Qgc3BvaWwgdmVydGljYWwgYWxpZ25tZW50CiAgICAgICAgICAgICAgICAgICAgfHwgKCAkY29tbWFfY291bnQgPT0gMCApCiAgICAgICAgICAgICAgICAgICAgfHwgKCAkY29tbWFfY291bnQgPiAwICYmICEkaXNfdmVydGljYWxseV9hbGlnbmVkICkKICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIG15ICRtb3ZlID0KICAgICAgICAgICAgICAgICAgICAgICggJG1vdmVfcmlnaHQgPD0gJHJpZ2h0X21hcmdpbiApCiAgICAgICAgICAgICAgICAgICAgICA/ICRtb3ZlX3JpZ2h0CiAgICAgICAgICAgICAgICAgICAgICA6ICRyaWdodF9tYXJnaW47CgogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCBrZXlzICVzYXdfaW5kZW50YXRpb24gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzYXdfaW5kZW50YXRpb257JF99CiAgICAgICAgICAgICAgICAgICAgICAgICAgLT5wZXJtYW5lbnRseV9kZWNyZWFzZV9hdmFpbGFibGVfc3BhY2VzKCAtJG1vdmUgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBPdGhlcndpc2UsIHJlY29yZCB3aGF0IHdlIHdhbnQgYW5kIHRoZSB2ZXJ0aWNhbCBhbGlnbmVyCiAgICAgICAgICAgICAgICAjIHdpbGwgdHJ5IHRvIHJlY292ZXIgaXQuCiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkaW5kZW50YXRpb24tPnNldF9yZWNvdmVyYWJsZV9zcGFjZXMoJG1vdmVfcmlnaHQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuICRkb19ub3RfcGFkOwp9CgojIGZsdXNoIGlzIGNhbGxlZCB0byBvdXRwdXQgYW55IHRva2VucyBpbiB0aGUgcGlwZWxpbmUsIHNvIHRoYXQKIyBhbiBhbHRlcm5hdGUgc291cmNlIG9mIGxpbmVzIGNhbiBiZSB3cml0dGVuIGluIHRoZSBjb3JyZWN0IG9yZGVyCgpzdWIgZmx1c2ggewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIGRlc3Ryb3lfb25lX2xpbmVfYmxvY2soKTsKICAgICRzZWxmLT5vdXRwdXRfbGluZV90b19nbygpOwogICAgUGVybDo6VGlkeTo6VmVydGljYWxBbGlnbmVyOjpmbHVzaCgpOwogICAgcmV0dXJuOwp9CgpzdWIgcmVzZXRfYmxvY2tfdGV4dF9hY2N1bXVsYXRvciB7CgogICAgIyBzYXZlIHRleHQgYWZ0ZXIgJ2lmJyBhbmQgJ2Vsc2lmJyB0byBhcHBlbmQgYWZ0ZXIgJ2Vsc2UnCiAgICBpZiAoJGFjY3VtdWxhdGluZ190ZXh0X2Zvcl9ibG9jaykgewoKICAgICAgICBpZiAoICRhY2N1bXVsYXRpbmdfdGV4dF9mb3JfYmxvY2sgPX4gL14oaWZ8ZWxzaWYpJC8gKSB7CiAgICAgICAgICAgIHB1c2ggQHskcmxlYWRpbmdfYmxvY2tfaWZfZWxzaWZfdGV4dH0sICRsZWFkaW5nX2Jsb2NrX3RleHQ7CiAgICAgICAgfQogICAgfQogICAgJGFjY3VtdWxhdGluZ190ZXh0X2Zvcl9ibG9jayAgICAgICAgPSAiIjsKICAgICRsZWFkaW5nX2Jsb2NrX3RleHQgICAgICAgICAgICAgICAgID0gIiI7CiAgICAkbGVhZGluZ19ibG9ja190ZXh0X2xldmVsICAgICAgICAgICA9IDA7CiAgICAkbGVhZGluZ19ibG9ja190ZXh0X2xlbmd0aF9leGNlZWRlZCA9IDA7CiAgICAkbGVhZGluZ19ibG9ja190ZXh0X2xpbmVfbnVtYmVyICAgICA9IDA7CiAgICAkbGVhZGluZ19ibG9ja190ZXh0X2xpbmVfbGVuZ3RoICAgICA9IDA7CiAgICByZXR1cm47Cn0KCnN1YiBzZXRfYmxvY2tfdGV4dF9hY2N1bXVsYXRvciB7CiAgICBteSAkaSA9IHNoaWZ0OwogICAgJGFjY3VtdWxhdGluZ190ZXh0X2Zvcl9ibG9jayA9ICR0b2tlbnNfdG9fZ29bJGldOwogICAgaWYgKCAkYWNjdW11bGF0aW5nX3RleHRfZm9yX2Jsb2NrICF+IC9eZWxzLyApIHsKICAgICAgICAkcmxlYWRpbmdfYmxvY2tfaWZfZWxzaWZfdGV4dCA9IFtdOwogICAgfQogICAgJGxlYWRpbmdfYmxvY2tfdGV4dCAgICAgICAgICAgICAgICAgPSAiIjsKICAgICRsZWFkaW5nX2Jsb2NrX3RleHRfbGV2ZWwgICAgICAgICAgID0gJGxldmVsc190b19nb1skaV07CiAgICAkbGVhZGluZ19ibG9ja190ZXh0X2xpbmVfbnVtYmVyICAgICA9IGdldF9vdXRwdXRfbGluZV9udW1iZXIoKTsKICAgICRsZWFkaW5nX2Jsb2NrX3RleHRfbGVuZ3RoX2V4Y2VlZGVkID0gMDsKCiAgICAjIHRoaXMgd2lsbCBjb250YWluIHRoZSBjb2x1bW4gbnVtYmVyIG9mIHRoZSBsYXN0IGNoYXJhY3RlcgogICAgIyBvZiB0aGUgY2xvc2luZyBzaWRlIGNvbW1lbnQKICAgICRsZWFkaW5nX2Jsb2NrX3RleHRfbGluZV9sZW5ndGggPQogICAgICBsZW5ndGgoJGNzY19sYXN0X2xhYmVsKSArCiAgICAgIGxlbmd0aCgkYWNjdW11bGF0aW5nX3RleHRfZm9yX2Jsb2NrKSArCiAgICAgIGxlbmd0aCggJHJPcHRzLT57J2Nsb3Npbmctc2lkZS1jb21tZW50LXByZWZpeCd9ICkgKwogICAgICAkbGVhZGluZ19ibG9ja190ZXh0X2xldmVsICogJHJPcHRzX2luZGVudF9jb2x1bW5zICsgMzsKICAgIHJldHVybjsKfQoKc3ViIGFjY3VtdWxhdGVfYmxvY2tfdGV4dCB7CiAgICBteSAkaSA9IHNoaWZ0OwoKICAgICMgYWNjdW11bGF0ZSBsZWFkaW5nIHRleHQgZm9yIC1jc2MsIGlnbm9yaW5nIGFueSBzaWRlIGNvbW1lbnRzCiAgICBpZiAoICAgJGFjY3VtdWxhdGluZ190ZXh0X2Zvcl9ibG9jawogICAgICAgICYmICEkbGVhZGluZ19ibG9ja190ZXh0X2xlbmd0aF9leGNlZWRlZAogICAgICAgICYmICR0eXBlc190b19nb1skaV0gbmUgJyMnICkKICAgIHsKCiAgICAgICAgbXkgJGFkZGVkX2xlbmd0aCA9ICR0b2tlbl9sZW5ndGhzX3RvX2dvWyRpXTsKICAgICAgICAkYWRkZWRfbGVuZ3RoICs9IDEgaWYgJGkgPT0gMDsKICAgICAgICBteSAkbmV3X2xpbmVfbGVuZ3RoID0gJGxlYWRpbmdfYmxvY2tfdGV4dF9saW5lX2xlbmd0aCArICRhZGRlZF9sZW5ndGg7CgogICAgICAgICMgd2UgY2FuIGFkZCB0aGlzIHRleHQgaWYgd2UgZG9uJ3QgZXhjZWVkIHNvbWUgbGltaXRzLi4KICAgICAgICBpZiAoCgogICAgICAgICAgICAjIHdlIG11c3Qgbm90IGhhdmUgYWxyZWFkeSBleGNlZWRlZCB0aGUgdGV4dCBsZW5ndGggbGltaXQKICAgICAgICAgICAgbGVuZ3RoKCRsZWFkaW5nX2Jsb2NrX3RleHQpIDwKICAgICAgICAgICAgJHJPcHRzX2Nsb3Npbmdfc2lkZV9jb21tZW50X21heGltdW1fdGV4dAoKICAgICAgICAgICAgIyBhbmQgZWl0aGVyOgogICAgICAgICAgICAjIHRoZSBuZXcgdG90YWwgbGluZSBsZW5ndGggbXVzdCBiZSBiZWxvdyB0aGUgbGluZSBsZW5ndGggbGltaXQKICAgICAgICAgICAgIyBvciB0aGUgbmV3IGxlbmd0aCBtdXN0IGJlIGJlbG93IHRoZSB0ZXh0IGxlbmd0aCBsaW1pdAogICAgICAgICAgICAjIChpZSwgd2UgbWF5IGFsbG93IG9uZSB0b2tlbiB0byBleGNlZWQgdGhlIHRleHQgbGVuZ3RoIGxpbWl0KQogICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAkbmV3X2xpbmVfbGVuZ3RoIDwKICAgICAgICAgICAgICAgIG1heGltdW1fbGluZV9sZW5ndGhfZm9yX2xldmVsKCRsZWFkaW5nX2Jsb2NrX3RleHRfbGV2ZWwpCgogICAgICAgICAgICAgICAgfHwgbGVuZ3RoKCRsZWFkaW5nX2Jsb2NrX3RleHQpICsgJGFkZGVkX2xlbmd0aCA8CiAgICAgICAgICAgICAgICAkck9wdHNfY2xvc2luZ19zaWRlX2NvbW1lbnRfbWF4aW11bV90ZXh0CiAgICAgICAgICAgICkKCiAgICAgICAgICAgICMgVU5MRVNTOiB3ZSBhcmUgYWRkaW5nIGEgY2xvc2luZyBwYXJlbiBiZWZvcmUgdGhlIGJyYWNlIHdlIHNlZWsuCiAgICAgICAgICAgICMgVGhpcyBpcyBhbiBhdHRlbXB0IHRvIGF2b2lkIHNpdHVhdGlvbnMgd2hlcmUgdGhlIC4uLiB0byBiZQogICAgICAgICAgICAjIGFkZGVkIGFyZSBsb25nZXIgdGhhbiB0aGUgb21pdHRlZCByaWdodCBwYXJlbiwgYXMgaW46CgogICAgICAgICAgICAjICAgZm9yZWFjaCBteSAkaXRlbSAoQGFfcmF0aGVyX2xvbmdfdmFyaWFibGVfbmFtZV9oZXJlKSB7CiAgICAgICAgICAgICMgICAgICAmd2hhdGV2ZXI7CiAgICAgICAgICAgICMgICB9ICMjIGVuZCBmb3JlYWNoIG15ICRpdGVtIChAYV9yYXRoZXJfbG9uZ192YXJpYWJsZV9uYW1lX2hlcmUuLi4KCiAgICAgICAgICAgIHx8ICgKICAgICAgICAgICAgICAgICR0b2tlbnNfdG9fZ29bJGldIGVxICcpJwogICAgICAgICAgICAgICAgJiYgKAogICAgICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgJGkgKyAxIDw9ICRtYXhfaW5kZXhfdG9fZ28KICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGJsb2NrX3R5cGVfdG9fZ29bICRpICsgMSBdIGVxCiAgICAgICAgICAgICAgICAgICAgICAgICRhY2N1bXVsYXRpbmdfdGV4dF9mb3JfYmxvY2sKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgfHwgKCAgICRpICsgMiA8PSAkbWF4X2luZGV4X3RvX2dvCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRibG9ja190eXBlX3RvX2dvWyAkaSArIDIgXSBlcQogICAgICAgICAgICAgICAgICAgICAgICAkYWNjdW11bGF0aW5nX3RleHRfZm9yX2Jsb2NrICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgICMgYWRkIGFuIGV4dHJhIHNwYWNlIGF0IGVhY2ggbmV3bGluZQogICAgICAgICAgICBpZiAoICRpID09IDAgKSB7ICRsZWFkaW5nX2Jsb2NrX3RleHQgLj0gJyAnIH0KCiAgICAgICAgICAgICMgYWRkIHRoZSB0b2tlbiB0ZXh0CiAgICAgICAgICAgICRsZWFkaW5nX2Jsb2NrX3RleHQgLj0gJHRva2Vuc190b19nb1skaV07CiAgICAgICAgICAgICRsZWFkaW5nX2Jsb2NrX3RleHRfbGluZV9sZW5ndGggPSAkbmV3X2xpbmVfbGVuZ3RoOwogICAgICAgIH0KCiAgICAgICAgIyBzaG93IHRoYXQgdGV4dCB3YXMgdHJ1bmNhdGVkIGlmIG5lY2Vzc2FyeQogICAgICAgIGVsc2lmICggJHR5cGVzX3RvX2dvWyRpXSBuZSAnYicgKSB7CiAgICAgICAgICAgICRsZWFkaW5nX2Jsb2NrX3RleHRfbGVuZ3RoX2V4Y2VlZGVkID0gMTsKICAgICAgICAgICAgJGxlYWRpbmdfYmxvY2tfdGV4dCAuPSAnLi4uJzsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm47Cn0KCnsKICAgIG15ICVpc19pZl9lbHNpZl9lbHNlX3VubGVzc193aGlsZV91bnRpbF9mb3JfZm9yZWFjaDsKCiAgICBCRUdJTiB7CgogICAgICAgICMgVGhlc2UgYmxvY2sgdHlwZXMgbWF5IGhhdmUgdGV4dCBiZXR3ZWVuIHRoZSBrZXl3b3JkIGFuZCBvcGVuaW5nCiAgICAgICAgIyBjdXJseS4gIE5vdGU6ICdlbHNlJyBkb2VzIG5vdCwgYnV0IG11c3QgYmUgaW5jbHVkZWQgdG8gYWxsb3cgdHJhaWxpbmcKICAgICAgICAjIGlmL2Vsc2lmIHRleHQgdG8gYmUgYXBwZW5kZWQuCiAgICAgICAgIyBwYXRjaCBmb3IgU1dJVENIL0NBU0U6IGFkZGVkICdjYXNlJyBhbmQgJ3doZW4nCiAgICAgICAgbXkgQHEgPQogICAgICAgICAgcXcoaWYgZWxzaWYgZWxzZSB1bmxlc3Mgd2hpbGUgdW50aWwgZm9yIGZvcmVhY2ggY2FzZSB3aGVuIGNhdGNoKTsKICAgICAgICBAaXNfaWZfZWxzaWZfZWxzZV91bmxlc3Nfd2hpbGVfdW50aWxfZm9yX2ZvcmVhY2h7QHF9ID0KICAgICAgICAgICgxKSB4IHNjYWxhcihAcSk7CiAgICB9CgogICAgc3ViIGFjY3VtdWxhdGVfY3NjX3RleHQgewoKICAgICAgICAjIGNhbGxlZCBvbmNlIHBlciBvdXRwdXQgYnVmZmVyIHdoZW4gLWNzYyBpcyB1c2VkLiBBY2N1bXVsYXRlcwogICAgICAgICMgdGhlIHRleHQgcGxhY2VkIGFmdGVyIGNlcnRhaW4gY2xvc2luZyBibG9jayBicmFjZXMuCiAgICAgICAgIyBEZWZpbmVzIGFuZCByZXR1cm5zIHRoZSBmb2xsb3dpbmcgZm9yIHRoaXMgYnVmZmVyOgoKICAgICAgICBteSAkYmxvY2tfbGVhZGluZ190ZXh0ID0gIiI7ICAgICMgdGhlIGxlYWRpbmcgdGV4dCBvZiB0aGUgbGFzdCAnfScKICAgICAgICBteSAkcmJsb2NrX2xlYWRpbmdfaWZfZWxzaWZfdGV4dDsKICAgICAgICBteSAkaV9ibG9ja19sZWFkaW5nX3RleHQgPQogICAgICAgICAgLTE7ICAgICMgaW5kZXggb2YgdG9rZW4gb3duaW5nIGJsb2NrX2xlYWRpbmdfdGV4dAogICAgICAgIG15ICRibG9ja19saW5lX2NvdW50ICAgID0gMTAwOyAgICAjIGhvdyBtYW55IGxpbmVzIHRoZSBibG9jayBzcGFucwogICAgICAgIG15ICR0ZXJtaW5hbF90eXBlICAgICAgID0gJ2InOyAgICAjIHR5cGUgb2YgbGFzdCBub25ibGFuayB0b2tlbgogICAgICAgIG15ICRpX3Rlcm1pbmFsICAgICAgICAgID0gMDsgICAgICAjIGluZGV4IG9mIGxhc3Qgbm9uYmxhbmsgdG9rZW4KICAgICAgICBteSAkdGVybWluYWxfYmxvY2tfdHlwZSA9ICIiOwoKICAgICAgICAjIHVwZGF0ZSBtb3N0IHJlY2VudCBzdGF0ZW1lbnQgbGFiZWwKICAgICAgICAkY3NjX2xhc3RfbGFiZWwgPSAiIiB1bmxlc3MgKCRjc2NfbGFzdF9sYWJlbCk7CiAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bMF0gZXEgJ0onICkgeyAkY3NjX2xhc3RfbGFiZWwgPSAkdG9rZW5zX3RvX2dvWzBdIH0KICAgICAgICBteSAkYmxvY2tfbGFiZWwgPSAkY3NjX2xhc3RfbGFiZWw7CgogICAgICAgICMgTG9vcCBvdmVyIGFsbCB0b2tlbnMgb2YgdGhpcyBiYXRjaAogICAgICAgIGZvciBteSAkaSAoIDAgLi4gJG1heF9pbmRleF90b19nbyApIHsKICAgICAgICAgICAgbXkgJHR5cGUgICAgICAgPSAkdHlwZXNfdG9fZ29bJGldOwogICAgICAgICAgICBteSAkYmxvY2tfdHlwZSA9ICRibG9ja190eXBlX3RvX2dvWyRpXTsKICAgICAgICAgICAgbXkgJHRva2VuICAgICAgPSAkdG9rZW5zX3RvX2dvWyRpXTsKCiAgICAgICAgICAgICMgcmVtZW1iZXIgbGFzdCBub25ibGFuayB0b2tlbiB0eXBlCiAgICAgICAgICAgIGlmICggJHR5cGUgbmUgJyMnICYmICR0eXBlIG5lICdiJyApIHsKICAgICAgICAgICAgICAgICR0ZXJtaW5hbF90eXBlICAgICAgID0gJHR5cGU7CiAgICAgICAgICAgICAgICAkdGVybWluYWxfYmxvY2tfdHlwZSA9ICRibG9ja190eXBlOwogICAgICAgICAgICAgICAgJGlfdGVybWluYWwgICAgICAgICAgPSAkaTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJHR5cGVfc2VxdWVuY2UgPSAkdHlwZV9zZXF1ZW5jZV90b19nb1skaV07CiAgICAgICAgICAgIGlmICggJGJsb2NrX3R5cGUgJiYgJHR5cGVfc2VxdWVuY2UgKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkdG9rZW4gZXEgJ30nICkgewoKICAgICAgICAgICAgICAgICAgICAjIHJlc3RvcmUgYW55IGxlYWRpbmcgdGV4dCBzYXZlZCB3aGVuIHdlIGVudGVyZWQgdGhpcyBibG9jawogICAgICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCggJGJsb2NrX2xlYWRpbmdfdGV4dHskdHlwZV9zZXF1ZW5jZX0gKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgKCAkYmxvY2tfbGVhZGluZ190ZXh0LCAkcmJsb2NrX2xlYWRpbmdfaWZfZWxzaWZfdGV4dCApCiAgICAgICAgICAgICAgICAgICAgICAgICAgPSBAeyAkYmxvY2tfbGVhZGluZ190ZXh0eyR0eXBlX3NlcXVlbmNlfSB9OwogICAgICAgICAgICAgICAgICAgICAgICAkaV9ibG9ja19sZWFkaW5nX3RleHQgPSAkaTsKICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRibG9ja19sZWFkaW5nX3RleHR7JHR5cGVfc2VxdWVuY2V9OwogICAgICAgICAgICAgICAgICAgICAgICAkcmxlYWRpbmdfYmxvY2tfaWZfZWxzaWZfdGV4dCA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgJHJibG9ja19sZWFkaW5nX2lmX2Vsc2lmX3RleHQ7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQoICRjc2NfYmxvY2tfbGFiZWx7JHR5cGVfc2VxdWVuY2V9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRibG9ja19sYWJlbCA9ICRjc2NfYmxvY2tfbGFiZWx7JHR5cGVfc2VxdWVuY2V9OwogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgJGNzY19ibG9ja19sYWJlbHskdHlwZV9zZXF1ZW5jZX07CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGlmIHdlIHJ1biBpbnRvIGEgJ30nIHRoZW4gd2UgcHJvYmFibHkgc3RhcnRlZCBhY2N1bXVsYXRpbmcKICAgICAgICAgICAgICAgICAgICAjIGF0IHNvbWV0aGluZyBsaWtlIGEgdHJhaWxpbmcgJ2lmJyBjbGF1c2UuLm5vIGhhcm0gZG9uZS4KICAgICAgICAgICAgICAgICAgICBpZiAoICAgJGFjY3VtdWxhdGluZ190ZXh0X2Zvcl9ibG9jawogICAgICAgICAgICAgICAgICAgICAgICAmJiAkbGV2ZWxzX3RvX2dvWyRpXSA8PSAkbGVhZGluZ19ibG9ja190ZXh0X2xldmVsICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRsZXYgPSAkbGV2ZWxzX3RvX2dvWyRpXTsKICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRfYmxvY2tfdGV4dF9hY2N1bXVsYXRvcigpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCAkYmxvY2tfb3BlbmluZ19saW5lX251bWJlcnskdHlwZV9zZXF1ZW5jZX0gKSApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkb3V0cHV0X2xpbmVfbnVtYmVyID0gZ2V0X291dHB1dF9saW5lX251bWJlcigpOwogICAgICAgICAgICAgICAgICAgICAgICAkYmxvY2tfbGluZV9jb3VudCA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgJG91dHB1dF9saW5lX251bWJlciAtCiAgICAgICAgICAgICAgICAgICAgICAgICAgJGJsb2NrX29wZW5pbmdfbGluZV9udW1iZXJ7JHR5cGVfc2VxdWVuY2V9ICsgMTsKICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRibG9ja19vcGVuaW5nX2xpbmVfbnVtYmVyeyR0eXBlX3NlcXVlbmNlfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIEVycm9yOiBibG9jayBvcGVuaW5nIGxpbmUgdW5kZWZpbmVkIGZvciB0aGlzIGxpbmUuLgogICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgc2hvdWxkbid0IGJlIHBvc3NpYmxlLCBidXQgaXQgaXMgbm90IGEKICAgICAgICAgICAgICAgICAgICAgICAgIyBzaWduaWZpY2FudCBwcm9ibGVtLgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBlbHNpZiAoICR0b2tlbiBlcSAneycgKSB7CgogICAgICAgICAgICAgICAgICAgIG15ICRsaW5lX251bWJlciA9IGdldF9vdXRwdXRfbGluZV9udW1iZXIoKTsKICAgICAgICAgICAgICAgICAgICAkYmxvY2tfb3BlbmluZ19saW5lX251bWJlcnskdHlwZV9zZXF1ZW5jZX0gPSAkbGluZV9udW1iZXI7CgogICAgICAgICAgICAgICAgICAgICMgc2V0IGEgbGFiZWwgZm9yIHRoaXMgYmxvY2ssIGV4Y2VwdCBmb3IKICAgICAgICAgICAgICAgICAgICAjIGEgYmFyZSBibG9jayB3aGljaCBhbHJlYWR5IGhhcyB0aGUgbGFiZWwKICAgICAgICAgICAgICAgICAgICAjIEEgbGFiZWwgY2FuIG9ubHkgYmUgdXNlZCBvbiB0aGUgbmV4dCB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkYmxvY2tfdHlwZSA9fiAvOiQvICkgeyAkY3NjX2xhc3RfbGFiZWwgPSAiIiB9CiAgICAgICAgICAgICAgICAgICAgJGNzY19ibG9ja19sYWJlbHskdHlwZV9zZXF1ZW5jZX0gPSAkY3NjX2xhc3RfbGFiZWw7CiAgICAgICAgICAgICAgICAgICAgJGNzY19sYXN0X2xhYmVsID0gIiI7CgogICAgICAgICAgICAgICAgICAgIGlmICggICAkYWNjdW11bGF0aW5nX3RleHRfZm9yX2Jsb2NrCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRsZXZlbHNfdG9fZ29bJGldID09ICRsZWFkaW5nX2Jsb2NrX3RleHRfbGV2ZWwgKQogICAgICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJGFjY3VtdWxhdGluZ190ZXh0X2Zvcl9ibG9jayBlcSAkYmxvY2tfdHlwZSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNhdmUgYW55IGxlYWRpbmcgdGV4dCBiZWZvcmUgd2UgZW50ZXIgdGhpcyBibG9jawogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJsb2NrX2xlYWRpbmdfdGV4dHskdHlwZV9zZXF1ZW5jZX0gPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxlYWRpbmdfYmxvY2tfdGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmxlYWRpbmdfYmxvY2tfaWZfZWxzaWZfdGV4dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRibG9ja19vcGVuaW5nX2xpbmVfbnVtYmVyeyR0eXBlX3NlcXVlbmNlfSA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsZWFkaW5nX2Jsb2NrX3RleHRfbGluZV9udW1iZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9ibG9ja190ZXh0X2FjY3VtdWxhdG9yKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG91bGRuJ3QgaGFwcGVuLCBidXQgbm90IGEgc2VyaW91cyBlcnJvci4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgV2Ugd2VyZSBhY2N1bXVsYXRpbmcgLWNzYyB0ZXh0IGZvciBibG9jayB0eXBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICRhY2N1bXVsYXRpbmdfdGV4dF9mb3JfYmxvY2sgYW5kIHVuZXhwZWN0ZWRseQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBlbmNvdW50ZXJlZCBhICd7JyBmb3IgYmxvY2sgdHlwZSAkYmxvY2tfdHlwZS4KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAgICR0eXBlIGVxICdrJwogICAgICAgICAgICAgICAgJiYgJGNzY19uZXdfc3RhdGVtZW50X29rCiAgICAgICAgICAgICAgICAmJiAkaXNfaWZfZWxzaWZfZWxzZV91bmxlc3Nfd2hpbGVfdW50aWxfZm9yX2ZvcmVhY2h7JHRva2VufQogICAgICAgICAgICAgICAgJiYgJHRva2VuID1+IC8kY2xvc2luZ19zaWRlX2NvbW1lbnRfbGlzdF9wYXR0ZXJuL28gKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBzZXRfYmxvY2tfdGV4dF9hY2N1bXVsYXRvcigkaSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBub3RlOiBpZ25vcmluZyB0eXBlICdxJyBiZWNhdXNlIG9mIHRyaWNrcyBiZWluZyBwbGF5ZWQKICAgICAgICAgICAgICAgICMgd2l0aCAncScgZm9yIGhhbmdpbmcgc2lkZSBjb21tZW50cwogICAgICAgICAgICAgICAgaWYgKCAkdHlwZSBuZSAnYicgJiYgJHR5cGUgbmUgJyMnICYmICR0eXBlIG5lICdxJyApIHsKICAgICAgICAgICAgICAgICAgICAkY3NjX25ld19zdGF0ZW1lbnRfb2sgPQogICAgICAgICAgICAgICAgICAgICAgKCAkYmxvY2tfdHlwZSB8fCAkdHlwZSBlcSAnSicgfHwgJHR5cGUgZXEgJzsnICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoICAgJHR5cGUgZXEgJzsnCiAgICAgICAgICAgICAgICAgICAgJiYgJGFjY3VtdWxhdGluZ190ZXh0X2Zvcl9ibG9jawogICAgICAgICAgICAgICAgICAgICYmICRsZXZlbHNfdG9fZ29bJGldID09ICRsZWFkaW5nX2Jsb2NrX3RleHRfbGV2ZWwgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHJlc2V0X2Jsb2NrX3RleHRfYWNjdW11bGF0b3IoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdGVfYmxvY2tfdGV4dCgkaSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgVHJlYXQgYW4gJ2Vsc2UnIGJsb2NrIHNwZWNpYWxseSBieSBhZGRpbmcgcHJlY2VkaW5nICdpZicgYW5kCiAgICAgICAgIyAnZWxzaWYnIHRleHQuICBPdGhlcndpc2UsIHRoZSAnZW5kIGVsc2UnIGlzIG5vdCBoZWxwZnVsLAogICAgICAgICMgZXNwZWNpYWxseSBmb3IgY3VkZGxlZC1lbHNlIGZvcm1hdHRpbmcuCiAgICAgICAgaWYgKCAkdGVybWluYWxfYmxvY2tfdHlwZSA9fiAvXmVscy8gJiYgJHJibG9ja19sZWFkaW5nX2lmX2Vsc2lmX3RleHQgKSB7CiAgICAgICAgICAgICRibG9ja19sZWFkaW5nX3RleHQgPQogICAgICAgICAgICAgIG1ha2VfZWxzZV9jc2NfdGV4dCggJGlfdGVybWluYWwsICR0ZXJtaW5hbF9ibG9ja190eXBlLAogICAgICAgICAgICAgICAgJGJsb2NrX2xlYWRpbmdfdGV4dCwgJHJibG9ja19sZWFkaW5nX2lmX2Vsc2lmX3RleHQgKTsKICAgICAgICB9CgogICAgICAgICMgaWYgdGhpcyBsaW5lIGVuZHMgaW4gYSBsYWJlbCB0aGVuIHJlbWVtYmVyIGl0IGZvciB0aGUgbmV4dCBwYXNzCiAgICAgICAgJGNzY19sYXN0X2xhYmVsID0gIiI7CiAgICAgICAgaWYgKCAkdGVybWluYWxfdHlwZSBlcSAnSicgKSB7CiAgICAgICAgICAgICRjc2NfbGFzdF9sYWJlbCA9ICR0b2tlbnNfdG9fZ29bJGlfdGVybWluYWxdOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICggJHRlcm1pbmFsX3R5cGUsICRpX3Rlcm1pbmFsLCAkaV9ibG9ja19sZWFkaW5nX3RleHQsCiAgICAgICAgICAgICRibG9ja19sZWFkaW5nX3RleHQsICRibG9ja19saW5lX2NvdW50LCAkYmxvY2tfbGFiZWwgKTsKICAgIH0KfQoKc3ViIG1ha2VfZWxzZV9jc2NfdGV4dCB7CgogICAgIyBjcmVhdGUgYWRkaXRpb25hbCAtY3NjIHRleHQgZm9yIGFuICdlbHNlJyBhbmQgb3B0aW9uYWxseSAnZWxzaWYnLAogICAgIyBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIHN3aXRjaAogICAgIyAkck9wdHNfY2xvc2luZ19zaWRlX2NvbW1lbnRfZWxzZV9mbGFnOgogICAgIwogICAgIyAgPSAwIGFkZCAnaWYnIHRleHQgdG8gdHJhaWxpbmcgZWxzZQogICAgIyAgPSAxIHNhbWUgYXMgMCBwbHVzOgogICAgIyAgICAgIGFkZCAnaWYnIHRvICdlbHNpZidzIGlmIGNhbiBmaXQgaW4gbGluZSBsZW5ndGgKICAgICMgICAgICBhZGQgbGFzdCAnZWxzaWYnIHRvIHRyYWlsaW5nIGVsc2UgaWYgY2FuIGZpdCBpbiBvbmUgbGluZQogICAgIyAgPSAyIHNhbWUgYXMgMSBidXQgZG8gbm90IGNoZWNrIGlmIGV4Y2VlZCBsaW5lIGxlbmd0aAogICAgIwogICAgIyAkcmlmX2Vsc2lmX3RleHQgPSBhIHJlZmVyZW5jZSB0byBhIGxpc3Qgb2YgYWxsIHByZXZpb3VzIGNsb3NpbmcKICAgICMgc2lkZSBjb21tZW50cyBjcmVhdGVkIGZvciB0aGlzIGlmIGJsb2NrCiAgICAjCiAgICBteSAoICRpX3Rlcm1pbmFsLCAkYmxvY2tfdHlwZSwgJGJsb2NrX2xlYWRpbmdfdGV4dCwgJHJpZl9lbHNpZl90ZXh0ICkgPSBAXzsKICAgIG15ICRjc2NfdGV4dCA9ICRibG9ja19sZWFkaW5nX3RleHQ7CgogICAgaWYgKCAgICRibG9ja190eXBlIGVxICdlbHNpZicKICAgICAgICAmJiAkck9wdHNfY2xvc2luZ19zaWRlX2NvbW1lbnRfZWxzZV9mbGFnID09IDAgKQogICAgewogICAgICAgIHJldHVybiAkY3NjX3RleHQ7CiAgICB9CgogICAgbXkgJGNvdW50ID0gQHskcmlmX2Vsc2lmX3RleHR9OwogICAgcmV0dXJuICRjc2NfdGV4dCB1bmxlc3MgKCRjb3VudCk7CgogICAgbXkgJGlmX3RleHQgPSAnWyBpZicgLiAkcmlmX2Vsc2lmX3RleHQtPlswXTsKCiAgICAjIGFsd2F5cyBzaG93IHRoZSBsZWFkaW5nICdpZicgdGV4dCBvbiAnZWxzZScKICAgIGlmICggJGJsb2NrX3R5cGUgZXEgJ2Vsc2UnICkgewogICAgICAgICRjc2NfdGV4dCAuPSAkaWZfdGV4dDsKICAgIH0KCiAgICAjIHNlZSBpZiB0aGF0J3MgYWxsCiAgICBpZiAoICRyT3B0c19jbG9zaW5nX3NpZGVfY29tbWVudF9lbHNlX2ZsYWcgPT0gMCApIHsKICAgICAgICByZXR1cm4gJGNzY190ZXh0OwogICAgfQoKICAgIG15ICRsYXN0X2Vsc2lmX3RleHQgPSAiIjsKICAgIGlmICggJGNvdW50ID4gMSApIHsKICAgICAgICAkbGFzdF9lbHNpZl90ZXh0ID0gJyBbZWxzaWYnIC4gJHJpZl9lbHNpZl90ZXh0LT5bICRjb3VudCAtIDEgXTsKICAgICAgICBpZiAoICRjb3VudCA+IDIgKSB7ICRsYXN0X2Vsc2lmX3RleHQgPSAnIFsuLi4nIC4gJGxhc3RfZWxzaWZfdGV4dDsgfQogICAgfQoKICAgICMgdGVudGF0aXZlbHkgYXBwZW5kIG9uZSBtb3JlIGl0ZW0KICAgIG15ICRzYXZlZF90ZXh0ID0gJGNzY190ZXh0OwogICAgaWYgKCAkYmxvY2tfdHlwZSBlcSAnZWxzZScgKSB7CiAgICAgICAgJGNzY190ZXh0IC49ICRsYXN0X2Vsc2lmX3RleHQ7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkY3NjX3RleHQgLj0gJyAnIC4gJGlmX3RleHQ7CiAgICB9CgogICAgIyBhbGwgZG9uZSBpZiBubyBsZW5ndGggY2hlY2tzIHJlcXVlc3RlZAogICAgaWYgKCAkck9wdHNfY2xvc2luZ19zaWRlX2NvbW1lbnRfZWxzZV9mbGFnID09IDIgKSB7CiAgICAgICAgcmV0dXJuICRjc2NfdGV4dDsKICAgIH0KCiAgICAjIHVuZG8gaXQgaWYgbGluZSBsZW5ndGggZXhjZWVkZWQKICAgIG15ICRsZW5ndGggPQogICAgICBsZW5ndGgoJGNzY190ZXh0KSArCiAgICAgIGxlbmd0aCgkYmxvY2tfdHlwZSkgKwogICAgICBsZW5ndGgoICRyT3B0cy0+eydjbG9zaW5nLXNpZGUtY29tbWVudC1wcmVmaXgnfSApICsKICAgICAgJGxldmVsc190b19nb1skaV90ZXJtaW5hbF0gKiAkck9wdHNfaW5kZW50X2NvbHVtbnMgKyAzOwogICAgaWYgKCAkbGVuZ3RoID4gbWF4aW11bV9saW5lX2xlbmd0aF9mb3JfbGV2ZWwoJGxlYWRpbmdfYmxvY2tfdGV4dF9sZXZlbCkgKSB7CiAgICAgICAgJGNzY190ZXh0ID0gJHNhdmVkX3RleHQ7CiAgICB9CiAgICByZXR1cm4gJGNzY190ZXh0Owp9Cgp7ICAgICMgc3ViIGJhbGFuY2VfY3NjX3RleHQKCiAgICBteSAlbWF0Y2hpbmdfY2hhcjsKCiAgICBCRUdJTiB7CiAgICAgICAgJW1hdGNoaW5nX2NoYXIgPSAoCiAgICAgICAgICAgICd7JyA9PiAnfScsCiAgICAgICAgICAgICcoJyA9PiAnKScsCiAgICAgICAgICAgICdbJyA9PiAnXScsCiAgICAgICAgICAgICd9JyA9PiAneycsCiAgICAgICAgICAgICcpJyA9PiAnKCcsCiAgICAgICAgICAgICddJyA9PiAnWycsCiAgICAgICAgKTsKICAgIH0KCiAgICBzdWIgYmFsYW5jZV9jc2NfdGV4dCB7CgogICAgICAgICMgQXBwZW5kIGNoYXJhY3RlcnMgdG8gYmFsYW5jZSBhIGNsb3Npbmcgc2lkZSBjb21tZW50IHNvIHRoYXQgZWRpdG9ycwogICAgICAgICMgc3VjaCBhcyB2aW0gY2FuIGNvcnJlY3RseSBqdW1wIHRocm91Z2ggY29kZS4KICAgICAgICAjIFNpbXBsZSBFeGFtcGxlOgogICAgICAgICMgIGlucHV0ICA9ICMjIGVuZCBmb3JlYWNoIG15ICRmb28gKCBzb3J0IHsgJGIgIC4uLgogICAgICAgICMgIG91dHB1dCA9ICMjIGVuZCBmb3JlYWNoIG15ICRmb28gKCBzb3J0IHsgJGIgIC4uLn0pCgogICAgICAgICMgTk9URTogVGhpcyByb3V0aW5lIGRvZXMgbm90IGN1cnJlbnRseSBmaWx0ZXIgb3V0IHN0cnVjdHVyZXMgd2l0aGluCiAgICAgICAgIyBxdW90ZWQgdGV4dCBiZWNhdXNlIHRoZSBib3VuY2UgYWxnb3JpdGhtcyBpbiB0ZXh0IGVkaXRvcnMgZG8gbm90CiAgICAgICAgIyBuZWNlc3NhcmlseSBkbyB0aGlzIGVpdGhlciAoYSB2ZXJzaW9uIG9mIHZpbSB3YXMgY2hlY2tlZCBhbmQKICAgICAgICAjIGRpZCBub3QgZG8gdGhpcykuCgogICAgICAgICMgU29tZSBjb21wbGV4IGV4YW1wbGVzIHdoaWNoIHdpbGwgY2F1c2UgdHJvdWJsZSBmb3Igc29tZSBlZGl0b3JzOgogICAgICAgICMgIHdoaWxlICggJG1hc2tfc3RyaW5nID1+IC9ce1tee10qP1x9L2cgKSB7CiAgICAgICAgIyAgaWYgKCAkbWFza19zdHIgPX4gL1x9XHMqZWxzW15ce1x9XStceyQvICkgewogICAgICAgICMgIGlmICggJDEgZXEgJ3snICkgewogICAgICAgICMgdGVzdCBmaWxlIHRlc3QxL2JyYWNlcy5wbCBoYXMgbWFueSBzdWNoIGV4YW1wbGVzLgoKICAgICAgICBteSAoJGNzYykgPSBAXzsKCiAgICAgICAgIyBsb29wIHRvIGV4YW1pbmUgY2hhcmFjdGVycyBvbmUtYnktb25lLCBSSUdIVCB0byBMRUZUIGFuZAogICAgICAgICMgYnVpbGQgYSBiYWxhbmNpbmcgZW5kaW5nLCBMRUZUIHRvIFJJR0hULgogICAgICAgIGZvciAoIG15ICRwb3MgPSBsZW5ndGgoJGNzYykgLSAxIDsgJHBvcyA+PSAwIDsgJHBvcy0tICkgewoKICAgICAgICAgICAgbXkgJGNoYXIgPSBzdWJzdHIoICRjc2MsICRwb3MsIDEgKTsKCiAgICAgICAgICAgICMgaWdub3JlIGV2ZXJ5dGhpbmcgZXhjZXB0IHN0cnVjdHVyYWwgY2hhcmFjdGVycwogICAgICAgICAgICBuZXh0IHVubGVzcyAoICRtYXRjaGluZ19jaGFyeyRjaGFyfSApOwoKICAgICAgICAgICAgIyBwb3AgbW9zdCByZWNlbnRseSBhcHBlbmRlZCBjaGFyYWN0ZXIKICAgICAgICAgICAgbXkgJHRvcCA9IGNob3AoJGNzYyk7CgogICAgICAgICAgICAjIHB1c2ggaXQgYmFjayBwbHVzIHRoZSBtYXRlIHRvIHRoZSBuZXdlc3QgY2hhcmFjdGVyCiAgICAgICAgICAgICMgdW5sZXNzIHRoZXkgYmFsYW5jZSBlYWNoIG90aGVyLgogICAgICAgICAgICAkY3NjID0gJGNzYyAuICR0b3AgLiAkbWF0Y2hpbmdfY2hhcnskY2hhcn0gdW5sZXNzICR0b3AgZXEgJGNoYXI7CiAgICAgICAgfQoKICAgICAgICAjIHJldHVybiB0aGUgYmFsYW5jZWQgc3RyaW5nCiAgICAgICAgcmV0dXJuICRjc2M7CiAgICB9Cn0KCnN1YiBhZGRfY2xvc2luZ19zaWRlX2NvbW1lbnQgewoKICAgIG15ICRzZWxmID0gc2hpZnQ7CgogICAgIyBhZGQgY2xvc2luZyBzaWRlIGNvbW1lbnRzIGFmdGVyIGNsb3NpbmcgYmxvY2sgYnJhY2VzIGlmIC1jc2MgdXNlZAogICAgbXkgJGNzY3dfYmxvY2tfY29tbWVudDsKCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIFN0ZXAgMTogbG9vcCB0aHJvdWdoIGFsbCB0b2tlbnMgb2YgdGhpcyBsaW5lIHRvIGFjY3VtdWxhdGUKICAgICMgdGhlIHRleHQgbmVlZGVkIHRvIGNyZWF0ZSB0aGUgY2xvc2luZyBzaWRlIGNvbW1lbnRzLiBBbHNvIHNlZQogICAgIyBob3cgdGhlIGxpbmUgZW5kcy4KICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBteSAoICR0ZXJtaW5hbF90eXBlLCAkaV90ZXJtaW5hbCwgJGlfYmxvY2tfbGVhZGluZ190ZXh0LAogICAgICAgICRibG9ja19sZWFkaW5nX3RleHQsICRibG9ja19saW5lX2NvdW50LCAkYmxvY2tfbGFiZWwgKQogICAgICA9IGFjY3VtdWxhdGVfY3NjX3RleHQoKTsKCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIFN0ZXAgMjogbWFrZSB0aGUgY2xvc2luZyBzaWRlIGNvbW1lbnQgaWYgdGhpcyBlbmRzIGEgYmxvY2sKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIG15ICRoYXZlX3NpZGVfY29tbWVudCA9ICR0eXBlc190b19nb1skbWF4X2luZGV4X3RvX2dvXSBlcSAnIyc7CgogICAgIyBpZiB0aGlzIGxpbmUgbWlnaHQgZW5kIGluIGEgYmxvY2sgY2xvc3VyZS4uCiAgICBpZiAoCiAgICAgICAgJHRlcm1pbmFsX3R5cGUgZXEgJ30nCgogICAgICAgICMgLi5hbmQgZWl0aGVyCiAgICAgICAgJiYgKAoKICAgICAgICAgICAgIyB0aGUgYmxvY2sgaXMgbG9uZyBlbm91Z2gKICAgICAgICAgICAgKCAkYmxvY2tfbGluZV9jb3VudCA+PSAkck9wdHMtPnsnY2xvc2luZy1zaWRlLWNvbW1lbnQtaW50ZXJ2YWwnfSApCgogICAgICAgICAgICAjIG9yIHRoZXJlIGlzIGFuIGV4aXN0aW5nIGNvbW1lbnQgdG8gY2hlY2sKICAgICAgICAgICAgfHwgKCAgICRoYXZlX3NpZGVfY29tbWVudAogICAgICAgICAgICAgICAgJiYgJHJPcHRzLT57J2Nsb3Npbmctc2lkZS1jb21tZW50LXdhcm5pbmdzJ30gKQogICAgICAgICkKCiAgICAgICAgIyAuLiBhbmQgaWYgdGhpcyBpcyBvbmUgb2YgdGhlIHR5cGVzIG9mIGludGVyZXN0CiAgICAgICAgJiYgJGJsb2NrX3R5cGVfdG9fZ29bJGlfdGVybWluYWxdID1+CiAgICAgICAgLyRjbG9zaW5nX3NpZGVfY29tbWVudF9saXN0X3BhdHRlcm4vbwoKICAgICAgICAjIC4uIGJ1dCBub3QgYW4gYW5vbnltb3VzIHN1YgogICAgICAgICMgVGhlc2UgYXJlIG5vdCBub3JtYWxseSBvZiBpbnRlcmVzdCwgYW5kIHRoZWlyIGNsb3NpbmcgYnJhY2VzIGFyZQogICAgICAgICMgb2Z0ZW4gZm9sbG93ZWQgYnkgY29tbWFzIG9yIHNlbWljb2xvbnMgYW55d2F5LiAgVGhpcyBhbHNvIGF2b2lkcwogICAgICAgICMgcG9zc2libGUgZXJyYXRpYyBvdXRwdXQgZHVlIHRvIGxpbmUgbnVtYmVyaW5nIGluY29uc2lzdGVuY2llcwogICAgICAgICMgaW4gdGhlIGNhc2VzIHdoZXJlIHRoZWlyIGNsb3NpbmcgYnJhY2VzIHRlcm1pbmF0ZSBhIGxpbmUuCiAgICAgICAgJiYgJGJsb2NrX3R5cGVfdG9fZ29bJGlfdGVybWluYWxdIG5lICdzdWInCgogICAgICAgICMgLi5hbmQgdGhlIGNvcnJlc3BvbmRpbmcgb3BlbmluZyBicmFjZSBtdXN0IGlzIG5vdCBpbiB0aGlzIGJhdGNoCiAgICAgICAgIyAoYmVjYXVzZSB3ZSBkbyBub3QgbmVlZCB0byB0YWcgb25lLWxpbmUgYmxvY2tzLCBhbHRob3VnaCB0aGlzCiAgICAgICAgIyBzaG91bGQgYWxzbyBiZSBjYXVnaHQgd2l0aCBhIHBvc2l0aXZlIC1jc2NpIHZhbHVlKQogICAgICAgICYmICRtYXRlX2luZGV4X3RvX2dvWyRpX3Rlcm1pbmFsXSA8IDAKCiAgICAgICAgIyAuLmFuZCBlaXRoZXIKICAgICAgICAmJiAoCgogICAgICAgICAgICAjIHRoaXMgaXMgdGhlIGxhc3QgdG9rZW4gKGxpbmUgZG9lc24ndCBoYXZlIGEgc2lkZSBjb21tZW50KQogICAgICAgICAgICAhJGhhdmVfc2lkZV9jb21tZW50CgogICAgICAgICAgICAjIG9yIHRoZSBvbGQgc2lkZSBjb21tZW50IGlzIGEgY2xvc2luZyBzaWRlIGNvbW1lbnQKICAgICAgICAgICAgfHwgJHRva2Vuc190b19nb1skbWF4X2luZGV4X3RvX2dvXSA9fgogICAgICAgICAgICAvJGNsb3Npbmdfc2lkZV9jb21tZW50X3ByZWZpeF9wYXR0ZXJuL28KICAgICAgICApCiAgICAgICkKICAgIHsKCiAgICAgICAgIyB0aGVuIG1ha2UgdGhlIGNsb3Npbmcgc2lkZSBjb21tZW50IHRleHQKICAgICAgICBpZiAoJGJsb2NrX2xhYmVsKSB7ICRibG9ja19sYWJlbCAuPSAiICIgfQogICAgICAgIG15ICR0b2tlbiA9CiIkck9wdHMtPnsnY2xvc2luZy1zaWRlLWNvbW1lbnQtcHJlZml4J30gJGJsb2NrX2xhYmVsJGJsb2NrX3R5cGVfdG9fZ29bJGlfdGVybWluYWxdIjsKCiAgICAgICAgIyBhcHBlbmQgYW55IGV4dHJhIGRlc2NyaXB0aXZlIHRleHQgY29sbGVjdGVkIGFib3ZlCiAgICAgICAgaWYgKCAkaV9ibG9ja19sZWFkaW5nX3RleHQgPT0gJGlfdGVybWluYWwgKSB7CiAgICAgICAgICAgICR0b2tlbiAuPSAkYmxvY2tfbGVhZGluZ190ZXh0OwogICAgICAgIH0KCiAgICAgICAgJHRva2VuID0gYmFsYW5jZV9jc2NfdGV4dCgkdG9rZW4pCiAgICAgICAgICBpZiAkck9wdHMtPnsnY2xvc2luZy1zaWRlLWNvbW1lbnRzLWJhbGFuY2VkJ307CgogICAgICAgICR0b2tlbiA9fiBzL1xzKiQvLzsgICAgIyB0cmltIGFueSB0cmFpbGluZyB3aGl0ZXNwYWNlCgogICAgICAgICMgaGFuZGxlIGNhc2Ugb2YgZXhpc3RpbmcgY2xvc2luZyBzaWRlIGNvbW1lbnQKICAgICAgICBpZiAoJGhhdmVfc2lkZV9jb21tZW50KSB7CgogICAgICAgICAgICAjIHdhcm4gaWYgcmVxdWVzdGVkIGFuZCB0b2tlbnMgZGlmZmVyIHNpZ25pZmljYW50bHkKICAgICAgICAgICAgaWYgKCAkck9wdHMtPnsnY2xvc2luZy1zaWRlLWNvbW1lbnQtd2FybmluZ3MnfSApIHsKICAgICAgICAgICAgICAgIG15ICRvbGRfY3NjID0gJHRva2Vuc190b19nb1skbWF4X2luZGV4X3RvX2dvXTsKICAgICAgICAgICAgICAgIG15ICRuZXdfY3NjID0gJHRva2VuOwogICAgICAgICAgICAgICAgJG5ld19jc2MgPX4gcy9ccysvL2c7ICAgICAgICAgICAgIyB0cmltIGFsbCB3aGl0ZXNwYWNlCiAgICAgICAgICAgICAgICAkb2xkX2NzYyA9fiBzL1xzKy8vZzsgICAgICAgICAgICAjIHRyaW0gYWxsIHdoaXRlc3BhY2UKICAgICAgICAgICAgICAgICRuZXdfY3NjID1+IHMvW1xdXClcfVxzXSokLy87ICAgICMgdHJpbSB0cmFpbGluZyBzdHJ1Y3R1cmVzCiAgICAgICAgICAgICAgICAkb2xkX2NzYyA9fiBzL1tcXVwpXH1cc10qJC8vOyAgICAjIHRyaW0gdHJhaWxpbmcgc3RydWN0dXJlcwogICAgICAgICAgICAgICAgJG5ld19jc2MgPX4gcy8oXC5cLlwuKSQvLzsgICAgICAgIyB0cmltIHRyYWlsaW5nICcuLi4nCiAgICAgICAgICAgICAgICBteSAkbmV3X3RyYWlsaW5nX2RvdHMgPSAkMTsKICAgICAgICAgICAgICAgICRvbGRfY3NjID1+IHMvKFwuXC5cLilccyokLy87ICAgICMgdHJpbSB0cmFpbGluZyAnLi4uJwoKICAgICAgICAgICAgICAgICMgUGF0Y2ggdG8gaGFuZGxlIG11bHRpcGxlIGNsb3Npbmcgc2lkZSBjb21tZW50cyBhdAogICAgICAgICAgICAgICAgIyBlbHNlIGFuZCBlbHNpZidzLiAgVGhlc2UgaGF2ZSBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkCiAgICAgICAgICAgICAgICAjIHRvIGNoZWNrLCBzbyBpZiB3ZSBzZWUgYW4gaW5kaWNhdGlvbiBvZgogICAgICAgICAgICAgICAgIyAnWyBpZicgb3IgJ1sgIyBlbHNpZicsIHRoZW4gYXNzdW1lIHRoZXkgd2VyZSBtYWRlCiAgICAgICAgICAgICAgICAjIGJ5IHBlcmx0aWR5LgogICAgICAgICAgICAgICAgaWYgKCAkYmxvY2tfdHlwZV90b19nb1skaV90ZXJtaW5hbF0gZXEgJ2Vsc2UnICkgewogICAgICAgICAgICAgICAgICAgIGlmICggJG9sZF9jc2MgPX4gL1xbXHMqZWxzaWYvICkgeyAkb2xkX2NzYyA9ICRuZXdfY3NjIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJGJsb2NrX3R5cGVfdG9fZ29bJGlfdGVybWluYWxdIGVxICdlbHNpZicgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkb2xkX2NzYyA9fiAvXFtccyppZi8gKSB7ICRvbGRfY3NjID0gJG5ld19jc2MgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgaWYgb2xkIGNvbW1lbnQgaXMgY29udGFpbmVkIGluIG5ldyBjb21tZW50LAogICAgICAgICAgICAgICAgIyBvbmx5IGNvbXBhcmUgdGhlIGNvbW1vbiBwYXJ0LgogICAgICAgICAgICAgICAgaWYgKCBsZW5ndGgoJG5ld19jc2MpID4gbGVuZ3RoKCRvbGRfY3NjKSApIHsKICAgICAgICAgICAgICAgICAgICAkbmV3X2NzYyA9IHN1YnN0ciggJG5ld19jc2MsIDAsIGxlbmd0aCgkb2xkX2NzYykgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGlmIHRoZSBuZXcgY29tbWVudCBpcyBzaG9ydGVyIGFuZCBoYXMgYmVlbiBsaW1pdGVkLAogICAgICAgICAgICAgICAgIyBvbmx5IGNvbXBhcmUgdGhlIGNvbW1vbiBwYXJ0LgogICAgICAgICAgICAgICAgaWYgKCBsZW5ndGgoJG5ld19jc2MpIDwgbGVuZ3RoKCRvbGRfY3NjKQogICAgICAgICAgICAgICAgICAgICYmICRuZXdfdHJhaWxpbmdfZG90cyApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJG9sZF9jc2MgPSBzdWJzdHIoICRvbGRfY3NjLCAwLCBsZW5ndGgoJG5ld19jc2MpICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBhbnkgcmVtYWluaW5nIGRpZmZlcmVuY2U/CiAgICAgICAgICAgICAgICBpZiAoICRuZXdfY3NjIG5lICRvbGRfY3NjICkgewoKICAgICAgICAgICAgICAgICAgICAjIGp1c3QgbGVhdmUgdGhlIG9sZCBjb21tZW50IGlmIHdlIGFyZSBiZWxvdyB0aGUgdGhyZXNob2xkCiAgICAgICAgICAgICAgICAgICAgIyBmb3IgY3JlYXRpbmcgc2lkZSBjb21tZW50cwogICAgICAgICAgICAgICAgICAgIGlmICggJGJsb2NrX2xpbmVfY291bnQgPAogICAgICAgICAgICAgICAgICAgICAgICAkck9wdHMtPnsnY2xvc2luZy1zaWRlLWNvbW1lbnQtaW50ZXJ2YWwnfSApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkdG9rZW4gPSB1bmRlZjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlIHdlJ2xsIG1ha2UgYSBub3RlIG9mIGl0CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nKAoicGVybHRpZHkgLWNzY3cgcmVwbGFjZWQ6ICR0b2tlbnNfdG9fZ29bJG1heF9pbmRleF90b19nb11cbiIKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc2F2ZSB0aGUgb2xkIHNpZGUgY29tbWVudCBpbiBhIG5ldyB0cmFpbGluZyBibG9jawogICAgICAgICAgICAgICAgICAgICAgICAjIGNvbW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHRpbWVzdGFtcCA9ICIiOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRyT3B0cy0+eyd0aW1lc3RhbXAnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICggJGRheSwgJG1vbnRoLCAkeWVhciApID0gKGxvY2FsdGltZSlbIDMsIDQsIDUgXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5ZWFyICArPSAxOTAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1vbnRoICs9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZXN0YW1wID0gIiR5ZWFyLSRtb250aC0kZGF5IjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAkY3Njd19ibG9ja19jb21tZW50ID0KIiMjIHBlcmx0aWR5IC1jc2N3ICR0aW1lc3RhbXA6ICR0b2tlbnNfdG9fZ29bJG1heF9pbmRleF90b19nb10iOwojIyAiIyMgcGVybHRpZHkgLWNzY3cgJHllYXItJG1vbnRoLSRkYXk6ICR0b2tlbnNfdG9fZ29bJG1heF9pbmRleF90b19nb10iOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAjIE5vIGRpZmZlcmVuY2VzLi4gd2UgY2FuIHNhZmVseSBkZWxldGUgb2xkIGNvbW1lbnQgaWYgd2UKICAgICAgICAgICAgICAgICAgICAjIGFyZSBiZWxvdyB0aGUgdGhyZXNob2xkCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkYmxvY2tfbGluZV9jb3VudCA8CiAgICAgICAgICAgICAgICAgICAgICAgICRyT3B0cy0+eydjbG9zaW5nLXNpZGUtY29tbWVudC1pbnRlcnZhbCd9ICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0b2tlbiA9IHVuZGVmOwogICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi0+dW5zdG9yZV90b2tlbl90b19nbygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bJG1heF9pbmRleF90b19nb10gZXEgJyMnICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT51bnN0b3JlX3Rva2VuX3RvX2dvKCkKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICR0eXBlc190b19nb1skbWF4X2luZGV4X3RvX2dvXSBlcSAnYicgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc3dpdGNoIHRvIHRoZSBuZXcgY3NjICh1bmxlc3Mgd2UgZGVsZXRlZCBpdCEpCiAgICAgICAgICAgICR0b2tlbnNfdG9fZ29bJG1heF9pbmRleF90b19nb10gPSAkdG9rZW4gaWYgJHRva2VuOwogICAgICAgIH0KCiAgICAgICAgIyBoYW5kbGUgY2FzZSBvZiBOTyBleGlzdGluZyBjbG9zaW5nIHNpZGUgY29tbWVudAogICAgICAgIGVsc2UgewoKICAgICAgICAjIFJlbW92ZSBhbnkgZXhpc3RpbmcgYmxhbmsgYW5kIGFkZCBhbm90aGVyIGJlbG93LgogICAgICAgICMgVGhpcyBpcyBhIHRyaWNreSBwb2ludC4gQSBzaWRlIGNvbW1lbnQgbmVlZHMgdG8gaGF2ZSB0aGUgc2FtZSBsZXZlbAogICAgICAgICMgYXMgdGhlIHByZWNlZGluZyBjbG9zaW5nIGJyYWNlIG9yIGVsc2UgdGhlIGxpbmUgd2lsbCBub3QgZ2V0IHRoZSByaWdodAogICAgICAgICMgaW5kZW50YXRpb24uIFNvIGV2ZW4gaWYgd2UgaGF2ZSBhIGJsYW5rLCB3ZSBhcmUgZ29pbmcgdG8gcmVwbGFjZSBpdC4KICAgICAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bJG1heF9pbmRleF90b19nb10gZXEgJ2InICkgewogICAgICAgICAgICAgICAgdW5zdG9yZV90b2tlbl90b19nbygpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGluc2VydCB0aGUgbmV3IHNpZGUgY29tbWVudCBpbnRvIHRoZSBvdXRwdXQgdG9rZW4gc3RyZWFtCiAgICAgICAgICAgIG15ICR0eXBlICAgICAgICAgID0gJyMnOwogICAgICAgICAgICBteSAkYmxvY2tfdHlwZSAgICA9ICcnOwogICAgICAgICAgICBteSAkdHlwZV9zZXF1ZW5jZSA9ICcnOwogICAgICAgICAgICBteSAkY29udGFpbmVyX2Vudmlyb25tZW50ID0KICAgICAgICAgICAgICAkY29udGFpbmVyX2Vudmlyb25tZW50X3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dOwogICAgICAgICAgICBteSAkbGV2ZWwgICAgICAgICAgICAgICAgPSAkbGV2ZWxzX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dOwogICAgICAgICAgICBteSAkc2xldmVsICAgICAgICAgICAgICAgPSAkbmVzdGluZ19kZXB0aF90b19nb1skbWF4X2luZGV4X3RvX2dvXTsKICAgICAgICAgICAgbXkgJG5vX2ludGVybmFsX25ld2xpbmVzID0gMDsKCiAgICAgICAgICAgIG15ICRjaV9sZXZlbCAgICAgICAgICAgPSAkY2lfbGV2ZWxzX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dOwogICAgICAgICAgICBteSAkaW5fY29udGludWVkX3F1b3RlID0gMDsKCiAgICAgICAgICAgICMgaW5zZXJ0IGEgYmxhbmsgdG9rZW4KICAgICAgICAgICAgJHNlbGYtPmluc2VydF9uZXdfdG9rZW5fdG9fZ28oICcgJywgJ2InLCAkc2xldmVsLAogICAgICAgICAgICAgICAgJG5vX2ludGVybmFsX25ld2xpbmVzICk7CgogICAgICAgICAgICAjIHRoZW4gdGhlIHNpZGUgY29tbWVudAogICAgICAgICAgICAkc2VsZi0+aW5zZXJ0X25ld190b2tlbl90b19nbyggJHRva2VuLCAkdHlwZSwgJHNsZXZlbCwKICAgICAgICAgICAgICAgICRub19pbnRlcm5hbF9uZXdsaW5lcyApOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAkY3Njd19ibG9ja19jb21tZW50Owp9CgpzdWIgcHJldmlvdXNfbm9uYmxhbmtfdG9rZW4gewogICAgbXkgKCRpKSAgPSBAXzsKICAgIG15ICRuYW1lID0gIiI7CiAgICBteSAkaW0gICA9ICRpIC0gMTsKICAgIHJldHVybiAiIiBpZiAoICRpbSA8IDAgKTsKICAgIGlmICggJHR5cGVzX3RvX2dvWyRpbV0gZXEgJ2InICkgeyAkaW0tLTsgfQogICAgcmV0dXJuICIiIGlmICggJGltIDwgMCApOwogICAgJG5hbWUgPSAkdG9rZW5zX3RvX2dvWyRpbV07CgogICAgIyBwcmVwZW5kIGFueSBzdWIgbmFtZSB0byBhbiBpc29sYXRlZCAtPiB0byBhdm9pZCB1bndhbnRlZCBhbGlnbm1lbnRzCiAgICAjIFt0ZXN0IGNhc2UgaXMgdGVzdDgvcGVuY28ucGxdCiAgICBpZiAoICRuYW1lIGVxICctPicgKSB7CiAgICAgICAgJGltLS07CiAgICAgICAgaWYgKCAkaW0gPj0gMCAmJiAkdHlwZXNfdG9fZ29bJGltXSBuZSAnYicgKSB7CiAgICAgICAgICAgICRuYW1lID0gJHRva2Vuc190b19nb1skaW1dIC4gJG5hbWU7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuICRuYW1lOwp9CgpzdWIgc2VuZF9saW5lc190b192ZXJ0aWNhbF9hbGlnbmVyIHsKCiAgICBteSAoICRzZWxmLCAkcmlfZmlyc3QsICRyaV9sYXN0LCAkZG9fbm90X3BhZCApID0gQF87CgogICAgbXkgJHZhbGlnbl9iYXRjaF9udW1iZXIgPSAkc2VsZi0+aW5jcmVtZW50X3ZhbGlnbl9iYXRjaF9jb3VudCgpOwoKICAgIG15ICRjc2N3X2Jsb2NrX2NvbW1lbnQ7CiAgICBpZiAoICRyT3B0cy0+eydjbG9zaW5nLXNpZGUtY29tbWVudHMnfSAmJiAkbWF4X2luZGV4X3RvX2dvID49IDAgKSB7CiAgICAgICAgJGNzY3dfYmxvY2tfY29tbWVudCA9ICRzZWxmLT5hZGRfY2xvc2luZ19zaWRlX2NvbW1lbnQoKTsKCiAgICAgICAgIyBBZGQgb3IgdXBkYXRlIGFueSBjbG9zaW5nIHNpZGUgY29tbWVudAogICAgICAgIGlmICggJHR5cGVzX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dIGVxICcjJyApIHsKICAgICAgICAgICAgJHJpX2xhc3QtPlstMV0gPSAkbWF4X2luZGV4X3RvX2dvOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkcmluZGVudGF0aW9uX2xpc3QgPSBbMF07ICAgICMgcmVmIHRvIGluZGVudGF0aW9ucyBmb3IgZWFjaCBsaW5lCgogICAgIyBkZWZpbmUgdGhlIGFycmF5IEBtYXRjaGluZ190b2tlbl90b19nbyBmb3IgdGhlIG91dHB1dCB0b2tlbnMKICAgICMgd2hpY2ggd2lsbCBiZSBub24tYmxhbmsgZm9yIGVhY2ggc3BlY2lhbCB0b2tlbiAoc3VjaCBhcyA9PikKICAgICMgZm9yIHdoaWNoIGFsaWdubWVudCBpcyByZXF1aXJlZC4KICAgIHNldF92ZXJ0aWNhbF9hbGlnbm1lbnRfbWFya2VycyggJHJpX2ZpcnN0LCAkcmlfbGFzdCApOwoKICAgICMgZmx1c2ggaWYgbmVjZXNzYXJ5IHRvIGF2b2lkIHVud2FudGVkIGFsaWdubWVudAogICAgbXkgJG11c3RfZmx1c2ggPSAwOwogICAgaWYgKCBAeyRyaV9maXJzdH0gPiAxICkgewoKICAgICAgICAjIGZsdXNoIGJlZm9yZSBhIGxvbmcgaWYgc3RhdGVtZW50CiAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bMF0gZXEgJ2snICYmICR0b2tlbnNfdG9fZ29bMF0gPX4gL14oaWZ8dW5sZXNzKSQvICkgewogICAgICAgICAgICAkbXVzdF9mbHVzaCA9IDE7CiAgICAgICAgfQogICAgfQogICAgaWYgKCRtdXN0X2ZsdXNoKSB7CiAgICAgICAgUGVybDo6VGlkeTo6VmVydGljYWxBbGlnbmVyOjpmbHVzaCgpOwogICAgfQoKICAgIHVuZG9fY2koICRyaV9maXJzdCwgJHJpX2xhc3QgKTsKCiAgICBzZXRfbG9naWNhbF9wYWRkaW5nKCAkcmlfZmlyc3QsICRyaV9sYXN0ICk7CgogICAgIyBsb29wIHRvIHByZXBhcmUgZWFjaCBsaW5lIGZvciBzaGlwbWVudAogICAgbXkgJG5fbGFzdF9saW5lID0gQHskcmlfZmlyc3R9IC0gMTsKICAgIG15ICRpbl9jb21tYV9saXN0OwogICAgZm9yIG15ICRuICggMCAuLiAkbl9sYXN0X2xpbmUgKSB7CiAgICAgICAgbXkgJGliZWcgPSAkcmlfZmlyc3QtPlskbl07CiAgICAgICAgbXkgJGllbmQgPSAkcmlfbGFzdC0+WyRuXTsKCiAgICAgICAgZGVsZXRlX25lZWRsZXNzX2FsaWdubWVudHMoICRpYmVnLCAkaWVuZCApOwoKICAgICAgICBteSAoICRydG9rZW5zLCAkcmZpZWxkcywgJHJwYXR0ZXJucyApID0KICAgICAgICAgIG1ha2VfYWxpZ25tZW50X3BhdHRlcm5zKCAkaWJlZywgJGllbmQgKTsKCiAgICAgICAgIyBTZXQgZmxhZyB0byBzaG93IGhvdyBtdWNoIGxldmVsIGNoYW5nZXMgYmV0d2VlbiB0aGlzIGxpbmUKICAgICAgICAjIGFuZCB0aGUgbmV4dCBsaW5lLCBpZiB3ZSBoYXZlIGl0LgogICAgICAgIG15ICRsanVtcCA9IDA7CiAgICAgICAgaWYgKCAkbiA8ICRuX2xhc3RfbGluZSApIHsKICAgICAgICAgICAgbXkgJGliZWdwID0gJHJpX2ZpcnN0LT5bICRuICsgMSBdOwogICAgICAgICAgICAkbGp1bXAgPSAkbGV2ZWxzX3RvX2dvWyRpYmVncF0gLSAkbGV2ZWxzX3RvX2dvWyRpZW5kXTsKICAgICAgICB9CgogICAgICAgIG15ICggJGluZGVudGF0aW9uLCAkbGV2LCAkbGV2ZWxfZW5kLCAkdGVybWluYWxfdHlwZSwKICAgICAgICAgICAgJGlzX3NlbWljb2xvbl90ZXJtaW5hdGVkLCAkaXNfb3V0ZGVudGVkX2xpbmUgKQogICAgICAgICAgPSAkc2VsZi0+c2V0X2FkanVzdGVkX2luZGVudGF0aW9uKCAkaWJlZywgJGllbmQsICRyZmllbGRzLCAkcnBhdHRlcm5zLAogICAgICAgICAgICAkcmlfZmlyc3QsICRyaV9sYXN0LCAkcmluZGVudGF0aW9uX2xpc3QsICRsanVtcCApOwoKICAgICAgICAjIHdlIHdpbGwgYWxsb3cgb3V0ZGVudGluZyBvZiBsb25nIGxpbmVzLi4KICAgICAgICBteSAkb3V0ZGVudF9sb25nX2xpbmVzID0gKAoKICAgICAgICAgICAgIyB3aGljaCBhcmUgbG9uZyBxdW90ZXMsIGlmIGFsbG93ZWQKICAgICAgICAgICAgKCAkdHlwZXNfdG9fZ29bJGliZWddIGVxICdRJyAmJiAkck9wdHMtPnsnb3V0ZGVudC1sb25nLXF1b3Rlcyd9ICkKCiAgICAgICAgICAgICMgd2hpY2ggYXJlIGxvbmcgYmxvY2sgY29tbWVudHMsIGlmIGFsbG93ZWQKICAgICAgICAgICAgICB8fCAoCiAgICAgICAgICAgICAgICAgICAkdHlwZXNfdG9fZ29bJGliZWddIGVxICcjJwogICAgICAgICAgICAgICAgJiYgJHJPcHRzLT57J291dGRlbnQtbG9uZy1jb21tZW50cyd9CgogICAgICAgICAgICAgICAgIyBidXQgbm90IGlmIHRoaXMgaXMgYSBzdGF0aWMgYmxvY2sgY29tbWVudAogICAgICAgICAgICAgICAgJiYgISRpc19zdGF0aWNfYmxvY2tfY29tbWVudAogICAgICAgICAgICAgICkKICAgICAgICApOwoKICAgICAgICBteSAkbGV2ZWxfanVtcCA9CiAgICAgICAgICAkbmVzdGluZ19kZXB0aF90b19nb1sgJGllbmQgKyAxIF0gLSAkbmVzdGluZ19kZXB0aF90b19nb1skaWJlZ107CgogICAgICAgIG15ICRydmVydGljYWxfdGlnaHRuZXNzX2ZsYWdzID0KICAgICAgICAgIHNldF92ZXJ0aWNhbF90aWdodG5lc3NfZmxhZ3MoICRuLCAkbl9sYXN0X2xpbmUsICRpYmVnLCAkaWVuZCwKICAgICAgICAgICAgJHJpX2ZpcnN0LCAkcmlfbGFzdCApOwoKICAgICAgICAjIGZsdXNoIGFuIG91dGRlbnRlZCBsaW5lIHRvIGF2b2lkIGFueSB1bndhbnRlZCB2ZXJ0aWNhbCBhbGlnbm1lbnQKICAgICAgICBQZXJsOjpUaWR5OjpWZXJ0aWNhbEFsaWduZXI6OmZsdXNoKCkgaWYgKCRpc19vdXRkZW50ZWRfbGluZSk7CgogICAgICAgICMgU2V0IGEgZmxhZyBhdCB0aGUgZmluYWwgJzonIG9mIGEgdGVybmFyeSBjaGFpbiB0byByZXF1ZXN0CiAgICAgICAgIyB2ZXJ0aWNhbCBhbGlnbm1lbnQgb2YgdGhlIGZpbmFsIHRlcm0uICBIZXJlIGlzIGEKICAgICAgICAjIHNsaWdodGx5IGNvbXBsZXggZXhhbXBsZToKICAgICAgICAjCiAgICAgICAgIyAkc2VsZi0+e190ZXh0fSA9ICgKICAgICAgICAjICAgICEkc2VjdGlvbiAgICAgICAgPyAnJwogICAgICAgICMgICA6ICR0eXBlIGVxICdpdGVtJyA/ICJ0aGUgJHNlY3Rpb24gZW50cnkiCiAgICAgICAgIyAgIDogICAgICAgICAgICAgICAgICAgInRoZSBzZWN0aW9uIG9uICRzZWN0aW9uIgogICAgICAgICMgKQogICAgICAgICMgLiAoCiAgICAgICAgIyAgICRwYWdlCiAgICAgICAgIyAgID8gKCAkc2VjdGlvbiA/ICcgaW4gJyA6ICcnICkgLiAidGhlICRwYWdlJHBhZ2VfZXh0IG1hbnBhZ2UiCiAgICAgICAgIyAgIDogJyBlbHNld2hlcmUgaW4gdGhpcyBkb2N1bWVudCcKICAgICAgICAjICk7CiAgICAgICAgIwogICAgICAgIG15ICRpc190ZXJtaW5hbF90ZXJuYXJ5ID0gMDsKICAgICAgICBpZiAoICAgJHRva2Vuc190b19nb1skaWJlZ10gZXEgJzonCiAgICAgICAgICAgIHx8ICRuID4gMCAmJiAkdG9rZW5zX3RvX2dvWyAkcmlfbGFzdC0+WyAkbiAtIDEgXSBdIGVxICc6JyApCiAgICAgICAgewogICAgICAgICAgICBteSAkbGFzdF9sZWFkaW5nX3R5cGUgPSAiOiI7CiAgICAgICAgICAgIGlmICggJG4gPiAwICkgewogICAgICAgICAgICAgICAgbXkgJGlwcmV2ID0gJHJpX2ZpcnN0LT5bICRuIC0gMSBdOwogICAgICAgICAgICAgICAgJGxhc3RfbGVhZGluZ190eXBlID0gJHR5cGVzX3RvX2dvWyRpcHJldl07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAgICR0ZXJtaW5hbF90eXBlIG5lICc7JwogICAgICAgICAgICAgICAgJiYgJG5fbGFzdF9saW5lID4gJG4KICAgICAgICAgICAgICAgICYmICRsZXZlbF9lbmQgPT0gJGxldiApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG15ICRpbmV4dCA9ICRyaV9maXJzdC0+WyAkbiArIDEgXTsKICAgICAgICAgICAgICAgICRsZXZlbF9lbmQgICAgID0gJGxldmVsc190b19nb1skaW5leHRdOwogICAgICAgICAgICAgICAgJHRlcm1pbmFsX3R5cGUgPSAkdHlwZXNfdG9fZ29bJGluZXh0XTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGlzX3Rlcm1pbmFsX3Rlcm5hcnkgPSAkbGFzdF9sZWFkaW5nX3R5cGUgZXEgJzonCiAgICAgICAgICAgICAgJiYgKCAoICR0ZXJtaW5hbF90eXBlIGVxICc7JyAmJiAkbGV2ZWxfZW5kIDw9ICRsZXYgKQogICAgICAgICAgICAgICAgfHwgKCAkdGVybWluYWxfdHlwZSBuZSAnOicgJiYgJGxldmVsX2VuZCA8ICRsZXYgKSApCgogICAgICAgICAgICAgICMgdGhlIHRlcm1pbmFsIHRlcm0gbXVzdCBub3QgY29udGFpbiBhbnkgdGVybmFyeSB0ZXJtcywgYXMgaW4KICAgICAgICAgICAgICAjIG15ICRFQ0hPID0gKAogICAgICAgICAgICAgICMgICAgICAgJElzX01TV2luMzIgPyAiLlxcZWNobyQkIgogICAgICAgICAgICAgICMgICAgIDogJElzX01hY09TICAgPyAiOmVjaG8kJCIKICAgICAgICAgICAgICAjICAgICA6ICggJElzX05ldFdhcmUgPyAiZWNobyQkIiA6ICIuL2VjaG8kJCIgKQogICAgICAgICAgICAgICMgKTsKICAgICAgICAgICAgICAmJiAhZ3JlcCB7IC9eW1w/XDpdJC8gfSBAdHlwZXNfdG9fZ29bICRpYmVnICsgMSAuLiAkaWVuZCBdOwogICAgICAgIH0KCiAgICAgICAgIyBzZW5kIHRoaXMgbmV3IGxpbmUgZG93biB0aGUgcGlwZQogICAgICAgIG15ICRmb3JjZWRfYnJlYWtwb2ludCA9ICRmb3JjZWRfYnJlYWtwb2ludF90b19nb1skaWVuZF07CgogICAgICAgIG15ICRydmFsaWduX2hhc2ggPSB7fTsKICAgICAgICAkcnZhbGlnbl9oYXNoLT57bGV2ZWx9ICAgICAgID0gJGxldjsKICAgICAgICAkcnZhbGlnbl9oYXNoLT57bGV2ZWxfZW5kfSAgID0gJGxldmVsX2VuZDsKICAgICAgICAkcnZhbGlnbl9oYXNoLT57aW5kZW50YXRpb259ID0gJGluZGVudGF0aW9uOwogICAgICAgICRydmFsaWduX2hhc2gtPntpc19mb3JjZWRfYnJlYWt9ID0KICAgICAgICAgICRmb3JjZWRfYnJlYWtwb2ludF90b19nb1skaWVuZF0gfHwgJGluX2NvbW1hX2xpc3Q7CiAgICAgICAgJHJ2YWxpZ25faGFzaC0+e291dGRlbnRfbG9uZ19saW5lc30gICAgICAgID0gJG91dGRlbnRfbG9uZ19saW5lczsKICAgICAgICAkcnZhbGlnbl9oYXNoLT57aXNfdGVybWluYWxfdGVybmFyeX0gICAgICAgPSAkaXNfdGVybWluYWxfdGVybmFyeTsKICAgICAgICAkcnZhbGlnbl9oYXNoLT57aXNfdGVybWluYWxfc3RhdGVtZW50fSAgICAgPSAkaXNfc2VtaWNvbG9uX3Rlcm1pbmF0ZWQ7CiAgICAgICAgJHJ2YWxpZ25faGFzaC0+e2RvX25vdF9wYWR9ICAgICAgICAgICAgICAgID0gJGRvX25vdF9wYWQ7CiAgICAgICAgJHJ2YWxpZ25faGFzaC0+e3J2ZXJ0aWNhbF90aWdodG5lc3NfZmxhZ3N9ID0gJHJ2ZXJ0aWNhbF90aWdodG5lc3NfZmxhZ3M7CiAgICAgICAgJHJ2YWxpZ25faGFzaC0+e2xldmVsX2p1bXB9ICAgICAgICAgICAgICAgID0gJGxldmVsX2p1bXA7CgogICAgICAgICRydmFsaWduX2hhc2gtPnt2YWxpZ25fYmF0Y2hfbnVtYmVyfSA9ICR2YWxpZ25fYmF0Y2hfbnVtYmVyOwoKICAgICAgICBQZXJsOjpUaWR5OjpWZXJ0aWNhbEFsaWduZXI6OnZhbGlnbl9pbnB1dCggJHJ2YWxpZ25faGFzaCwgJHJmaWVsZHMsCiAgICAgICAgICAgICRydG9rZW5zLCAkcnBhdHRlcm5zICk7CgogICAgICAgICRpbl9jb21tYV9saXN0ID0KICAgICAgICAgICR0b2tlbnNfdG9fZ29bJGllbmRdIGVxICcsJyAmJiAkZm9yY2VkX2JyZWFrcG9pbnRfdG9fZ29bJGllbmRdOwoKICAgICAgICAjIGZsdXNoIGFuIG91dGRlbnRlZCBsaW5lIHRvIGF2b2lkIGFueSB1bndhbnRlZCB2ZXJ0aWNhbCBhbGlnbm1lbnQKICAgICAgICBQZXJsOjpUaWR5OjpWZXJ0aWNhbEFsaWduZXI6OmZsdXNoKCkgaWYgKCRpc19vdXRkZW50ZWRfbGluZSk7CgogICAgICAgICRkb19ub3RfcGFkID0gMDsKCiAgICAgICAgIyBTZXQgZmxhZyBpbmRpY2F0aW5nIGlmIHRoaXMgbGluZSBlbmRzIGluIGFuIG9wZW5pbmcKICAgICAgICAjIHRva2VuIGFuZCBpcyB2ZXJ5IHNob3J0LCBzbyB0aGF0IGEgYmxhbmsgbGluZSBpcyBub3QKICAgICAgICAjIG5lZWRlZCBpZiB0aGUgc3Vic2VxdWVudCBsaW5lIGlzIGEgY29tbWVudC4KICAgICAgICAjIEV4YW1wbGVzIG9mIHdoYXQgd2UgYXJlIGxvb2tpbmcgZm9yOgogICAgICAgICMgICB7CiAgICAgICAgIyAgICYmICgKICAgICAgICAjICAgQkVHSU4gewogICAgICAgICMgICBkZWZhdWx0IHsKICAgICAgICAjICAgc3ViIHsKICAgICAgICAkbGFzdF9vdXRwdXRfc2hvcnRfb3BlbmluZ190b2tlbgoKICAgICAgICAgICMgbGluZSBlbmRzIGluIG9wZW5pbmcgdG9rZW4KICAgICAgICAgID0gJHR5cGVzX3RvX2dvWyRpZW5kXSA9fiAvXltce1woXFtMXSQvCgogICAgICAgICAgIyBhbmQgZWl0aGVyCiAgICAgICAgICAmJiAoCiAgICAgICAgICAgICMgbGluZSBoYXMgZWl0aGVyIHNpbmdsZSBvcGVuaW5nIHRva2VuCiAgICAgICAgICAgICRpZW5kID09ICRpYmVnCgogICAgICAgICAgICAjIG9yIGlzIGEgc2luZ2xlIHRva2VuIGZvbGxvd2VkIGJ5IG9wZW5pbmcgdG9rZW4uCiAgICAgICAgICAgICMgTm90ZSB0aGF0IHN1YiBpZGVudGlmaWVycyBoYXZlIGJsYW5rcyBsaWtlICdzdWIgZG9pdCcKICAgICAgICAgICAgfHwgKCAkaWVuZCAtICRpYmVnIDw9IDIgJiYgJHRva2Vuc190b19nb1skaWJlZ10gIX4gL1xzKy8gKQogICAgICAgICAgKQoKICAgICAgICAgICMgYW5kIGxpbWl0IHRvdGFsIHRvIDEwIGNoYXJhY3RlciB3aWR0aHMKICAgICAgICAgICYmIHRva2VuX3NlcXVlbmNlX2xlbmd0aCggJGliZWcsICRpZW5kICkgPD0gMTA7CgogICAgfSAgICAjIGVuZCBvZiBsb29wIHRvIG91dHB1dCBlYWNoIGxpbmUKCiAgICAjIHJlbWVtYmVyIGluZGVudGF0aW9uIG9mIGxpbmVzIGNvbnRhaW5pbmcgb3BlbmluZyBjb250YWluZXJzIGZvcgogICAgIyBsYXRlciB1c2UgYnkgc3ViIHNldF9hZGp1c3RlZF9pbmRlbnRhdGlvbgogICAgc2F2ZV9vcGVuaW5nX2luZGVudGF0aW9uKCAkcmlfZmlyc3QsICRyaV9sYXN0LCAkcmluZGVudGF0aW9uX2xpc3QgKTsKCiAgICAjIG91dHB1dCBhbnkgbmV3IC1jc2N3IGJsb2NrIGNvbW1lbnQKICAgIGlmICgkY3Njd19ibG9ja19jb21tZW50KSB7CiAgICAgICAgUGVybDo6VGlkeTo6VmVydGljYWxBbGlnbmVyOjpmbHVzaCgpOwogICAgICAgICRmaWxlX3dyaXRlcl9vYmplY3QtPndyaXRlX2NvZGVfbGluZSggJGNzY3dfYmxvY2tfY29tbWVudCAuICJcbiIgKTsKICAgIH0KICAgIHJldHVybjsKfQoKeyAgICAjIGJlZ2luIG1ha2VfYWxpZ25tZW50X3BhdHRlcm5zCgogICAgbXkgJWJsb2NrX3R5cGVfbWFwOwogICAgbXkgJWtleXdvcmRfbWFwOwogICAgbXkgJW9wZXJhdG9yX21hcDsKCiAgICBCRUdJTiB7CgogICAgICAgICMgbWFwIHJlbGF0ZWQgYmxvY2sgbmFtZXMgaW50byBhIGNvbW1vbiBuYW1lIHRvCiAgICAgICAgIyBhbGxvdyBhbGlnbm1lbnQKICAgICAgICAlYmxvY2tfdHlwZV9tYXAgPSAoCiAgICAgICAgICAgICd1bmxlc3MnICA9PiAnaWYnLAogICAgICAgICAgICAnZWxzZScgICAgPT4gJ2lmJywKICAgICAgICAgICAgJ2Vsc2lmJyAgID0+ICdpZicsCiAgICAgICAgICAgICd3aGVuJyAgICA9PiAnaWYnLAogICAgICAgICAgICAnZGVmYXVsdCcgPT4gJ2lmJywKICAgICAgICAgICAgJ2Nhc2UnICAgID0+ICdpZicsCiAgICAgICAgICAgICdzb3J0JyAgICA9PiAnbWFwJywKICAgICAgICAgICAgJ2dyZXAnICAgID0+ICdtYXAnLAogICAgICAgICk7CgogICAgICAgICMgbWFwIGNlcnRhaW4ga2V5d29yZHMgdG8gdGhlIHNhbWUgJ2lmJyBjbGFzcyB0byBhbGlnbgogICAgICAgICMgbG9uZyBpZi9lbHNpZiBzZXF1ZW5jZXMuIFtlbHNpZi5wbF0KICAgICAgICAla2V5d29yZF9tYXAgPSAoCiAgICAgICAgICAgICd1bmxlc3MnICA9PiAnaWYnLAogICAgICAgICAgICAnZWxzZScgICAgPT4gJ2lmJywKICAgICAgICAgICAgJ2Vsc2lmJyAgID0+ICdpZicsCiAgICAgICAgICAgICd3aGVuJyAgICA9PiAnZ2l2ZW4nLAogICAgICAgICAgICAnZGVmYXVsdCcgPT4gJ2dpdmVuJywKICAgICAgICAgICAgJ2Nhc2UnICAgID0+ICdzd2l0Y2gnLAoKICAgICAgICAgICAgIyB0cmVhdCBhbiAndW5kZWYnIHNpbWlsYXIgdG8gbnVtYmVycyBhbmQgcXVvdGVzCiAgICAgICAgICAgICd1bmRlZicgPT4gJ1EnLAogICAgICAgICk7CgogICAgICAgICMgbWFwIGNlcnRhaW4gb3BlcmF0b3JzIHRvIHRoZSBzYW1lIGNsYXNzIGZvciBwYXR0ZXJuIG1hdGNoaW5nCiAgICAgICAgJW9wZXJhdG9yX21hcCA9ICgKICAgICAgICAgICAgJyF+JyA9PiAnPX4nLAogICAgICAgICAgICAnKz0nID0+ICcrPScsCiAgICAgICAgICAgICctPScgPT4gJys9JywKICAgICAgICAgICAgJyo9JyA9PiAnKz0nLAogICAgICAgICAgICAnLz0nID0+ICcrPScsCiAgICAgICAgKTsKICAgIH0KCiAgICBzdWIgZGVsZXRlX25lZWRsZXNzX2FsaWdubWVudHMgewogICAgICAgIG15ICggJGliZWcsICRpZW5kICkgPSBAXzsKCiAgICAgIyBSZW1vdmUgdW53YW50ZWQgYWxpZ25tZW50cy4gIFRoaXMgcm91dGluZSBpcyBhIHBsYWNlIHRvIHJlbW92ZSBhbGlnbm1lbnRzCiAgICAgIyB3aGljaCBtaWdodCBjYXVzZSBwcm9ibGVtcyBhdCBsYXRlciBzdGFnZXMuICBUaGVyZSBhcmUgY3VycmVudGx5CiAgICAgIyB0d28gdHlwZXMgb2YgZml4ZXM6CgogICAgICAgICMgMS4gUmVtb3ZlIGV4Y2VzcyBwYXJlbnMKICAgICAgICAjIDIuIFJlbW92ZSBhbGlnbm1lbnRzIHdpdGhpbiAnZWxzaWYnIGNvbmRpdGlvbnMKCiAgICAgICAgIyBQYXRjaCAjMTogRXhjZXNzIGFsaWdubWVudCBvZiBwYXJlbnMgY2FuIHByZXZlbnQgb3RoZXIgZ29vZAogICAgICAgICMgYWxpZ25tZW50cy4gIEZvciBleGFtcGxlLCBub3RlIHRoZSBwYXJlbnMgaW4gdGhlIGZpcnN0IHR3byByb3dzIG9mCiAgICAgICAgIyB0aGUgZm9sbG93aW5nIHNuaXBwZXQuICBUaGV5IHdvdWxkIG5vcm1hbGx5IGdldCBtYXJrZWQgZm9yIGFsaWdubWVudAogICAgICAgICMgYW5kIGFsaWduZWQgYXMgZm9sbG93czoKCiAgICAgICAgIyAgICBteSAkdyA9ICRjb2x1bW5zICogJGNlbGxfdyArICggJGNvbHVtbnMgKyAxICkgKiAkYm9yZGVyOwogICAgICAgICMgICAgbXkgJGggPSAkcm93cyAqICRjZWxsX2ggKyAgICAoICRyb3dzICsgMSApICogJGJvcmRlcjsKICAgICAgICAjICAgIG15ICRpbWcgPSBuZXcgR2ltcDo6SW1hZ2UoICR3LCAkaCwgUkdCICk7CgogICAgICAgICMgVGhpcyBjYXVzZXMgdW5uZWNlc3NhcnkgcGFyZW4gYWxpZ25tZW50IGFuZCBwcmV2ZW50cyB0aGUgdGhpcmQgZXF1YWxzCiAgICAgICAgIyBmcm9tIGFsaWduaW5nLiBJZiB3ZSByZW1vdmUgdGhlIHVud2FudGVkIGFsaWdubWVudHMgd2UgZ2V0OgoKICAgICAgICAjICAgIG15ICR3ICAgPSAkY29sdW1ucyAqICRjZWxsX3cgKyAoICRjb2x1bW5zICsgMSApICogJGJvcmRlcjsKICAgICAgICAjICAgIG15ICRoICAgPSAkcm93cyAqICRjZWxsX2ggKyAoICRyb3dzICsgMSApICogJGJvcmRlcjsKICAgICAgICAjICAgIG15ICRpbWcgPSBuZXcgR2ltcDo6SW1hZ2UoICR3LCAkaCwgUkdCICk7CgogICAgICAgICMgQSBydWxlIGZvciBkb2luZyB0aGlzIHdoaWNoIHdvcmtzIHdlbGwgaXMgdG8gcmVtb3ZlIGFsaWdubWVudCBvZgogICAgICAgICMgcGFyZW5zIHdob3NlIGNvbnRhaW5lcnMgZG8gbm90IGNvbnRhaW4gb3RoZXIgYWxpZ25pbmcgdG9rZW5zLCB3aXRoCiAgICAgICAgIyB0aGUgZXhjZXB0aW9uIHRoYXQgd2UgYWx3YXlzIGtlZXAgYWxpZ25tZW50IG9mIHRoZSBmaXJzdCBvcGVuaW5nCiAgICAgICAgIyBwYXJlbiBvbiBhIGxpbmUgKGZvciB0aGluZ3MgbGlrZSAnaWYnIGFuZCAnZWxzaWYnIHN0YXRlbWVudHMpLgoKICAgICAgICAjIFNldHVwIG5lZWRlZCBjb25zdGFudHMKICAgICAgICBteSAkaV9nb29kX3BhcmVuICA9IC0xOwogICAgICAgIG15ICRpbWluX21hdGNoICAgID0gJGllbmQgKyAxOwogICAgICAgIG15ICRpX2Vsc2lmX2Nsb3NlID0gJGliZWcgLSAxOwogICAgICAgIG15ICRpX2Vsc2lmX29wZW4gID0gJGllbmQgKyAxOwogICAgICAgIGlmICggJGllbmQgPiAkaWJlZyApIHsKICAgICAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bJGliZWddIGVxICdrJyApIHsKCiAgICAgICAgICAgICAgICAjIFBhcmVuIHBhdGNoOiBtYXJrIGEgbG9jYXRpb24gb2YgYSBwYXJlbiB3ZSBzaG91bGQga2VlcCwgc3VjaAogICAgICAgICAgICAgICAgIyBhcyBvbmUgZm9sbG93aW5nIHNvbWV0aGluZyBsaWtlIGEgbGVhZGluZyAnaWYnLCAnZWxzaWYnLC4uCiAgICAgICAgICAgICAgICAkaV9nb29kX3BhcmVuID0gJGliZWcgKyAxOwogICAgICAgICAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bJGlfZ29vZF9wYXJlbl0gZXEgJ2InICkgewogICAgICAgICAgICAgICAgICAgICRpX2dvb2RfcGFyZW4rKzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjICdlbHNpZicgcGF0Y2g6IHJlbWVtYmVyIHRoZSByYW5nZSBvZiB0aGUgcGFyZW5zIG9mIGFuIGVsc2lmLAogICAgICAgICAgICAgICAgIyBhbmQgZG8gbm90IG1ha2UgYWxpZ25tZW50cyB3aXRoaW4gdGhlbSBiZWNhdXNlIHRoaXMgY2FuIGNhdXNlCiAgICAgICAgICAgICAgICAjIGxvc3Mgb2YgcGFkZGluZyBhbmQgb3ZlcmFsbCBicmFjZSBhbGlnbm1lbnQgaW4gdGhlIHZlcnRpY2FsCiAgICAgICAgICAgICAgICAjIGFsaWduZXIuCiAgICAgICAgICAgICAgICBpZiAoICAgJHRva2Vuc190b19nb1skaWJlZ10gZXEgJ2Vsc2lmJwogICAgICAgICAgICAgICAgICAgICYmICRpX2dvb2RfcGFyZW4gPCAkaWVuZAogICAgICAgICAgICAgICAgICAgICYmICR0b2tlbnNfdG9fZ29bJGlfZ29vZF9wYXJlbl0gZXEgJygnICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkaV9lbHNpZl9vcGVuICA9ICRpX2dvb2RfcGFyZW47CiAgICAgICAgICAgICAgICAgICAgJGlfZWxzaWZfY2xvc2UgPSAkbWF0ZV9pbmRleF90b19nb1skaV9nb29kX3BhcmVuXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBMb29wIHRvIG1ha2UgdGhlIGZpeGVzIG9uIHRoaXMgbGluZQogICAgICAgIG15IEBpbWF0Y2hfbGlzdDsKICAgICAgICBmb3IgbXkgJGkgKCAkaWJlZyAuLiAkaWVuZCApIHsKCiAgICAgICAgICAgIGlmICggJG1hdGNoaW5nX3Rva2VuX3RvX2dvWyRpXSBuZSAnJyApIHsKCiAgICAgICAgICAgICAgICAjIFBhdGNoICMyOiB1bmRvIGFsaWdubWVudCB3aXRoaW4gZWxzaWYgcGFyZW5zCiAgICAgICAgICAgICAgICBpZiAoICRpID4gJGlfZWxzaWZfb3BlbiAmJiAkaSA8ICRpX2Vsc2lmX2Nsb3NlICkgewogICAgICAgICAgICAgICAgICAgICRtYXRjaGluZ190b2tlbl90b19nb1skaV0gPSAnJzsKICAgICAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcHVzaCBAaW1hdGNoX2xpc3QsICRpOwoKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoICR0b2tlbnNfdG9fZ29bJGldIGVxICcpJyApIHsKCiAgICAgICAgICAgICAgICAjIFBhdGNoICMxOiB1bmRvIHRoZSBjb3JyZXNwb25kaW5nIG9wZW5pbmcgcGFyZW4gaWY6CiAgICAgICAgICAgICAgICAjIC0gaXQgaXMgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2sKICAgICAgICAgICAgICAgICMgLSBhbmQgbm90IHRoZSBmaXJzdCBvdmVyYWxsIG9wZW5pbmcgcGFyZW4KICAgICAgICAgICAgICAgICMgLSBkb2VzIG5vdCBmb2xsb3cgYSBsZWFkaW5nIGtleXdvcmQgb24gdGhpcyBsaW5lCiAgICAgICAgICAgICAgICBteSAkaW1hdGUgPSAkbWF0ZV9pbmRleF90b19nb1skaV07CiAgICAgICAgICAgICAgICBpZiAoICAgQGltYXRjaF9saXN0CiAgICAgICAgICAgICAgICAgICAgJiYgJGltYXRjaF9saXN0Wy0xXSBlcSAkaW1hdGUKICAgICAgICAgICAgICAgICAgICAmJiAoICRpYmVnID4gMSB8fCBAaW1hdGNoX2xpc3QgPiAxICkKICAgICAgICAgICAgICAgICAgICAmJiAkaW1hdGUgPiAkaV9nb29kX3BhcmVuICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkbWF0Y2hpbmdfdG9rZW5fdG9fZ29bJGltYXRlXSA9ICcnOwogICAgICAgICAgICAgICAgICAgIHBvcCBAaW1hdGNoX2xpc3Q7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBtYWtlX2FsaWdubWVudF9wYXR0ZXJucyB7CgogICAgICAgICMgSGVyZSB3ZSBkbyBzb21lIGltcG9ydGFudCBwcmVsaW1pbmFyeSB3b3JrIGZvciB0aGUKICAgICAgICAjIHZlcnRpY2FsIGFsaWduZXIuICBXZSBjcmVhdGUgdGhyZWUgYXJyYXlzIGZvciBvbmUKICAgICAgICAjIG91dHB1dCBsaW5lLiBUaGVzZSBhcnJheXMgY29udGFpbiBzdHJpbmdzIHRoYXQgY2FuCiAgICAgICAgIyBiZSB0ZXN0ZWQgYnkgdGhlIHZlcnRpY2FsIGFsaWduZXIgdG8gc2VlIGlmCiAgICAgICAgIyBjb25zZWN1dGl2ZSBsaW5lcyBjYW4gYmUgYWxpZ25lZCB2ZXJ0aWNhbGx5LgogICAgICAgICMKICAgICAgICAjIFRoZSB0aHJlZSBhcnJheXMgYXJlIGluZGV4ZWQgb24gdGhlIHZlcnRpY2FsCiAgICAgICAgIyBhbGlnbm1lbnQgZmllbGRzIGFuZCBhcmU6CiAgICAgICAgIyBAdG9rZW5zIC0gYSBsaXN0IG9mIGFueSB2ZXJ0aWNhbCBhbGlnbm1lbnQgdG9rZW5zIGZvciB0aGlzIGxpbmUuCiAgICAgICAgIyAgIFRoZXNlIGFyZSB0b2tlbnMsIHN1Y2ggYXMgJz0nICcmJicgJyMnIGV0YyB3aGljaAogICAgICAgICMgICB3ZSB3YW50IHRvIG1pZ2h0IGFsaWduIHZlcnRpY2FsbHkuICBUaGVzZSBhcmUKICAgICAgICAjICAgZGVjb3JhdGVkIHdpdGggdmFyaW91cyBpbmZvcm1hdGlvbiBzdWNoIGFzCiAgICAgICAgIyAgIG5lc3RpbmcgZGVwdGggdG8gcHJldmVudCB1bndhbnRlZCB2ZXJ0aWNhbAogICAgICAgICMgICBhbGlnbm1lbnQgbWF0Y2hlcy4KICAgICAgICAjIEBmaWVsZHMgLSB0aGUgYWN0dWFsIHRleHQgb2YgdGhlIGxpbmUgYmV0d2VlbiB0aGUgdmVydGljYWwgYWxpZ25tZW50CiAgICAgICAgIyAgIHRva2Vucy4KICAgICAgICAjIEBwYXR0ZXJucyAtIGEgbW9kaWZpZWQgbGlzdCBvZiB0b2tlbiB0eXBlcywgb25lIGZvciBlYWNoIGFsaWdubWVudAogICAgICAgICMgICBmaWVsZC4gIFRoZXNlIHNob3VsZCBub3JtYWxseSBlYWNoIG1hdGNoIGJlZm9yZSBhbGlnbm1lbnQgaXMKICAgICAgICAjICAgYWxsb3dlZCwgZXZlbiB3aGVuIHRoZSBhbGlnbm1lbnQgdG9rZW5zIG1hdGNoLgogICAgICAgIG15ICggJGliZWcsICRpZW5kICkgPSBAXzsKICAgICAgICBteSBAdG9rZW5zICAgPSAoKTsKICAgICAgICBteSBAZmllbGRzICAgPSAoKTsKICAgICAgICBteSBAcGF0dGVybnMgPSAoKTsKICAgICAgICBteSAkaV9zdGFydCAgPSAkaWJlZzsKCiAgICAgICAgbXkgJGRlcHRoICAgICAgICAgICAgICAgICA9IDA7CiAgICAgICAgbXkgQGNvbnRhaW5lcl9uYW1lICAgICAgICA9ICgiIik7CiAgICAgICAgbXkgQG11bHRpcGxlX2NvbW1hX2Fycm93cyA9ICh1bmRlZik7CgogICAgICAgIG15ICRqID0gMDsgICAgIyBmaWVsZCBpbmRleAoKICAgICAgICAkcGF0dGVybnNbMF0gPSAiIjsKICAgICAgICBteSAldG9rZW5fY291bnQ7CiAgICAgICAgZm9yIG15ICRpICggJGliZWcgLi4gJGllbmQgKSB7CgogICAgICAgICAgICAjIEtlZXAgdHJhY2sgb2YgY29udGFpbmVycyBiYWxhbmNlZCBvbiB0aGlzIGxpbmUgb25seS4KICAgICAgICAgICAgIyBUaGVzZSBhcmUgdXNlZCBiZWxvdyB0byBwcmV2ZW50IHVud2FudGVkIGNyb3NzLWxpbmUgYWxpZ25tZW50cy4KICAgICAgICAgICAgIyBVbmJhbGFuY2VkIGNvbnRhaW5lcnMgYWxyZWFkeSBhdm9pZCBhbGlnbmluZyBhY3Jvc3MKICAgICAgICAgICAgIyBjb250YWluZXIgYm91bmRhcmllcy4KICAgICAgICAgICAgbXkgJHRvayA9ICR0b2tlbnNfdG9fZ29bJGldOwogICAgICAgICAgICBpZiAoICR0b2sgPX4gL15bXChce1xbXS8gKSB7ICAgICMnKCcgKSB7CgogICAgICAgICAgICAgICAgIyBpZiBjb250YWluZXIgaXMgYmFsYW5jZWQgb24gdGhpcyBsaW5lLi4uCiAgICAgICAgICAgICAgICBteSAkaV9tYXRlID0gJG1hdGVfaW5kZXhfdG9fZ29bJGldOwogICAgICAgICAgICAgICAgaWYgKCAkaV9tYXRlID4gJGkgJiYgJGlfbWF0ZSA8PSAkaWVuZCApIHsKICAgICAgICAgICAgICAgICAgICAkZGVwdGgrKzsKICAgICAgICAgICAgICAgICAgICBteSAkc2Vxbm8gPSAkdHlwZV9zZXF1ZW5jZV90b19nb1skaV07CiAgICAgICAgICAgICAgICAgICAgbXkgJGNvdW50ID0gY29tbWFfYXJyb3dfY291bnQoJHNlcW5vKTsKICAgICAgICAgICAgICAgICAgICAkbXVsdGlwbGVfY29tbWFfYXJyb3dzWyRkZXB0aF0gPSAkY291bnQgJiYgJGNvdW50ID4gMTsKCiAgICAgICAgICAgICAgICAgICAgIyBBcHBlbmQgdGhlIHByZXZpb3VzIHRva2VuIG5hbWUgdG8gbWFrZSB0aGUgY29udGFpbmVyIG5hbWUKICAgICAgICAgICAgICAgICAgICAjIG1vcmUgdW5pcXVlLiAgVGhpcyBuYW1lIHdpbGwgYWxzbyBiZSBnaXZlbiB0byBhbnkgY29tbWFzCiAgICAgICAgICAgICAgICAgICAgIyB3aXRoaW4gdGhpcyBjb250YWluZXIsIGFuZCBpdCBoZWxwcyBhdm9pZCB1bmRlc2lyYWJsZQogICAgICAgICAgICAgICAgICAgICMgYWxpZ25tZW50cyBvZiBkaWZmZXJlbnQgdHlwZXMgb2YgY29udGFpbmVycy4KCiAgICAgICAgICAgICAgICAgIyBDb250YWluZXJzIGJlZ2lubmluZyB3aXRoIHsgYW5kIFsgYXJlIGdpdmVuIHRob3NlIG5hbWVzCiAgICAgICAgICAgICAgICAgIyBmb3IgdW5pcXVlbmVzcy4gVGhhdCB3YXkgY29tbWFzIGluIGRpZmZlcmVudCBjb250YWluZXJzCiAgICAgICAgICAgICAgICAgIyB3aWxsIG5vdCBtYXRjaC4gSGVyZSBpcyBhbiBleGFtcGxlIG9mIHdoYXQgdGhpcyBwcmV2ZW50czoKICAgICAgICAgICAgICAgICAjCWEgPT4gWyAxLCAgICAgICAyLCAzIF0sCiAgICAgICAgICAgICAgICAgIyAgIGIgPT4geyBiMSA9PiA0LCBiMiA9PiA1IH0sCiAgICAgICAgICAgICAgICAgIyBIZXJlIGlzIGFub3RoZXIgZXhhbXBsZSBvZiB3aGF0IHdlIGF2b2lkIGJ5IGxhYmVsaW5nIHRoZQogICAgICAgICAgICAgICAgICMgY29tbWFzIHByb3Blcmx5OgogICAgICAgICAgICAgICAgICMgICBpc19kKCBbICRhLCAgICAgICAgJGEgXSwgWyAkYiwgICAgICAgICAgICAgICAkYyBdICk7CiAgICAgICAgICAgICAgICAgIyAgIGlzX2QoIHsgZm9vID0+ICRhLCBiYXIgPT4gJGEgfSwgeyBmb28gPT4gJGIsIGJhciA9PiAkYyB9ICk7CiAgICAgICAgICAgICAgICAgIyAgIGlzX2QoIFsgXCRhLCAgICAgICBcJGEgXSwgWyBcJGIsICAgICAgICAgICAgIFwkYyBdICk7CgogICAgICAgICAgICAgICAgICAgIG15ICRuYW1lID0gJHRvazsKICAgICAgICAgICAgICAgICAgICBpZiAoICR0b2sgZXEgJygnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSA9IHByZXZpb3VzX25vbmJsYW5rX3Rva2VuKCRpKTsKICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPX4gcy9eLT4vLzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lcl9uYW1lWyRkZXB0aF0gPSAiKyIgLiAkbmFtZTsKCiAgICAgICAgICAgICAgICAgICAgIyBNYWtlIHRoZSBjb250YWluZXIgbmFtZSBldmVuIG1vcmUgdW5pcXVlIGlmIG5lY2Vzc2FyeS4KICAgICAgICAgICAgICAgICAgICAjIElmIHdlIGFyZSBub3QgdmVydGljYWxseSBhbGlnbmluZyB0aGlzIG9wZW5pbmcgcGFyZW4sCiAgICAgICAgICAgICAgICAgICAgIyBhcHBlbmQgYSBjaGFyYWN0ZXIgY291bnQgdG8gYXZvaWQgYmFkIGFsaWdubWVudCBiZWNhdXNlCiAgICAgICAgICAgICAgICAgICAgIyBpdCB1c3VhbGx5IGxvb2tzIGJhZCB0byBhbGlnbiBjb21tYXMgd2l0aGluIGNvbnRhaW5lcnMKICAgICAgICAgICAgICAgICAgICAjIGZvciB3aGljaCB0aGUgb3BlbmluZyBwYXJlbnMgZG8gbm90IGFsaWduLiAgSGVyZQogICAgICAgICAgICAgICAgICAgICMgaXMgYW4gZXhhbXBsZSB2ZXJ5IEJBRCBhbGlnbm1lbnQgb2YgY29tbWFzIChiZWNhdXNlCiAgICAgICAgICAgICAgICAgICAgIyB0aGUgYXRhbjIgZnVuY3Rpb25zIGFyZSBub3QgYWxsIGFsaWduZWQpOgogICAgICAgICAgICAgICAgICAgICMgICAgJFhZID0KICAgICAgICAgICAgICAgICAgICAjICAgICAgJFggKiAkUlRZU1FQMSAqIGF0YW4yKCAkWCwgJFJUWVNRUDEgKSArCiAgICAgICAgICAgICAgICAgICAgIyAgICAgICRZICogJFJUWFNRUDEgKiBhdGFuMiggJFksICRSVFhTUVAxICkgLQogICAgICAgICAgICAgICAgICAgICMgICAgICAkWCAqIGF0YW4yKCAkWCwgICAgICAgICAgICAxICkgLQogICAgICAgICAgICAgICAgICAgICMgICAgICAkWSAqIGF0YW4yKCAkWSwgICAgICAgICAgICAxICk7CiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgT24gdGhlIG90aGVyIGhhbmQsIGl0IGlzIHVzdWFsbHkgb2theSB0byBhbGlnbiBjb21tYXMgaWYKICAgICAgICAgICAgICAgICAgICAjIG9wZW5pbmcgcGFyZW5zIGFsaWduLCBzdWNoIGFzOgogICAgICAgICAgICAgICAgICAgICMgICAgZ2xWZXJ0ZXgzZCggJGN4ICsgJHMgKiAkeHMsICRjeSwgICAgICAgICAgICAkeiApOwogICAgICAgICAgICAgICAgICAgICMgICAgZ2xWZXJ0ZXgzZCggJGN4LCAgICAgICAgICAgICRjeSArICRzICogJHlzLCAkeiApOwogICAgICAgICAgICAgICAgICAgICMgICAgZ2xWZXJ0ZXgzZCggJGN4IC0gJHMgKiAkeHMsICRjeSwgICAgICAgICAgICAkeiApOwogICAgICAgICAgICAgICAgICAgICMgICAgZ2xWZXJ0ZXgzZCggJGN4LCAgICAgICAgICAgICRjeSAtICRzICogJHlzLCAkeiApOwogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIFRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlc2Ugc2l0dWF0aW9ucywgd2Ugd2lsbAogICAgICAgICAgICAgICAgICAgICMgYXBwZW5kIHRoZSBsZW5ndGggb2YgdGhlIGxpbmUgZnJvbSB0aGUgcHJldmlvdXMgbWF0Y2hpbmcKICAgICAgICAgICAgICAgICAgICAjIHRva2VuLCBvciBiZWdpbm5pbmcgb2YgbGluZSwgdG8gdGhlIGZ1bmN0aW9uIG5hbWUuICBUaGlzCiAgICAgICAgICAgICAgICAgICAgIyB3aWxsIGFsbG93IHRoZSB2ZXJ0aWNhbCBhbGlnbmVyIHRvIHJlamVjdCB1bmRlc2lyYWJsZQogICAgICAgICAgICAgICAgICAgICMgbWF0Y2hlcy4KCiAgICAgICAgICAgICAgICAgICAgIyBpZiB3ZSBhcmUgbm90IGFsaWduaW5nIG9uIHRoaXMgcGFyZW4uLi4KICAgICAgICAgICAgICAgICAgICBpZiAoICRtYXRjaGluZ190b2tlbl90b19nb1skaV0gZXEgJycgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIFN1bSBsZW5ndGggZnJvbSBwcmV2aW91cyBhbGlnbm1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGxlbiA9IHRva2VuX3NlcXVlbmNlX2xlbmd0aCggJGlfc3RhcnQsICRpIC0gMSApOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRpX3N0YXJ0ID09ICRpYmVnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRm9yIGZpcnN0IHRva2VuLCB1c2UgZGlzdGFuY2UgZnJvbSBzdGFydCBvZiBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJ1dCBzdWJ0cmFjdCBvZmYgdGhlIGluZGVudGF0aW9uIGR1ZSB0byBsZXZlbC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgT3RoZXJ3aXNlLCByZXN1bHRzIGNvdWxkIHZhcnkgd2l0aCBpbmRlbnRhdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsZW4gKz0gbGVhZGluZ19zcGFjZXNfdG9fZ28oJGliZWcpIC0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxldmVsc190b19nb1skaV9zdGFydF0gKiAkck9wdHNfaW5kZW50X2NvbHVtbnM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRsZW4gPCAwICkgeyAkbGVuID0gMCB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgdGFjayB0aGlzIGxlbmd0aCBvbnRvIHRoZSBjb250YWluZXIgbmFtZSB0byB0cnkKICAgICAgICAgICAgICAgICAgICAgICAgIyB0byBtYWtlIGEgdW5pcXVlIHRva2VuIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lcl9uYW1lWyRkZXB0aF0gLj0gIi0iIC4gJGxlbjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkdG9rZW5zX3RvX2dvWyRpXSA9fiAvXltcKVx9XF1dLyApIHsKICAgICAgICAgICAgICAgICRkZXB0aC0tIGlmICRkZXB0aCA+IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaWYgd2UgZmluZCBhIG5ldyBzeW5jaHJvbml6YXRpb24gdG9rZW4sIHdlIGFyZSBkb25lIHdpdGgKICAgICAgICAgICAgIyBhIGZpZWxkCiAgICAgICAgICAgIGlmICggJGkgPiAkaV9zdGFydCAmJiAkbWF0Y2hpbmdfdG9rZW5fdG9fZ29bJGldIG5lICcnICkgewoKICAgICAgICAgICAgICAgIG15ICR0b2sgPSBteSAkcmF3X3RvayA9ICRtYXRjaGluZ190b2tlbl90b19nb1skaV07CgogICAgICAgICAgICAgICAgIyBtYXAgc2ltaWxhciBpdGVtcwogICAgICAgICAgICAgICAgbXkgJHRva19tYXAgPSAkb3BlcmF0b3JfbWFweyR0b2t9OwogICAgICAgICAgICAgICAgJHRvayA9ICR0b2tfbWFwIGlmICgkdG9rX21hcCk7CgogICAgICAgICAgICAgICAgIyBtYWtlIHNlcGFyYXRvcnMgaW4gZGlmZmVyZW50IG5lc3RpbmcgZGVwdGhzIHVuaXF1ZQogICAgICAgICAgICAgICAgIyBieSBhcHBlbmRpbmcgdGhlIG5lc3RpbmcgZGVwdGggZGlnaXQuCiAgICAgICAgICAgICAgICBpZiAoICRyYXdfdG9rIG5lICcjJyApIHsKICAgICAgICAgICAgICAgICAgICAkdG9rIC49ICIkbmVzdGluZ19kZXB0aF90b19nb1skaV0iOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgYWxzbyBkZWNvcmF0ZSBjb21tYXMgd2l0aCBhbnkgY29udGFpbmVyIG5hbWUgdG8gYXZvaWQKICAgICAgICAgICAgICAgICMgdW53YW50ZWQgY3Jvc3MtbGluZSBhbGlnbm1lbnRzLgogICAgICAgICAgICAgICAgaWYgKCAkcmF3X3RvayBlcSAnLCcgfHwgJHJhd190b2sgZXEgJz0+JyApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRjb250YWluZXJfbmFtZVskZGVwdGhdICkgewogICAgICAgICAgICAgICAgICAgICAgICAkdG9rIC49ICRjb250YWluZXJfbmFtZVskZGVwdGhdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIFBhdGNoIHRvIGF2b2lkIGFsaWduaW5nIGxlYWRpbmcgYW5kIHRyYWlsaW5nIGlmLCB1bmxlc3MuCiAgICAgICAgICAgICAgICAjIE1hcmsgdHJhaWxpbmcgaWYsIHVubGVzcyBzdGF0ZW1lbnRzIHdpdGggY29udGFpbmVyIG5hbWVzLgogICAgICAgICAgICAgICAgIyBUaGlzIG1ha2VzIHRoZW0gZGlmZmVyZW50IGZyb20gbGVhZGluZyBpZiwgdW5sZXNzIHdoaWNoCiAgICAgICAgICAgICAgICAjIGFyZSBub3Qgc28gbWFya2VkIGF0IHByZXNlbnQuICBJZiB3ZSBldmVyIG5lZWQgdG8gbmFtZQogICAgICAgICAgICAgICAgIyB0aGVtIHRvbywgd2UgY291bGQgdXNlIGNpIHRvIGRpc3Rpbmd1aXNoIHRoZW0uCiAgICAgICAgICAgICAgICAjIEV4YW1wbGUgcHJvYmxlbSB0byBhdm9pZDoKICAgICAgICAgICAgICAgICMgICAgcmV0dXJuICggMiwgIkRCRVJST1IiICkKICAgICAgICAgICAgICAgICMgICAgICBpZiAoICRyZXR2YWwgPT0gMiApOwogICAgICAgICAgICAgICAgIyAgICBpZiAgICggc2NhbGFyIEBfICkgewogICAgICAgICAgICAgICAgIyAgICAgICAgbXkgKCAkYSwgJGIsICRjLCAkZCwgJGUsICRmICkgPSBAXzsKICAgICAgICAgICAgICAgICMgICAgfQogICAgICAgICAgICAgICAgaWYgKCAkcmF3X3RvayBlcSAnKCcgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJGNpID0gJGNpX2xldmVsc190b19nb1skaWJlZ107CiAgICAgICAgICAgICAgICAgICAgaWYgKCAgICRjb250YWluZXJfbmFtZVskZGVwdGhdID1+IC9eXCsoaWZ8dW5sZXNzKS8KICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGNpICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0b2sgLj0gJGNvbnRhaW5lcl9uYW1lWyRkZXB0aF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgRGVjb3JhdGUgYmxvY2sgYnJhY2VzIHdpdGggYmxvY2sgdHlwZXMgdG8gYXZvaWQKICAgICAgICAgICAgICAgICMgdW53YW50ZWQgYWxpZ25tZW50cyBzdWNoIGFzIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgICAgICAgICAjIGZvcmVhY2ggKCBAeyRyb3V0cHV0X2FycmF5fSApIHsgJGZoLT5wcmludCgkXykgfQogICAgICAgICAgICAgICAgIyBldmFsICAgICAgICAgICAgICAgICAgICAgICAgICB7ICRmaC0+Y2xvc2UoKSB9OwogICAgICAgICAgICAgICAgaWYgKCAkcmF3X3RvayBlcSAneycgJiYgJGJsb2NrX3R5cGVfdG9fZ29bJGldICkgewogICAgICAgICAgICAgICAgICAgIG15ICRibG9ja190eXBlID0gJGJsb2NrX3R5cGVfdG9fZ29bJGldOwoKICAgICAgICAgICAgICAgICAgICAjIG1hcCBjZXJ0YWluIHJlbGF0ZWQgYmxvY2sgdHlwZXMgdG8gYWxsb3cKICAgICAgICAgICAgICAgICAgICAjIGVsc2UgYmxvY2tzIHRvIGFsaWduCiAgICAgICAgICAgICAgICAgICAgJGJsb2NrX3R5cGUgPSAkYmxvY2tfdHlwZV9tYXB7JGJsb2NrX3R5cGV9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQoICRibG9ja190eXBlX21hcHskYmxvY2tfdHlwZX0gKSApOwoKICAgICAgICAgICAgICAgICAgICAjIHJlbW92ZSBzdWIgbmFtZXMgdG8gYWxsb3cgb25lLWxpbmUgc3ViIGJyYWNlcyB0byBhbGlnbgogICAgICAgICAgICAgICAgICAgICMgcmVnYXJkbGVzcyBvZiBuYW1lCiAgICAgICAgICAgICAgICAgICAgI2lmICggJGJsb2NrX3R5cGUgPX4gL15zdWIgLyApIHsgJGJsb2NrX3R5cGUgPSAnc3ViJyB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkYmxvY2tfdHlwZSA9fiAvJFNVQl9QQVRURVJOLyApIHsgJGJsb2NrX3R5cGUgPSAnc3ViJyB9CgogICAgICAgICAgICAgICAgICAgICMgYWxsb3cgYWxsIGNvbnRyb2wtdHlwZSBibG9ja3MgdG8gYWxpZ24KICAgICAgICAgICAgICAgICAgICBpZiAoICRibG9ja190eXBlID1+IC9eW0EtWl0rJC8gKSB7ICRibG9ja190eXBlID0gJ0JFR0lOJyB9CgogICAgICAgICAgICAgICAgICAgICR0b2sgLj0gJGJsb2NrX3R5cGU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBNYXJrIG11bHRpcGxlIGNvcGllcyBvZiBjZXJ0YWluIHRva2VucyB3aXRoIHRoZSBjb3B5IG51bWJlcgogICAgICAgICAgICAgICAgIyBUaGlzIHdpbGwgYWxsb3cgdGhlIGFsaWduZXIgdG8gZGVjaWRlIGlmIHRoZXkgYXJlIG1hdGNoZWQuCiAgICAgICAgICAgICAgICAjIEZvciBub3csIG9ubHkgZG8gdGhpcyBmb3IgZXF1YWxzLiBGb3IgZXhhbXBsZSwgdGhlIHR3bwogICAgICAgICAgICAgICAgIyBlcXVhbHMgb24gdGhlIG5leHQgbGluZSB3aWxsIGJlIGxhYmVsZWQgJz0wJyBhbmQgJz0wLjInLgogICAgICAgICAgICAgICAgIyBMYXRlciwgdGhlICc9MC4yJyB3aWxsIGJlIGlnbm9yZWQgaW4gYWxpZ25tZW50IGJlY2F1c2UgaXQKICAgICAgICAgICAgICAgICMgaGFzIG5vIG1hdGNoLgoKICAgICAgICAgICAgICAgICMgJHwgICAgICAgICAgPSAkZGVidWcgPSAxIGlmICRvcHRfZDsKICAgICAgICAgICAgICAgICMgJGZ1bGxfaW5kZXggPSAxICAgICAgICAgIGlmICRvcHRfaTsKCiAgICAgICAgICAgICAgICBpZiAoICRyYXdfdG9rIGVxICc9JyB8fCAkcmF3X3RvayBlcSAnPT4nICkgewogICAgICAgICAgICAgICAgICAgICR0b2tlbl9jb3VudHskdG9rfSsrOwogICAgICAgICAgICAgICAgICAgIGlmICggJHRva2VuX2NvdW50eyR0b2t9ID4gMSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRvayAuPSAnLicgLiAkdG9rZW5fY291bnR7JHRva307CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgY29uY2F0ZW5hdGUgdGhlIHRleHQgb2YgdGhlIGNvbnNlY3V0aXZlIHRva2VucyB0byBmb3JtCiAgICAgICAgICAgICAgICAjIHRoZSBmaWVsZAogICAgICAgICAgICAgICAgcHVzaCggQGZpZWxkcywKICAgICAgICAgICAgICAgICAgICBqb2luKCAnJywgQHRva2Vuc190b19nb1sgJGlfc3RhcnQgLi4gJGkgLSAxIF0gKSApOwoKICAgICAgICAgICAgICAgICMgc3RvcmUgdGhlIGFsaWdubWVudCB0b2tlbiBmb3IgdGhpcyBmaWVsZAogICAgICAgICAgICAgICAgcHVzaCggQHRva2VucywgJHRvayApOwoKICAgICAgICAgICAgICAgICMgZ2V0IHJlYWR5IGZvciB0aGUgbmV4dCBiYXRjaAogICAgICAgICAgICAgICAgJGlfc3RhcnQgPSAkaTsKICAgICAgICAgICAgICAgICRqKys7CiAgICAgICAgICAgICAgICAkcGF0dGVybnNbJGpdID0gIiI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY29udGludWUgYWNjdW11bGF0aW5nIHRva2VucwogICAgICAgICAgICAjIGhhbmRsZSBub24ta2V5d29yZHMuLgogICAgICAgICAgICBpZiAoICR0eXBlc190b19nb1skaV0gbmUgJ2snICkgewogICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAkdHlwZXNfdG9fZ29bJGldOwoKICAgICAgICAgICAgICAgICMgTWFyayBtb3N0IHRoaW5ncyBiZWZvcmUgYXJyb3dzIGFzIGEgcXVvdGUgdG8KICAgICAgICAgICAgICAgICMgZ2V0IHRoZW0gdG8gbGluZSB1cC4gVGVzdGZpbGU6IG1peGVkLnBsLgogICAgICAgICAgICAgICAgaWYgKCAoICRpIDwgJGllbmQgLSAxICkgJiYgKCAkdHlwZSA9fiAvXlt3bkNdJC8gKSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkbmV4dF90eXBlID0gJHR5cGVzX3RvX2dvWyAkaSArIDEgXTsKICAgICAgICAgICAgICAgICAgICBteSAkaV9uZXh0X25vbmJsYW5rID0KICAgICAgICAgICAgICAgICAgICAgICggKCAkbmV4dF90eXBlIGVxICdiJyApID8gJGkgKyAyIDogJGkgKyAxICk7CgogICAgICAgICAgICAgICAgICAgIGlmICggJHR5cGVzX3RvX2dvWyRpX25leHRfbm9uYmxhbmtdIGVxICc9PicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ1EnOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBQYXRjaCB0byBpZ25vcmUgbGVhZGluZyBtaW51cyBiZWZvcmUgd29yZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICMgYnkgY2hhbmdpbmcgcGF0dGVybiAnbVEnIGludG8ganVzdCAnUScsCiAgICAgICAgICAgICAgICAgICAgICAgICMgc28gdGhhdCB3ZSBjYW4gYWxpZ24gdGhpbmdzIGxpa2UgdGhpczoKICAgICAgICAgICAgICAgICAgICAgICAgIyAgQnV0dG9uICAgPT4gIlByaW50IGxldHRlciBcIn4kX1wiIiwKICAgICAgICAgICAgICAgICAgICAgICAgIyAgLWNvbW1hbmQgPT4gWyBzdWIgeyBwcmludCAiJF9bMF1cbiIgfSwgJF8gXSwKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkcGF0dGVybnNbJGpdIGVxICdtJyApIHsgJHBhdHRlcm5zWyRqXSA9ICIiIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAjIENvbnZlcnQgYSBiYXJld29yZCB3aXRoaW4gYnJhY2VzIGludG8gYSBxdW90ZSBmb3IgbWF0Y2hpbmcuIFRoaXMgd2lsbAogICAgICAgICAjIGFsbG93IGFsaWdubWVudCBvZiBleHByZXNzaW9ucyBsaWtlIHRoaXM6CiAgICAgICAgICMgICAgbG9jYWwgKCAkU0lHeydJTlQnfSApID0gSUdOT1JFOwogICAgICAgICAjICAgIGxvY2FsICggJFNJR3tBTFJNfSApICA9ICdQT1NUTUFOJzsKICAgICAgICAgICAgICAgIGlmICggICAkdHlwZSBlcSAndycKICAgICAgICAgICAgICAgICAgICAmJiAkaSA+ICRpYmVnCiAgICAgICAgICAgICAgICAgICAgJiYgJGkgPCAkaWVuZAogICAgICAgICAgICAgICAgICAgICYmICR0eXBlc190b19nb1sgJGkgLSAxIF0gZXEgJ0wnCiAgICAgICAgICAgICAgICAgICAgJiYgJHR5cGVzX3RvX2dvWyAkaSArIDEgXSBlcSAnUicgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ1EnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgcGF0Y2ggdG8gbWFrZSBudW1iZXJzIGFuZCBxdW90ZXMgYWxpZ24KICAgICAgICAgICAgICAgIGlmICggJHR5cGUgZXEgJ24nICkgeyAkdHlwZSA9ICdRJyB9CgogICAgICAgICAgICAgICAgIyBwYXRjaCB0byBpZ25vcmUgYW55ICEgaW4gcGF0dGVybnMKICAgICAgICAgICAgICAgIGlmICggJHR5cGUgZXEgJyEnICkgeyAkdHlwZSA9ICcnIH0KCiAgICAgICAgICAgICAgICAkcGF0dGVybnNbJGpdIC49ICR0eXBlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGZvciBrZXl3b3JkcyB3ZSBoYXZlIHRvIHVzZSB0aGUgYWN0dWFsIHRleHQKICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgbXkgJHRvayA9ICR0b2tlbnNfdG9fZ29bJGldOwoKICAgICAgICAgICAgICAgICMgYnV0IG1hcCBjZXJ0YWluIGtleXdvcmRzIHRvIGEgY29tbW9uIHN0cmluZyB0byBhbGxvdwogICAgICAgICAgICAgICAgIyBhbGlnbm1lbnQuCiAgICAgICAgICAgICAgICAkdG9rID0gJGtleXdvcmRfbWFweyR0b2t9CiAgICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCggJGtleXdvcmRfbWFweyR0b2t9ICkgKTsKICAgICAgICAgICAgICAgICRwYXR0ZXJuc1skal0gLj0gJHRvazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBkb25lIHdpdGggdGhpcyBsaW5lIC4uIGpvaW4gdGV4dCBvZiB0b2tlbnMgdG8gbWFrZSB0aGUgbGFzdCBmaWVsZAogICAgICAgIHB1c2goIEBmaWVsZHMsIGpvaW4oICcnLCBAdG9rZW5zX3RvX2dvWyAkaV9zdGFydCAuLiAkaWVuZCBdICkgKTsKICAgICAgICByZXR1cm4gKCBcQHRva2VucywgXEBmaWVsZHMsIFxAcGF0dGVybnMgKTsKICAgIH0KCn0gICAgIyBlbmQgbWFrZV9hbGlnbm1lbnRfcGF0dGVybnMKCnsgICAgIyBiZWdpbiB1bm1hdGNoZWRfaW5kZXhlcwoKICAgICMgY2xvc3VyZSB0byBrZWVwIHRyYWNrIG9mIHVuYmFsYW5jZWQgY29udGFpbmVycy4KICAgICMgYXJyYXlzIHNoYXJlZCBieSB0aGUgcm91dGluZXMgaW4gdGhpcyBibG9jazoKICAgIG15IEB1bm1hdGNoZWRfb3BlbmluZ19pbmRleGVzX2luX3RoaXNfYmF0Y2g7CiAgICBteSBAdW5tYXRjaGVkX2Nsb3NpbmdfaW5kZXhlc19pbl90aGlzX2JhdGNoOwogICAgbXkgJWNvbW1hX2Fycm93X2NvdW50OwoKICAgIHN1YiBpc191bmJhbGFuY2VkX2JhdGNoIHsKICAgICAgICByZXR1cm4gQHVubWF0Y2hlZF9vcGVuaW5nX2luZGV4ZXNfaW5fdGhpc19iYXRjaCArCiAgICAgICAgICBAdW5tYXRjaGVkX2Nsb3NpbmdfaW5kZXhlc19pbl90aGlzX2JhdGNoOwogICAgfQoKICAgIHN1YiBjb21tYV9hcnJvd19jb3VudCB7CiAgICAgICAgbXkgJHNlcW5vID0gc2hpZnQ7CiAgICAgICAgcmV0dXJuICRjb21tYV9hcnJvd19jb3VudHskc2Vxbm99OwogICAgfQoKICAgIHN1YiBtYXRjaF9vcGVuaW5nX2FuZF9jbG9zaW5nX3Rva2VucyB7CgogICAgICAgICMgTWF0Y2ggdXAgaW5kZXhlcyBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIGJyYWNlcywgZXRjLCBpbiB0aGlzIGJhdGNoLgogICAgICAgICMgVGhpcyBoYXMgdG8gYmUgZG9uZSBhZnRlciBhbGwgdG9rZW5zIGFyZSBzdG9yZWQgYmVjYXVzZSB1bnN0b3JpbmcKICAgICAgICAjIG9mIHRva2VucyB3b3VsZCBvdGhlcndpc2UgY2F1c2UgdHJvdWJsZS4KCiAgICAgICAgQHVubWF0Y2hlZF9vcGVuaW5nX2luZGV4ZXNfaW5fdGhpc19iYXRjaCA9ICgpOwogICAgICAgIEB1bm1hdGNoZWRfY2xvc2luZ19pbmRleGVzX2luX3RoaXNfYmF0Y2ggPSAoKTsKICAgICAgICAlY29tbWFfYXJyb3dfY291bnQgICAgICAgICAgICAgICAgICAgICAgID0gKCk7CiAgICAgICAgbXkgJGNvbW1hX2Fycm93X2NvdW50X2NvbnRhaW5lZCA9IDA7CgogICAgICAgIGZvcmVhY2ggbXkgJGkgKCAwIC4uICRtYXhfaW5kZXhfdG9fZ28gKSB7CiAgICAgICAgICAgIGlmICggJHR5cGVfc2VxdWVuY2VfdG9fZ29bJGldICkgewogICAgICAgICAgICAgICAgbXkgJHRva2VuID0gJHRva2Vuc190b19nb1skaV07CiAgICAgICAgICAgICAgICBpZiAoICR0b2tlbiA9fiAvXltcKFxbXHtcP10kLyApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEB1bm1hdGNoZWRfb3BlbmluZ19pbmRleGVzX2luX3RoaXNfYmF0Y2gsICRpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkdG9rZW4gPX4gL15bXClcXVx9XDpdJC8gKSB7CgogICAgICAgICAgICAgICAgICAgIG15ICRpX21hdGUgPSBwb3AgQHVubWF0Y2hlZF9vcGVuaW5nX2luZGV4ZXNfaW5fdGhpc19iYXRjaDsKICAgICAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQoJGlfbWF0ZSkgJiYgJGlfbWF0ZSA+PSAwICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICR0eXBlX3NlcXVlbmNlX3RvX2dvWyRpX21hdGVdID09CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZV9zZXF1ZW5jZV90b19nb1skaV0gKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWF0ZV9pbmRleF90b19nb1skaV0gICAgICA9ICRpX21hdGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWF0ZV9pbmRleF90b19nb1skaV9tYXRlXSA9ICRpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHNlcW5vID0gJHR5cGVfc2VxdWVuY2VfdG9fZ29bJGldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkY29tbWFfYXJyb3dfY291bnR7JHNlcW5vfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29tbWFfYXJyb3dfY291bnRfY29udGFpbmVkICs9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29tbWFfYXJyb3dfY291bnR7JHNlcW5vfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQHVubWF0Y2hlZF9vcGVuaW5nX2luZGV4ZXNfaW5fdGhpc19iYXRjaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlfbWF0ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQHVubWF0Y2hlZF9jbG9zaW5nX2luZGV4ZXNfaW5fdGhpc19iYXRjaCwgJGk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQHVubWF0Y2hlZF9jbG9zaW5nX2luZGV4ZXNfaW5fdGhpc19iYXRjaCwgJGk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJHRva2Vuc190b19nb1skaV0gZXEgJz0+JyApIHsKICAgICAgICAgICAgICAgIGlmIChAdW5tYXRjaGVkX29wZW5pbmdfaW5kZXhlc19pbl90aGlzX2JhdGNoKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJGogICAgID0gJHVubWF0Y2hlZF9vcGVuaW5nX2luZGV4ZXNfaW5fdGhpc19iYXRjaFstMV07CiAgICAgICAgICAgICAgICAgICAgbXkgJHNlcW5vID0gJHR5cGVfc2VxdWVuY2VfdG9fZ29bJGpdOwogICAgICAgICAgICAgICAgICAgICRjb21tYV9hcnJvd19jb3VudHskc2Vxbm99Kys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRjb21tYV9hcnJvd19jb3VudF9jb250YWluZWQ7CiAgICB9CgogICAgc3ViIHNhdmVfb3BlbmluZ19pbmRlbnRhdGlvbiB7CgogICAgICAgICMgVGhpcyBzaG91bGQgYmUgY2FsbGVkIGFmdGVyIGVhY2ggYmF0Y2ggb2YgdG9rZW5zIGlzIG91dHB1dC4gSXQKICAgICAgICAjIHNhdmVzIGluZGVudGF0aW9ucyBvZiBsaW5lcyBvZiBhbGwgdW5tYXRjaGVkIG9wZW5pbmcgdG9rZW5zLgogICAgICAgICMgVGhlc2Ugd2lsbCBiZSB1c2VkIGJ5IHN1YiBnZXRfb3BlbmluZ19pbmRlbnRhdGlvbi4KCiAgICAgICAgbXkgKCAkcmlfZmlyc3QsICRyaV9sYXN0LCAkcmluZGVudGF0aW9uX2xpc3QgKSA9IEBfOwoKICAgICAgICAjIHdlIG5vIGxvbmdlciBuZWVkIGluZGVudGF0aW9ucyBvZiBhbnkgc2F2ZWQgaW5kZW50YXRpb25zIHdoaWNoCiAgICAgICAgIyBhcmUgdW5tYXRjaGVkIGNsb3NpbmcgdG9rZW5zIGluIHRoaXMgYmF0Y2gsIGJlY2F1c2Ugd2Ugd2lsbAogICAgICAgICMgbmV2ZXIgZW5jb3VudGVyIHRoZW0gYWdhaW4uICBTbyB3ZSBjYW4gZGVsZXRlIHRoZW0gdG8ga2VlcAogICAgICAgICMgdGhlIGhhc2ggc2l6ZSBkb3duLgogICAgICAgIGZvcmVhY2ggKEB1bm1hdGNoZWRfY2xvc2luZ19pbmRleGVzX2luX3RoaXNfYmF0Y2gpIHsKICAgICAgICAgICAgbXkgJHNlcW5vID0gJHR5cGVfc2VxdWVuY2VfdG9fZ29bJF9dOwogICAgICAgICAgICBkZWxldGUgJHNhdmVkX29wZW5pbmdfaW5kZW50YXRpb257JHNlcW5vfTsKICAgICAgICB9CgogICAgICAgICMgd2UgbmVlZCB0byBzYXZlIGluZGVudGF0aW9ucyBvZiBhbnkgdW5tYXRjaGVkIG9wZW5pbmcgdG9rZW5zCiAgICAgICAgIyBpbiB0aGlzIGJhdGNoIGJlY2F1c2Ugd2UgbWF5IG5lZWQgdGhlbSBpbiBhIHN1YnNlcXVlbnQgYmF0Y2guCiAgICAgICAgZm9yZWFjaCAoQHVubWF0Y2hlZF9vcGVuaW5nX2luZGV4ZXNfaW5fdGhpc19iYXRjaCkgewogICAgICAgICAgICBteSAkc2Vxbm8gPSAkdHlwZV9zZXF1ZW5jZV90b19nb1skX107CiAgICAgICAgICAgICRzYXZlZF9vcGVuaW5nX2luZGVudGF0aW9ueyRzZXFub30gPSBbCiAgICAgICAgICAgICAgICBsb29rdXBfb3BlbmluZ19pbmRlbnRhdGlvbigKICAgICAgICAgICAgICAgICAgICAkXywgJHJpX2ZpcnN0LCAkcmlfbGFzdCwgJHJpbmRlbnRhdGlvbl9saXN0CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIF07CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KfSAgICAjIGVuZCB1bm1hdGNoZWRfaW5kZXhlcwoKc3ViIGdldF9vcGVuaW5nX2luZGVudGF0aW9uIHsKCiAgICAjIGdldCB0aGUgaW5kZW50YXRpb24gb2YgdGhlIGxpbmUgd2hpY2ggb3V0cHV0IHRoZSBvcGVuaW5nIHRva2VuCiAgICAjIGNvcnJlc3BvbmRpbmcgdG8gYSBnaXZlbiBjbG9zaW5nIHRva2VuIGluIHRoZSBjdXJyZW50IG91dHB1dCBiYXRjaC4KICAgICMKICAgICMgZ2l2ZW46CiAgICAjICRpX2Nsb3NpbmcgLSBpbmRleCBpbiB0aGlzIGxpbmUgb2YgYSBjbG9zaW5nIHRva2VuICcpJyAnfScgb3IgJ10nCiAgICAjCiAgICAjICRyaV9maXJzdCAtIHJlZmVyZW5jZSB0byBsaXN0IG9mIHRoZSBmaXJzdCBpbmRleCAkaSBmb3IgZWFjaCBvdXRwdXQKICAgICMgICAgICAgICAgICAgICBsaW5lIGluIHRoaXMgYmF0Y2gKICAgICMgJHJpX2xhc3QgLSByZWZlcmVuY2UgdG8gbGlzdCBvZiB0aGUgbGFzdCBpbmRleCAkaSBmb3IgZWFjaCBvdXRwdXQgbGluZQogICAgIyAgICAgICAgICAgICAgaW4gdGhpcyBiYXRjaAogICAgIyAkcmluZGVudGF0aW9uX2xpc3QgLSByZWZlcmVuY2UgdG8gYSBsaXN0IGNvbnRhaW5pbmcgdGhlIGluZGVudGF0aW9uCiAgICAjICAgICAgICAgICAgdXNlZCBmb3IgZWFjaCBsaW5lLgogICAgIwogICAgIyByZXR1cm46CiAgICAjICAgLXRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgbGluZSB3aGljaCBjb250YWluZWQgdGhlIG9wZW5pbmcgdG9rZW4KICAgICMgICAgd2hpY2ggbWF0Y2hlcyB0aGUgdG9rZW4gYXQgaW5kZXggJGlfb3BlbmluZwogICAgIyAgIC1hbmQgaXRzIG9mZnNldCAobnVtYmVyIG9mIGNvbHVtbnMpIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBsaW5lCiAgICAjCiAgICBteSAoICRpX2Nsb3NpbmcsICRyaV9maXJzdCwgJHJpX2xhc3QsICRyaW5kZW50YXRpb25fbGlzdCApID0gQF87CgogICAgIyBmaXJzdCwgc2VlIGlmIHRoZSBvcGVuaW5nIHRva2VuIGlzIGluIHRoZSBjdXJyZW50IGJhdGNoCiAgICBteSAkaV9vcGVuaW5nID0gJG1hdGVfaW5kZXhfdG9fZ29bJGlfY2xvc2luZ107CiAgICBteSAoICRpbmRlbnQsICRvZmZzZXQsICRpc19sZWFkaW5nLCAkZXhpc3RzICk7CiAgICAkZXhpc3RzID0gMTsKICAgIGlmICggJGlfb3BlbmluZyA+PSAwICkgewoKICAgICAgICAjIGl0IGlzLi5sb29rIHVwIHRoZSBpbmRlbnRhdGlvbgogICAgICAgICggJGluZGVudCwgJG9mZnNldCwgJGlzX2xlYWRpbmcgKSA9CiAgICAgICAgICBsb29rdXBfb3BlbmluZ19pbmRlbnRhdGlvbiggJGlfb3BlbmluZywgJHJpX2ZpcnN0LCAkcmlfbGFzdCwKICAgICAgICAgICAgJHJpbmRlbnRhdGlvbl9saXN0ICk7CiAgICB9CgogICAgIyBpZiBub3QsIGl0IHNob3VsZCBoYXZlIGJlZW4gc3RvcmVkIGluIHRoZSBoYXNoIGJ5IGEgcHJldmlvdXMgYmF0Y2gKICAgIGVsc2UgewogICAgICAgIG15ICRzZXFubyA9ICR0eXBlX3NlcXVlbmNlX3RvX2dvWyRpX2Nsb3NpbmddOwogICAgICAgIGlmICgkc2Vxbm8pIHsKICAgICAgICAgICAgaWYgKCAkc2F2ZWRfb3BlbmluZ19pbmRlbnRhdGlvbnskc2Vxbm99ICkgewogICAgICAgICAgICAgICAgKCAkaW5kZW50LCAkb2Zmc2V0LCAkaXNfbGVhZGluZyApID0KICAgICAgICAgICAgICAgICAgQHsgJHNhdmVkX29wZW5pbmdfaW5kZW50YXRpb257JHNlcW5vfSB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNvbWUga2luZCBvZiBzZXJpb3VzIGVycm9yCiAgICAgICAgICAgICMgKGV4YW1wbGUgaXMgYmFkZmlsZS50KQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRpbmRlbnQgICAgID0gMDsKICAgICAgICAgICAgICAgICRvZmZzZXQgICAgID0gMDsKICAgICAgICAgICAgICAgICRpc19sZWFkaW5nID0gMDsKICAgICAgICAgICAgICAgICRleGlzdHMgICAgID0gMDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBpZiBubyBzZXF1ZW5jZSBudW1iZXIgaXQgbXVzdCBiZSBhbiB1bmJhbGFuY2VkIGNvbnRhaW5lcgogICAgICAgIGVsc2UgewogICAgICAgICAgICAkaW5kZW50ICAgICA9IDA7CiAgICAgICAgICAgICRvZmZzZXQgICAgID0gMDsKICAgICAgICAgICAgJGlzX2xlYWRpbmcgPSAwOwogICAgICAgICAgICAkZXhpc3RzICAgICA9IDA7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuICggJGluZGVudCwgJG9mZnNldCwgJGlzX2xlYWRpbmcsICRleGlzdHMgKTsKfQoKc3ViIGxvb2t1cF9vcGVuaW5nX2luZGVudGF0aW9uIHsKCiAgICAjIGdldCB0aGUgaW5kZW50YXRpb24gb2YgdGhlIGxpbmUgaW4gdGhlIGN1cnJlbnQgb3V0cHV0IGJhdGNoCiAgICAjIHdoaWNoIG91dHB1dCBhIHNlbGVjdGVkIG9wZW5pbmcgdG9rZW4KICAgICMKICAgICMgZ2l2ZW46CiAgICAjICAgJGlfb3BlbmluZyAtIGluZGV4IG9mIGFuIG9wZW5pbmcgdG9rZW4gaW4gdGhlIGN1cnJlbnQgb3V0cHV0IGJhdGNoCiAgICAjICAgICAgICAgICAgICAgIHdob3NlIGxpbmUgaW5kZW50YXRpb24gd2UgbmVlZAogICAgIyAgICRyaV9maXJzdCAtIHJlZmVyZW5jZSB0byBsaXN0IG9mIHRoZSBmaXJzdCBpbmRleCAkaSBmb3IgZWFjaCBvdXRwdXQKICAgICMgICAgICAgICAgICAgICBsaW5lIGluIHRoaXMgYmF0Y2gKICAgICMgICAkcmlfbGFzdCAtIHJlZmVyZW5jZSB0byBsaXN0IG9mIHRoZSBsYXN0IGluZGV4ICRpIGZvciBlYWNoIG91dHB1dCBsaW5lCiAgICAjICAgICAgICAgICAgICBpbiB0aGlzIGJhdGNoCiAgICAjICAgJHJpbmRlbnRhdGlvbl9saXN0IC0gcmVmZXJlbmNlIHRvIGEgbGlzdCBjb250YWluaW5nIHRoZSBpbmRlbnRhdGlvbgogICAgIyAgICAgICAgICAgIHVzZWQgZm9yIGVhY2ggbGluZS4gIChOT1RFOiB0aGUgZmlyc3Qgc2xvdCBpbgogICAgIyAgICAgICAgICAgIHRoaXMgbGlzdCBpcyB0aGUgbGFzdCByZXR1cm5lZCBsaW5lIG51bWJlciwgYW5kIHRoaXMgaXMKICAgICMgICAgICAgICAgICBmb2xsb3dlZCBieSB0aGUgbGlzdCBvZiBpbmRlbnRhdGlvbnMpLgogICAgIwogICAgIyByZXR1cm4KICAgICMgICAtdGhlIGluZGVudGF0aW9uIG9mIHRoZSBsaW5lIHdoaWNoIGNvbnRhaW5lZCB0b2tlbiAkaV9vcGVuaW5nCiAgICAjICAgLWFuZCBpdHMgb2Zmc2V0IChudW1iZXIgb2YgY29sdW1ucykgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGxpbmUKCiAgICBteSAoICRpX29wZW5pbmcsICRyaV9zdGFydCwgJHJpX2xhc3QsICRyaW5kZW50YXRpb25fbGlzdCApID0gQF87CgogICAgbXkgJG5saW5lID0gJHJpbmRlbnRhdGlvbl9saXN0LT5bMF07ICAgICMgbGluZSBudW1iZXIgb2YgcHJldmlvdXMgbG9va3VwCgogICAgIyByZXNldCBsaW5lIGxvY2F0aW9uIGlmIG5lY2Vzc2FyeQogICAgJG5saW5lID0gMCBpZiAoICRpX29wZW5pbmcgPCAkcmlfc3RhcnQtPlskbmxpbmVdICk7CgogICAgIyBmaW5kIHRoZSBjb3JyZWN0IGxpbmUKICAgIHVubGVzcyAoICRpX29wZW5pbmcgPiAkcmlfbGFzdC0+Wy0xXSApIHsKICAgICAgICB3aGlsZSAoICRpX29wZW5pbmcgPiAkcmlfbGFzdC0+WyRubGluZV0gKSB7ICRubGluZSsrOyB9CiAgICB9CgogICAgIyBlcnJvciAtIHRva2VuIGluZGV4IGlzIG91dCBvZiBib3VuZHMgLSBzaG91bGRuJ3QgaGFwcGVuCiAgICBlbHNlIHsKICAgICAgICB3YXJuaW5nKAoibm9uLWZhdGFsIHByb2dyYW0gYnVnIGluIGxvb2t1cF9vcGVuaW5nX2luZGVudGF0aW9uIC0gaW5kZXggb3V0IG9mIHJhbmdlXG4iCiAgICAgICAgKTsKICAgICAgICByZXBvcnRfZGVmaW5pdGVfYnVnKCk7CiAgICAgICAgJG5saW5lID0gJCN7JHJpX2xhc3R9OwogICAgfQoKICAgICRyaW5kZW50YXRpb25fbGlzdC0+WzBdID0KICAgICAgJG5saW5lOyAgICAjIHNhdmUgbGluZSBudW1iZXIgdG8gc3RhcnQgbG9va2luZyBuZXh0IGNhbGwKICAgIG15ICRpYmVnICAgICAgID0gJHJpX3N0YXJ0LT5bJG5saW5lXTsKICAgIG15ICRvZmZzZXQgICAgID0gdG9rZW5fc2VxdWVuY2VfbGVuZ3RoKCAkaWJlZywgJGlfb3BlbmluZyApIC0gMTsKICAgIG15ICRpc19sZWFkaW5nID0gKCAkaWJlZyA9PSAkaV9vcGVuaW5nICk7CiAgICByZXR1cm4gKCAkcmluZGVudGF0aW9uX2xpc3QtPlsgJG5saW5lICsgMSBdLCAkb2Zmc2V0LCAkaXNfbGVhZGluZyApOwp9Cgp7CiAgICBteSAlaXNfaWZfZWxzaWZfZWxzZV91bmxlc3Nfd2hpbGVfdW50aWxfZm9yX2ZvcmVhY2g7CgogICAgQkVHSU4gewoKICAgICAgICAjIFRoZXNlIGJsb2NrIHR5cGVzIG1heSBoYXZlIHRleHQgYmV0d2VlbiB0aGUga2V5d29yZCBhbmQgb3BlbmluZwogICAgICAgICMgY3VybHkuICBOb3RlOiAnZWxzZScgZG9lcyBub3QsIGJ1dCBtdXN0IGJlIGluY2x1ZGVkIHRvIGFsbG93IHRyYWlsaW5nCiAgICAgICAgIyBpZi9lbHNpZiB0ZXh0IHRvIGJlIGFwcGVuZGVkLgogICAgICAgICMgcGF0Y2ggZm9yIFNXSVRDSC9DQVNFOiBhZGRlZCAnY2FzZScgYW5kICd3aGVuJwogICAgICAgIG15IEBxID0gcXcoaWYgZWxzaWYgZWxzZSB1bmxlc3Mgd2hpbGUgdW50aWwgZm9yIGZvcmVhY2ggY2FzZSB3aGVuKTsKICAgICAgICBAaXNfaWZfZWxzaWZfZWxzZV91bmxlc3Nfd2hpbGVfdW50aWxfZm9yX2ZvcmVhY2h7QHF9ID0KICAgICAgICAgICgxKSB4IHNjYWxhcihAcSk7CiAgICB9CgogICAgc3ViIHNldF9hZGp1c3RlZF9pbmRlbnRhdGlvbiB7CgogICAgICAgICMgVGhpcyByb3V0aW5lIGhhcyB0aGUgZmluYWwgc2F5IHJlZ2FyZGluZyB0aGUgYWN0dWFsIGluZGVudGF0aW9uIG9mCiAgICAgICAgIyBhIGxpbmUuICBJdCBzdGFydHMgd2l0aCB0aGUgYmFzaWMgaW5kZW50YXRpb24gd2hpY2ggaGFzIGJlZW4KICAgICAgICAjIGRlZmluZWQgZm9yIHRoZSBsZWFkaW5nIHRva2VuLCBhbmQgdGhlbiB0YWtlcyBpbnRvIGFjY291bnQgYW55CiAgICAgICAgIyBvcHRpb25zIHRoYXQgdGhlIHVzZXIgaGFzIHNldCByZWdhcmRpbmcgc3BlY2lhbCBpbmRlbnRpbmcgYW5kCiAgICAgICAgIyBvdXRkZW50aW5nLgoKICAgICAgICBteSAoCiAgICAgICAgICAgICRzZWxmLCAgICAkaWJlZywgICAgICAgICAgICAgICRpZW5kLAogICAgICAgICAgICAkcmZpZWxkcywgJHJwYXR0ZXJucywgICAgICAgICAkcmlfZmlyc3QsCiAgICAgICAgICAgICRyaV9sYXN0LCAkcmluZGVudGF0aW9uX2xpc3QsICRsZXZlbF9qdW1wCiAgICAgICAgKSA9IEBfOwoKICAgICAgICBteSAkckxMID0gJHNlbGYtPntyTEx9OwoKICAgICAgICAjIHdlIG5lZWQgdG8ga25vdyB0aGUgbGFzdCB0b2tlbiBvZiB0aGlzIGxpbmUKICAgICAgICBteSAoICR0ZXJtaW5hbF90eXBlLCAkaV90ZXJtaW5hbCApID0KICAgICAgICAgIHRlcm1pbmFsX3R5cGUoIFxAdHlwZXNfdG9fZ28sIFxAYmxvY2tfdHlwZV90b19nbywgJGliZWcsICRpZW5kICk7CgogICAgICAgIG15ICRpc19vdXRkZW50ZWRfbGluZSA9IDA7CgogICAgICAgIG15ICRpc19zZW1pY29sb25fdGVybWluYXRlZCA9ICR0ZXJtaW5hbF90eXBlIGVxICc7JwogICAgICAgICAgJiYgJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGllbmRdIDwgJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGliZWddOwoKICAgICAgICAjIE5PVEU6IEEgZnV0dXJlIGltcHJvdmVtZW50IHdvdWxkIGJlIHRvIG1ha2UgaXQgc2VtaWNvbG9uIHRlcm1pbmF0ZWQKICAgICAgICAjIGV2ZW4gaWYgaXQgZG9lcyBub3QgaGF2ZSBhIHNlbWljb2xvbiBidXQgaXMgZm9sbG93ZWQgYnkgYSBjbG9zaW5nCiAgICAgICAgIyBibG9jayBicmFjZS4gVGhpcyB3b3VsZCB1bmRvIGNpIGV2ZW4gZm9yIHNvbWV0aGluZyBsaWtlIHRoZQogICAgICAgICMgZm9sbG93aW5nLCBpbiB3aGljaCB0aGUgZmluYWwgcGFyZW4gZG9lcyBub3QgaGF2ZSBhIHNlbWljb2xvbiBiZWNhdXNlCiAgICAgICAgIyBpdCBpcyBhIHBvc3NpYmxlIHdlbGQgbG9jYXRpb246CgogICAgICAgICMgaWYgKCRCT0xEX01BVEgpIHsKICAgICAgICAjICAgICAoCiAgICAgICAgIyAgICAgICAgICRsYWJlbHMsICRjb21tZW50LAogICAgICAgICMgICAgICAgICBqb2luKCAnJywgJzxCPicsICZtYWtlX21hdGgoICRtb2RlLCAnJywgJycsICRfICksICc8L0I+JyApCiAgICAgICAgIyAgICAgKQogICAgICAgICMgfQogICAgICAgICMKCiAgICAgICAgIyBNT0pPOiBTZXQgYSBmbGFnIGlmIHRoaXMgbGluZXMgYmVnaW5zIHdpdGggJyktPicKICAgICAgICBteSAkbGVhZGluZ19wYXJlbl9hcnJvdyA9ICgKICAgICAgICAgICAgICAgICAkdHlwZXNfdG9fZ29bJGliZWddIGVxICd9JwogICAgICAgICAgICAgICYmICR0b2tlbnNfdG9fZ29bJGliZWddIGVxICcpJwogICAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICggJGliZWcgPCAkaV90ZXJtaW5hbCAmJiAkdHlwZXNfdG9fZ29bICRpYmVnICsgMSBdIGVxICctPicgKQogICAgICAgICAgICAgICAgfHwgKCAgICRpYmVnIDwgJGlfdGVybWluYWwgLSAxCiAgICAgICAgICAgICAgICAgICAgJiYgJHR5cGVzX3RvX2dvWyAkaWJlZyArIDEgXSBlcSAnYicKICAgICAgICAgICAgICAgICAgICAmJiAkdHlwZXNfdG9fZ29bICRpYmVnICsgMiBdIGVxICctPicgKQogICAgICAgICAgICAgICkKICAgICAgICApOwoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBTZWN0aW9uIDE6IHNldCBhIGZsYWcgYW5kIGEgZGVmYXVsdCBpbmRlbnRhdGlvbgogICAgICAgICMKICAgICAgICAjIE1vc3QgbGluZXMgYXJlIGluZGVudGVkIGFjY29yZGluZyB0byB0aGUgaW5pdGlhbCB0b2tlbi4KICAgICAgICAjIEJ1dCBpdCBpcyBjb21tb24gdG8gb3V0ZGVudCB0byB0aGUgbGV2ZWwganVzdCBhZnRlciB0aGUKICAgICAgICAjIHRlcm1pbmFsIHRva2VuIGluIGNlcnRhaW4gY2FzZXMuLi4KICAgICAgICAjIGFkanVzdF9pbmRlbnRhdGlvbiBmbGFnOgogICAgICAgICMgICAgICAgMCAtIGRvIG5vdCBhZGp1c3QKICAgICAgICAjICAgICAgIDEgLSBvdXRkZW50CiAgICAgICAgIyAgICAgICAyIC0gdmVydGljYWxseSBhbGlnbiB3aXRoIG9wZW5pbmcgdG9rZW4KICAgICAgICAjICAgICAgIDMgLSBpbmRlbnQKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgbXkgJGFkanVzdF9pbmRlbnRhdGlvbiAgICAgICAgID0gMDsKICAgICAgICBteSAkZGVmYXVsdF9hZGp1c3RfaW5kZW50YXRpb24gPSAkYWRqdXN0X2luZGVudGF0aW9uOwoKICAgICAgICBteSAoCiAgICAgICAgICAgICRvcGVuaW5nX2luZGVudGF0aW9uLCAkb3BlbmluZ19vZmZzZXQsCiAgICAgICAgICAgICRpc19sZWFkaW5nLCAgICAgICAgICAkb3BlbmluZ19leGlzdHMKICAgICAgICApOwoKICAgICAgICBteSAkdHlwZV9iZWcgICAgICA9ICR0eXBlc190b19nb1skaWJlZ107CiAgICAgICAgbXkgJHRva2VuX2JlZyAgICAgPSAkdG9rZW5zX3RvX2dvWyRpYmVnXTsKICAgICAgICBteSAkS19iZWcgICAgICAgICA9ICRLX3RvX2dvWyRpYmVnXTsKICAgICAgICBteSAkaWJlZ193ZWxkX2ZpeCA9ICRpYmVnOwoKICAgICAgICAjIFFXIFBBVENIIDIgKFRlc3RpbmcpCiAgICAgICAgIyBBdCBhbiBpc29sYXRlZCBjbG9zaW5nIHRva2VuIG9mIGEgcXcgcXVvdGUgd2hpY2ggaXMgd2VsZGVkIHRvCiAgICAgICAgIyBhIGZvbGxvd2luZyBjbG9zaW5nIHRva2VuLCB3ZSB3aWxsIGxvY2FsbHkgY2hhbmdlIGl0cyB0eXBlIHRvCiAgICAgICAgIyBiZSB0aGUgc2FtZSBhcyBpdHMgdG9rZW4uIFRoaXMgd2lsbCBhbGxvdyBmb3JtYXR0aW5nIHRvIGJlIHRoZQogICAgICAgICMgc2FtZSBhcyBmb3IgYW4gb3JkaW5hcnkgY2xvc2luZyB0b2tlbi4KCiAgICAgICAgIyBGb3IgLWxwIGZvcm1hdHRpbmcgc2UgdXNlICRpYmVnX3dlbGRfZml4IHRvIGdldCBhcm91bmQgdGhlIHByb2JsZW0KICAgICAgICAjIHRoYXQgd2l0aCAtbHAgdHlwZSBmb3JtYXR0aW5nIHRoZSBvcGVuaW5nIGFuZCBjbG9zaW5nIHRva2VucyB0byBub3QKICAgICAgICAjIGhhdmUgc2VxdWVuY2UgbnVtYmVycy4KICAgICAgICBpZiAoICR0eXBlX2JlZyBlcSAncScgJiYgJHRva2VuX2JlZyA9fiAvXltcKVx9XF1cPl0vICkgewogICAgICAgICAgICBteSAkS19uZXh0X25vbmJsYW5rID0gJHNlbGYtPktfbmV4dF9jb2RlKCRLX2JlZyk7CiAgICAgICAgICAgIGlmICggZGVmaW5lZCgkS19uZXh0X25vbmJsYW5rKSApIHsKICAgICAgICAgICAgICAgIG15ICR0eXBlX3NlcXVlbmNlID0gJHJMTC0+WyRLX25leHRfbm9uYmxhbmtdLT5bX1RZUEVfU0VRVUVOQ0VfXTsKICAgICAgICAgICAgICAgIG15ICR0b2tlbiAgICAgICAgID0gJHJMTC0+WyRLX25leHRfbm9uYmxhbmtdLT5bX1RPS0VOX107CiAgICAgICAgICAgICAgICBteSAkd2VsZGVkICAgICAgICA9IHdlbGRfbGVuX2xlZnQoICR0eXBlX3NlcXVlbmNlLCAkdG9rZW4gKTsKICAgICAgICAgICAgICAgIGlmICgkd2VsZGVkKSB7CiAgICAgICAgICAgICAgICAgICAgJGliZWdfd2VsZF9maXggPSAkaWJlZyArICggJEtfbmV4dF9ub25ibGFuayAtICRLX2JlZyApOwogICAgICAgICAgICAgICAgICAgICR0eXBlX2JlZyA9ICcpJzsgICAgIyMkdG9rZW5fYmVnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGlmIHdlIGFyZSBhdCBhIGNsb3NpbmcgdG9rZW4gb2Ygc29tZSB0eXBlLi4KICAgICAgICBpZiAoICR0eXBlX2JlZyA9fiAvXltcKVx9XF1SXSQvICkgewoKICAgICAgICAgICAgIyBnZXQgdGhlIGluZGVudGF0aW9uIG9mIHRoZSBsaW5lIGNvbnRhaW5pbmcgdGhlIGNvcnJlc3BvbmRpbmcKICAgICAgICAgICAgIyBvcGVuaW5nIHRva2VuCiAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICRvcGVuaW5nX2luZGVudGF0aW9uLCAkb3BlbmluZ19vZmZzZXQsCiAgICAgICAgICAgICAgICAkaXNfbGVhZGluZywgICAgICAgICAgJG9wZW5pbmdfZXhpc3RzCiAgICAgICAgICAgICAgKQogICAgICAgICAgICAgID0gZ2V0X29wZW5pbmdfaW5kZW50YXRpb24oICRpYmVnX3dlbGRfZml4LCAkcmlfZmlyc3QsICRyaV9sYXN0LAogICAgICAgICAgICAgICAgJHJpbmRlbnRhdGlvbl9saXN0ICk7CgogICAgICAgICAgICAjIEZpcnN0IHNldCB0aGUgZGVmYXVsdCBiZWhhdmlvcjoKICAgICAgICAgICAgaWYgKAoKICAgICAgICAgICAgICAgICMgZGVmYXVsdCBiZWhhdmlvciBpcyB0byBvdXRkZW50IGNsb3NpbmcgbGluZXMKICAgICAgICAgICAgICAgICMgb2YgdGhlIGZvcm06ICAgIik7ICB9OyAgXTsgICktPnh4eDsiCiAgICAgICAgICAgICAgICAkaXNfc2VtaWNvbG9uX3Rlcm1pbmF0ZWQKCiAgICAgICAgICAgICAgICAjIGFuZCAnY3VkZGxlZCBwYXJlbnMnIG9mIHRoZSBmb3JtOiAgICIpLT5wYWNrKCIKICAgICAgICAgICAgICAgICMgQnVnIGZpeCBmb3IgUlQgIzEyMzc0OV06IHRoZSB0eXBlcyBoZXJlIHdlcmUKICAgICAgICAgICAgICAgICMgaW5jb3JyZWN0bHkgJygnIGFuZCAnKScuICBDb3JyZWN0ZWQgdG8gYmUgJ3snIGFuZCAnfScKICAgICAgICAgICAgICAgIHx8ICgKICAgICAgICAgICAgICAgICAgICAgICAkdGVybWluYWxfdHlwZSBlcSAneycKICAgICAgICAgICAgICAgICAgICAmJiAkdHlwZV9iZWcgZXEgJ30nCiAgICAgICAgICAgICAgICAgICAgJiYgKCAkbmVzdGluZ19kZXB0aF90b19nb1skaWVuZF0gKyAxID09CiAgICAgICAgICAgICAgICAgICAgICAgICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpYmVnXSApCiAgICAgICAgICAgICAgICApCgogICAgICAgICAgICAgICAgIyByZW1vdmUgY29udGludWF0aW9uIGluZGVudGF0aW9uIGZvciBhbnkgbGluZSBsaWtlCiAgICAgICAgICAgICAgICAjIAl9IC4uLiB7CiAgICAgICAgICAgICAgICAjIG9yIHdpdGhvdXQgZW5kaW5nICd7JyBhbmQgdW5iYWxhbmNlZCwgc3VjaCBhcwogICAgICAgICAgICAgICAgIyAgICAgICBzdWNoIGFzICd9LT57JG9wZXJhdG9yfScKICAgICAgICAgICAgICAgIHx8ICgKICAgICAgICAgICAgICAgICAgICAkdHlwZV9iZWcgZXEgJ30nCgogICAgICAgICAgICAgICAgICAgICYmICggICAkdHlwZXNfdG9fZ29bJGllbmRdIGVxICd7JwogICAgICAgICAgICAgICAgICAgICAgICB8fCAkbGV2ZWxzX3RvX2dvWyRpZW5kXSA8ICRsZXZlbHNfdG9fZ29bJGliZWddICkKICAgICAgICAgICAgICAgICkKCiAgICAgICAgICAgICAgICAjIGFuZCB3aGVuIHRoZSBuZXh0IGxpbmUgaXMgYXQgYSBsb3dlciBpbmRlbnRhdGlvbiBsZXZlbAogICAgICAgICAgICAgICAgIyBQQVRDSDogYW5kIG9ubHkgaWYgdGhlIHN0eWxlIGFsbG93cyB1bmRvaW5nIGNvbnRpbnVhdGlvbgogICAgICAgICAgICAgICAgIyBmb3IgYWxsIGNsb3NpbmcgdG9rZW4gdHlwZXMuIFdlIHNob3VsZCByZWFsbHkgd2FpdCB1bnRpbAogICAgICAgICAgICAgICAgIyB0aGUgaW5kZW50YXRpb24gb2YgdGhlIG5leHQgbGluZSBpcyBrbm93biBhbmQgdGhlbiBtYWtlCiAgICAgICAgICAgICAgICAjIGEgZGVjaXNpb24sIGJ1dCB0aGF0IHdvdWxkIHJlcXVpcmUgYW5vdGhlciBwYXNzLgogICAgICAgICAgICAgICAgfHwgKCAkbGV2ZWxfanVtcCA8IDAgJiYgISRzb21lX2Nsb3NpbmdfdG9rZW5faW5kZW50YXRpb24gKQoKICAgICAgICAgICAgICAgICMgUGF0Y2ggZm9yIC13bj0yLCBtdWx0aXBsZSB3ZWxkZWQgY2xvc2luZyB0b2tlbnMKICAgICAgICAgICAgICAgIHx8ICggICAkaV90ZXJtaW5hbCA+ICRpYmVnCiAgICAgICAgICAgICAgICAgICAgJiYgJHR5cGVzX3RvX2dvWyRpZW5kXSA9fiAvXltcKVx9XF1SXSQvICkKCiAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkYWRqdXN0X2luZGVudGF0aW9uID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdXRkZW50IHNvbWV0aGluZyBsaWtlICcpLCcKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJHRlcm1pbmFsX3R5cGUgZXEgJywnCgogICAgICAgICAgICAgICAgIyBSZW1vdmVkIHRoaXMgY29uc3RyYWludCBmb3IgLXduCiAgICAgICAgICAgICAgICAjIE9MRDogYWxsb3cganVzdCBvbmUgY2hhcmFjdGVyIGJlZm9yZSB0aGUgY29tbWEKICAgICAgICAgICAgICAgICMgJiYgJGlfdGVybWluYWwgPT0gJGliZWcgKyAxCgogICAgICAgICAgICAgICAgIyByZXF1aXJlIExJU1QgZW52aXJvbm1lbnQ7IG90aGVyd2lzZSwgd2UgbWF5IG91dGRlbnQgdG9vIG11Y2ggLQogICAgICAgICAgICAgICAgIyB0aGlzIGNhbiBoYXBwZW4gaW4gY2FsbHMgd2l0aG91dCBwYXJlbnRoZXNlcyAob3ZlcmxvYWQudCk7CiAgICAgICAgICAgICAgICAmJiAkY29udGFpbmVyX2Vudmlyb25tZW50X3RvX2dvWyRpX3Rlcm1pbmFsXSBlcSAnTElTVCcKICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRhZGp1c3RfaW5kZW50YXRpb24gPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHVuZG8gY29udGludWF0aW9uIGluZGVudGF0aW9uIG9mIGEgdGVybWluYWwgY2xvc2luZyB0b2tlbiBpZgogICAgICAgICAgICAjIGl0IGlzIHRoZSBsYXN0IHRva2VuIGJlZm9yZSBhIGxldmVsIGRlY3JlYXNlLiAgVGhpcyB3aWxsIGFsbG93CiAgICAgICAgICAgICMgYSBjbG9zaW5nIHRva2VuIHRvIGxpbmUgdXAgd2l0aCBpdHMgb3BlbmluZyBjb3VudGVycGFydCwgYW5kCiAgICAgICAgICAgICMgYXZvaWRzIGFuIGluZGVudGF0aW9uIGp1bXAgbGFyZ2VyIHRoYW4gMSBsZXZlbC4KICAgICAgICAgICAgaWYgKCAgICR0eXBlc190b19nb1skaV90ZXJtaW5hbF0gPX4gL15bXH1cXVwpUl0kLwogICAgICAgICAgICAgICAgJiYgJGlfdGVybWluYWwgPT0gJGliZWcKICAgICAgICAgICAgICAgICYmIGRlZmluZWQoJEtfYmVnKSApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG15ICRLX25leHRfbm9uYmxhbmsgPSAkc2VsZi0+S19uZXh0X2NvZGUoJEtfYmVnKTsKCiAgICAgICAgICAgICAgICAjIFBhdGNoIGZvciBSVCMxMzExMTU6IGhvbm9yIC1ibGkgZmxhZyBhdCBjbG9zaW5nIGJyYWNlCiAgICAgICAgICAgICAgICBteSAkaXNfYmxpID0KICAgICAgICAgICAgICAgICAgICAgJHJPcHRzX2JyYWNlX2xlZnRfYW5kX2luZGVudAogICAgICAgICAgICAgICAgICAmJiAkYmxvY2tfdHlwZV90b19nb1skaV90ZXJtaW5hbF0KICAgICAgICAgICAgICAgICAgJiYgJGJsb2NrX3R5cGVfdG9fZ29bJGlfdGVybWluYWxdID1+IC8kYmxpX3BhdHRlcm4vbzsKCiAgICAgICAgICAgICAgICBpZiAoICEkaXNfYmxpICYmIGRlZmluZWQoJEtfbmV4dF9ub25ibGFuaykgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJGxldiAgICAgICAgPSAkckxMLT5bJEtfYmVnXS0+W19MRVZFTF9dOwogICAgICAgICAgICAgICAgICAgIG15ICRsZXZlbF9uZXh0ID0gJHJMTC0+WyRLX25leHRfbm9uYmxhbmtdLT5bX0xFVkVMX107CiAgICAgICAgICAgICAgICAgICAgJGFkanVzdF9pbmRlbnRhdGlvbiA9IDEgaWYgKCAkbGV2ZWxfbmV4dCA8ICRsZXYgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIFBhdGNoIGZvciBSVCAjOTYxMDEsIGluIHdoaWNoIGNsb3NpbmcgYnJhY2Ugb2YgYW5vbnltb3VzIHN1YnMKICAgICAgICAgICAgICAgICMgd2FzIG5vdCBvdXRkZW50ZWQuICBXZSBzaG91bGQgbG9vayBhaGVhZCBhbmQgc2VlIGlmIHRoZXJlIGlzCiAgICAgICAgICAgICAgICAjIGEgbGV2ZWwgZGVjcmVhc2UgYXQgdGhlIG5leHQgdG9rZW4gKGkuZS4sIGEgY2xvc2luZyB0b2tlbiksCiAgICAgICAgICAgICAgICAjIGJ1dCByaWdodCBub3cgd2UgZG8gbm90IGhhdmUgdGhhdCBpbmZvcm1hdGlvbi4gIEZvciBub3cKICAgICAgICAgICAgICAgICMgd2Ugc2VlIGlmIHdlIGFyZSBpbiBhIGxpc3QsIGFuZCB0aGlzIHdvcmtzIHdlbGwuCiAgICAgICAgICAgICAgICAjIFNlZSB0ZXN0IGZpbGVzICdzdWIqLnQnIGZvciBnb29kIHRlc3QgY2FzZXMuCiAgICAgICAgICAgICAgICBpZiAoICAgJGJsb2NrX3R5cGVfdG9fZ29bJGliZWddID1+IC8kQVNVQl9QQVRURVJOLwogICAgICAgICAgICAgICAgICAgICYmICRjb250YWluZXJfZW52aXJvbm1lbnRfdG9fZ29bJGlfdGVybWluYWxdIGVxICdMSVNUJwogICAgICAgICAgICAgICAgICAgICYmICEkck9wdHMtPnsnaW5kZW50LWNsb3NpbmctYnJhY2UnfSApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICAgICAkb3BlbmluZ19pbmRlbnRhdGlvbiwgJG9wZW5pbmdfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAkaXNfbGVhZGluZywgICAgICAgICAgJG9wZW5pbmdfZXhpc3RzCiAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICA9IGdldF9vcGVuaW5nX2luZGVudGF0aW9uKCAkaWJlZywgJHJpX2ZpcnN0LCAkcmlfbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgJHJpbmRlbnRhdGlvbl9saXN0ICk7CiAgICAgICAgICAgICAgICAgICAgbXkgJGluZGVudGF0aW9uID0gJGxlYWRpbmdfc3BhY2VzX3RvX2dvWyRpYmVnXTsKICAgICAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQoJG9wZW5pbmdfaW5kZW50YXRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgICYmIGdldF9zcGFjZXMoJGluZGVudGF0aW9uKSA+CiAgICAgICAgICAgICAgICAgICAgICAgIGdldF9zcGFjZXMoJG9wZW5pbmdfaW5kZW50YXRpb24pICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRhZGp1c3RfaW5kZW50YXRpb24gPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBZVkVTIHBhdGNoIDEgb2YgMjoKICAgICAgICAgICAgIyBVbmRvIGNpIG9mIGxpbmUgd2l0aCBsZWFkaW5nIGNsb3NpbmcgZXZhbCBicmFjZSwKICAgICAgICAgICAgIyBidXQgbm90IGJleW9uZCB0aGUgaW5kZW50aW9uIG9mIHRoZSBsaW5lIHdpdGgKICAgICAgICAgICAgIyB0aGUgb3BlbmluZyBicmFjZS4KICAgICAgICAgICAgaWYgKCAgICRibG9ja190eXBlX3RvX2dvWyRpYmVnXSBlcSAnZXZhbCcKICAgICAgICAgICAgICAgICYmICEkck9wdHMtPnsnbGluZS11cC1wYXJlbnRoZXNlcyd9CiAgICAgICAgICAgICAgICAmJiAhJHJPcHRzLT57J2luZGVudC1jbG9zaW5nLWJyYWNlJ30gKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgJG9wZW5pbmdfaW5kZW50YXRpb24sICRvcGVuaW5nX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAkaXNfbGVhZGluZywgICAgICAgICAgJG9wZW5pbmdfZXhpc3RzCiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgPSBnZXRfb3BlbmluZ19pbmRlbnRhdGlvbiggJGliZWcsICRyaV9maXJzdCwgJHJpX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgJHJpbmRlbnRhdGlvbl9saXN0ICk7CiAgICAgICAgICAgICAgICBteSAkaW5kZW50YXRpb24gPSAkbGVhZGluZ19zcGFjZXNfdG9fZ29bJGliZWddOwogICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCRvcGVuaW5nX2luZGVudGF0aW9uKQogICAgICAgICAgICAgICAgICAgICYmIGdldF9zcGFjZXMoJGluZGVudGF0aW9uKSA+CiAgICAgICAgICAgICAgICAgICAgZ2V0X3NwYWNlcygkb3BlbmluZ19pbmRlbnRhdGlvbikgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRhZGp1c3RfaW5kZW50YXRpb24gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkZGVmYXVsdF9hZGp1c3RfaW5kZW50YXRpb24gPSAkYWRqdXN0X2luZGVudGF0aW9uOwoKICAgICAgICAgICAgIyBOb3cgbW9kaWZ5IGRlZmF1bHQgYmVoYXZpb3IgYWNjb3JkaW5nIHRvIHVzZXIgcmVxdWVzdDoKICAgICAgICAgICAgIyBoYW5kbGUgb3B0aW9uIHRvIGluZGVudCBub24tYmxvY2tzIG9mIHRoZSBmb3JtICk7ICB9OyAgXTsKICAgICAgICAgICAgIyBCdXQgZG9uJ3QgZG8gc3BlY2lhbCBpbmRlbnRhdGlvbiB0byBzb21ldGhpbmcgbGlrZSAnKS0+cGFjaygnCiAgICAgICAgICAgIGlmICggISRibG9ja190eXBlX3RvX2dvWyRpYmVnXSApIHsKICAgICAgICAgICAgICAgIG15ICRjdGkgPSAkY2xvc2luZ190b2tlbl9pbmRlbnRhdGlvbnsgJHRva2Vuc190b19nb1skaWJlZ10gfTsKICAgICAgICAgICAgICAgIGlmICggJGN0aSA9PSAxICkgewogICAgICAgICAgICAgICAgICAgIGlmICggICAkaV90ZXJtaW5hbCA8PSAkaWJlZyArIDEKICAgICAgICAgICAgICAgICAgICAgICAgfHwgJGlzX3NlbWljb2xvbl90ZXJtaW5hdGVkICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRhZGp1c3RfaW5kZW50YXRpb24gPSAyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGFkanVzdF9pbmRlbnRhdGlvbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkY3RpID09IDIgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRpc19zZW1pY29sb25fdGVybWluYXRlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAkYWRqdXN0X2luZGVudGF0aW9uID0gMzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRhZGp1c3RfaW5kZW50YXRpb24gPSAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJGN0aSA9PSAzICkgewogICAgICAgICAgICAgICAgICAgICRhZGp1c3RfaW5kZW50YXRpb24gPSAzOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGhhbmRsZSBvcHRpb24gdG8gaW5kZW50IGJsb2NrcwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkck9wdHMtPnsnaW5kZW50LWNsb3NpbmctYnJhY2UnfQogICAgICAgICAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICAgICAgICAgJGlfdGVybWluYWwgPT0gJGliZWcgICAgIyAgaXNvbGF0ZWQgdGVybWluYWwgJ30nCiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRpc19zZW1pY29sb25fdGVybWluYXRlZAogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgfSB4eHh4IDsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkYWRqdXN0X2luZGVudGF0aW9uID0gMzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBpZiBhdCAnKTsnLCAnfTsnLCAnPjsnLCBhbmQgJ107JyBvZiBhIHRlcm1pbmFsIHF3IHF1b3RlCiAgICAgICAgZWxzaWYgKCRycGF0dGVybnMtPlswXSA9fiAvXnFiKjskLwogICAgICAgICAgICAmJiAkcmZpZWxkcy0+WzBdID1+IC9eKFtcKVx9XF1cPl0pOyQvICkKICAgICAgICB7CiAgICAgICAgICAgIGlmICggJGNsb3NpbmdfdG9rZW5faW5kZW50YXRpb257JDF9ID09IDAgKSB7CiAgICAgICAgICAgICAgICAkYWRqdXN0X2luZGVudGF0aW9uID0gMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRhZGp1c3RfaW5kZW50YXRpb24gPSAzOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGlmIGxpbmUgYmVnaW5zIHdpdGggYSAnOicsIGFsaWduIGl0IHdpdGggYW55CiAgICAgICAgIyBwcmV2aW91cyBsaW5lIGxlYWRpbmcgd2l0aCBjb3JyZXNwb25kaW5nID8KICAgICAgICBlbHNpZiAoICR0eXBlc190b19nb1skaWJlZ10gZXEgJzonICkgewogICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAkb3BlbmluZ19pbmRlbnRhdGlvbiwgJG9wZW5pbmdfb2Zmc2V0LAogICAgICAgICAgICAgICAgJGlzX2xlYWRpbmcsICAgICAgICAgICRvcGVuaW5nX2V4aXN0cwogICAgICAgICAgICAgICkKICAgICAgICAgICAgICA9IGdldF9vcGVuaW5nX2luZGVudGF0aW9uKCAkaWJlZywgJHJpX2ZpcnN0LCAkcmlfbGFzdCwKICAgICAgICAgICAgICAgICRyaW5kZW50YXRpb25fbGlzdCApOwogICAgICAgICAgICBpZiAoJGlzX2xlYWRpbmcpIHsgJGFkanVzdF9pbmRlbnRhdGlvbiA9IDI7IH0KICAgICAgICB9CgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIFNlY3Rpb24gMjogc2V0IGluZGVudGF0aW9uIGFjY29yZGluZyB0byBmbGFnIHNldCBhYm92ZQogICAgICAgICMKICAgICAgICAjIFNlbGVjdCB0aGUgaW5kZW50YXRpb24gb2JqZWN0IHRvIGRlZmluZSBsZWFkaW5nCiAgICAgICAgIyB3aGl0ZXNwYWNlLiAgSWYgd2UgYXJlIG91dGRlbnRpbmcgc29tZXRoaW5nIGxpa2UgJ30gfSApOycKICAgICAgICAjIHRoZW4gd2Ugd2FudCB0byB1c2Ugb25lIGxldmVsIGJlbG93IHRoZSBsYXN0IHRva2VuCiAgICAgICAgIyAoJGlfdGVybWluYWwpIGluIG9yZGVyIHRvIGdldCBpdCB0byBmdWxseSBvdXRkZW50IHRocm91Z2gKICAgICAgICAjIGFsbCBsZXZlbHMuCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgIG15ICRpbmRlbnRhdGlvbjsKICAgICAgICBteSAkbGV2OwogICAgICAgIG15ICRsZXZlbF9lbmQgPSAkbGV2ZWxzX3RvX2dvWyRpZW5kXTsKCiAgICAgICAgaWYgKCAkYWRqdXN0X2luZGVudGF0aW9uID09IDAgKSB7CiAgICAgICAgICAgICRpbmRlbnRhdGlvbiA9ICRsZWFkaW5nX3NwYWNlc190b19nb1skaWJlZ107CiAgICAgICAgICAgICRsZXYgICAgICAgICA9ICRsZXZlbHNfdG9fZ29bJGliZWddOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRhZGp1c3RfaW5kZW50YXRpb24gPT0gMSApIHsKCiAgICAgICAgICAgICMgQ2hhbmdlIHRoZSBpbmRlbnRhdGlvbiB0byBiZSB0aGF0IG9mIGEgZGlmZmVyZW50IHRva2VuIG9uIHRoZSBsaW5lCiAgICAgICAgICAgICMgUHJldmlvdXNseSwgdGhlIGluZGVudGF0aW9uIG9mIHRoZSB0ZXJtaW5hbCB0b2tlbiB3YXMgdXNlZDoKICAgICAgICAgICAgIyBPTEQgQ09ESU5HOgogICAgICAgICAgICAjICRpbmRlbnRhdGlvbiA9ICRyZWR1Y2VkX3NwYWNlc190b19nb1skaV90ZXJtaW5hbF07CiAgICAgICAgICAgICMgJGxldiAgICAgICAgID0gJGxldmVsc190b19nb1skaV90ZXJtaW5hbF07CgogICAgICAgICAgICAjIEdlbmVyYWxpemF0aW9uIGZvciBNT0pPOgogICAgICAgICAgICAjIFVzZSB0aGUgbG93ZXN0IGxldmVsIGluZGVudGF0aW9uIG9mIHRoZSB0b2tlbnMgb24gdGhlIGxpbmUuCiAgICAgICAgICAgICMgRm9yIGV4YW1wbGUsIGhlcmUgd2UgY2FuIHVzZSB0aGUgaW5kZW50YXRpb24gb2YgdGhlIGVuZGluZyAnOyc6CiAgICAgICAgICAgICMgICAgfSB1bnRpbCAoJHNlbGVjdGlvbiA+IDAgYW5kICRzZWxlY3Rpb24gPCAxMCk7ICAgIyBvayB0byB1c2UgJzsnCiAgICAgICAgICAgICMgQnV0IHRoaXMgd2lsbCBub3Qgb3V0ZGVudCBpZiB3ZSB1c2UgdGhlIHRlcm1pbmFsIGluZGVudGF0aW9uOgogICAgICAgICAgICAjICAgICktPnRoZW4oIHN1YiB7ICAgICAgIyB1c2UgaW5kZW50YXRpb24gb2YgdGhlIC0+LCBub3QgdGhlIHsKICAgICAgICAgICAgIyBXYXJuaW5nOiByZWR1Y2VkX3NwYWNlc190b19nb1tdIG1heSBiZSBhIHJlZmVyZW5jZSwgZG8gbm90CiAgICAgICAgICAgICMgZG8gbnVtZXJpY2FsIGNoZWNrcyB3aXRoIGl0CgogICAgICAgICAgICBteSAkaV9pbmQgPSAkaWJlZzsKICAgICAgICAgICAgJGluZGVudGF0aW9uID0gJHJlZHVjZWRfc3BhY2VzX3RvX2dvWyRpX2luZF07CiAgICAgICAgICAgICRsZXYgICAgICAgICA9ICRsZXZlbHNfdG9fZ29bJGlfaW5kXTsKICAgICAgICAgICAgd2hpbGUgKCAkaV9pbmQgPCAkaV90ZXJtaW5hbCApIHsKICAgICAgICAgICAgICAgICRpX2luZCsrOwogICAgICAgICAgICAgICAgaWYgKCAkbGV2ZWxzX3RvX2dvWyRpX2luZF0gPCAkbGV2ICkgewogICAgICAgICAgICAgICAgICAgICRpbmRlbnRhdGlvbiA9ICRyZWR1Y2VkX3NwYWNlc190b19nb1skaV9pbmRdOwogICAgICAgICAgICAgICAgICAgICRsZXYgICAgICAgICA9ICRsZXZlbHNfdG9fZ29bJGlfaW5kXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBoYW5kbGUgaW5kZW50ZWQgY2xvc2luZyB0b2tlbiB3aGljaCBhbGlnbnMgd2l0aCBvcGVuaW5nIHRva2VuCiAgICAgICAgZWxzaWYgKCAkYWRqdXN0X2luZGVudGF0aW9uID09IDIgKSB7CgogICAgICAgICAgICAjIGhhbmRsZSBvcHRpb24gdG8gYWxpZ24gY2xvc2luZyB0b2tlbiB3aXRoIG9wZW5pbmcgdG9rZW4KICAgICAgICAgICAgJGxldiA9ICRsZXZlbHNfdG9fZ29bJGliZWddOwoKICAgICAgICAgICAgIyBjYWxjdWxhdGUgc3BhY2VzIG5lZWRlZCB0byBhbGlnbiB3aXRoIG9wZW5pbmcgdG9rZW4KICAgICAgICAgICAgbXkgJHNwYWNlX2NvdW50ID0KICAgICAgICAgICAgICBnZXRfc3BhY2VzKCRvcGVuaW5nX2luZGVudGF0aW9uKSArICRvcGVuaW5nX29mZnNldDsKCiAgICAgICAgICAgICMgSW5kZW50IGxlc3MgdGhhbiB0aGUgcHJldmlvdXMgbGluZS4KICAgICAgICAgICAgIwogICAgICAgICAgICAjIFByb2JsZW06IEZvciAtbHAgd2UgZG9uJ3QgZXhhY3RseSBrbm93IHdoYXQgaXQgd2FzIGlmIHRoZXJlCiAgICAgICAgICAgICMgd2VyZSByZWNvdmVyYWJsZSBzcGFjZXMgc2VudCB0byB0aGUgYWxpZ25lci4gIEEgZ29vZCBzb2x1dGlvbgogICAgICAgICAgICAjIHdvdWxkIGJlIHRvIGZvcmNlIGEgZmx1c2ggb2YgdGhlIHZlcnRpY2FsIGFsaWdubWVudCBidWZmZXIsIHNvCiAgICAgICAgICAgICMgdGhhdCB3ZSB3b3VsZCBrbm93LiAgRm9yIG5vdywgdGhpcyBydWxlIGlzIHVzZWQgZm9yIC1scDoKICAgICAgICAgICAgIwogICAgICAgICAgICAjIFdoZW4gdGhlIGxhc3QgbGluZSBkaWQgbm90IHN0YXJ0IHdpdGggYSBjbG9zaW5nIHRva2VuIHdlIHdpbGwKICAgICAgICAgICAgIyBiZSBvcHRpbWlzdGljIHRoYXQgdGhlIGFsaWduZXIgd2lsbCByZWNvdmVyIGV2ZXJ5dGhpbmcgd2FudGVkLgogICAgICAgICAgICAjCiAgICAgICAgICAgICMgVGhpcyBydWxlIHdpbGwgcHJldmVudCB1cyBmcm9tIGJyZWFraW5nIGEgaGllcmFyY2h5IG9mIGNsb3NpbmcKICAgICAgICAgICAgIyB0b2tlbnMsIGFuZCBpbiBhIHdvcnN0IGNhc2Ugd2lsbCBsZWF2ZSBhIGNsb3NpbmcgcGFyZW4gdG9vIGZhcgogICAgICAgICAgICAjIGluZGVudGVkLCBidXQgdGhpcyBpcyBiZXR0ZXIgdGhhbiBmcmVxdWVudGx5IGxlYXZpbmcgaXQgbm90CiAgICAgICAgICAgICMgaW5kZW50ZWQgZW5vdWdoLgogICAgICAgICAgICBteSAkbGFzdF9zcGFjZXMgPSBnZXRfc3BhY2VzKCRsYXN0X2luZGVudGF0aW9uX3dyaXR0ZW4pOwogICAgICAgICAgICBpZiAoICRsYXN0X2xlYWRpbmdfdG9rZW4gIX4gL15bXH1cXVwpXSQvICkgewogICAgICAgICAgICAgICAgJGxhc3Rfc3BhY2VzICs9CiAgICAgICAgICAgICAgICAgIGdldF9yZWNvdmVyYWJsZV9zcGFjZXMoJGxhc3RfaW5kZW50YXRpb25fd3JpdHRlbik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmVzZXQgdGhlIGluZGVudGF0aW9uIHRvIHRoZSBuZXcgc3BhY2UgY291bnQgaWYgaXQgd29ya3MKICAgICAgICAgICAgIyBvbmx5IG9wdGlvbnMgYXJlIGFsbCBvciBub25lOiBub3RoaW5nIGluLWJldHdlZW4gbG9va3MgZ29vZAogICAgICAgICAgICAkbGV2ID0gJGxldmVsc190b19nb1skaWJlZ107CiAgICAgICAgICAgIGlmICggJHNwYWNlX2NvdW50IDwgJGxhc3Rfc3BhY2VzICkgewogICAgICAgICAgICAgICAgaWYgKCRyT3B0c19saW5lX3VwX3BhcmVudGhlc2VzKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJGxldiA9ICRsZXZlbHNfdG9fZ29bJGliZWddOwogICAgICAgICAgICAgICAgICAgICRpbmRlbnRhdGlvbiA9CiAgICAgICAgICAgICAgICAgICAgICBuZXdfbHBfaW5kZW50YXRpb25faXRlbSggJHNwYWNlX2NvdW50LCAkbGV2LCAwLCAwLCAwICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkaW5kZW50YXRpb24gPSAkc3BhY2VfY291bnQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmV2ZXJ0IHRvIGRlZmF1bHQgaWYgaXQgZG9lc24ndCB3b3JrCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJHNwYWNlX2NvdW50ID0gbGVhZGluZ19zcGFjZXNfdG9fZ28oJGliZWcpOwogICAgICAgICAgICAgICAgaWYgKCAkZGVmYXVsdF9hZGp1c3RfaW5kZW50YXRpb24gPT0gMCApIHsKICAgICAgICAgICAgICAgICAgICAkaW5kZW50YXRpb24gPSAkbGVhZGluZ19zcGFjZXNfdG9fZ29bJGliZWddOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkZGVmYXVsdF9hZGp1c3RfaW5kZW50YXRpb24gPT0gMSApIHsKICAgICAgICAgICAgICAgICAgICAkaW5kZW50YXRpb24gPSAkcmVkdWNlZF9zcGFjZXNfdG9fZ29bJGlfdGVybWluYWxdOwogICAgICAgICAgICAgICAgICAgICRsZXYgICAgICAgICA9ICRsZXZlbHNfdG9fZ29bJGlfdGVybWluYWxdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIEZ1bGwgaW5kZW50YWlvbiBvZiBjbG9zaW5nIHRva2VucyAoLWljYiBhbmQgLWljcCBvciAtY3RpPTIpCiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIGhhbmRsZSAtaWNiIChpbmRlbnRlZCBjbG9zaW5nIGNvZGUgYmxvY2sgYnJhY2VzKQogICAgICAgICAgICAjIFVwZGF0ZWQgbWV0aG9kIGZvciBpbmRlbnRlZCBibG9jayBicmFjZXM6IGluZGVudCBvbmUgZnVsbCBsZXZlbCBpZgogICAgICAgICAgICAjIHRoZXJlIGlzIG5vIGNvbnRpbnVhdGlvbiBpbmRlbnRhdGlvbi4gIFRoaXMgd2lsbCBvY2N1ciBmb3IgbWFqb3IKICAgICAgICAgICAgIyBzdHJ1Y3R1cmVzIHN1Y2ggYXMgc3ViLCBpZiwgZWxzZSwgYnV0IG5vdCBmb3IgdGhpbmdzIGxpa2UgbWFwCiAgICAgICAgICAgICMgYmxvY2tzLgogICAgICAgICAgICAjCiAgICAgICAgICAgICMgTm90ZTogb25seSBjb2RlIGJsb2NrcyB3aXRob3V0IGNvbnRpbnVhdGlvbiBpbmRlbnRhdGlvbiBhcmUKICAgICAgICAgICAgIyBoYW5kbGVkIGhlcmUgKGlmLCBlbHNlLCB1bmxlc3MsIC4uKS4gSW4gdGhlIGZvbGxvd2luZyBzbmlwcGV0LAogICAgICAgICAgICAjIHRoZSB0ZXJtaW5hbCBicmFjZSBvZiB0aGUgc29ydCBibG9jayB3aWxsIGhhdmUgY29udGludWF0aW9uCiAgICAgICAgICAgICMgaW5kZW50YXRpb24gYXMgc2hvd24gc28gaXQgd2lsbCBub3QgYmUgaGFuZGxlZCBieSB0aGUgY29kaW5nCiAgICAgICAgICAgICMgaGVyZS4gIFdlIHdvdWxkIGhhdmUgdG8gdW5kbyB0aGUgY29udGludWF0aW9uIGluZGVudGF0aW9uIHRvIGRvCiAgICAgICAgICAgICMgdGhpcywgYnV0IGl0IHByb2JhYmx5IGxvb2tzIG9rIGFzIGlzLiAgVGhpcyBpcyBhIHBvc3NpYmxlIGZ1dHVyZQogICAgICAgICAgICAjIHVwZGF0ZSBmb3Igc2VtaWNvbG9uIHRlcm1pbmF0ZWQgbGluZXMuCiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgICAgaWYgKCRzb3J0YnkgZXEgJ2RhdGUnIG9yICRzb3J0YnkgZXEgJ3NpemUnKSB7CiAgICAgICAgICAgICMgICAgICAgICBAZmlsZXMgPSBzb3J0IHsKICAgICAgICAgICAgIyAgICAgICAgICAgICAkZmlsZV9kYXRheyRhfXskc29ydGJ5fSA8PT4gJGZpbGVfZGF0YXskYn17JHNvcnRieX0KICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgb3IgJGEgY21wICRiCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgIH0gQGZpbGVzOwogICAgICAgICAgICAjICAgICAgICAgfQogICAgICAgICAgICAjCiAgICAgICAgICAgIGlmICggICAkYmxvY2tfdHlwZV90b19nb1skaWJlZ10KICAgICAgICAgICAgICAgICYmICRjaV9sZXZlbHNfdG9fZ29bJGlfdGVybWluYWxdID09IDAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBteSAkc3BhY2VzID0gZ2V0X3NwYWNlcyggJGxlYWRpbmdfc3BhY2VzX3RvX2dvWyRpX3Rlcm1pbmFsXSApOwogICAgICAgICAgICAgICAgJGluZGVudGF0aW9uID0gJHNwYWNlcyArICRyT3B0c19pbmRlbnRfY29sdW1uczsKCiAgICAgICAgICAgICAgICAjIE5PVEU6IGZvciAtbHAgd2UgY291bGQgY3JlYXRlIGEgbmV3IGluZGVudGF0aW9uIG9iamVjdCwgYnV0CiAgICAgICAgICAgICAgICAjIHRoZXJlIGlzIHByb2JhYmx5IG5vIG5lZWQgdG8gZG8gaXQKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBoYW5kbGUgLWljcCBhbmQgYW55IC1pY2IgYmxvY2sgYnJhY2VzIHdoaWNoIGZhbGwgdGhyb3VnaCBhYm92ZQogICAgICAgICAgICAjIHRlc3Qgc3VjaCBhcyB0aGUgJ3NvcnQnIGJsb2NrIG1lbnRpb25lZCBhYm92ZS4KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBUaGVyZSBhcmUgY3VycmVudGx5IHR3byB3YXlzIHRvIGhhbmRsZSAtaWNwLi4uCiAgICAgICAgICAgICAgICAjIE9uZSB3YXkgaXMgdG8gdXNlIHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgcHJldmlvdXMgbGluZToKICAgICAgICAgICAgICAgICMgJGluZGVudGF0aW9uID0gJGxhc3RfaW5kZW50YXRpb25fd3JpdHRlbjsKCiAgICAgICAgICAgICAgICAjIFRoZSBvdGhlciB3YXkgaXMgdG8gdXNlIHRoZSBpbmRlbnRhdGlvbiB0aGF0IHRoZSBwcmV2aW91cyBsaW5lCiAgICAgICAgICAgICAgICAjIHdvdWxkIGhhdmUgaGFkIGlmIGl0IGhhZG4ndCBiZWVuIGFkanVzdGVkOgogICAgICAgICAgICAgICAgJGluZGVudGF0aW9uID0gJGxhc3RfdW5hZGp1c3RlZF9pbmRlbnRhdGlvbjsKCiAgICAgICAgICAgICAgICAjIEN1cnJlbnQgbWV0aG9kOiB1c2UgdGhlIG1pbmltdW0gb2YgdGhlIHR3by4gVGhpcyBhdm9pZHMKICAgICAgICAgICAgICAgICMgaW5jb25zaXN0ZW50IGluZGVudGF0aW9uLgogICAgICAgICAgICAgICAgaWYgKCBnZXRfc3BhY2VzKCRsYXN0X2luZGVudGF0aW9uX3dyaXR0ZW4pIDwKICAgICAgICAgICAgICAgICAgICBnZXRfc3BhY2VzKCRpbmRlbnRhdGlvbikgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRpbmRlbnRhdGlvbiA9ICRsYXN0X2luZGVudGF0aW9uX3dyaXR0ZW47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgdXNlIHByZXZpb3VzIGluZGVudGF0aW9uIGJ1dCB1c2Ugb3duIGxldmVsCiAgICAgICAgICAgICMgdG8gY2F1c2UgbGlzdCB0byBiZSBmbHVzaGVkIHByb3Blcmx5CiAgICAgICAgICAgICRsZXYgPSAkbGV2ZWxzX3RvX2dvWyRpYmVnXTsKICAgICAgICB9CgogICAgICAgICMgcmVtZW1iZXIgaW5kZW50YXRpb24gZXhjZXB0IGZvciBtdWx0aS1saW5lIHF1b3Rlcywgd2hpY2ggZ2V0CiAgICAgICAgIyBubyBpbmRlbnRhdGlvbgogICAgICAgIHVubGVzcyAoICRpYmVnID09IDAgJiYgJHN0YXJ0aW5nX2luX3F1b3RlICkgewogICAgICAgICAgICAkbGFzdF9pbmRlbnRhdGlvbl93cml0dGVuICAgID0gJGluZGVudGF0aW9uOwogICAgICAgICAgICAkbGFzdF91bmFkanVzdGVkX2luZGVudGF0aW9uID0gJGxlYWRpbmdfc3BhY2VzX3RvX2dvWyRpYmVnXTsKICAgICAgICAgICAgJGxhc3RfbGVhZGluZ190b2tlbiAgICAgICAgICA9ICR0b2tlbnNfdG9fZ29bJGliZWddOwogICAgICAgIH0KCiAgICAgICAgIyBiZSBzdXJlIGxpbmVzIHdpdGggbGVhZGluZyBjbG9zaW5nIHRva2VucyBhcmUgbm90IG91dGRlbnRlZCBtb3JlCiAgICAgICAgIyB0aGFuIHRoZSBsaW5lIHdoaWNoIGNvbnRhaW5lZCB0aGUgY29ycmVzcG9uZGluZyBvcGVuaW5nIHRva2VuLgoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyB1cGRhdGVkIHBlciBidWcgcmVwb3J0IGluIGFsZXhfYnVnLnBsOiB3ZSBtdXN0IG5vdAogICAgICAgICMgbWVzcyB3aXRoIHRoZSBpbmRlbnRhdGlvbiBvZiBjbG9zaW5nIGxvZ2ljYWwgYnJhY2VzIHNvCiAgICAgICAgIyB3ZSBtdXN0IHRyZWF0IHNvbWV0aGluZyBsaWtlICd9IGVsc2UgeycgYXMgaWYgaXQgd2VyZQogICAgICAgICMgYW4gaXNvbGF0ZWQgYnJhY2UgbXkgJGlzX2lzb2xhdGVkX2Jsb2NrX2JyYWNlID0gKAogICAgICAgICMgJGllbmQgPT0gJGliZWcgKSAmJiAkYmxvY2tfdHlwZV90b19nb1skaWJlZ107CiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgIG15ICRpc19pc29sYXRlZF9ibG9ja19icmFjZSA9ICRibG9ja190eXBlX3RvX2dvWyRpYmVnXQogICAgICAgICAgJiYgKCAkaWVuZCA9PSAkaWJlZwogICAgICAgICAgICB8fCAkaXNfaWZfZWxzaWZfZWxzZV91bmxlc3Nfd2hpbGVfdW50aWxfZm9yX2ZvcmVhY2h7CiAgICAgICAgICAgICAgICAkYmxvY2tfdHlwZV90b19nb1skaWJlZ10KICAgICAgICAgICAgfSApOwoKICAgICAgICAjIG9ubHkgZG8gdGhpcyBmb3IgYSAnOjsgd2hpY2ggaXMgYWxpZ25lZCB3aXRoIGl0cyBsZWFkaW5nICc/JwogICAgICAgIG15ICRpc191bmFsaWduZWRfY29sb24gPSAkdHlwZXNfdG9fZ29bJGliZWddIGVxICc6JyAmJiAhJGlzX2xlYWRpbmc7CgogICAgICAgIGlmICgKICAgICAgICAgICAgZGVmaW5lZCgkb3BlbmluZ19pbmRlbnRhdGlvbikKICAgICAgICAgICAgJiYgISRsZWFkaW5nX3BhcmVuX2Fycm93ICAgICMgTU9KTwogICAgICAgICAgICAmJiAhJGlzX2lzb2xhdGVkX2Jsb2NrX2JyYWNlCiAgICAgICAgICAgICYmICEkaXNfdW5hbGlnbmVkX2NvbG9uCiAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBpZiAoIGdldF9zcGFjZXMoJG9wZW5pbmdfaW5kZW50YXRpb24pID4gZ2V0X3NwYWNlcygkaW5kZW50YXRpb24pICkgewogICAgICAgICAgICAgICAgJGluZGVudGF0aW9uID0gJG9wZW5pbmdfaW5kZW50YXRpb247CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgcmVtZW1iZXIgdGhlIGluZGVudGF0aW9uIG9mIGVhY2ggbGluZSBvZiB0aGlzIGJhdGNoCiAgICAgICAgcHVzaCBAeyRyaW5kZW50YXRpb25fbGlzdH0sICRpbmRlbnRhdGlvbjsKCiAgICAgICAgIyBvdXRkZW50IGxpbmVzIHdpdGggY2VydGFpbiBsZWFkaW5nIHRva2Vucy4uLgogICAgICAgIGlmICgKCiAgICAgICAgICAgICMgbXVzdCBiZSBmaXJzdCB3b3JkIG9mIHRoaXMgYmF0Y2gKICAgICAgICAgICAgJGliZWcgPT0gMAoKICAgICAgICAgICAgIyBhbmQgLi4uCiAgICAgICAgICAgICYmICgKCiAgICAgICAgICAgICAgICAjIGNlcnRhaW4gbGVhZGluZyBrZXl3b3JkcyBpZiByZXF1ZXN0ZWQKICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAkck9wdHMtPnsnb3V0ZGVudC1rZXl3b3Jkcyd9CiAgICAgICAgICAgICAgICAgICAgJiYgJHR5cGVzX3RvX2dvWyRpYmVnXSBlcSAnaycKICAgICAgICAgICAgICAgICAgICAmJiAkb3V0ZGVudF9rZXl3b3JkeyAkdG9rZW5zX3RvX2dvWyRpYmVnXSB9CiAgICAgICAgICAgICAgICApCgogICAgICAgICAgICAgICAgIyBvciBsYWJlbHMgaWYgcmVxdWVzdGVkCiAgICAgICAgICAgICAgICB8fCAoICRyT3B0cy0+eydvdXRkZW50LWxhYmVscyd9ICYmICR0eXBlc190b19nb1skaWJlZ10gZXEgJ0onICkKCiAgICAgICAgICAgICAgICAjIG9yIHN0YXRpYyBibG9jayBjb21tZW50cyBpZiByZXF1ZXN0ZWQKICAgICAgICAgICAgICAgIHx8ICggICAkdHlwZXNfdG9fZ29bJGliZWddIGVxICcjJwogICAgICAgICAgICAgICAgICAgICYmICRyT3B0cy0+eydvdXRkZW50LXN0YXRpYy1ibG9jay1jb21tZW50cyd9CiAgICAgICAgICAgICAgICAgICAgJiYgJGlzX3N0YXRpY19ibG9ja19jb21tZW50ICkKICAgICAgICAgICAgKQogICAgICAgICAgKQoKICAgICAgICB7CiAgICAgICAgICAgIG15ICRzcGFjZV9jb3VudCA9IGxlYWRpbmdfc3BhY2VzX3RvX2dvKCRpYmVnKTsKICAgICAgICAgICAgaWYgKCAkc3BhY2VfY291bnQgPiAwICkgewogICAgICAgICAgICAgICAgJHNwYWNlX2NvdW50IC09ICRyT3B0c19jb250aW51YXRpb25faW5kZW50YXRpb247CiAgICAgICAgICAgICAgICAkaXNfb3V0ZGVudGVkX2xpbmUgPSAxOwogICAgICAgICAgICAgICAgaWYgKCAkc3BhY2VfY291bnQgPCAwICkgeyAkc3BhY2VfY291bnQgPSAwIH0KCiAgICAgICAgICAgICAgICAjIGRvIG5vdCBwcm9tb3RlIGEgc3BhY2VkIHN0YXRpYyBibG9jayBjb21tZW50IHRvIG5vbi1zcGFjZWQ7CiAgICAgICAgICAgICAgICAjIHRoaXMgaXMgbm90IG5vcm1hbGx5IG5lY2Vzc2FyeSBidXQgY291bGQgYmUgZm9yIHNvbWUKICAgICAgICAgICAgICAgICMgdW51c3VhbCB1c2VyIGlucHV0cyAoc3VjaCBhcyAtY2kgPSAtaSkKICAgICAgICAgICAgICAgIGlmICggJHR5cGVzX3RvX2dvWyRpYmVnXSBlcSAnIycgJiYgJHNwYWNlX2NvdW50ID09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgJHNwYWNlX2NvdW50ID0gMTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJHJPcHRzX2xpbmVfdXBfcGFyZW50aGVzZXMpIHsKICAgICAgICAgICAgICAgICAgICAkaW5kZW50YXRpb24gPQogICAgICAgICAgICAgICAgICAgICAgbmV3X2xwX2luZGVudGF0aW9uX2l0ZW0oICRzcGFjZV9jb3VudCwgJGxldiwgMCwgMCwgMCApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGluZGVudGF0aW9uID0gJHNwYWNlX2NvdW50OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gKCAkaW5kZW50YXRpb24sICRsZXYsICRsZXZlbF9lbmQsICR0ZXJtaW5hbF90eXBlLAogICAgICAgICAgICAkaXNfc2VtaWNvbG9uX3Rlcm1pbmF0ZWQsICRpc19vdXRkZW50ZWRfbGluZSApOwogICAgfQp9CgpzdWIgc2V0X3ZlcnRpY2FsX3RpZ2h0bmVzc19mbGFncyB7CgogICAgbXkgKCAkbiwgJG5fbGFzdF9saW5lLCAkaWJlZywgJGllbmQsICRyaV9maXJzdCwgJHJpX2xhc3QgKSA9IEBfOwoKICAgICMgRGVmaW5lIHZlcnRpY2FsIHRpZ2h0bmVzcyBjb250cm9scyBmb3IgdGhlIG50aCBsaW5lIG9mIGEgYmF0Y2guCiAgICAjIFdlIGNyZWF0ZSBhbiBhcnJheSBvZiBwYXJhbWV0ZXJzIHdoaWNoIHRlbGwgdGhlIHZlcnRpY2FsIGFsaWduZXIKICAgICMgaWYgd2Ugc2hvdWxkIGNvbWJpbmUgdGhpcyBsaW5lIHdpdGggdGhlIG5leHQgbGluZSB0byBhY2hpZXZlIHRoZQogICAgIyBkZXNpcmVkIHZlcnRpY2FsIHRpZ2h0bmVzcy4gIFRoZSBhcnJheSBvZiBwYXJhbWV0ZXJzIGNvbnRhaW5zOgogICAgIwogICAgIyAgIFswXSB0eXBlOiAxPW9wZW5pbmcgbm9uLWJsb2NrICAgIDI9Y2xvc2luZyBub24tYmxvY2sKICAgICMgICAgICAgICAgICAgMz1vcGVuaW5nIGJsb2NrIGJyYWNlICA0PWNsb3NpbmcgYmxvY2sgYnJhY2UKICAgICMKICAgICMgICBbMV0gZmxhZzogaWYgb3BlbmluZzogMT1ubyBtdWx0aXBsZSBzdGVwcywgMj1tdWx0aXBsZSBzdGVwcyBvawogICAgIyAgICAgICAgICAgICBpZiBjbG9zaW5nOiBzcGFjZXMgb2YgcGFkZGluZyB0byB1c2UKICAgICMgICBbMl0gc2VxdWVuY2UgbnVtYmVyIG9mIGNvbnRhaW5lcgogICAgIyAgIFszXSB2YWxpZCBmbGFnOiBkbyBub3QgYXBwZW5kIGlmIHRoaXMgZmxhZyBpcyBmYWxzZS4gV2lsbCBiZQogICAgIyAgICAgICB0cnVlIGlmIGFwcHJvcHJpYXRlIC12dCBmbGFnIGlzIHNldC4gIE90aGVyd2lzZSwgV2lsbCBiZQogICAgIyAgICAgICBtYWRlIHRydWUgb25seSBmb3IgMiBsaW5lIGNvbnRhaW5lciBpbiBwYXJlbnMgd2l0aCAtbHAKICAgICMKICAgICMgVGhlc2UgZmxhZ3MgYXJlIHVzZWQgYnkgc3ViIHNldF9sZWFkaW5nX3doaXRlc3BhY2UgaW4KICAgICMgdGhlIHZlcnRpY2FsIGFsaWduZXIKCiAgICBteSAkcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFncyA9IFsgMCwgMCwgMCwgMCwgMCwgMCBdOwoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyBWZXJ0aWNhbCBUaWdodG5lc3MgRmxhZ3MgU2VjdGlvbiAxOgogICAgIyBIYW5kbGUgTGluZXMgMSAuLiBuLTEgYnV0IG5vdCB0aGUgbGFzdCBsaW5lCiAgICAjIEZvciBub24tQkxPQ0sgdG9rZW5zLCB3ZSB3aWxsIG5lZWQgdG8gZXhhbWluZSB0aGUgbmV4dCBsaW5lCiAgICAjIHRvbywgc28gd2Ugd29uJ3QgY29uc2lkZXIgdGhlIGxhc3QgbGluZS4KICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgaWYgKCAkbiA8ICRuX2xhc3RfbGluZSApIHsKCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBWZXJ0aWNhbCBUaWdodG5lc3MgRmxhZ3MgU2VjdGlvbiAxYToKICAgICAgICAjIExvb2sgZm9yIFR5cGUgMSwgbGFzdCB0b2tlbiBvZiB0aGlzIGxpbmUgaXMgYSBub24tYmxvY2sgb3BlbmluZyB0b2tlbgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgIG15ICRpYmVnX25leHQgPSAkcmlfZmlyc3QtPlsgJG4gKyAxIF07CiAgICAgICAgbXkgJHRva2VuX2VuZCA9ICR0b2tlbnNfdG9fZ29bJGllbmRdOwogICAgICAgIG15ICRpZW5kX25leHQgPSAkcmlfbGFzdC0+WyAkbiArIDEgXTsKICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICR0eXBlX3NlcXVlbmNlX3RvX2dvWyRpZW5kXQogICAgICAgICAgICAmJiAhJGJsb2NrX3R5cGVfdG9fZ29bJGllbmRdCiAgICAgICAgICAgICYmICRpc19vcGVuaW5nX3Rva2VueyR0b2tlbl9lbmR9CiAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICRvcGVuaW5nX3ZlcnRpY2FsX3RpZ2h0bmVzc3skdG9rZW5fZW5kfSA+IDAKCiAgICAgICAgICAgICAgICAjIGFsbG93IDItbGluZSBtZXRob2QgY2FsbCB0byBiZSBjbG9zZWQgdXAKICAgICAgICAgICAgICAgIHx8ICggICAkck9wdHNfbGluZV91cF9wYXJlbnRoZXNlcwogICAgICAgICAgICAgICAgICAgICYmICR0b2tlbl9lbmQgZXEgJygnCiAgICAgICAgICAgICAgICAgICAgJiYgJGllbmQgPiAkaWJlZwogICAgICAgICAgICAgICAgICAgICYmICR0eXBlc190b19nb1sgJGllbmQgLSAxIF0gbmUgJ2InICkKICAgICAgICAgICAgKQogICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgICMgYXZvaWQgbXVsdGlwbGUganVtcHMgaW4gbmVzdGluZyBkZXB0aCBpbiBvbmUgbGluZSBpZgogICAgICAgICAgICAjIHJlcXVlc3RlZAogICAgICAgICAgICBteSAkb3Z0ICAgICAgID0gJG9wZW5pbmdfdmVydGljYWxfdGlnaHRuZXNzeyR0b2tlbl9lbmR9OwogICAgICAgICAgICBteSAkaWVuZF9uZXh0ID0gJHJpX2xhc3QtPlsgJG4gKyAxIF07CiAgICAgICAgICAgIHVubGVzcyAoCiAgICAgICAgICAgICAgICAkb3Z0IDwgMgogICAgICAgICAgICAgICAgJiYgKCAkbmVzdGluZ19kZXB0aF90b19nb1sgJGllbmRfbmV4dCArIDEgXSAhPQogICAgICAgICAgICAgICAgICAgICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpYmVnX25leHRdICkKICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAjIElmIC12dCBmbGFnIGhhcyBub3QgYmVlbiBzZXQsIG1hcmsgdGhpcyBhcyBpbnZhbGlkCiAgICAgICAgICAgICAgICAjIGFuZCBhbGlnbmVyIHdpbGwgdmFsaWRhdGUgaXQgaWYgaXQgc2VlcyB0aGUgY2xvc2luZyBwYXJlbgogICAgICAgICAgICAgICAgIyB3aXRoaW4gMiBsaW5lcy4KICAgICAgICAgICAgICAgIG15ICR2YWxpZF9mbGFnID0gJG92dDsKICAgICAgICAgICAgICAgIEB7JHJ2ZXJ0aWNhbF90aWdodG5lc3NfZmxhZ3N9ID0KICAgICAgICAgICAgICAgICAgKCAxLCAkb3Z0LCAkdHlwZV9zZXF1ZW5jZV90b19nb1skaWVuZF0sICR2YWxpZF9mbGFnICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgVmVydGljYWwgVGlnaHRuZXNzIEZsYWdzIFNlY3Rpb24gMWI6CiAgICAgICAgIyBMb29rIGZvciBUeXBlIDIsIGZpcnN0IHRva2VuIG9mIG5leHQgbGluZSBpcyBhIG5vbi1ibG9jayBjbG9zaW5nCiAgICAgICAgIyB0b2tlbiAuLiBhbmQgYmUgc3VyZSB0aGlzIGxpbmUgZG9lcyBub3QgaGF2ZSBhIHNpZGUgY29tbWVudAogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgIG15ICR0b2tlbl9uZXh0ID0gJHRva2Vuc190b19nb1skaWJlZ19uZXh0XTsKICAgICAgICBpZiAoICAgJHR5cGVfc2VxdWVuY2VfdG9fZ29bJGliZWdfbmV4dF0KICAgICAgICAgICAgJiYgISRibG9ja190eXBlX3RvX2dvWyRpYmVnX25leHRdCiAgICAgICAgICAgICYmICRpc19jbG9zaW5nX3Rva2VueyR0b2tlbl9uZXh0fQogICAgICAgICAgICAmJiAkdHlwZXNfdG9fZ29bJGllbmRdICF+ICcjJyApICAgICMgZm9yIHNhZmV0eSwgc2hvdWxkbid0IGhhcHBlbiEKICAgICAgICB7CiAgICAgICAgICAgIG15ICRvdnQgPSAkb3BlbmluZ192ZXJ0aWNhbF90aWdodG5lc3N7JHRva2VuX25leHR9OwogICAgICAgICAgICBteSAkY3Z0ID0gJGNsb3NpbmdfdmVydGljYWxfdGlnaHRuZXNzeyR0b2tlbl9uZXh0fTsKICAgICAgICAgICAgaWYgKAoKICAgICAgICAgICAgICAgICMgbmV2ZXIgYXBwZW5kIGEgdHJhaWxpbmcgbGluZSBsaWtlICAgKS0+cGFjaygKICAgICAgICAgICAgICAgICMgYmVjYXVzZSBpdCB3aWxsIHRocm93IG9mZiBsYXRlciBhbGlnbm1lbnQKICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAkbmVzdGluZ19kZXB0aF90b19nb1skaWJlZ19uZXh0XSA9PQogICAgICAgICAgICAgICAgICAgICRuZXN0aW5nX2RlcHRoX3RvX2dvWyAkaWVuZF9uZXh0ICsgMSBdICsgMQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgJiYgKAogICAgICAgICAgICAgICAgICAgICRjdnQgPT0gMgogICAgICAgICAgICAgICAgICAgIHx8ICgKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lcl9lbnZpcm9ubWVudF90b19nb1skaWJlZ19uZXh0XSBuZSAnTElTVCcKICAgICAgICAgICAgICAgICAgICAgICAgJiYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGN2dCA9PSAxCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhbGxvdyBjbG9zaW5nIHVwIDItbGluZSBtZXRob2QgY2FsbHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICggICAkck9wdHNfbGluZV91cF9wYXJlbnRoZXNlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICR0b2tlbl9uZXh0IGVxICcpJyApCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgIyBkZWNpZGUgd2hpY2ggdHJhaWxpbmcgY2xvc2luZyB0b2tlbnMgdG8gYXBwZW5kLi4KICAgICAgICAgICAgICAgIG15ICRvayA9IDA7CiAgICAgICAgICAgICAgICBpZiAoICRjdnQgPT0gMiB8fCAkaWVuZF9uZXh0ID09ICRpYmVnX25leHQgKSB7ICRvayA9IDEgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJHN0ciA9IGpvaW4oICcnLAogICAgICAgICAgICAgICAgICAgICAgICBAdHlwZXNfdG9fZ29bICRpYmVnX25leHQgKyAxIC4uICRpYmVnX25leHQgKyAyIF0gKTsKCiAgICAgICAgICAgICAgICAgICAgIyBhcHBlbmQgY2xvc2luZyB0b2tlbiBpZiBmb2xsb3dlZCBieSBjb21tZW50IG9yICc7JwogICAgICAgICAgICAgICAgICAgIGlmICggJHN0ciA9fiAvXmI/WyM7XS8gKSB7ICRvayA9IDEgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkb2spIHsKICAgICAgICAgICAgICAgICAgICBteSAkdmFsaWRfZmxhZyA9ICRjdnQ7CiAgICAgICAgICAgICAgICAgICAgQHskcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFnc30gPSAoCiAgICAgICAgICAgICAgICAgICAgICAgIDIsCiAgICAgICAgICAgICAgICAgICAgICAgICR0aWdodG5lc3N7JHRva2VuX25leHR9ID09IDIgPyAwIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGVfc2VxdWVuY2VfdG9fZ29bJGliZWdfbmV4dF0sICR2YWxpZF9mbGFnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgVmVydGljYWwgVGlnaHRuZXNzIEZsYWdzIFNlY3Rpb24gMWM6CiAgICAgICAgIyBJbXBsZW1lbnQgdGhlIE9wZW5pbmcgVG9rZW4gUmlnaHQgZmxhZyAoVHlwZSAyKS4uCiAgICAgICAgIyBJZiByZXF1ZXN0ZWQsIG1vdmUgYW4gaXNvbGF0ZWQgdHJhaWxpbmcgb3BlbmluZyB0b2tlbiB0byB0aGUgZW5kIG9mCiAgICAgICAgIyB0aGUgcHJldmlvdXMgbGluZSB3aGljaCBlbmRlZCBpbiBhIGNvbW1hLiAgV2UgY291bGQgZG8gdGhpcwogICAgICAgICMgaW4gc3ViIHJlY29tYmluZV9icmVha3BvaW50cyBidXQgdGhhdCB3b3VsZCBjYXVzZSBwcm9ibGVtcwogICAgICAgICMgd2l0aCAtbHAgZm9ybWF0dGluZy4gIFRoZSBwcm9ibGVtIGlzIHRoYXQgaW5kZW50YXRpb24gd2lsbAogICAgICAgICMgcXVpY2tseSBtb3ZlIGZhciB0byB0aGUgcmlnaHQgaW4gbmVzdGVkIGV4cHJlc3Npb25zLiAgQnkKICAgICAgICAjIGRvaW5nIGl0IGFmdGVyIGluZGVudGF0aW9uIGhhcyBiZWVuIHNldCwgd2UgYXZvaWQgY2hhbmdlcwogICAgICAgICMgdG8gdGhlIGluZGVudGF0aW9uLiAgQWN0dWFsIG1vdmVtZW50IG9mIHRoZSB0b2tlbiB0YWtlcyBwbGFjZQogICAgICAgICMgaW4gc3ViIHZhbGlnbl9vdXRwdXRfc3RlcF9CLgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgIGlmICgKICAgICAgICAgICAgJG9wZW5pbmdfdG9rZW5fcmlnaHR7ICR0b2tlbnNfdG9fZ29bJGliZWdfbmV4dF0gfQoKICAgICAgICAgICAgIyBwcmV2aW91cyBsaW5lIGlzIG5vdCBvcGVuaW5nCiAgICAgICAgICAgICMgKHVzZSAtc290IHRvIGNvbWJpbmUgd2l0aCBpdCkKICAgICAgICAgICAgJiYgISRpc19vcGVuaW5nX3Rva2VueyR0b2tlbl9lbmR9CgogICAgICAgICAgICAjIHByZXZpb3VzIGxpbmUgZW5kZWQgaW4gb25lIG9mIHRoZXNlCiAgICAgICAgICAgICMgKGFkZCBvdGhlciBjYXNlcyBpZiBuZWNlc3Nhcnk7ICc9PicgYW5kICcuJyBhcmUgbm90IG5lY2Vzc2FyeQogICAgICAgICAgICAmJiAhJGJsb2NrX3R5cGVfdG9fZ29bJGliZWdfbmV4dF0KCiAgICAgICAgICAgICMgdGhpcyBpcyBhIGxpbmUgd2l0aCBqdXN0IGFuIG9wZW5pbmcgdG9rZW4KICAgICAgICAgICAgJiYgKCAgICRpZW5kX25leHQgPT0gJGliZWdfbmV4dAogICAgICAgICAgICAgICAgfHwgJGllbmRfbmV4dCA9PSAkaWJlZ19uZXh0ICsgMgogICAgICAgICAgICAgICAgJiYgJHR5cGVzX3RvX2dvWyRpZW5kX25leHRdIGVxICcjJyApCgogICAgICAgICAgICAjIGxvb2tzIGJhZCBpZiB3ZSBhbGlnbiB2ZXJ0aWNhbGx5IHdpdGggdGhlIHdyb25nIGNvbnRhaW5lcgogICAgICAgICAgICAmJiAkdG9rZW5zX3RvX2dvWyRpYmVnXSBuZSAkdG9rZW5zX3RvX2dvWyRpYmVnX25leHRdCiAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkdmFsaWRfZmxhZyA9IDE7CiAgICAgICAgICAgIG15ICRzcGFjZXMgICAgID0gKCAkdHlwZXNfdG9fZ29bICRpYmVnX25leHQgLSAxIF0gZXEgJ2InICkgPyAxIDogMDsKICAgICAgICAgICAgQHskcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFnc30gPQogICAgICAgICAgICAgICggMiwgJHNwYWNlcywgJHR5cGVfc2VxdWVuY2VfdG9fZ29bJGliZWdfbmV4dF0sICR2YWxpZF9mbGFnLCApOwogICAgICAgIH0KCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBWZXJ0aWNhbCBUaWdodG5lc3MgRmxhZ3MgU2VjdGlvbiAxZDoKICAgICAgICAjIFN0YWNraW5nIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgdG9rZW5zIChUeXBlIDIpCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgbXkgJHN0YWNrYWJsZTsKICAgICAgICBteSAkdG9rZW5fYmVnX25leHQgPSAkdG9rZW5zX3RvX2dvWyRpYmVnX25leHRdOwoKICAgICAgICAjIHBhdGNoIHRvIG1ha2Ugc29tZXRoaW5nIGxpa2UgJ3F3KCcgYmVoYXZlIGxpa2UgYW4gb3BlbmluZyBwYXJlbgogICAgICAgICMgKGFyYW4udCkKICAgICAgICBpZiAoICR0eXBlc190b19nb1skaWJlZ19uZXh0XSBlcSAncScgKSB7CiAgICAgICAgICAgIGlmICggJHRva2VuX2JlZ19uZXh0ID1+IC9ecXdccyooW1xbXChce10pJC8gKSB7CiAgICAgICAgICAgICAgICAkdG9rZW5fYmVnX25leHQgPSAkMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAgICRpc19jbG9zaW5nX3Rva2VueyR0b2tlbl9lbmR9CiAgICAgICAgICAgICYmICRpc19jbG9zaW5nX3Rva2VueyR0b2tlbl9iZWdfbmV4dH0gKQogICAgICAgIHsKICAgICAgICAgICAgJHN0YWNrYWJsZSA9ICRzdGFja19jbG9zaW5nX3Rva2VueyR0b2tlbl9iZWdfbmV4dH0KICAgICAgICAgICAgICB1bmxlc3MgKCAkYmxvY2tfdHlwZV90b19nb1skaWJlZ19uZXh0XSApCiAgICAgICAgICAgICAgOyAgICAjIHNob3VsZG4ndCBoYXBwZW47IGp1c3QgY2hlY2tpbmcKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCRpc19vcGVuaW5nX3Rva2VueyR0b2tlbl9lbmR9CiAgICAgICAgICAgICYmICRpc19vcGVuaW5nX3Rva2VueyR0b2tlbl9iZWdfbmV4dH0gKQogICAgICAgIHsKICAgICAgICAgICAgJHN0YWNrYWJsZSA9ICRzdGFja19vcGVuaW5nX3Rva2VueyR0b2tlbl9iZWdfbmV4dH0KICAgICAgICAgICAgICB1bmxlc3MgKCAkYmxvY2tfdHlwZV90b19nb1skaWJlZ19uZXh0XSApCiAgICAgICAgICAgICAgOyAgICAjIHNob3VsZG4ndCBoYXBwZW47IGp1c3QgY2hlY2tpbmcKICAgICAgICB9CgogICAgICAgIGlmICgkc3RhY2thYmxlKSB7CgogICAgICAgICAgICBteSAkaXNfc2VtaWNvbG9uX3Rlcm1pbmF0ZWQ7CiAgICAgICAgICAgIGlmICggJG4gKyAxID09ICRuX2xhc3RfbGluZSApIHsKICAgICAgICAgICAgICAgIG15ICggJHRlcm1pbmFsX3R5cGUsICRpX3Rlcm1pbmFsICkgPSB0ZXJtaW5hbF90eXBlKAogICAgICAgICAgICAgICAgICAgIFxAdHlwZXNfdG9fZ28sIFxAYmxvY2tfdHlwZV90b19nbywKICAgICAgICAgICAgICAgICAgICAkaWJlZ19uZXh0LCAgICAkaWVuZF9uZXh0CiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJGlzX3NlbWljb2xvbl90ZXJtaW5hdGVkID0gJHRlcm1pbmFsX3R5cGUgZXEgJzsnCiAgICAgICAgICAgICAgICAgICYmICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpZW5kX25leHRdIDwKICAgICAgICAgICAgICAgICAgJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGliZWdfbmV4dF07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgdGhpcyBtdXN0IGJlIGEgbGluZSB3aXRoIGp1c3QgYW4gb3BlbmluZyB0b2tlbgogICAgICAgICAgICAjIG9yIGVuZCBpbiBhIHNlbWljb2xvbgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkaXNfc2VtaWNvbG9uX3Rlcm1pbmF0ZWQKICAgICAgICAgICAgICAgIHx8ICggICAkaWVuZF9uZXh0ID09ICRpYmVnX25leHQKICAgICAgICAgICAgICAgICAgICB8fCAkaWVuZF9uZXh0ID09ICRpYmVnX25leHQgKyAyCiAgICAgICAgICAgICAgICAgICAgJiYgJHR5cGVzX3RvX2dvWyRpZW5kX25leHRdIGVxICcjJyApCiAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBteSAkdmFsaWRfZmxhZyA9IDE7CiAgICAgICAgICAgICAgICBteSAkc3BhY2VzID0gKCAkdHlwZXNfdG9fZ29bICRpYmVnX25leHQgLSAxIF0gZXEgJ2InICkgPyAxIDogMDsKICAgICAgICAgICAgICAgIEB7JHJ2ZXJ0aWNhbF90aWdodG5lc3NfZmxhZ3N9ID0KICAgICAgICAgICAgICAgICAgKCAyLCAkc3BhY2VzLCAkdHlwZV9zZXF1ZW5jZV90b19nb1skaWJlZ19uZXh0XSwgJHZhbGlkX2ZsYWcsCiAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIFZlcnRpY2FsIFRpZ2h0bmVzcyBGbGFncyBTZWN0aW9uIDI6CiAgICAjIEhhbmRsZSB0eXBlIDMsIG9wZW5pbmcgYmxvY2sgYnJhY2VzIG9uIGxhc3QgbGluZSBvZiB0aGUgYmF0Y2gKICAgICMgQ2hlY2sgZm9yIGEgbGFzdCBsaW5lIHdpdGggaXNvbGF0ZWQgb3BlbmluZyBCTE9DSyBjdXJseQogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBlbHNpZiAoJHJPcHRzX2Jsb2NrX2JyYWNlX3ZlcnRpY2FsX3RpZ2h0bmVzcwogICAgICAgICYmICRpYmVnIGVxICRpZW5kCiAgICAgICAgJiYgJHR5cGVzX3RvX2dvWyRpZW5kXSBlcSAneycKICAgICAgICAmJiAkYmxvY2tfdHlwZV90b19nb1skaWVuZF0gPX4KICAgICAgICAvJGJsb2NrX2JyYWNlX3ZlcnRpY2FsX3RpZ2h0bmVzc19wYXR0ZXJuL28gKQogICAgewogICAgICAgIEB7JHJ2ZXJ0aWNhbF90aWdodG5lc3NfZmxhZ3N9ID0KICAgICAgICAgICggMywgJHJPcHRzX2Jsb2NrX2JyYWNlX3ZlcnRpY2FsX3RpZ2h0bmVzcywgMCwgMSApOwogICAgfQoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyBWZXJ0aWNhbCBUaWdodG5lc3MgRmxhZ3MgU2VjdGlvbiAzOgogICAgIyBIYW5kbGUgdHlwZSA0LCBhIGNsb3NpbmcgYmxvY2sgYnJhY2Ugb24gdGhlIGxhc3QgbGluZSBvZiB0aGUgYmF0Y2ggQ2hlY2sKICAgICMgZm9yIGEgbGFzdCBsaW5lIHdpdGggaXNvbGF0ZWQgY2xvc2luZyBCTE9DSyBjdXJseQogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBlbHNpZiAoJHJPcHRzX3N0YWNrX2Nsb3NpbmdfYmxvY2tfYnJhY2UKICAgICAgICAmJiAkaWJlZyBlcSAkaWVuZAogICAgICAgICYmICRibG9ja190eXBlX3RvX2dvWyRpZW5kXQogICAgICAgICYmICR0eXBlc190b19nb1skaWVuZF0gZXEgJ30nICkKICAgIHsKICAgICAgICBteSAkc3BhY2VzID0gJHJPcHRzX2Jsb2NrX2JyYWNlX3RpZ2h0bmVzcyA9PSAyID8gMCA6IDE7CiAgICAgICAgQHskcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFnc30gPQogICAgICAgICAgKCA0LCAkc3BhY2VzLCAkdHlwZV9zZXF1ZW5jZV90b19nb1skaWVuZF0sIDEgKTsKICAgIH0KCiAgICAjIHBhY2sgaW4gdGhlIHNlcXVlbmNlIG51bWJlcnMgb2YgdGhlIGVuZHMgb2YgdGhpcyBsaW5lCiAgICAkcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFncy0+WzRdID0gZ2V0X3NlcW5vKCRpYmVnKTsKICAgICRydmVydGljYWxfdGlnaHRuZXNzX2ZsYWdzLT5bNV0gPSBnZXRfc2Vxbm8oJGllbmQpOwogICAgcmV0dXJuICRydmVydGljYWxfdGlnaHRuZXNzX2ZsYWdzOwp9CgpzdWIgZ2V0X3NlcW5vIHsKCiAgICAjIGdldCBvcGVuaW5nIGFuZCBjbG9zaW5nIHNlcXVlbmNlIG51bWJlcnMgb2YgYSB0b2tlbiBmb3IgdGhlIHZlcnRpY2FsCiAgICAjIGFsaWduZXIuICBBc3NpZ24gcXcgcXVvdGVzIGEgdmFsdWUgdG8gYWxsb3cgcXcgb3BlbmluZyBhbmQgY2xvc2luZyB0b2tlbnMKICAgICMgdG8gYmUgdHJlYXRlZCBzb21ld2hhdCBsaWtlIG9wZW5pbmcgYW5kIGNsb3NpbmcgdG9rZW5zIGZvciBzdGFja2luZwogICAgIyB0b2tlbnMgYnkgdGhlIHZlcnRpY2FsIGFsaWduZXIuCiAgICBteSAoJGlpKSA9IEBfOwogICAgbXkgJHNlcW5vID0gJHR5cGVfc2VxdWVuY2VfdG9fZ29bJGlpXTsKICAgIGlmICggJHR5cGVzX3RvX2dvWyRpaV0gZXEgJ3EnICkgewogICAgICAgIG15ICRTRVFfUVcgPSAtMTsKICAgICAgICBpZiAoICRpaSA+IDAgKSB7CiAgICAgICAgICAgICRzZXFubyA9ICRTRVFfUVcgaWYgKCAkdG9rZW5zX3RvX2dvWyRpaV0gPX4gL15xd1xzKltcKFx7XFtdLyApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgaWYgKCAhJGVuZGluZ19pbl9xdW90ZSApIHsKICAgICAgICAgICAgICAgICRzZXFubyA9ICRTRVFfUVcgaWYgKCAkdG9rZW5zX3RvX2dvWyRpaV0gPX4gL1tcKVx9XF1dJC8gKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAoJHNlcW5vKTsKfQoKewogICAgbXkgJWlzX3ZlcnRpY2FsX2FsaWdubWVudF90eXBlOwogICAgbXkgJWlzX25vdF92ZXJ0aWNhbF9hbGlnbm1lbnRfdG9rZW47CiAgICBteSAlaXNfdmVydGljYWxfYWxpZ25tZW50X2tleXdvcmQ7CiAgICBteSAlaXNfdGVybWluYWxfYWxpZ25tZW50X3R5cGU7CiAgICBteSAlaXNfbG93X2xldmVsX2FsaWdubWVudF90b2tlbjsKCiAgICBCRUdJTiB7CgogICAgICAgIG15IEBxOwoKICAgICAgICAjIFJlcGxhY2VkID1+IGFuZCAvLyBpbiB0aGUgbGlzdC4gIC8vIGhhZCBiZWVuIHJlbW92ZWQgaW4gUlQgMTE5NTg4CiAgICAgICAgQHEgPSBxdyMKICAgICAgICAgID0gKio9ICs9ICo9ICY9IDw8PSAmJj0gLT0gLz0gfD0gPj49IHx8PSAvLz0gLj0gJT0gXj0geD0KICAgICAgICAgIHsgPyA6ID0+ICYmIHx8IH5+ICF+fiA9fiAhfiAvLwogICAgICAgICAgIzsKICAgICAgICBAaXNfdmVydGljYWxfYWxpZ25tZW50X3R5cGV7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICAgICAgIyBUaGVzZSAndG9rZW5zJyBhcmUgbm90IGFsaWduZWQuIFdlIG5lZWQgdGhpcyB0byByZW1vdmUgWwogICAgICAgICMgZnJvbSB0aGUgYWJvdmUgbGlzdCBiZWNhdXNlIGl0IGhhcyB0eXBlID0neycKICAgICAgICBAcSA9IHF3KFspOwogICAgICAgIEBpc19ub3RfdmVydGljYWxfYWxpZ25tZW50X3Rva2Vue0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CgogICAgICAgICMgdGhlc2UgYXJlIHRoZSBvbmx5IHR5cGVzIGFsaWduZWQgYXQgYSBsaW5lIGVuZAogICAgICAgIEBxID0gcXcoJiYgfHwpOwogICAgICAgIEBpc190ZXJtaW5hbF9hbGlnbm1lbnRfdHlwZXtAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgICAgICAjIHRoZXNlIHRva2VucyBvbmx5IGFsaWduIGF0IGxpbmUgbGV2ZWwKICAgICAgICBAcSA9ICggJ3snLCAnKCcgKTsKICAgICAgICBAaXNfbG93X2xldmVsX2FsaWdubWVudF90b2tlbntAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgICAgICAjIGVxIGFuZCBuZSB3ZXJlIHJlbW92ZWQgZnJvbSB0aGlzIGxpc3QgdG8gaW1wcm92ZSBhbGlnbm1lbnQgY2hhbmNlcwogICAgICAgIEBxID0gcXcoaWYgdW5sZXNzIGFuZCBvciBlcnIgZm9yIGZvcmVhY2ggd2hpbGUgdW50aWwpOwogICAgICAgIEBpc192ZXJ0aWNhbF9hbGlnbm1lbnRfa2V5d29yZHtAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwogICAgfQoKICAgIHN1YiBzZXRfdmVydGljYWxfYWxpZ25tZW50X21hcmtlcnMgewoKICAgICAgICAjIFRoaXMgcm91dGluZSB0YWtlcyB0aGUgZmlyc3Qgc3RlcCB0b3dhcmQgdmVydGljYWwgYWxpZ25tZW50IG9mIHRoZQogICAgICAgICMgbGluZXMgb2Ygb3V0cHV0IHRleHQuICBJdCBsb29rcyBmb3IgY2VydGFpbiB0b2tlbnMgd2hpY2ggY2FuIHNlcnZlIGFzCiAgICAgICAgIyB2ZXJ0aWNhbCBhbGlnbm1lbnQgbWFya2VycyAoc3VjaCBhcyBhbiAnPScpLgogICAgICAgICMKICAgICAgICAjIE1ldGhvZDogV2UgbG9vayBhdCBlYWNoIHRva2VuICRpIGluIHRoaXMgb3V0cHV0IGJhdGNoIGFuZCBzZXQKICAgICAgICAjICRtYXRjaGluZ190b2tlbl90b19nb1skaV0gZXF1YWwgdG8gdGhvc2UgdG9rZW5zIGF0IHdoaWNoIHdlIHdvdWxkCiAgICAgICAgIyBhY2NlcHQgdmVydGljYWwgYWxpZ25tZW50LgoKICAgICAgICBteSAoICRyaV9maXJzdCwgJHJpX2xhc3QgKSA9IEBfOwoKICAgICAgICAjIG5vdGhpbmcgdG8gZG8gaWYgd2UgYXJlbid0IGFsbG93ZWQgdG8gY2hhbmdlIHdoaXRlc3BhY2UKICAgICAgICBpZiAoICEkck9wdHNfYWRkX3doaXRlc3BhY2UgKSB7CiAgICAgICAgICAgIGZvciBteSAkaSAoIDAgLi4gJG1heF9pbmRleF90b19nbyApIHsKICAgICAgICAgICAgICAgICRtYXRjaGluZ190b2tlbl90b19nb1skaV0gPSAnJzsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIHJlbWVtYmVyIHRoZSBpbmRleCBvZiBsYXN0IG5vbmJsYW5rIHRva2VuIGJlZm9yZSBhbnkgc2lkZWNvbW1lbnQKICAgICAgICBteSAkaV90ZXJtaW5hbCA9ICRtYXhfaW5kZXhfdG9fZ287CiAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bJGlfdGVybWluYWxdIGVxICcjJyApIHsKICAgICAgICAgICAgaWYgKCAkaV90ZXJtaW5hbCA+IDAgJiYgJHR5cGVzX3RvX2dvWyAtLSRpX3Rlcm1pbmFsIF0gZXEgJ2InICkgewogICAgICAgICAgICAgICAgaWYgKCAkaV90ZXJtaW5hbCA+IDAgKSB7IC0tJGlfdGVybWluYWwgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGxvb2sgYXQgZWFjaCBsaW5lIG9mIHRoaXMgYmF0Y2guLgogICAgICAgIG15ICRsYXN0X3ZlcnRpY2FsX2FsaWdubWVudF9iZWZvcmVfaW5kZXg7CiAgICAgICAgbXkgJHZlcnRfbGFzdF9ub25ibGFua190eXBlOwogICAgICAgIG15ICR2ZXJ0X2xhc3Rfbm9uYmxhbmtfdG9rZW47CiAgICAgICAgbXkgJHZlcnRfbGFzdF9ub25ibGFua19ibG9ja190eXBlOwogICAgICAgIG15ICRtYXhfbGluZSA9IEB7JHJpX2ZpcnN0fSAtIDE7CgogICAgICAgIGZvcmVhY2ggbXkgJGxpbmUgKCAwIC4uICRtYXhfbGluZSApIHsKICAgICAgICAgICAgbXkgJGliZWcgPSAkcmlfZmlyc3QtPlskbGluZV07CiAgICAgICAgICAgIG15ICRpZW5kID0gJHJpX2xhc3QtPlskbGluZV07CiAgICAgICAgICAgICRsYXN0X3ZlcnRpY2FsX2FsaWdubWVudF9iZWZvcmVfaW5kZXggPSAtMTsKICAgICAgICAgICAgJHZlcnRfbGFzdF9ub25ibGFua190eXBlICAgICAgICAgICAgICA9ICcnOwogICAgICAgICAgICAkdmVydF9sYXN0X25vbmJsYW5rX3Rva2VuICAgICAgICAgICAgID0gJyc7CiAgICAgICAgICAgICR2ZXJ0X2xhc3Rfbm9uYmxhbmtfYmxvY2tfdHlwZSAgICAgICAgPSAnJzsKCiAgICAgICAgICAgICMgbG9vayBhdCBlYWNoIHRva2VuIGluIHRoaXMgb3V0cHV0IGxpbmUuLgogICAgICAgICAgICBteSAkbGV2ZWxfYmVnID0gJGxldmVsc190b19nb1skaWJlZ107CiAgICAgICAgICAgIGZvcmVhY2ggbXkgJGkgKCAkaWJlZyAuLiAkaWVuZCApIHsKICAgICAgICAgICAgICAgIG15ICRhbGlnbm1lbnRfdHlwZSA9ICcnOwogICAgICAgICAgICAgICAgbXkgJHR5cGUgICAgICAgICAgID0gJHR5cGVzX3RvX2dvWyRpXTsKICAgICAgICAgICAgICAgIG15ICRibG9ja190eXBlICAgICA9ICRibG9ja190eXBlX3RvX2dvWyRpXTsKICAgICAgICAgICAgICAgIG15ICR0b2tlbiAgICAgICAgICA9ICR0b2tlbnNfdG9fZ29bJGldOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgZm9yIGZsYWcgaW5kaWNhdGluZyB0aGF0IHdlIHNob3VsZCBub3QgYWxpZ24KICAgICAgICAgICAgICAgICMgdGhpcyB0b2tlbgogICAgICAgICAgICAgICAgaWYgKCAkbWF0Y2hpbmdfdG9rZW5fdG9fZ29bJGldICkgewogICAgICAgICAgICAgICAgICAgICRtYXRjaGluZ190b2tlbl90b19nb1skaV0gPSAnJzsKICAgICAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZG8gbm90IGFsaWduIHRva2VucyBhdCBsb3dlciBsZXZlbCB0aGVuIHN0YXJ0IG9mIGxpbmUKICAgICAgICAgICAgICAgICMgZXhjZXB0IGZvciBzaWRlIGNvbW1lbnRzCiAgICAgICAgICAgICAgICBpZiAoICAgJGxldmVsc190b19nb1skaV0gPCAkbGV2ZWxzX3RvX2dvWyRpYmVnXQogICAgICAgICAgICAgICAgICAgICYmICR0eXBlc190b19nb1skaV0gbmUgJyMnICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkbWF0Y2hpbmdfdG9rZW5fdG9fZ29bJGldID0gJyc7CiAgICAgICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgICMgRmlyc3Qgc2VlIGlmIHdlIHdhbnQgdG8gYWxpZ24gQkVGT1JFIHRoaXMgdG9rZW4KICAgICAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgICAgICAgICAgICMgVGhlIGZpcnN0IHBvc3NpYmxlIHRva2VuIHRoYXQgd2UgY2FuIGFsaWduIGJlZm9yZQogICAgICAgICAgICAgICAgIyBpcyBpbmRleCAyIGJlY2F1c2U6IDEpIGl0IGRvZXNuJ3Qgbm9ybWFsbHkgbWFrZSBzZW5zZSB0bwogICAgICAgICAgICAgICAgIyBhbGlnbiBiZWZvcmUgdGhlIGZpcnN0IHRva2VuIGFuZCAyKSB0aGUgc2Vjb25kCiAgICAgICAgICAgICAgICAjIHRva2VuIG11c3QgYmUgYSBibGFuayBpZiB3ZSBhcmUgdG8gYWxpZ24gYmVmb3JlCiAgICAgICAgICAgICAgICAjIHRoZSB0aGlyZAogICAgICAgICAgICAgICAgaWYgKCAkaSA8ICRpYmVnICsgMiApIHsgfQoKICAgICAgICAgICAgICAgICMgbXVzdCBmb2xsb3cgYSBibGFuayB0b2tlbgogICAgICAgICAgICAgICAgZWxzaWYgKCAkdHlwZXNfdG9fZ29bICRpIC0gMSBdIG5lICdiJyApIHsgfQoKICAgICAgICAgICAgICAgICMgYWxpZ24gYSBzaWRlIGNvbW1lbnQgLS0KICAgICAgICAgICAgICAgIGVsc2lmICggJHR5cGUgZXEgJyMnICkgewoKICAgICAgICAgICAgICAgICAgICB1bmxlc3MgKAoKICAgICAgICAgICAgICAgICAgICAgICAgIyBpdCBpcyBhIHN0YXRpYyBzaWRlIGNvbW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJPcHRzLT57J3N0YXRpYy1zaWRlLWNvbW1lbnRzJ30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICR0b2tlbiA9fiAvJHN0YXRpY19zaWRlX2NvbW1lbnRfcGF0dGVybi9vCiAgICAgICAgICAgICAgICAgICAgICAgICkKCiAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgYSBjbG9zaW5nIHNpZGUgY29tbWVudAogICAgICAgICAgICAgICAgICAgICAgICB8fCAoICAgJHZlcnRfbGFzdF9ub25ibGFua19ibG9ja190eXBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkdG9rZW4gPX4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8kY2xvc2luZ19zaWRlX2NvbW1lbnRfcHJlZml4X3BhdHRlcm4vbyApCiAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkYWxpZ25tZW50X3R5cGUgPSAkdHlwZTsKICAgICAgICAgICAgICAgICAgICB9ICAgICMjIEV4YW1wbGUgb2YgYSBzdGF0aWMgc2lkZSBjb21tZW50CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBvdGhlcndpc2UsIGRvIG5vdCBhbGlnbiB0d28gaW4gYSByb3cgdG8gY3JlYXRlIGEKICAgICAgICAgICAgICAgICMgYmxhbmsgZmllbGQKICAgICAgICAgICAgICAgIGVsc2lmICggJGxhc3RfdmVydGljYWxfYWxpZ25tZW50X2JlZm9yZV9pbmRleCA9PSAkaSAtIDIgKSB7IH0KCiAgICAgICAgICAgICAgICAjIGFsaWduIGJlZm9yZSBvbmUgb2YgdGhlc2Uga2V5d29yZHMKICAgICAgICAgICAgICAgICMgKHdpdGhpbiBhIGxpbmUsIHNpbmNlICRpPjEpCiAgICAgICAgICAgICAgICBlbHNpZiAoICR0eXBlIGVxICdrJyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyAgL14oaWZ8dW5sZXNzfGFuZHxvcnxlcXxuZSkkLwogICAgICAgICAgICAgICAgICAgIGlmICggJGlzX3ZlcnRpY2FsX2FsaWdubWVudF9rZXl3b3JkeyR0b2tlbn0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRhbGlnbm1lbnRfdHlwZSA9ICR0b2tlbjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBhbGlnbiBiZWZvcmUgb25lIG9mIHRoZXNlIHR5cGVzLi4KICAgICAgICAgICAgICAgICMgTm90ZTogYWRkICcuJyBhZnRlciBuZXcgdmVydGljYWwgYWxpZ25lciBpcyBvcGVyYXRpb25hbAogICAgICAgICAgICAgICAgZWxzaWYgKCAkaXNfdmVydGljYWxfYWxpZ25tZW50X3R5cGV7JHR5cGV9CiAgICAgICAgICAgICAgICAgICAgJiYgISRpc19ub3RfdmVydGljYWxfYWxpZ25tZW50X3Rva2VueyR0b2tlbn0gKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRhbGlnbm1lbnRfdHlwZSA9ICR0b2tlbjsKCiAgICAgICAgICAgICAgICAgICAgIyBEbyBub3QgYWxpZ24gYSB0ZXJtaW5hbCB0b2tlbi4gIEFsdGhvdWdoIGl0IG1pZ2h0CiAgICAgICAgICAgICAgICAgICAgIyBvY2Nhc2lvbmFsbHkgbG9vayBvayB0byBkbyB0aGlzLCB0aGlzIGhhcyBiZWVuIGZvdW5kIHRvIGJlCiAgICAgICAgICAgICAgICAgICAgIyBhIGdvb2QgZ2VuZXJhbCBydWxlLiAgVGhlIG1haW4gcHJvYmxlbXMgYXJlOgogICAgICAgICAgICAgICAgICAgICMgKDEpIHRoYXQgdGhlIHRlcm1pbmFsIHRva2VuIChzdWNoIGFzIGFuID0gb3IgOikgbWlnaHQgZ2V0CiAgICAgICAgICAgICAgICAgICAgIyBtb3ZlZCBmYXIgdG8gdGhlIHJpZ2h0IHdoZXJlIGl0IGlzIGhhcmQgdG8gc2VlIGJlY2F1c2UKICAgICAgICAgICAgICAgICAgICAjIG5vdGhpbmcgZm9sbG93cyBpdCwgYW5kCiAgICAgICAgICAgICAgICAgICAgIyAoMikgZG9pbmcgc28gbWF5IHByZXZlbnQgb3RoZXIgZ29vZCBhbGlnbm1lbnRzLgogICAgICAgICAgICAgICAgICAgICMgQ3VycmVudCBleGNlcHRpb25zIGFyZSAmJiBhbmQgfHwKICAgICAgICAgICAgICAgICAgICBpZiAoICRpID09ICRpZW5kIHx8ICRpID49ICRpX3Rlcm1pbmFsICkgewogICAgICAgICAgICAgICAgICAgICAgICAkYWxpZ25tZW50X3R5cGUgPSAiIgogICAgICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyAoICRpc190ZXJtaW5hbF9hbGlnbm1lbnRfdHlwZXskdHlwZX0gKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgRG8gbm90IGFsaWduIGxlYWRpbmcgJzogKCcgb3IgJy4gKCcuICBUaGlzIHdvdWxkIHByZXZlbnQKICAgICAgICAgICAgICAgICAgICAjIGFsaWdubWVudCBpbiBzb21ldGhpbmcgbGlrZSB0aGUgZm9sbG93aW5nOgogICAgICAgICAgICAgICAgICAgICMgICAkZXh0cmFfc3BhY2UgLj0KICAgICAgICAgICAgICAgICAgICAjICAgICAgICggJGlucHV0X2xpbmVfbnVtYmVyIDwgMTAgKSAgPyAiICAiCiAgICAgICAgICAgICAgICAgICAgIyAgICAgOiAoICRpbnB1dF9saW5lX251bWJlciA8IDEwMCApID8gIiAiCiAgICAgICAgICAgICAgICAgICAgIyAgICAgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiI7CiAgICAgICAgICAgICAgICAgICAgIyBvcgogICAgICAgICAgICAgICAgICAgICMgICRjb2RlID0KICAgICAgICAgICAgICAgICAgICAjICAgICAgKCAkY2FzZV9tYXR0ZXJzID8gJGFjY2Vzc29yIDogIiBsYygkYWNjZXNzb3IpICIgKQogICAgICAgICAgICAgICAgICAgICMgICAgLiAoICR5ZXNubyAgICAgICAgPyAiIGVxICIgICAgICAgOiAiIG5lICIgKQoKICAgICAgICAgICAgICAgICAgICAjIEFsc28sIGRvIG5vdCBhbGlnbiBhICggZm9sbG93aW5nIGEgbGVhZGluZyA/IHNvIHdlIGNhbgogICAgICAgICAgICAgICAgICAgICMgYWxpZ24gc29tZXRoaW5nIGxpa2UgdGhpczoKICAgICAgICAgICAgICAgICAgICAjICAgJGNvbnZlcnRlcnskX30tPnt1c2hvcnRva30gPQogICAgICAgICAgICAgICAgICAgICMgICAgICRQREw6OklPOjpQaWM6OmJpZ2dyYXlzCiAgICAgICAgICAgICAgICAgICAgIyAgICAgPyAoIG0vR0lGLyAgICAgICAgICA/IDAgOiAxICkKICAgICAgICAgICAgICAgICAgICAjICAgICA6ICggbS9HSUZ8UkFTVHxJRkYvID8gMCA6IDEgKTsKICAgICAgICAgICAgICAgICAgICBpZiAoICAgJGkgPT0gJGliZWcgKyAyCiAgICAgICAgICAgICAgICAgICAgICAgICYmICR0eXBlc190b19nb1skaWJlZ10gPX4gL15bXC5cOlw/XSQvCiAgICAgICAgICAgICAgICAgICAgICAgICYmICR0eXBlc190b19nb1sgJGkgLSAxIF0gZXEgJ2InICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRhbGlnbm1lbnRfdHlwZSA9ICIiOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBDZXJ0YWluIHRva2VucyBvbmx5IGFsaWduIGF0IHRoZSBzYW1lIGxldmVsIGFzIHRoZQogICAgICAgICAgICAgICAgICAgICMgaW5pdGlhbCBsaW5lIGxldmVsCiAgICAgICAgICAgICAgICAgICAgaWYgKCAgICRpc19sb3dfbGV2ZWxfYWxpZ25tZW50X3Rva2VueyR0b2tlbn0KICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGxldmVsc190b19nb1skaV0gIT0gJGxldmVsX2JlZyApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkYWxpZ25tZW50X3R5cGUgPSAiIjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgRm9yIGEgcGFyZW4gYWZ0ZXIga2V5d29yZCwgb25seSBhbGlnbiBzb21ldGhpbmcgbGlrZSB0aGlzOgogICAgICAgICAgICAgICAgICAgICMgICAgaWYgICAgKCAkYSApIHsgJmEgfQogICAgICAgICAgICAgICAgICAgICMgICAgZWxzaWYgKCAkYiApIHsgJmIgfQogICAgICAgICAgICAgICAgICAgIGlmICggJHRva2VuIGVxICcoJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJHZlcnRfbGFzdF9ub25ibGFua190eXBlIGVxICdrJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhbGlnbm1lbnRfdHlwZSA9ICIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyAkdmVydF9sYXN0X25vbmJsYW5rX3Rva2VuID1+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9eKGlmfHVubGVzc3xlbHNpZikkLzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBiZSBzdXJlIHRoZSBhbGlnbm1lbnQgdG9rZW5zIGFyZSB1bmlxdWUKICAgICAgICAgICAgICAgICAgICAjIFRoaXMgZGlkbid0IHdvcmsgd2VsbDogcmVhc29uIG5vdCBkZXRlcm1pbmVkCiAgICAgICAgICAgICAgICAgICAgIyBpZiAoJHRva2VuIG5lICR0eXBlKSB7JGFsaWdubWVudF90eXBlIC49ICR0eXBlfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgTk9URTogVGhpcyBpcyBkZWFjdGl2YXRlZCBiZWNhdXNlIGl0IGNhdXNlcyB0aGUgcHJldmlvdXMKICAgICAgICAgICAgICAgICMgaWYvZWxzaWYgYWxpZ25tZW50IHRvIGZhaWwKICAgICAgICAgICAgICAgICNlbHNpZiAoICR0eXBlIGVxICd9JyAmJiAkdG9rZW4gZXEgJ30nICYmICRibG9ja190eXBlX3RvX2dvWyRpXSkKICAgICAgICAgICAgICAgICN7ICRhbGlnbm1lbnRfdHlwZSA9ICR0eXBlOyB9CgogICAgICAgICAgICAgICAgaWYgKCRhbGlnbm1lbnRfdHlwZSkgewogICAgICAgICAgICAgICAgICAgICRsYXN0X3ZlcnRpY2FsX2FsaWdubWVudF9iZWZvcmVfaW5kZXggPSAkaTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgICMgTmV4dCBzZWUgaWYgd2Ugd2FudCB0byBhbGlnbiBBRlRFUiB0aGUgcHJldmlvdXMgbm9uYmxhbmsKICAgICAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgICAgICAgICAgICMgV2Ugd2FudCB0byBsaW5lIHVwICcsJyBhbmQgaW50ZXJpb3IgJzsnIHRva2Vucywgd2l0aCB0aGUgYWRkZWQKICAgICAgICAgICAgICAgICMgc3BhY2UgQUZURVIgdGhlc2UgdG9rZW5zLiAgKE5vdGU6IGludGVyaW9yICc7JyBpcyBpbmNsdWRlZAogICAgICAgICAgICAgICAgIyBiZWNhdXNlIGl0IG1heSBvY2N1ciBpbiBzaG9ydCBibG9ja3MpLgogICAgICAgICAgICAgICAgaWYgKAoKICAgICAgICAgICAgICAgICAgICAjIHdlIGhhdmVuJ3QgYWxyZWFkeSBzZXQgaXQKICAgICAgICAgICAgICAgICAgICAhJGFsaWdubWVudF90eXBlCgogICAgICAgICAgICAgICAgICAgICMgYW5kIGl0cyBub3QgdGhlIGZpcnN0IHRva2VuIG9mIHRoZSBsaW5lCiAgICAgICAgICAgICAgICAgICAgJiYgKCAkaSA+ICRpYmVnICkKCiAgICAgICAgICAgICAgICAgICAgIyBhbmQgaXQgZm9sbG93cyBhIGJsYW5rCiAgICAgICAgICAgICAgICAgICAgJiYgJHR5cGVzX3RvX2dvWyAkaSAtIDEgXSBlcSAnYicKCiAgICAgICAgICAgICAgICAgICAgIyBhbmQgcHJldmlvdXMgdG9rZW4gSVMgb25lIG9mIHRoZXNlOgogICAgICAgICAgICAgICAgICAgICYmICggJHZlcnRfbGFzdF9ub25ibGFua190eXBlID1+IC9eW1wsXDtdJC8gKQoKICAgICAgICAgICAgICAgICAgICAjIGFuZCBpdCdzIE5PVCBvbmUgb2YgdGhlc2UKICAgICAgICAgICAgICAgICAgICAmJiAoICR0eXBlICF+IC9eW2JcI1wpXF1cfV0kLyApCgogICAgICAgICAgICAgICAgICAgICMgdGhlbiBnbyBhaGVhZCBhbmQgYWxpZ24KICAgICAgICAgICAgICAgICAgKQoKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkYWxpZ25tZW50X3R5cGUgPSAkdmVydF9sYXN0X25vbmJsYW5rX3R5cGU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICAgICAjIHRoZW4gc3RvcmUgdGhlIHZhbHVlCiAgICAgICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgICRtYXRjaGluZ190b2tlbl90b19nb1skaV0gPSAkYWxpZ25tZW50X3R5cGU7CiAgICAgICAgICAgICAgICBpZiAoICR0eXBlIG5lICdiJyApIHsKICAgICAgICAgICAgICAgICAgICAkdmVydF9sYXN0X25vbmJsYW5rX3R5cGUgICAgICAgPSAkdHlwZTsKICAgICAgICAgICAgICAgICAgICAkdmVydF9sYXN0X25vbmJsYW5rX3Rva2VuICAgICAgPSAkdG9rZW47CiAgICAgICAgICAgICAgICAgICAgJHZlcnRfbGFzdF9ub25ibGFua19ibG9ja190eXBlID0gJGJsb2NrX3R5cGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgfQp9CgpzdWIgdGVybWluYWxfdHlwZSB7CgogICAgIyAgICByZXR1cm5zIHR5cGUgb2YgbGFzdCB0b2tlbiBvbiB0aGlzIGxpbmUgKHRlcm1pbmFsIHRva2VuKSwgYXMgZm9sbG93czoKICAgICMgICAgcmV0dXJucyAjIGZvciBhIGZ1bGwtbGluZSBjb21tZW50CiAgICAjICAgIHJldHVybnMgJyAnIGZvciBhIGJsYW5rIGxpbmUKICAgICMgICAgb3RoZXJ3aXNlIHJldHVybnMgZmluYWwgdG9rZW4gdHlwZQoKICAgIG15ICggJHJ0eXBlLCAkcmJsb2NrX3R5cGUsICRpYmVnLCAkaWVuZCApID0gQF87CgogICAgIyBjaGVjayBmb3IgZnVsbC1saW5lIGNvbW1lbnQuLgogICAgaWYgKCAkcnR5cGUtPlskaWJlZ10gZXEgJyMnICkgewogICAgICAgIHJldHVybiB3YW50YXJyYXkgPyAoICRydHlwZS0+WyRpYmVnXSwgJGliZWcgKSA6ICRydHlwZS0+WyRpYmVnXTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIHN0YXJ0IGF0IGVuZCBhbmQgd2FsayBiYWNrd2FyZHMuLgogICAgICAgIGZvciAoIG15ICRpID0gJGllbmQgOyAkaSA+PSAkaWJlZyA7ICRpLS0gKSB7CgogICAgICAgICAgICAjIHNraXAgcGFzdCBhbnkgc2lkZSBjb21tZW50IGFuZCBibGFua3MKICAgICAgICAgICAgbmV4dCBpZiAoICRydHlwZS0+WyRpXSBlcSAnYicgKTsKICAgICAgICAgICAgbmV4dCBpZiAoICRydHlwZS0+WyRpXSBlcSAnIycgKTsKCiAgICAgICAgICAgICMgZm91bmQgaXQuLm1ha2Ugc3VyZSBpdCBpcyBhIEJMT0NLIHRlcm1pbmF0aW9uLAogICAgICAgICAgICAjIGJ1dCBoaWRlIGEgdGVybWluYWwgfSBhZnRlciBzb3J0L2dyZXAvbWFwIGJlY2F1c2UgaXQgaXMgbm90CiAgICAgICAgICAgICMgbmVjZXNzYXJpbHkgdGhlIGVuZCBvZiB0aGUgbGluZS4gICh0ZXJtaW5hbC50KQogICAgICAgICAgICBteSAkdGVybWluYWxfdHlwZSA9ICRydHlwZS0+WyRpXTsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJHRlcm1pbmFsX3R5cGUgZXEgJ30nCiAgICAgICAgICAgICAgICAmJiAoICEkcmJsb2NrX3R5cGUtPlskaV0KICAgICAgICAgICAgICAgICAgICB8fCAoICRpc19zb3J0X21hcF9ncmVwX2V2YWxfZG97ICRyYmxvY2tfdHlwZS0+WyRpXSB9ICkgKQogICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHRlcm1pbmFsX3R5cGUgPSAnYic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHdhbnRhcnJheSA/ICggJHRlcm1pbmFsX3R5cGUsICRpICkgOiAkdGVybWluYWxfdHlwZTsKICAgICAgICB9CgogICAgICAgICMgZW1wdHkgbGluZQogICAgICAgIHJldHVybiB3YW50YXJyYXkgPyAoICcgJywgJGliZWcgKSA6ICcgJzsKICAgIH0KfQoKeyAgICAjIHNldF9ib25kX3N0cmVuZ3RocwoKICAgIG15ICVpc19nb29kX2tleXdvcmRfYnJlYWtwb2ludDsKICAgIG15ICVpc19sdF9ndF9sZV9nZTsKCiAgICBteSAlYmluYXJ5X2JvbmRfc3RyZW5ndGg7CiAgICBteSAlbm9icmVha19saHM7CiAgICBteSAlbm9icmVha19yaHM7CgogICAgbXkgQGJpYXNfdG9rZW5zOwogICAgbXkgJGRlbHRhX2JpYXM7CgogICAgc3ViIGJpYXNfdGFibGVfa2V5IHsKICAgICAgICBteSAoICR0eXBlLCAkdG9rZW4gKSA9IEBfOwogICAgICAgIG15ICRiaWFzX3RhYmxlX2tleSA9ICR0eXBlOwogICAgICAgIGlmICggJHR5cGUgZXEgJ2snICkgewogICAgICAgICAgICAkYmlhc190YWJsZV9rZXkgPSAkdG9rZW47CiAgICAgICAgICAgIGlmICggJHRva2VuIGVxICdlcnInICkgeyAkYmlhc190YWJsZV9rZXkgPSAnb3InIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRiaWFzX3RhYmxlX2tleTsKICAgIH0KCiAgICBzdWIgaW5pdGlhbGl6ZV9ib25kX3N0cmVuZ3RoX2hhc2hlcyB7CgogICAgICAgIG15IEBxOwogICAgICAgIEBxID0gcXcoaWYgdW5sZXNzIHdoaWxlIHVudGlsIGZvciBmb3JlYWNoKTsKICAgICAgICBAaXNfZ29vZF9rZXl3b3JkX2JyZWFrcG9pbnR7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICAgICAgQHEgPSBxdyhsdCBndCBsZSBnZSk7CiAgICAgICAgQGlzX2x0X2d0X2xlX2dle0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CiAgICAgICAgIwogICAgICAgICMgVGhlIGRlY2lzaW9uIGFib3V0IHdoZXJlIHRvIGJyZWFrIGEgbGluZSBkZXBlbmRzIHVwb24gYSAiYm9uZAogICAgICAgICMgc3RyZW5ndGgiIGJldHdlZW4gdG9rZW5zLiAgVGhlIExPV0VSIHRoZSBib25kIHN0cmVuZ3RoLCB0aGUgTU9SRQogICAgICAgICMgbGlrZWx5IGEgYnJlYWsuICBBIGJvbmQgc3RyZW5ndGggbWF5IGJlIGFueSB2YWx1ZSBidXQgdG8gc2ltcGxpZnkKICAgICAgICAjIHRoaW5ncyB0aGVyZSBhcmUgc2V2ZXJhbCBwcmUtZGVmaW5lZCBzdHJlbmd0aCBsZXZlbHM6CgogICAgICAgICMgICAgTk9fQlJFQUsgICAgPT4gMTAwMDA7CiAgICAgICAgIyAgICBWRVJZX1NUUk9ORyA9PiAxMDA7CiAgICAgICAgIyAgICBTVFJPTkcgICAgICA9PiAyLjE7CiAgICAgICAgIyAgICBOT01JTkFMICAgICA9PiAxLjE7CiAgICAgICAgIyAgICBXRUFLICAgICAgICA9PiAwLjg7CiAgICAgICAgIyAgICBWRVJZX1dFQUsgICA9PiAwLjU1OwoKICAgICAgICAjIFRoZSBzdHJlbmd0aCB2YWx1ZXMgYXJlIGJhc2VkIG9uIHRyaWFsLWFuZC1lcnJvciwgYW5kIG5lZWQgdG8gYmUKICAgICAgICAjIHR3ZWFrZWQgb2NjYXNpb25hbGx5IHRvIGdldCBkZXNpcmVkIHJlc3VsdHMuICBTb21lIGNvbW1lbnRzOgogICAgICAgICMKICAgICAgICAjICAgMS4gT25seSByZWxhdGl2ZSBzdHJlbmd0aHMgYXJlIGltcG9ydGFudC4gIHNtYWxsIGRpZmZlcmVuY2VzCiAgICAgICAgIyAgICAgIGluIHN0cmVuZ3RocyBjYW4gbWFrZSBiaWcgZm9ybWF0dGluZyBkaWZmZXJlbmNlcy4KICAgICAgICAjICAgMi4gRWFjaCBpbmRlbnRhdGlvbiBsZXZlbCBhZGRzIG9uZSB1bml0IG9mIGJvbmQgc3RyZW5ndGguCiAgICAgICAgIyAgIDMuIEEgdmFsdWUgb2YgTk9fQlJFQUsgbWFrZXMgYW4gdW5icmVha2FibGUgYm9uZAogICAgICAgICMgICA0LiBBIHZhbHVlIG9mIFZFUllfV0VBSyBpcyB0aGUgc3RyZW5ndGggb2YgYSAnLCcKICAgICAgICAjICAgNS4gVmFsdWVzIGJlbG93IE5PTUlOQUwgYXJlIGNvbnNpZGVyZWQgb2sgYnJlYWsgcG9pbnRzLgogICAgICAgICMgICA2LiBWYWx1ZXMgYWJvdmUgTk9NSU5BTCBhcmUgY29uc2lkZXJlZCBwb29yIGJyZWFrIHBvaW50cy4KICAgICAgICAjCiAgICAgICAgIyBUaGUgYm9uZCBzdHJlbmd0aHMgc2hvdWxkIHJvdWdobHkgZm9sbG93IHByZWNlZGVuY2Ugb3JkZXIgd2hlcmUKICAgICAgICAjIHBvc3NpYmxlLiAgSWYgeW91IG1ha2UgY2hhbmdlcywgcGxlYXNlIGNoZWNrIHRoZSByZXN1bHRzIHZlcnkKICAgICAgICAjIGNhcmVmdWxseSBvbiBhIHZhcmlldHkgb2Ygc2NyaXB0cy4gIFRlc3Rpbmcgd2l0aCB0aGUgLWV4dHJ1ZGUKICAgICAgICAjIG9wdGlvbnMgaXMgcGFydGljdWxhcmx5IGhlbHBmdWwgaW4gZXhlcmNpc2luZyBhbGwgb2YgdGhlIHJ1bGVzLgoKICAgICAgICAjIFdoZXJldmVyIHBvc3NpYmxlLCBib25kIHN0cmVuZ3RocyBhcmUgZGVmaW5lZCBpbiB0aGUgZm9sbG93aW5nCiAgICAgICAgIyB0YWJsZXMuICBUaGVyZSBhcmUgdHdvIG1haW4gc3RhZ2VzIHRvIHNldHRpbmcgYm9uZCBzdHJlbmd0aHMgYW5kCiAgICAgICAgIyB0d28gdHlwZXMgb2YgdGFibGVzOgogICAgICAgICMKICAgICAgICAjIFRoZSBmaXJzdCBzdGFnZSBpbnZvbHZlcyBsb29raW5nIGF0IGVhY2ggdG9rZW4gaW5kaXZpZHVhbGx5IGFuZAogICAgICAgICMgZGVmaW5pbmcgbGVmdCBhbmQgcmlnaHQgYm9uZCBzdHJlbmd0aHMsIGFjY29yZGluZyB0byBpZiB3ZSB3YW50CiAgICAgICAgIyB0byBicmVhayB0byB0aGUgbGVmdCBvciByaWdodCBzaWRlLCBhbmQgaG93IGdvb2QgYSBicmVhayBwb2ludCBpdAogICAgICAgICMgaXMuICBGb3IgZXhhbXBsZSB0b2tlbnMgbGlrZSA9LCB8fCwgJiYgbWFrZSBnb29kIGJyZWFrIHBvaW50cyBhbmQKICAgICAgICAjIHdpbGwgaGF2ZSBsb3cgc3RyZW5ndGhzLCBidXQgb25lIG1pZ2h0IHdhbnQgdG8gYnJlYWsgb24gZWl0aGVyCiAgICAgICAgIyBzaWRlIHRvIHB1dCB0aGVtIGF0IHRoZSBlbmQgb2Ygb25lIGxpbmUgb3IgYmVnaW5uaW5nIG9mIHRoZSBuZXh0LgogICAgICAgICMKICAgICAgICAjIFRoZSBzZWNvbmQgc3RhZ2UgaW52b2x2ZXMgbG9va2luZyBhdCBjZXJ0YWluIHBhaXJzIG9mIHRva2VucyBhbmQKICAgICAgICAjIGRlZmluaW5nIGEgYm9uZCBzdHJlbmd0aCBmb3IgdGhhdCBwYXJ0aWN1bGFyIHBhaXIuICBUaGlzIHNlY29uZAogICAgICAgICMgc3RhZ2UgaGFzIHByaW9yaXR5LgoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBCb25kIFN0cmVuZ3RoIEJFR0lOIFNlY3Rpb24gMS4KICAgICAgICAjIFNldCBsZWZ0IGFuZCByaWdodCBib25kIHN0cmVuZ3RocyBvZiBpbmRpdmlkdWFsIHRva2Vucy4KICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICAgICMgTk9URTogTk9fQlJFQUsncyBzZXQgaW4gdGhpcyBzZWN0aW9uIGZpcnN0IGFyZSBISU5UUyB3aGljaCB3aWxsCiAgICAgICAgIyBwcm9iYWJseSBub3QgYmUgaG9ub3JlZC4gRXNzZW50aWFsIE5PX0JSRUFLUydzIHNob3VsZCBiZSBzZXQgaW4KICAgICAgICAjIEJFR0lOIFNlY3Rpb24gMiBvciBoYXJkd2lyZWQgaW4gdGhlIE5PX0JSRUFLIGNvZGluZyBuZWFyIHRoZSBlbmQKICAgICAgICAjIG9mIHRoaXMgc3Vicm91dGluZS4KCiAgICAgICAgIyBOb3RlIHRoYXQgd2UgYXJlIHNldHRpbmcgZGVmYXVsdHMgaW4gdGhpcyBzZWN0aW9uLiAgVGhlIHVzZXIKICAgICAgICAjIGNhbm5vdCBjaGFuZ2UgYm9uZCBzdHJlbmd0aHMgYnV0IGNhbiBjYXVzZSB0aGUgbGVmdCBhbmQgcmlnaHQKICAgICAgICAjIGJvbmQgc3RyZW5ndGhzIG9mIGFueSB0b2tlbiB0eXBlIHRvIGJlIHN3YXBwZWQgdGhyb3VnaCB0aGUgdXNlIG9mCiAgICAgICAgIyB0aGUgLXdiYSBhbmQgLXdiYiBmbGFncy4gSW4gdGhpcyB3YXkgdGhlIHVzZXIgY2FuIGRldGVybWluZSBpZiBhCiAgICAgICAgIyBicmVha3BvaW50IHRva2VuIHNob3VsZCBhcHBlYXIgYXQgdGhlIGVuZCBvZiBvbmUgbGluZSBvciB0aGUKICAgICAgICAjIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBsaW5lLgoKICAgICAgICAjIFRoZSBoYXNoIGtleXMgaW4gdGhpcyBzZWN0aW9uIGFyZSB0b2tlbiB0eXBlcywgcGx1cyB0aGUgdGV4dCBvZgogICAgICAgICMgY2VydGFpbiBrZXl3b3JkcyBsaWtlICdvcicsICdhbmQnLgoKICAgICAgICAjIG5vIGJyZWFrIGFyb3VuZCBwb3NzaWJsZSBmaWxlaGFuZGxlCiAgICAgICAgJGxlZnRfYm9uZF9zdHJlbmd0aHsnWid9ICA9IE5PX0JSRUFLOwogICAgICAgICRyaWdodF9ib25kX3N0cmVuZ3RoeydaJ30gPSBOT19CUkVBSzsKCiAgICAgICAgIyBuZXZlciBwdXQgYSBiYXJlIHdvcmQgb24gYSBuZXcgbGluZToKICAgICAgICAjIGV4YW1wbGUgcHJpbnQgKFNUREVSUiwgImJsYSIpOyB3aWxsIGZhaWwgd2l0aCBicmVhayBhZnRlciAoCiAgICAgICAgJGxlZnRfYm9uZF9zdHJlbmd0aHsndyd9ID0gTk9fQlJFQUs7CgogICAgICAgICMgYmxhbmtzIGFsd2F5cyBoYXZlIGluZmluaXRlIHN0cmVuZ3RoIHRvIGZvcmNlIGJyZWFrcyBhZnRlcgogICAgICAgICMgcmVhbCB0b2tlbnMKICAgICAgICAkcmlnaHRfYm9uZF9zdHJlbmd0aHsnYid9ID0gTk9fQlJFQUs7CgogICAgICAgICMgdHJ5IG5vdCB0byBicmVhayBvbiBleHBvbmVudGF0aW9uCiAgICAgICAgQHEgICAgICAgICAgICAgICAgICAgICAgID0gcXcjICoqIC4uIC4uLiA8PT4gIzsKICAgICAgICBAbGVmdF9ib25kX3N0cmVuZ3Roe0BxfSAgPSAoU1RST05HKSB4IHNjYWxhcihAcSk7CiAgICAgICAgQHJpZ2h0X2JvbmRfc3RyZW5ndGh7QHF9ID0gKFNUUk9ORykgeCBzY2FsYXIoQHEpOwoKICAgICAgICAjIFRoZSBjb21tYS1hcnJvdyBoYXMgdmVyeSBsb3cgcHJlY2VkZW5jZSBidXQgbm90IGEgZ29vZCBicmVhayBwb2ludAogICAgICAgICRsZWZ0X2JvbmRfc3RyZW5ndGh7Jz0+J30gID0gTk9fQlJFQUs7CiAgICAgICAgJHJpZ2h0X2JvbmRfc3RyZW5ndGh7Jz0+J30gPSBOT01JTkFMOwoKICAgICAgICAjIG9rIHRvIGJyZWFrIGFmdGVyIGxhYmVsCiAgICAgICAgJGxlZnRfYm9uZF9zdHJlbmd0aHsnSid9ICA9IE5PX0JSRUFLOwogICAgICAgICRyaWdodF9ib25kX3N0cmVuZ3RoeydKJ30gPSBOT01JTkFMOwogICAgICAgICRsZWZ0X2JvbmRfc3RyZW5ndGh7J2onfSAgPSBTVFJPTkc7CiAgICAgICAgJHJpZ2h0X2JvbmRfc3RyZW5ndGh7J2onfSA9IFNUUk9ORzsKICAgICAgICAkbGVmdF9ib25kX3N0cmVuZ3RoeydBJ30gID0gU1RST05HOwogICAgICAgICRyaWdodF9ib25kX3N0cmVuZ3RoeydBJ30gPSBTVFJPTkc7CgogICAgICAgICRsZWZ0X2JvbmRfc3RyZW5ndGh7Jy0+J30gID0gU1RST05HOwogICAgICAgICRyaWdodF9ib25kX3N0cmVuZ3RoeyctPid9ID0gVkVSWV9TVFJPTkc7CgogICAgICAgICRsZWZ0X2JvbmRfc3RyZW5ndGh7J0NPUkU6Oid9ICA9IE5PTUlOQUw7CiAgICAgICAgJHJpZ2h0X2JvbmRfc3RyZW5ndGh7J0NPUkU6Oid9ID0gTk9fQlJFQUs7CgogICAgICAgICMgYnJlYWtpbmcgQUZURVIgbW9kdWx1cyBvcGVyYXRvciBpcyBvazoKICAgICAgICBAcSA9IHF3PCAlID47CiAgICAgICAgQGxlZnRfYm9uZF9zdHJlbmd0aHtAcX0gPSAoU1RST05HKSB4IHNjYWxhcihAcSk7CiAgICAgICAgQHJpZ2h0X2JvbmRfc3RyZW5ndGh7QHF9ID0KICAgICAgICAgICggMC4xICogTk9NSU5BTCArIDAuOSAqIFNUUk9ORyApIHggc2NhbGFyKEBxKTsKCiAgICAgICAgIyBCcmVhayBBRlRFUiBtYXRoIG9wZXJhdG9ycyAqIGFuZCAvCiAgICAgICAgQHEgICAgICAgICAgICAgICAgICAgICAgID0gcXc8ICogLyB4ICA+OwogICAgICAgIEBsZWZ0X2JvbmRfc3RyZW5ndGh7QHF9ICA9IChTVFJPTkcpIHggc2NhbGFyKEBxKTsKICAgICAgICBAcmlnaHRfYm9uZF9zdHJlbmd0aHtAcX0gPSAoTk9NSU5BTCkgeCBzY2FsYXIoQHEpOwoKICAgICAgICAjIEJyZWFrIEFGVEVSIHdlYWtlc3QgbWF0aCBvcGVyYXRvcnMgKyBhbmQgLQogICAgICAgICMgTWFrZSB0aGVtIHdlYWtlciB0aGFuICogYnV0IGEgYml0IHN0cm9uZ2VyIHRoYW4gJy4nCiAgICAgICAgQHEgPSBxdzwgKyAtID47CiAgICAgICAgQGxlZnRfYm9uZF9zdHJlbmd0aHtAcX0gPSAoU1RST05HKSB4IHNjYWxhcihAcSk7CiAgICAgICAgQHJpZ2h0X2JvbmRfc3RyZW5ndGh7QHF9ID0KICAgICAgICAgICggMC45MSAqIE5PTUlOQUwgKyAwLjA5ICogV0VBSyApIHggc2NhbGFyKEBxKTsKCiAgICAgICAgIyBicmVha2luZyBCRUZPUkUgdGhlc2UgaXMganVzdCBvazoKICAgICAgICBAcSAgICAgICAgICAgICAgICAgICAgICAgPSBxdyMgPj4gPDwgIzsKICAgICAgICBAcmlnaHRfYm9uZF9zdHJlbmd0aHtAcX0gPSAoU1RST05HKSB4IHNjYWxhcihAcSk7CiAgICAgICAgQGxlZnRfYm9uZF9zdHJlbmd0aHtAcX0gID0gKE5PTUlOQUwpIHggc2NhbGFyKEBxKTsKCiAgICAgICAgIyBicmVha2luZyBiZWZvcmUgdGhlIHN0cmluZyBjb25jYXRlbmF0aW9uIG9wZXJhdG9yIHNlZW1zIGJlc3QKICAgICAgICAjIGJlY2F1c2UgaXQgY2FuIGJlIGhhcmQgdG8gc2VlIGF0IHRoZSBlbmQgb2YgYSBsaW5lCiAgICAgICAgJHJpZ2h0X2JvbmRfc3RyZW5ndGh7Jy4nfSA9IFNUUk9ORzsKICAgICAgICAkbGVmdF9ib25kX3N0cmVuZ3RoeycuJ30gID0gMC45ICogTk9NSU5BTCArIDAuMSAqIFdFQUs7CgogICAgICAgIEBxICAgICAgICAgICAgICAgICAgICAgICA9IHF3PCB9IF0gKSBSID47CiAgICAgICAgQGxlZnRfYm9uZF9zdHJlbmd0aHtAcX0gID0gKFNUUk9ORykgeCBzY2FsYXIoQHEpOwogICAgICAgIEByaWdodF9ib25kX3N0cmVuZ3Roe0BxfSA9IChOT01JTkFMKSB4IHNjYWxhcihAcSk7CgogICAgICAgICMgbWFrZSB0aGVzZSBhIGxpdHRsZSB3ZWFrZXIgdGhhbiBub21pbmFsIHNvIHRoYXQgdGhleSBnZXQKICAgICAgICAjIGZhdm9yZWQgZm9yIGVuZC1vZi1saW5lIGNoYXJhY3RlcnMKICAgICAgICBAcSA9IHF3PCAhPSA9PSA9fiAhfiB+fiAhfn4gPjsKICAgICAgICBAbGVmdF9ib25kX3N0cmVuZ3Roe0BxfSA9IChTVFJPTkcpIHggc2NhbGFyKEBxKTsKICAgICAgICBAcmlnaHRfYm9uZF9zdHJlbmd0aHtAcX0gPQogICAgICAgICAgKCAwLjkgKiBOT01JTkFMICsgMC4xICogV0VBSyApIHggc2NhbGFyKEBxKTsKCiAgICAgICAgIyBicmVhayBBRlRFUiB0aGVzZQogICAgICAgIEBxID0gcXcjIDwgPiAgfCAmID49IDw9ICM7CiAgICAgICAgQGxlZnRfYm9uZF9zdHJlbmd0aHtAcX0gPSAoVkVSWV9TVFJPTkcpIHggc2NhbGFyKEBxKTsKICAgICAgICBAcmlnaHRfYm9uZF9zdHJlbmd0aHtAcX0gPQogICAgICAgICAgKCAwLjggKiBOT01JTkFMICsgMC4yICogV0VBSyApIHggc2NhbGFyKEBxKTsKCiAgICAgICAgIyBicmVha2luZyBlaXRoZXIgYmVmb3JlIG9yIGFmdGVyIGEgcXVvdGUgaXMgb2sKICAgICAgICAjIGJ1dCBiaWFzIGZvciBicmVha2luZyBiZWZvcmUgYSBxdW90ZQogICAgICAgICRsZWZ0X2JvbmRfc3RyZW5ndGh7J1EnfSAgPSBOT01JTkFMOwogICAgICAgICRyaWdodF9ib25kX3N0cmVuZ3RoeydRJ30gPSBOT01JTkFMICsgMC4wMjsKICAgICAgICAkbGVmdF9ib25kX3N0cmVuZ3RoeydxJ30gID0gTk9NSU5BTDsKICAgICAgICAkcmlnaHRfYm9uZF9zdHJlbmd0aHsncSd9ID0gTk9NSU5BTDsKCiAgICAgICAgIyBzdGFydGluZyBhIGxpbmUgd2l0aCBhIGtleXdvcmQgaXMgdXN1YWxseSBvawogICAgICAgICRsZWZ0X2JvbmRfc3RyZW5ndGh7J2snfSA9IE5PTUlOQUw7CgogICAgICAgICMgd2UgdXN1YWxseSB3YW50IHRvIGJvbmQgYSBrZXl3b3JkIHN0cm9uZ2x5IHRvIHdoYXQgaW1tZWRpYXRlbHkKICAgICAgICAjIGZvbGxvd3MsIHJhdGhlciB0aGFuIGxlYXZpbmcgaXQgc3RyYW5kZWQgYXQgdGhlIGVuZCBvZiBhIGxpbmUKICAgICAgICAkcmlnaHRfYm9uZF9zdHJlbmd0aHsnayd9ID0gU1RST05HOwoKICAgICAgICAkbGVmdF9ib25kX3N0cmVuZ3RoeydHJ30gID0gTk9NSU5BTDsKICAgICAgICAkcmlnaHRfYm9uZF9zdHJlbmd0aHsnRyd9ID0gU1RST05HOwoKICAgICAgICAjIGFzc2lnbm1lbnQgb3BlcmF0b3JzCiAgICAgICAgQHEgPSBxdygKICAgICAgICAgID0gKio9ICs9ICo9ICY9IDw8PSAmJj0KICAgICAgICAgIC09IC89IHw9ID4+PSB8fD0gLy89CiAgICAgICAgICAuPSAlPSBePQogICAgICAgICAgeD0KICAgICAgICApOwoKICAgICAgICAjIERlZmF1bHQgaXMgdG8gYnJlYWsgQUZURVIgdmFyaW91cyBhc3NpZ25tZW50IG9wZXJhdG9ycwogICAgICAgIEBsZWZ0X2JvbmRfc3RyZW5ndGh7QHF9ID0gKFNUUk9ORykgeCBzY2FsYXIoQHEpOwogICAgICAgIEByaWdodF9ib25kX3N0cmVuZ3Roe0BxfSA9CiAgICAgICAgICAoIDAuNCAqIFdFQUsgKyAwLjYgKiBWRVJZX1dFQUsgKSB4IHNjYWxhcihAcSk7CgogICAgICAgICMgRGVmYXVsdCBpcyB0byBicmVhayBCRUZPUkUgJyYmJyBhbmQgJ3x8JyBhbmQgJy8vJwogICAgICAgICMgc2V0IHN0cmVuZ3RoIG9mICd8fCcgdG8gc2FtZSBhcyAnPScgc28gdGhhdCBjaGFpbnMgbGlrZQogICAgICAgICMgJGEgPSAkYiB8fCAkYyB8fCAkZCAgIHdpbGwgYnJlYWsgYmVmb3JlIHRoZSBmaXJzdCAnfHwnCiAgICAgICAgJHJpZ2h0X2JvbmRfc3RyZW5ndGh7J3x8J30gPSBOT01JTkFMOwogICAgICAgICRsZWZ0X2JvbmRfc3RyZW5ndGh7J3x8J30gID0gJHJpZ2h0X2JvbmRfc3RyZW5ndGh7Jz0nfTsKCiAgICAgICAgIyBzYW1lIHRoaW5nIGZvciAnLy8nCiAgICAgICAgJHJpZ2h0X2JvbmRfc3RyZW5ndGh7Jy8vJ30gPSBOT01JTkFMOwogICAgICAgICRsZWZ0X2JvbmRfc3RyZW5ndGh7Jy8vJ30gID0gJHJpZ2h0X2JvbmRfc3RyZW5ndGh7Jz0nfTsKCiAgICAgICAgIyBzZXQgc3RyZW5ndGggb2YgJiYgYSBsaXR0bGUgaGlnaGVyIHRoYW4gfHwKICAgICAgICAkcmlnaHRfYm9uZF9zdHJlbmd0aHsnJiYnfSA9IE5PTUlOQUw7CiAgICAgICAgJGxlZnRfYm9uZF9zdHJlbmd0aHsnJiYnfSAgPSAkbGVmdF9ib25kX3N0cmVuZ3Roeyd8fCd9ICsgMC4xOwoKICAgICAgICAkbGVmdF9ib25kX3N0cmVuZ3Roeyc7J30gID0gVkVSWV9TVFJPTkc7CiAgICAgICAgJHJpZ2h0X2JvbmRfc3RyZW5ndGh7JzsnfSA9IFZFUllfV0VBSzsKICAgICAgICAkbGVmdF9ib25kX3N0cmVuZ3RoeydmJ30gID0gVkVSWV9TVFJPTkc7CgogICAgICAgICMgbWFrZSByaWdodCBzdHJlbmd0aCBvZiBmb3IgJzsnIGEgbGl0dGxlIGxlc3MgdGhhbiAnPScKICAgICAgICAjIHRvIG1ha2UgZm9yIGNvbnRlbnRzIGJyZWFrIGFmdGVyIHRoZSAnOycgdG8gYXZvaWQgdGhpczoKICAgICAgICAjICAgZm9yICggJGogPSAkbnVtYmVyX29mX2ZpZWxkcyAtIDEgOyAkaiA8ICRpdGVtX2NvdW50IDsgJGogKz0KICAgICAgICAjICAgICAkbnVtYmVyX29mX2ZpZWxkcyApCiAgICAgICAgIyBhbmQgbWFrZSBpdCB3ZWFrZXIgdGhhbiAnLCcgYW5kICdhbmQnIHRvbwogICAgICAgICRyaWdodF9ib25kX3N0cmVuZ3RoeydmJ30gPSBWRVJZX1dFQUsgLSAwLjAzOwoKICAgICAgICAjIFRoZSBzdHJlbmd0aHMgb2YgPy86IHNob3VsZCBiZSBzb21ld2hlcmUgYmV0d2VlbgogICAgICAgICMgYW4gJz0nIGFuZCBhIHF1b3RlIChOT01JTkFMKSwKICAgICAgICAjIG1ha2Ugc3RyZW5ndGggb2YgJzonIHNsaWdodGx5IGxlc3MgdGhhbiAnPycgdG8gaGVscAogICAgICAgICMgYnJlYWsgbG9uZyBjaGFpbnMgb2YgPyA6IGFmdGVyIHRoZSBjb2xvbnMKICAgICAgICAkbGVmdF9ib25kX3N0cmVuZ3Roeyc6J30gID0gMC40ICogV0VBSyArIDAuNiAqIE5PTUlOQUw7CiAgICAgICAgJHJpZ2h0X2JvbmRfc3RyZW5ndGh7JzonfSA9IE5PX0JSRUFLOwogICAgICAgICRsZWZ0X2JvbmRfc3RyZW5ndGh7Jz8nfSAgPSAkbGVmdF9ib25kX3N0cmVuZ3Roeyc6J30gKyAwLjAxOwogICAgICAgICRyaWdodF9ib25kX3N0cmVuZ3Roeyc/J30gPSBOT19CUkVBSzsKCiAgICAgICAgJGxlZnRfYm9uZF9zdHJlbmd0aHsnLCd9ICA9IFZFUllfU1RST05HOwogICAgICAgICRyaWdodF9ib25kX3N0cmVuZ3RoeycsJ30gPSBWRVJZX1dFQUs7CgogICAgICAgICMgcmVtYWluaW5nIGRpZ3JhcGhzIGFuZCB0cmlncmFwaHMgbm90IGRlZmluZWQgYWJvdmUKICAgICAgICBAcSAgICAgICAgICAgICAgICAgICAgICAgPSBxdyggOjogPD4gKysgLS0pOwogICAgICAgIEBsZWZ0X2JvbmRfc3RyZW5ndGh7QHF9ICA9IChXRUFLKSB4IHNjYWxhcihAcSk7CiAgICAgICAgQHJpZ2h0X2JvbmRfc3RyZW5ndGh7QHF9ID0gKFNUUk9ORykgeCBzY2FsYXIoQHEpOwoKICAgICAgICAjIFNldCBib25kIHN0cmVuZ3RocyBvZiBjZXJ0YWluIGtleXdvcmRzCiAgICAgICAgIyBtYWtlICdvcicsICdlcnInLCAnYW5kJyBzbGlnaHRseSB3ZWFrZXIgdGhhbiBhICcsJwogICAgICAgICRsZWZ0X2JvbmRfc3RyZW5ndGh7J2FuZCd9ICA9IFZFUllfV0VBSyAtIDAuMDE7CiAgICAgICAgJGxlZnRfYm9uZF9zdHJlbmd0aHsnb3InfSAgID0gVkVSWV9XRUFLIC0gMC4wMjsKICAgICAgICAkbGVmdF9ib25kX3N0cmVuZ3RoeydlcnInfSAgPSBWRVJZX1dFQUsgLSAwLjAyOwogICAgICAgICRsZWZ0X2JvbmRfc3RyZW5ndGh7J3hvcid9ICA9IE5PTUlOQUw7CiAgICAgICAgJHJpZ2h0X2JvbmRfc3RyZW5ndGh7J2FuZCd9ID0gTk9NSU5BTDsKICAgICAgICAkcmlnaHRfYm9uZF9zdHJlbmd0aHsnb3InfSAgPSBOT01JTkFMOwogICAgICAgICRyaWdodF9ib25kX3N0cmVuZ3RoeydlcnInfSA9IE5PTUlOQUw7CiAgICAgICAgJHJpZ2h0X2JvbmRfc3RyZW5ndGh7J3hvcid9ID0gU1RST05HOwoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBCb25kIFN0cmVuZ3RoIEJFR0lOIFNlY3Rpb24gMi4KICAgICAgICAjIFNldCBiaW5hcnkgcnVsZXMgZm9yIGJvbmQgc3RyZW5ndGhzIGJldHdlZW4gY2VydGFpbiB0b2tlbiB0eXBlcy4KICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICAgICMgIFdlIGhhdmUgYSBsaXR0bGUgcHJvYmxlbSBtYWtpbmcgdGFibGVzIHdoaWNoIGFwcGx5IHRvIHRoZQogICAgICAgICMgIGNvbnRhaW5lciB0b2tlbnMuICBIZXJlIGlzIGEgbGlzdCBvZiBjb250YWluZXIgdG9rZW5zIGFuZAogICAgICAgICMgIHRoZWlyIHR5cGVzOgogICAgICAgICMKICAgICAgICAjICAgdHlwZSAgICB0b2tlbnMgLy8gbWVhbmluZwogICAgICAgICMgICAgICB7ICAgIHssIFssICggLy8gaW5kZW50CiAgICAgICAgIyAgICAgIH0gICAgfSwgXSwgKSAvLyBvdXRkZW50CiAgICAgICAgIyAgICAgIFsgICAgWyAvLyBsZWZ0IG5vbi1zdHJ1Y3R1cmFsIFsgKGVuY2xvc2luZyBhbiBhcnJheSBpbmRleCkKICAgICAgICAjICAgICAgXSAgICBdIC8vIHJpZ2h0IG5vbi1zdHJ1Y3R1cmFsIHNxdWFyZSBicmFja2V0CiAgICAgICAgIyAgICAgICggICAgKCAvLyBsZWZ0IG5vbi1zdHJ1Y3R1cmFsIHBhcmVuCiAgICAgICAgIyAgICAgICkgICAgKSAvLyByaWdodCBub24tc3RydWN0dXJhbCBwYXJlbgogICAgICAgICMgICAgICBMICAgIHsgLy8gbGVmdCBub24tc3RydWN0dXJhbCBjdXJseSBicmFjZSAoZW5jbG9zaW5nIGEga2V5KQogICAgICAgICMgICAgICBSICAgIH0gLy8gcmlnaHQgbm9uLXN0cnVjdHVyYWwgY3VybHkgYnJhY2UKICAgICAgICAjCiAgICAgICAgIyAgU29tZSBydWxlcyBhcHBseSB0byB0b2tlbiB0eXBlcyBhbmQgc29tZSB0byBqdXN0IHRoZSB0b2tlbgogICAgICAgICMgIGl0c2VsZi4gIFdlIHNvbHZlIHRoZSBwcm9ibGVtIGJ5IGNvbWJpbmluZyB0eXBlIGFuZCB0b2tlbiBpbnRvIGEKICAgICAgICAjICBuZXcgaGFzaCBrZXkgZm9yIHRoZSBjb250YWluZXIgdHlwZXMuCiAgICAgICAgIwogICAgICAgICMgIElmIGEgcnVsZSBhcHBsaWVzIHRvIGEgdG9rZW4gJ3R5cGUnIHRoZW4gd2UgbmVlZCB0byBtYWtlIHJ1bGVzCiAgICAgICAgIyAgZm9yIGVhY2ggb2YgdGhlc2UgJ3R5cGUudG9rZW4nIGNvbWJpbmF0aW9uczoKICAgICAgICAjICBUeXBlICAgIFR5cGUuVG9rZW4KICAgICAgICAjICB7ICAgICAgIHt7LCB7WywgeygKICAgICAgICAjICBbICAgICAgIFtbCiAgICAgICAgIyAgKCAgICAgICAoKAogICAgICAgICMgIEwgICAgICAgTHsKICAgICAgICAjICB9ICAgICAgIH19LCB9XSwgfSkKICAgICAgICAjICBdICAgICAgIF1dCiAgICAgICAgIyAgKSAgICAgICApKQogICAgICAgICMgIFIgICAgICAgUn0KICAgICAgICAjCiAgICAgICAgIyAgSWYgYSBydWxlIGFwcGxpZXMgdG8gYSB0b2tlbiB0aGVuIHdlIG5lZWQgdG8gbWFrZSBydWxlcyBmb3IKICAgICAgICAjICB0aGVzZSAndHlwZS50b2tlbicgY29tYmluYXRpb25zOgogICAgICAgICMgIFRva2VuICAgVHlwZS5Ub2tlbgogICAgICAgICMgIHsgICAgICAge3ssIEx7CiAgICAgICAgIyAgWyAgICAgICB7WywgW1sKICAgICAgICAjICAoICAgICAgIHsoLCAoKAogICAgICAgICMgIH0gICAgICAgfX0sIFJ9CiAgICAgICAgIyAgXSAgICAgICB9XSwgXV0KICAgICAgICAjICApICAgICAgIH0pLCApKQoKICAgICAgICAjIGFsbG93IGxvbmcgbGluZXMgYmVmb3JlIGZpbmFsIHsgaW4gYW4gaWYgc3RhdGVtZW50LCBhcyBpbjoKICAgICAgICAjICAgIGlmICguLi4uLi4uLi4uCiAgICAgICAgIyAgICAgIC4uLi4uLi4uLi4pCiAgICAgICAgIyAgICB7CiAgICAgICAgIwogICAgICAgICMgT3RoZXJ3aXNlLCB0aGUgbGluZSBiZWZvcmUgdGhlIHsgdGVuZHMgdG8gYmUgdG9vIHNob3J0LgoKICAgICAgICAkYmluYXJ5X2JvbmRfc3RyZW5ndGh7JykpJ317J3t7J30gPSBWRVJZX1dFQUsgKyAwLjAzOwogICAgICAgICRiaW5hcnlfYm9uZF9zdHJlbmd0aHsnKCgnfXsne3snfSA9IE5PTUlOQUw7CgogICAgICAgICMgYnJlYWsgb24gc29tZXRoaW5nIGxpa2UgJ30gKCcsIGJ1dCBrZWVwIHRoaXMgc3Ryb25nZXIgdGhhbiBhICcsJwogICAgICAgICMgZXhhbXBsZSBpcyBpbiAnaG93ZS5wbCcKICAgICAgICAkYmluYXJ5X2JvbmRfc3RyZW5ndGh7J1J9J317JygoJ30gPSAwLjggKiBWRVJZX1dFQUsgKyAwLjIgKiBXRUFLOwogICAgICAgICRiaW5hcnlfYm9uZF9zdHJlbmd0aHsnfX0nfXsnKCgnfSA9IDAuOCAqIFZFUllfV0VBSyArIDAuMiAqIFdFQUs7CgogICAgICAgICMga2VlcCBtYXRyaXggYW5kIGhhc2ggaW5kaWNlcyB0b2dldGhlcgogICAgICAgICMgYnV0IG1ha2UgdGhlbSBhIGxpdHRsZSBiZWxvdyBTVFJPTkcgdG8gYWxsb3cgYnJlYWtpbmcgb3BlbgogICAgICAgICMgc29tZXRoaW5nIGxpa2Ugeydzb21lLXdvcmQnfXsnc29tZS12ZXJ5LWxvbmctd29yZCd9IGF0IHRoZSB9ewogICAgICAgICMgKGJyYWNlYnJrLnQpCiAgICAgICAgJGJpbmFyeV9ib25kX3N0cmVuZ3RoeyddXSd9eydbWyd9ID0gMC45ICogU1RST05HICsgMC4xICogTk9NSU5BTDsKICAgICAgICAkYmluYXJ5X2JvbmRfc3RyZW5ndGh7J11dJ317J0x7J30gPSAwLjkgKiBTVFJPTkcgKyAwLjEgKiBOT01JTkFMOwogICAgICAgICRiaW5hcnlfYm9uZF9zdHJlbmd0aHsnUn0nfXsnW1snfSA9IDAuOSAqIFNUUk9ORyArIDAuMSAqIE5PTUlOQUw7CiAgICAgICAgJGJpbmFyeV9ib25kX3N0cmVuZ3RoeydSfSd9eydMeyd9ID0gMC45ICogU1RST05HICsgMC4xICogTk9NSU5BTDsKCiAgICAgICAgIyBpbmNyZWFzZSBzdHJlbmd0aCB0byB0aGUgcG9pbnQgd2hlcmUgYSBicmVhayBpbiB0aGUgZm9sbG93aW5nCiAgICAgICAgIyB3aWxsIGJlIGFmdGVyIHRoZSBvcGVuaW5nIHBhcmVuIHJhdGhlciB0aGFuIGF0IHRoZSBhcnJvdzoKICAgICAgICAjICAgICRhLT4kYigkYyk7CiAgICAgICAgJGJpbmFyeV9ib25kX3N0cmVuZ3RoeydpJ317Jy0+J30gPSAxLjQ1ICogU1RST05HOwoKICAgICAgICAkYmluYXJ5X2JvbmRfc3RyZW5ndGh7JykpJ317Jy0+J30gPSAwLjEgKiBTVFJPTkcgKyAwLjkgKiBOT01JTkFMOwogICAgICAgICRiaW5hcnlfYm9uZF9zdHJlbmd0aHsnXV0nfXsnLT4nfSA9IDAuMSAqIFNUUk9ORyArIDAuOSAqIE5PTUlOQUw7CiAgICAgICAgJGJpbmFyeV9ib25kX3N0cmVuZ3Roeyd9KSd9eyctPid9ID0gMC4xICogU1RST05HICsgMC45ICogTk9NSU5BTDsKICAgICAgICAkYmluYXJ5X2JvbmRfc3RyZW5ndGh7J31dJ317Jy0+J30gPSAwLjEgKiBTVFJPTkcgKyAwLjkgKiBOT01JTkFMOwogICAgICAgICRiaW5hcnlfYm9uZF9zdHJlbmd0aHsnfX0nfXsnLT4nfSA9IDAuMSAqIFNUUk9ORyArIDAuOSAqIE5PTUlOQUw7CiAgICAgICAgJGJpbmFyeV9ib25kX3N0cmVuZ3RoeydSfSd9eyctPid9ID0gMC4xICogU1RST05HICsgMC45ICogTk9NSU5BTDsKCiAgICAgICAgJGJpbmFyeV9ib25kX3N0cmVuZ3RoeycpKSd9eydbWyd9ID0gMC4yICogU1RST05HICsgMC44ICogTk9NSU5BTDsKICAgICAgICAkYmluYXJ5X2JvbmRfc3RyZW5ndGh7J30pJ317J1tbJ30gPSAwLjIgKiBTVFJPTkcgKyAwLjggKiBOT01JTkFMOwogICAgICAgICRiaW5hcnlfYm9uZF9zdHJlbmd0aHsnKSknfXsne1snfSA9IDAuMiAqIFNUUk9ORyArIDAuOCAqIE5PTUlOQUw7CiAgICAgICAgJGJpbmFyeV9ib25kX3N0cmVuZ3Roeyd9KSd9eyd7Wyd9ID0gMC4yICogU1RST05HICsgMC44ICogTk9NSU5BTDsKCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgQmluYXJ5IE5PX0JSRUFLIHJ1bGVzCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgICAjIHVzZSBzdHJpY3QgcmVxdWlyZXMgdGhhdCBiYXJlIHdvcmQgYW5kID0+IG5vdCBiZSBzZXBhcmF0ZWQKICAgICAgICAkYmluYXJ5X2JvbmRfc3RyZW5ndGh7J0MnfXsnPT4nfSA9IE5PX0JSRUFLOwogICAgICAgICRiaW5hcnlfYm9uZF9zdHJlbmd0aHsnVSd9eyc9Pid9ID0gTk9fQlJFQUs7CgogICAgICAgICMgTmV2ZXIgYnJlYWsgYmV0d2VlbiBhIGJhcmV3b3JkIGFuZCBhIGZvbGxvd2luZyBwYXJlbiBiZWNhdXNlCiAgICAgICAgIyBwZXJsIG1heSBnaXZlIGFuIGVycm9yLiAgRm9yIGV4YW1wbGUsIGlmIGEgYnJlYWsgaXMgcGxhY2VkCiAgICAgICAgIyBiZXR3ZWVuICd0b19maWxlaGFuZGxlJyBhbmQgaXRzICcoJyB0aGUgZm9sbG93aW5nIGxpbmUgd2lsbAogICAgICAgICMgZ2l2ZSBhIHN5bnRheCBlcnJvciBbQ2FycC5wbV06IG15KCAkbm8pID1maWxlbm8oCiAgICAgICAgIyB0b19maWxlaGFuZGxlKCAkaW4pKSA7CiAgICAgICAgJGJpbmFyeV9ib25kX3N0cmVuZ3RoeydDJ317JygoJ30gPSBOT19CUkVBSzsKICAgICAgICAkYmluYXJ5X2JvbmRfc3RyZW5ndGh7J0MnfXsneygnfSA9IE5PX0JSRUFLOwogICAgICAgICRiaW5hcnlfYm9uZF9zdHJlbmd0aHsnVSd9eycoKCd9ID0gTk9fQlJFQUs7CiAgICAgICAgJGJpbmFyeV9ib25kX3N0cmVuZ3RoeydVJ317J3soJ30gPSBOT19CUkVBSzsKCiAgICAgICAgIyB1c2Ugc3RyaWN0IHJlcXVpcmVzIHRoYXQgYmFyZSB3b3JkIHdpdGhpbiBicmFjZXMgbm90IHN0YXJ0IG5ldwogICAgICAgICMgbGluZQogICAgICAgICRiaW5hcnlfYm9uZF9zdHJlbmd0aHsnTHsnfXsndyd9ID0gTk9fQlJFQUs7CgogICAgICAgICRiaW5hcnlfYm9uZF9zdHJlbmd0aHsndyd9eydSfSd9ID0gTk9fQlJFQUs7CgogICAgICAgICMgdXNlIHN0cmljdCByZXF1aXJlcyB0aGF0IGJhcmUgd29yZCBhbmQgPT4gbm90IGJlIHNlcGFyYXRlZAogICAgICAgICRiaW5hcnlfYm9uZF9zdHJlbmd0aHsndyd9eyc9Pid9ID0gTk9fQlJFQUs7CgogICAgICAgICMgdXNlIHN0cmljdCBkb2VzIG5vdCBhbGxvdyBzZXBhcmF0aW5nIHR5cGUgaW5mbyBmcm9tIHRyYWlsaW5nIHsgfQogICAgICAgICMgdGVzdGZpbGUgaXMgcmVhZG1haWwucGwKICAgICAgICAkYmluYXJ5X2JvbmRfc3RyZW5ndGh7J3QnfXsnTHsnfSA9IE5PX0JSRUFLOwogICAgICAgICRiaW5hcnlfYm9uZF9zdHJlbmd0aHsnaSd9eydMeyd9ID0gTk9fQlJFQUs7CgogICAgICAgICMgQXMgYSBkZWZlbnNpdmUgbWVhc3VyZSwgZG8gbm90IGJyZWFrIGJldHdlZW4gYSAnKCcgYW5kIGEKICAgICAgICAjIGZpbGVoYW5kbGUuICBJbiBzb21lIGNhc2VzLCB0aGlzIGNhbiBjYXVzZSBhbiBlcnJvci4gIEZvcgogICAgICAgICMgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBwcm9ncmFtIHdvcmtzOgogICAgICAgICMgICAgbXkgJG1zZz0iaGkhXG4iOwogICAgICAgICMgICAgcHJpbnQKICAgICAgICAjICAgICggU1RET1VUCiAgICAgICAgIyAgICAkbXNnCiAgICAgICAgIyAgICApOwogICAgICAgICMKICAgICAgICAjIEJ1dCB0aGlzIHByb2dyYW0gZmFpbHM6CiAgICAgICAgIyAgICBteSAkbXNnPSJoaSFcbiI7CiAgICAgICAgIyAgICBwcmludAogICAgICAgICMgICAgKAogICAgICAgICMgICAgU1RET1VUCiAgICAgICAgIyAgICAkbXNnCiAgICAgICAgIyAgICApOwogICAgICAgICMKICAgICAgICAjIFRoaXMgaXMgbm9ybWFsbHkgb25seSBhIHByb2JsZW0gd2l0aCB0aGUgJ2V4dHJ1ZGUnIG9wdGlvbgogICAgICAgICRiaW5hcnlfYm9uZF9zdHJlbmd0aHsnKCgnfXsnWSd9ID0gTk9fQlJFQUs7CiAgICAgICAgJGJpbmFyeV9ib25kX3N0cmVuZ3Roeyd7KCd9eydZJ30gPSBOT19CUkVBSzsKCiAgICAgICAgIyBuZXZlciBicmVhayBiZXR3ZWVuIHN1YiBuYW1lIGFuZCBvcGVuaW5nIHBhcmVuCiAgICAgICAgJGJpbmFyeV9ib25kX3N0cmVuZ3Roeyd3J317JygoJ30gPSBOT19CUkVBSzsKICAgICAgICAkYmluYXJ5X2JvbmRfc3RyZW5ndGh7J3cnfXsneygnfSA9IE5PX0JSRUFLOwoKICAgICAgICAjIGtlZXAgJ30nIHRvZ2V0aGVyIHdpdGggJzsnCiAgICAgICAgJGJpbmFyeV9ib25kX3N0cmVuZ3Roeyd9fSd9eyc7J30gPSBOT19CUkVBSzsKCiAgICAgICAgIyBCcmVha2luZyBiZWZvcmUgYSArKyBjYW4gY2F1c2UgcGVybCB0byBndWVzcyB3cm9uZy4gRm9yCiAgICAgICAgIyBleGFtcGxlIHRoZSBmb2xsb3dpbmcgbGluZSB3aWxsIGNhdXNlIGEgc3ludGF4IGVycm9yCiAgICAgICAgIyB3aXRoIC1leHRydWRlIGlmIHdlIGJyZWFrIGJldHdlZW4gJyRpJyBhbmQgJysrJyBbZml4c3R5bGUyXQogICAgICAgICMgICBwcmludCggKCAkaSsrICYgMSApID8gJF8gOiAoICRjaGFuZ2V7JF99IHx8ICRfICkgKTsKICAgICAgICAkbm9icmVha19saHN7JysrJ30gPSBOT19CUkVBSzsKCiAgICAgICAgIyBEbyBub3QgYnJlYWsgYmVmb3JlIGEgcG9zc2libGUgZmlsZSBoYW5kbGUKICAgICAgICAkbm9icmVha19saHN7J1onfSA9IE5PX0JSRUFLOwoKICAgICAgICAjIHVzZSBzdHJpY3QgaGF0ZXMgYmFyZSB3b3JkcyBvbiBhbnkgbmV3IGxpbmUuICBGb3IKICAgICAgICAjIGV4YW1wbGUsIGEgYnJlYWsgYmVmb3JlIHRoZSB1bmRlcnNjb3JlIGhlcmUgcHJvdm9rZXMgdGhlCiAgICAgICAgIyB3cmF0aCBvZiB1c2Ugc3RyaWN0OgogICAgICAgICMgaWYgKCAtciAkZm4gJiYgKCAtcyBfIHx8ICRBbGxvd1plcm9GaWxlc2l6ZSkpIHsKICAgICAgICAkbm9icmVha19yaHN7J0YnfSAgICAgID0gTk9fQlJFQUs7CiAgICAgICAgJG5vYnJlYWtfcmhzeydDT1JFOjonfSA9IE5PX0JSRUFLOwoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBCb25kIFN0cmVuZ3RoIEJFR0lOIFNlY3Rpb24gMy4KICAgICAgICAjIERlZmluZSB0YWJsZXMgYW5kIHZhbHVlcyBmb3IgYXBwbHlpbmcgYSBzbWFsbCBiaWFzIHRvIHRoZSBhYm92ZQogICAgICAgICMgdmFsdWVzLgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIEFkZGluZyBhIHNtYWxsICdiaWFzJyB0byBzdHJlbmd0aHMgaXMgYSBzaW1wbGUgd2F5IHRvIG1ha2UgYSBsaW5lCiAgICAgICAgIyBicmVhayBhdCB0aGUgZmlyc3Qgb2YgYSBzZXF1ZW5jZSBvZiBpZGVudGljYWwgdGVybXMuICBGb3IKICAgICAgICAjIGV4YW1wbGUsIHRvIGZvcmNlIGxvbmcgc3RyaW5nIG9mIGNvbmRpdGlvbmFsIG9wZXJhdG9ycyB0byBicmVhawogICAgICAgICMgd2l0aCBlYWNoIGxpbmUgZW5kaW5nIGluIGEgJzonLCB3ZSBjYW4gYWRkIGEgc21hbGwgbnVtYmVyIHRvIHRoZQogICAgICAgICMgYm9uZCBzdHJlbmd0aCBvZiBlYWNoICc6JyAoY29sb24udCkKICAgICAgICBAYmlhc190b2tlbnMgPSBxdyggOiAmJiB8fCBmIGFuZCBvciAuICk7ICAgIyB0b2tlbnMgd2hpY2ggZ2V0IGJpYXMKICAgICAgICAkZGVsdGFfYmlhcyAgPSAwLjAwMDE7ICAgICAgICAgICAgICAgICAgICAgIyBhIHZlcnkgc21hbGwgc3RyZW5ndGggbGV2ZWwKICAgICAgICByZXR1cm47CgogICAgfSAjIyBlbmQgc3ViIGluaXRpYWxpemVfYm9uZF9zdHJlbmd0aF9oYXNoZXMKCiAgICBzdWIgc2V0X2JvbmRfc3RyZW5ndGhzIHsKCiAgICAgICAgIyBwYXRjaC1pdHMgYWx3YXlzIG9rIHRvIGJyZWFrIGF0IGVuZCBvZiBsaW5lCiAgICAgICAgJG5vYnJlYWtfdG9fZ29bJG1heF9pbmRleF90b19nb10gPSAwOwoKICAgICAgICAjIHdlIHN0YXJ0IGEgbmV3IHNldCBvZiBiaWFzIHZhbHVlcyBmb3IgZWFjaCBsaW5lCiAgICAgICAgbXkgJWJpYXM7CiAgICAgICAgQGJpYXN7QGJpYXNfdG9rZW5zfSA9ICgwKSB4IHNjYWxhcihAYmlhc190b2tlbnMpOwogICAgICAgIG15ICRjb2RlX2JpYXMgPSAtLjAxOyAgICAjIGJpYXMgZm9yIGNsb3NpbmcgYmxvY2sgYnJhY2VzCgogICAgICAgIG15ICR0eXBlICA9ICdiJzsKICAgICAgICBteSAkdG9rZW4gPSAnICc7CiAgICAgICAgbXkgJGxhc3RfdHlwZTsKICAgICAgICBteSAkbGFzdF9ub25ibGFua190eXBlICA9ICR0eXBlOwogICAgICAgIG15ICRsYXN0X25vbmJsYW5rX3Rva2VuID0gJHRva2VuOwogICAgICAgIG15ICRsaXN0X3N0ciAgICAgICAgICAgID0gJGxlZnRfYm9uZF9zdHJlbmd0aHsnPyd9OwoKICAgICAgICBteSAoICRibG9ja190eXBlLCAkaV9uZXh0LCAkaV9uZXh0X25vbmJsYW5rLCAkbmV4dF9ub25ibGFua190b2tlbiwKICAgICAgICAgICAgJG5leHRfbm9uYmxhbmtfdHlwZSwgJG5leHRfdG9rZW4sICRuZXh0X3R5cGUsICR0b3RhbF9uZXN0aW5nX2RlcHRoLAogICAgICAgICk7CgogICAgICAgICMgbWFpbiBsb29wIHRvIGNvbXB1dGUgYm9uZCBzdHJlbmd0aHMgYmV0d2VlbiBlYWNoIHBhaXIgb2YgdG9rZW5zCiAgICAgICAgZm9yZWFjaCBteSAkaSAoIDAgLi4gJG1heF9pbmRleF90b19nbyApIHsKICAgICAgICAgICAgJGxhc3RfdHlwZSA9ICR0eXBlOwogICAgICAgICAgICBpZiAoICR0eXBlIG5lICdiJyApIHsKICAgICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3R5cGUgID0gJHR5cGU7CiAgICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua190b2tlbiA9ICR0b2tlbjsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdHlwZSA9ICR0eXBlc190b19nb1skaV07CgogICAgICAgICAgICAjIHN0cmVuZ3RoIG9uIGJvdGggc2lkZXMgb2YgYSBibGFuayBpcyB0aGUgc2FtZQogICAgICAgICAgICBpZiAoICR0eXBlIGVxICdiJyAmJiAkbGFzdF90eXBlIG5lICdiJyApIHsKICAgICAgICAgICAgICAgICRib25kX3N0cmVuZ3RoX3RvX2dvWyRpXSA9ICRib25kX3N0cmVuZ3RoX3RvX2dvWyAkaSAtIDEgXTsKICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0b2tlbiAgICAgICAgICAgICAgID0gJHRva2Vuc190b19nb1skaV07CiAgICAgICAgICAgICRibG9ja190eXBlICAgICAgICAgID0gJGJsb2NrX3R5cGVfdG9fZ29bJGldOwogICAgICAgICAgICAkaV9uZXh0ICAgICAgICAgICAgICA9ICRpICsgMTsKICAgICAgICAgICAgJG5leHRfdHlwZSAgICAgICAgICAgPSAkdHlwZXNfdG9fZ29bJGlfbmV4dF07CiAgICAgICAgICAgICRuZXh0X3Rva2VuICAgICAgICAgID0gJHRva2Vuc190b19nb1skaV9uZXh0XTsKICAgICAgICAgICAgJHRvdGFsX25lc3RpbmdfZGVwdGggPSAkbmVzdGluZ19kZXB0aF90b19nb1skaV9uZXh0XTsKICAgICAgICAgICAgJGlfbmV4dF9ub25ibGFuayAgICAgPSAoICggJG5leHRfdHlwZSBlcSAnYicgKSA/ICRpICsgMiA6ICRpICsgMSApOwogICAgICAgICAgICAkbmV4dF9ub25ibGFua190eXBlICA9ICR0eXBlc190b19nb1skaV9uZXh0X25vbmJsYW5rXTsKICAgICAgICAgICAgJG5leHRfbm9uYmxhbmtfdG9rZW4gPSAkdG9rZW5zX3RvX2dvWyRpX25leHRfbm9uYmxhbmtdOwoKICAgICAgICAgICAgIyBXZSBhcmUgY29tcHV0aW5nIHRoZSBzdHJlbmd0aCBvZiB0aGUgYm9uZCBiZXR3ZWVuIHRoZSBjdXJyZW50CiAgICAgICAgICAgICMgdG9rZW4gYW5kIHRoZSBORVhUIHRva2VuLgoKICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAjIEJvbmQgU3RyZW5ndGggU2VjdGlvbiAxOgogICAgICAgICAgICAjIEZpcnN0IEFwcHJveGltYXRpb24uCiAgICAgICAgICAgICMgVXNlIG1pbmltdW0gb2YgaW5kaXZpZHVhbCBsZWZ0IGFuZCByaWdodCB0YWJ1bGF0ZWQgYm9uZAogICAgICAgICAgICAjIHN0cmVuZ3Rocy4KICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICBteSAkYnNyID0gJHJpZ2h0X2JvbmRfc3RyZW5ndGh7JHR5cGV9OwogICAgICAgICAgICBteSAkYnNsID0gJGxlZnRfYm9uZF9zdHJlbmd0aHskbmV4dF9ub25ibGFua190eXBlfTsKCiAgICAgICAgICAgICMgZGVmaW5lIHJpZ2h0IGJvbmQgc3RyZW5ndGhzIG9mIGNlcnRhaW4ga2V5d29yZHMKICAgICAgICAgICAgaWYgKCAkdHlwZSBlcSAnaycgJiYgZGVmaW5lZCggJHJpZ2h0X2JvbmRfc3RyZW5ndGh7JHRva2VufSApICkgewogICAgICAgICAgICAgICAgJGJzciA9ICRyaWdodF9ib25kX3N0cmVuZ3RoeyR0b2tlbn07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkdG9rZW4gZXEgJ25lJyBvciAkdG9rZW4gZXEgJ2VxJyApIHsKICAgICAgICAgICAgICAgICRic3IgPSBOT01JTkFMOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNldCB0ZXJtaW5hbCBib25kIHN0cmVuZ3RoIHRvIHRoZSBub21pbmFsIHZhbHVlCiAgICAgICAgICAgICMgdGhpcyB3aWxsIGNhdXNlIGdvb2QgcHJlY2VkaW5nIGJyZWFrcyB0byBiZSByZXRhaW5lZAogICAgICAgICAgICBpZiAoICRpX25leHRfbm9uYmxhbmsgPiAkbWF4X2luZGV4X3RvX2dvICkgewogICAgICAgICAgICAgICAgJGJzbCA9IE5PTUlOQUw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZGVmaW5lIHJpZ2h0IGJvbmQgc3RyZW5ndGhzIG9mIGNlcnRhaW4ga2V5d29yZHMKICAgICAgICAgICAgaWYgKCAkbmV4dF9ub25ibGFua190eXBlIGVxICdrJwogICAgICAgICAgICAgICAgJiYgZGVmaW5lZCggJGxlZnRfYm9uZF9zdHJlbmd0aHskbmV4dF9ub25ibGFua190b2tlbn0gKSApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRic2wgPSAkbGVmdF9ib25kX3N0cmVuZ3RoeyRuZXh0X25vbmJsYW5rX3Rva2VufTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoJG5leHRfbm9uYmxhbmtfdG9rZW4gZXEgJ25lJwogICAgICAgICAgICAgICAgb3IgJG5leHRfbm9uYmxhbmtfdG9rZW4gZXEgJ2VxJyApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRic2wgPSBOT01JTkFMOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJGlzX2x0X2d0X2xlX2dleyRuZXh0X25vbmJsYW5rX3Rva2VufSApIHsKICAgICAgICAgICAgICAgICRic2wgPSAwLjkgKiBOT01JTkFMICsgMC4xICogU1RST05HOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFVzZSB0aGUgbWluaW11bSBvZiB0aGUgbGVmdCBhbmQgcmlnaHQgc3RyZW5ndGhzLiAgTm90ZTogaXQgbWlnaHQKICAgICAgICAgICAgIyBzZWVtIHRoYXQgd2Ugd291bGQgd2FudCB0byBrZWVwIGEgTk9fQlJFQUsgaWYgZWl0aGVyIHRva2VuIGhhcwogICAgICAgICAgICAjIHRoaXMgdmFsdWUuICBUaGlzIGRpZG4ndCB3b3JrLCBmb3IgZXhhbXBsZSBiZWNhdXNlIGluIGFuIGFycm93CiAgICAgICAgICAgICMgbGlzdCwgaXQgcHJldmVudHMgdGhlIGNvbW1hIGZyb20gc2VwYXJhdGluZyBmcm9tIHRoZSBmb2xsb3dpbmcKICAgICAgICAgICAgIyBiYXJlIHdvcmQgKHdoaWNoIGlzIHByb2JhYmx5IHF1b3RlZCBieSBpdHMgYXJyb3cpLiAgU28gbmVjZXNzYXJ5CiAgICAgICAgICAgICMgTk9fQlJFQUsncyBoYXZlIHRvIGJlIGhhbmRsZWQgYXMgc3BlY2lhbCBjYXNlcyBpbiB0aGUgZmluYWwKICAgICAgICAgICAgIyBzZWN0aW9uLgogICAgICAgICAgICBpZiAoICFkZWZpbmVkKCRic3IpICkgeyAkYnNyID0gVkVSWV9TVFJPTkcgfQogICAgICAgICAgICBpZiAoICFkZWZpbmVkKCRic2wpICkgeyAkYnNsID0gVkVSWV9TVFJPTkcgfQogICAgICAgICAgICBteSAkYm9uZF9zdHIgICA9ICggJGJzciA8ICRic2wgKSA/ICRic3IgOiAkYnNsOwogICAgICAgICAgICBteSAkYm9uZF9zdHJfMSA9ICRib25kX3N0cjsKCiAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgIyBCb25kIFN0cmVuZ3RoIFNlY3Rpb24gMjoKICAgICAgICAgICAgIyBBcHBseSBoYXJkd2lyZWQgcnVsZXMuLgogICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICAgICAgICAjIFBhdGNoIHRvIHB1dCB0ZXJtaW5hbCBvciBjbGF1c2VzIG9uIGEgbmV3IGxpbmU6IFdlYWtlbiB0aGUgYm9uZAogICAgICAgICAgICAjIGF0IGFuIHx8IGZvbGxvd2VkIGJ5IGRpZSBvciBzaW1pbGFyIGtleXdvcmQgdG8gbWFrZSB0aGUgdGVybWluYWwKICAgICAgICAgICAgIyBvciBjbGF1c2UgZmFsbCBvbiBhIG5ldyBsaW5lLCBsaWtlIHRoaXM6CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgIG15ICRjbGFzcyA9IHNoaWZ0CiAgICAgICAgICAgICMgICAgIHx8IGRpZSAiQ2Fubm90IGFkZCBicm9hZGNhc3Q6ICBObyBjbGFzcyBpZGVudGlmaWVyIGZvdW5kIjsKICAgICAgICAgICAgIwogICAgICAgICAgICAjIE90aGVyd2lzZSB0aGUgYnJlYWsgd2lsbCBiZSBhdCB0aGUgcHJldmlvdXMgJz0nIHNpbmNlIHRoZSB8fCBhbmQKICAgICAgICAgICAgIyA9IGhhdmUgdGhlIHNhbWUgc3RhcnRpbmcgc3RyZW5ndGggYW5kIHRoZSBvciBpcyBiaWFzZWQsIGxpa2UKICAgICAgICAgICAgIyB0aGlzOgogICAgICAgICAgICAjCiAgICAgICAgICAgICMgbXkgJGNsYXNzID0KICAgICAgICAgICAgIyAgIHNoaWZ0IHx8IGRpZSAiQ2Fubm90IGFkZCBicm9hZGNhc3Q6ICBObyBjbGFzcyBpZGVudGlmaWVyIGZvdW5kIjsKICAgICAgICAgICAgIwogICAgICAgICAgICAjIEluIGFueSBjYXNlIGlmIHRoZSB1c2VyIHBsYWNlcyBhIGJyZWFrIGF0IGVpdGhlciB0aGUgPSBvciB0aGUgfHwKICAgICAgICAgICAgIyBpdCBzaG91bGQgcmVtYWluIHRoZXJlLgogICAgICAgICAgICBpZiAoICR0eXBlIGVxICd8fCcgfHwgJHR5cGUgZXEgJ2snICYmICR0b2tlbiBlcSAnb3InICkgewogICAgICAgICAgICAgICAgaWYgKCAkbmV4dF9ub25ibGFua190b2tlbiA9fiAvXihkaWV8Y29uZmVzc3xjcm9ha3x3YXJuKSQvICkgewogICAgICAgICAgICAgICAgICAgIGlmICggJHdhbnRfYnJlYWtfYmVmb3JleyR0b2tlbn0gJiYgJGkgPiAwICkgewogICAgICAgICAgICAgICAgICAgICAgICAkYm9uZF9zdHJlbmd0aF90b19nb1sgJGkgLSAxIF0gLT0gJGRlbHRhX2JpYXM7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkYm9uZF9zdHIgLT0gJGRlbHRhX2JpYXM7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdvb2QgdG8gYnJlYWsgYWZ0ZXIgZW5kIG9mIGNvZGUgYmxvY2tzCiAgICAgICAgICAgIGlmICggJHR5cGUgZXEgJ30nICYmICRibG9ja190eXBlICYmICRuZXh0X25vbmJsYW5rX3R5cGUgbmUgJzsnICkgewoKICAgICAgICAgICAgICAgICRib25kX3N0ciA9IDAuNSAqIFdFQUsgKyAwLjUgKiBWRVJZX1dFQUsgKyAkY29kZV9iaWFzOwogICAgICAgICAgICAgICAgJGNvZGVfYmlhcyArPSAkZGVsdGFfYmlhczsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkdHlwZSBlcSAnaycgKSB7CgogICAgICAgICAgICAgICAgIyBhbGxvdyBjZXJ0YWluIGNvbnRyb2wga2V5d29yZHMgdG8gc3RhbmQgb3V0CiAgICAgICAgICAgICAgICBpZiAoICAgJG5leHRfbm9uYmxhbmtfdHlwZSBlcSAnaycKICAgICAgICAgICAgICAgICAgICAmJiAkaXNfbGFzdF9uZXh0X3JlZG9fcmV0dXJueyR0b2tlbn0gKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRib25kX3N0ciA9IDAuNDUgKiBXRUFLICsgMC41NSAqIFZFUllfV0VBSzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIERvbid0IGJyZWFrIGFmdGVyIGtleXdvcmQgbXkuICBUaGlzIGlzIGEgcXVpY2sgZml4IGZvciBhCiAgICAgICAgICAgICAgICAjIHJhcmUgcHJvYmxlbSB3aXRoIHBlcmwuIEFuIGV4YW1wbGUgaXMgdGhpcyBsaW5lIGZyb20gZmlsZQogICAgICAgICAgICAgICAgIyBDb250YWluZXIucG06CgogICAgICAgICAgICAgICAgIyBmb3JlYWNoIG15ICRxdWVzdGlvbiggRGViaWFuOjpEZWJDb25mOjpDb25maWdEYjo6Z2V0dHJlZSgKICAgICAgICAgICAgICAgICMgJHRoaXMtPnsncXVlc3Rpb24nfSApICkKCiAgICAgICAgICAgICAgICBpZiAoICR0b2tlbiBlcSAnbXknICkgewogICAgICAgICAgICAgICAgICAgICRib25kX3N0ciA9IE5PX0JSRUFLOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBnb29kIHRvIGJyZWFrIGJlZm9yZSAnaWYnLCAndW5sZXNzJywgZXRjCiAgICAgICAgICAgIGlmICggJGlzX2lmX2JyYWNlX2ZvbGxvd2VyeyRuZXh0X25vbmJsYW5rX3Rva2VufSApIHsKICAgICAgICAgICAgICAgICRib25kX3N0ciA9IFZFUllfV0VBSzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkbmV4dF9ub25ibGFua190eXBlIGVxICdrJyAmJiAkdHlwZSBuZSAnQ09SRTo6JyApIHsKCiAgICAgICAgICAgICAgICAjIEZJWE1FOiBuZWVkcyBtb3JlIHRlc3RpbmcKICAgICAgICAgICAgICAgIGlmICggJGlzX2tleXdvcmRfcmV0dXJuaW5nX2xpc3R7JG5leHRfbm9uYmxhbmtfdG9rZW59ICkgewogICAgICAgICAgICAgICAgICAgICRib25kX3N0ciA9ICRsaXN0X3N0ciBpZiAoICRib25kX3N0ciA+ICRsaXN0X3N0ciApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMga2V5d29yZHMgbGlrZSAndW5sZXNzJywgJ2lmJywgZXRjLCB3aXRoaW4gc3RhdGVtZW50cwogICAgICAgICAgICAgICAgIyBtYWtlIGdvb2QgYnJlYWtzCiAgICAgICAgICAgICAgICBpZiAoICRpc19nb29kX2tleXdvcmRfYnJlYWtwb2ludHskbmV4dF9ub25ibGFua190b2tlbn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJGJvbmRfc3RyID0gVkVSWV9XRUFLIC8gMS4wNTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB0cnkgbm90IHRvIGJyZWFrIGJlZm9yZSBhIGNvbW1hLWFycm93CiAgICAgICAgICAgIGVsc2lmICggJG5leHRfbm9uYmxhbmtfdHlwZSBlcSAnPT4nICkgewogICAgICAgICAgICAgICAgaWYgKCAkYm9uZF9zdHIgPCBTVFJPTkcgKSB7ICRib25kX3N0ciA9IFNUUk9ORyB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgIyBBZGRpdGlvbmFsIGhhcmR3aXJlZCBOT0JSRUFLIHJ1bGVzCiAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgICAgICAgICMgbWFwMS50IC0tIGNvcnJlY3QgZm9yIGEgcXVpcmsgaW4gcGVybAogICAgICAgICAgICBpZiAoICAgJHRva2VuIGVxICcoJwogICAgICAgICAgICAgICAgJiYgJG5leHRfbm9uYmxhbmtfdHlwZSBlcSAnaScKICAgICAgICAgICAgICAgICYmICRsYXN0X25vbmJsYW5rX3R5cGUgZXEgJ2snCiAgICAgICAgICAgICAgICAmJiAkaXNfc29ydF9tYXBfZ3JlcHskbGFzdF9ub25ibGFua190b2tlbn0gKQoKICAgICAgICAgICAgICAjICAgICAvXihzb3J0fG1hcHxncmVwKSQvICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJGJvbmRfc3RyID0gTk9fQlJFQUs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZXh0cnVkZS50OiBkbyBub3QgYnJlYWsgYmVmb3JlIHBhcmVuIGF0OgogICAgICAgICAgICAjICAgIC1sIHBpZF9maWxlbmFtZSgKICAgICAgICAgICAgaWYgKCAkbGFzdF9ub25ibGFua190eXBlIGVxICdGJyAmJiAkbmV4dF9ub25ibGFua190b2tlbiBlcSAnKCcgKSB7CiAgICAgICAgICAgICAgICAkYm9uZF9zdHIgPSBOT19CUkVBSzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBpbiBvbGRlciB2ZXJzaW9uIG9mIHBlcmwsIHVzZSBzdHJpY3QgY2FuIGNhdXNlIHByb2JsZW1zIHdpdGgKICAgICAgICAgICAgIyBicmVha3MgYmVmb3JlIGJhcmUgd29yZHMgZm9sbG93aW5nIG9wZW5pbmcgcGFyZW5zLiAgRm9yIGV4YW1wbGUsCiAgICAgICAgICAgICMgdGhpcyB3aWxsIGZhaWwgdW5kZXIgb2xkZXIgdmVyc2lvbnMgaWYgYSBicmVhayBpcyBtYWRlIGJldHdlZW4KICAgICAgICAgICAgIyAnKCcgYW5kICdNQUlMJzogdXNlIHN0cmljdDsgb3BlbiggTUFJTCwgImEgbG9uZyBmaWxlbmFtZSBvcgogICAgICAgICAgICAjIGNvbW1hbmQiKTsgY2xvc2UgTUFJTDsKICAgICAgICAgICAgaWYgKCAkdHlwZSBlcSAneycgKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkdG9rZW4gZXEgJygnICYmICRuZXh0X25vbmJsYW5rX3R5cGUgZXEgJ3cnICkgewoKICAgICAgICAgICAgICAgICAgICAjIGJ1dCBpdCdzIGZpbmUgdG8gYnJlYWsgaWYgdGhlIHdvcmQgaXMgZm9sbG93ZWQgYnkgYSAnPT4nCiAgICAgICAgICAgICAgICAgICAgIyBvciBpZiBpdCBpcyBvYnZpb3VzbHkgYSBzdWIgY2FsbAogICAgICAgICAgICAgICAgICAgIG15ICRpX25leHRfbmV4dF9ub25ibGFuayA9ICRpX25leHRfbm9uYmxhbmsgKyAxOwogICAgICAgICAgICAgICAgICAgIG15ICRuZXh0X25leHRfdHlwZSA9ICR0eXBlc190b19nb1skaV9uZXh0X25leHRfbm9uYmxhbmtdOwogICAgICAgICAgICAgICAgICAgIGlmICggICAkbmV4dF9uZXh0X3R5cGUgZXEgJ2InCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRpX25leHRfbm9uYmxhbmsgPCAkbWF4X2luZGV4X3RvX2dvICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRpX25leHRfbmV4dF9ub25ibGFuaysrOwogICAgICAgICAgICAgICAgICAgICAgICAkbmV4dF9uZXh0X3R5cGUgPSAkdHlwZXNfdG9fZ29bJGlfbmV4dF9uZXh0X25vbmJsYW5rXTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgV2UnbGwgY2hlY2sgZm9yIGFuIG9sZCBicmVha3BvaW50IGFuZCBrZWVwIGEgbGVhZGluZwogICAgICAgICAgICAgICAgICAgICMgYmFyZXdvcmQgaWYgaXQgd2FzIHRoYXQgd2F5IGluIHRoZSBpbnB1dCBmaWxlLgogICAgICAgICAgICAgICAgICAgICMgUHJlc3VtYWJseSBpdCB3YXMgb2sgdGhhdCB3YXkuICBGb3IgZXhhbXBsZSwgdGhlCiAgICAgICAgICAgICAgICAgICAgIyBmb2xsb3dpbmcgd291bGQgcmVtYWluIHVuY2hhbmdlZDoKICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyBAbW9udGhzID0gKAogICAgICAgICAgICAgICAgICAgICMgICBKYW51YXJ5LCAgIEZlYnJ1YXJ5LCBNYXJjaCwgICAgQXByaWwsCiAgICAgICAgICAgICAgICAgICAgIyAgIE1heSwgICAgICAgSnVuZSwgICAgIEp1bHksICAgICBBdWd1c3QsCiAgICAgICAgICAgICAgICAgICAgIyAgIFNlcHRlbWJlciwgT2N0b2JlciwgIE5vdmVtYmVyLCBEZWNlbWJlciwKICAgICAgICAgICAgICAgICAgICAjICk7CiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgVGhpcyBzaG91bGQgYmUgc3VmZmljaWVudDoKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICEkb2xkX2JyZWFrcG9pbnRfdG9fZ29bJGldCiAgICAgICAgICAgICAgICAgICAgICAgICYmICggICAkbmV4dF9uZXh0X3R5cGUgZXEgJywnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkbmV4dF9uZXh0X3R5cGUgZXEgJ30nICkKICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRib25kX3N0ciA9IE5PX0JSRUFLOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBEbyBub3QgYnJlYWsgYmV0d2VlbiBhIHBvc3NpYmxlIGZpbGVoYW5kbGUgYW5kIGEgPyBvciAvIGFuZCBkbwogICAgICAgICAgICAjIG5vdCBpbnRyb2R1Y2UgYSBicmVhayBhZnRlciBpdCBpZiB0aGVyZSBpcyBubyBibGFuawogICAgICAgICAgICAjIChleHRydWRlLnQpCiAgICAgICAgICAgIGVsc2lmICggJHR5cGUgZXEgJ1onICkgewoKICAgICAgICAgICAgICAgICMgZG9uJ3QgYnJlYWsuLgogICAgICAgICAgICAgICAgaWYgKAoKICAgICAgICAgICAgICAgICAgICAjIGlmIHRoZXJlIGlzIG5vIGJsYW5rIGFuZCB3ZSBkbyBub3Qgd2FudCBvbmUuIEV4YW1wbGVzOgogICAgICAgICAgICAgICAgICAgICMgICAgcHJpbnQgJHgrKyAgICAjIGRvIG5vdCBicmVhayBhZnRlciAkeAogICAgICAgICAgICAgICAgICAgICMgICAgcHJpbnQgSFRNTCJIRUxMTyIgICAjIGJyZWFrIG9rIGFmdGVyIEhUTUwKICAgICAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICRuZXh0X3R5cGUgbmUgJ2InCiAgICAgICAgICAgICAgICAgICAgICAgICYmIGRlZmluZWQoICR3YW50X2xlZnRfc3BhY2V7JG5leHRfdHlwZX0gKQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkd2FudF9sZWZ0X3NwYWNleyRuZXh0X3R5cGV9ID09IFdTX05PCiAgICAgICAgICAgICAgICAgICAgKQoKICAgICAgICAgICAgICAgICAgICAjIG9yIHdlIG1pZ2h0IGJlIGZvbGxvd2VkIGJ5IHRoZSBzdGFydCBvZiBhIHF1b3RlCiAgICAgICAgICAgICAgICAgICAgfHwgJG5leHRfbm9uYmxhbmtfdHlwZSA9fiAvXltcL1w/XSQvCiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkYm9uZF9zdHIgPSBOT19CUkVBSzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBCcmVha2luZyBiZWZvcmUgYSA/IGJlZm9yZSBhIHF1b3RlIGNhbiBjYXVzZSB0cm91YmxlIGlmCiAgICAgICAgICAgICMgdGhleSBhcmUgbm90IHNlcGFyYXRlZCBieSBhIGJsYW5rLgogICAgICAgICAgICAjIEV4YW1wbGU6IGEgc3ludGF4IGVycm9yIG9jY3VycyBpZiB5b3UgYnJlYWsgYmVmb3JlIHRoZSA/IGhlcmUKICAgICAgICAgICAgIyAgbXkkbG9naWM9am9pbiRhbGw/JyAmJiAnOicgfHwgJyxAcmVnZXhwczsKICAgICAgICAgICAgIyBGcm9tOiBQcm9mZXNzaW9uYWxfUGVybF9Qcm9ncmFtbWluZ19Db2RlL211bHRpZmluZC5wbAogICAgICAgICAgICBpZiAoICRuZXh0X25vbmJsYW5rX3R5cGUgZXEgJz8nICkgewogICAgICAgICAgICAgICAgJGJvbmRfc3RyID0gTk9fQlJFQUsKICAgICAgICAgICAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bICRpX25leHRfbm9uYmxhbmsgKyAxIF0gZXEgJ1EnICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQnJlYWtpbmcgYmVmb3JlIGEgLiBmb2xsb3dlZCBieSBhIG51bWJlcgogICAgICAgICAgICAjIGNhbiBjYXVzZSB0cm91YmxlIGlmIHRoZXJlIGlzIG5vIGludGVydmVuaW5nIHNwYWNlCiAgICAgICAgICAgICMgRXhhbXBsZTogYSBzeW50YXggZXJyb3Igb2NjdXJzIGlmIHlvdSBicmVhayBiZWZvcmUgdGhlIC4yIGhlcmUKICAgICAgICAgICAgIyAgJHN0ciAuPSBwYWNrKCRlbmRpYW4uMiwgZW5zdXJyb2dhdGUoJG9yZCkpOwogICAgICAgICAgICAjIEZyb206IHBlcmw1OC9Vbmljb2RlLnBtCiAgICAgICAgICAgIGVsc2lmICggJG5leHRfbm9uYmxhbmtfdHlwZSBlcSAnLicgKSB7CiAgICAgICAgICAgICAgICAkYm9uZF9zdHIgPSBOT19CUkVBSwogICAgICAgICAgICAgICAgICBpZiAoICR0eXBlc190b19nb1sgJGlfbmV4dF9ub25ibGFuayArIDEgXSBlcSAnbicgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJGJvbmRfc3RyXzIgPSAkYm9uZF9zdHI7CgogICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICMgRW5kIG9mIGhhcmR3aXJlZCBydWxlcwogICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICMgQm9uZCBTdHJlbmd0aCBTZWN0aW9uIDM6CiAgICAgICAgICAgICMgQXBwbHkgdGFibGUgcnVsZXMuIFRoZXNlIGhhdmUgcHJpb3JpdHkgb3ZlciB0aGUgYWJvdmUKICAgICAgICAgICAgIyBoYXJkd2lyZWQgcnVsZXMuCiAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgICAgICAgIG15ICR0YWJ1bGF0ZWRfYm9uZF9zdHI7CiAgICAgICAgICAgIG15ICRsdHlwZSA9ICR0eXBlOwogICAgICAgICAgICBteSAkcnR5cGUgPSAkbmV4dF9ub25ibGFua190eXBlOwogICAgICAgICAgICBpZiAoICR0b2tlbiA9fiAvXltcKFxbXHtcKVxdXH1dLyApIHsgJGx0eXBlID0gJHR5cGUgLiAkdG9rZW4gfQogICAgICAgICAgICBpZiAoICRuZXh0X25vbmJsYW5rX3Rva2VuID1+IC9eW1woXFtce1wpXF1cfV0vICkgewogICAgICAgICAgICAgICAgJHJ0eXBlID0gJG5leHRfbm9uYmxhbmtfdHlwZSAuICRuZXh0X25vbmJsYW5rX3Rva2VuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRiaW5hcnlfYm9uZF9zdHJlbmd0aHskbHR5cGV9eyRydHlwZX0gKSB7CiAgICAgICAgICAgICAgICAkYm9uZF9zdHIgICAgICAgICAgID0gJGJpbmFyeV9ib25kX3N0cmVuZ3RoeyRsdHlwZX17JHJ0eXBlfTsKICAgICAgICAgICAgICAgICR0YWJ1bGF0ZWRfYm9uZF9zdHIgPSAkYm9uZF9zdHI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJG5vYnJlYWtfcmhzeyRsdHlwZX0gfHwgJG5vYnJlYWtfbGhzeyRydHlwZX0gKSB7CiAgICAgICAgICAgICAgICAkYm9uZF9zdHIgICAgICAgICAgID0gTk9fQlJFQUs7CiAgICAgICAgICAgICAgICAkdGFidWxhdGVkX2JvbmRfc3RyID0gJGJvbmRfc3RyOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG15ICRib25kX3N0cl8zID0gJGJvbmRfc3RyOwoKICAgICAgICAgICAgIyBJZiB0aGUgaGFyZHdpcmVkIHJ1bGVzIGNvbmZsaWN0IHdpdGggdGhlIHRhYnVsYXRlZCBib25kCiAgICAgICAgICAgICMgc3RyZW5ndGggdGhlbiB0aGVyZSBpcyBhbiBpbmNvbnNpc3RlbmN5IHRoYXQgc2hvdWxkIGJlIGZpeGVkCiAgICAgICAgICAgIEZPUk1BVFRFUl9ERUJVR19GTEFHX0JPTkRfVEFCTEVTCiAgICAgICAgICAgICAgJiYgJHRhYnVsYXRlZF9ib25kX3N0cgogICAgICAgICAgICAgICYmICRib25kX3N0cl8xCiAgICAgICAgICAgICAgJiYgJGJvbmRfc3RyXzEgIT0gJGJvbmRfc3RyXzIKICAgICAgICAgICAgICAmJiAkYm9uZF9zdHJfMiAhPSAkdGFidWxhdGVkX2JvbmRfc3RyCiAgICAgICAgICAgICAgJiYgZG8gewogICAgICAgICAgICAgICAgcHJpbnQgU1RERVJSCiJCT05EX1RBQkxFUzogbHR5cGU9JGx0eXBlIHJ0eXBlPSRydHlwZSAkYm9uZF9zdHJfMS0+JGJvbmRfc3RyXzItPiRib25kX3N0cl8zXG4iOwogICAgICAgICAgICAgIH07CgogICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICMgQm9uZCBTdHJlbmd0aCBTZWN0aW9uIDQ6CiAgICAgICAgICAgIyBNb2RpZnkgc3RyZW5ndGhzIG9mIGNlcnRhaW4gdG9rZW5zIHdoaWNoIG9mdGVuIG9jY3VyIGluIHNlcXVlbmNlCiAgICAgICAgICAgIyBieSBhZGRpbmcgYSBzbWFsbCBiaWFzIHRvIGVhY2ggb25lIGluIHR1cm4gc28gdGhhdCB0aGUgYnJlYWtzCiAgICAgICAgICAgIyBvY2N1ciBmcm9tIGxlZnQgdG8gcmlnaHQuCiAgICAgICAgICAgIwogICAgICAgICAgICMgTm90ZSB0aGF0IHdlIG9ubHkgY2hhbmdpbmcgc3RyZW5ndGhzIGJ5IHNtYWxsIGFtb3VudHMgaGVyZSwKICAgICAgICAgICAjIGFuZCB1c3VhbGx5IGluY3JlYXNpbmcsIHNvIHdlIHNob3VsZCBub3QgYmUgYWx0ZXJpbmcgYW55IE5PX0JSRUFLcy4KICAgICAgICAgICAjIE90aGVyIHJvdXRpbmVzIHdoaWNoIGNoZWNrIGZvciBOT19CUkVBS3Mgd2lsbCB1c2UgYSB0b2xlcmFuY2UKICAgICAgICAgICAjIG9mIG9uZSB0byBhdm9pZCBhbnkgcHJvYmxlbS4KICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgICAgICAgICMgVGhlIGJpYXMgdGFibGVzIHVzZSBzcGVjaWFsIGtleXMKICAgICAgICAgICAgbXkgJGxlZnRfa2V5ID0gYmlhc190YWJsZV9rZXkoICR0eXBlLCAkdG9rZW4gKTsKICAgICAgICAgICAgbXkgJHJpZ2h0X2tleSA9CiAgICAgICAgICAgICAgYmlhc190YWJsZV9rZXkoICRuZXh0X25vbmJsYW5rX3R5cGUsICRuZXh0X25vbmJsYW5rX3Rva2VuICk7CgogICAgICAgICAgICAjIGFkZCBhbnkgYmlhcyBzZXQgYnkgc3ViIHNjYW5fbGlzdCBhdCBvbGQgY29tbWEgYnJlYWsgcG9pbnRzLgogICAgICAgICAgICBpZiAoICR0eXBlIGVxICcsJyApIHsgJGJvbmRfc3RyICs9ICRib25kX3N0cmVuZ3RoX3RvX2dvWyRpXSB9CgogICAgICAgICAgICAjIGJpYXMgbGVmdCB0b2tlbgogICAgICAgICAgICBlbHNpZiAoIGRlZmluZWQoICRiaWFzeyRsZWZ0X2tleX0gKSApIHsKICAgICAgICAgICAgICAgIGlmICggISR3YW50X2JyZWFrX2JlZm9yZXskbGVmdF9rZXl9ICkgewogICAgICAgICAgICAgICAgICAgICRiaWFzeyRsZWZ0X2tleX0gKz0gJGRlbHRhX2JpYXM7CiAgICAgICAgICAgICAgICAgICAgJGJvbmRfc3RyICs9ICRiaWFzeyRsZWZ0X2tleX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYmlhcyByaWdodCB0b2tlbgogICAgICAgICAgICBpZiAoIGRlZmluZWQoICRiaWFzeyRyaWdodF9rZXl9ICkgKSB7CiAgICAgICAgICAgICAgICBpZiAoICR3YW50X2JyZWFrX2JlZm9yZXskcmlnaHRfa2V5fSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBmb3IgbGVhZGluZyAnLicgYWxpZ24gYWxsIGJ1dCAnc2hvcnQnIHF1b3RlczsgdGhlIGlkZWEKICAgICAgICAgICAgICAgICAgICAjIGlzIHRvIG5vdCBwbGFjZSBzb21ldGhpbmcgbGlrZSAiXG4iIG9uIGEgc2luZ2xlIGxpbmUuCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkcmlnaHRfa2V5IGVxICcuJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdW5sZXNzICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3R5cGUgZXEgJy4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoKCR0b2tlbikgPD0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkck9wdHNfc2hvcnRfY29uY2F0ZW5hdGlvbl9pdGVtX2xlbmd0aCApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoICEkaXNfY2xvc2luZ190b2tlbnskdG9rZW59ICkKICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRiaWFzeyRyaWdodF9rZXl9ICs9ICRkZWx0YV9iaWFzOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkYmlhc3skcmlnaHRfa2V5fSArPSAkZGVsdGFfYmlhczsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJGJvbmRfc3RyICs9ICRiaWFzeyRyaWdodF9rZXl9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIG15ICRib25kX3N0cl80ID0gJGJvbmRfc3RyOwoKICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAjIEJvbmQgU3RyZW5ndGggU2VjdGlvbiA1OgogICAgICAgICAgICAjIEZpZnRoIEFwcHJveGltYXRpb24uCiAgICAgICAgICAgICMgVGFrZSBuZXN0aW5nIGRlcHRoIGludG8gYWNjb3VudCBieSBhZGRpbmcgdGhlIG5lc3RpbmcgZGVwdGgKICAgICAgICAgICAgIyB0byB0aGUgYm9uZCBzdHJlbmd0aC4KICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICBteSAkc3RyZW5ndGg7CgogICAgICAgICAgICBpZiAoIGRlZmluZWQoJGJvbmRfc3RyKSAmJiAhJG5vYnJlYWtfdG9fZ29bJGldICkgewogICAgICAgICAgICAgICAgaWYgKCAkdG90YWxfbmVzdGluZ19kZXB0aCA+IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgJHN0cmVuZ3RoID0gJGJvbmRfc3RyICsgJHRvdGFsX25lc3RpbmdfZGVwdGg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkc3RyZW5ndGggPSAkYm9uZF9zdHI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkc3RyZW5ndGggPSBOT19CUkVBSzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAjIEJvbmQgU3RyZW5ndGggU2VjdGlvbiA2OgogICAgICAgICAgICAjIFNpeHRoIEFwcHJveGltYXRpb24uIFdlbGRzLgogICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICAgICAgICAjIERvIG5vdCBhbGxvdyBhIGJyZWFrIHdpdGhpbiB3ZWxkcywKICAgICAgICAgICAgaWYgKCB3ZWxkX2xlbl9yaWdodF90b19nbygkaSkgKSB7ICRzdHJlbmd0aCA9IE5PX0JSRUFLIH0KCiAgICAgICAgICAgICMgQnV0IGVuY291cmFnZSBicmVha2luZyBhZnRlciBvcGVuaW5nIHdlbGRlZCB0b2tlbnMKICAgICAgICAgICAgZWxzaWYgKCB3ZWxkX2xlbl9sZWZ0X3RvX2dvKCRpKSAmJiAkaXNfb3BlbmluZ190b2tlbnskdG9rZW59ICkgewogICAgICAgICAgICAgICAgJHN0cmVuZ3RoIC09IDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYWx3YXlzIGJyZWFrIGFmdGVyIHNpZGUgY29tbWVudAogICAgICAgICAgICBpZiAoICR0eXBlIGVxICcjJyApIHsgJHN0cmVuZ3RoID0gMCB9CgogICAgICAgICAgICAkYm9uZF9zdHJlbmd0aF90b19nb1skaV0gPSAkc3RyZW5ndGg7CgogICAgICAgICAgICBGT1JNQVRURVJfREVCVUdfRkxBR19CT05EICYmIGRvIHsKICAgICAgICAgICAgICAgIG15ICRzdHIgPSBzdWJzdHIoICR0b2tlbiwgMCwgMTUgKTsKICAgICAgICAgICAgICAgICRzdHIgLj0gJyAnIHggKCAxNiAtIGxlbmd0aCgkc3RyKSApOwogICAgICAgICAgICAgICAgcHJpbnQgU1RET1VUCiJCT05EOiAgaT0kaSAkc3RyICR0eXBlICRuZXh0X25vbmJsYW5rX3R5cGUgZGVwdGg9JHRvdGFsX25lc3RpbmdfZGVwdGggc3RyZW5ndGg9JGJvbmRfc3RyXzEgLT4gJGJvbmRfc3RyXzIgLT4gJGJvbmRfc3RyXzMgLT4gJGJvbmRfc3RyXzQgJGJvbmRfc3RyIC0+ICRzdHJlbmd0aCBcbiI7CiAgICAgICAgICAgIH07CiAgICAgICAgfSAjIyBlbmQgbWFpbiBsb29wCiAgICAgICAgcmV0dXJuOwogICAgfSAjIyBlbmQgc3ViIHNldF9ib25kX3N0cmVuZ3Rocwp9CgpzdWIgcGFkX2FycmF5X3RvX2dvIHsKCiAgICAjIHRvIHNpbXBsaWZ5IGNvZGluZyBpbiBzY2FuX2xpc3QgYW5kIHNldF9ib25kX3N0cmVuZ3RocywgaXQgaGVscHMKICAgICMgdG8gY3JlYXRlIHNvbWUgZXh0cmEgYmxhbmsgdG9rZW5zIGF0IHRoZSBlbmQgb2YgdGhlIGFycmF5cwogICAgJHRva2Vuc190b19nb1sgJG1heF9pbmRleF90b19nbyArIDEgXSA9ICcnOwogICAgJHRva2Vuc190b19nb1sgJG1heF9pbmRleF90b19nbyArIDIgXSA9ICcnOwogICAgJHR5cGVzX3RvX2dvWyAkbWF4X2luZGV4X3RvX2dvICsgMSBdICA9ICdiJzsKICAgICR0eXBlc190b19nb1sgJG1heF9pbmRleF90b19nbyArIDIgXSAgPSAnYic7CiAgICAkbmVzdGluZ19kZXB0aF90b19nb1sgJG1heF9pbmRleF90b19nbyArIDEgXSA9CiAgICAgICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dOwoKICAgICMgICAgL15bUlx9XClcXV0kLwogICAgaWYgKCAkaXNfY2xvc2luZ190eXBleyAkdHlwZXNfdG9fZ29bJG1heF9pbmRleF90b19nb10gfSApIHsKICAgICAgICBpZiAoICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dIDw9IDAgKSB7CgogICAgICAgICAgICAjIHNob3VsZG4ndCBoYXBwZW46CiAgICAgICAgICAgIHVubGVzcyAoIGdldF9zYXdfYnJhY2VfZXJyb3IoKSApIHsKICAgICAgICAgICAgICAgIHdhcm5pbmcoCiJQcm9ncmFtIGJ1ZyBpbiBzY2FuX2xpc3Q6IGhpdCBuZXN0aW5nIGVycm9yIHdoaWNoIHNob3VsZCBoYXZlIGJlZW4gY2F1Z2h0XG4iCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcmVwb3J0X2RlZmluaXRlX2J1ZygpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkbmVzdGluZ19kZXB0aF90b19nb1sgJG1heF9pbmRleF90b19nbyArIDEgXSAtPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjICAgICAgIC9eW0xce1woXFtdJC8KICAgIGVsc2lmICggJGlzX29wZW5pbmdfdHlwZXsgJHR5cGVzX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dIH0gKSB7CiAgICAgICAgJG5lc3RpbmdfZGVwdGhfdG9fZ29bICRtYXhfaW5kZXhfdG9fZ28gKyAxIF0gKz0gMTsKICAgIH0KICAgIHJldHVybjsKfQoKeyAgICAjIGJlZ2luIHNjYW5fbGlzdAoKICAgIG15ICgKICAgICAgICAkYmxvY2tfdHlwZSwgICAgICAgICAgICAgICAkY3VycmVudF9kZXB0aCwKICAgICAgICAkZGVwdGgsICAgICAgICAgICAgICAgICAgICAkaSwKICAgICAgICAkaV9sYXN0X25vbmJsYW5rX3Rva2VuLCAgICAkbGFzdF9jb2xvbl9zZXF1ZW5jZV9udW1iZXIsCiAgICAgICAgJGxhc3Rfbm9uYmxhbmtfdG9rZW4sICAgICAgJGxhc3Rfbm9uYmxhbmtfdHlwZSwKICAgICAgICAkbGFzdF9ub25ibGFua19ibG9ja190eXBlLCAkbGFzdF9vbGRfYnJlYWtwb2ludF9jb3VudCwKICAgICAgICAkbWluaW11bV9kZXB0aCwgICAgICAgICAgICAkbmV4dF9ub25ibGFua19ibG9ja190eXBlLAogICAgICAgICRuZXh0X25vbmJsYW5rX3Rva2VuLCAgICAgICRuZXh0X25vbmJsYW5rX3R5cGUsCiAgICAgICAgJG9sZF9icmVha3BvaW50X2NvdW50LCAgICAgJHN0YXJ0aW5nX2JyZWFrcG9pbnRfY291bnQsCiAgICAgICAgJHN0YXJ0aW5nX2RlcHRoLCAgICAgICAgICAgJHRva2VuLAogICAgICAgICR0eXBlLCAgICAgICAgICAgICAgICAgICAgICR0eXBlX3NlcXVlbmNlLAogICAgKTsKCiAgICBteSAoCiAgICAgICAgQGJyZWFrcG9pbnRfc3RhY2ssICAgICAgICAgICAgICBAYnJlYWtwb2ludF91bmRvX3N0YWNrLAogICAgICAgIEBjb21tYV9pbmRleCwgICAgICAgICAgICAgICAgICAgQGNvbnRhaW5lcl90eXBlLAogICAgICAgIEBpZGVudGlmaWVyX2NvdW50X3N0YWNrLCAgICAgICAgQGluZGV4X2JlZm9yZV9hcnJvdywKICAgICAgICBAaW50ZXJydXB0ZWRfbGlzdCwgICAgICAgICAgICAgIEBpdGVtX2NvdW50X3N0YWNrLAogICAgICAgIEBsYXN0X2NvbW1hX2luZGV4LCAgICAgICAgICAgICAgQGxhc3RfZG90X2luZGV4LAogICAgICAgIEBsYXN0X25vbmJsYW5rX3R5cGUsICAgICAgICAgICAgQG9sZF9icmVha3BvaW50X2NvdW50X3N0YWNrLAogICAgICAgIEBvcGVuaW5nX3N0cnVjdHVyZV9pbmRleF9zdGFjaywgQHJmb3Jfc2VtaWNvbG9uX2xpc3QsCiAgICAgICAgQGhhc19vbGRfbG9naWNhbF9icmVha3BvaW50cywgICBAcmFuZF9vcl9saXN0LAogICAgICAgIEBpX2VxdWFscywKICAgICk7CgogICAgIyByb3V0aW5lIHRvIGRlZmluZSBlc3NlbnRpYWwgdmFyaWFibGVzIHdoZW4gd2UgZ28gJ3VwJyB0bwogICAgIyBhIG5ldyBkZXB0aAogICAgc3ViIGNoZWNrX2Zvcl9uZXdfbWluaW11bV9kZXB0aCB7CiAgICAgICAgbXkgJGRlcHRoID0gc2hpZnQ7CiAgICAgICAgaWYgKCAkZGVwdGggPCAkbWluaW11bV9kZXB0aCApIHsKCiAgICAgICAgICAgICRtaW5pbXVtX2RlcHRoID0gJGRlcHRoOwoKICAgICAgICAgICAgIyB0aGVzZSBhcnJheXMgbmVlZCBub3QgcmV0YWluIHZhbHVlcyBiZXR3ZWVuIGNhbGxzCiAgICAgICAgICAgICRicmVha3BvaW50X3N0YWNrWyRkZXB0aF0gICAgICAgICAgICAgID0gJHN0YXJ0aW5nX2JyZWFrcG9pbnRfY291bnQ7CiAgICAgICAgICAgICRjb250YWluZXJfdHlwZVskZGVwdGhdICAgICAgICAgICAgICAgID0gIiI7CiAgICAgICAgICAgICRpZGVudGlmaWVyX2NvdW50X3N0YWNrWyRkZXB0aF0gICAgICAgID0gMDsKICAgICAgICAgICAgJGluZGV4X2JlZm9yZV9hcnJvd1skZGVwdGhdICAgICAgICAgICAgPSAtMTsKICAgICAgICAgICAgJGludGVycnVwdGVkX2xpc3RbJGRlcHRoXSAgICAgICAgICAgICAgPSAxOwogICAgICAgICAgICAkaXRlbV9jb3VudF9zdGFja1skZGVwdGhdICAgICAgICAgICAgICA9IDA7CiAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3R5cGVbJGRlcHRoXSAgICAgICAgICAgID0gIiI7CiAgICAgICAgICAgICRvcGVuaW5nX3N0cnVjdHVyZV9pbmRleF9zdGFja1skZGVwdGhdID0gLTE7CgogICAgICAgICAgICAkYnJlYWtwb2ludF91bmRvX3N0YWNrWyRkZXB0aF0gICAgICAgPSB1bmRlZjsKICAgICAgICAgICAgJGNvbW1hX2luZGV4WyRkZXB0aF0gICAgICAgICAgICAgICAgID0gdW5kZWY7CiAgICAgICAgICAgICRsYXN0X2NvbW1hX2luZGV4WyRkZXB0aF0gICAgICAgICAgICA9IHVuZGVmOwogICAgICAgICAgICAkbGFzdF9kb3RfaW5kZXhbJGRlcHRoXSAgICAgICAgICAgICAgPSB1bmRlZjsKICAgICAgICAgICAgJG9sZF9icmVha3BvaW50X2NvdW50X3N0YWNrWyRkZXB0aF0gID0gdW5kZWY7CiAgICAgICAgICAgICRoYXNfb2xkX2xvZ2ljYWxfYnJlYWtwb2ludHNbJGRlcHRoXSA9IDA7CiAgICAgICAgICAgICRyYW5kX29yX2xpc3RbJGRlcHRoXSAgICAgICAgICAgICAgICA9IFtdOwogICAgICAgICAgICAkcmZvcl9zZW1pY29sb25fbGlzdFskZGVwdGhdICAgICAgICAgPSBbXTsKICAgICAgICAgICAgJGlfZXF1YWxzWyRkZXB0aF0gICAgICAgICAgICAgICAgICAgID0gLTE7CgogICAgICAgICAgICAjIHRoZXNlIGFycmF5cyBtdXN0IHJldGFpbiB2YWx1ZXMgYmV0d2VlbiBjYWxscwogICAgICAgICAgICBpZiAoICFkZWZpbmVkKCAkaGFzX2Jyb2tlbl9zdWJsaXN0WyRkZXB0aF0gKSApIHsKICAgICAgICAgICAgICAgICRkb250X2FsaWduWyRkZXB0aF0gICAgICAgICA9IDA7CiAgICAgICAgICAgICAgICAkaGFzX2Jyb2tlbl9zdWJsaXN0WyRkZXB0aF0gPSAwOwogICAgICAgICAgICAgICAgJHdhbnRfY29tbWFfYnJlYWtbJGRlcHRoXSAgID0gMDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyByb3V0aW5lIHRvIGRlY2lkZSB3aGljaCBjb21tYXMgdG8gYnJlYWsgYXQgd2l0aGluIGEgY29udGFpbmVyOwogICAgIyByZXR1cm5zOgogICAgIyAgICRicF9jb3VudCA9IG51bWJlciBvZiBjb21tYSBicmVha3BvaW50cyBzZXQKICAgICMgICAkZG9fbm90X2JyZWFrX2FwYXJ0ID0gYSBmbGFnIGluZGljYXRpbmcgaWYgY29udGFpbmVyIG5lZWQgbm90CiAgICAjICAgICBiZSBicm9rZW4gb3BlbgogICAgc3ViIHNldF9jb21tYV9icmVha3BvaW50cyB7CgogICAgICAgIG15ICRkZCAgICAgICAgICAgICAgICAgPSBzaGlmdDsKICAgICAgICBteSAkYnBfY291bnQgICAgICAgICAgID0gMDsKICAgICAgICBteSAkZG9fbm90X2JyZWFrX2FwYXJ0ID0gMDsKCiAgICAgICAgIyBhbnl0aGluZyB0byBkbz8KICAgICAgICBpZiAoICRpdGVtX2NvdW50X3N0YWNrWyRkZF0gKSB7CgogICAgICAgICAgICAjIGhhbmRsZSBjb21tYXMgbm90IGluIGNvbnRhaW5lcnMuLi4KICAgICAgICAgICAgaWYgKCAkZG9udF9hbGlnblskZGRdICkgewogICAgICAgICAgICAgICAgZG9fdW5jb250YWluZWRfY29tbWFfYnJlYWtzKCRkZCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaGFuZGxlIGNvbW1hcyB3aXRoaW4gY29udGFpbmVycy4uLgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIG15ICRmYmMgPSAkZm9yY2VkX2JyZWFrcG9pbnRfY291bnQ7CgogICAgICAgICAgICAgICAgIyBhbHdheXMgb3BlbiBjb21tYSBsaXN0cyBub3QgcHJlY2VkZWQgYnkga2V5d29yZHMsCiAgICAgICAgICAgICAgICAjIGJhcmV3b3JkcywgaWRlbnRpZmllcnMgKHRoYXQgaXMsIGFueXRoaW5nIHRoYXQgZG9lc24ndAogICAgICAgICAgICAgICAgIyBsb29rIGxpa2UgYSBmdW5jdGlvbiBjYWxsKQogICAgICAgICAgICAgICAgbXkgJG11c3RfYnJlYWtfb3BlbiA9ICRsYXN0X25vbmJsYW5rX3R5cGVbJGRkXSAhfiAvXltrd2lVXSQvOwoKICAgICAgICAgICAgICAgIHNldF9jb21tYV9icmVha3BvaW50c19kbygKICAgICAgICAgICAgICAgICAgICAkZGQsCiAgICAgICAgICAgICAgICAgICAgJG9wZW5pbmdfc3RydWN0dXJlX2luZGV4X3N0YWNrWyRkZF0sCiAgICAgICAgICAgICAgICAgICAgJGksCiAgICAgICAgICAgICAgICAgICAgJGl0ZW1fY291bnRfc3RhY2tbJGRkXSwKICAgICAgICAgICAgICAgICAgICAkaWRlbnRpZmllcl9jb3VudF9zdGFja1skZGRdLAogICAgICAgICAgICAgICAgICAgICRjb21tYV9pbmRleFskZGRdLAogICAgICAgICAgICAgICAgICAgICRuZXh0X25vbmJsYW5rX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lcl90eXBlWyRkZF0sCiAgICAgICAgICAgICAgICAgICAgJGludGVycnVwdGVkX2xpc3RbJGRkXSwKICAgICAgICAgICAgICAgICAgICBcJGRvX25vdF9icmVha19hcGFydCwKICAgICAgICAgICAgICAgICAgICAkbXVzdF9icmVha19vcGVuLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRicF9jb3VudCAgICAgICAgICAgPSAkZm9yY2VkX2JyZWFrcG9pbnRfY291bnQgLSAkZmJjOwogICAgICAgICAgICAgICAgJGRvX25vdF9icmVha19hcGFydCA9IDAgaWYgJG11c3RfYnJlYWtfb3BlbjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gKCAkYnBfY291bnQsICRkb19ub3RfYnJlYWtfYXBhcnQgKTsKICAgIH0KCiAgICBzdWIgZG9fdW5jb250YWluZWRfY29tbWFfYnJlYWtzIHsKCiAgICAgICAgIyBIYW5kbGUgY29tbWFzIG5vdCBpbiBjb250YWluZXJzLi4uCiAgICAgICAgIyBUaGlzIGlzIGEgY2F0Y2gtYWxsIHJvdXRpbmUgZm9yIGNvbW1hcyB0aGF0IHdlCiAgICAgICAgIyBkb24ndCBrbm93IHdoYXQgdG8gZG8gd2l0aCBiZWNhdXNlIHRoZSBkb24ndCBmYWxsCiAgICAgICAgIyB3aXRoaW4gY29udGFpbmVycy4gIFdlIHdpbGwgYmlhcyB0aGUgYm9uZCBzdHJlbmd0aAogICAgICAgICMgdG8gYnJlYWsgYXQgY29tbWFzIHdoaWNoIGVuZGVkIGxpbmVzIGluIHRoZSBpbnB1dAogICAgICAgICMgZmlsZS4gIFRoaXMgdXN1YWxseSB3b3JrcyBiZXR0ZXIgdGhhbiBqdXN0IHRyeWluZwogICAgICAgICMgdG8gcHV0IGFzIG1hbnkgaXRlbXMgb24gYSBsaW5lIGFzIHBvc3NpYmxlLiAgQQogICAgICAgICMgZG93bnNpZGUgaXMgdGhhdCBpZiB0aGUgaW5wdXQgZmlsZSBpcyBnYXJiYWdlIGl0CiAgICAgICAgIyB3b24ndCB3b3JrIHZlcnkgd2VsbC4gSG93ZXZlciwgdGhlIHVzZXIgY2FuIGFsd2F5cwogICAgICAgICMgcHJldmVudCBmb2xsb3dpbmcgdGhlIG9sZCBicmVha3BvaW50cyB3aXRoIHRoZQogICAgICAgICMgLWlvYiBmbGFnLgogICAgICAgIG15ICRkZCAgICAgICAgICAgICAgICAgICAgPSBzaGlmdDsKICAgICAgICBteSAkYmlhcyAgICAgICAgICAgICAgICAgID0gLS4wMTsKICAgICAgICBteSAkb2xkX2NvbW1hX2JyZWFrX2NvdW50ID0gMDsKICAgICAgICBmb3JlYWNoIG15ICRpaSAoIEB7ICRjb21tYV9pbmRleFskZGRdIH0gKSB7CiAgICAgICAgICAgIGlmICggJG9sZF9icmVha3BvaW50X3RvX2dvWyRpaV0gKSB7CiAgICAgICAgICAgICAgICAkb2xkX2NvbW1hX2JyZWFrX2NvdW50Kys7CiAgICAgICAgICAgICAgICAkYm9uZF9zdHJlbmd0aF90b19nb1skaWldID0gJGJpYXM7CgogICAgICAgICAgICAgICAgIyByZWR1Y2UgYmlhcyBtYWduaXR1ZGUgdG8gZm9yY2UgYnJlYWtzIGluIG9yZGVyCiAgICAgICAgICAgICAgICAkYmlhcyAqPSAwLjk5OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIEFsc28gcHV0IGEgYnJlYWsgYmVmb3JlIHRoZSBmaXJzdCBjb21tYSBpZgogICAgICAgICMgKDEpIHRoZXJlIHdhcyBhIGJyZWFrIHRoZXJlIGluIHRoZSBpbnB1dCwgYW5kCiAgICAgICAgIyAoMikgdGhlcmUgd2FzIGV4YWN0bHkgb25lIG9sZCBicmVhayBiZWZvcmUgdGhlIGZpcnN0IGNvbW1hIGJyZWFrCiAgICAgICAgIyAoMykgT0xEOiB0aGVyZSBhcmUgbXVsdGlwbGUgb2xkIGNvbW1hIGJyZWFrcwogICAgICAgICMgKDMpIE5FVzogdGhlcmUgYXJlIG9uZSBvciBtb3JlIG9sZCBjb21tYSBicmVha3MgKHNlZSByZXR1cm4gZXhhbXBsZSkKICAgICAgICAjCiAgICAgICAgIyBGb3IgZXhhbXBsZSwgd2Ugd2lsbCBmb2xsb3cgdGhlIHVzZXIgYW5kIGJyZWFrIGFmdGVyCiAgICAgICAgIyAncHJpbnQnIGluIHRoaXMgc25pcHBldDoKICAgICAgICAjICAgIHByaW50CiAgICAgICAgIyAgICAgICJjb25mb3JtYWJpbGl0eSAoTm90IHRoZSBzYW1lIGRpbWVuc2lvbilcbiIsCiAgICAgICAgIyAgICAgICJcdCIsICRoYXZlLCAiIGlzICIsIHRleHRfdW5pdCgkaHUpLCAiXG4iLAogICAgICAgICMgICAgICAiXHQiLCAkd2FudCwgIiBpcyAiLCB0ZXh0X3VuaXQoJHd1KSwgIlxuIiwKICAgICAgICAjICAgICAgOwogICAgICAgICMKICAgICAgICAjIEFub3RoZXIgZXhhbXBsZSwganVzdCBvbmUgY29tbWEsIHdoZXJlIHdlIHdpbGwgYnJlYWsgYWZ0ZXIKICAgICAgICAjIHRoZSByZXR1cm46CiAgICAgICAgIyAgcmV0dXJuCiAgICAgICAgIyAgICAkeCAqIGNvcygkYSkgLSAkeSAqIHNpbigkYSksCiAgICAgICAgIyAgICAkeCAqIHNpbigkYSkgKyAkeSAqIGNvcygkYSk7CgogICAgICAgICMgQnJlYWtpbmcgYSBwcmludCBzdGF0ZW1lbnQ6CiAgICAgICAgIyBwcmludCBTQVZFT1VUCiAgICAgICAgIyAgICggJD8gJiAxMjcgKSA/ICIgKFNJRyMiIC4gKCAkPyAmIDEyNyApIC4gIikiIDogIiIsCiAgICAgICAgIyAgICggJD8gJiAxMjggKSA/ICIgLS0gY29yZSBkdW1wZWQiIDogIiIsICJcbiI7CiAgICAgICAgIwogICAgICAgICMgIEJ1dCB3ZSB3aWxsIG5vdCBmb3JjZSBhIGJyZWFrIGFmdGVyIHRoZSBvcGVuaW5nIHBhcmVuIGhlcmUKICAgICAgICAjICAoY2F1c2VzIGEgYmxpbmtlcik6CiAgICAgICAgIyAgICAgICAgJGhlYXAtPntzdHJlYW19LT5zZXRfb3V0cHV0X2ZpbHRlcigKICAgICAgICAjICAgICAgICAgICAgcG9lOjpmaWx0ZXI6OnJlZmVyZW5jZS0+bmV3KCdteW90aGVyZnJlZXplcicpICksCiAgICAgICAgIyAgICAgICAgICA7CiAgICAgICAgIwogICAgICAgIG15ICRpX2ZpcnN0X2NvbW1hID0gJGNvbW1hX2luZGV4WyRkZF0tPlswXTsKICAgICAgICBpZiAoICRvbGRfYnJlYWtwb2ludF90b19nb1skaV9maXJzdF9jb21tYV0gKSB7CiAgICAgICAgICAgIG15ICRsZXZlbF9jb21tYSA9ICRsZXZlbHNfdG9fZ29bJGlfZmlyc3RfY29tbWFdOwogICAgICAgICAgICBteSAkaWJyZWFrICAgICAgPSAtMTsKICAgICAgICAgICAgbXkgJG9icF9jb3VudCAgID0gMDsKICAgICAgICAgICAgZm9yICggbXkgJGlpID0gJGlfZmlyc3RfY29tbWEgLSAxIDsgJGlpID49IDAgOyAkaWkgLT0gMSApIHsKICAgICAgICAgICAgICAgIGlmICggJG9sZF9icmVha3BvaW50X3RvX2dvWyRpaV0gKSB7CiAgICAgICAgICAgICAgICAgICAgJG9icF9jb3VudCsrOwogICAgICAgICAgICAgICAgICAgIGxhc3QgaWYgKCAkb2JwX2NvdW50ID4gMSApOwogICAgICAgICAgICAgICAgICAgICRpYnJlYWsgPSAkaWkKICAgICAgICAgICAgICAgICAgICAgIGlmICggJGxldmVsc190b19nb1skaWldID09ICRsZXZlbF9jb21tYSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIENoYW5nZWQgcnVsZSBmcm9tIG11bHRpcGxlIG9sZCBjb21tYXMgdG8ganVzdCBvbmUgaGVyZToKICAgICAgICAgICAgaWYgKCAkaWJyZWFrID49IDAgJiYgJG9icF9jb3VudCA9PSAxICYmICRvbGRfY29tbWFfYnJlYWtfY291bnQgPiAwICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIyBEbyBub3QgdG8gYnJlYWsgYmVmb3JlIGFuIG9wZW5pbmcgdG9rZW4gYmVjYXVzZQogICAgICAgICAgICAgICAgIyBpdCBjYW4gbGVhZCB0byAiYmxpbmtlcnMiLgogICAgICAgICAgICAgICAgbXkgJGlicmVha20gPSAkaWJyZWFrOwogICAgICAgICAgICAgICAgJGlicmVha20tLSBpZiAoICR0eXBlc190b19nb1skaWJyZWFrbV0gZXEgJ2InICk7CiAgICAgICAgICAgICAgICBpZiAoICRpYnJlYWttID49IDAgJiYgJHR5cGVzX3RvX2dvWyRpYnJlYWttXSAhfiAvXltcKFx7XFtMXSQvICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBzZXRfZm9yY2VkX2JyZWFrcG9pbnQoJGlicmVhayk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICVpc19sb2dpY2FsX2NvbnRhaW5lcjsKCiAgICBCRUdJTiB7CiAgICAgICAgbXkgQHEgPSBxdyMgaWYgZWxzaWYgdW5sZXNzIHdoaWxlIGFuZCBvciBlcnIgbm90ICYmIHwgfHwgPyA6ICEgIzsKICAgICAgICBAaXNfbG9naWNhbF9jb250YWluZXJ7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKICAgIH0KCiAgICBzdWIgc2V0X2Zvcl9zZW1pY29sb25fYnJlYWtwb2ludHMgewogICAgICAgIG15ICRkZCA9IHNoaWZ0OwogICAgICAgIGZvcmVhY2ggKCBAeyAkcmZvcl9zZW1pY29sb25fbGlzdFskZGRdIH0gKSB7CiAgICAgICAgICAgIHNldF9mb3JjZWRfYnJlYWtwb2ludCgkXyk7CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgc2V0X2xvZ2ljYWxfYnJlYWtwb2ludHMgewogICAgICAgIG15ICRkZCA9IHNoaWZ0OwogICAgICAgIGlmICgKICAgICAgICAgICAgICAgJGl0ZW1fY291bnRfc3RhY2tbJGRkXSA9PSAwCiAgICAgICAgICAgICYmICRpc19sb2dpY2FsX2NvbnRhaW5lcnsgJGNvbnRhaW5lcl90eXBlWyRkZF0gfQoKICAgICAgICAgICAgfHwgJGhhc19vbGRfbG9naWNhbF9icmVha3BvaW50c1skZGRdCiAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgIyBMb29rIGZvciBicmVha3MgaW4gdGhpcyBvcmRlcjoKICAgICAgICAgICAgIyAwICAgMSAgICAyICAgMwogICAgICAgICAgICAjIG9yICBhbmQgIHx8ICAmJgogICAgICAgICAgICBmb3JlYWNoIG15ICRpICggMCAuLiAzICkgewogICAgICAgICAgICAgICAgaWYgKCAkcmFuZF9vcl9saXN0WyRkZF1bJGldICkgewogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCBAeyAkcmFuZF9vcl9saXN0WyRkZF1bJGldIH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNldF9mb3JjZWRfYnJlYWtwb2ludCgkXyk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGJyZWFrIGF0IGFueSAnaWYnIGFuZCAndW5sZXNzJyB0b28KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICggQHsgJHJhbmRfb3JfbGlzdFskZGRdWzRdIH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNldF9mb3JjZWRfYnJlYWtwb2ludCgkXyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRyYW5kX29yX2xpc3RbJGRkXSA9IFtdOwogICAgICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBpc191bmJyZWFrYWJsZV9jb250YWluZXIgewoKICAgICAgICAjIG5ldmVyIGJyZWFrIGEgY29udGFpbmVyIG9mIG9uZSBvZiB0aGVzZSB0eXBlcwogICAgICAgICMgYmVjYXVzZSBiYWQgdGhpbmdzIGNhbiBoYXBwZW4gKG1hcDEudCkKICAgICAgICBteSAkZGQgPSBzaGlmdDsKICAgICAgICByZXR1cm4gJGlzX3NvcnRfbWFwX2dyZXB7ICRjb250YWluZXJfdHlwZVskZGRdIH07CiAgICB9CgogICAgc3ViIHNjYW5fbGlzdCB7CgogICAgICAgICMgVGhpcyByb3V0aW5lIGlzIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIGxpbmUgYnJlYWtzIGZvciBhbGwgbGlzdHMsCiAgICAgICAgIyBzbyB0aGF0IGhpZXJhcmNoaWNhbCBzdHJ1Y3R1cmUgY2FuIGJlIGRpc3BsYXllZCBhbmQgc28gdGhhdCBsaXN0CiAgICAgICAgIyBpdGVtcyBjYW4gYmUgdmVydGljYWxseSBhbGlnbmVkLiAgVGhlIG91dHB1dCBvZiB0aGlzIHJvdXRpbmUgaXMKICAgICAgICAjIHN0b3JlZCBpbiB0aGUgYXJyYXkgQGZvcmNlZF9icmVha3BvaW50X3RvX2dvLCB3aGljaCBpcyB1c2VkIHRvIHNldAogICAgICAgICMgZmluYWwgYnJlYWtwb2ludHMuCgogICAgICAgICRzdGFydGluZ19kZXB0aCA9ICRuZXN0aW5nX2RlcHRoX3RvX2dvWzBdOwoKICAgICAgICAkYmxvY2tfdHlwZSAgICAgICAgICAgICAgICAgPSAnICc7CiAgICAgICAgJGN1cnJlbnRfZGVwdGggICAgICAgICAgICAgID0gJHN0YXJ0aW5nX2RlcHRoOwogICAgICAgICRpICAgICAgICAgICAgICAgICAgICAgICAgICA9IC0xOwogICAgICAgICRsYXN0X2NvbG9uX3NlcXVlbmNlX251bWJlciA9IC0xOwogICAgICAgICRsYXN0X25vbmJsYW5rX3Rva2VuICAgICAgICA9ICc7JzsKICAgICAgICAkbGFzdF9ub25ibGFua190eXBlICAgICAgICAgPSAnOyc7CiAgICAgICAgJGxhc3Rfbm9uYmxhbmtfYmxvY2tfdHlwZSAgID0gJyAnOwogICAgICAgICRsYXN0X29sZF9icmVha3BvaW50X2NvdW50ICA9IDA7CiAgICAgICAgJG1pbmltdW1fZGVwdGggPSAkY3VycmVudF9kZXB0aCArIDE7ICAgICMgZm9yY2VzIHVwZGF0ZSBpbiBjaGVjayBiZWxvdwogICAgICAgICRvbGRfYnJlYWtwb2ludF9jb3VudCAgICAgID0gMDsKICAgICAgICAkc3RhcnRpbmdfYnJlYWtwb2ludF9jb3VudCA9ICRmb3JjZWRfYnJlYWtwb2ludF9jb3VudDsKICAgICAgICAkdG9rZW4gICAgICAgICAgICAgICAgICAgICA9ICc7JzsKICAgICAgICAkdHlwZSAgICAgICAgICAgICAgICAgICAgICA9ICc7JzsKICAgICAgICAkdHlwZV9zZXF1ZW5jZSAgICAgICAgICAgICA9ICcnOwoKICAgICAgICBteSAkdG90YWxfZGVwdGhfdmFyaWF0aW9uID0gMDsKICAgICAgICBteSAkaV9vbGRfYXNzaWdubWVudF9icmVhazsKICAgICAgICBteSAkZGVwdGhfbGFzdCA9ICRzdGFydGluZ19kZXB0aDsKCiAgICAgICAgY2hlY2tfZm9yX25ld19taW5pbXVtX2RlcHRoKCRjdXJyZW50X2RlcHRoKTsKCiAgICAgICAgbXkgJGlzX2xvbmdfbGluZSA9IGV4Y2Vzc19saW5lX2xlbmd0aCggMCwgJG1heF9pbmRleF90b19nbyApID4gMDsKICAgICAgICBteSAkd2FudF9wcmV2aW91c19icmVha3BvaW50ID0gLTE7CgogICAgICAgIG15ICRzYXdfZ29vZF9icmVha3BvaW50OwogICAgICAgIG15ICRpX2xpbmVfZW5kICAgPSAtMTsKICAgICAgICBteSAkaV9saW5lX3N0YXJ0ID0gLTE7CgogICAgICAgICMgbG9vcCBvdmVyIGFsbCB0b2tlbnMgaW4gdGhpcyBiYXRjaAogICAgICAgIHdoaWxlICggKyskaSA8PSAkbWF4X2luZGV4X3RvX2dvICkgewogICAgICAgICAgICBpZiAoICR0eXBlIG5lICdiJyApIHsKICAgICAgICAgICAgICAgICRpX2xhc3Rfbm9uYmxhbmtfdG9rZW4gICAgPSAkaSAtIDE7CiAgICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua190eXBlICAgICAgID0gJHR5cGU7CiAgICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua190b2tlbiAgICAgID0gJHRva2VuOwogICAgICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfYmxvY2tfdHlwZSA9ICRibG9ja190eXBlOwogICAgICAgICAgICB9ICMjIGVuZCBpZiAoICR0eXBlIG5lICdiJyApCiAgICAgICAgICAgICR0eXBlICAgICAgICAgID0gJHR5cGVzX3RvX2dvWyRpXTsKICAgICAgICAgICAgJGJsb2NrX3R5cGUgICAgPSAkYmxvY2tfdHlwZV90b19nb1skaV07CiAgICAgICAgICAgICR0b2tlbiAgICAgICAgID0gJHRva2Vuc190b19nb1skaV07CiAgICAgICAgICAgICR0eXBlX3NlcXVlbmNlID0gJHR5cGVfc2VxdWVuY2VfdG9fZ29bJGldOwogICAgICAgICAgICBteSAkbmV4dF90eXBlICAgICAgID0gJHR5cGVzX3RvX2dvWyAkaSArIDEgXTsKICAgICAgICAgICAgbXkgJG5leHRfdG9rZW4gICAgICA9ICR0b2tlbnNfdG9fZ29bICRpICsgMSBdOwogICAgICAgICAgICBteSAkaV9uZXh0X25vbmJsYW5rID0gKCAoICRuZXh0X3R5cGUgZXEgJ2InICkgPyAkaSArIDIgOiAkaSArIDEgKTsKICAgICAgICAgICAgJG5leHRfbm9uYmxhbmtfdHlwZSAgICAgICA9ICR0eXBlc190b19nb1skaV9uZXh0X25vbmJsYW5rXTsKICAgICAgICAgICAgJG5leHRfbm9uYmxhbmtfdG9rZW4gICAgICA9ICR0b2tlbnNfdG9fZ29bJGlfbmV4dF9ub25ibGFua107CiAgICAgICAgICAgICRuZXh0X25vbmJsYW5rX2Jsb2NrX3R5cGUgPSAkYmxvY2tfdHlwZV90b19nb1skaV9uZXh0X25vbmJsYW5rXTsKCiAgICAgICAgICAgICMgc2V0IGJyZWFrIGlmIGZsYWcgd2FzIHNldAogICAgICAgICAgICBpZiAoICR3YW50X3ByZXZpb3VzX2JyZWFrcG9pbnQgPj0gMCApIHsKICAgICAgICAgICAgICAgIHNldF9mb3JjZWRfYnJlYWtwb2ludCgkd2FudF9wcmV2aW91c19icmVha3BvaW50KTsKICAgICAgICAgICAgICAgICR3YW50X3ByZXZpb3VzX2JyZWFrcG9pbnQgPSAtMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGxhc3Rfb2xkX2JyZWFrcG9pbnRfY291bnQgPSAkb2xkX2JyZWFrcG9pbnRfY291bnQ7CiAgICAgICAgICAgIGlmICggJG9sZF9icmVha3BvaW50X3RvX2dvWyRpXSApIHsKICAgICAgICAgICAgICAgICRpX2xpbmVfZW5kICAgPSAkaTsKICAgICAgICAgICAgICAgICRpX2xpbmVfc3RhcnQgPSAkaV9uZXh0X25vbmJsYW5rOwoKICAgICAgICAgICAgICAgICRvbGRfYnJlYWtwb2ludF9jb3VudCsrOwoKICAgICAgICAgICAgICAgICMgQnJlYWsgYmVmb3JlIGNlcnRhaW4ga2V5d29yZHMgaWYgdXNlciBicm9rZSB0aGVyZSBhbmQKICAgICAgICAgICAgICAgICMgdGhpcyBpcyBhICdzYWZlJyBicmVhayBwb2ludC4gVGhlIGlkZWEgaXMgdG8gcmV0YWluCiAgICAgICAgICAgICAgICAjIGFueSBwcmVmZXJyZWQgYnJlYWtzIGZvciBzZXF1ZW50aWFsIGxpc3Qgb3BlcmF0aW9ucywKICAgICAgICAgICAgICAgICMgbGlrZSBhIHNjaHdhcnR6aWFuIHRyYW5zZm9ybS4KICAgICAgICAgICAgICAgIGlmICgkck9wdHNfYnJlYWtfYXRfb2xkX2tleXdvcmRfYnJlYWtwb2ludHMpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICRuZXh0X25vbmJsYW5rX3R5cGUgZXEgJ2snCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRpc19rZXl3b3JkX3JldHVybmluZ19saXN0eyRuZXh0X25vbmJsYW5rX3Rva2VufQogICAgICAgICAgICAgICAgICAgICAgICAmJiAoICAgJHR5cGUgPX4gL15bPVwpXF1cfVJpd10kLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJHR5cGUgZXEgJ2snCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkaXNfa2V5d29yZF9yZXR1cm5pbmdfbGlzdHskdG9rZW59ICkKICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHdlIGFjdHVhbGx5IGhhdmUgdG8gc2V0IHRoaXMgYnJlYWsgbmV4dCB0aW1lIHRocm91Z2gKICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgbG9vcCBiZWNhdXNlIGlmIHdlIGFyZSBhdCBhIGNsb3NpbmcgdG9rZW4gKHN1Y2gKICAgICAgICAgICAgICAgICAgICAgICAgIyBhcyAnfScpIHdoaWNoIGZvcm1zIGEgb25lLWxpbmUgYmxvY2ssIHRoaXMgYnJlYWsgbWlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgIyBnZXQgdW5kb25lLgogICAgICAgICAgICAgICAgICAgICAgICAkd2FudF9wcmV2aW91c19icmVha3BvaW50ID0gJGk7CiAgICAgICAgICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCAkbmV4dF9ub25ibGFua190eXBlLi4uKQogICAgICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCRyT3B0c19icmVha19hdF9vbGRfa2V5d29yZF9icmVha3BvaW50cykKCiAgICAgICAgICAgICAgICAjIEJyZWFrIGJlZm9yZSBhdHRyaWJ1dGVzIGlmIHVzZXIgYnJva2UgdGhlcmUKICAgICAgICAgICAgICAgIGlmICgkck9wdHNfYnJlYWtfYXRfb2xkX2F0dHJpYnV0ZV9icmVha3BvaW50cykgewogICAgICAgICAgICAgICAgICAgIGlmICggJG5leHRfbm9uYmxhbmtfdHlwZSBlcSAnQScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR3YW50X3ByZXZpb3VzX2JyZWFrcG9pbnQgPSAkaTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyByZW1lbWJlciBhbiA9IGJyZWFrIGFzIHBvc3NpYmxlIGdvb2QgYnJlYWsgcG9pbnQKICAgICAgICAgICAgICAgIGlmICggJGlzX2Fzc2lnbm1lbnR7JHR5cGV9ICkgewogICAgICAgICAgICAgICAgICAgICRpX29sZF9hc3NpZ25tZW50X2JyZWFrID0gJGk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRpc19hc3NpZ25tZW50eyRuZXh0X25vbmJsYW5rX3R5cGV9ICkgewogICAgICAgICAgICAgICAgICAgICRpX29sZF9hc3NpZ25tZW50X2JyZWFrID0gJGlfbmV4dF9ub25ibGFuazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCAkb2xkX2JyZWFrcG9pbnRfdG9fZ28uLi4pCgogICAgICAgICAgICBuZXh0IGlmICggJHR5cGUgZXEgJ2InICk7CiAgICAgICAgICAgICRkZXB0aCA9ICRuZXN0aW5nX2RlcHRoX3RvX2dvWyAkaSArIDEgXTsKCiAgICAgICAgICAgICR0b3RhbF9kZXB0aF92YXJpYXRpb24gKz0gYWJzKCAkZGVwdGggLSAkZGVwdGhfbGFzdCApOwogICAgICAgICAgICAkZGVwdGhfbGFzdCA9ICRkZXB0aDsKCiAgICAgICAgICAgICMgc2FmZXR5IGNoZWNrIC0gYmUgc3VyZSB3ZSBhbHdheXMgYnJlYWsgYWZ0ZXIgYSBjb21tZW50CiAgICAgICAgICAgICMgU2hvdWxkbid0IGhhcHBlbiAuLiBhbiBlcnJvciBoZXJlIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlCiAgICAgICAgICAgICMgbm9icmVhayBmbGFnIGRpZCBub3QgZ2V0IHR1cm5lZCBvZmYgY29ycmVjdGx5IGR1cmluZwogICAgICAgICAgICAjIGZvcm1hdHRpbmcuCiAgICAgICAgICAgIGlmICggJHR5cGUgZXEgJyMnICkgewogICAgICAgICAgICAgICAgaWYgKCAkaSAhPSAkbWF4X2luZGV4X3RvX2dvICkgewogICAgICAgICAgICAgICAgICAgIHdhcm5pbmcoCiJOb24tZmF0YWwgcHJvZ3JhbSBidWc6IGJhY2t1cCBsb2dpYyBuZWVkZWQgdG8gYnJlYWsgYWZ0ZXIgYSBjb21tZW50XG4iCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICByZXBvcnRfZGVmaW5pdGVfYnVnKCk7CiAgICAgICAgICAgICAgICAgICAgJG5vYnJlYWtfdG9fZ29bJGldID0gMDsKICAgICAgICAgICAgICAgICAgICBzZXRfZm9yY2VkX2JyZWFrcG9pbnQoJGkpOwogICAgICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCAkaSAhPSAkbWF4X2luZGV4X3RvX2dvKQogICAgICAgICAgICB9ICMjIGVuZCBpZiAoICR0eXBlIGVxICcjJyApCgogICAgICAgICAgICAjIEZvcmNlIGJyZWFrcG9pbnRzIGF0IGNlcnRhaW4gdG9rZW5zIGluIGxvbmcgbGluZXMuCiAgICAgICAgICAgICMgTm90ZSB0aGF0IHN1Y2ggYnJlYWtwb2ludHMgd2lsbCBiZSB1bmRvbmUgbGF0ZXIgaWYgdGhlc2UgdG9rZW5zCiAgICAgICAgICAgICMgYXJlIGZ1bGx5IGNvbnRhaW5lZCB3aXRoaW4gcGFyZW5zIG9uIGEgbGluZS4KICAgICAgICAgICAgaWYgKAoKICAgICAgICAgICAgICAgICMgYnJlYWsgYmVmb3JlIGEga2V5d29yZCB3aXRoaW4gYSBsaW5lCiAgICAgICAgICAgICAgICAkdHlwZSBlcSAnaycKICAgICAgICAgICAgICAgICYmICRpID4gMAoKICAgICAgICAgICAgICAgICMgaWYgb25lIG9mIHRoZXNlIGtleXdvcmRzOgogICAgICAgICAgICAgICAgJiYgJHRva2VuID1+IC9eKGlmfHVubGVzc3x3aGlsZXx1bnRpbHxmb3IpJC8KCiAgICAgICAgICAgICAgICAjIGJ1dCBkbyBub3QgYnJlYWsgYXQgc29tZXRoaW5nIGxpa2UgJzEgd2hpbGUnCiAgICAgICAgICAgICAgICAmJiAoICRsYXN0X25vbmJsYW5rX3R5cGUgbmUgJ24nIHx8ICRpID4gMiApCgogICAgICAgICAgICAgICAgIyBhbmQgbGV0IGtleXdvcmRzIGZvbGxvdyBhIGNsb3NpbmcgJ2RvJyBicmFjZQogICAgICAgICAgICAgICAgJiYgJGxhc3Rfbm9uYmxhbmtfYmxvY2tfdHlwZSBuZSAnZG8nCgogICAgICAgICAgICAgICAgJiYgKAogICAgICAgICAgICAgICAgICAgICRpc19sb25nX2xpbmUKCiAgICAgICAgICAgICAgICAgICAgIyBvciBjb250YWluZXIgaXMgYnJva2VuIChieSBzaWRlLWNvbW1lbnQsIGV0YykKICAgICAgICAgICAgICAgICAgICB8fCAoICAgJG5leHRfbm9uYmxhbmtfdG9rZW4gZXEgJygnCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRtYXRlX2luZGV4X3RvX2dvWyRpX25leHRfbm9uYmxhbmtdIDwgJGkgKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgc2V0X2ZvcmNlZF9icmVha3BvaW50KCAkaSAtIDEgKTsKICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCAkdHlwZSBlcSAnaycgJiYgJGkuLi4pCgogICAgICAgICAgICAjIHJlbWVtYmVyIGxvY2F0aW9ucyBvZiAtPiBpZiB0aGlzIGlzIGEgcHJlLWJyb2tlbiBtZXRob2QgY2hhaW4KICAgICAgICAgICAgaWYgKCAkdHlwZSBlcSAnLT4nICkgewogICAgICAgICAgICAgICAgaWYgKCRyT3B0c19icmVha19hdF9vbGRfbWV0aG9kX2JyZWFrcG9pbnRzKSB7CgogICAgICAgICAgICAgICAgICAgICMgQ2FzZSAxOiBsb29rIGZvciBsaW5lcyB3aXRoIGxlYWRpbmcgcG9pbnRlcnMKICAgICAgICAgICAgICAgICAgICBpZiAoICRpID09ICRpX2xpbmVfc3RhcnQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNldF9mb3JjZWRfYnJlYWtwb2ludCggJGkgLSAxICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIENhc2UgMjogbG9vayBmb3IgY3VkZGxlZCBwb2ludGVyIGNhbGxzCiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGxvb2sgZm9yIG9sZCBsaW5lcyB3aXRoIGxlYWRpbmcgJyktPicgb3IgJykgLT4nCiAgICAgICAgICAgICAgICAgICAgICAgICMgYW5kLCB3aGVuIGZvdW5kLCBmb3JjZSBhIGJyZWFrIGJlZm9yZSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIyBvcGVuaW5nIHBhcmVuIGFuZCBhZnRlciB0aGUgcHJldmlvdXMgY2xvc2luZyBwYXJlbi4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGVzX3RvX2dvWyRpX2xpbmVfc3RhcnRdIGVxICd9JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCAgICRpID09ICRpX2xpbmVfc3RhcnQgKyAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJGkgPT0gJGlfbGluZV9zdGFydCArIDIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkdHlwZXNfdG9fZ29bICRpIC0gMSBdIGVxICdiJyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfZm9yY2VkX2JyZWFrcG9pbnQoICRpX2xpbmVfc3RhcnQgLSAxICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfZm9yY2VkX2JyZWFrcG9pbnQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1hdGVfaW5kZXhfdG9fZ29bJGlfbGluZV9zdGFydF0gKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCAkdHlwZSBlcSAnLT4nICkKCiAgICAgICAgICAgICMgcmVtZW1iZXIgbG9jYXRpb25zIG9mICd8fCcgIGFuZCAnJiYnIGZvciBwb3NzaWJsZSBicmVha3MgaWYgd2UKICAgICAgICAgICAgIyBkZWNpZGUgdGhpcyBpcyBhIGxvbmcgbG9naWNhbCBleHByZXNzaW9uLgogICAgICAgICAgICBlbHNpZiAoICR0eXBlIGVxICd8fCcgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEB7ICRyYW5kX29yX2xpc3RbJGRlcHRoXVsyXSB9LCAkaTsKICAgICAgICAgICAgICAgICsrJGhhc19vbGRfbG9naWNhbF9icmVha3BvaW50c1skZGVwdGhdCiAgICAgICAgICAgICAgICAgIGlmICggKCAkaSA9PSAkaV9saW5lX3N0YXJ0IHx8ICRpID09ICRpX2xpbmVfZW5kICkKICAgICAgICAgICAgICAgICAgICAmJiAkck9wdHNfYnJlYWtfYXRfb2xkX2xvZ2ljYWxfYnJlYWtwb2ludHMgKTsKICAgICAgICAgICAgfSAjIyBlbmQgZWxzaWYgKCAkdHlwZSBlcSAnfHwnICkKICAgICAgICAgICAgZWxzaWYgKCAkdHlwZSBlcSAnJiYnICkgewogICAgICAgICAgICAgICAgcHVzaCBAeyAkcmFuZF9vcl9saXN0WyRkZXB0aF1bM10gfSwgJGk7CiAgICAgICAgICAgICAgICArKyRoYXNfb2xkX2xvZ2ljYWxfYnJlYWtwb2ludHNbJGRlcHRoXQogICAgICAgICAgICAgICAgICBpZiAoICggJGkgPT0gJGlfbGluZV9zdGFydCB8fCAkaSA9PSAkaV9saW5lX2VuZCApCiAgICAgICAgICAgICAgICAgICAgJiYgJHJPcHRzX2JyZWFrX2F0X29sZF9sb2dpY2FsX2JyZWFrcG9pbnRzICk7CiAgICAgICAgICAgIH0gIyMgZW5kIGVsc2lmICggJHR5cGUgZXEgJyYmJyApCiAgICAgICAgICAgIGVsc2lmICggJHR5cGUgZXEgJ2YnICkgewogICAgICAgICAgICAgICAgcHVzaCBAeyAkcmZvcl9zZW1pY29sb25fbGlzdFskZGVwdGhdIH0sICRpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJHR5cGUgZXEgJ2snICkgewogICAgICAgICAgICAgICAgaWYgKCAkdG9rZW4gZXEgJ2FuZCcgKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAeyAkcmFuZF9vcl9saXN0WyRkZXB0aF1bMV0gfSwgJGk7CiAgICAgICAgICAgICAgICAgICAgKyskaGFzX29sZF9sb2dpY2FsX2JyZWFrcG9pbnRzWyRkZXB0aF0KICAgICAgICAgICAgICAgICAgICAgIGlmICggKCAkaSA9PSAkaV9saW5lX3N0YXJ0IHx8ICRpID09ICRpX2xpbmVfZW5kICkKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHJPcHRzX2JyZWFrX2F0X29sZF9sb2dpY2FsX2JyZWFrcG9pbnRzICk7CiAgICAgICAgICAgICAgICB9ICMjIGVuZCBpZiAoICR0b2tlbiBlcSAnYW5kJyApCgogICAgICAgICAgICAgICAgIyBicmVhayBpbW1lZGlhdGVseSBhdCAnb3IncyB3aGljaCBhcmUgcHJvYmFibHkgbm90IGluIGEgbG9naWNhbAogICAgICAgICAgICAgICAgIyBibG9jayAtLSBidXQgd2Ugd2lsbCBicmVhayBpbiBsb2dpY2FsIGJyZWFrcyBiZWxvdyBzbyB0aGF0CiAgICAgICAgICAgICAgICAjIHRoZXkgZG8gbm90IGFkZCB0byB0aGUgZm9yY2VkX2JyZWFrcG9pbnRfY291bnQKICAgICAgICAgICAgICAgIGVsc2lmICggJHRva2VuIGVxICdvcicgKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAeyAkcmFuZF9vcl9saXN0WyRkZXB0aF1bMF0gfSwgJGk7CiAgICAgICAgICAgICAgICAgICAgKyskaGFzX29sZF9sb2dpY2FsX2JyZWFrcG9pbnRzWyRkZXB0aF0KICAgICAgICAgICAgICAgICAgICAgIGlmICggKCAkaSA9PSAkaV9saW5lX3N0YXJ0IHx8ICRpID09ICRpX2xpbmVfZW5kICkKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHJPcHRzX2JyZWFrX2F0X29sZF9sb2dpY2FsX2JyZWFrcG9pbnRzICk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkaXNfbG9naWNhbF9jb250YWluZXJ7ICRjb250YWluZXJfdHlwZVskZGVwdGhdIH0gKSB7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGlzX2xvbmdfbGluZSkgeyBzZXRfZm9yY2VkX2JyZWFrcG9pbnQoJGkpIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAoICRpID09ICRpX2xpbmVfc3RhcnQgfHwgJGkgPT0gJGlfbGluZV9lbmQgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHJPcHRzX2JyZWFrX2F0X29sZF9sb2dpY2FsX2JyZWFrcG9pbnRzICkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNhd19nb29kX2JyZWFrcG9pbnQgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSAjIyBlbmQgZWxzZSBbIGlmICggJGlzX2xvZ2ljYWxfY29udGFpbmVyLi4uKV0KICAgICAgICAgICAgICAgIH0gIyMgZW5kIGVsc2lmICggJHRva2VuIGVxICdvcicgKQogICAgICAgICAgICAgICAgZWxzaWYgKCAkdG9rZW4gZXEgJ2lmJyB8fCAkdG9rZW4gZXEgJ3VubGVzcycgKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAeyAkcmFuZF9vcl9saXN0WyRkZXB0aF1bNF0gfSwgJGk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAoICRpID09ICRpX2xpbmVfc3RhcnQgfHwgJGkgPT0gJGlfbGluZV9lbmQgKQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkck9wdHNfYnJlYWtfYXRfb2xkX2xvZ2ljYWxfYnJlYWtwb2ludHMgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2ZvcmNlZF9icmVha3BvaW50KCRpKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9ICMjIGVuZCBlbHNpZiAoICR0b2tlbiBlcSAnaWYnIHx8Li4uKQogICAgICAgICAgICB9ICMjIGVuZCBlbHNpZiAoICR0eXBlIGVxICdrJyApCiAgICAgICAgICAgIGVsc2lmICggJGlzX2Fzc2lnbm1lbnR7JHR5cGV9ICkgewogICAgICAgICAgICAgICAgJGlfZXF1YWxzWyRkZXB0aF0gPSAkaTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCR0eXBlX3NlcXVlbmNlKSB7CgogICAgICAgICAgICAgICAgIyBoYW5kbGUgYW55IHBvc3Rwb25lZCBjbG9zaW5nIGJyZWFrcG9pbnRzCiAgICAgICAgICAgICAgICBpZiAoICR0b2tlbiA9fiAvXltcKVxdXH1cOl0kLyApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICR0eXBlIGVxICc6JyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGxhc3RfY29sb25fc2VxdWVuY2VfbnVtYmVyID0gJHR5cGVfc2VxdWVuY2U7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHJldGFpbiBicmVhayBhdCBhICc6JyBsaW5lIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggKCAkaSA9PSAkaV9saW5lX3N0YXJ0IHx8ICRpID09ICRpX2xpbmVfZW5kICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICRyT3B0c19icmVha19hdF9vbGRfdGVybmFyeV9icmVha3BvaW50cyApCiAgICAgICAgICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfZm9yY2VkX2JyZWFrcG9pbnQoJGkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYnJlYWsgYXQgcHJldmlvdXMgJz0nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRpX2VxdWFsc1skZGVwdGhdID4gMCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfZm9yY2VkX2JyZWFrcG9pbnQoICRpX2VxdWFsc1skZGVwdGhdICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlfZXF1YWxzWyRkZXB0aF0gPSAtMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCAoICRpID09ICRpX2xpbmVfc3RhcnQuLi4pKQogICAgICAgICAgICAgICAgICAgIH0gIyMgZW5kIGlmICggJHR5cGUgZXEgJzonICkKICAgICAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQoICRwb3N0cG9uZWRfYnJlYWtwb2ludHskdHlwZV9zZXF1ZW5jZX0gKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGluYyA9ICggJHR5cGUgZXEgJzonICkgPyAwIDogMTsKICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2ZvcmNlZF9icmVha3BvaW50KCAkaSAtICRpbmMgKTsKICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRwb3N0cG9uZWRfYnJlYWtwb2ludHskdHlwZV9zZXF1ZW5jZX07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCAkdG9rZW4gPX4gL15bXClcXVx9XDpdJC9be1soXSkKCiAgICAgICAgICAgICAgICAjIHNldCBicmVha3MgYXQgPy86IGlmIHRoZXkgd2lsbCBnZXQgc2VwYXJhdGVkIChhbmQgYXJlCiAgICAgICAgICAgICAgICAjIG5vdCBhID8vOiBjaGFpbiksIG9yIGlmIHRoZSAnPycgaXMgYXQgdGhlIGVuZCBvZiB0aGUKICAgICAgICAgICAgICAgICMgbGluZQogICAgICAgICAgICAgICAgZWxzaWYgKCAkdG9rZW4gZXEgJz8nICkgewogICAgICAgICAgICAgICAgICAgIG15ICRpX2NvbG9uID0gJG1hdGVfaW5kZXhfdG9fZ29bJGldOwogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJGlfY29sb24gPD0gMCAgIyB0aGUgJzonIGlzIG5vdCBpbiB0aGlzIGJhdGNoCiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRpID09IDAgICAgICMgdGhpcyAnPycgaXMgdGhlIGZpcnN0IHRva2VuIG9mIHRoZSBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRpID09CiAgICAgICAgICAgICAgICAgICAgICAgICRtYXhfaW5kZXhfdG9fZ28gICAgIyBvciB0aGlzICc/JyBpcyB0aGUgbGFzdCB0b2tlbgogICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgZG9uJ3QgYnJlYWsgYXQgYSAnPycgaWYgcHJlY2VkZWQgYnkgJzonIG9uCiAgICAgICAgICAgICAgICAgICAgICAgICMgdGhpcyBsaW5lIG9mIHByZXZpb3VzID8vOiBwYWlyIG9uIHRoaXMgbGluZS4KICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIGFuIGF0dGVtcHQgdG8gcHJlc2VydmUgYSBjaGFpbiBvZiA/LzoKICAgICAgICAgICAgICAgICAgICAgICAgIyBleHByZXNzaW9ucyAoZWxzaWYyLnQpLiAgQW5kIGRvbid0IGJyZWFrIGlmCiAgICAgICAgICAgICAgICAgICAgICAgICMgdGhpcyBoYXMgYSBzaWRlIGNvbW1lbnQuCiAgICAgICAgICAgICAgICAgICAgICAgIHNldF9mb3JjZWRfYnJlYWtwb2ludCgkaSkKICAgICAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGVfc2VxdWVuY2UgPT0gKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsYXN0X2NvbG9uX3NlcXVlbmNlX251bWJlciArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUWVBFX1NFUVVFTkNFX0lOQ1JFTUVOVAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJHRva2Vuc190b19nb1skbWF4X2luZGV4X3RvX2dvXSBlcSAnIycKICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICBzZXRfY2xvc2luZ19icmVha3BvaW50KCRpKTsKICAgICAgICAgICAgICAgICAgICB9ICMjIGVuZCBpZiAoICRpX2NvbG9uIDw9IDAgIHx8Li4uKQogICAgICAgICAgICAgICAgfSAjIyBlbmQgZWxzaWYgKCAkdG9rZW4gZXEgJz8nICkKICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCR0eXBlX3NlcXVlbmNlKQoKI3ByaW50ICJMSVNUWCBzZWVzOiBpPSRpIHR5cGU9JHR5cGUgIHRvaz0kdG9rZW4gIGJsb2NrPSRibG9ja190eXBlIGRlcHRoPSRkZXB0aFxuIjsKCiAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgIyBIYW5kbGUgSW5jcmVhc2luZyBEZXB0aC4uCiAgICAgICAgICAgICMKICAgICAgICAgICAgIyBwcmVwYXJlIGZvciBhIG5ldyBsaXN0IHdoZW4gZGVwdGggaW5jcmVhc2VzCiAgICAgICAgICAgICMgdG9rZW4gJGkgaXMgYSAnKCcsJ3snLCBvciAnWycKICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICBpZiAoICRkZXB0aCA+ICRjdXJyZW50X2RlcHRoICkgewoKICAgICAgICAgICAgICAgICRicmVha3BvaW50X3N0YWNrWyRkZXB0aF0gICAgICAgPSAkZm9yY2VkX2JyZWFrcG9pbnRfY291bnQ7CiAgICAgICAgICAgICAgICAkYnJlYWtwb2ludF91bmRvX3N0YWNrWyRkZXB0aF0gID0gJGZvcmNlZF9icmVha3BvaW50X3VuZG9fY291bnQ7CiAgICAgICAgICAgICAgICAkaGFzX2Jyb2tlbl9zdWJsaXN0WyRkZXB0aF0gICAgID0gMDsKICAgICAgICAgICAgICAgICRpZGVudGlmaWVyX2NvdW50X3N0YWNrWyRkZXB0aF0gPSAwOwogICAgICAgICAgICAgICAgJGluZGV4X2JlZm9yZV9hcnJvd1skZGVwdGhdICAgICA9IC0xOwogICAgICAgICAgICAgICAgJGludGVycnVwdGVkX2xpc3RbJGRlcHRoXSAgICAgICA9IDA7CiAgICAgICAgICAgICAgICAkaXRlbV9jb3VudF9zdGFja1skZGVwdGhdICAgICAgID0gMDsKICAgICAgICAgICAgICAgICRsYXN0X2NvbW1hX2luZGV4WyRkZXB0aF0gICAgICAgPSB1bmRlZjsKICAgICAgICAgICAgICAgICRsYXN0X2RvdF9pbmRleFskZGVwdGhdICAgICAgICAgPSB1bmRlZjsKICAgICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3R5cGVbJGRlcHRoXSAgICAgPSAkbGFzdF9ub25ibGFua190eXBlOwogICAgICAgICAgICAgICAgJG9sZF9icmVha3BvaW50X2NvdW50X3N0YWNrWyRkZXB0aF0gICAgPSAkb2xkX2JyZWFrcG9pbnRfY291bnQ7CiAgICAgICAgICAgICAgICAkb3BlbmluZ19zdHJ1Y3R1cmVfaW5kZXhfc3RhY2tbJGRlcHRoXSA9ICRpOwogICAgICAgICAgICAgICAgJHJhbmRfb3JfbGlzdFskZGVwdGhdICAgICAgICAgICAgICAgICAgPSBbXTsKICAgICAgICAgICAgICAgICRyZm9yX3NlbWljb2xvbl9saXN0WyRkZXB0aF0gICAgICAgICAgID0gW107CiAgICAgICAgICAgICAgICAkaV9lcXVhbHNbJGRlcHRoXSAgICAgICAgICAgICAgICAgICAgICA9IC0xOwogICAgICAgICAgICAgICAgJHdhbnRfY29tbWFfYnJlYWtbJGRlcHRoXSAgICAgICAgICAgICAgPSAwOwogICAgICAgICAgICAgICAgJGNvbnRhaW5lcl90eXBlWyRkZXB0aF0gPQogICAgICAgICAgICAgICAgICAoICRsYXN0X25vbmJsYW5rX3R5cGUgPX4gL14oa3w9PnwmJnxcfFx8fFw/fFw6fFwuKSQvICkKICAgICAgICAgICAgICAgICAgPyAkbGFzdF9ub25ibGFua190b2tlbgogICAgICAgICAgICAgICAgICA6ICIiOwogICAgICAgICAgICAgICAgJGhhc19vbGRfbG9naWNhbF9icmVha3BvaW50c1skZGVwdGhdID0gMDsKCiAgICAgICAgICAgICAgICAjIGlmIGxpbmUgZW5kcyBoZXJlIHRoZW4gc2lnbmFsIGNsb3NpbmcgdG9rZW4gdG8gYnJlYWsKICAgICAgICAgICAgICAgIGlmICggJG5leHRfbm9uYmxhbmtfdHlwZSBlcSAnYicgfHwgJG5leHRfbm9uYmxhbmtfdHlwZSBlcSAnIycgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHNldF9jbG9zaW5nX2JyZWFrcG9pbnQoJGkpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgTm90IGFsbCBsaXN0cyBvZiB2YWx1ZXMgc2hvdWxkIGJlIHZlcnRpY2FsbHkgYWxpZ25lZC4uCiAgICAgICAgICAgICAgICAkZG9udF9hbGlnblskZGVwdGhdID0KCiAgICAgICAgICAgICAgICAgICMgY29kZSBCTE9DS1MgYXJlIGhhbmRsZWQgYXQgYSBoaWdoZXIgbGV2ZWwKICAgICAgICAgICAgICAgICAgKCAkYmxvY2tfdHlwZSBuZSAiIiApCgogICAgICAgICAgICAgICAgICAjIGNlcnRhaW4gcGFyZW4gbGlzdHMKICAgICAgICAgICAgICAgICAgfHwgKCAkdHlwZSBlcSAnKCcgKSAmJiAoCgogICAgICAgICAgICAgICAgICAgICMgaXQgZG9lcyBub3QgdXN1YWxseSBsb29rIGdvb2QgdG8gYWxpZ24gYSBsaXN0IG9mCiAgICAgICAgICAgICAgICAgICAgIyBpZGVudGlmaWVycyBpbiBhIHBhcmFtZXRlciBsaXN0LCBhcyBpbjoKICAgICAgICAgICAgICAgICAgICAjICAgIG15KCR2YXIxLCAkdmFyMiwgLi4uKQogICAgICAgICAgICAgICAgICAgICMgKFRoaXMgdGVzdCBzaG91bGQgcHJvYmFibHkgYmUgcmVmaW5lZCwgZm9yIG5vdyBJJ20ganVzdAogICAgICAgICAgICAgICAgICAgICMgdGVzdGluZyBmb3IgYW55IGtleXdvcmQpCiAgICAgICAgICAgICAgICAgICAgKCAkbGFzdF9ub25ibGFua190eXBlIGVxICdrJyApCgogICAgICAgICAgICAgICAgICAgICMgYSB0cmFpbGluZyAnKCcgdXN1YWxseSBpbmRpY2F0ZXMgYSBub24tbGlzdAogICAgICAgICAgICAgICAgICAgIHx8ICggJG5leHRfbm9uYmxhbmtfdHlwZSBlcSAnKCcgKQogICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgcGF0Y2ggdG8gb3V0ZGVudCBvcGVuaW5nIGJyYWNlIG9mIGxvbmcgaWYvZm9yLy4uCiAgICAgICAgICAgICAgICAjIHN0YXRlbWVudHMgKGxpa2UgdGhpcyBvbmUpLiAgU2VlIHNpbWlsYXIgY29kaW5nIGluCiAgICAgICAgICAgICAgICAjIHNldF9jb250aW51YXRpb24gYnJlYWtzLiAgV2UgaGF2ZSBhbHNvIGNhdGNoIGl0IGhlcmUgZm9yCiAgICAgICAgICAgICAgICAjIHNob3J0IGxpbmUgZnJhZ21lbnRzIHdoaWNoIG90aGVyd2lzZSB3aWxsIG5vdCBnbyB0aHJvdWdoCiAgICAgICAgICAgICAgICAjIHNldF9jb250aW51YXRpb25fYnJlYWtzLgogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRibG9ja190eXBlCgogICAgICAgICAgICAgICAgICAgICMgaWYgd2UgaGF2ZSB0aGUgJyknIGJ1dCBub3QgaXRzICcoJyBpbiB0aGlzIGJhdGNoLi4KICAgICAgICAgICAgICAgICAgICAmJiAoICRsYXN0X25vbmJsYW5rX3Rva2VuIGVxICcpJyApCiAgICAgICAgICAgICAgICAgICAgJiYgJG1hdGVfaW5kZXhfdG9fZ29bJGlfbGFzdF9ub25ibGFua190b2tlbl0gPCAwCgogICAgICAgICAgICAgICAgICAgICMgYW5kIHVzZXIgd2FudHMgYnJhY2UgdG8gbGVmdAogICAgICAgICAgICAgICAgICAgICYmICEkck9wdHMtPnsnb3BlbmluZy1icmFjZS1hbHdheXMtb24tcmlnaHQnfQoKICAgICAgICAgICAgICAgICAgICAmJiAoICR0eXBlIGVxICd7JyApICAgICAjIHNob3VsZCBiZSB0cnVlCiAgICAgICAgICAgICAgICAgICAgJiYgKCAkdG9rZW4gZXEgJ3snICkgICAgIyBzaG91bGQgYmUgdHJ1ZQogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgc2V0X2ZvcmNlZF9icmVha3BvaW50KCAkaSAtIDEgKTsKICAgICAgICAgICAgICAgIH0gIyMgZW5kIGlmICggJGJsb2NrX3R5cGUgJiYgKCAuLi4pKQogICAgICAgICAgICB9ICMjIGVuZCBpZiAoICRkZXB0aCA+ICRjdXJyZW50X2RlcHRoKQoKICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAjIEhhbmRsZSBEZWNyZWFzaW5nIERlcHRoLi4KICAgICAgICAgICAgIwogICAgICAgICAgICAjIGZpbmlzaCBvZmYgYW55IG9sZCBsaXN0IHdoZW4gZGVwdGggZGVjcmVhc2VzCiAgICAgICAgICAgICMgdG9rZW4gJGkgaXMgYSAnKScsJ30nLCBvciAnXScKICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICBlbHNpZiAoICRkZXB0aCA8ICRjdXJyZW50X2RlcHRoICkgewoKICAgICAgICAgICAgICAgIGNoZWNrX2Zvcl9uZXdfbWluaW11bV9kZXB0aCgkZGVwdGgpOwoKICAgICAgICAgICAgICAgICMgZm9yY2UgYWxsIG91dGVyIGxvZ2ljYWwgY29udGFpbmVycyB0byBicmVhayBhZnRlciB3ZSBzZWUgb24KICAgICAgICAgICAgICAgICMgb2xkIGJyZWFrcG9pbnQKICAgICAgICAgICAgICAgICRoYXNfb2xkX2xvZ2ljYWxfYnJlYWtwb2ludHNbJGRlcHRoXSB8fD0KICAgICAgICAgICAgICAgICAgJGhhc19vbGRfbG9naWNhbF9icmVha3BvaW50c1skY3VycmVudF9kZXB0aF07CgogICAgICAgICAgICAgICAgIyBQYXRjaCB0byBicmVhayBiZXR3ZWVuICcpIHsnIGlmIHRoZSBwYXJlbiBsaXN0IGlzIGJyb2tlbi4KICAgICAgICAgICAgICAgICMgVGhlcmUgaXMgc2ltaWxhciBsb2dpYyBpbiBzZXRfY29udGludWF0aW9uX2JyZWFrcyBmb3IKICAgICAgICAgICAgICAgICMgbm9uLWJyb2tlbiBsaXN0cy4KICAgICAgICAgICAgICAgIGlmICggICAkdG9rZW4gZXEgJyknCiAgICAgICAgICAgICAgICAgICAgJiYgJG5leHRfbm9uYmxhbmtfYmxvY2tfdHlwZQogICAgICAgICAgICAgICAgICAgICYmICRpbnRlcnJ1cHRlZF9saXN0WyRjdXJyZW50X2RlcHRoXQogICAgICAgICAgICAgICAgICAgICYmICRuZXh0X25vbmJsYW5rX3R5cGUgZXEgJ3snCiAgICAgICAgICAgICAgICAgICAgJiYgISRyT3B0cy0+eydvcGVuaW5nLWJyYWNlLWFsd2F5cy1vbi1yaWdodCd9ICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBzZXRfZm9yY2VkX2JyZWFrcG9pbnQoJGkpOwogICAgICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCAkdG9rZW4gZXEgJyknICYmIC4uLgoKI3ByaW50ICJMSVNUWSBzZWVzOiBpPSRpIHR5cGU9JHR5cGUgIHRvaz0kdG9rZW4gIGJsb2NrPSRibG9ja190eXBlIGRlcHRoPSRkZXB0aCBuZXh0PSRuZXh0X25vbmJsYW5rX3R5cGUgbmV4dF9ibG9jaz0kbmV4dF9ub25ibGFua19ibG9ja190eXBlIGludGVyPSRpbnRlcnJ1cHRlZF9saXN0WyRjdXJyZW50X2RlcHRoXVxuIjsKCiAgICAgICAgICAgICAgICAjIHNldCBicmVha3MgYXQgY29tbWFzIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICAgICAgbXkgKCAkYnBfY291bnQsICRkb19ub3RfYnJlYWtfYXBhcnQgKSA9CiAgICAgICAgICAgICAgICAgIHNldF9jb21tYV9icmVha3BvaW50cygkY3VycmVudF9kZXB0aCk7CgogICAgICAgICAgICAgICAgbXkgJGlfb3BlbmluZyA9ICRvcGVuaW5nX3N0cnVjdHVyZV9pbmRleF9zdGFja1skY3VycmVudF9kZXB0aF07CiAgICAgICAgICAgICAgICBteSAkc2F3X29wZW5pbmdfc3RydWN0dXJlID0gKCAkaV9vcGVuaW5nID49IDAgKTsKCiAgICAgICAgICAgICAgICAjIHRoaXMgdGVybSBpcyBsb25nIGlmIHdlIGhhZCB0byBicmVhayBhdCBpbnRlcmlvciBjb21tYXMuLgogICAgICAgICAgICAgICAgbXkgJGlzX2xvbmdfdGVybSA9ICRicF9jb3VudCA+IDA7CgogICAgICAgICAgICAgICAgIyBJZiB0aGlzIGlzIGEgc2hvcnQgY29udGFpbmVyIHdpdGggb25lIG9yIG1vcmUgY29tbWEgYXJyb3dzLAogICAgICAgICAgICAgICAgIyB0aGVuIHdlIHdpbGwgbWFyayBpdCBhcyBhIGxvbmcgdGVybSB0byBvcGVuIGl0IGlmIHJlcXVlc3RlZC4KICAgICAgICAgICAgICAgICMgJHJPcHRzX2NvbW1hX2Fycm93X2JyZWFrcG9pbnRzID0KICAgICAgICAgICAgICAgICMgICAgMCAtIG9wZW4gb25seSBpZiBjb21tYSBwcmVjZWRlcyBjbG9zaW5nIGJyYWNlCiAgICAgICAgICAgICAgICAjICAgIDEgLSBzdGFibGU6IGV4Y2VwdCBmb3Igb25lIGxpbmUgYmxvY2tzCiAgICAgICAgICAgICAgICAjICAgIDIgLSB0cnkgdG8gZm9ybSAxIGxpbmUgYmxvY2tzCiAgICAgICAgICAgICAgICAjICAgIDMgLSBpZ25vcmUgPT4KICAgICAgICAgICAgICAgICMgICAgNCAtIGFsd2F5cyBvcGVuIHVwIGlmIHZ0PTAKICAgICAgICAgICAgICAgICMgICAgNSAtIHN0YWJsZTogZXZlbiBmb3Igb25lIGxpbmUgYmxvY2tzIGlmIHZ0PTAKICAgICAgICAgICAgICAgIGlmICggICEkaXNfbG9uZ190ZXJtCiAgICAgICAgICAgICAgICAgICAgJiYgJHRva2Vuc190b19nb1skaV9vcGVuaW5nXSA9fiAvXltcKFx7XFtdJC8KICAgICAgICAgICAgICAgICAgICAmJiAkaW5kZXhfYmVmb3JlX2Fycm93WyAkZGVwdGggKyAxIF0gPiAwCiAgICAgICAgICAgICAgICAgICAgJiYgISRvcGVuaW5nX3ZlcnRpY2FsX3RpZ2h0bmVzc3sgJHRva2Vuc190b19nb1skaV9vcGVuaW5nXSB9CiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkaXNfbG9uZ190ZXJtID0gJHJPcHRzX2NvbW1hX2Fycm93X2JyZWFrcG9pbnRzID09IDQKICAgICAgICAgICAgICAgICAgICAgIHx8ICggJHJPcHRzX2NvbW1hX2Fycm93X2JyZWFrcG9pbnRzID09IDAKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gZXEgJywnICkKICAgICAgICAgICAgICAgICAgICAgIHx8ICggJHJPcHRzX2NvbW1hX2Fycm93X2JyZWFrcG9pbnRzID09IDUKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJG9sZF9icmVha3BvaW50X3RvX2dvWyRpX29wZW5pbmddICk7CiAgICAgICAgICAgICAgICB9ICMjIGVuZCBpZiAoICEkaXNfbG9uZ190ZXJtICYmLi4uKQoKICAgICAgICAgICAgICAgICMgbWFyayB0ZXJtIGFzIGxvbmcgaWYgdGhlIGxlbmd0aCBiZXR3ZWVuIG9wZW5pbmcgYW5kIGNsb3NpbmcKICAgICAgICAgICAgICAgICMgcGFyZW5zIGV4Y2VlZHMgYWxsb3dlZCBsaW5lIGxlbmd0aAogICAgICAgICAgICAgICAgaWYgKCAhJGlzX2xvbmdfdGVybSAmJiAkc2F3X29wZW5pbmdfc3RydWN0dXJlICkgewogICAgICAgICAgICAgICAgICAgIG15ICRpX29wZW5pbmdfbWludXMgPSBmaW5kX3Rva2VuX3N0YXJ0aW5nX2xpc3QoJGlfb3BlbmluZyk7CgogICAgICAgICAgICAgICAgICAgICMgTm90ZTogd2UgaGF2ZSB0byBhbGxvdyBmb3Igb25lIGV4dHJhIHNwYWNlIGFmdGVyIGEKICAgICAgICAgICAgICAgICAgICAjIGNsb3NpbmcgdG9rZW4gc28gdGhhdCB3ZSBkbyBub3Qgc3RyYW5kIGEgY29tbWEgb3IKICAgICAgICAgICAgICAgICAgICAjIHNlbWljb2xvbiwgaGVuY2UgdGhlICc+PScgaGVyZSAob25lbGluZS50KQogICAgICAgICAgICAgICAgICAgICMgTm90ZTogd2UgaWdub3JlIGxlZnQgd2VsZCBsZW5ndGhzIGhlcmUgZm9yIGJlc3QgcmVzdWx0cwogICAgICAgICAgICAgICAgICAgICRpc19sb25nX3Rlcm0gPQogICAgICAgICAgICAgICAgICAgICAgZXhjZXNzX2xpbmVfbGVuZ3RoKCAkaV9vcGVuaW5nX21pbnVzLCAkaSwgMSApID49IDA7CiAgICAgICAgICAgICAgICB9ICMjIGVuZCBpZiAoICEkaXNfbG9uZ190ZXJtICYmLi4uKQoKICAgICAgICAgICAgICAgICMgV2UndmUgc2V0IGJyZWFrcyBhZnRlciBhbGwgY29tbWEtYXJyb3dzLiAgTm93IHdlIGhhdmUgdG8KICAgICAgICAgICAgICAgICMgdW5kbyB0aGVtIGlmIHRoaXMgY2FuIGJlIGEgb25lLWxpbmUgYmxvY2sKICAgICAgICAgICAgICAgICMgKHRoZSBvbmx5IGJyZWFrcG9pbnRzIHNldCB3aWxsIGJlIGR1ZSB0byBjb21tYS1hcnJvd3MpCiAgICAgICAgICAgICAgICBpZiAoCgogICAgICAgICAgICAgICAgICAgICMgdXNlciBkb2Vzbid0IHJlcXVpcmUgYnJlYWtpbmcgYWZ0ZXIgYWxsIGNvbW1hLWFycm93cwogICAgICAgICAgICAgICAgICAgICggJHJPcHRzX2NvbW1hX2Fycm93X2JyZWFrcG9pbnRzICE9IDAgKQogICAgICAgICAgICAgICAgICAgICYmICggJHJPcHRzX2NvbW1hX2Fycm93X2JyZWFrcG9pbnRzICE9IDQgKQoKICAgICAgICAgICAgICAgICAgICAjIGFuZCBpZiB0aGUgb3BlbmluZyBzdHJ1Y3R1cmUgaXMgaW4gdGhpcyBiYXRjaAogICAgICAgICAgICAgICAgICAgICYmICRzYXdfb3BlbmluZ19zdHJ1Y3R1cmUKCiAgICAgICAgICAgICAgICAgICAgIyBhbmQgZWl0aGVyIG9uIHRoZSBzYW1lIG9sZCBsaW5lCiAgICAgICAgICAgICAgICAgICAgJiYgKAogICAgICAgICAgICAgICAgICAgICAgICAkb2xkX2JyZWFrcG9pbnRfY291bnRfc3RhY2tbJGN1cnJlbnRfZGVwdGhdID09CiAgICAgICAgICAgICAgICAgICAgICAgICRsYXN0X29sZF9icmVha3BvaW50X2NvdW50CgogICAgICAgICAgICAgICAgICAgICAgICAjIG9yIHVzZXIgd2FudHMgdG8gZm9ybSBsb25nIGJsb2NrcyB3aXRoIGFycm93cwogICAgICAgICAgICAgICAgICAgICAgICB8fCAkck9wdHNfY29tbWFfYXJyb3dfYnJlYWtwb2ludHMgPT0gMgogICAgICAgICAgICAgICAgICAgICkKCiAgICAgICAgICAgICAgICAgICMgYW5kIHdlIG1hZGUgc29tZSBicmVha3BvaW50cyBiZXR3ZWVuIHRoZSBvcGVuaW5nIGFuZCBjbG9zaW5nCiAgICAgICAgICAgICAgICAgICAgJiYgKCAkYnJlYWtwb2ludF91bmRvX3N0YWNrWyRjdXJyZW50X2RlcHRoXSA8CiAgICAgICAgICAgICAgICAgICAgICAgICRmb3JjZWRfYnJlYWtwb2ludF91bmRvX2NvdW50ICkKCiAgICAgICAgICAgICAgICAgICAgIyBhbmQgdGhpcyBibG9jayBpcyBzaG9ydCBlbm91Z2ggdG8gZml0IG9uIG9uZSBsaW5lCiAgICAgICAgICAgICAgICAgICAgIyBOb3RlOiB1c2UgPCBiZWNhdXNlIG5lZWQgMSBtb3JlIHNwYWNlIGZvciBwb3NzaWJsZSBjb21tYQogICAgICAgICAgICAgICAgICAgICYmICEkaXNfbG9uZ190ZXJtCgogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdW5kb19mb3JjZWRfYnJlYWtwb2ludF9zdGFjaygKICAgICAgICAgICAgICAgICAgICAgICAgJGJyZWFrcG9pbnRfdW5kb19zdGFja1skY3VycmVudF9kZXB0aF0gKTsKICAgICAgICAgICAgICAgIH0gIyMgZW5kIGlmICggKCAkck9wdHNfY29tbWFfYXJyb3dfYnJlYWtwb2ludHMuLi4pKQoKICAgICAgICAgICAgICAgICMgbm93IHNlZSBpZiB3ZSBoYXZlIGFueSBjb21tYSBicmVha3BvaW50cyBsZWZ0CiAgICAgICAgICAgICAgICBteSAkaGFzX2NvbW1hX2JyZWFrcG9pbnRzID0KICAgICAgICAgICAgICAgICAgKCAkYnJlYWtwb2ludF9zdGFja1skY3VycmVudF9kZXB0aF0gIT0KICAgICAgICAgICAgICAgICAgICAgICRmb3JjZWRfYnJlYWtwb2ludF9jb3VudCApOwoKICAgICAgICAgICAgICAgICMgdXBkYXRlIGJyb2tlbi1zdWJsaXN0IGZsYWcgb2YgdGhlIG91dGVyIGNvbnRhaW5lcgogICAgICAgICAgICAgICAgJGhhc19icm9rZW5fc3VibGlzdFskZGVwdGhdID0KICAgICAgICAgICAgICAgICAgICAgJGhhc19icm9rZW5fc3VibGlzdFskZGVwdGhdCiAgICAgICAgICAgICAgICAgIHx8ICRoYXNfYnJva2VuX3N1Ymxpc3RbJGN1cnJlbnRfZGVwdGhdCiAgICAgICAgICAgICAgICAgIHx8ICRpc19sb25nX3Rlcm0KICAgICAgICAgICAgICAgICAgfHwgJGhhc19jb21tYV9icmVha3BvaW50czsKCiMgSGF2aW5nIGNvbWUgdG8gdGhlIGNsb3NpbmcgJyknLCAnfScsIG9yICddJywgbm93IHdlIGhhdmUgdG8gZGVjaWRlIGlmIHdlCiMgc2hvdWxkICdvcGVuIHVwJyB0aGUgc3RydWN0dXJlIGJ5IHBsYWNpbmcgYnJlYWtzIGF0IHRoZSBvcGVuaW5nIGFuZAojIGNsb3NpbmcgY29udGFpbmVycy4gIFRoaXMgaXMgYSB0cmlja3kgZGVjaXNpb24uICBIZXJlIGFyZSBzb21lIG9mIHRoZQojIGJhc2ljIGNvbnNpZGVyYXRpb25zOgojCiMgLUlmIHRoaXMgaXMgYSBCTE9DSyBjb250YWluZXIsIHRoZW4gYW55IGJyZWFrcG9pbnRzIHdpbGwgaGF2ZSBhbHJlYWR5CiMgYmVlbiBzZXQgKGFuZCBhY2NvcmRpbmcgdG8gdXNlciBwcmVmZXJlbmNlcyksIHNvIHdlIG5lZWQgZG8gbm90aGluZyBoZXJlLgojCiMgLUlmIHdlIGhhdmUgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBmb3Igd2hpY2ggd2UgY2FuIGFsaWduIHRoZSBsaXN0IGl0ZW1zLAojIHRoZW4gd2UgbmVlZCB0byBkbyBzbyBiZWNhdXNlIG90aGVyd2lzZSB0aGUgdmVydGljYWwgYWxpZ25lciBjYW5ub3QKIyBjdXJyZW50bHkgZG8gdGhlIGFsaWdubWVudC4KIwojIC1JZiB0aGlzIGNvbnRhaW5lciBkb2VzIGl0c2VsZiBjb250YWluIGEgY29udGFpbmVyIHdoaWNoIGhhcyBiZWVuIGJyb2tlbgojIG9wZW4sIHRoZW4gaXQgc2hvdWxkIGJlIGJyb2tlbiBvcGVuIHRvIHByb3Blcmx5IHNob3cgdGhlIHN0cnVjdHVyZS4KIwojIC1JZiB0aGVyZSBpcyBub3RoaW5nIHRvIGFsaWduLCBhbmQgbm8gb3RoZXIgcmVhc29uIHRvIGJyZWFrIGFwYXJ0LAojIHRoZW4gZG8gbm90IGRvIGl0LgojCiMgV2Ugd2lsbCBub3QgYnJlYWsgb3BlbiB0aGUgcGFyZW5zIG9mIGEgbG9uZyBidXQgJ3NpbXBsZScgbG9naWNhbCBleHByZXNzaW9uLgojIEZvciBleGFtcGxlOgojCiMgVGhpcyBpcyBhbiBleGFtcGxlIG9mIGEgc2ltcGxlIGxvZ2ljYWwgZXhwcmVzc2lvbiBhbmQgaXRzIGZvcm1hdHRpbmc6CiMKIyAgICAgaWYgKCAkYmlnd2FzdGVvZnNwYWNlMSAmJiAkYmlnd2FzdGVvZnNwYWNlMgojICAgICAgICAgfHwgJGJpZ3dhc3Rlb2ZzcGFjZTMgJiYgJGJpZ3dhc3Rlb2ZzcGFjZTQgKQojCiMgTW9zdCBwZW9wbGUgd291bGQgcHJlZmVyIHRoaXMgdGhhbiB0aGUgJ3NwYWNleScgdmVyc2lvbjoKIwojICAgICBpZiAoCiMgICAgICAgICAkYmlnd2FzdGVvZnNwYWNlMSAmJiAkYmlnd2FzdGVvZnNwYWNlMgojICAgICAgICAgfHwgJGJpZ3dhc3Rlb2ZzcGFjZTMgJiYgJGJpZ3dhc3Rlb2ZzcGFjZTQKIyAgICAgKQojCiMgVG8gaWxsdXN0cmF0ZSB0aGUgcnVsZXMgZm9yIGJyZWFraW5nIGxvZ2ljYWwgZXhwcmVzc2lvbnMsIGNvbnNpZGVyOgojCiMgICAgICAgICAgICAgRlVMTFkgREVOU0U6CiMgICAgICAgICAgICAgaWYgKCAkb3B0X2V4Y2wKIyAgICAgICAgICAgICAgICAgYW5kICggZXhpc3RzICRpZHNfZXhjbF91Y3skaWRfdWN9CiMgICAgICAgICAgICAgICAgICAgICBvciBncmVwICRpZF91YyA9fiAvJF8vLCBAaWRzX2V4Y2xfdWMgKSkKIwojIFRoaXMgaXMgb24gdGhlIHZlcmdlIG9mIGJlaW5nIGRpZmZpY3VsdCB0byByZWFkLiAgVGhlIGN1cnJlbnQgZGVmYXVsdCBpcyB0bwojIG9wZW4gaXQgdXAgbGlrZSB0aGlzOgojCiMgICAgICAgICAgICAgREVGQVVMVDoKIyAgICAgICAgICAgICBpZiAoCiMgICAgICAgICAgICAgICAgICRvcHRfZXhjbAojICAgICAgICAgICAgICAgICBhbmQgKCBleGlzdHMgJGlkc19leGNsX3VjeyRpZF91Y30KIyAgICAgICAgICAgICAgICAgICAgIG9yIGdyZXAgJGlkX3VjID1+IC8kXy8sIEBpZHNfZXhjbF91YyApCiMgICAgICAgICAgICAgICApCiMKIyBUaGlzIGlzIGEgY29tcHJvbWlzZSB3aGljaCB0cmllcyB0byBhdm9pZCBiZWluZyB0b28gZGVuc2UgYW5kIHRvIHNwYWNleS4KIyBBIG1vcmUgc3BhY2VkIHZlcnNpb24gd291bGQgYmU6CiMKIyAgICAgICAgICAgICBTUEFDRVk6CiMgICAgICAgICAgICAgaWYgKAojICAgICAgICAgICAgICAgICAkb3B0X2V4Y2wKIyAgICAgICAgICAgICAgICAgYW5kICgKIyAgICAgICAgICAgICAgICAgICAgIGV4aXN0cyAkaWRzX2V4Y2xfdWN7JGlkX3VjfQojICAgICAgICAgICAgICAgICAgICAgb3IgZ3JlcCAkaWRfdWMgPX4gLyRfLywgQGlkc19leGNsX3VjCiMgICAgICAgICAgICAgICAgICkKIyAgICAgICAgICAgICAgICkKIwojIFNvbWUgcGVvcGxlIG1pZ2h0IHByZWZlciB0aGUgc3BhY2V5IHZlcnNpb24gLS0gYW4gb3B0aW9uIGNvdWxkIGJlIGFkZGVkLiAgVGhlCiMgaW5uZXJtb3N0IGV4cHJlc3Npb24gY29udGFpbnMgYSBsb25nIGJsb2NrICcoIGV4aXN0cyAkaWRzXy4uLiAgJyknLgojCiMgSGVyZSBpcyBob3cgdGhlIGxvZ2ljIGdvZXM6IFdlIHdpbGwgZm9yY2UgYSBicmVhayBhdCB0aGUgJ29yJyB0aGF0IHRoZQojIGlubmVybW9zdCBleHByZXNzaW9uIGNvbnRhaW5zLCBidXQgd2Ugd2lsbCBub3QgYnJlYWsgYXBhcnQgaXRzIG9wZW5pbmcgYW5kCiMgY2xvc2luZyBjb250YWluZXJzIGJlY2F1c2UgKDEpIGl0IGNvbnRhaW5zIG5vIG11bHRpLWxpbmUgc3ViLWNvbnRhaW5lcnMgaXRzZWxmLAojIGFuZCAoMikgdGhlcmUgaXMgbm8gYWxpZ25tZW50IHRvIGJlIGdhaW5lZCBieSBicmVha2luZyBpdCBvcGVuIGxpa2UgdGhpcwojCiMgICAgICAgICAgICAgYW5kICgKIyAgICAgICAgICAgICAgICAgZXhpc3RzICRpZHNfZXhjbF91Y3skaWRfdWN9CiMgICAgICAgICAgICAgICAgIG9yIGdyZXAgJGlkX3VjID1+IC8kXy8sIEBpZHNfZXhjbF91YwojICAgICAgICAgICAgICkKIwojIChhbHRob3VnaCB0aGlzIGxvb2tzIHBlcmZlY3RseSBvayBhbmQgbWlnaHQgYmUgZ29vZCBmb3IgbG9uZyBleHByZXNzaW9ucykuICBUaGUKIyBvdXRlciAnaWYnIGNvbnRhaW5lciwgdGhvdWdoLCBjb250YWlucyBhIGJyb2tlbiBzdWItY29udGFpbmVyLCBzbyBpdCB3aWxsIGJlCiMgYnJva2VuIG9wZW4gdG8gYXZvaWQgdG9vIG11Y2ggZGVuc2l0eS4gIEFsc28sIHNpbmNlIGl0IGNvbnRhaW5zIG5vICdvcidzLCB0aGVyZQojIHdpbGwgYmUgYSBmb3JjZWQgYnJlYWsgYXQgaXRzICdhbmQnLgoKICAgICAgICAgICAgICAgICMgc2V0IHNvbWUgZmxhZ3MgdGVsbGluZyBzb21ldGhpbmcgYWJvdXQgdGhpcyBjb250YWluZXIuLgogICAgICAgICAgICAgICAgbXkgJGlzX3NpbXBsZV9sb2dpY2FsX2V4cHJlc3Npb24gPSAwOwogICAgICAgICAgICAgICAgaWYgKCAgICRpdGVtX2NvdW50X3N0YWNrWyRjdXJyZW50X2RlcHRoXSA9PSAwCiAgICAgICAgICAgICAgICAgICAgJiYgJHNhd19vcGVuaW5nX3N0cnVjdHVyZQogICAgICAgICAgICAgICAgICAgICYmICR0b2tlbnNfdG9fZ29bJGlfb3BlbmluZ10gZXEgJygnCiAgICAgICAgICAgICAgICAgICAgJiYgJGlzX2xvZ2ljYWxfY29udGFpbmVyeyAkY29udGFpbmVyX3R5cGVbJGN1cnJlbnRfZGVwdGhdIH0KICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAjIFRoaXMgc2VlbXMgdG8gYmUgYSBzaW1wbGUgbG9naWNhbCBleHByZXNzaW9uIHdpdGgKICAgICAgICAgICAgICAgICAgICAjIG5vIGV4aXN0aW5nIGJyZWFrcG9pbnRzLiAgU2V0IGEgZmxhZyB0byBwcmV2ZW50CiAgICAgICAgICAgICAgICAgICAgIyBvcGVuaW5nIGl0IHVwLgogICAgICAgICAgICAgICAgICAgIGlmICggISRoYXNfY29tbWFfYnJlYWtwb2ludHMgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRpc19zaW1wbGVfbG9naWNhbF9leHByZXNzaW9uID0gMTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgVGhpcyBzZWVtcyB0byBiZSBhIHNpbXBsZSBsb2dpY2FsIGV4cHJlc3Npb24gd2l0aAogICAgICAgICAgICAgICAgICAgICMgYnJlYWtwb2ludHMgKGJyb2tlbiBzdWJsaXN0cywgZm9yIGV4YW1wbGUpLiAgQnJlYWsKICAgICAgICAgICAgICAgICAgICAjIGF0IGFsbCAnb3IncyBhbmQgJ3x8J3MuCiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNldF9sb2dpY2FsX2JyZWFrcG9pbnRzKCRjdXJyZW50X2RlcHRoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9ICMjIGVuZCBpZiAoICRpdGVtX2NvdW50X3N0YWNrLi4uKQoKICAgICAgICAgICAgICAgIGlmICggJGlzX2xvbmdfdGVybQogICAgICAgICAgICAgICAgICAgICYmIEB7ICRyZm9yX3NlbWljb2xvbl9saXN0WyRjdXJyZW50X2RlcHRoXSB9ICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBzZXRfZm9yX3NlbWljb2xvbl9icmVha3BvaW50cygkY3VycmVudF9kZXB0aCk7CgogICAgICAgICAgICAgICAgICAgICMgb3BlbiB1cCBhIGxvbmcgJ2Zvcicgb3IgJ2ZvcmVhY2gnIGNvbnRhaW5lciB0byBhbGxvdwogICAgICAgICAgICAgICAgICAgICMgbGVhZGluZyB0ZXJtIGFsaWdubWVudCB1bmxlc3MgLWxwIGlzIHVzZWQuCiAgICAgICAgICAgICAgICAgICAgJGhhc19jb21tYV9icmVha3BvaW50cyA9IDEKICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyAkck9wdHNfbGluZV91cF9wYXJlbnRoZXNlczsKICAgICAgICAgICAgICAgIH0gIyMgZW5kIGlmICggJGlzX2xvbmdfdGVybSAmJiAuLi4pCgogICAgICAgICAgICAgICAgaWYgKAoKICAgICAgICAgICAgICAgICAgICAjIGJyZWFrcyBmb3IgY29kZSBCTE9DS1MgYXJlIGhhbmRsZWQgYXQgYSBoaWdoZXIgbGV2ZWwKICAgICAgICAgICAgICAgICAgICAhJGJsb2NrX3R5cGUKCiAgICAgICAgICAgICAgICAgICAgIyB3ZSBkbyBub3QgbmVlZCB0byBicmVhayBhdCB0aGUgdG9wIGxldmVsIG9mIGFuICdpZicKICAgICAgICAgICAgICAgICAgICAjIHR5cGUgZXhwcmVzc2lvbgogICAgICAgICAgICAgICAgICAgICYmICEkaXNfc2ltcGxlX2xvZ2ljYWxfZXhwcmVzc2lvbgoKICAgICAgICAgICAgICAgICAgICAjIyBtb2RpZmljYXRpb24gdG8ga2VlcCAnOiAoJyBjb250YWluZXJzIHZlcnRpY2FsbHkgdGlnaHQ7CiAgICAgICAgICAgICAgICAgICAgIyMgYnV0IHByb2JhYmx5IGJldHRlciB0byBsZXQgdXNlciBzZXQgLXZ0PTEgdG8gYXZvaWQKICAgICAgICAgICAgICAgICAgICAjIyBpbmNvbnNpc3RlbmN5IHdpdGggb3RoZXIgcGFyZW4gdHlwZXMKICAgICAgICAgICAgICAgICAgICAjIyAmJiAoJGNvbnRhaW5lcl90eXBlWyRjdXJyZW50X2RlcHRoXSBuZSAnOicpCgogICAgICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlLCB3ZSByZXF1aXJlIG9uZSBvZiB0aGVzZSByZWFzb25zIGZvciBicmVha2luZzoKICAgICAgICAgICAgICAgICAgICAmJiAoCgogICAgICAgICAgICAgICAgICAgICAgICAjIC0gdGhpcyB0ZXJtIGhhcyBmb3JjZWQgbGluZSBicmVha3MKICAgICAgICAgICAgICAgICAgICAgICAgJGhhc19jb21tYV9icmVha3BvaW50cwoKICAgICAgICAgICAgICAgICAgICAgICAjIC0gdGhlIG9wZW5pbmcgY29udGFpbmVyIGlzIHNlcGFyYXRlZCBmcm9tIHRoaXMgYmF0Y2gKICAgICAgICAgICAgICAgICAgICAgICAjICAgZm9yIHNvbWUgcmVhc29uIChjb21tZW50LCBibGFuayBsaW5lLCBjb2RlIGJsb2NrKQogICAgICAgICAgICAgICAgICAgICAgICMgLSB0aGlzIGlzIGEgbm9uLXBhcmVuIGNvbnRhaW5lciBzcGFubmluZyBtdWx0aXBsZSBsaW5lcwogICAgICAgICAgICAgICAgICAgICAgICB8fCAhJHNhd19vcGVuaW5nX3N0cnVjdHVyZQoKICAgICAgICAgICAgICAgICAgICAgICAgIyAtIHRoaXMgaXMgYSBsb25nIGJsb2NrIGNvbnRhaW5lZCBpbiBhbm90aGVyIGJyZWFrYWJsZQogICAgICAgICAgICAgICAgICAgICAgICAjICAgY29udGFpbmVyCiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICggICAkaXNfbG9uZ190ZXJtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkY29udGFpbmVyX2Vudmlyb25tZW50X3RvX2dvWyRpX29wZW5pbmddIG5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQkxPQ0snICkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgIyBGb3IgLWxwIG9wdGlvbiwgd2UgbXVzdCBwdXQgYSBicmVha3BvaW50IGJlZm9yZQogICAgICAgICAgICAgICAgICAgICMgdGhlIHRva2VuIHdoaWNoIGhhcyBiZWVuIGlkZW50aWZpZWQgYXMgc3RhcnRpbmcKICAgICAgICAgICAgICAgICAgICAjIHRoaXMgaW5kZW50YXRpb24gbGV2ZWwuICBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IKICAgICAgICAgICAgICAgICAgICAjIHByb3BlciBhbGlnbm1lbnQuCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkck9wdHNfbGluZV91cF9wYXJlbnRoZXNlcyAmJiAkc2F3X29wZW5pbmdfc3RydWN0dXJlICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpdGVtID0gJGxlYWRpbmdfc3BhY2VzX3RvX2dvWyAkaV9vcGVuaW5nICsgMSBdOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICAgJGlfb3BlbmluZyArIDEgPCAkbWF4X2luZGV4X3RvX2dvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkdHlwZXNfdG9fZ29bICRpX29wZW5pbmcgKyAxIF0gZXEgJ2InICkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGl0ZW0gPSAkbGVhZGluZ19zcGFjZXNfdG9fZ29bICRpX29wZW5pbmcgKyAyIF07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCRpdGVtKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpX3N0YXJ0XzIgPSAkaXRlbS0+Z2V0X3N0YXJ0aW5nX2luZGV4KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCgkaV9zdGFydF8yKQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdlIGFyZSBicmVha2luZyBhZnRlciBhbiBvcGVuaW5nIGJyYWNlLCBwYXJlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNvIGRvbid0IGJyZWFrIGJlZm9yZSBpdCB0b28KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkaV9zdGFydF8yIG5lICRpX29wZW5pbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE9ubHkgYnJlYWsgZm9yIGJyZWFrcG9pbnRzIGF0IHRoZSBzYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbmRlbnRhdGlvbiBsZXZlbCBhcyB0aGUgb3BlbmluZyBwYXJlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICR0ZXN0MSA9ICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpX29wZW5pbmddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICR0ZXN0MiA9ICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpX3N0YXJ0XzJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJHRlc3QyID09ICR0ZXN0MSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2ZvcmNlZF9icmVha3BvaW50KCAkaV9zdGFydF8yIC0gMSApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gIyMgZW5kIGlmICggZGVmaW5lZCgkaV9zdGFydF8yLi4uKSkKICAgICAgICAgICAgICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCBkZWZpbmVkKCRpdGVtKSApCiAgICAgICAgICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCAkck9wdHNfbGluZV91cF9wYXJlbnRoZXNlcy4uLikKCiAgICAgICAgICAgICAgICAgICAgIyBicmVhayBhZnRlciBvcGVuaW5nIHN0cnVjdHVyZS4KICAgICAgICAgICAgICAgICAgICAjIG5vdGU6IGJyZWFrIGJlZm9yZSBjbG9zaW5nIHN0cnVjdHVyZSB3aWxsIGJlIGF1dG9tYXRpYwogICAgICAgICAgICAgICAgICAgIGlmICggJG1pbmltdW1fZGVwdGggPD0gJGN1cnJlbnRfZGVwdGggKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBzZXRfZm9yY2VkX2JyZWFrcG9pbnQoJGlfb3BlbmluZykKICAgICAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgKCAkZG9fbm90X2JyZWFrX2FwYXJ0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBpc191bmJyZWFrYWJsZV9jb250YWluZXIoJGN1cnJlbnRfZGVwdGgpICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGJyZWFrIGF0ICcsJyBvZiBsb3dlciBkZXB0aCBsZXZlbCBiZWZvcmUgb3BlbmluZyB0b2tlbgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRsYXN0X2NvbW1hX2luZGV4WyRkZXB0aF0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfZm9yY2VkX2JyZWFrcG9pbnQoICRsYXN0X2NvbW1hX2luZGV4WyRkZXB0aF0gKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgIyBicmVhayBhdCAnLicgb2YgbG93ZXIgZGVwdGggbGV2ZWwgYmVmb3JlIG9wZW5pbmcgdG9rZW4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkbGFzdF9kb3RfaW5kZXhbJGRlcHRoXSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9mb3JjZWRfYnJlYWtwb2ludCggJGxhc3RfZG90X2luZGV4WyRkZXB0aF0gKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgIyBicmVhayBiZWZvcmUgb3BlbmluZyBzdHJ1Y3R1cmUgaWYgcHJlY2VkZWQgYnkgYW5vdGhlcgogICAgICAgICAgICAgICAgICAgICAgICAjIGNsb3Npbmcgc3RydWN0dXJlIGFuZCBhIGNvbW1hLiAgVGhpcyBpcyBub3JtYWxseQogICAgICAgICAgICAgICAgICAgICAgICAjIGRvbmUgYnkgdGhlIHByZXZpb3VzIGNsb3NpbmcgYnJhY2UsIGJ1dCBub3QKICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiBpdCB3YXMgYSBvbmUtbGluZSBibG9jay4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkaV9vcGVuaW5nID4gMiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpX3ByZXYgPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICR0eXBlc190b19nb1sgJGlfb3BlbmluZyAtIDEgXSBlcSAnYicgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICRpX29wZW5pbmcgLSAyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGlfb3BlbmluZyAtIDE7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAgICR0eXBlc190b19nb1skaV9wcmV2XSBlcSAnLCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkdHlwZXNfdG9fZ29bICRpX3ByZXYgLSAxIF0gPX4gL15bXClcfV0kLyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2ZvcmNlZF9icmVha3BvaW50KCRpX3ByZXYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWxzbyBicmVhayBiZWZvcmUgc29tZXRoaW5nIGxpa2UgJzooJyAgb3IgJz8oJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiBhcHByb3ByaWF0ZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZXNfdG9fZ29bJGlfcHJldl0gPX4gL14oW2tcOlw/XXwmJnxcfFx8KSQvICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkdG9rZW5fcHJldiA9ICR0b2tlbnNfdG9fZ29bJGlfcHJldl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkd2FudF9icmVha19iZWZvcmV7JHRva2VuX3ByZXZ9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfZm9yY2VkX2JyZWFrcG9pbnQoJGlfcHJldik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAjIyBlbmQgZWxzaWYgKCAkdHlwZXNfdG9fZ29bJGlfcHJldi4uLl0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0gIyMgZW5kIGlmICggJGlfb3BlbmluZyA+IDIgKQogICAgICAgICAgICAgICAgICAgIH0gIyMgZW5kIGlmICggJG1pbmltdW1fZGVwdGggPD0uLi4pCgogICAgICAgICAgICAgICAgICAgICMgYnJlYWsgYWZ0ZXIgY29tbWEgZm9sbG93aW5nIGNsb3Npbmcgc3RydWN0dXJlCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkbmV4dF90eXBlIGVxICcsJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2ZvcmNlZF9icmVha3BvaW50KCAkaSArIDEgKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgYnJlYWsgYmVmb3JlIGFuICc9JyBmb2xsb3dpbmcgY2xvc2luZyBzdHJ1Y3R1cmUKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICRpc19hc3NpZ25tZW50eyRuZXh0X25vbmJsYW5rX3R5cGV9CiAgICAgICAgICAgICAgICAgICAgICAgICYmICggJGJyZWFrcG9pbnRfc3RhY2tbJGN1cnJlbnRfZGVwdGhdICE9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZm9yY2VkX2JyZWFrcG9pbnRfY291bnQgKQogICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2ZvcmNlZF9icmVha3BvaW50KCRpKTsKICAgICAgICAgICAgICAgICAgICB9ICMjIGVuZCBpZiAoICRpc19hc3NpZ25tZW50eyRuZXh0X25vbmJsYW5rX3R5cGUuLi59KQoKICAgICAgICAgICAgICAgICAgICAjIGJyZWFrIGF0IGFueSBjb21tYSBiZWZvcmUgdGhlIG9wZW5pbmcgc3RydWN0dXJlIEFkZGVkCiAgICAgICAgICAgICAgICAgICAgIyBmb3IgLWxwLCBidXQgc2VlbXMgdG8gYmUgZ29vZCBpbiBnZW5lcmFsLiAgSXQgaXNuJ3QKICAgICAgICAgICAgICAgICAgICAjIG9idmlvdXMgaG93IGZhciBiYWNrIHRvIGxvb2s7IHRoZSAnNScgYmVsb3cgc2VlbXMgdG8KICAgICAgICAgICAgICAgICAgICAjIHdvcmsgd2VsbCBhbmQgd2lsbCBjYXRjaCB0aGUgY29tbWEgaW4gc29tZXRoaW5nIGxpa2UKICAgICAgICAgICAgICAgICAgICAjICBwdXNoIEBsaXN0LCBteWZ1bmMoICRwYXJhbSwgJHBhcmFtLCAuLgoKICAgICAgICAgICAgICAgICAgICBteSAkaWNvbW1hID0gJGxhc3RfY29tbWFfaW5kZXhbJGRlcHRoXTsKICAgICAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQoJGljb21tYSkgJiYgKCAkaV9vcGVuaW5nIC0gJGljb21tYSApIDwgNSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdW5sZXNzICggJGZvcmNlZF9icmVha3BvaW50X3RvX2dvWyRpY29tbWFdICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2ZvcmNlZF9icmVha3BvaW50KCRpY29tbWEpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSAgICAjIGVuZCBsb2dpYyB0byBvcGVuIHVwIGEgY29udGFpbmVyCgogICAgICAgICAgICAgICAgIyBCcmVhayBvcGVuIGEgbG9naWNhbCBjb250YWluZXIgb3BlbiBpZiBpdCB3YXMgYWxyZWFkeSBvcGVuCiAgICAgICAgICAgICAgICBlbHNpZiAoJGlzX3NpbXBsZV9sb2dpY2FsX2V4cHJlc3Npb24KICAgICAgICAgICAgICAgICAgICAmJiAkaGFzX29sZF9sb2dpY2FsX2JyZWFrcG9pbnRzWyRjdXJyZW50X2RlcHRoXSApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgc2V0X2xvZ2ljYWxfYnJlYWtwb2ludHMoJGN1cnJlbnRfZGVwdGgpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgSGFuZGxlIGxvbmcgY29udGFpbmVyIHdoaWNoIGRvZXMgbm90IGdldCBvcGVuZWQgdXAKICAgICAgICAgICAgICAgIGVsc2lmICgkaXNfbG9uZ190ZXJtKSB7CgogICAgICAgICAgICAgICAgICAgICMgbXVzdCBzZXQgZmFrZSBicmVha3BvaW50IHRvIGFsZXJ0IG91dGVyIGNvbnRhaW5lcnMgdGhhdAogICAgICAgICAgICAgICAgICAgICMgdGhleSBhcmUgY29tcGxleAogICAgICAgICAgICAgICAgICAgIHNldF9mYWtlX2JyZWFrcG9pbnQoKTsKICAgICAgICAgICAgICAgIH0gIyMgZW5kIGVsc2lmICgkaXNfbG9uZ190ZXJtKQoKICAgICAgICAgICAgfSAjIyBlbmQgZWxzaWYgKCAkZGVwdGggPCAkY3VycmVudF9kZXB0aCkKCiAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgIyBIYW5kbGUgdGhpcyB0b2tlbgogICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICAgICAgICAkY3VycmVudF9kZXB0aCA9ICRkZXB0aDsKCiAgICAgICAgICAgICMgaGFuZGxlIGNvbW1hLWFycm93CiAgICAgICAgICAgIGlmICggJHR5cGUgZXEgJz0+JyApIHsKICAgICAgICAgICAgICAgIG5leHQgaWYgKCAkbGFzdF9ub25ibGFua190eXBlIGVxICc9PicgKTsKICAgICAgICAgICAgICAgIG5leHQgaWYgJHJPcHRzX2JyZWFrX2F0X29sZF9jb21tYV9icmVha3BvaW50czsKICAgICAgICAgICAgICAgIG5leHQgaWYgJHJPcHRzX2NvbW1hX2Fycm93X2JyZWFrcG9pbnRzID09IDM7CiAgICAgICAgICAgICAgICAkd2FudF9jb21tYV9icmVha1skZGVwdGhdICAgPSAxOwogICAgICAgICAgICAgICAgJGluZGV4X2JlZm9yZV9hcnJvd1skZGVwdGhdID0gJGlfbGFzdF9ub25ibGFua190b2tlbjsKICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgIH0gIyMgZW5kIGlmICggJHR5cGUgZXEgJz0+JyApCgogICAgICAgICAgICBlbHNpZiAoICR0eXBlIGVxICcuJyApIHsKICAgICAgICAgICAgICAgICRsYXN0X2RvdF9pbmRleFskZGVwdGhdID0gJGk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgVHVybiBvZmYgYWxpZ25tZW50IGlmIHdlIGFyZSBzdXJlIHRoYXQgdGhpcyBpcyBub3QgYSBsaXN0CiAgICAgICAgICAgICMgZW52aXJvbm1lbnQuICBUbyBiZSBzYWZlLCB3ZSB3aWxsIGRvIHRoaXMgaWYgd2Ugc2VlIGNlcnRhaW4KICAgICAgICAgICAgIyBub24tbGlzdCB0b2tlbnMsIHN1Y2ggYXMgJzsnLCBhbmQgYWxzbyB0aGUgZW52aXJvbm1lbnQgaXMKICAgICAgICAgICAgIyBub3QgYSBsaXN0LiAgTm90ZSB0aGF0ICc9JyBjb3VsZCBiZSBpbiBhbnkgb2YgdGhlID0gb3BlcmF0b3JzCiAgICAgICAgICAgICMgKGxleHRlc3QudCkuIFdlIGNhbid0IGp1c3QgdXNlIHRoZSByZXBvcnRlZCBlbnZpcm9ubWVudAogICAgICAgICAgICAjIGJlY2F1c2UgaXQgY2FuIGJlIGluY29ycmVjdCBpbiBzb21lIGNhc2VzLgogICAgICAgICAgICBlbHNpZiAoICggJHR5cGUgPX4gL15bXDtcPFw+XH5dJC8gfHwgJGlzX2Fzc2lnbm1lbnR7JHR5cGV9ICkKICAgICAgICAgICAgICAgICYmICRjb250YWluZXJfZW52aXJvbm1lbnRfdG9fZ29bJGldIG5lICdMSVNUJyApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRkb250X2FsaWduWyRkZXB0aF0gICAgICAgICA9IDE7CiAgICAgICAgICAgICAgICAkd2FudF9jb21tYV9icmVha1skZGVwdGhdICAgPSAwOwogICAgICAgICAgICAgICAgJGluZGV4X2JlZm9yZV9hcnJvd1skZGVwdGhdID0gLTE7CiAgICAgICAgICAgIH0gIyMgZW5kIGVsc2lmICggKCAkdHlwZSA9fiAvXltcO1w8XD5cfl0kLy4uLikpCgogICAgICAgICAgICAjIG5vdyBqdXN0IGhhbmRsZSBhbnkgY29tbWFzCiAgICAgICAgICAgIG5leHQgdW5sZXNzICggJHR5cGUgZXEgJywnICk7CgogICAgICAgICAgICAkbGFzdF9kb3RfaW5kZXhbJGRlcHRoXSAgID0gdW5kZWY7CiAgICAgICAgICAgICRsYXN0X2NvbW1hX2luZGV4WyRkZXB0aF0gPSAkaTsKCiAgICAgICAgICAgICMgYnJlYWsgaGVyZSBpZiB0aGlzIGNvbW1hIGZvbGxvd3MgYSAnPT4nCiAgICAgICAgICAgICMgYnV0IG5vdCBpZiB0aGVyZSBpcyBhIHNpZGUgY29tbWVudCBhZnRlciB0aGUgY29tbWEKICAgICAgICAgICAgaWYgKCAkd2FudF9jb21tYV9icmVha1skZGVwdGhdICkgewoKICAgICAgICAgICAgICAgIGlmICggJG5leHRfbm9uYmxhbmtfdHlwZSA9fiAvXltcKVx9XF1SXSQvICkgewogICAgICAgICAgICAgICAgICAgIGlmICgkck9wdHNfY29tbWFfYXJyb3dfYnJlYWtwb2ludHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHdhbnRfY29tbWFfYnJlYWtbJGRlcHRoXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHNldF9mb3JjZWRfYnJlYWtwb2ludCgkaSkgdW5sZXNzICggJG5leHRfbm9uYmxhbmtfdHlwZSBlcSAnIycgKTsKCiAgICAgICAgICAgICAgICAjIGJyZWFrIGJlZm9yZSB0aGUgcHJldmlvdXMgdG9rZW4gaWYgaXQgbG9va3Mgc2FmZQogICAgICAgICAgICAgICAgIyBFeGFtcGxlIG9mIHNvbWV0aGluZyB0aGF0IHdlIHdpbGwgbm90IHRyeSB0byBicmVhayBiZWZvcmU6CiAgICAgICAgICAgICAgICAjICAgREJJOjpTUUxfU01BTExJTlQoKSA9PiAkYWRvX2NvbnN0cy0+e2FkU21hbGxJbnR9LAogICAgICAgICAgICAgICAgIyBBbHNvIHdlIGRvbid0IHdhbnQgdG8gYnJlYWsgYXQgYSBiaW5hcnkgb3BlcmF0b3IgKGxpa2UgKyk6CiAgICAgICAgICAgICAgICAjICRjLT5jcmVhdGVPdmFsKAogICAgICAgICAgICAgICAgIyAgICAkeCArICRSLCAkeSArCiAgICAgICAgICAgICAgICAjICAgICRSID0+ICR4IC0gJFIsCiAgICAgICAgICAgICAgICAjICAgICR5IC0gJFIsIC1maWxsICAgPT4gJ2JsYWNrJywKICAgICAgICAgICAgICAgICMgKTsKICAgICAgICAgICAgICAgIG15ICRpYnJlYWsgPSAkaW5kZXhfYmVmb3JlX2Fycm93WyRkZXB0aF0gLSAxOwogICAgICAgICAgICAgICAgaWYgKCAgICRpYnJlYWsgPiAwCiAgICAgICAgICAgICAgICAgICAgJiYgJHRva2Vuc190b19nb1sgJGlicmVhayArIDEgXSAhfiAvXltcKVx9XF1dJC8gKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGlmICggJHRva2Vuc190b19nb1skaWJyZWFrXSBlcSAnLScgKSB7ICRpYnJlYWstLSB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bJGlicmVha10gZXEgJ2InICkgIHsgJGlicmVhay0tIH0KICAgICAgICAgICAgICAgICAgICBpZiAoICR0eXBlc190b19nb1skaWJyZWFrXSA9fiAvXlssd2laQ1VHXChce1xbXSQvICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBkb24ndCBicmVhayBwb2ludGVyIGNhbGxzLCBzdWNoIGFzIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgICAgICAgICAgICAgICAgICMgIEZpbGU6OlNwZWMtPmN1cmRpciAgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgIyAoVGhpcyBpcyB0b2tlbml6ZWQgYXMgYWRqYWNlbnQgJ3cnIHRva2VucykKICAgICAgICAgICAgICAgICAgICAgICAgIyNpZiAoICR0b2tlbnNfdG9fZ29bICRpYnJlYWsgKyAxIF0gIX4gL14tPi8gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIEFuZCBkb24ndCBicmVhayBiZWZvcmUgYSBjb21tYSwgYXMgaW4gdGhlIGZvbGxvd2luZzoKICAgICAgICAgICAgICAgICAgICAgICAgIyAoIExPTkdFUl9USEFOLD0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICMgICAgRUlHSFRZX0NIQVJBQ1RFUlMsPT4gMiwKICAgICAgICAgICAgICAgICAgICAgICAgIyAgICBDQVVTRVNfRk9STUFUVElORyw9PiAzLAogICAgICAgICAgICAgICAgICAgICAgICAjICAgIExJS0VfVEhJUyw9PiA0LAogICAgICAgICAgICAgICAgICAgICAgICAjICk7CiAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBleGFtcGxlIGlzIGZvciAtdHNvIGJ1dCBzaG91bGQgYmUgZ2VuZXJhbCBydWxlCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggICAkdG9rZW5zX3RvX2dvWyAkaWJyZWFrICsgMSBdIG5lICctPicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICR0b2tlbnNfdG9fZ29bICRpYnJlYWsgKyAxIF0gbmUgJywnICkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2ZvcmNlZF9icmVha3BvaW50KCRpYnJlYWspOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCAkdHlwZXNfdG9fZ29bJGlicmVhay4uLl0pCiAgICAgICAgICAgICAgICB9ICMjIGVuZCBpZiAoICRpYnJlYWsgPiAwICYmICR0b2tlbnNfdG9fZ28uLi4pCgogICAgICAgICAgICAgICAgJHdhbnRfY29tbWFfYnJlYWtbJGRlcHRoXSAgID0gMDsKICAgICAgICAgICAgICAgICRpbmRleF9iZWZvcmVfYXJyb3dbJGRlcHRoXSA9IC0xOwoKICAgICAgICAgICAgICAgICMgaGFuZGxlIGxpc3Qgd2hpY2ggbWl4ZXMgJz0+J3MgYW5kICcsJ3M6CiAgICAgICAgICAgICAgICAjIHRyZWF0IGFueSBsaXN0IGl0ZW1zIHNvIGZhciBhcyBhbiBpbnRlcnJ1cHRlZCBsaXN0CiAgICAgICAgICAgICAgICAkaW50ZXJydXB0ZWRfbGlzdFskZGVwdGhdID0gMTsKICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgIH0gIyMgZW5kIGlmICggJHdhbnRfY29tbWFfYnJlYWsuLi4pCgogICAgICAgICAgICAjIGJyZWFrIGFmdGVyIGFsbCBjb21tYXMgYWJvdmUgc3RhcnRpbmcgZGVwdGgKICAgICAgICAgICAgaWYgKCAkZGVwdGggPCAkc3RhcnRpbmdfZGVwdGggJiYgISRkb250X2FsaWduWyRkZXB0aF0gKSB7CiAgICAgICAgICAgICAgICBzZXRfZm9yY2VkX2JyZWFrcG9pbnQoJGkpIHVubGVzcyAoICRuZXh0X25vbmJsYW5rX3R5cGUgZXEgJyMnICk7CiAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFkZCB0aGlzIGNvbW1hIHRvIHRoZSBsaXN0Li4KICAgICAgICAgICAgbXkgJGl0ZW1fY291bnQgPSAkaXRlbV9jb3VudF9zdGFja1skZGVwdGhdOwogICAgICAgICAgICBpZiAoICRpdGVtX2NvdW50ID09IDAgKSB7CgogICAgICAgICAgICAgICAgIyBidXQgZG8gbm90IGZvcm0gYSBsaXN0IHdpdGggbm8gb3BlbmluZyBzdHJ1Y3R1cmUKICAgICAgICAgICAgICAgICMgZm9yIGV4YW1wbGU6CgogICAgICAgICAgICAgICAgIyAgICAgICAgICAgIG9wZW4gSU5GSUxFX0NPUFksICI+JGlucHV0X2ZpbGVfY29weSIKICAgICAgICAgICAgICAgICMgICAgICAgICAgICAgIG9yIGRpZSAoInZlcnkgbG9uZyBtZXNzYWdlIik7CgogICAgICAgICAgICAgICAgaWYgKCAoICRvcGVuaW5nX3N0cnVjdHVyZV9pbmRleF9zdGFja1skZGVwdGhdIDwgMCApCiAgICAgICAgICAgICAgICAgICAgJiYgJGNvbnRhaW5lcl9lbnZpcm9ubWVudF90b19nb1skaV0gZXEgJ0JMT0NLJyApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJGRvbnRfYWxpZ25bJGRlcHRoXSA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gIyMgZW5kIGlmICggJGl0ZW1fY291bnQgPT0gMCApCgogICAgICAgICAgICAkY29tbWFfaW5kZXhbJGRlcHRoXVskaXRlbV9jb3VudF0gPSAkaTsKICAgICAgICAgICAgKyskaXRlbV9jb3VudF9zdGFja1skZGVwdGhdOwogICAgICAgICAgICBpZiAoICRsYXN0X25vbmJsYW5rX3R5cGUgPX4gL15baVJcXV0kLyApIHsKICAgICAgICAgICAgICAgICRpZGVudGlmaWVyX2NvdW50X3N0YWNrWyRkZXB0aF0rKzsKICAgICAgICAgICAgfQogICAgICAgIH0gIyMgZW5kIHdoaWxlICggKyskaSA8PSAkbWF4X2luZGV4X3RvX2dvKQoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgZW5kIG9mIGxvb3Agb3ZlciBhbGwgdG9rZW5zIGluIHRoaXMgYmF0Y2gKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgICAjIHNldCBicmVha3MgZm9yIGFueSB1bmZpbmlzaGVkIGxpc3RzIC4uCiAgICAgICAgZm9yICggbXkgJGRkID0gJGN1cnJlbnRfZGVwdGggOyAkZGQgPj0gJG1pbmltdW1fZGVwdGggOyAkZGQtLSApIHsKCiAgICAgICAgICAgICRpbnRlcnJ1cHRlZF9saXN0WyRkZF0gICA9IDE7CiAgICAgICAgICAgICRoYXNfYnJva2VuX3N1Ymxpc3RbJGRkXSA9IDEgaWYgKCAkZGQgPCAkY3VycmVudF9kZXB0aCApOwogICAgICAgICAgICBzZXRfY29tbWFfYnJlYWtwb2ludHMoJGRkKTsKICAgICAgICAgICAgc2V0X2xvZ2ljYWxfYnJlYWtwb2ludHMoJGRkKQogICAgICAgICAgICAgIGlmICggJGhhc19vbGRfbG9naWNhbF9icmVha3BvaW50c1skZGRdICk7CiAgICAgICAgICAgIHNldF9mb3Jfc2VtaWNvbG9uX2JyZWFrcG9pbnRzKCRkZCk7CgogICAgICAgICAgICAjIGJyZWFrIG9wZW4gY29udGFpbmVyLi4uCiAgICAgICAgICAgIG15ICRpX29wZW5pbmcgPSAkb3BlbmluZ19zdHJ1Y3R1cmVfaW5kZXhfc3RhY2tbJGRkXTsKICAgICAgICAgICAgc2V0X2ZvcmNlZF9icmVha3BvaW50KCRpX29wZW5pbmcpCiAgICAgICAgICAgICAgdW5sZXNzICgKICAgICAgICAgICAgICAgIGlzX3VuYnJlYWthYmxlX2NvbnRhaW5lcigkZGQpCgogICAgICAgICAgICAgICAgIyBBdm9pZCBhIGJyZWFrIHdoaWNoIHdvdWxkIHBsYWNlIGFuIGlzb2xhdGVkICcgb3IgIgogICAgICAgICAgICAgICAgIyBvbiBhIGxpbmUKICAgICAgICAgICAgICAgIHx8ICggICAkdHlwZSBlcSAnUScKICAgICAgICAgICAgICAgICAgICAmJiAkaV9vcGVuaW5nID49ICRtYXhfaW5kZXhfdG9fZ28gLSAyCiAgICAgICAgICAgICAgICAgICAgJiYgJHRva2VuID1+IC9eWyciXSQvICkKICAgICAgICAgICAgICApOwogICAgICAgIH0gIyMgZW5kIGZvciAoIG15ICRkZCA9ICRjdXJyZW50X2RlcHRoLi4uKQoKICAgICAgICAjIFJldHVybiBhIGZsYWcgaW5kaWNhdGluZyBpZiB0aGUgaW5wdXQgZmlsZSBoYWQgc29tZSBnb29kIGJyZWFrcG9pbnRzLgogICAgICAgICMgVGhpcyBmbGFnIHdpbGwgYmUgdXNlZCB0byBmb3JjZSBhIGJyZWFrIGluIGEgbGluZSBzaG9ydGVyIHRoYW4gdGhlCiAgICAgICAgIyBhbGxvd2VkIGxpbmUgbGVuZ3RoLgogICAgICAgIGlmICggJGhhc19vbGRfbG9naWNhbF9icmVha3BvaW50c1skY3VycmVudF9kZXB0aF0gKSB7CiAgICAgICAgICAgICRzYXdfZ29vZF9icmVha3BvaW50ID0gMTsKICAgICAgICB9CgogICAgICAgICMgQSBjb21wbGV4IGxpbmUgd2l0aCBvbmUgYnJlYWsgYXQgYW4gPSBoYXMgYSBnb29kIGJyZWFrcG9pbnQuCiAgICAgICAgIyBUaGlzIGlzIG5vdCBjb21wbGV4ICgkdG90YWxfZGVwdGhfdmFyaWF0aW9uPTApOgogICAgICAgICMgJHJlczEKICAgICAgICAjICAgPSAxMDsKICAgICAgICAjCiAgICAgICAgIyBUaGlzIGlzIGNvbXBsZXggKCR0b3RhbF9kZXB0aF92YXJpYXRpb249Nik6CiAgICAgICAgIyAkcmVzMiA9CiAgICAgICAgIyAgKGlzX2JvdW5kcCgiYSIsICdzZWxmLWluc2VydCcpICYmIGlzX2JvdW5kcCgiYiIsICdzZWxmLWluc2VydCcpKTsKICAgICAgICBlbHNpZiAoJGlfb2xkX2Fzc2lnbm1lbnRfYnJlYWsKICAgICAgICAgICAgJiYgJHRvdGFsX2RlcHRoX3ZhcmlhdGlvbiA+IDQKICAgICAgICAgICAgJiYgJG9sZF9icmVha3BvaW50X2NvdW50ID09IDEgKQogICAgICAgIHsKICAgICAgICAgICAgJHNhd19nb29kX2JyZWFrcG9pbnQgPSAxOwogICAgICAgIH0gIyMgZW5kIGVsc2lmICggJGlfb2xkX2Fzc2lnbm1lbnRfYnJlYWsuLi4pCgogICAgICAgIHJldHVybiAkc2F3X2dvb2RfYnJlYWtwb2ludDsKICAgIH0gIyMgZW5kIHN1YiBzY2FuX2xpc3QKfSAgICAjIGVuZCBzY2FuX2xpc3QKCnN1YiBmaW5kX3Rva2VuX3N0YXJ0aW5nX2xpc3QgewoKICAgICMgV2hlbiB0ZXN0aW5nIHRvIHNlZSBpZiBhIGJsb2NrIHdpbGwgZml0IG9uIG9uZSBsaW5lLCBzb21lCiAgICAjIHByZXZpb3VzIHRva2VuKHMpIG1heSBhbHNvIG5lZWQgdG8gYmUgb24gdGhlIGxpbmU7IHBhcnRpY3VsYXJseQogICAgIyBpZiB0aGlzIGlzIGEgc3ViIGNhbGwuICBTbyB3ZSB3aWxsIGxvb2sgYmFjayBhdCBsZWFzdCBvbmUKICAgICMgdG9rZW4uIE5PVEU6IFRoaXMgaXNuJ3QgcGVyZmVjdCwgYnV0IG5vdCBjcml0aWNhbCwgYmVjYXVzZQogICAgIyBpZiB3ZSBtaXMtaWRlbnRpZnkgYSBibG9jaywgaXQgd2lsbCBiZSB3cmFwcGVkIGFuZCB0aGVyZWZvcmUKICAgICMgZml4ZWQgdGhlIG5leHQgdGltZSBpdCBpcyBmb3JtYXR0ZWQuCiAgICBteSAkaV9vcGVuaW5nX3BhcmVuID0gc2hpZnQ7CiAgICBteSAkaV9vcGVuaW5nX21pbnVzID0gJGlfb3BlbmluZ19wYXJlbjsKICAgIG15ICRpbTEgICAgICAgICAgICAgPSAkaV9vcGVuaW5nX3BhcmVuIC0gMTsKICAgIG15ICRpbTIgICAgICAgICAgICAgPSAkaV9vcGVuaW5nX3BhcmVuIC0gMjsKICAgIG15ICRpbTMgICAgICAgICAgICAgPSAkaV9vcGVuaW5nX3BhcmVuIC0gMzsKICAgIG15ICR0eXBlbTEgICAgICAgICAgPSAkdHlwZXNfdG9fZ29bJGltMV07CiAgICBteSAkdHlwZW0yICAgICAgICAgID0gJGltMiA+PSAwID8gJHR5cGVzX3RvX2dvWyRpbTJdIDogJ2InOwoKICAgIGlmICggJHR5cGVtMSBlcSAnLCcgfHwgKCAkdHlwZW0xIGVxICdiJyAmJiAkdHlwZW0yIGVxICcsJyApICkgewogICAgICAgICRpX29wZW5pbmdfbWludXMgPSAkaV9vcGVuaW5nX3BhcmVuOwogICAgfQogICAgZWxzaWYgKCAkdG9rZW5zX3RvX2dvWyRpX29wZW5pbmdfcGFyZW5dIGVxICcoJyApIHsKICAgICAgICAkaV9vcGVuaW5nX21pbnVzID0gJGltMSBpZiAkaW0xID49IDA7CgogICAgICAgICMgd2FsayBiYWNrIHRvIGltcHJvdmUgbGVuZ3RoIGVzdGltYXRlCiAgICAgICAgZm9yICggbXkgJGogPSAkaW0xIDsgJGogPj0gMCA7ICRqLS0gKSB7CiAgICAgICAgICAgIGxhc3QgaWYgKCAkdHlwZXNfdG9fZ29bJGpdID1+IC9eW1woXFtce0xcfVxdXClSYixdJC8gKTsKICAgICAgICAgICAgJGlfb3BlbmluZ19taW51cyA9ICRqOwogICAgICAgIH0KICAgICAgICBpZiAoICR0eXBlc190b19nb1skaV9vcGVuaW5nX21pbnVzXSBlcSAnYicgKSB7ICRpX29wZW5pbmdfbWludXMrKyB9CiAgICB9CiAgICBlbHNpZiAoICR0eXBlbTEgZXEgJ2snICkgeyAkaV9vcGVuaW5nX21pbnVzID0gJGltMSB9CiAgICBlbHNpZiAoICR0eXBlbTEgZXEgJ2InICYmICRpbTIgPj0gMCAmJiAkdHlwZXNfdG9fZ29bJGltMl0gZXEgJ2snICkgewogICAgICAgICRpX29wZW5pbmdfbWludXMgPSAkaW0yOwogICAgfQogICAgcmV0dXJuICRpX29wZW5pbmdfbWludXM7Cn0KCnsgICAgIyBiZWdpbiBzZXRfY29tbWFfYnJlYWtwb2ludHNfZG8KCiAgICBteSAlaXNfa2V5d29yZF93aXRoX3NwZWNpYWxfbGVhZGluZ190ZXJtOwoKICAgIEJFR0lOIHsKCiAgICAgICAgIyBUaGVzZSBrZXl3b3JkcyBoYXZlIHByb3RvdHlwZXMgd2hpY2ggYWxsb3cgYSBzcGVjaWFsIGxlYWRpbmcgaXRlbQogICAgICAgICMgZm9sbG93ZWQgYnkgYSBsaXN0CiAgICAgICAgbXkgQHEgPQogICAgICAgICAgcXcoZm9ybWxpbmUgZ3JlcCBraWxsIG1hcCBwcmludGYgc3ByaW50ZiBwdXNoIGNobW9kIGpvaW4gcGFjayB1bnNoaWZ0KTsKICAgICAgICBAaXNfa2V5d29yZF93aXRoX3NwZWNpYWxfbGVhZGluZ190ZXJte0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CiAgICB9CgogICAgc3ViIHNldF9jb21tYV9icmVha3BvaW50c19kbyB7CgogICAgICAgICMgR2l2ZW4gYSBsaXN0IHdpdGggc29tZSBjb21tYXMsIHNldCBicmVha3BvaW50cyBhdCBzb21lIG9mIHRoZQogICAgICAgICMgY29tbWFzLCBpZiBuZWNlc3NhcnksIHRvIG1ha2UgaXQgZWFzeSB0byByZWFkLiAgVGhpcyBsaXN0IGlzCiAgICAgICAgIyBhbiBleGFtcGxlOgogICAgICAgIG15ICgKICAgICAgICAgICAgJGRlcHRoLCAgICAgICAgICAgICAgICRpX29wZW5pbmdfcGFyZW4sICAkaV9jbG9zaW5nX3BhcmVuLAogICAgICAgICAgICAkaXRlbV9jb3VudCwgICAgICAgICAgJGlkZW50aWZpZXJfY291bnQsICRyY29tbWFfaW5kZXgsCiAgICAgICAgICAgICRuZXh0X25vbmJsYW5rX3R5cGUsICAkbGlzdF90eXBlLCAgICAgICAgJGludGVycnVwdGVkLAogICAgICAgICAgICAkcmRvX25vdF9icmVha19hcGFydCwgJG11c3RfYnJlYWtfb3BlbiwKICAgICAgICApID0gQF87CgogICAgICAgICMgbm90aGluZyB0byBkbyBpZiBubyBjb21tYXMgc2VlbgogICAgICAgIHJldHVybiBpZiAoICRpdGVtX2NvdW50IDwgMSApOwogICAgICAgIG15ICRpX2ZpcnN0X2NvbW1hICAgICA9ICRyY29tbWFfaW5kZXgtPlswXTsKICAgICAgICBteSAkaV90cnVlX2xhc3RfY29tbWEgPSAkcmNvbW1hX2luZGV4LT5bICRpdGVtX2NvdW50IC0gMSBdOwogICAgICAgIG15ICRpX2xhc3RfY29tbWEgICAgICA9ICRpX3RydWVfbGFzdF9jb21tYTsKICAgICAgICBpZiAoICRpX2xhc3RfY29tbWEgPj0gJG1heF9pbmRleF90b19nbyApIHsKICAgICAgICAgICAgJGlfbGFzdF9jb21tYSA9ICRyY29tbWFfaW5kZXgtPlsgLS0kaXRlbV9jb3VudCAtIDEgXTsKICAgICAgICAgICAgcmV0dXJuIGlmICggJGl0ZW1fY291bnQgPCAxICk7CiAgICAgICAgfQoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBmaW5kIGxlbmd0aHMgb2YgYWxsIGl0ZW1zIGluIHRoZSBsaXN0IHRvIGNhbGN1bGF0ZSBwYWdlIGxheW91dAogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBteSAkY29tbWFfY291bnQgPSAkaXRlbV9jb3VudDsKICAgICAgICBteSBAaXRlbV9sZW5ndGhzOwogICAgICAgIG15IEBpX3Rlcm1fYmVnaW47CiAgICAgICAgbXkgQGlfdGVybV9lbmQ7CiAgICAgICAgbXkgQGlfdGVybV9jb21tYTsKICAgICAgICBteSAkaV9wcmV2X3BsdXM7CiAgICAgICAgbXkgQG1heF9sZW5ndGggPSAoIDAsIDAgKTsKICAgICAgICBteSAkZmlyc3RfdGVybV9sZW5ndGg7CiAgICAgICAgbXkgJGkgICAgICA9ICRpX29wZW5pbmdfcGFyZW47CiAgICAgICAgbXkgJGlzX29kZCA9IDE7CgogICAgICAgIGZvcmVhY2ggbXkgJGogKCAwIC4uICRjb21tYV9jb3VudCAtIDEgKSB7CiAgICAgICAgICAgICRpc19vZGQgICAgICA9IDEgLSAkaXNfb2RkOwogICAgICAgICAgICAkaV9wcmV2X3BsdXMgPSAkaSArIDE7CiAgICAgICAgICAgICRpICAgICAgICAgICA9ICRyY29tbWFfaW5kZXgtPlskal07CgogICAgICAgICAgICBteSAkaV90ZXJtX2VuZCA9CiAgICAgICAgICAgICAgKCAkdHlwZXNfdG9fZ29bICRpIC0gMSBdIGVxICdiJyApID8gJGkgLSAyIDogJGkgLSAxOwogICAgICAgICAgICBteSAkaV90ZXJtX2JlZ2luID0KICAgICAgICAgICAgICAoICR0eXBlc190b19nb1skaV9wcmV2X3BsdXNdIGVxICdiJyApCiAgICAgICAgICAgICAgPyAkaV9wcmV2X3BsdXMgKyAxCiAgICAgICAgICAgICAgOiAkaV9wcmV2X3BsdXM7CiAgICAgICAgICAgIHB1c2ggQGlfdGVybV9iZWdpbiwgJGlfdGVybV9iZWdpbjsKICAgICAgICAgICAgcHVzaCBAaV90ZXJtX2VuZCwgICAkaV90ZXJtX2VuZDsKICAgICAgICAgICAgcHVzaCBAaV90ZXJtX2NvbW1hLCAkaTsKCiAgICAgICAgICAgICMgbm90ZTogY3VycmVudGx5IGFkZGluZyAyIHRvIGFsbCBsZW5ndGhzIChmb3IgY29tbWEgYW5kIHNwYWNlKQogICAgICAgICAgICBteSAkbGVuZ3RoID0KICAgICAgICAgICAgICAyICsgdG9rZW5fc2VxdWVuY2VfbGVuZ3RoKCAkaV90ZXJtX2JlZ2luLCAkaV90ZXJtX2VuZCApOwogICAgICAgICAgICBwdXNoIEBpdGVtX2xlbmd0aHMsICRsZW5ndGg7CgogICAgICAgICAgICBpZiAoICRqID09IDAgKSB7CiAgICAgICAgICAgICAgICAkZmlyc3RfdGVybV9sZW5ndGggPSAkbGVuZ3RoOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgIGlmICggJGxlbmd0aCA+ICRtYXhfbGVuZ3RoWyRpc19vZGRdICkgewogICAgICAgICAgICAgICAgICAgICRtYXhfbGVuZ3RoWyRpc19vZGRdID0gJGxlbmd0aDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBub3cgd2UgaGF2ZSB0byBtYWtlIGEgZGlzdGluY3Rpb24gYmV0d2VlbiB0aGUgY29tbWEgY291bnQgYW5kIGl0ZW0KICAgICAgICAjIGNvdW50LCBiZWNhdXNlIHRoZSBpdGVtIGNvdW50IHdpbGwgYmUgb25lIGdyZWF0ZXIgdGhhbiB0aGUgY29tbWEKICAgICAgICAjIGNvdW50IGlmIHRoZSBsYXN0IGl0ZW0gaXMgbm90IHRlcm1pbmF0ZWQgd2l0aCBhIGNvbW1hCiAgICAgICAgbXkgJGlfYiA9CiAgICAgICAgICAoICR0eXBlc190b19nb1sgJGlfbGFzdF9jb21tYSArIDEgXSBlcSAnYicgKQogICAgICAgICAgPyAkaV9sYXN0X2NvbW1hICsgMQogICAgICAgICAgOiAkaV9sYXN0X2NvbW1hOwogICAgICAgIG15ICRpX2UgPQogICAgICAgICAgKCAkdHlwZXNfdG9fZ29bICRpX2Nsb3NpbmdfcGFyZW4gLSAxIF0gZXEgJ2InICkKICAgICAgICAgID8gJGlfY2xvc2luZ19wYXJlbiAtIDIKICAgICAgICAgIDogJGlfY2xvc2luZ19wYXJlbiAtIDE7CiAgICAgICAgbXkgJGlfZWZmZWN0aXZlX2xhc3RfY29tbWEgPSAkaV9sYXN0X2NvbW1hOwoKICAgICAgICBteSAkbGFzdF9pdGVtX2xlbmd0aCA9IHRva2VuX3NlcXVlbmNlX2xlbmd0aCggJGlfYiArIDEsICRpX2UgKTsKCiAgICAgICAgaWYgKCAkbGFzdF9pdGVtX2xlbmd0aCA+IDAgKSB7CgogICAgICAgICAgICAjIGFkZCAyIHRvIGxlbmd0aCBiZWNhdXNlIG90aGVyIGxlbmd0aHMgaW5jbHVkZSBhIGNvbW1hIGFuZCBhIGJsYW5rCiAgICAgICAgICAgICRsYXN0X2l0ZW1fbGVuZ3RoICs9IDI7CiAgICAgICAgICAgIHB1c2ggQGl0ZW1fbGVuZ3RocywgJGxhc3RfaXRlbV9sZW5ndGg7CiAgICAgICAgICAgIHB1c2ggQGlfdGVybV9iZWdpbiwgJGlfYiArIDE7CiAgICAgICAgICAgIHB1c2ggQGlfdGVybV9lbmQsICAgJGlfZTsKICAgICAgICAgICAgcHVzaCBAaV90ZXJtX2NvbW1hLCB1bmRlZjsKCiAgICAgICAgICAgIG15ICRpX29kZCA9ICRpdGVtX2NvdW50ICUgMjsKCiAgICAgICAgICAgIGlmICggJGxhc3RfaXRlbV9sZW5ndGggPiAkbWF4X2xlbmd0aFskaV9vZGRdICkgewogICAgICAgICAgICAgICAgJG1heF9sZW5ndGhbJGlfb2RkXSA9ICRsYXN0X2l0ZW1fbGVuZ3RoOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkaXRlbV9jb3VudCsrOwogICAgICAgICAgICAkaV9lZmZlY3RpdmVfbGFzdF9jb21tYSA9ICRpX2UgKyAxOwoKICAgICAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bICRpX2IgKyAxIF0gPX4gL15baVJcXV0kLyApIHsKICAgICAgICAgICAgICAgICRpZGVudGlmaWVyX2NvdW50Kys7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIEVuZCBvZiBsZW5ndGggY2FsY3VsYXRpb25zCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBDb21wb3VuZCBMaXN0IFJ1bGUgMToKICAgICAgICAjIEJyZWFrIGF0IChhbG1vc3QpIGV2ZXJ5IGNvbW1hIGZvciBhIGxpc3QgY29udGFpbmluZyBhIGJyb2tlbgogICAgICAgICMgc3VibGlzdC4gIFRoaXMgaGFzIGhpZ2hlciBwcmlvcml0eSB0aGFuIHRoZSBJbnRlcnJ1cHRlZCBMaXN0CiAgICAgICAgIyBSdWxlLgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBpZiAoICRoYXNfYnJva2VuX3N1Ymxpc3RbJGRlcHRoXSApIHsKCiAgICAgICAgICAgICMgQnJlYWsgYXQgZXZlcnkgY29tbWEgZXhjZXB0IGZvciBhIGNvbW1hIGJldHdlZW4gdHdvCiAgICAgICAgICAgICMgc2ltcGxlLCBzbWFsbCB0ZXJtcy4gIFRoaXMgcHJldmVudHMgbG9uZyB2ZXJ0aWNhbAogICAgICAgICAgICAjIGNvbHVtbnMgb2YsIHNheSwganVzdCAwJ3MuCiAgICAgICAgICAgIG15ICRzbWFsbF9sZW5ndGggPSAxMDsgICAgIyAyICsgYWN0dWFsIG1heGltdW0gbGVuZ3RoIHdhbnRlZAoKICAgICAgICAgICAgIyBXZSdsbCBpbnNlcnQgYSBicmVhayBpbiBsb25nIHJ1bnMgb2Ygc21hbGwgdGVybXMgdG8KICAgICAgICAgICAgIyBhbGxvdyBhbGlnbm1lbnQgaW4gdW5pZm9ybSB0YWJsZXMuCiAgICAgICAgICAgIG15ICRza2lwcGVkX2NvdW50ID0gMDsKICAgICAgICAgICAgbXkgJGNvbHVtbnMgICAgICAgPSB0YWJsZV9jb2x1bW5zX2F2YWlsYWJsZSgkaV9maXJzdF9jb21tYSk7CiAgICAgICAgICAgIG15ICRmaWVsZHMgICAgICAgID0gaW50KCAkY29sdW1ucyAvICRzbWFsbF9sZW5ndGggKTsKICAgICAgICAgICAgaWYgKCAgICRyT3B0c19tYXhpbXVtX2ZpZWxkc19wZXJfdGFibGUKICAgICAgICAgICAgICAgICYmICRmaWVsZHMgPiAkck9wdHNfbWF4aW11bV9maWVsZHNfcGVyX3RhYmxlICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJGZpZWxkcyA9ICRyT3B0c19tYXhpbXVtX2ZpZWxkc19wZXJfdGFibGU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbXkgJG1heF9za2lwcGVkX2NvdW50ID0gJGZpZWxkcyAtIDE7CgogICAgICAgICAgICBteSAkaXNfc2ltcGxlX2xhc3RfdGVybSA9IDA7CiAgICAgICAgICAgIG15ICRpc19zaW1wbGVfbmV4dF90ZXJtID0gMDsKICAgICAgICAgICAgZm9yZWFjaCBteSAkaiAoIDAgLi4gJGl0ZW1fY291bnQgKSB7CiAgICAgICAgICAgICAgICAkaXNfc2ltcGxlX2xhc3RfdGVybSA9ICRpc19zaW1wbGVfbmV4dF90ZXJtOwogICAgICAgICAgICAgICAgJGlzX3NpbXBsZV9uZXh0X3Rlcm0gPSAwOwogICAgICAgICAgICAgICAgaWYgKCAgICRqIDwgJGl0ZW1fY291bnQKICAgICAgICAgICAgICAgICAgICAmJiAkaV90ZXJtX2VuZFskal0gPT0gJGlfdGVybV9iZWdpblskal0KICAgICAgICAgICAgICAgICAgICAmJiAkaXRlbV9sZW5ndGhzWyRqXSA8PSAkc21hbGxfbGVuZ3RoICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkaXNfc2ltcGxlX25leHRfdGVybSA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuZXh0IGlmICRqID09IDA7CiAgICAgICAgICAgICAgICBpZiAoICAgJGlzX3NpbXBsZV9sYXN0X3Rlcm0KICAgICAgICAgICAgICAgICAgICAmJiAkaXNfc2ltcGxlX25leHRfdGVybQogICAgICAgICAgICAgICAgICAgICYmICRza2lwcGVkX2NvdW50IDwgJG1heF9za2lwcGVkX2NvdW50ICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkc2tpcHBlZF9jb3VudCsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHNraXBwZWRfY291bnQgPSAwOwogICAgICAgICAgICAgICAgICAgIG15ICRpID0gJGlfdGVybV9jb21tYVsgJGogLSAxIF07CiAgICAgICAgICAgICAgICAgICAgbGFzdCB1bmxlc3MgZGVmaW5lZCAkaTsKICAgICAgICAgICAgICAgICAgICBzZXRfZm9yY2VkX2JyZWFrcG9pbnQoJGkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFsd2F5cyBicmVhayBhdCB0aGUgbGFzdCBjb21tYSBpZiB0aGlzIGxpc3QgaXMKICAgICAgICAgICAgIyBpbnRlcnJ1cHRlZDsgd2Ugd291bGRuJ3Qgd2FudCB0byBsZWF2ZSBhIHRlcm1pbmFsICd7JywgZm9yCiAgICAgICAgICAgICMgZXhhbXBsZS4KICAgICAgICAgICAgaWYgKCRpbnRlcnJ1cHRlZCkgeyBzZXRfZm9yY2VkX2JyZWFrcG9pbnQoJGlfdHJ1ZV9sYXN0X2NvbW1hKSB9CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgojbXkgKCAkYSwgJGIsICRjICkgPSBjYWxsZXIoKTsKI3ByaW50ICJMSVNUWDogaW4gc2V0X2xpc3QgJGEgJGMgaW50ZXJydXB0PSRpbnRlcnJ1cHRlZCBjb3VudD0kaXRlbV9jb3VudAojaV9maXJzdCA9ICRpX2ZpcnN0X2NvbW1hICBpX2xhc3Q9JGlfbGFzdF9jb21tYSBtYXg9JG1heF9pbmRleF90b19nb1xuIjsKI3ByaW50ICJkZXB0aD0kZGVwdGggaGFzX2Jyb2tlbj0kaGFzX2Jyb2tlbl9zdWJsaXN0WyRkZXB0aF0gaXNfbXVsdGk9JGlzX211bHRpbGluZSBvcGVuaW5nX3BhcmVuPSgkaV9vcGVuaW5nX3BhcmVuKSBcbiI7CgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIEludGVycnVwdGVkIExpc3QgUnVsZToKICAgICAgICAjIEEgbGlzdCBpcyBmb3JjZWQgdG8gdXNlIG9sZCBicmVha3BvaW50cyBpZiBpdCB3YXMgaW50ZXJydXB0ZWQKICAgICAgICAjIGJ5IHNpZGUgY29tbWVudHMgb3IgYmxhbmsgbGluZXMsIG9yIHJlcXVlc3RlZCBieSB1c2VyLgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBpZiAoICAgJHJPcHRzX2JyZWFrX2F0X29sZF9jb21tYV9icmVha3BvaW50cwogICAgICAgICAgICB8fCAkaW50ZXJydXB0ZWQKICAgICAgICAgICAgfHwgJGlfb3BlbmluZ19wYXJlbiA8IDAgKQogICAgICAgIHsKICAgICAgICAgICAgY29weV9vbGRfYnJlYWtwb2ludHMoICRpX2ZpcnN0X2NvbW1hLCAkaV90cnVlX2xhc3RfY29tbWEgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgTG9va3MgbGlrZSBhIGxpc3Qgb2YgaXRlbXMuICBXZSBoYXZlIHRvIGxvb2sgYXQgaXQgYW5kIHNpemUgaXQgdXAuCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgICBteSAkb3BlbmluZ190b2tlbiA9ICR0b2tlbnNfdG9fZ29bJGlfb3BlbmluZ19wYXJlbl07CiAgICAgICAgbXkgJG9wZW5pbmdfZW52aXJvbm1lbnQgPQogICAgICAgICAgJGNvbnRhaW5lcl9lbnZpcm9ubWVudF90b19nb1skaV9vcGVuaW5nX3BhcmVuXTsKCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIFJldHVybiBpZiB0aGlzIHdpbGwgZml0IG9uIG9uZSBsaW5lCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgICAgbXkgJGlfb3BlbmluZ19taW51cyA9IGZpbmRfdG9rZW5fc3RhcnRpbmdfbGlzdCgkaV9vcGVuaW5nX3BhcmVuKTsKICAgICAgICByZXR1cm4KICAgICAgICAgIHVubGVzcyBleGNlc3NfbGluZV9sZW5ndGgoICRpX29wZW5pbmdfbWludXMsICRpX2Nsb3NpbmdfcGFyZW4gKSA+IDA7CgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBOb3cgd2Uga25vdyB0aGF0IHRoaXMgYmxvY2sgc3BhbnMgbXVsdGlwbGUgbGluZXM7IHdlIGhhdmUgdG8gc2V0CiAgICAgICAgIyBhdCBsZWFzdCBvbmUgYnJlYWtwb2ludCAtLSByZWFsIG9yIGZha2UgLS0gYXMgYSBzaWduYWwgdG8gYnJlYWsKICAgICAgICAjIG9wZW4gYW55IG91dGVyIGNvbnRhaW5lcnMuCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBzZXRfZmFrZV9icmVha3BvaW50KCk7CgogICAgICAgICMgYmUgc3VyZSB3ZSBkbyBub3QgZXh0ZW5kIGJleW9uZCB0aGUgY3VycmVudCBsaXN0IGxlbmd0aAogICAgICAgIGlmICggJGlfZWZmZWN0aXZlX2xhc3RfY29tbWEgPj0gJG1heF9pbmRleF90b19nbyApIHsKICAgICAgICAgICAgJGlfZWZmZWN0aXZlX2xhc3RfY29tbWEgPSAkbWF4X2luZGV4X3RvX2dvIC0gMTsKICAgICAgICB9CgogICAgICAgICMgU2V0IGEgZmxhZyBpbmRpY2F0aW5nIGlmIHdlIG5lZWQgdG8gYnJlYWsgb3BlbiB0byBrZWVwIC1scAogICAgICAgICMgaXRlbXMgYWxpZ25lZC4gIFRoaXMgaXMgbmVjZXNzYXJ5IGlmIGFueSBvZiB0aGUgbGlzdCB0ZXJtcwogICAgICAgICMgZXhjZWVkcyB0aGUgYXZhaWxhYmxlIHNwYWNlIGFmdGVyIHRoZSAnKCcuCiAgICAgICAgbXkgJG5lZWRfbHBfYnJlYWtfb3BlbiA9ICRtdXN0X2JyZWFrX29wZW47CiAgICAgICAgaWYgKCAkck9wdHNfbGluZV91cF9wYXJlbnRoZXNlcyAmJiAhJG11c3RfYnJlYWtfb3BlbiApIHsKICAgICAgICAgICAgbXkgJGNvbHVtbnNfaWZfdW5icm9rZW4gPQogICAgICAgICAgICAgIG1heGltdW1fbGluZV9sZW5ndGgoJGlfb3BlbmluZ19taW51cykgLQogICAgICAgICAgICAgIHRvdGFsX2xpbmVfbGVuZ3RoKCAkaV9vcGVuaW5nX21pbnVzLCAkaV9vcGVuaW5nX3BhcmVuICk7CiAgICAgICAgICAgICRuZWVkX2xwX2JyZWFrX29wZW4gPQogICAgICAgICAgICAgICAgICggJG1heF9sZW5ndGhbMF0gPiAkY29sdW1uc19pZl91bmJyb2tlbiApCiAgICAgICAgICAgICAgfHwgKCAkbWF4X2xlbmd0aFsxXSA+ICRjb2x1bW5zX2lmX3VuYnJva2VuICkKICAgICAgICAgICAgICB8fCAoICRmaXJzdF90ZXJtX2xlbmd0aCA+ICRjb2x1bW5zX2lmX3VuYnJva2VuICk7CiAgICAgICAgfQoKICAgICAgICAjIFNwZWNpZnkgaWYgdGhlIGxpc3QgbXVzdCBoYXZlIGFuIGV2ZW4gbnVtYmVyIG9mIGZpZWxkcyBvciBub3QuCiAgICAgICAgIyBJdCBpcyBnZW5lcmFsbHkgc2FmZXN0IHRvIGFzc3VtZSBhbiBldmVuIG51bWJlciwgYmVjYXVzZSB0aGUKICAgICAgICAjIGxpc3QgaXRlbXMgbWlnaHQgYmUgYSBoYXNoIGxpc3QuICBCdXQgaWYgd2UgY2FuIGJlIHN1cmUgdGhhdAogICAgICAgICMgaXQgaXMgbm90IGEgaGFzaCwgdGhlbiB3ZSBjYW4gYWxsb3cgYW4gb2RkIG51bWJlciBmb3IgbW9yZQogICAgICAgICMgZmxleGliaWxpdHkuCiAgICAgICAgbXkgJG9kZF9vcl9ldmVuID0gMjsgICAgIyAxID0gb2RkIGZpZWxkIGNvdW50IG9rLCAyID0gd2FudCBldmVuIGNvdW50CgogICAgICAgIGlmICggICAkaWRlbnRpZmllcl9jb3VudCA+PSAkaXRlbV9jb3VudCAtIDEKICAgICAgICAgICAgfHwgJGlzX2Fzc2lnbm1lbnR7JG5leHRfbm9uYmxhbmtfdHlwZX0KICAgICAgICAgICAgfHwgKCAkbGlzdF90eXBlICYmICRsaXN0X3R5cGUgbmUgJz0+JyAmJiAkbGlzdF90eXBlICF+IC9eW1w6XD9dJC8gKQogICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJG9kZF9vcl9ldmVuID0gMTsKICAgICAgICB9CgogICAgICAgICMgZG8gd2UgaGF2ZSBhIGxvbmcgZmlyc3QgdGVybSB3aGljaCBzaG91bGQgYmUKICAgICAgICAjIGxlZnQgb24gYSBsaW5lIGJ5IGl0c2VsZj8KICAgICAgICBteSAkdXNlX3NlcGFyYXRlX2ZpcnN0X3Rlcm0gPSAoCiAgICAgICAgICAgICRvZGRfb3JfZXZlbiA9PSAxICAgICAgICMgb25seSBpZiB3ZSBjYW4gdXNlIDEgZmllbGQvbGluZQogICAgICAgICAgICAgICYmICRpdGVtX2NvdW50ID4gMyAgICAjIG5lZWQgc2V2ZXJhbCBpdGVtcwogICAgICAgICAgICAgICYmICRmaXJzdF90ZXJtX2xlbmd0aCA+CiAgICAgICAgICAgICAgMiAqICRtYXhfbGVuZ3RoWzBdIC0gMiAgICAjIG5lZWQgbG9uZyBmaXJzdCB0ZXJtCiAgICAgICAgICAgICAgJiYgJGZpcnN0X3Rlcm1fbGVuZ3RoID4KICAgICAgICAgICAgICAyICogJG1heF9sZW5ndGhbMV0gLSAyICAgICMgbmVlZCBsb25nIGZpcnN0IHRlcm0KICAgICAgICApOwoKICAgICAgICAjIG9yIGRvIHdlIGtub3cgZnJvbSB0aGUgdHlwZSBvZiBsaXN0IHRoYXQgdGhlIGZpcnN0IHRlcm0gc2hvdWxkCiAgICAgICAgIyBiZSBwbGFjZWQgYWxvbmU/CiAgICAgICAgaWYgKCAhJHVzZV9zZXBhcmF0ZV9maXJzdF90ZXJtICkgewogICAgICAgICAgICBpZiAoICRpc19rZXl3b3JkX3dpdGhfc3BlY2lhbF9sZWFkaW5nX3Rlcm17JGxpc3RfdHlwZX0gKSB7CiAgICAgICAgICAgICAgICAkdXNlX3NlcGFyYXRlX2ZpcnN0X3Rlcm0gPSAxOwoKICAgICAgICAgICAgICAgICMgc2hvdWxkIHRoZSBjb250YWluZXIgYmUgYnJva2VuIG9wZW4/CiAgICAgICAgICAgICAgICBpZiAoICRpdGVtX2NvdW50IDwgMyApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRpX2ZpcnN0X2NvbW1hIC0gJGlfb3BlbmluZ19wYXJlbiA8IDQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR7JHJkb19ub3RfYnJlYWtfYXBhcnR9ID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoJGZpcnN0X3Rlcm1fbGVuZ3RoIDwgMjAKICAgICAgICAgICAgICAgICAgICAmJiAkaV9maXJzdF9jb21tYSAtICRpX29wZW5pbmdfcGFyZW4gPCA0ICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBteSAkY29sdW1ucyA9IHRhYmxlX2NvbHVtbnNfYXZhaWxhYmxlKCRpX2ZpcnN0X2NvbW1hKTsKICAgICAgICAgICAgICAgICAgICBpZiAoICRmaXJzdF90ZXJtX2xlbmd0aCA8ICRjb2x1bW5zICkgewogICAgICAgICAgICAgICAgICAgICAgICAkeyRyZG9fbm90X2JyZWFrX2FwYXJ0fSA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGlmIHNvLAogICAgICAgIGlmICgkdXNlX3NlcGFyYXRlX2ZpcnN0X3Rlcm0pIHsKCiAgICAgICAgICAgICMgLi5zZXQgYSBicmVhayBhbmQgdXBkYXRlIHN0YXJ0aW5nIHZhbHVlcwogICAgICAgICAgICAkdXNlX3NlcGFyYXRlX2ZpcnN0X3Rlcm0gPSAxOwogICAgICAgICAgICBzZXRfZm9yY2VkX2JyZWFrcG9pbnQoJGlfZmlyc3RfY29tbWEpOwogICAgICAgICAgICAkaV9vcGVuaW5nX3BhcmVuID0gJGlfZmlyc3RfY29tbWE7CiAgICAgICAgICAgICRpX2ZpcnN0X2NvbW1hICAgPSAkcmNvbW1hX2luZGV4LT5bMV07CiAgICAgICAgICAgICRpdGVtX2NvdW50LS07CiAgICAgICAgICAgIHJldHVybiBpZiAkY29tbWFfY291bnQgPT0gMTsKICAgICAgICAgICAgc2hpZnQgQGl0ZW1fbGVuZ3RoczsKICAgICAgICAgICAgc2hpZnQgQGlfdGVybV9iZWdpbjsKICAgICAgICAgICAgc2hpZnQgQGlfdGVybV9lbmQ7CiAgICAgICAgICAgIHNoaWZ0IEBpX3Rlcm1fY29tbWE7CiAgICAgICAgfQoKICAgICAgICAjIGlmIG5vdCwgdXBkYXRlIHRoZSBtZXRyaWNzIHRvIGluY2x1ZGUgdGhlIGZpcnN0IHRlcm0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgaWYgKCAkZmlyc3RfdGVybV9sZW5ndGggPiAkbWF4X2xlbmd0aFswXSApIHsKICAgICAgICAgICAgICAgICRtYXhfbGVuZ3RoWzBdID0gJGZpcnN0X3Rlcm1fbGVuZ3RoOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIEZpZWxkIHdpZHRoIHBhcmFtZXRlcnMKICAgICAgICBteSAkcGFpcl93aWR0aCA9ICggJG1heF9sZW5ndGhbMF0gKyAkbWF4X2xlbmd0aFsxXSApOwogICAgICAgIG15ICRtYXhfd2lkdGggPQogICAgICAgICAgKCAkbWF4X2xlbmd0aFswXSA+ICRtYXhfbGVuZ3RoWzFdICkgPyAkbWF4X2xlbmd0aFswXSA6ICRtYXhfbGVuZ3RoWzFdOwoKICAgICAgICAjIE51bWJlciBvZiBmcmVlIGNvbHVtbnMgYWNyb3NzIHRoZSBwYWdlIHdpZHRoIGZvciBsYXlpbmcgb3V0IHRhYmxlcwogICAgICAgIG15ICRjb2x1bW5zID0gdGFibGVfY29sdW1uc19hdmFpbGFibGUoJGlfZmlyc3RfY29tbWEpOwoKICAgICAgICAjIEVzdGltYXRlZCBtYXhpbXVtIG51bWJlciBvZiBmaWVsZHMgd2hpY2ggZml0IHRoaXMgc3BhY2UKICAgICAgICAjIFRoaXMgd2lsbCBiZSBvdXIgZmlyc3QgZ3Vlc3MKICAgICAgICBteSAkbnVtYmVyX29mX2ZpZWxkc19tYXggPQogICAgICAgICAgbWF4aW11bV9udW1iZXJfb2ZfZmllbGRzKCAkY29sdW1ucywgJG9kZF9vcl9ldmVuLCAkbWF4X3dpZHRoLAogICAgICAgICAgICAkcGFpcl93aWR0aCApOwogICAgICAgIG15ICRudW1iZXJfb2ZfZmllbGRzID0gJG51bWJlcl9vZl9maWVsZHNfbWF4OwoKICAgICAgICAjIEZpbmQgdGhlIGJlc3QtbG9va2luZyBudW1iZXIgb2YgZmllbGRzCiAgICAgICAgIyBhbmQgbWFrZSB0aGlzIG91ciBzZWNvbmQgZ3Vlc3MgaWYgcG9zc2libGUKICAgICAgICBteSAoICRudW1iZXJfb2ZfZmllbGRzX2Jlc3QsICRyaV9yYWdnZWRfYnJlYWtfbGlzdCwKICAgICAgICAgICAgJG5ld19pZGVudGlmaWVyX2NvdW50ICkKICAgICAgICAgID0gc3R1ZHlfbGlzdF9jb21wbGV4aXR5KCBcQGlfdGVybV9iZWdpbiwgXEBpX3Rlcm1fZW5kLCBcQGl0ZW1fbGVuZ3RocywKICAgICAgICAgICAgJG1heF93aWR0aCApOwoKICAgICAgICBpZiAoICAgJG51bWJlcl9vZl9maWVsZHNfYmVzdCAhPSAwCiAgICAgICAgICAgICYmICRudW1iZXJfb2ZfZmllbGRzX2Jlc3QgPCAkbnVtYmVyX29mX2ZpZWxkc19tYXggKQogICAgICAgIHsKICAgICAgICAgICAgJG51bWJlcl9vZl9maWVsZHMgPSAkbnVtYmVyX29mX2ZpZWxkc19iZXN0OwogICAgICAgIH0KCiAgICAgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBJZiB3ZSBhcmUgY3Jvd2RlZCBhbmQgdGhlIC1scCBvcHRpb24gaXMgYmVpbmcgdXNlZCwgdHJ5IHRvCiAgICAgICAgIyB1bmRvIHNvbWUgaW5kZW50YXRpb24KICAgICAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBpZiAoCiAgICAgICAgICAgICRyT3B0c19saW5lX3VwX3BhcmVudGhlc2VzCiAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICRudW1iZXJfb2ZfZmllbGRzID09IDAKICAgICAgICAgICAgICAgIHx8ICggICAkbnVtYmVyX29mX2ZpZWxkcyA9PSAxCiAgICAgICAgICAgICAgICAgICAgJiYgJG51bWJlcl9vZl9maWVsZHMgIT0gJG51bWJlcl9vZl9maWVsZHNfYmVzdCApCiAgICAgICAgICAgICkKICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRhdmFpbGFibGVfc3BhY2VzID0gZ2V0X2F2YWlsYWJsZV9zcGFjZXNfdG9fZ28oJGlfZmlyc3RfY29tbWEpOwogICAgICAgICAgICBpZiAoICRhdmFpbGFibGVfc3BhY2VzID4gMCApIHsKCiAgICAgICAgICAgICAgICBteSAkc3BhY2VzX3dhbnRlZCA9ICRtYXhfd2lkdGggLSAkY29sdW1uczsgICAgIyBmb3IgMSBmaWVsZAoKICAgICAgICAgICAgICAgIGlmICggJG51bWJlcl9vZl9maWVsZHNfYmVzdCA9PSAwICkgewogICAgICAgICAgICAgICAgICAgICRudW1iZXJfb2ZfZmllbGRzX2Jlc3QgPQogICAgICAgICAgICAgICAgICAgICAgZ2V0X21heGltdW1fZmllbGRzX3dhbnRlZCggXEBpdGVtX2xlbmd0aHMgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICRudW1iZXJfb2ZfZmllbGRzX2Jlc3QgIT0gMSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkc3BhY2VzX3dhbnRlZF8yID0KICAgICAgICAgICAgICAgICAgICAgIDEgKyAkcGFpcl93aWR0aCAtICRjb2x1bW5zOyAgICAgICAgICAgICAjIGZvciAyIGZpZWxkcwogICAgICAgICAgICAgICAgICAgIGlmICggJGF2YWlsYWJsZV9zcGFjZXMgPiAkc3BhY2VzX3dhbnRlZF8yICkgewogICAgICAgICAgICAgICAgICAgICAgICAkc3BhY2VzX3dhbnRlZCA9ICRzcGFjZXNfd2FudGVkXzI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggJHNwYWNlc193YW50ZWQgPiAwICkgewogICAgICAgICAgICAgICAgICAgIG15ICRkZWxldGVkX3NwYWNlcyA9CiAgICAgICAgICAgICAgICAgICAgICByZWR1Y2VfbHBfaW5kZW50YXRpb24oICRpX2ZpcnN0X2NvbW1hLCAkc3BhY2VzX3dhbnRlZCApOwoKICAgICAgICAgICAgICAgICAgICAjIHJlZG8gdGhlIG1hdGgKICAgICAgICAgICAgICAgICAgICBpZiAoICRkZWxldGVkX3NwYWNlcyA+IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb2x1bW5zID0gdGFibGVfY29sdW1uc19hdmFpbGFibGUoJGlfZmlyc3RfY29tbWEpOwogICAgICAgICAgICAgICAgICAgICAgICAkbnVtYmVyX29mX2ZpZWxkc19tYXggPQogICAgICAgICAgICAgICAgICAgICAgICAgIG1heGltdW1fbnVtYmVyX29mX2ZpZWxkcyggJGNvbHVtbnMsICRvZGRfb3JfZXZlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRtYXhfd2lkdGgsICRwYWlyX3dpZHRoICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRudW1iZXJfb2ZfZmllbGRzID0gJG51bWJlcl9vZl9maWVsZHNfbWF4OwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAgICRudW1iZXJfb2ZfZmllbGRzX2Jlc3QgPT0gMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJG51bWJlcl9vZl9maWVsZHMgPj0gMSApCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRudW1iZXJfb2ZfZmllbGRzID0gJG51bWJlcl9vZl9maWVsZHNfYmVzdDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyB0cnkgZm9yIG9uZSBjb2x1bW4gaWYgdHdvIHdvbid0IHdvcmsKICAgICAgICBpZiAoICRudW1iZXJfb2ZfZmllbGRzIDw9IDAgKSB7CiAgICAgICAgICAgICRudW1iZXJfb2ZfZmllbGRzID0gaW50KCAkY29sdW1ucyAvICRtYXhfd2lkdGggKTsKICAgICAgICB9CgogICAgICAgICMgVGhlIHVzZXIgY2FuIHBsYWNlIGFuIHVwcGVyIGJvdW5kIG9uIHRoZSBudW1iZXIgb2YgZmllbGRzLAogICAgICAgICMgd2hpY2ggY2FuIGJlIHVzZWZ1bCBmb3IgZG9pbmcgbWFpbnRlbmFuY2Ugb24gdGFibGVzCiAgICAgICAgaWYgKCAgICRyT3B0c19tYXhpbXVtX2ZpZWxkc19wZXJfdGFibGUKICAgICAgICAgICAgJiYgJG51bWJlcl9vZl9maWVsZHMgPiAkck9wdHNfbWF4aW11bV9maWVsZHNfcGVyX3RhYmxlICkKICAgICAgICB7CiAgICAgICAgICAgICRudW1iZXJfb2ZfZmllbGRzID0gJHJPcHRzX21heGltdW1fZmllbGRzX3Blcl90YWJsZTsKICAgICAgICB9CgogICAgICAgICMgSG93IG1hbnkgY29sdW1ucyAoY2hhcmFjdGVycykgYW5kIGxpbmVzIHdvdWxkIHRoaXMgY29udGFpbmVyIHRha2UKICAgICAgICAjIGlmIG5vIGFkZGl0aW9uYWwgd2hpdGVzcGFjZSB3ZXJlIGFkZGVkPwogICAgICAgIG15ICRwYWNrZWRfY29sdW1ucyA9IHRva2VuX3NlcXVlbmNlX2xlbmd0aCggJGlfb3BlbmluZ19wYXJlbiArIDEsCiAgICAgICAgICAgICRpX2VmZmVjdGl2ZV9sYXN0X2NvbW1hICsgMSApOwogICAgICAgIGlmICggJGNvbHVtbnMgPD0gMCApIHsgJGNvbHVtbnMgPSAxIH0gICAgIyBhdm9pZCBkaXZpZGUgYnkgemVybwogICAgICAgIG15ICRwYWNrZWRfbGluZXMgPSAxICsgaW50KCAkcGFja2VkX2NvbHVtbnMgLyAkY29sdW1ucyApOwoKICAgICAgICAjIGFyZSB3ZSBhbiBpdGVtIGNvbnRhaW5lZCBpbiBhbiBvdXRlciBsaXN0PwogICAgICAgIG15ICRpbl9oaWVyYXJjaGljYWxfbGlzdCA9ICRuZXh0X25vbmJsYW5rX3R5cGUgPX4gL15bXH1cLF0kLzsKCiAgICAgICAgaWYgKCAkbnVtYmVyX29mX2ZpZWxkcyA8PSAwICkgewoKIyAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAgICAgICAgICMgV2UncmUgaW4gdHJvdWJsZS4gIFdlIGNhbid0IGZpbmQgYSBzaW5nbGUgZmllbGQgd2lkdGggdGhhdCB3b3Jrcy4KIyAgICAgICAgICMgVGhlcmUgaXMgbm8gc2ltcGxlIGFuc3dlciBoZXJlOyB3ZSBtYXkgaGF2ZSBhIHNpbmdsZSBsb25nIGxpc3QKIyAgICAgICAgICMgaXRlbSwgb3IgbWFueS4KIyAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojICAgICAgICAgSW4gbWFueSBjYXNlcywgaXQgbWF5IGJlIGJlc3QgdG8gbm90IGZvcmNlIGEgYnJlYWsgaWYgdGhlcmUgaXMganVzdCBvbmUKIyAgICAgICAgIGNvbW1hLCBiZWNhdXNlIHRoZSBzdGFuZGFyZCBjb250aW51YXRpb24gYnJlYWsgbG9naWMgd2lsbCBkbyBhIGJldHRlcgojICAgICAgICAgam9iIHdpdGhvdXQgaXQuCiMKIyAgICAgICAgIEluIHRoZSBjb21tb24gY2FzZSB0aGF0IGFsbCBidXQgb25lIG9mIHRoZSB0ZXJtcyBjYW4gZml0CiMgICAgICAgICBvbiBhIHNpbmdsZSBsaW5lLCBpdCBtYXkgbG9vayBiZXR0ZXIgbm90IHRvIGJyZWFrIG9wZW4gdGhlCiMgICAgICAgICBjb250YWluaW5nIHBhcmVucy4gIENvbnNpZGVyLCBmb3IgZXhhbXBsZQojCiMgICAgICAgICAgICAgJGNvbG9yID0KIyAgICAgICAgICAgICAgIGpvaW4gKCAnLycsCiMgICAgICAgICAgICAgICAgIHNvcnQgeyAkY29sb3JfdmFsdWV7JDo6YX0gPD0+ICRjb2xvcl92YWx1ZXskOjpifTsgfQojICAgICAgICAgICAgICAgICBrZXlzICVjb2xvcnMgKTsKIwojICAgICAgICAgd2hpY2ggd2lsbCBsb29rIGxpa2UgdGhpcyB3aXRoIHRoZSBjb250YWluZXIgYnJva2VuOgojCiMgICAgICAgICAgICAgJGNvbG9yID0gam9pbiAoCiMgICAgICAgICAgICAgICAgICcvJywKIyAgICAgICAgICAgICAgICAgc29ydCB7ICRjb2xvcl92YWx1ZXskOjphfSA8PT4gJGNvbG9yX3ZhbHVleyQ6OmJ9OyB9IGtleXMgJWNvbG9ycwojICAgICAgICAgICAgICk7CiMKIyAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBvZiB0aGlzIHJ1bGUgZm9yIGEgbG9uZyBsYXN0IHRlcm06CiMKIyAgICAgICAgICAgICBsb2dfbWVzc2FnZSggMCwgMjU2LCAxMjgsCiMgICAgICAgICAgICAgICAgICJOdW1iZXIgb2Ygcm91dGVzIGluIGFkai1SSUItaW4gdG8gYmUgY29uc2lkZXJlZDogJHBlZXJjb3VudCIgKTsKIwojICAgICAgICAgQW5kIGhlcmUgaXMgYW4gZXhhbXBsZSB3aXRoIGEgbG9uZyBmaXJzdCB0ZXJtOgojCiMgICAgICAgICAkcyA9IHNwcmludGYoCiMgIiUyZCB3YWxsY2xvY2sgc2VjcyAoJSRmIHVzciAlJGYgc3lzICsgJSRmIGN1c3IgJSRmIGNzeXMgPSAlJGYgQ1BVKSIsCiMgICAgICAgICAgICAgJHIsICRwdSwgJHBzLCAkY3UsICRjcywgJHR0CiMgICAgICAgICAgICkKIyAgICAgICAgICAgaWYgJHN0eWxlIGVxICdhbGwnOwoKICAgICAgICAgICAgbXkgJGlfbGFzdF9jb21tYSAgID0gJHJjb21tYV9pbmRleC0+WyAkY29tbWFfY291bnQgLSAxIF07CiAgICAgICAgICAgIG15ICRsb25nX2xhc3RfdGVybSA9IGV4Y2Vzc19saW5lX2xlbmd0aCggMCwgJGlfbGFzdF9jb21tYSApIDw9IDA7CiAgICAgICAgICAgIG15ICRsb25nX2ZpcnN0X3Rlcm0gPQogICAgICAgICAgICAgIGV4Y2Vzc19saW5lX2xlbmd0aCggJGlfZmlyc3RfY29tbWEgKyAxLCAkbWF4X2luZGV4X3RvX2dvICkgPD0gMDsKCiAgICAgICAgICAgICMgYnJlYWsgYXQgZXZlcnkgY29tbWEgLi4uCiAgICAgICAgICAgIGlmICgKCiAgICAgICAgICAgICAgICAjIGlmIHJlcXVlc3RlZCBieSB1c2VyIG9yIGlzIGJlc3QgbG9va2luZwogICAgICAgICAgICAgICAgJG51bWJlcl9vZl9maWVsZHNfYmVzdCA9PSAxCgogICAgICAgICAgICAgICAgIyBvciBpZiB0aGlzIGlzIGEgc3VibGlzdCBvZiBhIGxhcmdlciBsaXN0CiAgICAgICAgICAgICAgICB8fCAkaW5faGllcmFyY2hpY2FsX2xpc3QKCiAgICAgICAgICAgICAgICAjIG9yIGlmIG11bHRpcGxlIGNvbW1hcyBhbmQgd2UgZG9uJ3QgaGF2ZSBhIGxvbmcgZmlyc3Qgb3IgbGFzdAogICAgICAgICAgICAgICAgIyB0ZXJtCiAgICAgICAgICAgICAgICB8fCAoICRjb21tYV9jb3VudCA+IDEKICAgICAgICAgICAgICAgICAgICAmJiAhKCAkbG9uZ19sYXN0X3Rlcm0gfHwgJGxvbmdfZmlyc3RfdGVybSApICkKICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCAwIC4uICRjb21tYV9jb3VudCAtIDEgKSB7CiAgICAgICAgICAgICAgICAgICAgc2V0X2ZvcmNlZF9icmVha3BvaW50KCAkcmNvbW1hX2luZGV4LT5bJF9dICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCRsb25nX2xhc3RfdGVybSkgewoKICAgICAgICAgICAgICAgIHNldF9mb3JjZWRfYnJlYWtwb2ludCgkaV9sYXN0X2NvbW1hKTsKICAgICAgICAgICAgICAgICR7JHJkb19ub3RfYnJlYWtfYXBhcnR9ID0gMSB1bmxlc3MgJG11c3RfYnJlYWtfb3BlbjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoJGxvbmdfZmlyc3RfdGVybSkgewoKICAgICAgICAgICAgICAgIHNldF9mb3JjZWRfYnJlYWtwb2ludCgkaV9maXJzdF9jb21tYSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBsZXQgYnJlYWtzIGJlIGRlZmluZWQgYnkgZGVmYXVsdCBib25kIHN0cmVuZ3RoIGxvZ2ljCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgV2UgaGF2ZSBhIHRlbnRhdGl2ZSBmaWVsZCBjb3VudCB0aGF0IHNlZW1zIHRvIHdvcmsuCiAgICAgICAgIyBIb3cgbWFueSBsaW5lcyB3aWxsIHRoaXMgcmVxdWlyZT8KICAgICAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgbXkgJGZvcm1hdHRlZF9saW5lcyA9ICRpdGVtX2NvdW50IC8gKCRudW1iZXJfb2ZfZmllbGRzKTsKICAgICAgICBpZiAoICRmb3JtYXR0ZWRfbGluZXMgIT0gaW50ICRmb3JtYXR0ZWRfbGluZXMgKSB7CiAgICAgICAgICAgICRmb3JtYXR0ZWRfbGluZXMgPSAxICsgaW50ICRmb3JtYXR0ZWRfbGluZXM7CiAgICAgICAgfQoKICAgICAgICAjIFNvIGZhciB3ZSd2ZSBiZWVuIHRyeWluZyB0byBmaWxsIG91dCB0byB0aGUgcmlnaHQgbWFyZ2luLiAgQnV0CiAgICAgICAgIyBjb21wYWN0IHRhYmxlcyBhcmUgZWFzaWVyIHRvIHJlYWQsIHNvIGxldCdzIHNlZSBpZiB3ZSBjYW4gdXNlIGZld2VyCiAgICAgICAgIyBmaWVsZHMgd2l0aG91dCBpbmNyZWFzaW5nIHRoZSBudW1iZXIgb2YgbGluZXMuCiAgICAgICAgJG51bWJlcl9vZl9maWVsZHMgPQogICAgICAgICAgY29tcGFjdGlmeV90YWJsZSggJGl0ZW1fY291bnQsICRudW1iZXJfb2ZfZmllbGRzLCAkZm9ybWF0dGVkX2xpbmVzLAogICAgICAgICAgICAkb2RkX29yX2V2ZW4gKTsKCiAgICAgICAgIyBIb3cgbWFueSBzcGFjZXMgYWNyb3NzIHRoZSBwYWdlIHdpbGwgd2UgZmlsbD8KICAgICAgICBteSAkY29sdW1uc19wZXJfbGluZSA9CiAgICAgICAgICAoIGludCAkbnVtYmVyX29mX2ZpZWxkcyAvIDIgKSAqICRwYWlyX3dpZHRoICsKICAgICAgICAgICggJG51bWJlcl9vZl9maWVsZHMgJSAyICkgKiAkbWF4X3dpZHRoOwoKICAgICAgICBteSAkZm9ybWF0dGVkX2NvbHVtbnM7CgogICAgICAgIGlmICggJG51bWJlcl9vZl9maWVsZHMgPiAxICkgewogICAgICAgICAgICAkZm9ybWF0dGVkX2NvbHVtbnMgPQogICAgICAgICAgICAgICggJHBhaXJfd2lkdGggKiAoIGludCggJGl0ZW1fY291bnQgLyAyICkgKSArCiAgICAgICAgICAgICAgICAgICggJGl0ZW1fY291bnQgJSAyICkgKiAkbWF4X3dpZHRoICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkZm9ybWF0dGVkX2NvbHVtbnMgPSAkbWF4X3dpZHRoICogJGl0ZW1fY291bnQ7CiAgICAgICAgfQogICAgICAgIGlmICggJGZvcm1hdHRlZF9jb2x1bW5zIDwgJHBhY2tlZF9jb2x1bW5zICkgewogICAgICAgICAgICAkZm9ybWF0dGVkX2NvbHVtbnMgPSAkcGFja2VkX2NvbHVtbnM7CiAgICAgICAgfQoKICAgICAgICBteSAkdW51c2VkX2NvbHVtbnMgPSAkZm9ybWF0dGVkX2NvbHVtbnMgLSAkcGFja2VkX2NvbHVtbnM7CgogICAgICAgICMgc2V0IHNvbWUgZW1waXJpY2FsIHBhcmFtZXRlcnMgdG8gaGVscCBkZWNpZGUgaWYgd2Ugc2hvdWxkIHRyeSB0bwogICAgICAgICMgYWxpZ247IGhpZ2ggc3BhcnNpdHkgZG9lcyBub3QgbG9vayBnb29kLCBlc3BlY2lhbGx5IHdpdGggZmV3IGxpbmVzCiAgICAgICAgbXkgJHNwYXJzaXR5ID0gKCR1bnVzZWRfY29sdW1ucykgLyAoJGZvcm1hdHRlZF9jb2x1bW5zKTsKICAgICAgICBteSAkbWF4X2FsbG93ZWRfc3BhcnNpdHkgPQogICAgICAgICAgICAoICRpdGVtX2NvdW50IDwgMyApICAgID8gMC4xCiAgICAgICAgICA6ICggJHBhY2tlZF9saW5lcyA9PSAxICkgPyAwLjE1CiAgICAgICAgICA6ICggJHBhY2tlZF9saW5lcyA9PSAyICkgPyAwLjQKICAgICAgICAgIDogICAgICAgICAgICAgICAgICAgICAgICAgIDAuNzsKCiAgICAgICAgIyBCZWdpbiBjaGVjayBmb3Igc2hvcnRjdXQgbWV0aG9kcywgd2hpY2ggYXZvaWQgdHJlYXRpbmcgYSBsaXN0CiAgICAgICAgIyBhcyBhIHRhYmxlIGZvciByZWxhdGl2ZWx5IHNtYWxsIHBhcmVudGhlc2l6ZWQgbGlzdHMuICBUaGVzZQogICAgICAgICMgYXJlIHVzdWFsbHkgZWFzaWVyIHRvIHJlYWQgaWYgbm90IGZvcm1hdHRlZCBhcyB0YWJsZXMuCiAgICAgICAgaWYgKAogICAgICAgICAgICAkcGFja2VkX2xpbmVzIDw9IDIgICAgICAgICAgICAgICAgICAgICMgcHJvYmFibHkgY2FuIGZpdCBpbiAyIGxpbmVzCiAgICAgICAgICAgICYmICRpdGVtX2NvdW50IDwgOSAgICAgICAgICAgICAgICAgICAgIyBkb2Vzbid0IGhhdmUgdG9vIG1hbnkgaXRlbXMKICAgICAgICAgICAgJiYgJG9wZW5pbmdfZW52aXJvbm1lbnQgZXEgJ0JMT0NLJyAgICAjIG5vdCBhIHN1Yi1jb250YWluZXIKICAgICAgICAgICAgJiYgJG9wZW5pbmdfdG9rZW4gZXEgJygnICAgICAgICAgICAgICAjIGlzIHBhcmVuIGxpc3QKICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICAjIFNob3J0Y3V0IG1ldGhvZCAxOiBmb3IgLWxwIGFuZCBqdXN0IG9uZSBjb21tYToKICAgICAgICAgICAgIyBUaGlzIGlzIGEgbm8tYnJhaW5lciwganVzdCBicmVhayBhdCB0aGUgY29tbWEuCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRyT3B0c19saW5lX3VwX3BhcmVudGhlc2VzICAgICMgLWxwCiAgICAgICAgICAgICAgICAmJiAkaXRlbV9jb3VudCA9PSAyICAgICAgICAgICAjIHR3byBpdGVtcywgb25lIGNvbW1hCiAgICAgICAgICAgICAgICAmJiAhJG11c3RfYnJlYWtfb3BlbgogICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbXkgJGlfYnJlYWsgPSAkcmNvbW1hX2luZGV4LT5bMF07CiAgICAgICAgICAgICAgICBzZXRfZm9yY2VkX2JyZWFrcG9pbnQoJGlfYnJlYWspOwogICAgICAgICAgICAgICAgJHskcmRvX25vdF9icmVha19hcGFydH0gPSAxOwogICAgICAgICAgICAgICAgc2V0X25vbl9hbGlnbm1lbnRfZmxhZ3MoICRjb21tYV9jb3VudCwgJHJjb21tYV9pbmRleCApOwogICAgICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBtZXRob2QgMiBpcyBmb3IgbW9zdCBzbWFsbCByYWdnZWQgbGlzdHMgd2hpY2ggbWlnaHQgbG9vawogICAgICAgICAgICAjIGJlc3QgaWYgbm90IGRpc3BsYXllZCBhcyBhIHRhYmxlLgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoICRudW1iZXJfb2ZfZmllbGRzID09IDIgJiYgJGl0ZW1fY291bnQgPT0gMyApCiAgICAgICAgICAgICAgICB8fCAoCiAgICAgICAgICAgICAgICAgICAgJG5ld19pZGVudGlmaWVyX2NvdW50ID4gMCAgICAjIGlzbid0IGFsbCBxdW90ZXMKICAgICAgICAgICAgICAgICAgICAmJiAkc3BhcnNpdHkgPiAwLjE1CiAgICAgICAgICAgICAgICApICAgICMgd291bGQgYmUgZmFpcmx5IHNwYWNlZCBnYXBzIGlmIGFsaWduZWQKICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICBteSAkYnJlYWtfY291bnQgPSBzZXRfcmFnZ2VkX2JyZWFrcG9pbnRzKCBcQGlfdGVybV9jb21tYSwKICAgICAgICAgICAgICAgICAgICAkcmlfcmFnZ2VkX2JyZWFrX2xpc3QgKTsKICAgICAgICAgICAgICAgICsrJGJyZWFrX2NvdW50IGlmICgkdXNlX3NlcGFyYXRlX2ZpcnN0X3Rlcm0pOwoKICAgICAgICAgICAgICAgICMgTk9URTogd2Ugc2hvdWxkIHJlYWxseSB1c2UgdGhlIHRydWUgYnJlYWsgY291bnQgaGVyZSwKICAgICAgICAgICAgICAgICMgd2hpY2ggY2FuIGJlIGdyZWF0ZXIgaWYgdGhlcmUgYXJlIGxhcmdlIHRlcm1zIGFuZAogICAgICAgICAgICAgICAgIyBsaXR0bGUgc3BhY2UsIGJ1dCB1c3VhbGx5IHRoaXMgd2lsbCB3b3JrIHdlbGwgZW5vdWdoLgogICAgICAgICAgICAgICAgdW5sZXNzICgkbXVzdF9icmVha19vcGVuKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICggJGJyZWFrX2NvdW50IDw9IDEgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR7JHJkb19ub3RfYnJlYWtfYXBhcnR9ID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkck9wdHNfbGluZV91cF9wYXJlbnRoZXNlcyAmJiAhJG5lZWRfbHBfYnJlYWtfb3BlbiApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkeyRyZG9fbm90X2JyZWFrX2FwYXJ0fSA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2V0X25vbl9hbGlnbm1lbnRfZmxhZ3MoICRjb21tYV9jb3VudCwgJHJjb21tYV9pbmRleCApOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgIH0gICAgIyBlbmQgc2hvcnRjdXQgbWV0aG9kcwoKICAgICAgICAjIGRlYnVnIHN0dWZmCgogICAgICAgIEZPUk1BVFRFUl9ERUJVR19GTEFHX1NQQVJTRSAmJiBkbyB7CiAgICAgICAgICAgIHByaW50IFNURE9VVAoiU1BBUlNFOmNvbHM9JGNvbHVtbnMgY29tbWFzPSRjb21tYV9jb3VudCBpdGVtczokaXRlbV9jb3VudCBpZHM9JGlkZW50aWZpZXJfY291bnQgcGFpcndpZHRoPSRwYWlyX3dpZHRoIGZpZWxkcz0kbnVtYmVyX29mX2ZpZWxkcyBsaW5lcyBwYWNrZWQ6ICRwYWNrZWRfbGluZXMgcGFja2VkX2NvbHM9JHBhY2tlZF9jb2x1bW5zIGZtdGQ6JGZvcm1hdHRlZF9saW5lcyBjb2xzIC9saW5lOiRjb2x1bW5zX3Blcl9saW5lICB1bnVzZWQ6JHVudXNlZF9jb2x1bW5zIGZtdGQ6JGZvcm1hdHRlZF9jb2x1bW5zIHNwYXJzaXR5PSRzcGFyc2l0eSBhbGxvdz0kbWF4X2FsbG93ZWRfc3BhcnNpdHlcbiI7CgogICAgICAgIH07CgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIENvbXBvdW5kIExpc3QgUnVsZSAyOgogICAgICAgICMgSWYgdGhpcyBsaXN0IGlzIHRvbyBsb25nIGZvciBvbmUgbGluZSwgYW5kIGl0IGlzIGFuIGl0ZW0gb2YgYQogICAgICAgICMgbGFyZ2VyIGxpc3QsIHRoZW4gd2UgbXVzdCBmb3JtYXQgaXQsIHJlZ2FyZGxlc3Mgb2Ygc3BhcnNpdHkKICAgICAgICAjIChpYW4udCkuICBPbmUgcmVhc29uIHRoYXQgd2UgaGF2ZSB0byBkbyB0aGlzIGlzIHRvIHRyaWdnZXIKICAgICAgICAjIENvbXBvdW5kIExpc3QgUnVsZSAxLCBhYm92ZSwgd2hpY2ggY2F1c2VzIGJyZWFrcyBhdCBhbGwgY29tbWFzIG9mCiAgICAgICAgIyBhbGwgb3V0ZXIgbGlzdHMuICBJbiB0aGlzIHdheSwgdGhlIHN0cnVjdHVyZSB3aWxsIGJlIHByb3Blcmx5CiAgICAgICAgIyBkaXNwbGF5ZWQuCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgICAjIERlY2lkZSBpZiB0aGlzIGxpc3QgaXMgdG9vIGxvbmcgZm9yIG9uZSBsaW5lIHVubGVzcyBicm9rZW4KICAgICAgICBteSAkdG90YWxfY29sdW1ucyA9IHRhYmxlX2NvbHVtbnNfYXZhaWxhYmxlKCRpX29wZW5pbmdfcGFyZW4pOwogICAgICAgIG15ICR0b29fbG9uZyAgICAgID0gJHBhY2tlZF9jb2x1bW5zID4gJHRvdGFsX2NvbHVtbnM7CgogICAgICAgICMgRm9yIGEgcGFyZW4gbGlzdCwgaW5jbHVkZSB0aGUgbGVuZ3RoIG9mIHRoZSB0b2tlbiBqdXN0IGJlZm9yZSB0aGUKICAgICAgICAjICcoJyBiZWNhdXNlIHRoaXMgaXMgbGlrZWx5IGEgc3ViIGNhbGwsIGFuZCB3ZSB3b3VsZCBoYXZlIHRvCiAgICAgICAgIyBpbmNsdWRlIHRoZSBzdWIgbmFtZSBvbiB0aGUgc2FtZSBsaW5lIGFzIHRoZSBsaXN0LiAgVGhpcyBpcyBzdGlsbAogICAgICAgICMgaW1wcmVjaXNlLCBidXQgbm90IHRvbyBiYWQuICAoc3RldmUudCkKICAgICAgICBpZiAoICEkdG9vX2xvbmcgJiYgJGlfb3BlbmluZ19wYXJlbiA+IDAgJiYgJG9wZW5pbmdfdG9rZW4gZXEgJygnICkgewoKICAgICAgICAgICAgJHRvb19sb25nID0gZXhjZXNzX2xpbmVfbGVuZ3RoKCAkaV9vcGVuaW5nX21pbnVzLAogICAgICAgICAgICAgICAgJGlfZWZmZWN0aXZlX2xhc3RfY29tbWEgKyAxICkgPiAwOwogICAgICAgIH0KCiAgICAgICAgIyBGSVhNRTogRm9yIGFuIGl0ZW0gYWZ0ZXIgYSAnPT4nLCB0cnkgdG8gaW5jbHVkZSB0aGUgbGVuZ3RoIG9mIHRoZQogICAgICAgICMgdGhpbmcgYmVmb3JlIHRoZSAnPT4nLiAgVGhpcyBpcyBjcnVkZSBhbmQgc2hvdWxkIGJlIGltcHJvdmVkIGJ5CiAgICAgICAgIyBhY3R1YWxseSBsb29raW5nIGJhY2sgdG9rZW4gYnkgdG9rZW4uCiAgICAgICAgaWYgKCAhJHRvb19sb25nICYmICRpX29wZW5pbmdfcGFyZW4gPiAwICYmICRsaXN0X3R5cGUgZXEgJz0+JyApIHsKICAgICAgICAgICAgbXkgJGlfb3BlbmluZ19taW51cyA9ICRpX29wZW5pbmdfcGFyZW4gLSA0OwogICAgICAgICAgICBpZiAoICRpX29wZW5pbmdfbWludXMgPj0gMCApIHsKICAgICAgICAgICAgICAgICR0b29fbG9uZyA9IGV4Y2Vzc19saW5lX2xlbmd0aCggJGlfb3BlbmluZ19taW51cywKICAgICAgICAgICAgICAgICAgICAkaV9lZmZlY3RpdmVfbGFzdF9jb21tYSArIDEgKSA+IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgQWx3YXlzIGJyZWFrIGxpc3RzIGNvbnRhaW5lZCBpbiAnWycgYW5kICd7JyBpZiB0b28gbG9uZyBmb3IgMSBsaW5lLAogICAgICAgICMgYW5kIGFsd2F5cyBicmVhayBsaXN0cyB3aGljaCBhcmUgdG9vIGxvbmcgYW5kIHBhcnQgb2YgYSBtb3JlIGNvbXBsZXgKICAgICAgICAjIHN0cnVjdHVyZS4KICAgICAgICBteSAkbXVzdF9icmVha19vcGVuX2NvbnRhaW5lciA9ICRtdXN0X2JyZWFrX29wZW4KICAgICAgICAgIHx8ICggJHRvb19sb25nCiAgICAgICAgICAgICYmICggJGluX2hpZXJhcmNoaWNhbF9saXN0IHx8ICRvcGVuaW5nX3Rva2VuIG5lICcoJyApICk7CgojcHJpbnQgIkxJU1RYOiBuZXh0PSRuZXh0X25vbmJsYW5rX3R5cGUgIGF2YWlsIGNvbHM9JGNvbHVtbnMgcGFja2VkPSRwYWNrZWRfY29sdW1ucyBtdXN0IGZvcm1hdCA9ICRtdXN0X2JyZWFrX29wZW5fY29udGFpbmVyIHRvby1sb25nPSR0b29fbG9uZyAgb3BlbmluZz0kb3BlbmluZ190b2tlbiBsaXN0X3R5cGU9JGxpc3RfdHlwZSBmb3JtYXR0ZWRfbGluZXM9JGZvcm1hdHRlZF9saW5lcyAgcGFja2VkPSRwYWNrZWRfbGluZXMgbWF4X3NwYXJzaXR5PSAkbWF4X2FsbG93ZWRfc3BhcnNpdHkgc3BhcnNpdHk9JHNwYXJzaXR5IFxuIjsKCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgVGhlIG1haW4gZGVjaXNpb246CiAgICAgICAgIyBOb3cgZGVjaWRlIGlmIHdlIHdpbGwgYWxpZ24gdGhlIGRhdGEgaW50byBhbGlnbmVkIGNvbHVtbnMuICBEbyBub3QKICAgICAgICAjIGF0dGVtcHQgdG8gYWxpZ24gY29sdW1ucyBpZiB0aGlzIGlzIGEgdGlueSB0YWJsZSBvciBpdCB3b3VsZCBiZQogICAgICAgICMgdG9vIHNwYWNlZC4gIEl0IHNlZW1zIHRoYXQgdGhlIG1vcmUgcGFja2VkIGxpbmVzIHdlIGhhdmUsIHRoZQogICAgICAgICMgc3BhcnNlciB0aGUgbGlzdCB0aGF0IGNhbiBiZSBhbGxvd2VkIGFuZCBzdGlsbCBsb29rIG9rLgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgICAgaWYgKCAgICggJGZvcm1hdHRlZF9saW5lcyA8IDMgJiYgJHBhY2tlZF9saW5lcyA8ICRmb3JtYXR0ZWRfbGluZXMgKQogICAgICAgICAgICB8fCAoICRmb3JtYXR0ZWRfbGluZXMgPCAyICkKICAgICAgICAgICAgfHwgKCAkdW51c2VkX2NvbHVtbnMgPiAkbWF4X2FsbG93ZWRfc3BhcnNpdHkgKiAkZm9ybWF0dGVkX2NvbHVtbnMgKQogICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgIyB0b28gc3BhcnNlOiB3b3VsZCBsb29rIHVnbHkgaWYgYWxpZ25lZCBpbiBhIHRhYmxlOwogICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICAgICAgICAjIHVzZSBvbGQgYnJlYWtwb2ludHMgaWYgdGhpcyBpcyBhICdiaWcnIGxpc3QKICAgICAgICAgICAgIyBGSVhNRTogZ29hbCBpcyB0byBpbXByb3ZlIHNldF9yYWdnZWRfYnJlYWtwb2ludHMgc28gdGhhdAogICAgICAgICAgICAjIHRoaXMgaXMgbm90IG5lY2Vzc2FyeS4KICAgICAgICAgICAgaWYgKCAkcGFja2VkX2xpbmVzID4gMiAmJiAkaXRlbV9jb3VudCA+IDEwICkgewogICAgICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiTGlzdCBzcGFyc2U6IHVzaW5nIG9sZCBicmVha3BvaW50c1xuIik7CiAgICAgICAgICAgICAgICBjb3B5X29sZF9icmVha3BvaW50cyggJGlfZmlyc3RfY29tbWEsICRpX2xhc3RfY29tbWEgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBsZXQgdGhlIGNvbnRpbnVhdGlvbiBsb2dpYyBoYW5kbGUgaXQgaWYgMiBsaW5lcwogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICBteSAkYnJlYWtfY291bnQgPSBzZXRfcmFnZ2VkX2JyZWFrcG9pbnRzKCBcQGlfdGVybV9jb21tYSwKICAgICAgICAgICAgICAgICAgICAkcmlfcmFnZ2VkX2JyZWFrX2xpc3QgKTsKICAgICAgICAgICAgICAgICsrJGJyZWFrX2NvdW50IGlmICgkdXNlX3NlcGFyYXRlX2ZpcnN0X3Rlcm0pOwoKICAgICAgICAgICAgICAgIHVubGVzcyAoJG11c3RfYnJlYWtfb3Blbl9jb250YWluZXIpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRicmVha19jb3VudCA8PSAxICkgewogICAgICAgICAgICAgICAgICAgICAgICAkeyRyZG9fbm90X2JyZWFrX2FwYXJ0fSA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJHJPcHRzX2xpbmVfdXBfcGFyZW50aGVzZXMgJiYgISRuZWVkX2xwX2JyZWFrX29wZW4gKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHskcmRvX25vdF9icmVha19hcGFydH0gPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHNldF9ub25fYWxpZ25tZW50X2ZsYWdzKCAkY29tbWFfY291bnQsICRyY29tbWFfaW5kZXggKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBnbyBhaGVhZCBhbmQgZm9ybWF0IGFzIGEgdGFibGUKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgKICAgICAgICAgICAgIkxpc3Q6IGF1dG8gZm9ybWF0dGluZyB3aXRoICRudW1iZXJfb2ZfZmllbGRzIGZpZWxkcy9yb3dcbiIpOwoKICAgICAgICBteSAkal9maXJzdF9icmVhayA9CiAgICAgICAgICAkdXNlX3NlcGFyYXRlX2ZpcnN0X3Rlcm0gPyAkbnVtYmVyX29mX2ZpZWxkcyA6ICRudW1iZXJfb2ZfZmllbGRzIC0gMTsKCiAgICAgICAgZm9yICgKICAgICAgICAgICAgbXkgJGogPSAkal9maXJzdF9icmVhayA7CiAgICAgICAgICAgICRqIDwgJGNvbW1hX2NvdW50IDsKICAgICAgICAgICAgJGogKz0gJG51bWJlcl9vZl9maWVsZHMKICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRpID0gJHJjb21tYV9pbmRleC0+WyRqXTsKICAgICAgICAgICAgc2V0X2ZvcmNlZF9icmVha3BvaW50KCRpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgfQp9CgpzdWIgc2V0X25vbl9hbGlnbm1lbnRfZmxhZ3MgewoKICAgICMgc2V0IGZsYWcgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlc2UgY29tbWFzIHNob3VsZCBub3QgYmUKICAgICMgYWxpZ25lZAogICAgbXkgKCAkY29tbWFfY291bnQsICRyY29tbWFfaW5kZXggKSA9IEBfOwogICAgZm9yZWFjaCAoIDAgLi4gJGNvbW1hX2NvdW50IC0gMSApIHsKICAgICAgICAkbWF0Y2hpbmdfdG9rZW5fdG9fZ29bICRyY29tbWFfaW5kZXgtPlskX10gXSA9IDE7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBzdHVkeV9saXN0X2NvbXBsZXhpdHkgewoKICAgICMgTG9vayBmb3IgY29tcGxleCB0YWJsZXMgd2hpY2ggc2hvdWxkIGJlIGZvcm1hdHRlZCB3aXRoIG9uZSB0ZXJtIHBlciBsaW5lLgogICAgIyBSZXR1cm5zIHRoZSBmb2xsb3dpbmc6CiAgICAjCiAgICAjICBcQGlfcmFnZ2VkX2JyZWFrX2xpc3QgPSBsaXN0IG9mIGdvb2QgYnJlYWtwb2ludHMgdG8gYXZvaWQgbGluZXMKICAgICMgICAgd2hpY2ggYXJlIGhhcmQgdG8gcmVhZAogICAgIyAgJG51bWJlcl9vZl9maWVsZHNfYmVzdCA9IHN1Z2dlc3RlZCBudW1iZXIgb2YgZmllbGRzIGJhc2VkIG9uCiAgICAjICAgIGNvbXBsZXhpdHk7ID0gMCBpZiBhbnkgbnVtYmVyIG1heSBiZSB1c2VkLgogICAgIwogICAgbXkgKCAkcmlfdGVybV9iZWdpbiwgJHJpX3Rlcm1fZW5kLCAkcml0ZW1fbGVuZ3RocywgJG1heF93aWR0aCApID0gQF87CiAgICBteSAkaXRlbV9jb3VudCAgICAgICAgICAgID0gQHskcmlfdGVybV9iZWdpbn07CiAgICBteSAkY29tcGxleF9pdGVtX2NvdW50ICAgID0gMDsKICAgIG15ICRudW1iZXJfb2ZfZmllbGRzX2Jlc3QgPSAkck9wdHNfbWF4aW11bV9maWVsZHNfcGVyX3RhYmxlOwogICAgbXkgJGlfbWF4ICAgICAgICAgICAgICAgICA9IEB7JHJpdGVtX2xlbmd0aHN9IC0gMTsKICAgICMjbXkgQGl0ZW1fY29tcGxleGl0eTsKCiAgICBteSAkaV9sYXN0X2xhc3RfYnJlYWsgPSAtMzsKICAgIG15ICRpX2xhc3RfYnJlYWsgICAgICA9IC0yOwogICAgbXkgQGlfcmFnZ2VkX2JyZWFrX2xpc3Q7CgogICAgbXkgJGRlZmluaXRlbHlfY29tcGxleCA9IDMwOwogICAgbXkgJGRlZmluaXRlbHlfc2ltcGxlICA9IDEyOwogICAgbXkgJHF1b3RlX2NvdW50ICAgICAgICA9IDA7CgogICAgZm9yIG15ICRpICggMCAuLiAkaV9tYXggKSB7CiAgICAgICAgbXkgJGliID0gJHJpX3Rlcm1fYmVnaW4tPlskaV07CiAgICAgICAgbXkgJGllID0gJHJpX3Rlcm1fZW5kLT5bJGldOwoKICAgICAgICAjIGRlZmluZSBjb21wbGV4aXR5OiBzdGFydCB3aXRoIHRoZSBhY3R1YWwgdGVybSBsZW5ndGgKICAgICAgICBteSAkd2VpZ2h0ZWRfbGVuZ3RoID0gKCAkcml0ZW1fbGVuZ3Rocy0+WyRpXSAtIDIgKTsKCiAgICAgICAgIyNUQkQ6IGpvaW4gdHlwZXMgaGVyZSBhbmQgY2hlY2sgZm9yIHZhcmlhdGlvbnMKICAgICAgICAjI215ICRzdHI9am9pbiAiIiwgQHRva2Vuc190b19nb1skaWIuLiRpZV07CgogICAgICAgIG15ICRpc19xdW90ZSA9IDA7CiAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bJGliXSA9fiAvXltxUV0kLyApIHsKICAgICAgICAgICAgJGlzX3F1b3RlID0gMTsKICAgICAgICAgICAgJHF1b3RlX2NvdW50Kys7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJHR5cGVzX3RvX2dvWyRpYl0gPX4gL15bd1wtXSQvICkgewogICAgICAgICAgICAkcXVvdGVfY291bnQrKzsKICAgICAgICB9CgogICAgICAgIGlmICggJGliIGVxICRpZSApIHsKICAgICAgICAgICAgaWYgKCAkaXNfcXVvdGUgJiYgJHRva2Vuc190b19nb1skaWJdID1+IC9ccy8gKSB7CiAgICAgICAgICAgICAgICAkY29tcGxleF9pdGVtX2NvdW50Kys7CiAgICAgICAgICAgICAgICAkd2VpZ2h0ZWRfbGVuZ3RoICo9IDI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGlmICggZ3JlcCB7ICRfIGVxICdiJyB9IEB0eXBlc190b19nb1sgJGliIC4uICRpZSBdICkgewogICAgICAgICAgICAgICAgJGNvbXBsZXhfaXRlbV9jb3VudCsrOwogICAgICAgICAgICAgICAgJHdlaWdodGVkX2xlbmd0aCAqPSAyOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggZ3JlcCB7ICRfIGVxICcuLicgfSBAdHlwZXNfdG9fZ29bICRpYiAuLiAkaWUgXSApIHsKICAgICAgICAgICAgICAgICR3ZWlnaHRlZF9sZW5ndGggKz0gNDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBhZGQgd2VpZ2h0IGZvciBleHRyYSB0b2tlbnMuCiAgICAgICAgJHdlaWdodGVkX2xlbmd0aCArPSAyICogKCAkaWUgLSAkaWIgKTsKCiMjICAgICAgICBteSAkQlVCID0gam9pbiAnJywgQHRva2Vuc190b19nb1skaWIuLiRpZV07CiMjICAgICAgICBwcmludCAiIyBDT01QTEVYSVRZOiR3ZWlnaHRlZF9sZW5ndGggICAkQlVCXG4iOwoKIyNwdXNoIEBpdGVtX2NvbXBsZXhpdHksICR3ZWlnaHRlZF9sZW5ndGg7CgogICAgICAgICMgbm93IG1hcmsgYSByYWdnZWQgYnJlYWsgYWZ0ZXIgdGhpcyBpdGVtIGl0IGlmIGl0IGlzICdsb25nIGFuZAogICAgICAgICMgY29tcGxleCc6CiAgICAgICAgaWYgKCAkd2VpZ2h0ZWRfbGVuZ3RoID49ICRkZWZpbml0ZWx5X2NvbXBsZXggKSB7CgogICAgICAgICAgICAjIGlmIHdlIGJyb2tlIGFmdGVyIHRoZSBwcmV2aW91cyB0ZXJtCiAgICAgICAgICAgICMgdGhlbiBicmVhayBiZWZvcmUgaXQgdG9vCiAgICAgICAgICAgIGlmICggICAkaV9sYXN0X2JyZWFrID09ICRpIC0gMQogICAgICAgICAgICAgICAgJiYgJGkgPiAxCiAgICAgICAgICAgICAgICAmJiAkaV9sYXN0X2xhc3RfYnJlYWsgIT0gJGkgLSAyICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICMjIEZJWE1FOiBkb24ndCBzdHJhbmQgYSBzbWFsbCB0ZXJtCiAgICAgICAgICAgICAgICBwb3AgQGlfcmFnZ2VkX2JyZWFrX2xpc3Q7CiAgICAgICAgICAgICAgICBwdXNoIEBpX3JhZ2dlZF9icmVha19saXN0LCAkaSAtIDI7CiAgICAgICAgICAgICAgICBwdXNoIEBpX3JhZ2dlZF9icmVha19saXN0LCAkaSAtIDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1c2ggQGlfcmFnZ2VkX2JyZWFrX2xpc3QsICRpOwogICAgICAgICAgICAkaV9sYXN0X2xhc3RfYnJlYWsgPSAkaV9sYXN0X2JyZWFrOwogICAgICAgICAgICAkaV9sYXN0X2JyZWFrICAgICAgPSAkaTsKICAgICAgICB9CgogICAgICAgICMgZG9uJ3QgYnJlYWsgYmVmb3JlIGEgc21hbGwgbGFzdCB0ZXJtIC0tIGl0IHdpbGwKICAgICAgICAjIG5vdCBsb29rIGdvb2Qgb24gYSBsaW5lIGJ5IGl0c2VsZi4KICAgICAgICBlbHNpZiAoJGkgPT0gJGlfbWF4CiAgICAgICAgICAgICYmICRpX2xhc3RfYnJlYWsgPT0gJGkgLSAxCiAgICAgICAgICAgICYmICR3ZWlnaHRlZF9sZW5ndGggPD0gJGRlZmluaXRlbHlfc2ltcGxlICkKICAgICAgICB7CiAgICAgICAgICAgIHBvcCBAaV9yYWdnZWRfYnJlYWtfbGlzdDsKICAgICAgICB9CiAgICB9CgogICAgbXkgJGlkZW50aWZpZXJfY291bnQgPSAkaV9tYXggKyAxIC0gJHF1b3RlX2NvdW50OwoKICAgICMgTmVlZCBtb3JlIHR1bmluZyBoZXJlLi4KICAgIGlmICggICAkbWF4X3dpZHRoID4gMTIKICAgICAgICAmJiAkY29tcGxleF9pdGVtX2NvdW50ID4gJGl0ZW1fY291bnQgLyAyCiAgICAgICAgJiYgJG51bWJlcl9vZl9maWVsZHNfYmVzdCAhPSAyICkKICAgIHsKICAgICAgICAkbnVtYmVyX29mX2ZpZWxkc19iZXN0ID0gMTsKICAgIH0KCiAgICByZXR1cm4gKCAkbnVtYmVyX29mX2ZpZWxkc19iZXN0LCBcQGlfcmFnZ2VkX2JyZWFrX2xpc3QsICRpZGVudGlmaWVyX2NvdW50ICk7Cn0KCnN1YiBnZXRfbWF4aW11bV9maWVsZHNfd2FudGVkIHsKCiAgICAjIE5vdCBhbGwgdGFibGVzIGxvb2sgZ29vZCB3aXRoIG1vcmUgdGhhbiBvbmUgZmllbGQgb2YgaXRlbXMuCiAgICAjIFRoaXMgcm91dGluZSBsb29rcyBhdCBhIHRhYmxlIGFuZCBkZWNpZGVzIGlmIGl0IHNob3VsZCBiZQogICAgIyBmb3JtYXR0ZWQgd2l0aCBqdXN0IG9uZSBmaWVsZCBvciBub3QuCiAgICAjIFRoaXMgY29kaW5nIGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50LgogICAgbXkgKCRyaXRlbV9sZW5ndGhzKSA9IEBfOwoKICAgIG15ICRudW1iZXJfb2ZfZmllbGRzX2Jlc3QgPSAwOwoKICAgICMgRm9yIGp1c3QgYSBmZXcgaXRlbXMsIHdlIHRlbnRhdGl2ZWx5IGFzc3VtZSBqdXN0IDEgZmllbGQuCiAgICBteSAkaXRlbV9jb3VudCA9IEB7JHJpdGVtX2xlbmd0aHN9OwogICAgaWYgKCAkaXRlbV9jb3VudCA8PSA1ICkgewogICAgICAgICRudW1iZXJfb2ZfZmllbGRzX2Jlc3QgPSAxOwogICAgfQoKICAgICMgRm9yIGxhcmdlciB0YWJsZXMsIGxvb2sgYXQgaXQgYm90aCB3YXlzIGFuZCBzZWUgd2hhdCBsb29rcyBiZXN0CiAgICBlbHNlIHsKCiAgICAgICAgbXkgJGlzX29kZCAgICAgICAgICAgID0gMTsKICAgICAgICBteSBAbWF4X2xlbmd0aCAgICAgICAgPSAoIDAsIDAgKTsKICAgICAgICBteSBAbGFzdF9sZW5ndGhfMiAgICAgPSAoIHVuZGVmLCB1bmRlZiApOwogICAgICAgIG15IEBmaXJzdF9sZW5ndGhfMiAgICA9ICggdW5kZWYsIHVuZGVmICk7CiAgICAgICAgbXkgJGxhc3RfbGVuZ3RoICAgICAgID0gdW5kZWY7CiAgICAgICAgbXkgJHRvdGFsX3ZhcmlhdGlvbl8xID0gMDsKICAgICAgICBteSAkdG90YWxfdmFyaWF0aW9uXzIgPSAwOwogICAgICAgIG15IEB0b3RhbF92YXJpYXRpb25fMiA9ICggMCwgMCApOwoKICAgICAgICBmb3JlYWNoIG15ICRqICggMCAuLiAkaXRlbV9jb3VudCAtIDEgKSB7CgogICAgICAgICAgICAkaXNfb2RkID0gMSAtICRpc19vZGQ7CiAgICAgICAgICAgIG15ICRsZW5ndGggPSAkcml0ZW1fbGVuZ3Rocy0+WyRqXTsKICAgICAgICAgICAgaWYgKCAkbGVuZ3RoID4gJG1heF9sZW5ndGhbJGlzX29kZF0gKSB7CiAgICAgICAgICAgICAgICAkbWF4X2xlbmd0aFskaXNfb2RkXSA9ICRsZW5ndGg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggZGVmaW5lZCgkbGFzdF9sZW5ndGgpICkgewogICAgICAgICAgICAgICAgbXkgJGRsID0gYWJzKCAkbGVuZ3RoIC0gJGxhc3RfbGVuZ3RoICk7CiAgICAgICAgICAgICAgICAkdG90YWxfdmFyaWF0aW9uXzEgKz0gJGRsOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRsYXN0X2xlbmd0aCA9ICRsZW5ndGg7CgogICAgICAgICAgICBteSAkbGwgPSAkbGFzdF9sZW5ndGhfMlskaXNfb2RkXTsKICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCRsbCkgKSB7CiAgICAgICAgICAgICAgICBteSAkZGwgPSBhYnMoICRsZW5ndGggLSAkbGwgKTsKICAgICAgICAgICAgICAgICR0b3RhbF92YXJpYXRpb25fMlskaXNfb2RkXSArPSAkZGw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkZmlyc3RfbGVuZ3RoXzJbJGlzX29kZF0gPSAkbGVuZ3RoOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRsYXN0X2xlbmd0aF8yWyRpc19vZGRdID0gJGxlbmd0aDsKICAgICAgICB9CiAgICAgICAgJHRvdGFsX3ZhcmlhdGlvbl8yID0gJHRvdGFsX3ZhcmlhdGlvbl8yWzBdICsgJHRvdGFsX3ZhcmlhdGlvbl8yWzFdOwoKICAgICAgICBteSAkZmFjdG9yID0gKCAkaXRlbV9jb3VudCA+IDEwICkgPyAxIDogKCAkaXRlbV9jb3VudCA+IDUgKSA/IDAuNzUgOiAwOwogICAgICAgIHVubGVzcyAoICR0b3RhbF92YXJpYXRpb25fMiA8ICRmYWN0b3IgKiAkdG90YWxfdmFyaWF0aW9uXzEgKSB7CiAgICAgICAgICAgICRudW1iZXJfb2ZfZmllbGRzX2Jlc3QgPSAxOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAoJG51bWJlcl9vZl9maWVsZHNfYmVzdCk7Cn0KCnN1YiB0YWJsZV9jb2x1bW5zX2F2YWlsYWJsZSB7CiAgICBteSAkaV9maXJzdF9jb21tYSA9IHNoaWZ0OwogICAgbXkgJGNvbHVtbnMgPQogICAgICBtYXhpbXVtX2xpbmVfbGVuZ3RoKCRpX2ZpcnN0X2NvbW1hKSAtCiAgICAgIGxlYWRpbmdfc3BhY2VzX3RvX2dvKCRpX2ZpcnN0X2NvbW1hKTsKCiAgICAjIFBhdGNoOiB0aGUgdmVydGljYWwgZm9ybWF0dGVyIGRvZXMgbm90IGxpbmUgdXAgbGluZXMgd2hvc2UgbGVuZ3RocwogICAgIyBleGFjdGx5IGVxdWFsIHRoZSBhdmFpbGFibGUgbGluZSBsZW5ndGggYmVjYXVzZSBvZiBhbGxvd2FuY2VzCiAgICAjIHRoYXQgbXVzdCBiZSBtYWRlIGZvciBzaWRlIGNvbW1lbnRzLiAgVGhlcmVmb3JlLCB0aGUgbnVtYmVyIG9mCiAgICAjIGF2YWlsYWJsZSBjb2x1bW5zIGlzIHJlZHVjZWQgYnkgMSBjaGFyYWN0ZXIuCiAgICAkY29sdW1ucyAtPSAxOwogICAgcmV0dXJuICRjb2x1bW5zOwp9CgpzdWIgbWF4aW11bV9udW1iZXJfb2ZfZmllbGRzIHsKCiAgICAjIGhvdyBtYW55IGZpZWxkcyB3aWxsIGZpdCBpbiB0aGUgYXZhaWxhYmxlIHNwYWNlPwogICAgbXkgKCAkY29sdW1ucywgJG9kZF9vcl9ldmVuLCAkbWF4X3dpZHRoLCAkcGFpcl93aWR0aCApID0gQF87CiAgICBteSAkbWF4X3BhaXJzICAgICAgICA9IGludCggJGNvbHVtbnMgLyAkcGFpcl93aWR0aCApOwogICAgbXkgJG51bWJlcl9vZl9maWVsZHMgPSAkbWF4X3BhaXJzICogMjsKICAgIGlmICggICAkb2RkX29yX2V2ZW4gPT0gMQogICAgICAgICYmICRtYXhfcGFpcnMgKiAkcGFpcl93aWR0aCArICRtYXhfd2lkdGggPD0gJGNvbHVtbnMgKQogICAgewogICAgICAgICRudW1iZXJfb2ZfZmllbGRzKys7CiAgICB9CiAgICByZXR1cm4gJG51bWJlcl9vZl9maWVsZHM7Cn0KCnN1YiBjb21wYWN0aWZ5X3RhYmxlIHsKCiAgICAjIGdpdmVuIGEgdGFibGUgd2l0aCBhIGNlcnRhaW4gbnVtYmVyIG9mIGZpZWxkcyBhbmQgYSBjZXJ0YWluIG51bWJlcgogICAgIyBvZiBsaW5lcywgc2VlIGlmIHJlZHVjaW5nIHRoZSBudW1iZXIgb2YgZmllbGRzIHdpbGwgbWFrZSBpdCBsb29rCiAgICAjIGJldHRlci4KICAgIG15ICggJGl0ZW1fY291bnQsICRudW1iZXJfb2ZfZmllbGRzLCAkZm9ybWF0dGVkX2xpbmVzLCAkb2RkX29yX2V2ZW4gKSA9IEBfOwogICAgaWYgKCAkbnVtYmVyX29mX2ZpZWxkcyA+PSAkb2RkX29yX2V2ZW4gKiAyICYmICRmb3JtYXR0ZWRfbGluZXMgPiAwICkgewogICAgICAgIG15ICRtaW5fZmllbGRzOwoKICAgICAgICBmb3IgKAogICAgICAgICAgICAkbWluX2ZpZWxkcyA9ICRudW1iZXJfb2ZfZmllbGRzIDsKICAgICAgICAgICAgJG1pbl9maWVsZHMgPj0gJG9kZF9vcl9ldmVuCiAgICAgICAgICAgICYmICRtaW5fZmllbGRzICogJGZvcm1hdHRlZF9saW5lcyA+PSAkaXRlbV9jb3VudCA7CiAgICAgICAgICAgICRtaW5fZmllbGRzIC09ICRvZGRfb3JfZXZlbgogICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJG51bWJlcl9vZl9maWVsZHMgPSAkbWluX2ZpZWxkczsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gJG51bWJlcl9vZl9maWVsZHM7Cn0KCnN1YiBzZXRfcmFnZ2VkX2JyZWFrcG9pbnRzIHsKCiAgICAjIFNldCBicmVha3BvaW50cyBpbiBhIGxpc3QgdGhhdCBjYW5ub3QgYmUgZm9ybWF0dGVkIG5pY2VseSBhcyBhCiAgICAjIHRhYmxlLgogICAgbXkgKCAkcmlfdGVybV9jb21tYSwgJHJpX3JhZ2dlZF9icmVha19saXN0ICkgPSBAXzsKCiAgICBteSAkYnJlYWtfY291bnQgPSAwOwogICAgZm9yZWFjaCAoIEB7JHJpX3JhZ2dlZF9icmVha19saXN0fSApIHsKICAgICAgICBteSAkaiA9ICRyaV90ZXJtX2NvbW1hLT5bJF9dOwogICAgICAgIGlmICgkaikgewogICAgICAgICAgICBzZXRfZm9yY2VkX2JyZWFrcG9pbnQoJGopOwogICAgICAgICAgICAkYnJlYWtfY291bnQrKzsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gJGJyZWFrX2NvdW50Owp9CgpzdWIgY29weV9vbGRfYnJlYWtwb2ludHMgewogICAgbXkgKCAkaV9maXJzdF9jb21tYSwgJGlfbGFzdF9jb21tYSApID0gQF87CiAgICBmb3IgbXkgJGkgKCAkaV9maXJzdF9jb21tYSAuLiAkaV9sYXN0X2NvbW1hICkgewogICAgICAgIGlmICggJG9sZF9icmVha3BvaW50X3RvX2dvWyRpXSApIHsKICAgICAgICAgICAgc2V0X2ZvcmNlZF9icmVha3BvaW50KCRpKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBzZXRfbm9icmVha3MgewogICAgbXkgKCAkaSwgJGogKSA9IEBfOwogICAgaWYgKCAkaSA+PSAwICYmICRpIDw9ICRqICYmICRqIDw9ICRtYXhfaW5kZXhfdG9fZ28gKSB7CgogICAgICAgIEZPUk1BVFRFUl9ERUJVR19GTEFHX05PQlJFQUsgJiYgZG8gewogICAgICAgICAgICBteSAoICRhLCAkYiwgJGMgKSA9IGNhbGxlcigpOwogICAgICAgICAgICBwcmludCBTVERPVVQKIk5PQlJFQUs6IGZvcmNlZF9icmVha3BvaW50ICRmb3JjZWRfYnJlYWtwb2ludF9jb3VudCBmcm9tICRhICRjIHdpdGggaT0kaSBtYXg9JG1heF9pbmRleF90b19nbyB0eXBlPSR0eXBlc190b19nb1skaV1cbiI7CiAgICAgICAgfTsKCiAgICAgICAgQG5vYnJlYWtfdG9fZ29bICRpIC4uICRqIF0gPSAoMSkgeCAoICRqIC0gJGkgKyAxICk7CiAgICB9CgogICAgIyBzaG91bGRuJ3QgaGFwcGVuOyBub24tY3JpdGljYWwgZXJyb3IKICAgIGVsc2UgewogICAgICAgIEZPUk1BVFRFUl9ERUJVR19GTEFHX05PQlJFQUsgJiYgZG8gewogICAgICAgICAgICBteSAoICRhLCAkYiwgJGMgKSA9IGNhbGxlcigpOwogICAgICAgICAgICBwcmludCBTVERPVVQKICAgICAgICAgICAgICAiTk9CUkVBSyBFUlJPUjogZnJvbSAkYSAkYyB3aXRoIGk9JGkgaj0kaiBtYXg9JG1heF9pbmRleF90b19nb1xuIjsKICAgICAgICB9OwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgc2V0X2Zha2VfYnJlYWtwb2ludCB7CgogICAgIyBKdXN0IGJ1bXAgdXAgdGhlIGJyZWFrcG9pbnQgY291bnQgYXMgYSBzaWduYWwgdGhhdCB0aGVyZSBhcmUgYnJlYWtzLgogICAgIyBUaGlzIGlzIHVzZWZ1bCBpZiB3ZSBoYXZlIGJyZWFrcyBidXQgbWF5IHdhbnQgdG8gcG9zdHBvbmUgZGVjaWRpbmcgd2hlcmUKICAgICMgdG8gbWFrZSB0aGVtLgogICAgJGZvcmNlZF9icmVha3BvaW50X2NvdW50Kys7CiAgICByZXR1cm47Cn0KCnN1YiBzZXRfZm9yY2VkX2JyZWFrcG9pbnQgewogICAgbXkgJGkgPSBzaGlmdDsKCiAgICByZXR1cm4gdW5sZXNzIGRlZmluZWQgJGkgJiYgJGkgPj0gMDsKCiAgICAjIG5vIGJyZWFrcyBiZXR3ZWVuIHdlbGRlZCB0b2tlbnMKICAgIHJldHVybiBpZiAoIHdlbGRfbGVuX3JpZ2h0X3RvX2dvKCRpKSApOwoKICAgICMgd2hlbiBjYWxsZWQgd2l0aCBjZXJ0YWluIHRva2VucywgdXNlIGJvbmQgc3RyZW5ndGhzIHRvIGRlY2lkZQogICAgIyBpZiB3ZSBicmVhayBiZWZvcmUgb3IgYWZ0ZXIgaXQKICAgIG15ICR0b2tlbiA9ICR0b2tlbnNfdG9fZ29bJGldOwoKICAgIGlmICggJHRva2VuID1+IC9eKFtcPVwuXCxcOlw/XXxhbmR8b3J8eG9yfCYmfFx8XHwpJC8gKSB7CiAgICAgICAgaWYgKCAkd2FudF9icmVha19iZWZvcmV7JHRva2VufSAmJiAkaSA+PSAwICkgeyAkaS0tIH0KICAgIH0KCiAgICAjIGJyZWFrcyBhcmUgZm9yY2VkIGJlZm9yZSAnaWYnIGFuZCAndW5sZXNzJwogICAgZWxzaWYgKCAkaXNfaWZfdW5sZXNzeyR0b2tlbn0gKSB7ICRpLS0gfQoKICAgIGlmICggJGkgPj0gMCAmJiAkaSA8PSAkbWF4X2luZGV4X3RvX2dvICkgewogICAgICAgIG15ICRpX25vbmJsYW5rID0gKCAkdHlwZXNfdG9fZ29bJGldIG5lICdiJyApID8gJGkgOiAkaSAtIDE7CgogICAgICAgIEZPUk1BVFRFUl9ERUJVR19GTEFHX0ZPUkNFICYmIGRvIHsKICAgICAgICAgICAgbXkgKCAkYSwgJGIsICRjICkgPSBjYWxsZXIoKTsKICAgICAgICAgICAgcHJpbnQgU1RET1VUCiJGT1JDRSAkZm9yY2VkX2JyZWFrcG9pbnRfY291bnQgZnJvbSAkYSAkYyB3aXRoIGk9JGlfbm9uYmxhbmsgbWF4PSRtYXhfaW5kZXhfdG9fZ28gdG9rPSR0b2tlbnNfdG9fZ29bJGlfbm9uYmxhbmtdIHR5cGU9JHR5cGVzX3RvX2dvWyRpX25vbmJsYW5rXSBub2JyPSRub2JyZWFrX3RvX2dvWyRpX25vbmJsYW5rXVxuIjsKICAgICAgICB9OwoKICAgICAgICBpZiAoICRpX25vbmJsYW5rID49IDAgJiYgJG5vYnJlYWtfdG9fZ29bJGlfbm9uYmxhbmtdID09IDAgKSB7CiAgICAgICAgICAgICRmb3JjZWRfYnJlYWtwb2ludF90b19nb1skaV9ub25ibGFua10gPSAxOwoKICAgICAgICAgICAgaWYgKCAkaV9ub25ibGFuayA+ICRpbmRleF9tYXhfZm9yY2VkX2JyZWFrICkgewogICAgICAgICAgICAgICAgJGluZGV4X21heF9mb3JjZWRfYnJlYWsgPSAkaV9ub25ibGFuazsKICAgICAgICAgICAgfQogICAgICAgICAgICAkZm9yY2VkX2JyZWFrcG9pbnRfY291bnQrKzsKICAgICAgICAgICAgJGZvcmNlZF9icmVha3BvaW50X3VuZG9fc3RhY2tbICRmb3JjZWRfYnJlYWtwb2ludF91bmRvX2NvdW50KysgXSA9CiAgICAgICAgICAgICAgJGlfbm9uYmxhbms7CgogICAgICAgICAgICAjIGlmIHdlIGJyZWFrIGF0IGFuIG9wZW5pbmcgY29udGFpbmVyLi5icmVhayBhdCB0aGUgY2xvc2luZwogICAgICAgICAgICBpZiAoICR0b2tlbnNfdG9fZ29bJGlfbm9uYmxhbmtdID1+IC9eW1x7XFtcKFw/XSQvICkgewogICAgICAgICAgICAgICAgc2V0X2Nsb3NpbmdfYnJlYWtwb2ludCgkaV9ub25ibGFuayk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBjbGVhcl9icmVha3BvaW50X3VuZG9fc3RhY2sgewogICAgJGZvcmNlZF9icmVha3BvaW50X3VuZG9fY291bnQgPSAwOwogICAgcmV0dXJuOwp9CgpzdWIgdW5kb19mb3JjZWRfYnJlYWtwb2ludF9zdGFjayB7CgogICAgbXkgJGlfc3RhcnQgPSBzaGlmdDsKICAgIGlmICggJGlfc3RhcnQgPCAwICkgewogICAgICAgICRpX3N0YXJ0ID0gMDsKICAgICAgICBteSAoICRhLCAkYiwgJGMgKSA9IGNhbGxlcigpOwogICAgICAgIHdhcm5pbmcoCiJQcm9ncmFtIEJ1ZzogdW5kb19mb3JjZWRfYnJlYWtwb2ludF9zdGFjayBmcm9tICRhICRjIGhhcyBpPSRpX3N0YXJ0ICIKICAgICAgICApOwogICAgfQoKICAgIHdoaWxlICggJGZvcmNlZF9icmVha3BvaW50X3VuZG9fY291bnQgPiAkaV9zdGFydCApIHsKICAgICAgICBteSAkaSA9CiAgICAgICAgICAkZm9yY2VkX2JyZWFrcG9pbnRfdW5kb19zdGFja1sgLS0kZm9yY2VkX2JyZWFrcG9pbnRfdW5kb19jb3VudCBdOwogICAgICAgIGlmICggJGkgPj0gMCAmJiAkaSA8PSAkbWF4X2luZGV4X3RvX2dvICkgewogICAgICAgICAgICAkZm9yY2VkX2JyZWFrcG9pbnRfdG9fZ29bJGldID0gMDsKICAgICAgICAgICAgJGZvcmNlZF9icmVha3BvaW50X2NvdW50LS07CgogICAgICAgICAgICBGT1JNQVRURVJfREVCVUdfRkxBR19VTkRPQlAgJiYgZG8gewogICAgICAgICAgICAgICAgbXkgKCAkYSwgJGIsICRjICkgPSBjYWxsZXIoKTsKICAgICAgICAgICAgICAgIHByaW50IFNURE9VVAoiVU5ET0JQOiB1bmRvIGZvcmNlZF9icmVha3BvaW50IGk9JGkgJGZvcmNlZF9icmVha3BvaW50X3VuZG9fY291bnQgZnJvbSAkYSAkYyBtYXg9JG1heF9pbmRleF90b19nb1xuIjsKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgc2hvdWxkbid0IGhhcHBlbiwgYnV0IG5vdCBhIGNyaXRpY2FsIGVycm9yCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIEZPUk1BVFRFUl9ERUJVR19GTEFHX1VORE9CUCAmJiBkbyB7CiAgICAgICAgICAgICAgICBteSAoICRhLCAkYiwgJGMgKSA9IGNhbGxlcigpOwogICAgICAgICAgICAgICAgcHJpbnQgU1RET1VUCiJQcm9ncmFtIEJ1ZzogdW5kb19mb3JjZWRfYnJlYWtwb2ludCBmcm9tICRhICRjIGhhcyBpPSRpIGJ1dCBtYXg9JG1heF9pbmRleF90b19nbyI7CiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuOwp9Cgp7ICAgICMgYmVnaW4gcmVjb21iaW5lX2JyZWFrcG9pbnRzCgogICAgbXkgJWlzX2FtcF9hbXA7CiAgICBteSAlaXNfdGVybmFyeTsKICAgIG15ICVpc19tYXRoX29wOwogICAgbXkgJWlzX3BsdXNfbWludXM7CiAgICBteSAlaXNfbXVsdF9kaXY7CgogICAgQkVHSU4gewoKICAgICAgICBteSBAcTsKICAgICAgICBAcSA9IHF3KCAmJiB8fCApOwogICAgICAgIEBpc19hbXBfYW1we0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CgogICAgICAgIEBxID0gcXcoID8gOiApOwogICAgICAgIEBpc190ZXJuYXJ5e0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CgogICAgICAgIEBxID0gcXcoICsgLSAqIC8gKTsKICAgICAgICBAaXNfbWF0aF9vcHtAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgICAgICBAcSA9IHF3KCArIC0gKTsKICAgICAgICBAaXNfcGx1c19taW51c3tAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgICAgICBAcSA9IHF3KCAqIC8gKTsKICAgICAgICBAaXNfbXVsdF9kaXZ7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKICAgIH0KCiAgICBzdWIgRFVNUF9CUkVBS1BPSU5UUyB7CgogICAgICAgICMgRGVidWcgcm91dGluZSB0byBkdW1wIGN1cnJlbnQgYnJlYWtwb2ludHMuLi5ub3Qgbm9ybWFsbHkgY2FsbGVkCiAgICAgICAgIyBXZSBhcmUgZ2l2ZW4gaW5kZXhlcyB0byB0aGUgY3VycmVudCBsaW5lczoKICAgICAgICAjICRyaV9iZWcgPSByZWYgdG8gYXJyYXkgb2YgQkVHaW5uaW5nIGluZGV4ZXMgb2YgZWFjaCBsaW5lCiAgICAgICAgIyAkcmlfZW5kID0gcmVmIHRvIGFycmF5IG9mIEVORGluZyBpbmRleGVzIG9mIGVhY2ggbGluZQogICAgICAgIG15ICggJHJpX2JlZywgJHJpX2VuZCwgJG1zZyApID0gQF87CiAgICAgICAgcHJpbnQgU1RERVJSICItLS0tRHVtcGluZyBicmVha3BvaW50cyBmcm9tOiAkbXNnLS0tLVxuIjsKICAgICAgICBmb3IgbXkgJG4gKCAwIC4uIEB7JHJpX2VuZH0gLSAxICkgewogICAgICAgICAgICBteSAkaWJlZyA9ICRyaV9iZWctPlskbl07CiAgICAgICAgICAgIG15ICRpZW5kID0gJHJpX2VuZC0+WyRuXTsKICAgICAgICAgICAgbXkgJHRleHQgPSAiIjsKICAgICAgICAgICAgZm9yZWFjaCBteSAkaSAoICRpYmVnIC4uICRpZW5kICkgewogICAgICAgICAgICAgICAgJHRleHQgLj0gJHRva2Vuc190b19nb1skaV07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHJpbnQgU1RERVJSICIkbiAoJGliZWc6JGllbmQpICR0ZXh0XG4iOwogICAgICAgIH0KICAgICAgICBwcmludCBTVERFUlIgIi0tLS1cbiI7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBkZWxldGVfb25lX2xpbmVfc2VtaWNvbG9ucyB7CgogICAgICAgIG15ICggJHNlbGYsICRyaV9iZWcsICRyaV9lbmQgKSA9IEBfOwogICAgICAgIG15ICRyTEwgICAgICAgICAgICAgICAgID0gJHNlbGYtPntyTEx9OwogICAgICAgIG15ICRLX29wZW5pbmdfY29udGFpbmVyID0gJHNlbGYtPntLX29wZW5pbmdfY29udGFpbmVyfTsKCiAgICAgICAgIyBXYWxrIGRvd24gdGhlIGxpbmVzIG9mIHRoaXMgYmF0Y2ggYW5kIGRlbGV0ZSBhbnkgc2VtaWNvbG9ucwogICAgICAgICMgdGVybWluYXRpbmcgb25lLWxpbmUgYmxvY2tzOwogICAgICAgIG15ICRubWF4ID0gQHskcmlfZW5kfSAtIDE7CgogICAgICAgIGZvcmVhY2ggbXkgJG4gKCAwIC4uICRubWF4ICkgewogICAgICAgICAgICBteSAkaV9iZWcgICAgPSAkcmlfYmVnLT5bJG5dOwogICAgICAgICAgICBteSAkaV9lICAgICAgPSAkcmlfZW5kLT5bJG5dOwogICAgICAgICAgICBteSAkS19iZWcgICAgPSAkS190b19nb1skaV9iZWddOwogICAgICAgICAgICBteSAkS19lICAgICAgPSAkS190b19nb1skaV9lXTsKICAgICAgICAgICAgbXkgJEtfZW5kICAgID0gJEtfZTsKICAgICAgICAgICAgbXkgJHR5cGVfZW5kID0gJHJMTC0+WyRLX2VuZF0tPltfVFlQRV9dOwogICAgICAgICAgICBpZiAoICR0eXBlX2VuZCBlcSAnIycgKSB7CiAgICAgICAgICAgICAgICAkS19lbmQgPSAkc2VsZi0+S19wcmV2aW91c19ub25ibGFuaygkS19lbmQpOwogICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCRLX2VuZCkgKSB7ICR0eXBlX2VuZCA9ICRyTEwtPlskS19lbmRdLT5bX1RZUEVfXTsgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHdlIGFyZSBsb29raW5nIGZvciBhIGxpbmUgZW5kaW5nIGluIGNsb3NpbmcgYnJhY2UKICAgICAgICAgICAgbmV4dAogICAgICAgICAgICAgIHVubGVzcyAoICR0eXBlX2VuZCBlcSAnfScgJiYgJHJMTC0+WyRLX2VuZF0tPltfVE9LRU5fXSBlcSAnfScgKTsKCiAgICAgICAgICAgICMgLi4uYW5kIHByZWNlZGVkIGJ5IGEgc2VtaWNvbG9uIG9uIHRoZSBzYW1lIGxpbmUKICAgICAgICAgICAgbXkgJEtfc2VtaWNvbG9uID0gJHNlbGYtPktfcHJldmlvdXNfbm9uYmxhbmsoJEtfZW5kKTsKICAgICAgICAgICAgbXkgJGlfc2VtaWNvbG9uID0gJGlfYmVnICsgKCAkS19zZW1pY29sb24gLSAkS19iZWcgKTsKICAgICAgICAgICAgbmV4dCBpZiAoICRpX3NlbWljb2xvbiA8PSAkaV9iZWcgKTsKICAgICAgICAgICAgbmV4dCB1bmxlc3MgKCAkckxMLT5bJEtfc2VtaWNvbG9uXS0+W19UWVBFX10gZXEgJzsnICk7CgogICAgICAgICAgICAjIHNhZmV0eSBjaGVjayAtIHNob3VsZG4ndCBoYXBwZW4KICAgICAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bJGlfc2VtaWNvbG9uXSBuZSAnOycgKSB7CiAgICAgICAgICAgICAgICBGYXVsdCgidW5leHBlY3RlZCB0eXBlIGxvb2tpbmcgZm9yIHNlbWljb2xvbiwgaWdub3JpbmciKTsKICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgLi4uIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgb3BlbmluZyBicmFjZSBvbiB0aGUgc2FtZSBsaW5lCiAgICAgICAgICAgIG15ICR0eXBlX3NlcXVlbmNlID0gJHJMTC0+WyRLX2VuZF0tPltfVFlQRV9TRVFVRU5DRV9dOwogICAgICAgICAgICBteSAkS19vcGVuaW5nICAgICA9ICRLX29wZW5pbmdfY29udGFpbmVyLT57JHR5cGVfc2VxdWVuY2V9OwogICAgICAgICAgICBteSAkaV9vcGVuaW5nICAgICA9ICRpX2JlZyArICggJEtfb3BlbmluZyAtICRLX2JlZyApOwogICAgICAgICAgICBuZXh0IGlmICggJGlfb3BlbmluZyA8ICRpX2JlZyApOwoKICAgICAgICAgICAgIyAuLi4gYW5kIG9ubHkgb25lIHNlbWljb2xvbiBiZXR3ZWVuIHRoZXNlIGJyYWNlcwogICAgICAgICAgICBteSAkc2VtaWNvbG9uX2NvdW50ID0gMDsKICAgICAgICAgICAgZm9yZWFjaCBteSAkSyAoICRLX29wZW5pbmcgKyAxIC4uICRLX3NlbWljb2xvbiAtIDEgKSB7CiAgICAgICAgICAgICAgICBpZiAoICRyTEwtPlskS10tPltfVFlQRV9dIGVxICc7JyApIHsKICAgICAgICAgICAgICAgICAgICAkc2VtaWNvbG9uX2NvdW50Kys7CiAgICAgICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBuZXh0IGlmICgkc2VtaWNvbG9uX2NvdW50KTsKCiAgICAgICAgICAgICMgLi4ub2ssIHRoZW4gbWFrZSB0aGUgc2VtaWNvbG9uIGludmlzaWJsZQogICAgICAgICAgICAkdG9rZW5zX3RvX2dvWyRpX3NlbWljb2xvbl0gPSAiIjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiB1bm1hc2tfcGhhbnRvbV9zZW1pY29sb25zIHsKCiAgICAgICAgbXkgKCAkc2VsZiwgJHJpX2JlZywgJHJpX2VuZCApID0gQF87CgogICAgICAgICMgV2FsayBkb3duIHRoZSBsaW5lcyBvZiB0aGlzIGJhdGNoIGFuZCB1bm1hc2sgYW55IGludmlzaWJsZSBsaW5lLWVuZGluZwogICAgICAgICMgc2VtaWNvbG9ucy4gIFRoZXkgd2VyZSBwbGFjZWQgYnkgc3ViIHJlc3BhY2VfdG9rZW5zIGJ1dCB3ZSBvbmx5IG5vdwogICAgICAgICMga25vdyBpZiB3ZSBhY3R1YWxseSBuZWVkIHRoZW0uCgogICAgICAgIG15ICRubWF4ID0gQHskcmlfZW5kfSAtIDE7CiAgICAgICAgZm9yZWFjaCBteSAkbiAoIDAgLi4gJG5tYXggKSB7CgogICAgICAgICAgICBteSAkaSA9ICRyaV9lbmQtPlskbl07CiAgICAgICAgICAgIGlmICggJHR5cGVzX3RvX2dvWyRpXSBlcSAnOycgJiYgJHRva2Vuc190b19nb1skaV0gZXEgJycgKSB7CgogICAgICAgICAgICAgICAgJHRva2Vuc190b19nb1skaV0gPSAkd2FudF9sZWZ0X3NwYWNleyc7J30gPT0gV1NfTk8gPyAnOycgOiAnIDsnOwoKICAgICAgICAgICAgICAgIG15ICRsaW5lX251bWJlciA9IDEgKyAkc2VsZi0+Z2V0X29sZF9saW5lX2luZGV4KCAkS190b19nb1skaV0gKTsKICAgICAgICAgICAgICAgIG5vdGVfYWRkZWRfc2VtaWNvbG9uKCRsaW5lX251bWJlcik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiByZWNvbWJpbmVfYnJlYWtwb2ludHMgewoKICAgICAgICAjIHN1YiBzZXRfY29udGludWF0aW9uX2JyZWFrcyBpcyB2ZXJ5IGxpYmVyYWwgaW4gc2V0dGluZyBsaW5lIGJyZWFrcwogICAgICAgICMgZm9yIGxvbmcgbGluZXMsIGFsd2F5cyBzZXR0aW5nIGJyZWFrcyBhdCBnb29kIGJyZWFrcG9pbnRzLCBldmVuCiAgICAgICAgIyB3aGVuIHRoYXQgY3JlYXRlcyBzbWFsbCBsaW5lcy4gIFNvbWV0aW1lcyBzbWFsbCBsaW5lIGZyYWdtZW50cwogICAgICAgICMgYXJlIHByb2R1Y2VkIHdoaWNoIHdvdWxkIGxvb2sgYmV0dGVyIGlmIHRoZXkgd2VyZSBjb21iaW5lZC4KICAgICAgICAjIFRoYXQncyB0aGUgdGFzayBvZiB0aGlzIHJvdXRpbmUuCiAgICAgICAgIwogICAgICAgICMgV2UgYXJlIGdpdmVuIGluZGV4ZXMgdG8gdGhlIGN1cnJlbnQgbGluZXM6CiAgICAgICAgIyAkcmlfYmVnID0gcmVmIHRvIGFycmF5IG9mIEJFR2lubmluZyBpbmRleGVzIG9mIGVhY2ggbGluZQogICAgICAgICMgJHJpX2VuZCA9IHJlZiB0byBhcnJheSBvZiBFTkRpbmcgaW5kZXhlcyBvZiBlYWNoIGxpbmUKICAgICAgICBteSAoICRyaV9iZWcsICRyaV9lbmQgKSA9IEBfOwoKICAgICAgICAjIE1ha2UgYSBsaXN0IG9mIGFsbCBnb29kIGpvaW5pbmcgdG9rZW5zIGJldHdlZW4gdGhlIGxpbmVzCiAgICAgICAgIyBuLTEgYW5kIG4uCiAgICAgICAgbXkgQGpvaW50OwogICAgICAgIG15ICRubWF4ID0gQHskcmlfZW5kfSAtIDE7CiAgICAgICAgZm9yIG15ICRuICggMSAuLiAkbm1heCApIHsKICAgICAgICAgICAgbXkgJGliZWdfMSA9ICRyaV9iZWctPlsgJG4gLSAxIF07CiAgICAgICAgICAgIG15ICRpZW5kXzEgPSAkcmlfZW5kLT5bICRuIC0gMSBdOwogICAgICAgICAgICBteSAkaWVuZF8yID0gJHJpX2VuZC0+WyRuXTsKICAgICAgICAgICAgbXkgJGliZWdfMiA9ICRyaV9iZWctPlskbl07CgogICAgICAgICAgICBteSAoICRpdG9rLCAkaXRva3AsICRpdG9rbSApOwoKICAgICAgICAgICAgZm9yZWFjaCBteSAkaXRlc3QgKCAkaWVuZF8xLCAkaWJlZ18yICkgewogICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAkdHlwZXNfdG9fZ29bJGl0ZXN0XTsKICAgICAgICAgICAgICAgIGlmICggICAkaXNfbWF0aF9vcHskdHlwZX0KICAgICAgICAgICAgICAgICAgICB8fCAkaXNfYW1wX2FtcHskdHlwZX0KICAgICAgICAgICAgICAgICAgICB8fCAkaXNfYXNzaWdubWVudHskdHlwZX0KICAgICAgICAgICAgICAgICAgICB8fCAkdHlwZSBlcSAnOicgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRpdG9rID0gJGl0ZXN0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRqb2ludFskbl0gPSBbJGl0b2tdOwogICAgICAgIH0KCiAgICAgICAgbXkgJG1vcmVfdG9fZG8gPSAxOwoKICAgICAgICAjIFdlIGtlZXAgbG9vcGluZyBvdmVyIGFsbCBvZiB0aGUgbGluZXMgb2YgdGhpcyBiYXRjaAogICAgICAgICMgdW50aWwgdGhlcmUgYXJlIG5vIG1vcmUgcG9zc2libGUgcmVjb21iaW5hdGlvbnMKICAgICAgICBteSAkbm1heF9sYXN0ID0gQHskcmlfZW5kfTsKICAgICAgICBteSAkcmV2ZXJzZSAgID0gMDsKICAgICAgICB3aGlsZSAoJG1vcmVfdG9fZG8pIHsKICAgICAgICAgICAgbXkgJG5fYmVzdCA9IDA7CiAgICAgICAgICAgIG15ICRic19iZXN0OwogICAgICAgICAgICBteSAkbm1heCA9IEB7JHJpX2VuZH0gLSAxOwoKICAgICAgICAgICAgIyBTYWZldHkgY2hlY2sgZm9yIGluZmluaXRlIGxvb3AKICAgICAgICAgICAgdW5sZXNzICggJG5tYXggPCAkbm1heF9sYXN0ICkgewoKICAgICAgICAgICAgICAgICMgU2hvdWxkbid0IGhhcHBlbiBiZWNhdXNlIHNwbGljZSBiZWxvdyBkZWNyZWFzZXMgbm1heCBvbiBlYWNoCiAgICAgICAgICAgICAgICAjIHBhc3MuCiAgICAgICAgICAgICAgICBGYXVsdCgiUHJvZ3JhbSBidWctaW5maW5pdGUgbG9vcCBpbiByZWNvbWJpbmUgYnJlYWtwb2ludHNcbiIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRubWF4X2xhc3QgID0gJG5tYXg7CiAgICAgICAgICAgICRtb3JlX3RvX2RvID0gMDsKICAgICAgICAgICAgbXkgJHNraXBfU2VjdGlvbl8zOwogICAgICAgICAgICBteSAkbGVhZGluZ19hbXBfY291bnQgPSAwOwogICAgICAgICAgICBteSAkdGhpc19saW5lX2lzX3NlbWljb2xvbl90ZXJtaW5hdGVkOwoKICAgICAgICAgICAgIyBsb29wIG92ZXIgYWxsIHJlbWFpbmluZyBsaW5lcyBpbiB0aGlzIGJhdGNoCiAgICAgICAgICAgIGZvciBteSAkaXRlciAoIDEgLi4gJG5tYXggKSB7CgogICAgICAgICAgICAgICAgIyBhbHRlcm5hdGluZyBzd2VlcCBkaXJlY3Rpb24gZ2l2ZXMgc3ltbWV0cmljIHJlc3VsdHMKICAgICAgICAgICAgICAgICMgZm9yIHJlY29tYmluaW5nIGxpbmVzIHdoaWNoIGV4Y2VlZCB0aGUgbGluZSBsZW5ndGgKICAgICAgICAgICAgICAgICMgc3VjaCBhcyBldmFsIHt7e3suLi4uIH19fX0KICAgICAgICAgICAgICAgIG15ICRuOwogICAgICAgICAgICAgICAgaWYgICAoJHJldmVyc2UpIHsgJG4gPSAxICsgJG5tYXggLSAkaXRlcjsgfQogICAgICAgICAgICAgICAgZWxzZSAgICAgICAgICAgIHsgJG4gPSAkaXRlciB9CgogICAgICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgICMgSWYgd2Ugam9pbiB0aGUgY3VycmVudCBwYWlyIG9mIGxpbmVzLAogICAgICAgICAgICAgICAgIyBsaW5lICRuLTEgd2lsbCBiZWNvbWUgdGhlIGxlZnQgcGFydCBvZiB0aGUgam9pbmVkIGxpbmUKICAgICAgICAgICAgICAgICMgbGluZSAkbiB3aWxsIGJlY29tZSB0aGUgcmlnaHQgcGFydCBvZiB0aGUgam9pbmVkIGxpbmUKICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICMgSGVyZSBhcmUgSW5kZXhlcyBvZiB0aGUgZW5kcG9pbnQgdG9rZW5zIG9mIHRoZSB0d28gbGluZXM6CiAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAjICAtLS0tLWxpbmUgJG4tMS0tLSB8IC0tLS0tbGluZSAkbi0tLS0tCiAgICAgICAgICAgICAgICAjICAkaWJlZ18xICAgJGllbmRfMSB8ICRpYmVnXzIgICAkaWVuZF8yCiAgICAgICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICBeCiAgICAgICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgICAgICAgICAjIFdlIHdhbnQgdG8gZGVjaWRlIGlmIHdlIHNob3VsZCByZW1vdmUgdGhlIGxpbmUgYnJlYWsKICAgICAgICAgICAgICAgICMgYmV0d2VlbiB0aGUgdG9rZW5zIGF0ICRpZW5kXzEgYW5kICRpYmVnXzIKICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICMgV2Ugd2lsbCBhcHBseSBhIG51bWJlciBvZiBhZC1ob2MgdGVzdHMgdG8gc2VlIGlmIGpvaW5pbmcKICAgICAgICAgICAgICAgICMgaGVyZSB3aWxsIGxvb2sgb2suICBUaGUgY29kZSB3aWxsIGp1c3QgaXNzdWUgYSAnbmV4dCcKICAgICAgICAgICAgICAgICMgY29tbWFuZCBpZiB0aGUgam9pbiBkb2Vzbid0IGxvb2sgZ29vZC4gIElmIHdlIGdldCB0aHJvdWdoCiAgICAgICAgICAgICAgICAjIHRoZSBnYXVudGxldCBvZiB0ZXN0cywgdGhlIGxpbmVzIHdpbGwgYmUgcmVjb21iaW5lZC4KICAgICAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAjIGJlZ2lubmluZyBhbmQgZW5kaW5nIHRva2VucyBvZiB0aGUgbGluZXMgd2UgYXJlIHdvcmtpbmcgb24KICAgICAgICAgICAgICAgIG15ICRpYmVnXzEgICAgPSAkcmlfYmVnLT5bICRuIC0gMSBdOwogICAgICAgICAgICAgICAgbXkgJGllbmRfMSAgICA9ICRyaV9lbmQtPlsgJG4gLSAxIF07CiAgICAgICAgICAgICAgICBteSAkaWVuZF8yICAgID0gJHJpX2VuZC0+WyRuXTsKICAgICAgICAgICAgICAgIG15ICRpYmVnXzIgICAgPSAkcmlfYmVnLT5bJG5dOwogICAgICAgICAgICAgICAgbXkgJGliZWdfbm1heCA9ICRyaV9iZWctPlskbm1heF07CgogICAgICAgICAgICAgICAgIyBjb21iaW5lZCBsaW5lIGNhbm5vdCBiZSB0b28gbG9uZwogICAgICAgICAgICAgICAgbXkgJGV4Y2VzcyA9IGV4Y2Vzc19saW5lX2xlbmd0aCggJGliZWdfMSwgJGllbmRfMiwgMSwgMSApOwogICAgICAgICAgICAgICAgbmV4dCBpZiAoICRleGNlc3MgPiAwICk7CgogICAgICAgICAgICAgICAgbXkgJHR5cGVfaWVuZF8xID0gJHR5cGVzX3RvX2dvWyRpZW5kXzFdOwogICAgICAgICAgICAgICAgbXkgJHR5cGVfaWVuZF8yID0gJHR5cGVzX3RvX2dvWyRpZW5kXzJdOwogICAgICAgICAgICAgICAgbXkgJHR5cGVfaWJlZ18xID0gJHR5cGVzX3RvX2dvWyRpYmVnXzFdOwogICAgICAgICAgICAgICAgbXkgJHR5cGVfaWJlZ18yID0gJHR5cGVzX3RvX2dvWyRpYmVnXzJdOwoKICAgICAgICAgICAgICAgICMgdGVybWluYWwgdG9rZW4gb2YgbGluZSAyIGlmIGFueSBzaWRlIGNvbW1lbnQgaXMgaWdub3JlZDoKICAgICAgICAgICAgICAgIG15ICRpZW5kXzJ0ICAgICAgPSAkaWVuZF8yOwogICAgICAgICAgICAgICAgbXkgJHR5cGVfaWVuZF8ydCA9ICR0eXBlX2llbmRfMjsKCiAgICAgICAgICAgICAgICAjIHNvbWUgYmVnaW5uaW5nIGluZGV4ZXMgb2Ygb3RoZXIgbGluZXMsIHdoaWNoIG1heSBub3QgZXhpc3QKICAgICAgICAgICAgICAgIG15ICRpYmVnXzAgPSAkbiA+IDEgICAgICAgICAgPyAkcmlfYmVnLT5bICRuIC0gMiBdIDogLTE7CiAgICAgICAgICAgICAgICBteSAkaWJlZ18zID0gJG4gPCAkbm1heCAgICAgID8gJHJpX2JlZy0+WyAkbiArIDEgXSA6IC0xOwogICAgICAgICAgICAgICAgbXkgJGliZWdfNCA9ICRuICsgMiA8PSAkbm1heCA/ICRyaV9iZWctPlsgJG4gKyAyIF0gOiAtMTsKCiAgICAgICAgICAgICAgICBteSAkYnNfdHdlYWsgPSAwOwoKICAgICAgICAgICAgICAgICNteSAkZGVwdGhfaW5jcmVhc2U9KCAkbmVzdGluZ19kZXB0aF90b19nb1skaWJlZ18yXSAtCiAgICAgICAgICAgICAgICAjICAgICAgICAkbmVzdGluZ19kZXB0aF90b19nb1skaWJlZ18xXSApOwoKICAgICAgICAgICAgICAgIEZPUk1BVFRFUl9ERUJVR19GTEFHX1JFQ09NQklORSAmJiBkbyB7CiAgICAgICAgICAgICAgICAgICAgcHJpbnQgU1RERVJSCiJSRUNPTUJJTkU6IG49JG4gaW1pZD0kaWVuZF8xIGlmPSRpYmVnXzEgdHlwZT0kdHlwZV9pYmVnXzEgPSR0b2tlbnNfdG9fZ29bJGliZWdfMV0gbmV4dF90eXBlPSR0eXBlX2liZWdfMiBuZXh0X3Rvaz0kdG9rZW5zX3RvX2dvWyRpYmVnXzJdXG4iOwogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAjIElmIGxpbmUgJG4gaXMgdGhlIGxhc3QgbGluZSwgd2Ugc2V0IHNvbWUgZmxhZ3MgYW5kCiAgICAgICAgICAgICAgICAjIGRvIGFueSBzcGVjaWFsIGNoZWNrcyBmb3IgaXQKICAgICAgICAgICAgICAgIGlmICggJG4gPT0gJG5tYXggKSB7CgogICAgICAgICAgICAgICAgICAgICMgYSB0ZXJtaW5hbCAneycgc2hvdWxkIHN0YXkgd2hlcmUgaXQgaXMKICAgICAgICAgICAgICAgICAgICAjIHVubGVzcyBwcmVjZWRlZCBieSBhIGZhdCBjb21tYQogICAgICAgICAgICAgICAgICAgIG5leHQgaWYgKCAkdHlwZV9pYmVnXzIgZXEgJ3snICYmICR0eXBlX2llbmRfMSBuZSAnPT4nICk7CgogICAgICAgICAgICAgICAgICAgIGlmICggICAkdHlwZV9pZW5kXzIgZXEgJyMnCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRpZW5kXzIgLSAkaWJlZ18yID49IDIKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHR5cGVzX3RvX2dvWyAkaWVuZF8yIC0gMSBdIGVxICdiJyApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkaWVuZF8ydCAgICAgID0gJGllbmRfMiAtIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlX2llbmRfMnQgPSAkdHlwZXNfdG9fZ29bJGllbmRfMnRdOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJHRoaXNfbGluZV9pc19zZW1pY29sb25fdGVybWluYXRlZCA9ICR0eXBlX2llbmRfMnQgZXEgJzsnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICAgICAjIFJlY29tYmluZSBTZWN0aW9uIDA6CiAgICAgICAgICAgICAgICAjIEV4YW1pbmUgdGhlIHNwZWNpYWwgdG9rZW4gam9pbmluZyB0aGlzIGxpbmUgcGFpciwgaWYgYW55LgogICAgICAgICAgICAgICAgIyBQdXQgYXMgbWFueSB0ZXN0cyBpbiB0aGlzIHNlY3Rpb24gdG8gYXZvaWQgZHVwbGljYXRlIGNvZGUgYW5kCiAgICAgICAgICAgICAgICAjIHRvIG1ha2UgZm9ybWF0dGluZyBpbmRlcGVuZGVudCBvZiB3aGV0aGVyIGJyZWFrcyBhcmUgdG8gdGhlCiAgICAgICAgICAgICAgICAjIGxlZnQgb3IgcmlnaHQgb2YgYW4gb3BlcmF0b3IuCiAgICAgICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgICAgICAgICAgIG15ICgkaXRvaykgPSBAeyAkam9pbnRbJG5dIH07CiAgICAgICAgICAgICAgICBpZiAoJGl0b2spIHsKCiAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogUGF0Y2ggLSBtYXkgbm90IGJlIG5lY2Vzc2FyeQogICAgICAgICAgICAgICAgICAgIG15ICRpZW5kXzEgPQogICAgICAgICAgICAgICAgICAgICAgICAkdHlwZV9pZW5kXzEgZXEgJ2InCiAgICAgICAgICAgICAgICAgICAgICA/ICRpZW5kXzEgLSAxCiAgICAgICAgICAgICAgICAgICAgICA6ICRpZW5kXzE7CgogICAgICAgICAgICAgICAgICAgIG15ICRpZW5kXzIgPQogICAgICAgICAgICAgICAgICAgICAgICAkdHlwZV9pZW5kXzIgZXEgJ2InCiAgICAgICAgICAgICAgICAgICAgICA/ICRpZW5kXzIgLSAxCiAgICAgICAgICAgICAgICAgICAgICA6ICRpZW5kXzI7CiAgICAgICAgICAgICAgICAgICAgIyMgRU5EIFBBVENICgogICAgICAgICAgICAgICAgICAgIG15ICR0eXBlID0gJHR5cGVzX3RvX2dvWyRpdG9rXTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkdHlwZSBlcSAnOicgKSB7CgogICAgICAgICAgICAgICAgICAgIyBkbyBub3Qgam9pbiBhdCBhIGNvbG9uIHVubGVzcyBpdCBkaXNvYmV5cyB0aGUgYnJlYWsgcmVxdWVzdAogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRpdG9rIGVxICRpZW5kXzEgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyAkd2FudF9icmVha19iZWZvcmV7JHR5cGV9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxlYWRpbmdfYW1wX2NvdW50Kys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IGlmICR3YW50X2JyZWFrX2JlZm9yZXskdHlwZX07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9ICMjIGVuZCBpZiAnOicKCiAgICAgICAgICAgICAgICAgICAgIyBoYW5kbGUgbWF0aCBvcGVyYXRvcnMgKyAtICogLwogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJGlzX21hdGhfb3B7JHR5cGV9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBDb21iaW5lIHRoZXNlIGxpbmVzIGlmIHRoaXMgbGluZSBpcyBhIHNpbmdsZQogICAgICAgICAgICAgICAgICAgICAgICAjIG51bWJlciwgb3IgaWYgaXQgaXMgYSBzaG9ydCB0ZXJtIHdpdGggc2FtZQogICAgICAgICAgICAgICAgICAgICAgICAjIG9wZXJhdG9yIGFzIHRoZSBwcmV2aW91cyBsaW5lLiAgRm9yIGV4YW1wbGUsIGluCiAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIGZvbGxvd2luZyBjb2RlIHdlIHdpbGwgY29tYmluZSBhbGwgb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvcnQgdGVybXMgJEEsICRCLCAkQywgJEQsICRFLCAkRiwgdG9nZXRoZXIKICAgICAgICAgICAgICAgICAgICAgICAgIyBpbnN0ZWFkIG9mIGxlYXZpbmcgdGhlbSBvbmUgcGVyIGxpbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICMgIG15ICR0aW1lID0KICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAkQSAqICRCICogJEMgKiAkRCAqICRFICogJEYgKgogICAgICAgICAgICAgICAgICAgICAgICAjICAgICggMi4gKiAkZXBzICogJHNpZ21hICogJGFyZWEgKSAqCiAgICAgICAgICAgICAgICAgICAgICAgICMgICAgKCAxLiAvICR0Y29sZCoqMyAtIDEuIC8gJHRob3QqKjMgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBjYW4gYmUgaW1wb3J0YW50IGluIG1hdGgtaW50ZW5zaXZlIGNvZGUuCgogICAgICAgICAgICAgICAgICAgICAgICBteSAkZ29vZF9jb21ibzsKCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpdG9rcCAgPSBtaW4oICRpbmV4dF90b19nb1skaXRva10sICAkaWVuZF8yICk7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpdG9rcHAgPSBtaW4oICRpbmV4dF90b19nb1skaXRva3BdLCAkaWVuZF8yICk7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpdG9rbSAgPSBtYXgoICRpcHJldl90b19nb1skaXRva10sICAkaWJlZ18xICk7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpdG9rbW0gPSBtYXgoICRpcHJldl90b19nb1skaXRva21dLCAkaWJlZ18xICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGZvciBhIG51bWJlciBvbiB0aGUgcmlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bJGl0b2twXSBlcSAnbicgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvayBpZiBub3RoaW5nIGVsc2Ugb24gcmlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJGl0b2twID09ICRpZW5kXzIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGdvb2RfY29tYm8gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbG9vayBvbmUgbW9yZSB0b2tlbiB0byByaWdodC4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBva2F5IGlmIG1hdGggb3BlcmF0b3Igb3Igc29tZSB0ZXJtaW5hdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRnb29kX2NvbWJvID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCAkaXRva3BwID09ICRpZW5kXzIgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICRpc19tYXRoX29weyAkdHlwZXNfdG9fZ29bJGl0b2twcF0gfSApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkdHlwZXNfdG9fZ29bJGl0b2twcF0gPX4gL15bIyw7XSQvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGZvciBhIG51bWJlciBvbiB0aGUgbGVmdAogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEkZ29vZF9jb21ibyAmJiAkdHlwZXNfdG9fZ29bJGl0b2ttXSBlcSAnbicgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBva2F5IGlmIG5vdGhpbmcgZWxzZSB0byBsZWZ0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRpdG9rbSA9PSAkaWJlZ18xICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRnb29kX2NvbWJvID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG90aGVyd2lzZSBsb29rIG9uZSBtb3JlIHRva2VuIHRvIGxlZnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9rYXkgaWYgbWF0aCBvcGVyYXRvciwgY29tbWEsIG9yIGFzc2lnbm1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZ29vZF9jb21ibyA9ICggJGl0b2ttbSA9PSAkaWJlZ18xICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICggJGlzX21hdGhfb3B7ICR0eXBlc190b19nb1skaXRva21tXSB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICR0eXBlc190b19nb1skaXRva21tXSA9fiAvXlssXSQvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRpc19hc3NpZ25tZW50eyAkdHlwZXNfdG9fZ29bJGl0b2ttbV0gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgIyBsb29rIGZvciBhIHNpbmdsZSBzaG9ydCB0b2tlbiBlaXRoZXIgc2lkZSBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIyBvcGVyYXRvcgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEkZ29vZF9jb21ibyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFNsaWdodCBhZGp1c3RtZW50IGZhY3RvciB0byBtYWtlIHJlc3VsdHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaW5kZXBlbmRlbnQgb2YgYnJlYWsgYmVmb3JlIG9yIGFmdGVyIG9wZXJhdG9yIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGxvbmcgc3VtbWVkIGxpc3RzLiAgKEFuIG9wZXJhdG9yIGFuZCBhIHNwYWNlIG1ha2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdHdvIHNwYWNlcykuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkdHdvID0gKCAkaXRvayBlcSAkaWVuZF8xICkgPyAyIDogMDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZ29vZF9jb21ibyA9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG51bWJlcnMgb3IgaWQncyBvbiBib3RoIHNpZGVzIG9mIHRoaXMgam9pbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGVzX3RvX2dvWyRpdG9rcF0gPX4gL15baW5dJC8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHR5cGVzX3RvX2dvWyRpdG9rbV0gPX4gL15baW5dJC8KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb25lIG9mIHRoZSB0d28gbGluZXMgbXVzdCBiZSBzaG9ydDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBubyBtb3JlIHRoYW4gMiBub25ibGFuayB0b2tlbnMgcmlnaHQgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBqb2ludAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXRva3BwID09ICRpZW5kXzIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvcnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdG9rZW5fc2VxdWVuY2VfbGVuZ3RoKCAkaXRva3AsICRpZW5kXzIgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ICR0d28gKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkck9wdHNfc2hvcnRfY29uY2F0ZW5hdGlvbl9pdGVtX2xlbmd0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gbW9yZSB0aGFuIDIgbm9uYmxhbmsgdG9rZW5zIGxlZnQgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBqb2ludAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXRva21tID09ICRpYmVnXzEKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvcnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdG9rZW5fc2VxdWVuY2VfbGVuZ3RoKCAkaWJlZ18xLCAkaXRva20gKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IDIgLSAkdHdvICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJPcHRzX3Nob3J0X2NvbmNhdGVuYXRpb25faXRlbV9sZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGtlZXAgcHVyZSB0ZXJtczsgZG9uJ3QgbWl4ICstIHdpdGggKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgISgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXNfcGx1c19taW51c3skdHlwZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoICAgJGlzX211bHRfZGl2eyAkdHlwZXNfdG9fZ29bJGl0b2ttbV0gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkaXNfbXVsdF9kaXZ7ICR0eXBlc190b19nb1skaXRva3BwXSB9ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpc19tdWx0X2RpdnskdHlwZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoICAgJGlzX3BsdXNfbWludXN7ICR0eXBlc190b19nb1skaXRva21tXSB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRpc19wbHVzX21pbnVzeyAkdHlwZXNfdG9fZ29bJGl0b2twcF0gfSApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgIyBpdCBpcyBhbHNvIGdvb2QgdG8gY29tYmluZSBpZiB3ZSBjYW4gcmVkdWNlIHRvIDIgbGluZXMKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhJGdvb2RfY29tYm8gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbmRleCBvbiBvdGhlciBsaW5lIHdoZXJlIHNhbWUgdG9rZW4gd291bGQgYmUgaW4gYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBsb25nIGNoYWluLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGlvdGhlciA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggJGl0b2sgPT0gJGllbmRfMSApID8gJGllbmRfMiA6ICRpYmVnXzE7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGdvb2RfY29tYm8gPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbiA9PSAyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICRuID09ICRubWF4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICR0eXBlc190b19nb1skaW90aGVyXSBuZSAkdHlwZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCB1bmxlc3MgKCRnb29kX2NvbWJvKTsKCiAgICAgICAgICAgICAgICAgICAgfSAjIyBlbmQgbWF0aAoKICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRpc19hbXBfYW1weyR0eXBlfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgIyNUQkQKICAgICAgICAgICAgICAgICAgICB9ICMjIGVuZCAmJiwgfHwKCiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkaXNfYXNzaWdubWVudHskdHlwZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICMjVEJECiAgICAgICAgICAgICAgICAgICAgfSAjIyBlbmQgYXNzaWdubWVudAogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICAgICAjIFJlY29tYmluZSBTZWN0aW9uIDE6CiAgICAgICAgICAgICAgICAjIEpvaW4gd2VsZGVkIG5lc3RlZCBjb250YWluZXJzIGltbWVkaWF0ZWx5CiAgICAgICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgaWYgKCAgIHdlbGRfbGVuX3JpZ2h0X3RvX2dvKCRpZW5kXzEpCiAgICAgICAgICAgICAgICAgICAgfHwgd2VsZF9sZW5fbGVmdF90b19nbygkaWJlZ18yKSApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJG5fYmVzdCA9ICRuOwoKICAgICAgICAgICAgICAgICAgICAjIE9sZCBjb2RpbmcgYWx0ZXJuYXRlZCBzd2VlcCBkaXJlY3Rpb246IG5vIGxvbmdlciBuZWVkZWQKICAgICAgICAgICAgICAgICAgICAjICRyZXZlcnNlID0gMSAtICRyZXZlcnNlOwogICAgICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkcmV2ZXJzZSA9IDA7CgogICAgICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgICMgUmVjb21iaW5lIFNlY3Rpb24gMjoKICAgICAgICAgICAgICAgICMgRXhhbWluZSB0b2tlbiBhdCAkaWVuZF8xIChyaWdodCBlbmQgb2YgZmlyc3QgbGluZSBvZiBwYWlyKQogICAgICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgICAgICAgICAgICAjIGFuIGlzb2xhdGVkICd9JyBtYXkgam9pbiB3aXRoIGEgJzsnIHRlcm1pbmF0ZWQgc2VnbWVudAogICAgICAgICAgICAgICAgaWYgKCAkdHlwZV9pZW5kXzEgZXEgJ30nICkgewoKICAgICAgICAgICAgICAgICAgICAjIENoZWNrIGZvciBjYXNlcyB3aGVyZSBjb21iaW5pbmcgYSBzZW1pY29sb24gdGVybWluYXRlZAogICAgICAgICAgICAgICAgICAgICMgc3RhdGVtZW50IHdpdGggYSBwcmV2aW91cyBpc29sYXRlZCBjbG9zaW5nIHBhcmVuIHdpbGwKICAgICAgICAgICAgICAgICAgICAjIGFsbG93IHRoZSBjb21iaW5lZCBsaW5lIHRvIGJlIG91dGRlbnRlZC4gIFRoaXMgaXMKICAgICAgICAgICAgICAgICAgICAjIGdlbmVyYWxseSBhIGdvb2QgbW92ZS4gIEZvciBleGFtcGxlLCB3ZSBjYW4gam9pbiB1cAogICAgICAgICAgICAgICAgICAgICMgdGhlIGxhc3QgdHdvIGxpbmVzIGhlcmU6CiAgICAgICAgICAgICAgICAgICAgIyAgKAogICAgICAgICAgICAgICAgICAgICMgICAgICAkZGV2LCAgJGlubywgICAkbW9kZSwgICRubGluaywgJHVpZCwgICAgICRnaWQsICRyZGV2LAogICAgICAgICAgICAgICAgICAgICMgICAgICAkc2l6ZSwgJGF0aW1lLCAkbXRpbWUsICRjdGltZSwgJGJsa3NpemUsICRibG9ja3MKICAgICAgICAgICAgICAgICAgICAjICAgICkKICAgICAgICAgICAgICAgICAgICAjICAgID0gc3RhdCgkZmlsZSk7CiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgdG8gZ2V0OgogICAgICAgICAgICAgICAgICAgICMgICgKICAgICAgICAgICAgICAgICAgICAjICAgICAgJGRldiwgICRpbm8sICAgJG1vZGUsICAkbmxpbmssICR1aWQsICAgICAkZ2lkLCAkcmRldiwKICAgICAgICAgICAgICAgICAgICAjICAgICAgJHNpemUsICRhdGltZSwgJG10aW1lLCAkY3RpbWUsICRibGtzaXplLCAkYmxvY2tzCiAgICAgICAgICAgICAgICAgICAgIyAgKSA9IHN0YXQoJGZpbGUpOwogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIHdoaWNoIG1ha2VzIHRoZSBwYXJlbnMgbGluZSB1cC4KICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyBBbm90aGVyIGV4YW1wbGUsIGZyb20gSm9lIE1hdGFyYXp6bywgcHJvYmFibHkgbG9va3MgYmVzdAogICAgICAgICAgICAgICAgICAgICMgd2l0aCB0aGUgJ29yJyBjbGF1c2UgYXBwZW5kZWQgdG8gdGhlIHRyYWlsaW5nIHBhcmVuOgogICAgICAgICAgICAgICAgICAgICMgICRzZWxmLT5zb21lX21ldGhvZCgKICAgICAgICAgICAgICAgICAgICAjICAgICAgUEFSQU0xID0+ICdmb28nLAogICAgICAgICAgICAgICAgICAgICMgICAgICBQQVJBTTIgPT4gJ2JhcicKICAgICAgICAgICAgICAgICAgICAjICApIG9yIGRpZSAiU29tZV9tZXRob2QgZGlkbid0IHdvcmsiOwogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIEJ1dCB3ZSBkbyBub3Qgd2FudCB0byBkbyB0aGlzIGZvciBzb21ldGhpbmcgbGlrZSB0aGUgLWxwCiAgICAgICAgICAgICAgICAgICAgIyBvcHRpb24gd2hlcmUgdGhlIHBhcmVuIGlzIG5vdCBvdXRkZW50YWJsZSBiZWNhdXNlIHRoZQogICAgICAgICAgICAgICAgICAgICMgdHJhaWxpbmcgY2xhdXNlIHdpbGwgYmUgZmFyIHRvIHRoZSByaWdodC4KICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyBUaGUgbG9naWMgaGVyZSBpcyBzeW5jaHJvbml6ZWQgd2l0aCB0aGUgbG9naWMgaW4gc3ViCiAgICAgICAgICAgICAgICAgICAgIyBzdWIgc2V0X2FkanVzdGVkX2luZGVudGF0aW9uLCB3aGljaCBhY3R1YWxseSBkb2VzCiAgICAgICAgICAgICAgICAgICAgIyB0aGUgb3V0ZGVudGluZy4KICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgJHNraXBfU2VjdGlvbl8zIHx8PSAkdGhpc19saW5lX2lzX3NlbWljb2xvbl90ZXJtaW5hdGVkCgogICAgICAgICAgICAgICAgICAgICAgIyBvbmx5IG9uZSB0b2tlbiBvbiBsYXN0IGxpbmUKICAgICAgICAgICAgICAgICAgICAgICYmICRpYmVnXzEgPT0gJGllbmRfMQoKICAgICAgICAgICAgICAgICAgICAgICMgbXVzdCBiZSBzdHJ1Y3R1cmFsIHBhcmVuCiAgICAgICAgICAgICAgICAgICAgICAmJiAkdG9rZW5zX3RvX2dvWyRpZW5kXzFdIGVxICcpJwoKICAgICAgICAgICAgICAgICAgICAgICMgc3R5bGUgbXVzdCBhbGxvdyBvdXRkZW50aW5nLAogICAgICAgICAgICAgICAgICAgICAgJiYgISRjbG9zaW5nX3Rva2VuX2luZGVudGF0aW9ueycpJ30KCiAgICAgICAgICAgICAgICAgICAgICAjIG9ubHkgbGVhZGluZyAnJiYnLCAnfHwnLCBhbmQgJzonIGlmIG5vIG90aGVycyBzZWVuCiAgICAgICAgICAgICAgICAgICAgICAjIChidXQgbm90ZTogb3VyIGNvdW50IG1hZGUgYmVsb3cgY291bGQgYmUgd3JvbmcKICAgICAgICAgICAgICAgICAgICAgICMgZHVlIHRvIGludGVydmVuaW5nIGNvbW1lbnRzKQogICAgICAgICAgICAgICAgICAgICAgJiYgKCAkbGVhZGluZ19hbXBfY291bnQgPT0gMAogICAgICAgICAgICAgICAgICAgICAgICB8fCAkdHlwZV9pYmVnXzIgIX4gL14oOnxcJlwmfFx8XHwpJC8gKQoKICAgICAgICAgICAgICAgICAgICAgICMgYnV0IGxlYWRpbmcgY29sb25zIHByb2JhYmx5IGxpbmUgdXAgd2l0aCBhCiAgICAgICAgICAgICAgICAgICAgICAjIHByZXZpb3VzIGNvbG9uIG9yIHF1ZXN0aW9uIChjb3VudCBjb3VsZCBiZSB3cm9uZykuCiAgICAgICAgICAgICAgICAgICAgICAmJiAkdHlwZV9pYmVnXzIgbmUgJzonCgogICAgICAgICAgICAgICAgICAgICAgIyBvbmx5IG9uZSBzdGVwIGluIGRlcHRoIGFsbG93ZWQuICB0aGlzIGxpbmUgbXVzdCBub3QKICAgICAgICAgICAgICAgICAgICAgICMgYmVnaW4gd2l0aCBhICcpJyBpdHNlbGYuCiAgICAgICAgICAgICAgICAgICAgICAmJiAoICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpZW5kXzFdID09CiAgICAgICAgICAgICAgICAgICAgICAgICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpZW5kXzJdICsgMSApOwoKICAgICAgICAgICAgICAgICAgICAjIFlWRVMgcGF0Y2ggMiBvZiAyOgogICAgICAgICAgICAgICAgICAgICMgQWxsb3cgY3VkZGxlZCBldmFsIGNoYWlucywgbGlrZSB0aGlzOgogICAgICAgICAgICAgICAgICAgICMgICBldmFsIHsKICAgICAgICAgICAgICAgICAgICAjICAgICAgICNTVFVGRjsKICAgICAgICAgICAgICAgICAgICAjICAgICAgIDE7ICMgcmV0dXJuIHRydWUKICAgICAgICAgICAgICAgICAgICAjICAgfSBvciBkbyB7CiAgICAgICAgICAgICAgICAgICAgIyAgICAgICAjaGFuZGxlIGVycm9yCiAgICAgICAgICAgICAgICAgICAgIyAgIH07CiAgICAgICAgICAgICAgICAgICAgIyBUaGlzIHBhdGNoIHdvcmtzIHRvZ2V0aGVyIHdpdGggYSBwYXRjaCBpbgogICAgICAgICAgICAgICAgICAgICMgc2V0dGluZyBhZGp1c3RlZCBpbmRlbnRhdGlvbiAod2hlcmUgdGhlIGNsb3NpbmcgZXZhbAogICAgICAgICAgICAgICAgICAgICMgYnJhY2UgaXMgb3V0ZGVudGVkIGlmIHBvc3NpYmxlKS4KICAgICAgICAgICAgICAgICAgICAjIFRoZSBwcm9ibGVtIGlzIHRoYXQgYW4gJ2V2YWwnIGJsb2NrIGhhcyBjb250aW51YXRpb24KICAgICAgICAgICAgICAgICAgICAjIGluZGVudGF0aW9uIGFuZCBpdCBsb29rcyBiZXR0ZXIgdG8gdW5kbyBpdCBpbiBzb21lCiAgICAgICAgICAgICAgICAgICAgIyBjYXNlcy4gIElmIHdlIGRvIG5vdCB1c2UgdGhpcyBwYXRjaCB3ZSB3b3VsZCBnZXQ6CiAgICAgICAgICAgICAgICAgICAgIyAgIGV2YWwgewogICAgICAgICAgICAgICAgICAgICMgICAgICAgI1NUVUZGOwogICAgICAgICAgICAgICAgICAgICMgICAgICAgMTsgIyByZXR1cm4gdHJ1ZQogICAgICAgICAgICAgICAgICAgICMgICAgICAgfQogICAgICAgICAgICAgICAgICAgICMgICAgICAgb3IgZG8gewogICAgICAgICAgICAgICAgICAgICMgICAgICAgI2hhbmRsZSBlcnJvcgogICAgICAgICAgICAgICAgICAgICMgICAgIH07CiAgICAgICAgICAgICAgICAgICAgIyBUaGUgYWx0ZXJuYXRpdmUsIGZvciB1bmN1ZGRsZWQgc3R5bGUsIGlzIHRvIGNyZWF0ZQogICAgICAgICAgICAgICAgICAgICMgYSBwYXRjaCBpbiBzZXRfYWRqdXN0ZWRfaW5kZW50YXRpb24gd2hpY2ggdW5kb2VzCiAgICAgICAgICAgICAgICAgICAgIyB0aGUgaW5kZW50YXRpb24gb2YgYSBsZWFkaW5nIGxpbmUgbGlrZSAnb3IgZG8geycuCiAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGRvZXNuJ3Qgd29yayB3ZWxsIHdpdGggLWljYiB0aHJvdWdoCiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAkYmxvY2tfdHlwZV90b19nb1skaWVuZF8xXSBlcSAnZXZhbCcKICAgICAgICAgICAgICAgICAgICAgICAgJiYgISRyT3B0cy0+eydsaW5lLXVwLXBhcmVudGhlc2VzJ30KICAgICAgICAgICAgICAgICAgICAgICAgJiYgISRyT3B0cy0+eydpbmRlbnQtY2xvc2luZy1icmFjZSd9CiAgICAgICAgICAgICAgICAgICAgICAgICYmICR0b2tlbnNfdG9fZ29bJGllbmRfMl0gZXEgJ3snCiAgICAgICAgICAgICAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICggJHR5cGVfaWJlZ18yID1+IC9eKHxcJlwmfFx8XHwpJC8gKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKCAgICR0eXBlX2liZWdfMiBlcSAnaycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkaXNfYW5kX29yeyAkdG9rZW5zX3RvX2dvWyRpYmVnXzJdIH0gKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJGlzX2lmX3VubGVzc3sgJHRva2Vuc190b19nb1skaWJlZ18yXSB9CiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRza2lwX1NlY3Rpb25fMyB8fD0gMTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIG5leHQKICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyAoCiAgICAgICAgICAgICAgICAgICAgICAgICRza2lwX1NlY3Rpb25fMwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBoYW5kbGUgJy4nIGFuZCAnPycgc3BlY2lhbGx5IGJlbG93CiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICggJHR5cGVfaWJlZ18yID1+IC9eW1wuXD9dJC8gKQogICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBlbHNpZiAoICR0eXBlX2llbmRfMSBlcSAneycgKSB7CgogICAgICAgICAgICAgICAgICAgICMgWVZFUwogICAgICAgICAgICAgICAgICAgICMgaG9ub3IgYnJlYWtzIGF0IG9wZW5pbmcgYnJhY2UKICAgICAgICAgICAgICAgICAgICAjIEFkZGVkIHRvIHByZXZlbnQgcmVjb21iaW5pbmcgc29tZXRoaW5nIGxpa2UgdGhpczoKICAgICAgICAgICAgICAgICAgICAjICB9IHx8IGV2YWwgeyBwYWNrYWdlIG1haW47CiAgICAgICAgICAgICAgICAgICAgbmV4dCBpZiAkZm9yY2VkX2JyZWFrcG9pbnRfdG9fZ29bJGllbmRfMV07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBkbyBub3QgcmVjb21iaW5lIGxpbmVzIHdpdGggZW5kaW5nICYmLCB8fCwKICAgICAgICAgICAgICAgIGVsc2lmICggJGlzX2FtcF9hbXB7JHR5cGVfaWVuZF8xfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyAkd2FudF9icmVha19iZWZvcmV7JHR5cGVfaWVuZF8xfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIElkZW50aWZ5IGFuZCByZWNvbWJpbmUgYSBicm9rZW4gPy86IGNoYWluCiAgICAgICAgICAgICAgICBlbHNpZiAoICR0eXBlX2llbmRfMSBlcSAnPycgKSB7CgogICAgICAgICAgICAgICAgICAgICMgRG8gbm90IHJlY29tYmluZSBkaWZmZXJlbnQgbGV2ZWxzCiAgICAgICAgICAgICAgICAgICAgbmV4dAogICAgICAgICAgICAgICAgICAgICAgaWYgKCAkbGV2ZWxzX3RvX2dvWyRpYmVnXzFdIG5lICRsZXZlbHNfdG9fZ29bJGliZWdfMl0gKTsKCiAgICAgICAgICAgICAgICAgICAgIyBkbyBub3QgcmVjb21iaW5lIHVubGVzcyBuZXh0IGxpbmUgZW5kcyBpbiA6CiAgICAgICAgICAgICAgICAgICAgbmV4dCB1bmxlc3MgJHR5cGVfaWVuZF8yIGVxICc6JzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGZvciBsaW5lcyBlbmRpbmcgaW4gYSBjb21tYS4uLgogICAgICAgICAgICAgICAgZWxzaWYgKCAkdHlwZV9pZW5kXzEgZXEgJywnICkgewoKICAgICAgICAgICAgICAgICAgICAjIERvIG5vdCByZWNvbWJpbmUgYXQgY29tbWEgd2hpY2ggaXMgZm9sbG93aW5nIHRoZQogICAgICAgICAgICAgICAgICAgICMgaW5wdXQgYmlhcy4KICAgICAgICAgICAgICAgICAgICAjIFRPRE86IG1pZ2h0IGJlIGJlc3QgdG8gbWFrZSBhIHNwZWNpYWwgZmxhZwogICAgICAgICAgICAgICAgICAgIG5leHQgaWYgKCAkb2xkX2JyZWFrcG9pbnRfdG9fZ29bJGllbmRfMV0gKTsKCiAgICAgICAgICAgICAgICAgIyBhbiBpc29sYXRlZCAnfSwnIG1heSBqb2luIHdpdGggYW4gaWRlbnRpZmllciArICc7JwogICAgICAgICAgICAgICAgICMgdGhpcyBpcyB1c2VmdWwgZm9yIHRoZSBjbGFzcyBvZiBhICdibGVzcycgc3RhdGVtZW50IChibGVzcy50KQogICAgICAgICAgICAgICAgICAgIGlmICggICAkdHlwZV9pYmVnXzEgZXEgJ30nCiAgICAgICAgICAgICAgICAgICAgICAgICYmICR0eXBlX2liZWdfMiBlcSAnaScgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dAogICAgICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyAoICggJGliZWdfMSA9PSAoICRpZW5kXzEgLSAxICkgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCAkaWVuZF8yID09ICggJGliZWdfMiArIDEgKSApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkdGhpc19saW5lX2lzX3NlbWljb2xvbl90ZXJtaW5hdGVkICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIG92ZXJyaWRlIGJyZWFrcG9pbnQKICAgICAgICAgICAgICAgICAgICAgICAgJGZvcmNlZF9icmVha3BvaW50X3RvX2dvWyRpZW5kXzFdID0gMDsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgYnV0IG90aGVyd2lzZSAuLgogICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBkbyBub3QgcmVjb21iaW5lIGFmdGVyIGEgY29tbWEgdW5sZXNzIHRoaXMgd2lsbCBsZWF2ZQogICAgICAgICAgICAgICAgICAgICAgICAjIGp1c3QgMSBtb3JlIGxpbmUKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCB1bmxlc3MgKCAkbiArIDEgPj0gJG5tYXggKTsKCiAgICAgICAgICAgICAgICAgICAgIyBkbyBub3QgcmVjb21iaW5lIGlmIHRoZXJlIGlzIGEgY2hhbmdlIGluIGluZGVudGF0aW9uIGRlcHRoCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGV2ZWxzX3RvX2dvWyRpZW5kXzFdICE9ICRsZXZlbHNfdG9fZ29bJGllbmRfMl0gKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgZG8gbm90IHJlY29tYmluZSBhICJjb21wbGV4IGV4cHJlc3Npb24iIGFmdGVyIGEKICAgICAgICAgICAgICAgICAgICAgICAgIyBjb21tYS4gICJjb21wbGV4IiBtZWFucyBubyBwYXJlbnMuCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRzYXdfcGFyZW47CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGlpICggJGliZWdfMiAuLiAkaWVuZF8yICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkdG9rZW5zX3RvX2dvWyRpaV0gZXEgJygnICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzYXdfcGFyZW4gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBpZiAkc2F3X3BhcmVuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIG9wZW5pbmcgcGFyZW4uLgogICAgICAgICAgICAgICAgZWxzaWYgKCAkdHlwZV9pZW5kXzEgZXEgJygnICkgewoKICAgICAgICAgICAgICAgICAgICAjIE5vIGxvbmdlciBkb2luZyB0aGlzCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZWxzaWYgKCAkdHlwZV9pZW5kXzEgZXEgJyknICkgewoKICAgICAgICAgICAgICAgICAgICAjIE5vIGxvbmdlciBkb2luZyB0aGlzCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBrZWVwIGEgdGVybWluYWwgZm9yLXNlbWljb2xvbgogICAgICAgICAgICAgICAgZWxzaWYgKCAkdHlwZV9pZW5kXzEgZXEgJ2YnICkgewogICAgICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBpZiAnPScgYXQgZW5kIG9mIGxpbmUgLi4uCiAgICAgICAgICAgICAgICBlbHNpZiAoICRpc19hc3NpZ25tZW50eyR0eXBlX2llbmRfMX0gKSB7CgogICAgICAgICAgICAgICAgICAgICMga2VlcCBicmVhayBhZnRlciA9IGlmIGl0IHdhcyBpbiBpbnB1dCBzdHJlYW0KICAgICAgICAgICAgICAgICAgICAjIHRoaXMgaGVscHMgcHJldmVudCAnYmxpbmtlcnMnCiAgICAgICAgICAgICAgICAgICAgbmV4dCBpZiAkb2xkX2JyZWFrcG9pbnRfdG9fZ29bJGllbmRfMV0KCiAgICAgICAgICAgICAgICAgICAgICAjIGRvbid0IHN0cmFuZCBhbiBpc29sYXRlZCAnPScKICAgICAgICAgICAgICAgICAgICAgICYmICRpZW5kXzEgIT0gJGliZWdfMTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJGlzX3Nob3J0X3F1b3RlID0KICAgICAgICAgICAgICAgICAgICAgICggICAgICAkdHlwZV9pYmVnXzIgZXEgJ1EnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGliZWdfMiA9PSAkaWVuZF8yCiAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdG9rZW5fc2VxdWVuY2VfbGVuZ3RoKCAkaWJlZ18yLCAkaWJlZ18yICkgPAogICAgICAgICAgICAgICAgICAgICAgICAgICRyT3B0c19zaG9ydF9jb25jYXRlbmF0aW9uX2l0ZW1fbGVuZ3RoICk7CiAgICAgICAgICAgICAgICAgICAgbXkgJGlzX3Rlcm5hcnkgPQogICAgICAgICAgICAgICAgICAgICAgKCAkdHlwZV9pYmVnXzEgZXEgJz8nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCAkaWJlZ18zID49IDAgJiYgJHR5cGVzX3RvX2dvWyRpYmVnXzNdIGVxICc6JyApICk7CgogICAgICAgICAgICAgICAgICAgICMgYWx3YXlzIGpvaW4gYW4gaXNvbGF0ZWQgJz0nLCBhIHNob3J0IHF1b3RlLCBvciBpZiB0aGlzCiAgICAgICAgICAgICAgICAgICAgIyB3aWxsIHB1dCA/LzogYXQgc3RhcnQgb2YgYWRqYWNlbnQgbGluZXMKICAgICAgICAgICAgICAgICAgICBpZiAoICAgJGliZWdfMSAhPSAkaWVuZF8xCiAgICAgICAgICAgICAgICAgICAgICAgICYmICEkaXNfc2hvcnRfcXVvdGUKICAgICAgICAgICAgICAgICAgICAgICAgJiYgISRpc190ZXJuYXJ5ICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQKICAgICAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHVubGVzcyB3ZSBjYW4gcmVkdWNlIHRoaXMgdG8gdHdvIGxpbmVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5tYXggPCAkbiArIDIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvciB0aHJlZSBsaW5lcywgdGhlIGxhc3Qgd2l0aCBhIGxlYWRpbmcgc2VtaWNvbG9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKCAgICRubWF4ID09ICRuICsgMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkdHlwZXNfdG9fZ29bJGliZWdfbm1heF0gZXEgJzsnICkKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvciB0aGUgbmV4dCBsaW5lIGVuZHMgd2l0aCBhIGhlcmUgZG9jCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJHR5cGVfaWVuZF8yIGVxICdoJwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgdGhlIG5leHQgbGluZSBlbmRzIGluIGFuIG9wZW4gcGFyZW4gb3IgYnJhY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYW5kIHRoZSBicmVhayBoYXNuJ3QgYmVlbiBmb3JjZWQgW2RpbWEudF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoICAhJGZvcmNlZF9icmVha3BvaW50X3RvX2dvWyRpZW5kXzFdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICR0eXBlX2llbmRfMiBlcSAneycgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZG8gbm90IHJlY29tYmluZSBpZiB0aGUgdHdvIGxpbmVzIG1pZ2h0IGFsaWduIHdlbGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGhpcyBpcyBhIHZlcnkgYXBwcm94aW1hdGUgdGVzdCBmb3IgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBSVCMxMjc2MzMgLSB0aGUgbGVhZGluZyB0b2tlbnMgYXJlIG5vdCBvcGVyYXRvcnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICR0eXBlX2liZWdfMiBuZSAkdG9rZW5zX3RvX2dvWyRpYmVnXzJdICkKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvciB0aGV5IGFyZSBkaWZmZXJlbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoICAgJGliZWdfMyA+PSAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICR0eXBlX2liZWdfMiBuZSAkdHlwZXNfdG9fZ29bJGliZWdfM10gKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBSZWNvbWJpbmUgaWYgd2UgY2FuIG1ha2UgdHdvIGxpbmVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbm1heCA+PSAkbiArIDIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIC1scCB1c2VycyBvZnRlbiBwcmVmZXIgdGhpczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIG15ICR0aXRsZSA9IGZ1bmN0aW9uKCRlbnYsICRlbnYsICRzeXNhcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgImJ1YmJhIEJvcnJvd2VyIEVudHJ5Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICBzbyB3ZSB3aWxsIHJlY29tYmluZSBpZiAtbHAgaXMgdXNlZCB3ZSBoYXZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICBlbmRpbmcgY29tbWEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICggICEkck9wdHNfbGluZV91cF9wYXJlbnRoZXNlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICR0eXBlX2llbmRfMiBuZSAnLCcgKQogICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvdGhlcndpc2UsIHNjYW4gdGhlIHJocyBsaW5lIHVwIHRvIGxhc3QgdG9rZW4gZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY29tcGxleGl0eS4gIE5vdGUgdGhhdCB3ZSBhcmUgbm90IGNvdW50aW5nIHRoZSBsYXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdG9rZW4gaW4gY2FzZSBpdCBpcyBhbiBvcGVuaW5nIHBhcmVuLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHR2ICAgID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRkZXB0aCA9ICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpYmVnXzJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkaSAoICRpYmVnXzIgKyAxIC4uICRpZW5kXzIgLSAxICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGldICE9ICRkZXB0aCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR2Kys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgaWYgKCAkdHYgPiAxICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZXB0aCA9ICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAjIG9rIHRvIHJlY29tYmluZSBpZiBubyBsZXZlbCBjaGFuZ2VzIGJlZm9yZSBsYXN0IHRva2VuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICR0diA+IDAgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlLCBkbyBub3QgcmVjb21iaW5lIGlmIG1vcmUgdGhhbiB0d28KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGxldmVsIGNoYW5nZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBpZiAoICR0diA+IDEgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgdG90YWwgY29tcGxleGl0eSBvZiB0aGUgdHdvIGFkamFjZW50IGxpbmVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGhhdCB3aWxsIG9jY3VyIGlmIHdlIGRvIHRoaXMgam9pbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpc3RvcCA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICRuIDwgJG5tYXggKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAkcmlfZW5kLT5bICRuICsgMSBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRpZW5kXzI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkaSAoICRpZW5kXzIgLi4gJGlzdG9wICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpXSAhPSAkZGVwdGggKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHYrKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgaWYgKCAkdHYgPiAyICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRlcHRoID0gJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgZG8gbm90IHJlY29tYmluZSBpZiB0b3RhbCBpcyBtb3JlIHRoYW4gMiBsZXZlbCBjaGFuZ2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBpZiAoICR0diA+IDIgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgdW5sZXNzICggJHRva2Vuc190b19nb1skaWJlZ18yXSA9fiAvXltce1woXFtdJC8gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRmb3JjZWRfYnJlYWtwb2ludF90b19nb1skaWVuZF8xXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZm9yIGtleXdvcmRzLi4KICAgICAgICAgICAgICAgIGVsc2lmICggJHR5cGVfaWVuZF8xIGVxICdrJyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBtYWtlIG1ham9yIGNvbnRyb2wga2V5d29yZHMgc3RhbmQgb3V0CiAgICAgICAgICAgICAgICAgICAgIyAocmVjb21iaW5lLnQpCiAgICAgICAgICAgICAgICAgICAgbmV4dAogICAgICAgICAgICAgICAgICAgICAgaWYgKAoKICAgICAgICAgICAgICAgICAgICAgICAgIy9eKGxhc3R8bmV4dHxyZWRvfHJldHVybikkLwogICAgICAgICAgICAgICAgICAgICAgICAkaXNfbGFzdF9uZXh0X3JlZG9fcmV0dXJueyAkdG9rZW5zX3RvX2dvWyRpZW5kXzFdIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgYnV0IG9ubHkgaWYgZm9sbG93ZWQgYnkgbXVsdGlwbGUgbGluZXMKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJG4gPCAkbm1heAogICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkaXNfYW5kX29yeyAkdG9rZW5zX3RvX2dvWyRpZW5kXzFdIH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQKICAgICAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgJHdhbnRfYnJlYWtfYmVmb3JleyAkdG9rZW5zX3RvX2dvWyRpZW5kXzFdIH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICAgICAjIFJlY29tYmluZSBTZWN0aW9uIDM6CiAgICAgICAgICAgICAgICAjIEV4YW1pbmUgdG9rZW4gYXQgJGliZWdfMiAobGVmdCBlbmQgb2Ygc2Vjb25kIGxpbmUgb2YgcGFpcikKICAgICAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICAgICAgICAgICAgIyBqb2luIGxpbmVzIGlkZW50aWZpZWQgYWJvdmUgYXMgY2FwYWJsZSBvZgogICAgICAgICAgICAgICAgIyBjYXVzaW5nIGFuIG91dGRlbnRlZCBsaW5lIHdpdGggbGVhZGluZyBjbG9zaW5nIHBhcmVuCiAgICAgICAgICAgICAgICAjIE5vdGUgdGhhdCB3ZSBhcmUgc2tpcHBpbmcgdGhlIHJlc3Qgb2YgdGhpcyBzZWN0aW9uCiAgICAgICAgICAgICAgICAjIGFuZCB0aGUgcmVzdCBvZiB0aGUgbG9vcCB0byBkbyB0aGUgam9pbgogICAgICAgICAgICAgICAgaWYgKCRza2lwX1NlY3Rpb25fMykgewogICAgICAgICAgICAgICAgICAgICRmb3JjZWRfYnJlYWtwb2ludF90b19nb1skaWVuZF8xXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgJG5fYmVzdCA9ICRuOwogICAgICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBoYW5kbGUgbGluZXMgd2l0aCBsZWFkaW5nICYmLCB8fAogICAgICAgICAgICAgICAgZWxzaWYgKCAkaXNfYW1wX2FtcHskdHlwZV9pYmVnXzJ9ICkgewoKICAgICAgICAgICAgICAgICAgICAkbGVhZGluZ19hbXBfY291bnQrKzsKCiAgICAgICAgICAgICAgICAgICAgIyBvayB0byByZWNvbWJpbmUgaWYgaXQgZm9sbG93cyBhID8gb3IgOgogICAgICAgICAgICAgICAgICAgICMgYW5kIGlzIGZvbGxvd2VkIGJ5IGFuIG9wZW4gcGFyZW4uLgogICAgICAgICAgICAgICAgICAgIG15ICRvayA9CiAgICAgICAgICAgICAgICAgICAgICAoICAgICAgJGlzX3Rlcm5hcnl7JHR5cGVfaWJlZ18xfQogICAgICAgICAgICAgICAgICAgICAgICAgICYmICR0b2tlbnNfdG9fZ29bJGllbmRfMl0gZXEgJygnICkKCiAgICAgICAgICAgICAgICAgICAgIyBvciBpcyBmb2xsb3dlZCBieSBhID8gb3IgOiBhdCBzYW1lIGRlcHRoCiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgV2UgYXJlIGxvb2tpbmcgZm9yIHNvbWV0aGluZyBsaWtlIHRoaXMuIFdlIGNhbgogICAgICAgICAgICAgICAgICAgICMgcmVjb21iaW5lIHRoZSAmJiBsaW5lIHdpdGggdGhlIGxpbmUgYWJvdmUgdG8gbWFrZSB0aGUKICAgICAgICAgICAgICAgICAgICAjIHN0cnVjdHVyZSBtb3JlIGNsZWFyOgogICAgICAgICAgICAgICAgICAgICMgIHJldHVybgogICAgICAgICAgICAgICAgICAgICMgICAgZXhpc3RzICRHLT57QXR0cn0tPntWfQogICAgICAgICAgICAgICAgICAgICMgICAgJiYgZXhpc3RzICRHLT57QXR0cn0tPntWfS0+eyR1fQogICAgICAgICAgICAgICAgICAgICMgICAgPyAleyAkRy0+e0F0dHJ9LT57Vn0tPnskdX0gfQogICAgICAgICAgICAgICAgICAgICMgICAgOiAoKTsKICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyBXZSBzaG91bGQgcHJvYmFibHkgbGVhdmUgc29tZXRoaW5nIGxpa2UgdGhpcyBhbG9uZToKICAgICAgICAgICAgICAgICAgICAjICByZXR1cm4KICAgICAgICAgICAgICAgICAgICAjICAgICAgIGV4aXN0cyAkRy0+e0F0dHJ9LT57RX0KICAgICAgICAgICAgICAgICAgICAjICAgICYmIGV4aXN0cyAkRy0+e0F0dHJ9LT57RX0tPnskdX0KICAgICAgICAgICAgICAgICAgICAjICAgICYmIGV4aXN0cyAkRy0+e0F0dHJ9LT57RX0tPnskdX0tPnskdn0KICAgICAgICAgICAgICAgICAgICAjICAgID8gJXsgJEctPntBdHRyfS0+e0V9LT57JHV9LT57JHZ9IH0KICAgICAgICAgICAgICAgICAgICAjICAgIDogKCk7CiAgICAgICAgICAgICAgICAgICAgIyBzbyB0aGF0IHdlIGVpdGhlciBoYXZlIGFsbCBvZiB0aGUgJiYncyAob3IgfHwncykKICAgICAgICAgICAgICAgICAgICAjIG9uIG9uZSBsaW5lLCBhcyBpbiB0aGUgZmlyc3QgZXhhbXBsZSwgb3IgYnJlYWsgYXQKICAgICAgICAgICAgICAgICAgICAjIGVhY2ggb25lIGFzIGluIHRoZSBzZWNvbmQgZXhhbXBsZS4gIEhvd2V2ZXIsIGl0CiAgICAgICAgICAgICAgICAgICAgIyBzb21ldGltZXMgbWFrZXMgdGhpbmdzIHdvcnNlIHRvIGNoZWNrIGZvciB0aGlzIGJlY2F1c2UKICAgICAgICAgICAgICAgICAgICAjIGl0IHByZXZlbnRzIG11bHRpcGxlIHJlY29tYmluYXRpb25zLiAgU28gdGhpcyBpcyBub3QgZG9uZS4KICAgICAgICAgICAgICAgICAgICAgIHx8ICggJGliZWdfMyA+PSAwCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRpc190ZXJuYXJ5eyAkdHlwZXNfdG9fZ29bJGliZWdfM10gfQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkbmVzdGluZ19kZXB0aF90b19nb1skaWJlZ18zXSA9PQogICAgICAgICAgICAgICAgICAgICAgICAkbmVzdGluZ19kZXB0aF90b19nb1skaWJlZ18yXSApOwoKICAgICAgICAgICAgICAgICAgICBuZXh0IGlmICEkb2sgJiYgJHdhbnRfYnJlYWtfYmVmb3JleyR0eXBlX2liZWdfMn07CiAgICAgICAgICAgICAgICAgICAgJGZvcmNlZF9icmVha3BvaW50X3RvX2dvWyRpZW5kXzFdID0gMDsKCiAgICAgICAgICAgICAgICAgICAgIyB0d2VhayB0aGUgYm9uZCBzdHJlbmd0aCB0byBnaXZlIHRoaXMgam9pbnQgcHJpb3JpdHkKICAgICAgICAgICAgICAgICAgICAjIG92ZXIgPyBhbmQgOgogICAgICAgICAgICAgICAgICAgICRic190d2VhayA9IDAuMjU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBJZGVudGlmeSBhbmQgcmVjb21iaW5lIGEgYnJva2VuID8vOiBjaGFpbgogICAgICAgICAgICAgICAgZWxzaWYgKCAkdHlwZV9pYmVnXzIgZXEgJz8nICkgewoKICAgICAgICAgICAgICAgICAgICAjIERvIG5vdCByZWNvbWJpbmUgZGlmZmVyZW50IGxldmVscwogICAgICAgICAgICAgICAgICAgIG15ICRsZXYgPSAkbGV2ZWxzX3RvX2dvWyRpYmVnXzJdOwogICAgICAgICAgICAgICAgICAgIG5leHQgaWYgKCAkbGV2IG5lICRsZXZlbHNfdG9fZ29bJGliZWdfMV0gKTsKCiAgICAgICAgICAgICAgICAgICAgIyBEbyBub3QgcmVjb21iaW5lIGEgJz8nIGlmIGVpdGhlciBuZXh0IGxpbmUgb3IKICAgICAgICAgICAgICAgICAgICAjIHByZXZpb3VzIGxpbmUgZG9lcyBub3Qgc3RhcnQgd2l0aCBhICc6Jy4gIFRoZSByZWFzb25zCiAgICAgICAgICAgICAgICAgICAgIyBhcmUgdGhhdCAoMSkgbm8gYWxpZ25tZW50IG9mIHRoZSA/IHdpbGwgYmUgcG9zc2libGUKICAgICAgICAgICAgICAgICAgICAjIGFuZCAoMikgdGhlIGV4cHJlc3Npb24gaXMgc29tZXdoYXQgY29tcGxleCwgc28gdGhlCiAgICAgICAgICAgICAgICAgICAgIyAnPycgaXMgaGFyZGVyIHRvIHNlZSBpbiB0aGUgaW50ZXJpb3Igb2YgdGhlIGxpbmUuCiAgICAgICAgICAgICAgICAgICAgbXkgJGZvbGxvd3NfY29sb24gPSAkaWJlZ18xID49IDAgJiYgJHR5cGVfaWJlZ18xIGVxICc6JzsKICAgICAgICAgICAgICAgICAgICBteSAkcHJlY2VkZXNfY29sb24gPQogICAgICAgICAgICAgICAgICAgICAgJGliZWdfMyA+PSAwICYmICR0eXBlc190b19nb1skaWJlZ18zXSBlcSAnOic7CiAgICAgICAgICAgICAgICAgICAgbmV4dCB1bmxlc3MgKCAkZm9sbG93c19jb2xvbiB8fCAkcHJlY2VkZXNfY29sb24gKTsKCiAgICAgICAgICAgICAgICAgICAgIyB3ZSB3aWxsIGFsd2F5cyBjb21iaW5pbmcgYSA/IGxpbmUgZm9sbG93aW5nIGEgOiBsaW5lCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJGZvbGxvd3NfY29sb24gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIC4uLm90aGVyd2lzZSByZWNvbWJpbmUgb25seSBpZiBpdCBsb29rcyBsaWtlIGEgY2hhaW4uCiAgICAgICAgICAgICAgICAgICAgICAgICMgd2Ugd2lsbCBqdXN0IGxvb2sgYXQgYSBmZXcgbmVhcmJ5IGxpbmVzIHRvIHNlZSBpZgogICAgICAgICAgICAgICAgICAgICAgICAjIHRoaXMgbG9va3MgbGlrZSBhIGNoYWluLgogICAgICAgICAgICAgICAgICAgICAgICBteSAkbG9jYWxfY291bnQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRpaSAoICRpYmVnXzAsICRpYmVnXzEsICRpYmVnXzMsICRpYmVnXzQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbG9jYWxfY291bnQrKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAkaWkgPj0gMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkdHlwZXNfdG9fZ29bJGlpXSBlcSAnOicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGxldmVsc190b19nb1skaWldID09ICRsZXY7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCB1bmxlc3MgKCAkbG9jYWxfY291bnQgPiAxICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRmb3JjZWRfYnJlYWtwb2ludF90b19nb1skaWVuZF8xXSA9IDA7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBkbyBub3QgcmVjb21iaW5lIGxpbmVzIHdpdGggbGVhZGluZyAnLicKICAgICAgICAgICAgICAgIGVsc2lmICggJHR5cGVfaWJlZ18yIGVxICcuJyApIHsKICAgICAgICAgICAgICAgICAgICBteSAkaV9uZXh0X25vbmJsYW5rID0gbWluKCAkaW5leHRfdG9fZ29bJGliZWdfMl0sICRpZW5kXzIgKTsKICAgICAgICAgICAgICAgICAgICBuZXh0CiAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgKAoKICAgICAgICAgICAgICAgICAgICMgLi4uIHVubGVzcyB0aGVyZSBpcyBqdXN0IG9uZSBhbmQgd2UgY2FuIHJlZHVjZQogICAgICAgICAgICAgICAgICAgIyB0aGlzIHRvIHR3byBsaW5lcyBpZiB3ZSBkby4gIEZvciBleGFtcGxlLCB0aGlzCiAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAjICAkYm9keUEgLj0KICAgICAgICAgICAgICAgICAgICMgICAgJygkZHVtbXksICRwYXQpID0gJmdldF9uZXh0X3RleF9jbWQ7JyAuICckYXJncyAuPSAkcGF0OycKICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICMgIGxvb2tzIGJldHRlciB0aGFuIHRoaXM6CiAgICAgICAgICAgICAgICAgICAjICAkYm9keUEgLj0gJygkZHVtbXksICRwYXQpID0gJmdldF9uZXh0X3RleF9jbWQ7JwogICAgICAgICAgICAgICAgICAgIyAgICAuICckYXJncyAuPSAkcGF0OycKCiAgICAgICAgICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuID09IDIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICRuID09ICRubWF4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkdHlwZV9pYmVnXzEgbmUgJHR5cGVfaWJlZ18yCiAgICAgICAgICAgICAgICAgICAgICAgICkKCiAgICAgICAgICAgICAgICAgICAgICAgICMgIC4uLiBvciB0aGlzIHdvdWxkIHN0cmFuZCBhIHNob3J0IHF1b3RlICwgbGlrZSB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgICMgICAgICAgICAgICAgICAgLiAic29tZSBsb25nIHF1b3RlIgogICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICAgICAgIC4gIlxuIjsKCiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICggICAkdHlwZXNfdG9fZ29bJGlfbmV4dF9ub25ibGFua10gZXEgJ1EnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkaV9uZXh0X25vbmJsYW5rID49ICRpZW5kXzIgLSAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkdG9rZW5fbGVuZ3Roc190b19nb1skaV9uZXh0X25vbmJsYW5rXSA8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkck9wdHNfc2hvcnRfY29uY2F0ZW5hdGlvbl9pdGVtX2xlbmd0aCApCiAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgaGFuZGxlIGxlYWRpbmcga2V5d29yZC4uCiAgICAgICAgICAgICAgICBlbHNpZiAoICR0eXBlX2liZWdfMiBlcSAnaycgKSB7CgogICAgICAgICAgICAgICAgICAgICMgaGFuZGxlIGxlYWRpbmcgIm9yIgogICAgICAgICAgICAgICAgICAgIGlmICggJHRva2Vuc190b19nb1skaWJlZ18yXSBlcSAnb3InICkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5sZXNzICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzX2xpbmVfaXNfc2VtaWNvbG9uX3Rlcm1pbmF0ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZV9pYmVnXzEgZXEgJ30nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmb2xsb3dpbmcgJ2lmJyBvciAndW5sZXNzJyBvciAnb3InCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlX2liZWdfMSBlcSAnaycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGlzX2lmX3VubGVzc3sgJHRva2Vuc190b19nb1skaWJlZ18xXSB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGltcG9ydGFudDogb25seSBjb21iaW5lIGEgdmVyeSBzaW1wbGUgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzdGF0ZW1lbnQgYmVjYXVzZSB0aGUgc3RlcCBiZWxvdyBtYXkgaGF2ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNvbWJpbmVkIGEgdHJhaWxpbmcgJ2FuZCcgd2l0aCB0aGlzIG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFuZCB3ZSBkbyBub3Qgd2FudCB0byB0aGVuIGNvbWJpbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBldmVyeXRoaW5nIHRvZ2V0aGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICggJGllbmRfMiAtICRpYmVnXzIgPD0gNyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjWDogUlQgIzgxODU0CiAgICAgICAgICAgICAgICAgICAgICAgICRmb3JjZWRfYnJlYWtwb2ludF90b19nb1skaWVuZF8xXSA9IDAKICAgICAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgJG9sZF9icmVha3BvaW50X3RvX2dvWyRpZW5kXzFdOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBoYW5kbGUgbGVhZGluZyAnYW5kJwogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJHRva2Vuc190b19nb1skaWJlZ18yXSBlcSAnYW5kJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgRGVjaWRlIGlmIHdlIHdpbGwgY29tYmluZSBhIHNpbmdsZSB0ZXJtaW5hbCAnYW5kJwogICAgICAgICAgICAgICAgICAgICAgICAjIGFmdGVyIGFuICdpZicgb3IgJ3VubGVzcycuCgogICAgICAgICAgICAgICAgICAgICAgICAjICAgICBUaGlzIGxvb2tzIGJlc3Qgd2l0aCB0aGUgJ2FuZCcgb24gdGhlIHNhbWUKICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgbGluZSBhcyB0aGUgJ2lmJzoKICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgJGEgPSAxCiAgICAgICAgICAgICAgICAgICAgICAgICMgICAgICAgICAgIGlmICRzZWNvbmRzIGFuZCAkbnUgPCAyOwogICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICMgICAgIEJ1dCB0aGlzIGxvb2tzIGJldHRlciBhcyBzaG93bjoKICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgJGEgPSAxCiAgICAgICAgICAgICAgICAgICAgICAgICMgICAgICAgICAgIGlmICEkdGhpcy0+e1BhcmVudHN9eyRffQogICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICBvciAkdGhpcy0+e1BhcmVudHN9eyRffSBlcSAkXzsKICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICAgICBuZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5sZXNzICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzX2xpbmVfaXNfc2VtaWNvbG9uX3Rlcm1pbmF0ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICgKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmb2xsb3dpbmcgJ2lmJyBvciAndW5sZXNzJyBvciAnb3InCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGVfaWJlZ18xIGVxICdrJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICggICAkaXNfaWZfdW5sZXNzeyAkdG9rZW5zX3RvX2dvWyRpYmVnXzFdIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJHRva2Vuc190b19nb1skaWJlZ18xXSBlcSAnb3InICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBoYW5kbGUgbGVhZGluZyAiaWYiIGFuZCAidW5sZXNzIgogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJGlzX2lmX3VubGVzc3sgJHRva2Vuc190b19nb1skaWJlZ18yXSB9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICMgRklYTUU6IFRoaXMgaXMgc3RpbGwgZXhwZXJpbWVudGFsLi5tYXkgbm90IGJlIHRvbyB1c2VmdWwKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dAogICAgICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpc19saW5lX2lzX3NlbWljb2xvbl90ZXJtaW5hdGVkCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgcHJldmlvdXMgbGluZSBiZWdpbnMgd2l0aCAnYW5kJyBvciAnb3InCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkdHlwZV9pYmVnXzEgZXEgJ2snCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkaXNfYW5kX29yeyAkdG9rZW5zX3RvX2dvWyRpYmVnXzFdIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgaGFuZGxlIGFsbCBvdGhlciBsZWFkaW5nIGtleXdvcmRzCiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGtleXdvcmRzIGxvb2sgYmVzdCBhdCBzdGFydCBvZiBsaW5lcywKICAgICAgICAgICAgICAgICAgICAgICAgIyBidXQgY29tYmluZSB0aGluZ3MgbGlrZSAiMSB3aGlsZSIKICAgICAgICAgICAgICAgICAgICAgICAgdW5sZXNzICggJGlzX2Fzc2lnbm1lbnR7JHR5cGVfaWVuZF8xfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAoICR0eXBlX2llbmRfMSBuZSAnaycgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICggJHRva2Vuc190b19nb1skaWJlZ18yXSBuZSAnd2hpbGUnICkgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHNpbWlsYXIgdHJlYXRtZW50IG9mICYmIGFuZCB8fCBhcyBhYm92ZSBmb3IgJ2FuZCcgYW5kICdvcic6CiAgICAgICAgICAgICAgICAjIE5PVEU6IFRoaXMgYmxvY2sgb2YgY29kZSBpcyBjdXJyZW50bHkgYnlwYXNzZWQgYmVjYXVzZQogICAgICAgICAgICAgICAgIyBvZiBhIHByZXZpb3VzIGJsb2NrIGJ1dCBpcyByZXRhaW5lZCBmb3IgcG9zc2libGUgZnV0dXJlIHVzZS4KICAgICAgICAgICAgICAgIGVsc2lmICggJGlzX2FtcF9hbXB7JHR5cGVfaWJlZ18yfSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBtYXliZSBsb29raW5nIGF0IHNvbWV0aGluZyBsaWtlOgogICAgICAgICAgICAgICAgICAgICMgdW5sZXNzICRURVhUT05MWSB8fCAkaXRlbSA9fiBtJTwvPyhocj58cD58YXxpbWcpJWk7CgogICAgICAgICAgICAgICAgICAgIG5leHQKICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyAoCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzX2xpbmVfaXNfc2VtaWNvbG9uX3Rlcm1pbmF0ZWQKCiAgICAgICAgICAgICAgICAgICAgICAgICMgcHJldmlvdXMgbGluZSBiZWdpbnMgd2l0aCBhbiAnaWYnIG9yICd1bmxlc3MnIGtleXdvcmQKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHR5cGVfaWJlZ18xIGVxICdrJwogICAgICAgICAgICAgICAgICAgICAgICAmJiAkaXNfaWZfdW5sZXNzeyAkdG9rZW5zX3RvX2dvWyRpYmVnXzFdIH0KCiAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgaGFuZGxlIGxpbmUgd2l0aCBsZWFkaW5nID0gb3Igc2ltaWxhcgogICAgICAgICAgICAgICAgZWxzaWYgKCAkaXNfYXNzaWdubWVudHskdHlwZV9pYmVnXzJ9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzICggJG4gPT0gMSB8fCAkbiA9PSAkbm1heCApOwogICAgICAgICAgICAgICAgICAgIG5leHQgaWYgJG9sZF9icmVha3BvaW50X3RvX2dvWyRpZW5kXzFdOwogICAgICAgICAgICAgICAgICAgIG5leHQKICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyAoCgogICAgICAgICAgICAgICAgICAgICAgICAjIHVubGVzcyB3ZSBjYW4gcmVkdWNlIHRoaXMgdG8gdHdvIGxpbmVzCiAgICAgICAgICAgICAgICAgICAgICAgICRubWF4ID09IDIKCiAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgdGhyZWUgbGluZXMsIHRoZSBsYXN0IHdpdGggYSBsZWFkaW5nIHNlbWljb2xvbgogICAgICAgICAgICAgICAgICAgICAgICB8fCAoICRubWF4ID09IDMgJiYgJHR5cGVzX3RvX2dvWyRpYmVnX25tYXhdIGVxICc7JyApCgogICAgICAgICAgICAgICAgICAgICAgICAjIG9yIHRoZSBuZXh0IGxpbmUgZW5kcyB3aXRoIGEgaGVyZSBkb2MKICAgICAgICAgICAgICAgICAgICAgICAgfHwgJHR5cGVfaWVuZF8yIGVxICdoJwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBvciB0aGlzIGlzIGEgc2hvcnQgbGluZSBlbmRpbmcgaW4gOwogICAgICAgICAgICAgICAgICAgICAgICB8fCAoICRuID09ICRubWF4ICYmICR0aGlzX2xpbmVfaXNfc2VtaWNvbG9uX3Rlcm1pbmF0ZWQgKQogICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAkZm9yY2VkX2JyZWFrcG9pbnRfdG9fZ29bJGllbmRfMV0gPSAwOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICAgICAjIFJlY29tYmluZSBTZWN0aW9uIDQ6CiAgICAgICAgICAgICAgICAjIENvbWJpbmUgdGhlIGxpbmVzIGlmIHdlIGFycml2ZSBoZXJlIGFuZCBpdCBpcyBwb3NzaWJsZQogICAgICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgICAgICAgICAgICAjIGhvbm9yIGhhcmQgYnJlYWtwb2ludHMKICAgICAgICAgICAgICAgIG5leHQgaWYgKCAkZm9yY2VkX2JyZWFrcG9pbnRfdG9fZ29bJGllbmRfMV0gPiAwICk7CgogICAgICAgICAgICAgICAgbXkgJGJzID0gJGJvbmRfc3RyZW5ndGhfdG9fZ29bJGllbmRfMV0gKyAkYnNfdHdlYWs7CgogICAgICAgICAgICAgICAgIyBSZXF1aXJlIGEgZmV3IGV4dHJhIHNwYWNlcyBiZWZvcmUgcmVjb21iaW5pbmcgbGluZXMgaWYgd2UgYXJlCiAgICAgICAgICAgICAgICAjIGF0IGFuIG9sZCBicmVha3BvaW50IHVubGVzcyB0aGlzIGlzIGEgc2ltcGxlIGxpc3Qgb3IgdGVybWluYWwKICAgICAgICAgICAgICAgICMgbGluZS4gIFRoZSBnb2FsIGlzIHRvIGF2b2lkIG9zY2lsbGF0aW5nIGJldHdlZW4gdHdvCiAgICAgICAgICAgICAgICAjIHF1YXNpLXN0YWJsZSBlbmQgc3RhdGVzLiAgRm9yIGV4YW1wbGUgdGhpcyBzbmlwcGV0IGNhdXNlZAogICAgICAgICAgICAgICAgIyBwcm9ibGVtczoKIyMgICAgbXkgJHRoaXMgPQojIyAgICBibGVzcyB7CiMjICAgICAgICBUVGV4dCA9PiAiWyIgLiAoIGpvaW4gJywnLCBtYXAgeyAiXCIkX1wiIiB9IHNwbGl0ICJcbiIsICRfICkgLiAiXSIKIyMgICAgICB9LAojIyAgICAgICR0eXBlOwogICAgICAgICAgICAgICAgbmV4dAogICAgICAgICAgICAgICAgICBpZiAoICRvbGRfYnJlYWtwb2ludF90b19nb1skaWVuZF8xXQogICAgICAgICAgICAgICAgICAgICYmICEkdGhpc19saW5lX2lzX3NlbWljb2xvbl90ZXJtaW5hdGVkCiAgICAgICAgICAgICAgICAgICAgJiYgJG4gPCAkbm1heAogICAgICAgICAgICAgICAgICAgICYmICRleGNlc3MgKyA0ID4gMAogICAgICAgICAgICAgICAgICAgICYmICR0eXBlX2llbmRfMiBuZSAnLCcgKTsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdCByZWNvbWJpbmUgaWYgd2Ugd291bGQgc2tpcCBpbiBpbmRlbnRhdGlvbiBsZXZlbHMKICAgICAgICAgICAgICAgIGlmICggJG4gPCAkbm1heCApIHsKICAgICAgICAgICAgICAgICAgICBteSAkaWZfbmV4dCA9ICRyaV9iZWctPlsgJG4gKyAxIF07CiAgICAgICAgICAgICAgICAgICAgbmV4dAogICAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAkbGV2ZWxzX3RvX2dvWyRpYmVnXzFdIDwgJGxldmVsc190b19nb1skaWJlZ18yXQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkbGV2ZWxzX3RvX2dvWyRpYmVnXzJdIDwgJGxldmVsc190b19nb1skaWZfbmV4dF0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgYnV0IGFuIGlzb2xhdGVkICdpZiAoJyBpcyB1bmRlc2lyYWJsZQogICAgICAgICAgICAgICAgICAgICAgICAmJiAhKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG4gPT0gMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGllbmRfMSAtICRpYmVnXzEgPD0gMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHR5cGVfaWJlZ18xIGVxICdrJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHRva2Vuc190b19nb1skaWJlZ18xXSBlcSAnaWYnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkdG9rZW5zX3RvX2dvWyRpZW5kXzFdIG5lICcoJwogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgaG9ub3Igbm8tYnJlYWsncwogICAgICAgICAgICAgICAgbmV4dCBpZiAoICRicyA+PSBOT19CUkVBSyAtIDEgKTsKCiAgICAgICAgICAgICAgICAjIHJlbWVtYmVyIHRoZSBwYWlyIHdpdGggdGhlIGdyZWF0ZXN0IGJvbmQgc3RyZW5ndGgKICAgICAgICAgICAgICAgIGlmICggISRuX2Jlc3QgKSB7CiAgICAgICAgICAgICAgICAgICAgJG5fYmVzdCAgPSAkbjsKICAgICAgICAgICAgICAgICAgICAkYnNfYmVzdCA9ICRiczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICBpZiAoICRicyA+ICRic19iZXN0ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkbl9iZXN0ICA9ICRuOwogICAgICAgICAgICAgICAgICAgICAgICAkYnNfYmVzdCA9ICRiczsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmVjb21iaW5lIHRoZSBwYWlyIHdpdGggdGhlIGdyZWF0ZXN0IGJvbmQgc3RyZW5ndGgKICAgICAgICAgICAgaWYgKCRuX2Jlc3QpIHsKICAgICAgICAgICAgICAgIHNwbGljZSBAeyRyaV9iZWd9LCAkbl9iZXN0LCAxOwogICAgICAgICAgICAgICAgc3BsaWNlIEB7JHJpX2VuZH0sICRuX2Jlc3QgLSAxLCAxOwogICAgICAgICAgICAgICAgc3BsaWNlIEBqb2ludCwgJG5fYmVzdCwgMTsKCiAgICAgICAgICAgICAgICAjIGtlZXAgZ29pbmcgaWYgd2UgYXJlIHN0aWxsIG1ha2luZyBwcm9ncmVzcwogICAgICAgICAgICAgICAgJG1vcmVfdG9fZG8rKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gKCAkcmlfYmVnLCAkcmlfZW5kICk7CiAgICB9Cn0gICAgIyBlbmQgcmVjb21iaW5lX2JyZWFrcG9pbnRzCgpzdWIgYnJlYWtfYWxsX2NoYWluX3Rva2VucyB7CgogICAgIyBzY2FuIHRoZSBjdXJyZW50IGJyZWFrcG9pbnRzIGxvb2tpbmcgZm9yIGJyZWFrcyBhdCBjZXJ0YWluICJjaGFpbgogICAgIyBvcGVyYXRvcnMiICguIDogJiYgfHwgKyBldGMpIHdoaWNoIG9mdGVuIG9jY3VyIHJlcGVhdGVkbHkgaW4gYSBsb25nCiAgICAjIHN0YXRlbWVudC4gIElmIHdlIHNlZSBhIGJyZWFrIGF0IGFueSBvbmUsIGJyZWFrIGF0IGFsbCBzaW1pbGFyIHRva2VucwogICAgIyB3aXRoaW4gdGhlIHNhbWUgY29udGFpbmVyLgogICAgIwogICAgbXkgKCAkcmlfbGVmdCwgJHJpX3JpZ2h0ICkgPSBAXzsKCiAgICBteSAlc2F3X2NoYWluX3R5cGU7CiAgICBteSAlbGVmdF9jaGFpbl90eXBlOwogICAgbXkgJXJpZ2h0X2NoYWluX3R5cGU7CiAgICBteSAlaW50ZXJpb3JfY2hhaW5fdHlwZTsKICAgIG15ICRubWF4ID0gQHskcmlfcmlnaHR9IC0gMTsKCiAgICAjIHNjYW4gdGhlIGxlZnQgYW5kIHJpZ2h0IGVuZCB0b2tlbnMgb2YgYWxsIGxpbmVzCiAgICBteSAkY291bnQgPSAwOwogICAgZm9yIG15ICRuICggMCAuLiAkbm1heCApIHsKICAgICAgICBteSAkaWwgICAgPSAkcmlfbGVmdC0+WyRuXTsKICAgICAgICBteSAkaXIgICAgPSAkcmlfcmlnaHQtPlskbl07CiAgICAgICAgbXkgJHR5cGVsID0gJHR5cGVzX3RvX2dvWyRpbF07CiAgICAgICAgbXkgJHR5cGVyID0gJHR5cGVzX3RvX2dvWyRpcl07CiAgICAgICAgJHR5cGVsID0gJysnIGlmICggJHR5cGVsIGVxICctJyApOyAgICAjIHRyZWF0ICsgYW5kIC0gdGhlIHNhbWUKICAgICAgICAkdHlwZXIgPSAnKycgaWYgKCAkdHlwZXIgZXEgJy0nICk7CiAgICAgICAgJHR5cGVsID0gJyonIGlmICggJHR5cGVsIGVxICcvJyApOyAgICAjIHRyZWF0ICogYW5kIC8gdGhlIHNhbWUKICAgICAgICAkdHlwZXIgPSAnKicgaWYgKCAkdHlwZXIgZXEgJy8nICk7CiAgICAgICAgbXkgJHRva2VubCA9ICR0b2tlbnNfdG9fZ29bJGlsXTsKICAgICAgICBteSAkdG9rZW5yID0gJHRva2Vuc190b19nb1skaXJdOwoKICAgICAgICBpZiAoICRpc19jaGFpbl9vcGVyYXRvcnskdG9rZW5sfSAmJiAkd2FudF9icmVha19iZWZvcmV7JHR5cGVsfSApIHsKICAgICAgICAgICAgbmV4dCBpZiAoICR0eXBlbCBlcSAnPycgKTsKICAgICAgICAgICAgcHVzaCBAeyAkbGVmdF9jaGFpbl90eXBleyR0eXBlbH0gfSwgJGlsOwogICAgICAgICAgICAkc2F3X2NoYWluX3R5cGV7JHR5cGVsfSA9IDE7CiAgICAgICAgICAgICRjb3VudCsrOwogICAgICAgIH0KICAgICAgICBpZiAoICRpc19jaGFpbl9vcGVyYXRvcnskdG9rZW5yfSAmJiAhJHdhbnRfYnJlYWtfYmVmb3JleyR0eXBlcn0gKSB7CiAgICAgICAgICAgIG5leHQgaWYgKCAkdHlwZXIgZXEgJz8nICk7CiAgICAgICAgICAgIHB1c2ggQHsgJHJpZ2h0X2NoYWluX3R5cGV7JHR5cGVyfSB9LCAkaXI7CiAgICAgICAgICAgICRzYXdfY2hhaW5fdHlwZXskdHlwZXJ9ID0gMTsKICAgICAgICAgICAgJGNvdW50Kys7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIHVubGVzcyAkY291bnQ7CgogICAgIyBub3cgbG9vayBmb3IgYW55IGludGVyaW9yIHRva2VucyBvZiB0aGUgc2FtZSB0eXBlcwogICAgJGNvdW50ID0gMDsKICAgIGZvciBteSAkbiAoIDAgLi4gJG5tYXggKSB7CiAgICAgICAgbXkgJGlsID0gJHJpX2xlZnQtPlskbl07CiAgICAgICAgbXkgJGlyID0gJHJpX3JpZ2h0LT5bJG5dOwogICAgICAgIGZvcmVhY2ggbXkgJGkgKCAkaWwgKyAxIC4uICRpciAtIDEgKSB7CiAgICAgICAgICAgIG15ICR0eXBlID0gJHR5cGVzX3RvX2dvWyRpXTsKICAgICAgICAgICAgJHR5cGUgPSAnKycgaWYgKCAkdHlwZSBlcSAnLScgKTsKICAgICAgICAgICAgJHR5cGUgPSAnKicgaWYgKCAkdHlwZSBlcSAnLycgKTsKICAgICAgICAgICAgaWYgKCAkc2F3X2NoYWluX3R5cGV7JHR5cGV9ICkgewogICAgICAgICAgICAgICAgcHVzaCBAeyAkaW50ZXJpb3JfY2hhaW5fdHlwZXskdHlwZX0gfSwgJGk7CiAgICAgICAgICAgICAgICAkY291bnQrKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiB1bmxlc3MgJGNvdW50OwoKICAgICMgbm93IG1ha2UgYSBsaXN0IG9mIGFsbCBuZXcgYnJlYWsgcG9pbnRzCiAgICBteSBAaW5zZXJ0X2xpc3Q7CgogICAgIyBsb29wIG92ZXIgYWxsIGNoYWluIHR5cGVzCiAgICBmb3JlYWNoIG15ICR0eXBlICgga2V5cyAlc2F3X2NoYWluX3R5cGUgKSB7CgogICAgICAgICMgcXVpdCBpZiBqdXN0IE9ORSBjb250aW51YXRpb24gbGluZSB3aXRoIGxlYWRpbmcgLiAgRm9yIGV4YW1wbGUtLQogICAgICAgICMgcHJpbnQgTEFURVhGSUxFICdcZnJhbWVib3h7XHBhcmJveFtjXVsnIC4gJGggLiAnXVt0XXsnIC4gJHcgLiAnfXsnCiAgICAgICAgIyAgLiAkY29udGVudHM7CiAgICAgICAgbGFzdCBpZiAoICRubWF4ID09IDEgJiYgJHR5cGUgPX4gL15bXC5cK10kLyApOwoKICAgICAgICAjIGxvb3Agb3ZlciBhbGwgaW50ZXJpb3IgY2hhaW4gdG9rZW5zCiAgICAgICAgZm9yZWFjaCBteSAkaXRlc3QgKCBAeyAkaW50ZXJpb3JfY2hhaW5fdHlwZXskdHlwZX0gfSApIHsKCiAgICAgICAgICAgICMgbG9vcCBvdmVyIGFsbCBsZWZ0IGVuZCB0b2tlbnMgb2Ygc2FtZSB0eXBlCiAgICAgICAgICAgIGlmICggJGxlZnRfY2hhaW5fdHlwZXskdHlwZX0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IGlmICRub2JyZWFrX3RvX2dvWyAkaXRlc3QgLSAxIF07CiAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRpICggQHsgJGxlZnRfY2hhaW5fdHlwZXskdHlwZX0gfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyBpbl9zYW1lX2NvbnRhaW5lciggJGksICRpdGVzdCApOwogICAgICAgICAgICAgICAgICAgIHB1c2ggQGluc2VydF9saXN0LCAkaXRlc3QgLSAxOwoKICAgICAgICAgICAgICAgICAgICAjIEJyZWFrIGF0IG1hdGNoaW5nID8gaWYgdGhpcyA6IGlzIGF0IGEgZGlmZmVyZW50IGxldmVsLgogICAgICAgICAgICAgICAgICAgICMgRm9yIGV4YW1wbGUsIHRoZSA/IGJlZm9yZSAkVEhSZl9ERUFEIGluIHRoZSBmb2xsb3dpbmcKICAgICAgICAgICAgICAgICAgICAjIHNob3VsZCBnZXQgYSBicmVhayBpZiBpdHMgOiBnZXRzIGEgYnJlYWsuCiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgbXkgJGZsYWdzID0KICAgICAgICAgICAgICAgICAgICAjICAgICAoICRfICYgMSApID8gKCAkXyAmIDQgKSA/ICRUSFJmX0RFQUQgOiAkVEhSZl9aT01CSUUKICAgICAgICAgICAgICAgICAgICAjICAgOiAoICRfICYgNCApID8gJFRIUmZfUl9ERVRBQ0hFRAogICAgICAgICAgICAgICAgICAgICMgICA6ICAgICAgICAgICAgICAkVEhSZl9SX0pPSU5BQkxFOwogICAgICAgICAgICAgICAgICAgIGlmICggICAkdHlwZSBlcSAnOicKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGxldmVsc190b19nb1skaV0gIT0gJGxldmVsc190b19nb1skaXRlc3RdICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpX3F1ZXN0aW9uID0gJG1hdGVfaW5kZXhfdG9fZ29bJGl0ZXN0XTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkaV9xdWVzdGlvbiA+IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBpbnNlcnRfbGlzdCwgJGlfcXVlc3Rpb24gLSAxOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgbG9vcCBvdmVyIGFsbCByaWdodCBlbmQgdG9rZW5zIG9mIHNhbWUgdHlwZQogICAgICAgICAgICBpZiAoICRyaWdodF9jaGFpbl90eXBleyR0eXBlfSApIHsKICAgICAgICAgICAgICAgIG5leHQgaWYgJG5vYnJlYWtfdG9fZ29bJGl0ZXN0XTsKICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGkgKCBAeyAkcmlnaHRfY2hhaW5fdHlwZXskdHlwZX0gfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyBpbl9zYW1lX2NvbnRhaW5lciggJGksICRpdGVzdCApOwogICAgICAgICAgICAgICAgICAgIHB1c2ggQGluc2VydF9saXN0LCAkaXRlc3Q7CgogICAgICAgICAgICAgICAgICAgICMgYnJlYWsgYXQgbWF0Y2hpbmcgPyBpZiB0aGlzIDogaXMgYXQgYSBkaWZmZXJlbnQgbGV2ZWwKICAgICAgICAgICAgICAgICAgICBpZiAoICAgJHR5cGUgZXEgJzonCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRsZXZlbHNfdG9fZ29bJGldICE9ICRsZXZlbHNfdG9fZ29bJGl0ZXN0XSApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkaV9xdWVzdGlvbiA9ICRtYXRlX2luZGV4X3RvX2dvWyRpdGVzdF07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJGlfcXVlc3Rpb24gPj0gMCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQGluc2VydF9saXN0LCAkaV9xdWVzdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgaW5zZXJ0IGFueSBuZXcgYnJlYWsgcG9pbnRzCiAgICBpZiAoQGluc2VydF9saXN0KSB7CiAgICAgICAgaW5zZXJ0X2FkZGl0aW9uYWxfYnJlYWtzKCBcQGluc2VydF9saXN0LCAkcmlfbGVmdCwgJHJpX3JpZ2h0ICk7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBicmVha19lcXVhbHMgewoKICAgICMgTG9vayBmb3IgYXNzaWdubWVudCBvcGVyYXRvcnMgdGhhdCBjb3VsZCB1c2UgYSBicmVha3BvaW50LgogICAgIyBGb3IgZXhhbXBsZSwgaW4gdGhlIGZvbGxvd2luZyBzbmlwcGV0CiAgICAjCiAgICAjICAgICRIT01FID0gJEVOVntIT01FfQogICAgIyAgICAgIHx8ICRFTlZ7TE9HRElSfQogICAgIyAgICAgIHx8ICRwd1s3XQogICAgIyAgICAgIHx8IGRpZSAibm8gaG9tZSBkaXJlY3RvcnkgZm9yIHVzZXIgJDwiOwogICAgIwogICAgIyB3ZSBjb3VsZCBicmVhayBhdCB0aGUgPSB0byBnZXQgdGhpcywgd2hpY2ggaXMgYSBsaXR0bGUgbmljZXI6CiAgICAjICAgICRIT01FID0KICAgICMgICAgICAgICAkRU5We0hPTUV9CiAgICAjICAgICAgfHwgJEVOVntMT0dESVJ9CiAgICAjICAgICAgfHwgJHB3WzddCiAgICAjICAgICAgfHwgZGllICJubyBob21lIGRpcmVjdG9yeSBmb3IgdXNlciAkPCI7CiAgICAjCiAgICAjIFRoZSBsb2dpYyBoZXJlIGZvbGxvd3MgdGhlIGxvZ2ljIGluIHNldF9sb2dpY2FsX3BhZGRpbmcsIHdoaWNoCiAgICAjIHdpbGwgYWRkIHRoZSBwYWRkaW5nIGluIHRoZSBzZWNvbmQgbGluZSB0byBpbXByb3ZlIGFsaWdubWVudC4KICAgICMKICAgIG15ICggJHJpX2xlZnQsICRyaV9yaWdodCApID0gQF87CiAgICBteSAkbm1heCA9IEB7JHJpX3JpZ2h0fSAtIDE7CiAgICByZXR1cm4gdW5sZXNzICggJG5tYXggPj0gMiApOwoKICAgICMgc2NhbiB0aGUgbGVmdCBlbmRzIG9mIGZpcnN0IHR3byBsaW5lcwogICAgbXkgJHRva2JlZyA9ICIiOwogICAgbXkgJGRlcHRoX2JlZzsKICAgIGZvciBteSAkbiAoIDEgLi4gMiApIHsKICAgICAgICBteSAkaWwgICAgID0gJHJpX2xlZnQtPlskbl07CiAgICAgICAgbXkgJHR5cGVsICA9ICR0eXBlc190b19nb1skaWxdOwogICAgICAgIG15ICR0b2tlbmwgPSAkdG9rZW5zX3RvX2dvWyRpbF07CgogICAgICAgIG15ICRoYXNfbGVhZGluZ19vcCA9ICggJHRva2VubCA9fiAvXlx3LyApCiAgICAgICAgICA/ICRpc19jaGFpbl9vcGVyYXRvcnskdG9rZW5sfSAgICAjICsgLSAqIC8gOiA/ICYmIHx8CiAgICAgICAgICA6ICRpc19jaGFpbl9vcGVyYXRvcnskdHlwZWx9OyAgICAjIGFuZCwgb3IKICAgICAgICByZXR1cm4gdW5sZXNzICgkaGFzX2xlYWRpbmdfb3ApOwogICAgICAgIGlmICggJG4gPiAxICkgewogICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICB1bmxlc3MgKCAkdG9rZW5sIGVxICR0b2tiZWcKICAgICAgICAgICAgICAgICYmICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpbF0gZXEgJGRlcHRoX2JlZyApOwogICAgICAgIH0KICAgICAgICAkdG9rYmVnICAgID0gJHRva2VubDsKICAgICAgICAkZGVwdGhfYmVnID0gJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGlsXTsKICAgIH0KCiAgICAjIG5vdyBsb29rIGZvciBhbnkgaW50ZXJpb3IgdG9rZW5zIG9mIHRoZSBzYW1lIHR5cGVzCiAgICBteSAkaWwgPSAkcmlfbGVmdC0+WzBdOwogICAgbXkgJGlyID0gJHJpX3JpZ2h0LT5bMF07CgogICAgIyBub3cgbWFrZSBhIGxpc3Qgb2YgYWxsIG5ldyBicmVhayBwb2ludHMKICAgIG15IEBpbnNlcnRfbGlzdDsKICAgIGZvciAoIG15ICRpID0gJGlyIC0gMSA7ICRpID4gJGlsIDsgJGktLSApIHsKICAgICAgICBteSAkdHlwZSA9ICR0eXBlc190b19nb1skaV07CiAgICAgICAgaWYgKCAgICRpc19hc3NpZ25tZW50eyR0eXBlfQogICAgICAgICAgICAmJiAkbmVzdGluZ19kZXB0aF90b19nb1skaV0gZXEgJGRlcHRoX2JlZyApCiAgICAgICAgewogICAgICAgICAgICBpZiAoICR3YW50X2JyZWFrX2JlZm9yZXskdHlwZX0gKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBpbnNlcnRfbGlzdCwgJGkgLSAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcHVzaCBAaW5zZXJ0X2xpc3QsICRpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgQnJlYWsgYWZ0ZXIgYSAncmV0dXJuJyBmb2xsb3dlZCBieSBhIGNoYWluIG9mIG9wZXJhdG9ycwogICAgIyAgcmV0dXJuICggJF5PICF+IC93aW4zMnxkb3MvaSApCiAgICAjICAgICYmICggJF5PIG5lICdWTVMnICkKICAgICMgICAgJiYgKCAkXk8gbmUgJ09TMicgKQogICAgIyAgICAmJiAoICReTyBuZSAnTWFjT1MnICk7CiAgICAjIFRvIGdpdmU6CiAgICAjICByZXR1cm4KICAgICMgICAgICAgKCAkXk8gIX4gL3dpbjMyfGRvcy9pICkKICAgICMgICAgJiYgKCAkXk8gbmUgJ1ZNUycgKQogICAgIyAgICAmJiAoICReTyBuZSAnT1MyJyApCiAgICAjICAgICYmICggJF5PIG5lICdNYWNPUycgKTsKICAgIG15ICRpID0gMDsKICAgIGlmICggICAkdHlwZXNfdG9fZ29bJGldIGVxICdrJwogICAgICAgICYmICR0b2tlbnNfdG9fZ29bJGldIGVxICdyZXR1cm4nCiAgICAgICAgJiYgJGlyID4gJGlsCiAgICAgICAgJiYgJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGldIGVxICRkZXB0aF9iZWcgKQogICAgewogICAgICAgIHB1c2ggQGluc2VydF9saXN0LCAkaTsKICAgIH0KCiAgICByZXR1cm4gdW5sZXNzIChAaW5zZXJ0X2xpc3QpOwoKICAgICMgT25lIGZpbmFsIGNoZWNrLi4uCiAgICAjIHNjYW4gc2Vjb25kIGFuZCB0aGlyZCBsaW5lcyBhbmQgYmUgc3VyZSB0aGVyZSBhcmUgbm8gYXNzaWdubWVudHMKICAgICMgd2Ugd2FudCB0byBhdm9pZCBicmVha2luZyBhdCBhbiA9IHRvIG1ha2Ugc29tZXRoaW5nIGxpa2UgdGhpczoKICAgICMgICAgdW5sZXNzICggJGljb24gPQogICAgIyAgICAgICAgICAgJGh0bWxfaWNvbnN7IiR0eXBlLSRzdGF0ZSJ9CiAgICAjICAgICAgICBvciAkaWNvbiA9ICRodG1sX2ljb25zeyR0eXBlfQogICAgIyAgICAgICAgb3IgJGljb24gPSAkaHRtbF9pY29uc3skc3RhdGV9ICkKICAgIGZvciBteSAkbiAoIDEgLi4gMiApIHsKICAgICAgICBteSAkaWwgPSAkcmlfbGVmdC0+WyRuXTsKICAgICAgICBteSAkaXIgPSAkcmlfcmlnaHQtPlskbl07CiAgICAgICAgZm9yZWFjaCBteSAkaSAoICRpbCArIDEgLi4gJGlyICkgewogICAgICAgICAgICBteSAkdHlwZSA9ICR0eXBlc190b19nb1skaV07CiAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgIGlmICggJGlzX2Fzc2lnbm1lbnR7JHR5cGV9CiAgICAgICAgICAgICAgICAmJiAkbmVzdGluZ19kZXB0aF90b19nb1skaV0gZXEgJGRlcHRoX2JlZyApOwogICAgICAgIH0KICAgIH0KCiAgICAjIG9rLCBpbnNlcnQgYW55IG5ldyBicmVhayBwb2ludAogICAgaWYgKEBpbnNlcnRfbGlzdCkgewogICAgICAgIGluc2VydF9hZGRpdGlvbmFsX2JyZWFrcyggXEBpbnNlcnRfbGlzdCwgJHJpX2xlZnQsICRyaV9yaWdodCApOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgaW5zZXJ0X2ZpbmFsX2JyZWFrcyB7CgogICAgbXkgKCAkcmlfbGVmdCwgJHJpX3JpZ2h0ICkgPSBAXzsKCiAgICBteSAkbm1heCA9IEB7JHJpX3JpZ2h0fSAtIDE7CgogICAgIyBzY2FuIHRoZSBsZWZ0IGFuZCByaWdodCBlbmQgdG9rZW5zIG9mIGFsbCBsaW5lcwogICAgbXkgJGNvdW50ICAgICAgICAgPSAwOwogICAgbXkgJGlfZmlyc3RfY29sb24gPSAtMTsKICAgIGZvciBteSAkbiAoIDAgLi4gJG5tYXggKSB7CiAgICAgICAgbXkgJGlsICAgID0gJHJpX2xlZnQtPlskbl07CiAgICAgICAgbXkgJGlyICAgID0gJHJpX3JpZ2h0LT5bJG5dOwogICAgICAgIG15ICR0eXBlbCA9ICR0eXBlc190b19nb1skaWxdOwogICAgICAgIG15ICR0eXBlciA9ICR0eXBlc190b19nb1skaXJdOwogICAgICAgIHJldHVybiBpZiAoICR0eXBlbCBlcSAnPycgKTsKICAgICAgICByZXR1cm4gaWYgKCAkdHlwZXIgZXEgJz8nICk7CiAgICAgICAgaWYgICAgKCAkdHlwZWwgZXEgJzonICkgeyAkaV9maXJzdF9jb2xvbiA9ICRpbDsgbGFzdDsgfQogICAgICAgIGVsc2lmICggJHR5cGVyIGVxICc6JyApIHsgJGlfZmlyc3RfY29sb24gPSAkaXI7IGxhc3Q7IH0KICAgIH0KCiAgICAjIEZvciBsb25nIHRlcm5hcnkgY2hhaW5zLAogICAgIyBpZiB0aGUgZmlyc3QgOiB3ZSBzZWUgaGFzIGl0cyAjID8gaXMgaW4gdGhlIGludGVyaW9yCiAgICAjIG9mIGEgcHJlY2VkaW5nIGxpbmUsIHRoZW4gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZ29vZAogICAgIyBicmVha3BvaW50cyBiZWZvcmUgdGhlID8uCiAgICBpZiAoICRpX2ZpcnN0X2NvbG9uID4gMCApIHsKICAgICAgICBteSAkaV9xdWVzdGlvbiA9ICRtYXRlX2luZGV4X3RvX2dvWyRpX2ZpcnN0X2NvbG9uXTsKICAgICAgICBpZiAoICRpX3F1ZXN0aW9uID4gMCApIHsKICAgICAgICAgICAgbXkgQGluc2VydF9saXN0OwogICAgICAgICAgICBmb3IgKCBteSAkaWkgPSAkaV9xdWVzdGlvbiAtIDEgOyAkaWkgPj0gMCA7ICRpaSAtPSAxICkgewogICAgICAgICAgICAgICAgbXkgJHRva2VuID0gJHRva2Vuc190b19nb1skaWldOwogICAgICAgICAgICAgICAgbXkgJHR5cGUgID0gJHR5cGVzX3RvX2dvWyRpaV07CgogICAgICAgICAgICAgICAgIyBGb3Igbm93LCBhIGdvb2QgYnJlYWsgaXMgZWl0aGVyIGEgY29tbWEgb3IsCiAgICAgICAgICAgICAgICAjIGluIGEgbG9uZyBjaGFpbiwgYSAncmV0dXJuJy4KICAgICAgICAgICAgICAgICMgUGF0Y2ggZm9yIFJUICMxMjY2MzM6IGFkZGVkIHRoZSAkbm1heD4xIGNoZWNrIHRvIGF2b2lkCiAgICAgICAgICAgICAgICAjIGJyZWFraW5nIGFmdGVyIGEgcmV0dXJuIGZvciBhIHNpbXBsZSB0ZXJuYXJ5LiAgRm9yIGxvbmdlcgogICAgICAgICAgICAgICAgIyBjaGFpbnMgdGhlIGJyZWFrIGFmdGVyIHJldHVybiBhbGxvd3MgdmVydGljYWwgYWxpZ25tZW50LCBzbwogICAgICAgICAgICAgICAgIyBpdCBpcyBzdGlsbCBkb25lLiAgU28gcGVybHRpZHkgLXdiYT0nPycgd2lsbCBub3QgYnJlYWsKICAgICAgICAgICAgICAgICMgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIHJldHVybiBpbiB0aGUgZm9sbG93aW5nIHN0YXRlbWVudDoKICAgICAgICAgICAgICAgICMgc3ViIHggewogICAgICAgICAgICAgICAgIyAgICByZXR1cm4gMCA/ICdhYWFhYWFhYWFhYWFhYWFhYWFhYWEnIDoKICAgICAgICAgICAgICAgICMgICAgICAnYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmInOwogICAgICAgICAgICAgICAgIyB9CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSBlcSAnLCcKICAgICAgICAgICAgICAgICAgICAgICAgfHwgJHR5cGUgZXEgJ2snICYmICggJG5tYXggPiAxICYmICR0b2tlbiBlcSAncmV0dXJuJyApCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICYmIGluX3NhbWVfY29udGFpbmVyKCAkaWksICRpX3F1ZXN0aW9uICkKICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQGluc2VydF9saXN0LCAkaWk7CiAgICAgICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgICAgIH0KCiMjICAgICAgICAgICAgICAgICMgRm9yIG5vdywgYSBnb29kIGJyZWFrIGlzIGVpdGhlciBhIGNvbW1hIG9yIGEgJ3JldHVybicuCiMjICAgICAgICAgICAgICAgIGlmICggKCAkdHlwZSBlcSAnLCcgfHwgJHR5cGUgZXEgJ2snICYmICR0b2tlbiBlcSAncmV0dXJuJyApCiMjICAgICAgICAgICAgICAgICAgICAmJiBpbl9zYW1lX2NvbnRhaW5lciggJGlpLCAkaV9xdWVzdGlvbiApICkKIyMgICAgICAgICAgICAgICAgewojIyAgICAgICAgICAgICAgICAgICAgcHVzaCBAaW5zZXJ0X2xpc3QsICRpaTsKIyMgICAgICAgICAgICAgICAgICAgIGxhc3Q7CiMjICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBpbnNlcnQgYW55IG5ldyBicmVhayBwb2ludHMKICAgICAgICAgICAgaWYgKEBpbnNlcnRfbGlzdCkgewogICAgICAgICAgICAgICAgaW5zZXJ0X2FkZGl0aW9uYWxfYnJlYWtzKCBcQGluc2VydF9saXN0LCAkcmlfbGVmdCwgJHJpX3JpZ2h0ICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBpbl9zYW1lX2NvbnRhaW5lciB7CgogICAgIyBjaGVjayB0byBzZWUgaWYgdG9rZW5zIGF0IGkxIGFuZCBpMiBhcmUgaW4gdGhlCiAgICAjIHNhbWUgY29udGFpbmVyLCBhbmQgbm90IHNlcGFyYXRlZCBieSBhIGNvbW1hLCA/IG9yIDoKICAgICMgRklYTUU6IHRoaXMgY2FuIGJlIHdyaXR0ZW4gbW9yZSBlZmZpY2llbnRseSBub3cKICAgIG15ICggJGkxLCAkaTIgKSA9IEBfOwogICAgbXkgJHR5cGUgID0gJHR5cGVzX3RvX2dvWyRpMV07CiAgICBteSAkZGVwdGggPSAkbmVzdGluZ19kZXB0aF90b19nb1skaTFdOwogICAgcmV0dXJuIHVubGVzcyAoICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpMl0gPT0gJGRlcHRoICk7CiAgICBpZiAoICRpMiA8ICRpMSApIHsgKCAkaTEsICRpMiApID0gKCAkaTIsICRpMSApIH0KCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBUaGlzIGlzIHBvdGVudGlhbGx5IGEgdmVyeSBzbG93IHJvdXRpbmUgYW5kIG5vdCBjcml0aWNhbC4KICAgICMgRm9yIHNhZmV0eSBqdXN0IGdpdmUgdXAgZm9yIGxhcmdlIGRpZmZlcmVuY2VzLgogICAgIyBTZWUgdGVzdCBmaWxlICdpbmZpbml0ZV9sb29wLnR4dCcKICAgICMgVE9ETzogcmVwbGFjZSB0aGlzIGxvb3Agd2l0aCBhIGRhdGEgc3RydWN0dXJlCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgcmV0dXJuIGlmICggJGkyIC0gJGkxID4gMjAwICk7CgogICAgZm9yZWFjaCBteSAkaSAoICRpMSArIDEgLi4gJGkyIC0gMSApIHsKICAgICAgICBuZXh0ICAgaWYgKCAkbmVzdGluZ19kZXB0aF90b19nb1skaV0gPiAkZGVwdGggKTsKICAgICAgICByZXR1cm4gaWYgKCAkbmVzdGluZ19kZXB0aF90b19nb1skaV0gPCAkZGVwdGggKTsKCiAgICAgICAgbXkgJHRvayA9ICR0b2tlbnNfdG9fZ29bJGldOwogICAgICAgICR0b2sgPSAnLCcgaWYgJHRvayBlcSAnPT4nOyAgICAjIHRyZWF0ID0+IHNhbWUgYXMgLAoKICAgICAgICAjIEV4YW1wbGU6IHdlIHdvdWxkIG5vdCB3YW50IHRvIGJyZWFrIGF0IGFueSBvZiB0aGVzZSAuJ3MKICAgICAgICAjICA6ICI8QSBIUkVGPVwiI2l0ZW1fIiAuIGh0bWxpZnkoIDAsICRzMiApIC4gIlwiPiRzdHI8L0E+IgogICAgICAgIGlmICggJHR5cGUgbmUgJzonICkgewogICAgICAgICAgICByZXR1cm4gaWYgKCAkdG9rID1+IC9eW1wsXDpcP10kLyApIHx8ICR0b2sgZXEgJ3x8JyB8fCAkdG9rIGVxICdvcic7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICByZXR1cm4gaWYgKCAkdG9rID1+IC9eW1wsXSQvICk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCnN1YiBzZXRfY29udGludWF0aW9uX2JyZWFrcyB7CgogICAgIyBEZWZpbmUgYW4gYXJyYXkgb2YgaW5kZXhlcyBmb3IgaW5zZXJ0aW5nIG5ld2xpbmUgY2hhcmFjdGVycyB0bwogICAgIyBrZWVwIHRoZSBsaW5lIGxlbmd0aHMgYmVsb3cgdGhlIG1heGltdW0gZGVzaXJlZCBsZW5ndGguICBUaGVyZSBpcwogICAgIyBhbiBpbXBsaWVkIGJyZWFrIGFmdGVyIHRoZSBsYXN0IHRva2VuLCBzbyBpdCBuZWVkIG5vdCBiZSBpbmNsdWRlZC4KCiAgICAjIE1ldGhvZDoKICAgICMgVGhpcyByb3V0aW5lIGlzIHBhcnQgb2Ygc2VyaWVzIG9mIHJvdXRpbmVzIHdoaWNoIGFkanVzdCBsaW5lCiAgICAjIGxlbmd0aHMuICBJdCBpcyBvbmx5IGNhbGxlZCBpZiBhIHN0YXRlbWVudCBpcyBsb25nZXIgdGhhbiB0aGUKICAgICMgbWF4aW11bSBsaW5lIGxlbmd0aCwgb3IgaWYgYSBwcmVsaW1pbmFyeSBzY2FubmluZyBsb2NhdGVkCiAgICAjIGRlc2lyYWJsZSBicmVhayBwb2ludHMuICAgU3ViIHNjYW5fbGlzdCBoYXMgYWxyZWFkeSBsb29rZWQgYXQKICAgICMgdGhlc2UgdG9rZW5zIGFuZCBzZXQgYnJlYWtwb2ludHMgKGluIGFycmF5CiAgICAjICRmb3JjZWRfYnJlYWtwb2ludF90b19nb1skaV0pIHdoZXJlIGl0IHdhbnRzIGJyZWFrcyAoZm9yIGV4YW1wbGUKICAgICMgYWZ0ZXIgY29tbWFzLCBhZnRlciBvcGVuaW5nIHBhcmVucywgYW5kIGJlZm9yZSBjbG9zaW5nIHBhcmVucykuCiAgICAjIFRoaXMgcm91dGluZSB3aWxsIGhvbm9yIHRoZXNlIGJyZWFrcG9pbnRzIGFuZCBhbHNvIGFkZCBhZGRpdGlvbmFsCiAgICAjIGJyZWFrcG9pbnRzIGFzIG5lY2Vzc2FyeSB0byBrZWVwIHRoZSBsaW5lIGxlbmd0aCBiZWxvdyB0aGUgbWF4aW11bQogICAgIyByZXF1ZXN0ZWQuICBJdCBiYXNlcyBpdHMgZGVjaXNpb24gb24gd2hlcmUgdGhlICdib25kIHN0cmVuZ3RoJyBpcwogICAgIyBsb3dlc3QuCgogICAgIyBPdXRwdXQ6IHJldHVybnMgcmVmZXJlbmNlcyB0byB0aGUgYXJyYXlzOgogICAgIyAgQGlfZmlyc3QKICAgICMgIEBpX2xhc3QKICAgICMgd2hpY2ggY29udGFpbiB0aGUgaW5kZXhlcyAkaSBvZiB0aGUgZmlyc3QgYW5kIGxhc3QgdG9rZW5zIG9uIGVhY2gKICAgICMgbGluZS4KCiAgICAjIEluIGFkZGl0aW9uLCB0aGUgYXJyYXk6CiAgICAjICAgJGZvcmNlZF9icmVha3BvaW50X3RvX2dvWyRpXQogICAgIyBtYXkgYmUgdXBkYXRlZCB0byBiZSA9MSBmb3IgYW55IGluZGV4ICRpIGFmdGVyIHdoaWNoIHRoZXJlIG11c3QgYmUKICAgICMgYSBicmVhay4gIFRoaXMgc2lnbmFscyBsYXRlciByb3V0aW5lcyBub3QgdG8gdW5kbyB0aGUgYnJlYWtwb2ludC4KCiAgICBteSAkc2F3X2dvb2RfYnJlYWsgPSBzaGlmdDsKICAgIG15IEBpX2ZpcnN0ICAgICAgICA9ICgpOyAgICAgICMgdGhlIGZpcnN0IGluZGV4IHRvIG91dHB1dAogICAgbXkgQGlfbGFzdCAgICAgICAgID0gKCk7ICAgICAgIyB0aGUgbGFzdCBpbmRleCB0byBvdXRwdXQKICAgIG15IEBpX2NvbG9uX2JyZWFrcyA9ICgpOyAgICAgICMgbmVlZGVkIHRvIGRlY2lkZSBpZiB3ZSBoYXZlIHRvIGJyZWFrIGF0ID8ncwogICAgaWYgKCAkdHlwZXNfdG9fZ29bMF0gZXEgJzonICkgeyBwdXNoIEBpX2NvbG9uX2JyZWFrcywgMCB9CgogICAgc2V0X2JvbmRfc3RyZW5ndGhzKCk7CgogICAgbXkgJGltaW4gPSAwOwogICAgbXkgJGltYXggPSAkbWF4X2luZGV4X3RvX2dvOwogICAgaWYgKCAkdHlwZXNfdG9fZ29bJGltaW5dIGVxICdiJyApIHsgJGltaW4rKyB9CiAgICBpZiAoICR0eXBlc190b19nb1skaW1heF0gZXEgJ2InICkgeyAkaW1heC0tIH0KICAgIG15ICRpX2JlZ2luID0gJGltaW47ICAgICAgICAgICMgaW5kZXggZm9yIHN0YXJ0aW5nIG5leHQgaXRlcmF0aW9uCgogICAgbXkgJGxlYWRpbmdfc3BhY2VzICAgICAgICAgID0gbGVhZGluZ19zcGFjZXNfdG9fZ28oJGltaW4pOwogICAgbXkgJGxpbmVfY291bnQgICAgICAgICAgICAgID0gMDsKICAgIG15ICRsYXN0X2JyZWFrX3N0cmVuZ3RoICAgICA9IE5PX0JSRUFLOwogICAgbXkgJGlfbGFzdF9icmVhayAgICAgICAgICAgID0gLTE7CiAgICBteSAkbWF4X2JpYXMgICAgICAgICAgICAgICAgPSAwLjAwMTsKICAgIG15ICR0aW55X2JpYXMgICAgICAgICAgICAgICA9IDAuMDAwMTsKICAgIG15ICRsZWFkaW5nX2FsaWdubWVudF90b2tlbiA9ICIiOwogICAgbXkgJGxlYWRpbmdfYWxpZ25tZW50X3R5cGUgID0gIiI7CgogICAgIyBzZWUgaWYgYW55ID8vOidzIGFyZSBpbiBvcmRlcgogICAgbXkgJGNvbG9uc19pbl9vcmRlciA9IDE7CiAgICBteSAkbGFzdF90b2sgICAgICAgID0gIiI7CiAgICBteSBAY29sb25fbGlzdCAgPSBncmVwIHsgL15bXD9cOl0kLyB9IEB0eXBlc190b19nb1sgMCAuLiAkbWF4X2luZGV4X3RvX2dvIF07CiAgICBteSAkY29sb25fY291bnQgPSBAY29sb25fbGlzdDsKICAgIGZvcmVhY2ggKEBjb2xvbl9saXN0KSB7CiAgICAgICAgaWYgKCAkXyBlcSAkbGFzdF90b2sgKSB7ICRjb2xvbnNfaW5fb3JkZXIgPSAwOyBsYXN0IH0KICAgICAgICAkbGFzdF90b2sgPSAkXzsKICAgIH0KCiAgICAjIFRoaXMgaXMgYSBzdWZmaWNpZW50IGJ1dCBub3QgbmVjZXNzYXJ5IGNvbmRpdGlvbiBmb3IgY29sb24gY2hhaW4KICAgIG15ICRpc19jb2xvbl9jaGFpbiA9ICggJGNvbG9uc19pbl9vcmRlciAmJiBAY29sb25fbGlzdCA+IDIgKTsKCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyBCRUdJTk5JTkcgb2YgbWFpbiBsb29wIHRvIHNldCBjb250aW51YXRpb24gYnJlYWtwb2ludHMKICAgICMgS2VlcCBpdGVyYXRpbmcgdW50aWwgd2UgcmVhY2ggdGhlIGVuZAogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIHdoaWxlICggJGlfYmVnaW4gPD0gJGltYXggKSB7CiAgICAgICAgbXkgJGxvd2VzdF9zdHJlbmd0aCAgICAgICAgPSBOT19CUkVBSzsKICAgICAgICBteSAkc3RhcnRpbmdfc3VtICAgICAgICAgICA9ICRzdW1tZWRfbGVuZ3Roc190b19nb1skaV9iZWdpbl07CiAgICAgICAgbXkgJGlfbG93ZXN0ICAgICAgICAgICAgICAgPSAtMTsKICAgICAgICBteSAkaV90ZXN0ICAgICAgICAgICAgICAgICA9IC0xOwogICAgICAgIG15ICRsb3dlc3RfbmV4dF90b2tlbiAgICAgID0gJyc7CiAgICAgICAgbXkgJGxvd2VzdF9uZXh0X3R5cGUgICAgICAgPSAnYic7CiAgICAgICAgbXkgJGlfbG93ZXN0X25leHRfbm9uYmxhbmsgPSAtMTsKCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIEJFR0lOTklORyBvZiBpbm5lciBsb29wIHRvIGZpbmQgdGhlIGJlc3QgbmV4dCBicmVha3BvaW50CiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBmb3IgKCAkaV90ZXN0ID0gJGlfYmVnaW4gOyAkaV90ZXN0IDw9ICRpbWF4IDsgJGlfdGVzdCsrICkgewogICAgICAgICAgICBteSAkdHlwZSAgICAgICAgICAgICAgICAgICAgID0gJHR5cGVzX3RvX2dvWyRpX3Rlc3RdOwogICAgICAgICAgICBteSAkdG9rZW4gICAgICAgICAgICAgICAgICAgID0gJHRva2Vuc190b19nb1skaV90ZXN0XTsKICAgICAgICAgICAgbXkgJG5leHRfdHlwZSAgICAgICAgICAgICAgICA9ICR0eXBlc190b19nb1sgJGlfdGVzdCArIDEgXTsKICAgICAgICAgICAgbXkgJG5leHRfdG9rZW4gICAgICAgICAgICAgICA9ICR0b2tlbnNfdG9fZ29bICRpX3Rlc3QgKyAxIF07CiAgICAgICAgICAgIG15ICRpX25leHRfbm9uYmxhbmsgICAgICAgICAgPSAkaW5leHRfdG9fZ29bJGlfdGVzdF07CiAgICAgICAgICAgIG15ICRuZXh0X25vbmJsYW5rX3R5cGUgICAgICAgPSAkdHlwZXNfdG9fZ29bJGlfbmV4dF9ub25ibGFua107CiAgICAgICAgICAgIG15ICRuZXh0X25vbmJsYW5rX3Rva2VuICAgICAgPSAkdG9rZW5zX3RvX2dvWyRpX25leHRfbm9uYmxhbmtdOwogICAgICAgICAgICBteSAkbmV4dF9ub25ibGFua19ibG9ja190eXBlID0gJGJsb2NrX3R5cGVfdG9fZ29bJGlfbmV4dF9ub25ibGFua107CiAgICAgICAgICAgIG15ICRzdHJlbmd0aCAgICAgICAgICAgICAgICAgPSAkYm9uZF9zdHJlbmd0aF90b19nb1skaV90ZXN0XTsKICAgICAgICAgICAgbXkgJG1heGltdW1fbGluZV9sZW5ndGggICAgICA9IG1heGltdW1fbGluZV9sZW5ndGgoJGlfYmVnaW4pOwoKICAgICAgICAgICAgIyB1c2Ugb2xkIGJyZWFrcyBhcyBhIHRpZS1icmVha2VyLiAgRm9yIGV4YW1wbGUgdG8KICAgICAgICAgICAgIyBwcmV2ZW50IGJsaW5rZXJzIHdpdGggLXBicCBpbiB0aGlzIGNvZGU6CgojI0BrZXl3b3Jkc3sKIyMgICAgcXcvQVJHIE9VVFBVVCBQUk9UTyBDT05TVFJVQ1RPUiBSRVRVUk5TIERFU0MgUEFSQU1TIFNFRUFMU08gRVhBTVBMRS99CiMjICAgID0gKCk7CgogICAgICAgICAgICAjIEF0IHRoZSBzYW1lIHRpbWUgdHJ5IHRvIHByZXZlbnQgYSBsZWFkaW5nICogaW4gdGhpcyBjb2RlCiAgICAgICAgICAgICMgd2l0aCB0aGUgZGVmYXVsdCBmb3JtYXR0aW5nOgogICAgICAgICAgICAjCiMjICAgICAgICAgICAgICAgIHJldHVybgojIyAgICAgICAgICAgICAgICAgICAgZmFjdG9yaWFsKCAkYSArICRiIC0gMSApIC8gZmFjdG9yaWFsKCAkYSAtIDEgKSAvIGZhY3RvcmlhbCggJGIgLSAxICkKIyMgICAgICAgICAgICAgICAgICAqICggJHgqKiggJGEgLSAxICkgKQojIyAgICAgICAgICAgICAgICAgICogKCAoIDEgLSAkeCApKiooICRiIC0gMSApICk7CgogICAgICAgICAgICAjIHJlZHVjZSBzdHJlbmd0aCBhIGJpdCB0byBicmVhayB0aWVzIGF0IGFuIG9sZCBicmVha3BvaW50IC4uLgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkb2xkX2JyZWFrcG9pbnRfdG9fZ29bJGlfdGVzdF0KCiAgICAgICAgICAgICAgICAjIHdoaWNoIGlzIGEgJ2dvb2QnIGJyZWFrcG9pbnQsIG1lYW5pbmcgLi4uCiAgICAgICAgICAgICAgICAjIHdlIGRvbid0IHdhbnQgdG8gYnJlYWsgYmVmb3JlIGl0CiAgICAgICAgICAgICAgICAmJiAhJHdhbnRfYnJlYWtfYmVmb3JleyR0eXBlfQoKICAgICAgICAgICAgICAgICMgYW5kIGVpdGhlciB3ZSB3YW50IHRvIGJyZWFrIGJlZm9yZSB0aGUgbmV4dCB0b2tlbgogICAgICAgICAgICAgICAgIyBvciB0aGUgbmV4dCB0b2tlbiBpcyBub3Qgc2hvcnQgKGkuZS4gbm90IGEgJyonLCAnLycgZXRjLikKICAgICAgICAgICAgICAgICYmICRpX25leHRfbm9uYmxhbmsgPD0gJGltYXgKICAgICAgICAgICAgICAgICYmICggICAkd2FudF9icmVha19iZWZvcmV7JG5leHRfbm9uYmxhbmtfdHlwZX0KICAgICAgICAgICAgICAgICAgICB8fCAkdG9rZW5fbGVuZ3Roc190b19nb1skaV9uZXh0X25vbmJsYW5rXSA+IDIKICAgICAgICAgICAgICAgICAgICB8fCAkbmV4dF9ub25ibGFua190eXBlID1+IC9eW1wsXChcW1x7TF0kLyApCiAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkc3RyZW5ndGggLT0gJHRpbnlfYmlhczsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdGhlcndpc2UgaW5jcmVhc2Ugc3RyZW5ndGggYSBiaXQgaWYgdGhpcyB0b2tlbiB3b3VsZCBiZSBhdCB0aGUKICAgICAgICAgICAgIyBtYXhpbXVtIGxpbmUgbGVuZ3RoLiAgVGhpcyBpcyBuZWNlc3NhcnkgdG8gYXZvaWQgYmxpbmtpbmcKICAgICAgICAgICAgIyBpbiB0aGUgYWJvdmUgZXhhbXBsZSB3aGVuIHRoZSAtaW9iIGZsYWcgaXMgYWRkZWQuCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbXkgJGxlbiA9CiAgICAgICAgICAgICAgICAgICRsZWFkaW5nX3NwYWNlcyArCiAgICAgICAgICAgICAgICAgICRzdW1tZWRfbGVuZ3Roc190b19nb1sgJGlfdGVzdCArIDEgXSAtCiAgICAgICAgICAgICAgICAgICRzdGFydGluZ19zdW07CiAgICAgICAgICAgICAgICBpZiAoICRsZW4gPj0gJG1heGltdW1fbGluZV9sZW5ndGggKSB7CiAgICAgICAgICAgICAgICAgICAgJHN0cmVuZ3RoICs9ICR0aW55X2JpYXM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRtdXN0X2JyZWFrID0gMDsKCiAgICAgICAgICAgICMgRm9yY2UgYW4gaW1tZWRpYXRlIGJyZWFrIGF0IGNlcnRhaW4gb3BlcmF0b3JzCiAgICAgICAgICAgICMgd2l0aCBsb3dlciBsZXZlbCB0aGFuIHRoZSBzdGFydCBvZiB0aGUgbGluZSwKICAgICAgICAgICAgIyB1bmxlc3Mgd2UndmUgYWxyZWFkeSBzZWVuIGEgYmV0dGVyIGJyZWFrLgogICAgICAgICAgICAjCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAgICAgIyBOb3RlIG9uIGFuIGlzc3VlIHdpdGggYSBwcmVjZWRpbmcgPwogICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgICAgICMgV2UgZG9uJ3QgaW5jbHVkZSBhID8gaW4gdGhlIGFib3ZlIGxpc3QsIGJ1dCB0aGVyZSBtYXkKICAgICAgICAgICAgIyBiZSBhIGJyZWFrIGF0IGEgcHJldmlvdXMgPyBpZiB0aGUgbGluZSBpcyBsb25nLgogICAgICAgICAgICAjIEJlY2F1c2Ugb2YgdGhpcyB3ZSBkbyBub3Qgd2FudCB0byBmb3JjZSBhIGJyZWFrIGlmCiAgICAgICAgICAgICMgdGhlcmUgaXMgYSBwcmV2aW91cyA/IG9uIHRoaXMgbGluZS4gIEZvciBub3cgdGhlIGJlc3Qgd2F5CiAgICAgICAgICAgICMgdG8gZG8gdGhpcyBpcyB0byBub3QgYnJlYWsgaWYgd2UgaGF2ZSBzZWVuIGEgbG93ZXIgc3RyZW5ndGgKICAgICAgICAgICAgIyBwb2ludCwgd2hpY2ggaXMgcHJvYmFibHkgYSA/LgogICAgICAgICAgICAjCiAgICAgICAgICAgICMgRXhhbXBsZSBvZiB1bndhbnRlZCBicmVha3Mgd2UgYXJlIGF2b2lkaW5nIGF0IGEgJy4nIGZvbGxvd2luZyBhID8KICAgICAgICAgICAgIyBmcm9tIHBvZDJodG1sIHVzaW5nIHBlcmx0aWR5IC1nbnU6CiAgICAgICAgICAgICMgKQogICAgICAgICAgICAjID8gIlxuJmx0O0EgTkFNRT1cIiIKICAgICAgICAgICAgIyAuICR2YWx1ZQogICAgICAgICAgICAjIC4gIlwiJmd0O1xuJHRleHQmbHQ7L0EmZ3Q7XG4iCiAgICAgICAgICAgICMgOiAiXG4kdHlwZSRwb2QyLmh0bWxcIyIgLiAkdmFsdWUgLiAiXCImZ3Q7JHRleHQmbHQ7XC9BJmd0O1xuIjsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICRuZXh0X25vbmJsYW5rX3R5cGUgPX4gL14oXC58XCZcJnxcfFx8KSQvCiAgICAgICAgICAgICAgICAgICAgfHwgKCAgICRuZXh0X25vbmJsYW5rX3R5cGUgZXEgJ2snCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRuZXh0X25vbmJsYW5rX3Rva2VuID1+IC9eKGFuZHxvcikkLyApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAmJiAoICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpX2JlZ2luXSA+CiAgICAgICAgICAgICAgICAgICAgJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGlfbmV4dF9ub25ibGFua10gKQogICAgICAgICAgICAgICAgJiYgKCAkc3RyZW5ndGggPD0gJGxvd2VzdF9zdHJlbmd0aCApCiAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBzZXRfZm9yY2VkX2JyZWFrcG9pbnQoJGlfbmV4dF9ub25ibGFuayk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgKCiAgICAgICAgICAgICAgICAjIFRyeSB0byBwdXQgYSBicmVhayB3aGVyZSByZXF1ZXN0ZWQgYnkgc2Nhbl9saXN0CiAgICAgICAgICAgICAgICAkZm9yY2VkX2JyZWFrcG9pbnRfdG9fZ29bJGlfdGVzdF0KCiAgICAgICAgICAgICAgICAjIGJyZWFrIGJldHdlZW4gKSB7IGluIGEgY29udGludWVkIGxpbmUgc28gdGhhdCB0aGUgJ3snIGNhbgogICAgICAgICAgICAgICAgIyBiZSBvdXRkZW50ZWQKICAgICAgICAgICAgICAgICMgU2VlIHNpbWlsYXIgbG9naWMgaW4gc2Nhbl9saXN0IHdoaWNoIGNhdGNoZXMgaW5zdGFuY2VzCiAgICAgICAgICAgICAgICAjIHdoZXJlIGEgbGluZSBpcyBqdXN0IHNvbWV0aGluZyBsaWtlICcpIHsnLiAgV2UgaGF2ZSB0bwogICAgICAgICAgICAgICAgIyBiZSBjYXJlZnVsIGJlY2F1c2UgdGhlIGNvcnJlc3BvbmRpbmcgYmxvY2sga2V5d29yZCBtaWdodAogICAgICAgICAgICAgICAgIyBub3QgYmUgb24gdGhlIGZpcnN0IGxpbmUsIHN1Y2ggYXMgJ2ZvcicgaGVyZToKICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICMgZXZhbCB7CiAgICAgICAgICAgICAgICAjICAgICBmb3IgKCJhIikgewogICAgICAgICAgICAgICAgIyAgICAgICAgIGZvciAkeCAoIDEsIDIgKSB7IGxvY2FsICRfID0gImIiOyBzLyguKikvKyQxLyB9CiAgICAgICAgICAgICAgICAjICAgICB9CiAgICAgICAgICAgICAgICAjIH07CiAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICB8fCAoCiAgICAgICAgICAgICAgICAgICAgICAgJGxpbmVfY291bnQKICAgICAgICAgICAgICAgICAgICAmJiAoICR0b2tlbiBlcSAnKScgKQogICAgICAgICAgICAgICAgICAgICYmICggJG5leHRfbm9uYmxhbmtfdHlwZSBlcSAneycgKQogICAgICAgICAgICAgICAgICAgICYmICgkbmV4dF9ub25ibGFua19ibG9ja190eXBlKQogICAgICAgICAgICAgICAgICAgICYmICggJG5leHRfbm9uYmxhbmtfYmxvY2tfdHlwZSBuZSAkdG9rZW5zX3RvX2dvWyRpX2JlZ2luXSApCgogICAgICAgICAgICAgICAgICAgICMgUlQgIzEwNDQyNzogRG9udCBicmVhayBiZWZvcmUgb3BlbmluZyBzdWIgYnJhY2UgYmVjYXVzZQogICAgICAgICAgICAgICAgICAgICMgc3ViIGJsb2NrIGJyZWFrcyBoYW5kbGVkIGF0IGhpZ2hlciBsZXZlbCwgdW5sZXNzCiAgICAgICAgICAgICAgICAgICAgIyBpdCBsb29rcyBsaWtlIHRoZSBwcmVjZWRpbmcgbGlzdCBpcyBsb25nIGFuZCBicm9rZW4KICAgICAgICAgICAgICAgICAgICAmJiAhKAogICAgICAgICAgICAgICAgICAgICAgICAkbmV4dF9ub25ibGFua19ibG9ja190eXBlID1+IC9ec3ViXGIvCiAgICAgICAgICAgICAgICAgICAgICAgICYmICggJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGlfYmVnaW5dID09CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmVzdGluZ19kZXB0aF90b19nb1skaV9uZXh0X25vbmJsYW5rXSApCiAgICAgICAgICAgICAgICAgICAgKQoKICAgICAgICAgICAgICAgICAgICAmJiAhJHJPcHRzLT57J29wZW5pbmctYnJhY2UtYWx3YXlzLW9uLXJpZ2h0J30KICAgICAgICAgICAgICAgICkKCiAgICAgICAgICAgICAgICAjIFRoZXJlIGlzIGFuIGltcGxpZWQgZm9yY2VkIGJyZWFrIGF0IGEgdGVybWluYWwgb3BlbmluZyBicmFjZQogICAgICAgICAgICAgICAgfHwgKCAoICR0eXBlIGVxICd7JyApICYmICggJGlfdGVzdCA9PSAkaW1heCApICkKICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAjIEZvcmNlZCBicmVha3BvaW50cyBtdXN0IHNvbWV0aW1lcyBiZSBvdmVycmlkZGVuLCBmb3IgZXhhbXBsZQogICAgICAgICAgICAgICAgIyBiZWNhdXNlIG9mIGEgc2lkZSBjb21tZW50IGNhdXNpbmcgYSBOT19CUkVBSy4gIEl0IGlzIGVhc2llcgogICAgICAgICAgICAgICAgIyB0byBjYXRjaCB0aGlzIGhlcmUgdGhhbiB3aGVuIHRoZXkgYXJlIHNldC4KICAgICAgICAgICAgICAgIGlmICggJHN0cmVuZ3RoIDwgTk9fQlJFQUsgLSAxICkgewogICAgICAgICAgICAgICAgICAgICRzdHJlbmd0aCAgID0gJGxvd2VzdF9zdHJlbmd0aCAtICR0aW55X2JpYXM7CiAgICAgICAgICAgICAgICAgICAgJG11c3RfYnJlYWsgPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHF1aXQgaWYgYSBicmVhayBoZXJlIHdvdWxkIHB1dCBhIGdvb2QgdGVybWluYWwgdG9rZW4gb24KICAgICAgICAgICAgIyB0aGUgbmV4dCBsaW5lIGFuZCB3ZSBhbHJlYWR5IGhhdmUgYSBwb3NzaWJsZSBicmVhawogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAhJG11c3RfYnJlYWsKICAgICAgICAgICAgICAgICYmICggJG5leHRfbm9uYmxhbmtfdHlwZSA9fiAvXltcO1wsXSQvICkKICAgICAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgICAgICRsZWFkaW5nX3NwYWNlcyArCiAgICAgICAgICAgICAgICAgICAgICAgICRzdW1tZWRfbGVuZ3Roc190b19nb1sgJGlfbmV4dF9ub25ibGFuayArIDEgXSAtCiAgICAgICAgICAgICAgICAgICAgICAgICRzdGFydGluZ19zdW0KICAgICAgICAgICAgICAgICAgICApID4gJG1heGltdW1fbGluZV9sZW5ndGgKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGxhc3QgaWYgKCAkaV9sb3dlc3QgPj0gMCApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIEF2b2lkIGEgYnJlYWsgd2hpY2ggd291bGQgc3RyYW5kIGEgc2luZ2xlIHB1bmN0dWF0aW9uCiAgICAgICAgICAgICMgdG9rZW4uICBGb3IgZXhhbXBsZSwgd2UgZG8gbm90IHdhbnQgdG8gc3RyYW5kIGEgbGVhZGluZwogICAgICAgICAgICAjICcuJyB3aGljaCBpcyBmb2xsb3dlZCBieSBhIGxvbmcgcXVvdGVkIHN0cmluZy4KICAgICAgICAgICAgIyBCdXQgbm90ZSB0aGF0IHdlIGRvIHdhbnQgdG8gZG8gdGhpcyB3aXRoIC1leHRydWRlIChsPTEpCiAgICAgICAgICAgICMgc28gcGxlYXNlIHRlc3QgYW55IGNoYW5nZXMgdG8gdGhpcyBjb2RlIG9uIC1leHRydWRlLgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAhJG11c3RfYnJlYWsKICAgICAgICAgICAgICAgICYmICggJGlfdGVzdCA9PSAkaV9iZWdpbiApCiAgICAgICAgICAgICAgICAmJiAoICRpX3Rlc3QgPCAkaW1heCApCiAgICAgICAgICAgICAgICAmJiAoICR0b2tlbiBlcSAkdHlwZSApCiAgICAgICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICAgICAkbGVhZGluZ19zcGFjZXMgKwogICAgICAgICAgICAgICAgICAgICAgICAkc3VtbWVkX2xlbmd0aHNfdG9fZ29bICRpX3Rlc3QgKyAxIF0gLQogICAgICAgICAgICAgICAgICAgICAgICAkc3RhcnRpbmdfc3VtCiAgICAgICAgICAgICAgICAgICAgKSA8ICRtYXhpbXVtX2xpbmVfbGVuZ3RoCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkaV90ZXN0ID0gbWluKCAkaW1heCwgJGluZXh0X3RvX2dvWyRpX3Rlc3RdICk7CiAgICAgICAgICAgICAgICByZWRvOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICggJHN0cmVuZ3RoIDw9ICRsb3dlc3Rfc3RyZW5ndGggKSAmJiAoICRzdHJlbmd0aCA8IE5PX0JSRUFLICkgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgIyBicmVhayBhdCBwcmV2aW91cyBiZXN0IGJyZWFrIGlmIGl0IHdvdWxkIGhhdmUgcHJvZHVjZWQKICAgICAgICAgICAgICAgICMgYSBsZWFkaW5nIGFsaWdubWVudCBvZiBjZXJ0YWluIGNvbW1vbiB0b2tlbnMsIGFuZCBpdAogICAgICAgICAgICAgICAgIyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgbGF0ZXN0IGNhbmRpZGF0ZSBicmVhawogICAgICAgICAgICAgICAgbGFzdAogICAgICAgICAgICAgICAgICBpZiAoJGxlYWRpbmdfYWxpZ25tZW50X3R5cGUpOwoKICAgICAgICAgICAgICAgICMgRm9yY2UgYXQgbGVhc3Qgb25lIGJyZWFrcG9pbnQgaWYgb2xkIGNvZGUgaGFkIGdvb2QKICAgICAgICAgICAgICAgICMgYnJlYWsgSXQgaXMgb25seSBjYWxsZWQgaWYgYSBicmVha3BvaW50IGlzIHJlcXVpcmVkIG9yCiAgICAgICAgICAgICAgICAjIGRlc2lyZWQuICBUaGlzIHdpbGwgcHJvYmFibHkgbmVlZCBzb21lIGFkanVzdG1lbnRzCiAgICAgICAgICAgICAgICAjIG92ZXIgdGltZS4gIEEgZ29hbCBpcyB0byB0cnkgdG8gYmUgc3VyZSB0aGF0LCBpZiBhIG5ldwogICAgICAgICAgICAgICAgIyBzaWRlIGNvbW1lbnQgaXMgaW50cm9kdWNlZCBpbnRvIGZvcm1hdHRlZCB0ZXh0LCB0aGVuCiAgICAgICAgICAgICAgICAjIHRoZSBzYW1lIGJyZWFrcG9pbnRzIHdpbGwgb2NjdXIuICBzY2JyZWFrLnQKICAgICAgICAgICAgICAgIGxhc3QKICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRpX3Rlc3QgPT0gJGltYXggICAgICAgICAgICAgICMgd2UgYXJlIGF0IHRoZSBlbmQKICAgICAgICAgICAgICAgICAgICAmJiAhJGZvcmNlZF9icmVha3BvaW50X2NvdW50ICAjCiAgICAgICAgICAgICAgICAgICAgJiYgJHNhd19nb29kX2JyZWFrICAgICAgICAgICAgIyBvbGQgbGluZSBoYWQgZ29vZCBicmVhawogICAgICAgICAgICAgICAgICAgICYmICR0eXBlID1+IC9eWyM7XHtdJC8gICAgICAgICMgYW5kIHRoaXMgbGluZSBlbmRzIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAnOycgb3Igc2lkZSBjb21tZW50CiAgICAgICAgICAgICAgICAgICAgJiYgJGlfbGFzdF9icmVhayA8IDAgICAgICAgICAgIyBhbmQgd2UgaGF2ZW4ndCBtYWRlIGEgYnJlYWsKICAgICAgICAgICAgICAgICAgICAmJiAkaV9sb3dlc3QgPj0gMCAgICAgICAgICAgICAjIGFuZCB3ZSBzYXcgYSBwb3NzaWJsZSBicmVhawogICAgICAgICAgICAgICAgICAgICYmICRpX2xvd2VzdCA8ICRpbWF4IC0gMSAgICAgICMgKGJ1dCBub3QganVzdCBiZWZvcmUgdGhpcyA7KQogICAgICAgICAgICAgICAgICAgICYmICRzdHJlbmd0aCAtICRsb3dlc3Rfc3RyZW5ndGggPCAwLjUgKiBXRUFLICMgYW5kIGl0J3MgZ29vZAogICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgRG8gbm90IHNraXAgcGFzdCBhbiBpbXBvcnRhbnQgYnJlYWsgcG9pbnQgaW4gYSBzaG9ydCBmaW5hbAogICAgICAgICAgICAgICAgIyBzZWdtZW50LiAgRm9yIGV4YW1wbGUsIHdpdGhvdXQgdGhpcyBjaGVjayB3ZSB3b3VsZCBtaXNzIHRoZQogICAgICAgICAgICAgICAgIyBicmVhayBhdCB0aGUgZmluYWwgLyBpbiB0aGUgZm9sbG93aW5nIGNvZGU6CiAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAjICAkZGVwdGhfc3RvcCA9CiAgICAgICAgICAgICAgICAjICAgICggJHRhdSAqICRtYXNzX3BlbGxldCAqICRxXzAgKgogICAgICAgICAgICAgICAgIyAgICAgICAgKCAxLiAtIGV4cCggLSR0X3N0b3AgLyAkdGF1ICkgKSAtCiAgICAgICAgICAgICAgICAjICAgICAgICA0LiAqICRwaSAqICRmYWN0b3IgKiAka19pY2UgKgogICAgICAgICAgICAgICAgIyAgICAgICAgKCAkdF9tZWx0IC0gJHRfaWNlICkgKgogICAgICAgICAgICAgICAgIyAgICAgICAgJHJfcGVsbGV0ICoKICAgICAgICAgICAgICAgICMgICAgICAgICR0X3N0b3AgKSAvCiAgICAgICAgICAgICAgICAjICAgICggJHJob19pY2UgKiAkUXMgKiAkcGkgKiAkcl9wZWxsZXQqKjIgKTsKICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgIGlmICggICAkbGluZV9jb3VudCA+IDIKICAgICAgICAgICAgICAgICAgICAmJiAkaV9sb3dlc3QgPCAkaV90ZXN0CiAgICAgICAgICAgICAgICAgICAgJiYgJGlfdGVzdCA+ICRpbWF4IC0gMgogICAgICAgICAgICAgICAgICAgICYmICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpX2JlZ2luXSA+CiAgICAgICAgICAgICAgICAgICAgJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGlfbG93ZXN0XQogICAgICAgICAgICAgICAgICAgICYmICRsb3dlc3Rfc3RyZW5ndGggPCAkbGFzdF9icmVha19zdHJlbmd0aCAtIC41ICogV0VBSyApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIyBNYWtlIHRoaXMgYnJlYWsgZm9yIG1hdGggb3BlcmF0b3JzIGZvciBub3cKICAgICAgICAgICAgICAgICAgICBteSAkaXIgPSAkaW5leHRfdG9fZ29bJGlfbG93ZXN0XTsKICAgICAgICAgICAgICAgICAgICBteSAkaWwgPSAkaXByZXZfdG9fZ29bJGlyXTsKICAgICAgICAgICAgICAgICAgICBsYXN0CiAgICAgICAgICAgICAgICAgICAgICBpZiAoICR0eXBlc190b19nb1skaWxdID1+IC9eW1wvXCpcK1wtXCVdJC8KICAgICAgICAgICAgICAgICAgICAgICAgfHwgJHR5cGVzX3RvX2dvWyRpcl0gPX4gL15bXC9cKlwrXC1cJV0kLyApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgVXBkYXRlIHRoZSBtaW5pbXVtIGJvbmQgc3RyZW5ndGggbG9jYXRpb24KICAgICAgICAgICAgICAgICRsb3dlc3Rfc3RyZW5ndGggICAgICAgID0gJHN0cmVuZ3RoOwogICAgICAgICAgICAgICAgJGlfbG93ZXN0ICAgICAgICAgICAgICAgPSAkaV90ZXN0OwogICAgICAgICAgICAgICAgJGxvd2VzdF9uZXh0X3Rva2VuICAgICAgPSAkbmV4dF9ub25ibGFua190b2tlbjsKICAgICAgICAgICAgICAgICRsb3dlc3RfbmV4dF90eXBlICAgICAgID0gJG5leHRfbm9uYmxhbmtfdHlwZTsKICAgICAgICAgICAgICAgICRpX2xvd2VzdF9uZXh0X25vbmJsYW5rID0gJGlfbmV4dF9ub25ibGFuazsKICAgICAgICAgICAgICAgIGxhc3QgaWYgJG11c3RfYnJlYWs7CgogICAgICAgICAgICAgICAgIyBzZXQgZmxhZ3MgdG8gcmVtZW1iZXIgaWYgYSBicmVhayBoZXJlIHdpbGwgcHJvZHVjZSBhCiAgICAgICAgICAgICAgICAjIGxlYWRpbmcgYWxpZ25tZW50IG9mIGNlcnRhaW4gY29tbW9uIHRva2VucwogICAgICAgICAgICAgICAgaWYgKCAgICRsaW5lX2NvdW50ID4gMAogICAgICAgICAgICAgICAgICAgICYmICRpX3Rlc3QgPCAkaW1heAogICAgICAgICAgICAgICAgICAgICYmICggJGxvd2VzdF9zdHJlbmd0aCAtICRsYXN0X2JyZWFrX3N0cmVuZ3RoIDw9ICRtYXhfYmlhcyApCiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBteSAkaV9sYXN0X2VuZCA9ICRpcHJldl90b19nb1skaV9iZWdpbl07CiAgICAgICAgICAgICAgICAgICAgbXkgJHRva19iZWcgICAgPSAkdG9rZW5zX3RvX2dvWyRpX2JlZ2luXTsKICAgICAgICAgICAgICAgICAgICBteSAkdHlwZV9iZWcgICA9ICR0eXBlc190b19nb1skaV9iZWdpbl07CiAgICAgICAgICAgICAgICAgICAgaWYgKAoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjaGVjayBmb3IgbGVhZGluZyBhbGlnbm1lbnQgb2YgY2VydGFpbiB0b2tlbnMKICAgICAgICAgICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRva19iZWcgZXEgJG5leHRfbm9uYmxhbmtfdG9rZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICRpc19jaGFpbl9vcGVyYXRvcnskdG9rX2JlZ30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICggICAkdHlwZV9iZWcgZXEgJ2snCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJHR5cGVfYmVnIGVxICR0b2tfYmVnICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpX2JlZ2luXSA+PQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGlfbmV4dF9ub25ibGFua10KICAgICAgICAgICAgICAgICAgICAgICAgKQoKICAgICAgICAgICAgICAgICAgICAgICAgfHwgKCAgICR0b2tlbnNfdG9fZ29bJGlfbGFzdF9lbmRdIGVxICR0b2tlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGlzX2NoYWluX29wZXJhdG9yeyR0b2tlbn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICggJHR5cGUgZXEgJ2snIHx8ICR0eXBlIGVxICR0b2tlbiApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkbmVzdGluZ19kZXB0aF90b19nb1skaV9sYXN0X2VuZF0gPj0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpX3Rlc3RdICkKICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRsZWFkaW5nX2FsaWdubWVudF90b2tlbiA9ICRuZXh0X25vbmJsYW5rX3Rva2VuOwogICAgICAgICAgICAgICAgICAgICAgICAkbGVhZGluZ19hbGlnbm1lbnRfdHlwZSAgPSAkbmV4dF9ub25ibGFua190eXBlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJHRvb19sb25nID0gKCAkaV90ZXN0ID49ICRpbWF4ICk7CiAgICAgICAgICAgIGlmICggISR0b29fbG9uZyApIHsKICAgICAgICAgICAgICAgIG15ICRuZXh0X2xlbmd0aCA9CiAgICAgICAgICAgICAgICAgICRsZWFkaW5nX3NwYWNlcyArCiAgICAgICAgICAgICAgICAgICRzdW1tZWRfbGVuZ3Roc190b19nb1sgJGlfdGVzdCArIDIgXSAtCiAgICAgICAgICAgICAgICAgICRzdGFydGluZ19zdW07CiAgICAgICAgICAgICAgICAkdG9vX2xvbmcgPSAkbmV4dF9sZW5ndGggPiAkbWF4aW11bV9saW5lX2xlbmd0aDsKCiAgICAgICAgICAgICAgICAjIFRvIHByZXZlbnQgYmxpbmtlcnMgd2Ugd2lsbCBhdm9pZCBsZWF2aW5nIGEgdG9rZW4gZXhhY3RseSBhdAogICAgICAgICAgICAgICAgIyB0aGUgbGluZSBsZW5ndGggbGltaXQgdW5sZXNzIGl0IGlzIHRoZSBsYXN0IHRva2VuIG9yIG9uZSBvZgogICAgICAgICAgICAgICAgIyBzZXZlcmFsICJnb29kIiB0eXBlcy4KICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICMgVGhlIGZvbGxvd2luZyBjb2RlIHdhcyBhIGJsaW5rZXIgd2l0aCAtcGJwIGJlZm9yZSB0aGlzCiAgICAgICAgICAgICAgICAjIG1vZGlmaWNhdGlvbjoKIyMgICAgICAgICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3Rva2VuIGVxICcoJwojIyAgICAgICAgICAgICAgICAgICAgICAgICYmICRpc19pbmRpcmVjdF9vYmplY3RfdGFrZXJ7ICRwYXJlbl90eXBlCiMjICAgICAgICAgICAgICAgICAgICAgICAgICAgIFskcGFyZW5fZGVwdGhdIH0KICAgICAgICAgICAgICAgICMgVGhlIGlzc3VlIGNhdXNpbmcgdGhlIHByb2JsZW0gaXMgdGhhdCBpZiB0aGUKICAgICAgICAgICAgICAgICMgdGVybSBbJHBhcmVuX2RlcHRoXSBnZXRzIGJyb2tlbiBhY3Jvc3MgYSBsaW5lIHRoZW4KICAgICAgICAgICAgICAgICMgdGhlIHdoaXRlc3BhY2Ugcm91dGluZSBkb2Vzbid0IHNlZSBib3RoIG9wZW5pbmcgYW5kIGNsb3NpbmcKICAgICAgICAgICAgICAgICMgYnJhY2tldHMgYW5kIHdpbGwgZm9ybWF0IGxpa2UgJ1sgJHBhcmVuX2RlcHRoIF0nLiAgVGhpcwogICAgICAgICAgICAgICAgIyBsZWFkcyB0byBhbiBvc2NpbGxhdGlvbiBpbiBsZW5ndGggZGVwZW5kaW5nIGlmIHdlIGJyZWFrCiAgICAgICAgICAgICAgICAjIGJlZm9yZSB0aGUgY2xvc2luZyBicmFja2V0IG9yIG5vdC4KICAgICAgICAgICAgICAgIGlmICggICEkdG9vX2xvbmcKICAgICAgICAgICAgICAgICAgICAmJiAkaV90ZXN0ICsgMSA8ICRpbWF4CiAgICAgICAgICAgICAgICAgICAgJiYgJG5leHRfbm9uYmxhbmtfdHlwZSAhfiAvXlssXH1cXVwpUl0kLyApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJHRvb19sb25nID0gJG5leHRfbGVuZ3RoID49ICRtYXhpbXVtX2xpbmVfbGVuZ3RoOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBGT1JNQVRURVJfREVCVUdfRkxBR19CUkVBSwogICAgICAgICAgICAgICYmIGRvIHsKICAgICAgICAgICAgICAgIG15ICRsdG9rICAgICA9ICR0b2tlbjsKICAgICAgICAgICAgICAgIG15ICRydG9rICAgICA9ICRuZXh0X25vbmJsYW5rX3Rva2VuID8gJG5leHRfbm9uYmxhbmtfdG9rZW4gOiAiIjsKICAgICAgICAgICAgICAgIG15ICRpX3Rlc3RwMiA9ICRpX3Rlc3QgKyAyOwogICAgICAgICAgICAgICAgaWYgKCAkaV90ZXN0cDIgPiAkbWF4X2luZGV4X3RvX2dvICsgMSApIHsKICAgICAgICAgICAgICAgICAgICAkaV90ZXN0cDIgPSAkbWF4X2luZGV4X3RvX2dvICsgMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICggbGVuZ3RoKCRsdG9rKSA+IDYgKSB7ICRsdG9rID0gc3Vic3RyKCAkbHRvaywgMCwgOCApIH0KICAgICAgICAgICAgICAgIGlmICggbGVuZ3RoKCRydG9rKSA+IDYgKSB7ICRydG9rID0gc3Vic3RyKCAkcnRvaywgMCwgOCApIH0KICAgICAgICAgICAgICAgIHByaW50IFNURE9VVAoiQlJFQUs6IGk9JGlfdGVzdCBpbWF4PSRpbWF4ICR0eXBlc190b19nb1skaV90ZXN0XSAkbmV4dF9ub25ibGFua190eXBlIHNwPSgkbGVhZGluZ19zcGFjZXMpIGxuZXh0PSAkc3VtbWVkX2xlbmd0aHNfdG9fZ29bJGlfdGVzdHAyXSAybG9uZz0kdG9vX2xvbmcgc3RyPSRzdHJlbmd0aCAgICAkbHRvayAkcnRva1xuIjsKICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgIyBhbGxvdyBvbmUgZXh0cmEgdGVybWluYWwgdG9rZW4gYWZ0ZXIgZXhjZWVkaW5nIGxpbmUgbGVuZ3RoCiAgICAgICAgICAgICMgaWYgaXQgd291bGQgc3RyYW5kIHRoaXMgdG9rZW4uCiAgICAgICAgICAgIGlmICggICAkck9wdHNfZnV6enlfbGluZV9sZW5ndGgKICAgICAgICAgICAgICAgICYmICR0b29fbG9uZwogICAgICAgICAgICAgICAgJiYgJGlfbG93ZXN0ID09ICRpX3Rlc3QKICAgICAgICAgICAgICAgICYmICR0b2tlbl9sZW5ndGhzX3RvX2dvWyRpX3Rlc3RdID4gMQogICAgICAgICAgICAgICAgJiYgJG5leHRfbm9uYmxhbmtfdHlwZSA9fiAvXltcO1wsXSQvICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHRvb19sb25nID0gMDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGFzdAogICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICggJGlfdGVzdCA9PSAkaW1heCApICAgICMgd2UncmUgZG9uZSBpZiBubyBtb3JlIHRva2VucywKICAgICAgICAgICAgICAgIHx8ICgKICAgICAgICAgICAgICAgICAgICAoICRpX2xvd2VzdCA+PSAwICkgICAgIyBvciBubyBtb3JlIHNwYWNlIGFuZCB3ZSBoYXZlIGEgYnJlYWsKICAgICAgICAgICAgICAgICAgICAmJiAkdG9vX2xvbmcKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIEVORCBvZiBpbm5lciBsb29wIHRvIGZpbmQgdGhlIGJlc3QgbmV4dCBicmVha3BvaW50CiAgICAgICAgIyBOb3cgZGVjaWRlIGV4YWN0bHkgd2hlcmUgdG8gcHV0IHRoZSBicmVha3BvaW50CiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgICAgIyBpdCdzIGFsd2F5cyBvayB0byBicmVhayBhdCBpbWF4IGlmIG5vIG90aGVyIGJyZWFrIHdhcyBmb3VuZAogICAgICAgIGlmICggJGlfbG93ZXN0IDwgMCApIHsgJGlfbG93ZXN0ID0gJGltYXggfQoKICAgICAgICAjIHNlbWktZmluYWwgaW5kZXggY2FsY3VsYXRpb24KICAgICAgICBteSAkaV9uZXh0X25vbmJsYW5rICAgICA9ICRpbmV4dF90b19nb1skaV9sb3dlc3RdOwogICAgICAgIG15ICRuZXh0X25vbmJsYW5rX3R5cGUgID0gJHR5cGVzX3RvX2dvWyRpX25leHRfbm9uYmxhbmtdOwogICAgICAgIG15ICRuZXh0X25vbmJsYW5rX3Rva2VuID0gJHRva2Vuc190b19nb1skaV9uZXh0X25vbmJsYW5rXTsKCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjID8vOiBydWxlIDEgOiBpZiBhIGJyZWFrIGhlcmUgd2lsbCBzZXBhcmF0ZSBhICc/JyBvbiB0aGlzCiAgICAgICAgIyBsaW5lIGZyb20gaXRzIGNsb3NpbmcgJzonLCB0aGVuIGJyZWFrIGF0IHRoZSAnPycgaW5zdGVhZC4KICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgIGZvcmVhY2ggbXkgJGkgKCAkaV9iZWdpbiArIDEgLi4gJGlfbG93ZXN0IC0gMSApIHsKICAgICAgICAgICAgbmV4dCB1bmxlc3MgKCAkdG9rZW5zX3RvX2dvWyRpXSBlcSAnPycgKTsKCiAgICAgICAgICAgICMgZG8gbm90IGJyZWFrIGlmIHByb2JhYmxlIHNlcXVlbmNlIG9mID8vOiBzdGF0ZW1lbnRzCiAgICAgICAgICAgIG5leHQgaWYgKCRpc19jb2xvbl9jaGFpbik7CgogICAgICAgICAgICAjIGRvIG5vdCBicmVhayBpZiBzdGF0ZW1lbnQgaXMgYnJva2VuIGJ5IHNpZGUgY29tbWVudAogICAgICAgICAgICBuZXh0CiAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJHRva2Vuc190b19nb1skbWF4X2luZGV4X3RvX2dvXSBlcSAnIycKICAgICAgICAgICAgICAgICYmIHRlcm1pbmFsX3R5cGUoIFxAdHlwZXNfdG9fZ28sIFxAYmxvY2tfdHlwZV90b19nbywgMCwKICAgICAgICAgICAgICAgICAgICAkbWF4X2luZGV4X3RvX2dvICkgIX4gL15bXDtcfV0kLwogICAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG5vIGJyZWFrIG5lZWRlZCBpZiBtYXRjaGluZyA6IGlzIGFsc28gb24gdGhlIGxpbmUKICAgICAgICAgICAgbmV4dAogICAgICAgICAgICAgIGlmICggJG1hdGVfaW5kZXhfdG9fZ29bJGldID49IDAKICAgICAgICAgICAgICAgICYmICRtYXRlX2luZGV4X3RvX2dvWyRpXSA8PSAkaV9uZXh0X25vbmJsYW5rICk7CgogICAgICAgICAgICAkaV9sb3dlc3QgPSAkaTsKICAgICAgICAgICAgaWYgKCAkd2FudF9icmVha19iZWZvcmV7Jz8nfSApIHsgJGlfbG93ZXN0LS0gfQogICAgICAgICAgICBsYXN0OwogICAgICAgIH0KCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIEVORCBvZiBpbm5lciBsb29wIHRvIGZpbmQgdGhlIGJlc3QgbmV4dCBicmVha3BvaW50OgogICAgICAgICMgQnJlYWsgdGhlIGxpbmUgYWZ0ZXIgdGhlIHRva2VuIHdpdGggaW5kZXggaT0kaV9sb3dlc3QKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgICAjIGZpbmFsIGluZGV4IGNhbGN1bGF0aW9uCiAgICAgICAgJGlfbmV4dF9ub25ibGFuayAgICAgPSAkaW5leHRfdG9fZ29bJGlfbG93ZXN0XTsKICAgICAgICAkbmV4dF9ub25ibGFua190eXBlICA9ICR0eXBlc190b19nb1skaV9uZXh0X25vbmJsYW5rXTsKICAgICAgICAkbmV4dF9ub25ibGFua190b2tlbiA9ICR0b2tlbnNfdG9fZ29bJGlfbmV4dF9ub25ibGFua107CgogICAgICAgIEZPUk1BVFRFUl9ERUJVR19GTEFHX0JSRUFLCiAgICAgICAgICAmJiBwcmludCBTVERPVVQKICAgICAgICAgICJCUkVBSzogYmVzdCBpcyBpID0gJGlfbG93ZXN0IHN0cmVuZ3RoID0gJGxvd2VzdF9zdHJlbmd0aFxuIjsKCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjID8vOiBydWxlIDIgOiBpZiB3ZSBicmVhayBhdCBhICc/JywgdGhlbiBicmVhayBhdCBpdHMgJzonCiAgICAgICAgIwogICAgICAgICMgTm90ZTogdGhpcyBydWxlIGlzIGFsc28gaW4gc3ViIHNjYW5fbGlzdCB0byBoYW5kbGUgYSBicmVhawogICAgICAgICMgYXQgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgYSBsaW5lIChpbiBjYXNlIGJyZWFrcyBhcmUgZGljdGF0ZWQKICAgICAgICAjIGJ5IHNpZGUgY29tbWVudHMpLgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgaWYgKCAkbmV4dF9ub25ibGFua190eXBlIGVxICc/JyApIHsKICAgICAgICAgICAgc2V0X2Nsb3NpbmdfYnJlYWtwb2ludCgkaV9uZXh0X25vbmJsYW5rKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkdHlwZXNfdG9fZ29bJGlfbG93ZXN0XSBlcSAnPycgKSB7CiAgICAgICAgICAgIHNldF9jbG9zaW5nX2JyZWFrcG9pbnQoJGlfbG93ZXN0KTsKICAgICAgICB9CgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyA/LzogcnVsZSAzIDogaWYgd2UgYnJlYWsgYXQgYSAnOicgdGhlbiB3ZSBzYXZlCiAgICAgICAgIyBpdHMgbG9jYXRpb24gZm9yIGZ1cnRoZXIgd29yayBiZWxvdy4gIFdlIG1heSBuZWVkIHRvIGdvCiAgICAgICAgIyBiYWNrIGFuZCBicmVhayBhdCBpdHMgJz8nLgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgaWYgKCAkbmV4dF9ub25ibGFua190eXBlIGVxICc6JyApIHsKICAgICAgICAgICAgcHVzaCBAaV9jb2xvbl9icmVha3MsICRpX25leHRfbm9uYmxhbms7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJHR5cGVzX3RvX2dvWyRpX2xvd2VzdF0gZXEgJzonICkgewogICAgICAgICAgICBwdXNoIEBpX2NvbG9uX2JyZWFrcywgJGlfbG93ZXN0OwogICAgICAgIH0KCiAgICAgICAgIyBoZXJlIHdlIHNob3VsZCBzZXQgYnJlYWtzIGZvciBhbGwgJz8nLyc6JyBwYWlycyB3aGljaCBhcmUKICAgICAgICAjIHNlcGFyYXRlZCBieSB0aGlzIGxpbmUKCiAgICAgICAgJGxpbmVfY291bnQrKzsKCiAgICAgICAgIyBzYXZlIHRoaXMgbGluZSBzZWdtZW50LCBhZnRlciB0cmltbWluZyBibGFua3MgYXQgdGhlIGVuZHMKICAgICAgICBwdXNoKCBAaV9maXJzdCwKICAgICAgICAgICAgKCAkdHlwZXNfdG9fZ29bJGlfYmVnaW5dIGVxICdiJyApID8gJGlfYmVnaW4gKyAxIDogJGlfYmVnaW4gKTsKICAgICAgICBwdXNoKCBAaV9sYXN0LAogICAgICAgICAgICAoICR0eXBlc190b19nb1skaV9sb3dlc3RdIGVxICdiJyApID8gJGlfbG93ZXN0IC0gMSA6ICRpX2xvd2VzdCApOwoKICAgICAgICAjIHNldCBhIGZvcmNlZCBicmVha3BvaW50IGF0IGEgY29udGFpbmVyIG9wZW5pbmcsIGlmIG5lY2Vzc2FyeSwgdG8KICAgICAgICAjIHNpZ25hbCBhIGJyZWFrIGF0IGEgY2xvc2luZyBjb250YWluZXIuICBFeGNlcHRpbmcgJygnIGZvciBub3cuCiAgICAgICAgaWYgKCAkdG9rZW5zX3RvX2dvWyRpX2xvd2VzdF0gPX4gL15bXHtcW10kLwogICAgICAgICAgICAmJiAhJGZvcmNlZF9icmVha3BvaW50X3RvX2dvWyRpX2xvd2VzdF0gKQogICAgICAgIHsKICAgICAgICAgICAgc2V0X2Nsb3NpbmdfYnJlYWtwb2ludCgkaV9sb3dlc3QpOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgcmVhZHkgdG8gZ28gYWdhaW4KICAgICAgICAkaV9iZWdpbiAgICAgICAgICAgICAgICAgPSAkaV9sb3dlc3QgKyAxOwogICAgICAgICRsYXN0X2JyZWFrX3N0cmVuZ3RoICAgICA9ICRsb3dlc3Rfc3RyZW5ndGg7CiAgICAgICAgJGlfbGFzdF9icmVhayAgICAgICAgICAgID0gJGlfbG93ZXN0OwogICAgICAgICRsZWFkaW5nX2FsaWdubWVudF90b2tlbiA9ICIiOwogICAgICAgICRsZWFkaW5nX2FsaWdubWVudF90eXBlICA9ICIiOwogICAgICAgICRsb3dlc3RfbmV4dF90b2tlbiAgICAgICA9ICcnOwogICAgICAgICRsb3dlc3RfbmV4dF90eXBlICAgICAgICA9ICdiJzsKCiAgICAgICAgaWYgKCAoICRpX2JlZ2luIDw9ICRpbWF4ICkgJiYgKCAkdHlwZXNfdG9fZ29bJGlfYmVnaW5dIGVxICdiJyApICkgewogICAgICAgICAgICAkaV9iZWdpbisrOwogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUgaW5kZW50YXRpb24gc2l6ZQogICAgICAgIGlmICggJGlfYmVnaW4gPD0gJGltYXggKSB7CiAgICAgICAgICAgICRsZWFkaW5nX3NwYWNlcyA9IGxlYWRpbmdfc3BhY2VzX3RvX2dvKCRpX2JlZ2luKTsKICAgICAgICB9CiAgICB9CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgRU5EIG9mIG1haW4gbG9vcCB0byBzZXQgY29udGludWF0aW9uIGJyZWFrcG9pbnRzCiAgICAjIE5vdyBnbyBiYWNrIGFuZCBtYWtlIGFueSBuZWNlc3NhcnkgY29ycmVjdGlvbnMKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgPy86IHJ1bGUgNCAtLSBpZiB3ZSBicm9rZSBhdCBhICc6JywgdGhlbiBicmVhayBhdAogICAgIyBjb3JyZXNwb25kaW5nICc/JyB1bmxlc3MgdGhpcyBpcyBhIGNoYWluIG9mID86IGV4cHJlc3Npb25zCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgaWYgKEBpX2NvbG9uX2JyZWFrcykgewoKICAgICAgICAjIHVzaW5nIGEgc2ltcGxlIG1ldGhvZCBmb3IgZGVjaWRpbmcgaWYgd2UgYXJlIGluIGEgPy86IGNoYWluIC0tCiAgICAgICAgIyB0aGlzIGlzIGEgY2hhaW4gaWYgaXQgaGFzIG11bHRpcGxlID8vOiBwYWlycyBhbGwgaW4gb3JkZXI7CiAgICAgICAgIyBvdGhlcndpc2Ugbm90LgogICAgICAgICMgTm90ZSB0aGF0IGlmIGxpbmUgc3RhcnRzIGluIGEgJzonIHdlIGNvdW50IHRoYXQgYWJvdmUgYXMgYSBicmVhawogICAgICAgIG15ICRpc19jaGFpbiA9ICggJGNvbG9uc19pbl9vcmRlciAmJiBAaV9jb2xvbl9icmVha3MgPiAxICk7CgogICAgICAgIHVubGVzcyAoJGlzX2NoYWluKSB7CiAgICAgICAgICAgIG15IEBpbnNlcnRfbGlzdCA9ICgpOwogICAgICAgICAgICBmb3JlYWNoIChAaV9jb2xvbl9icmVha3MpIHsKICAgICAgICAgICAgICAgIG15ICRpX3F1ZXN0aW9uID0gJG1hdGVfaW5kZXhfdG9fZ29bJF9dOwogICAgICAgICAgICAgICAgaWYgKCAkaV9xdWVzdGlvbiA+PSAwICkgewogICAgICAgICAgICAgICAgICAgIGlmICggJHdhbnRfYnJlYWtfYmVmb3Jleyc/J30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRpX3F1ZXN0aW9uID0gJGlwcmV2X3RvX2dvWyRpX3F1ZXN0aW9uXTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmICggJGlfcXVlc3Rpb24gPj0gMCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAaW5zZXJ0X2xpc3QsICRpX3F1ZXN0aW9uOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGluc2VydF9hZGRpdGlvbmFsX2JyZWFrcyggXEBpbnNlcnRfbGlzdCwgXEBpX2ZpcnN0LCBcQGlfbGFzdCApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuICggXEBpX2ZpcnN0LCBcQGlfbGFzdCwgJGNvbG9uX2NvdW50ICk7Cn0KCnN1YiBpbnNlcnRfYWRkaXRpb25hbF9icmVha3MgewoKICAgICMgdGhpcyByb3V0aW5lIHdpbGwgYWRkIGxpbmUgYnJlYWtzIGF0IHJlcXVlc3RlZCBsb2NhdGlvbnMgYWZ0ZXIKICAgICMgc3ViIHNldF9jb250aW51YXRpb25fYnJlYWtzIGhhcyBtYWRlIHByZWxpbWluYXJ5IGJyZWFrcy4KCiAgICBteSAoICRyaV9icmVha19saXN0LCAkcmlfZmlyc3QsICRyaV9sYXN0ICkgPSBAXzsKICAgIG15ICRpX2Y7CiAgICBteSAkaV9sOwogICAgbXkgJGxpbmVfbnVtYmVyID0gMDsKICAgIGZvcmVhY2ggbXkgJGlfYnJlYWtfbGVmdCAoIHNvcnQgeyAkYSA8PT4gJGIgfSBAeyRyaV9icmVha19saXN0fSApIHsKCiAgICAgICAgJGlfZiA9ICRyaV9maXJzdC0+WyRsaW5lX251bWJlcl07CiAgICAgICAgJGlfbCA9ICRyaV9sYXN0LT5bJGxpbmVfbnVtYmVyXTsKICAgICAgICB3aGlsZSAoICRpX2JyZWFrX2xlZnQgPj0gJGlfbCApIHsKICAgICAgICAgICAgJGxpbmVfbnVtYmVyKys7CgogICAgICAgICAgICAjIHNob3VsZG4ndCBoYXBwZW4gdW5sZXNzIGNhbGxlciBwYXNzZXMgYmFkIGluZGV4ZXMKICAgICAgICAgICAgaWYgKCAkbGluZV9udW1iZXIgPj0gQHskcmlfbGFzdH0gKSB7CiAgICAgICAgICAgICAgICB3YXJuaW5nKAoiTm9uLWZhdGFsIHByb2dyYW0gYnVnOiBjb3VsZG4ndCBzZXQgYnJlYWsgYXQgJGlfYnJlYWtfbGVmdFxuIgogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJlcG9ydF9kZWZpbml0ZV9idWcoKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICAkaV9mID0gJHJpX2ZpcnN0LT5bJGxpbmVfbnVtYmVyXTsKICAgICAgICAgICAgJGlfbCA9ICRyaV9sYXN0LT5bJGxpbmVfbnVtYmVyXTsKICAgICAgICB9CgogICAgICAgICMgRG8gbm90IGxlYXZlIGEgYmxhbmsgYXQgdGhlIGVuZCBvZiBhIGxpbmU7IGJhY2sgdXAgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bJGlfYnJlYWtfbGVmdF0gZXEgJ2InICkgeyAkaV9icmVha19sZWZ0LS0gfQoKICAgICAgICBteSAkaV9icmVha19yaWdodCA9ICRpbmV4dF90b19nb1skaV9icmVha19sZWZ0XTsKICAgICAgICBpZiAoICAgJGlfYnJlYWtfbGVmdCA+PSAkaV9mCiAgICAgICAgICAgICYmICRpX2JyZWFrX2xlZnQgPCAkaV9sCiAgICAgICAgICAgICYmICRpX2JyZWFrX3JpZ2h0ID4gJGlfZgogICAgICAgICAgICAmJiAkaV9icmVha19yaWdodCA8PSAkaV9sICkKICAgICAgICB7CiAgICAgICAgICAgIHNwbGljZSggQHskcmlfZmlyc3R9LCAkbGluZV9udW1iZXIsIDEsICggJGlfZiwgJGlfYnJlYWtfcmlnaHQgKSApOwogICAgICAgICAgICBzcGxpY2UoIEB7JHJpX2xhc3R9LCAkbGluZV9udW1iZXIsIDEsICggJGlfYnJlYWtfbGVmdCwgJGlfbCApICk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgc2V0X2Nsb3NpbmdfYnJlYWtwb2ludCB7CgogICAgIyBzZXQgYSBicmVha3BvaW50IGF0IGEgbWF0Y2hpbmcgY2xvc2luZyB0b2tlbgogICAgIyBhdCBwcmVzZW50LCB0aGlzIGlzIG9ubHkgdXNlZCB0byBicmVhayBhdCBhICc6JyB3aGljaCBtYXRjaGVzIGEgJz8nCiAgICBteSAkaV9icmVhayA9IHNoaWZ0OwoKICAgIGlmICggJG1hdGVfaW5kZXhfdG9fZ29bJGlfYnJlYWtdID49IDAgKSB7CgogICAgICAgICMgQ0FVVElPTjogaW5maW5pdGUgcmVjdXJzaW9uIHBvc3NpYmxlIGhlcmU6CiAgICAgICAgIyAgIHNldF9jbG9zaW5nX2JyZWFrcG9pbnQgY2FsbHMgc2V0X2ZvcmNlZF9icmVha3BvaW50LCBhbmQKICAgICAgICAjICAgc2V0X2ZvcmNlZF9icmVha3BvaW50IGNhbGwgc2V0X2Nsb3NpbmdfYnJlYWtwb2ludAogICAgICAgICMgICAoIHRlc3QgZmlsZXMgYXR0cmliLnQsIEJhc2ljTHl4LnBtLmh0bWwpLgogICAgICAgICMgRG9uJ3QgcmVkdWNlIHRoZSAnMicgaW4gdGhlIHN0YXRlbWVudCBiZWxvdwogICAgICAgIGlmICggJG1hdGVfaW5kZXhfdG9fZ29bJGlfYnJlYWtdID4gJGlfYnJlYWsgKyAyICkgewoKICAgICAgICAgICAgIyBicmVhayBiZWZvcmUgfSBdIGFuZCApLCBidXQgc3ViIHNldF9mb3JjZWRfYnJlYWtwb2ludCB3aWxsIGRlY2lkZQogICAgICAgICAgICAjIHRvIGJyZWFrIGJlZm9yZSBvciBhZnRlciBhID8gYW5kIDoKICAgICAgICAgICAgbXkgJGluYyA9ICggJHRva2Vuc190b19nb1skaV9icmVha10gZXEgJz8nICkgPyAwIDogMTsKICAgICAgICAgICAgc2V0X2ZvcmNlZF9icmVha3BvaW50KCAkbWF0ZV9pbmRleF90b19nb1skaV9icmVha10gLSAkaW5jICk7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgbXkgJHR5cGVfc2VxdWVuY2UgPSAkdHlwZV9zZXF1ZW5jZV90b19nb1skaV9icmVha107CiAgICAgICAgaWYgKCR0eXBlX3NlcXVlbmNlKSB7CiAgICAgICAgICAgIG15ICRjbG9zaW5nX3Rva2VuID0gJG1hdGNoaW5nX3Rva2VueyAkdG9rZW5zX3RvX2dvWyRpX2JyZWFrXSB9OwogICAgICAgICAgICAkcG9zdHBvbmVkX2JyZWFrcG9pbnR7JHR5cGVfc2VxdWVuY2V9ID0gMTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBjb21wYXJlX2luZGVudGF0aW9uX2xldmVscyB7CgogICAgIyBjaGVjayB0byBzZWUgaWYgb3V0cHV0IGxpbmUgdGFiYmluZyBhZ3JlZXMgd2l0aCBpbnB1dCBsaW5lCiAgICAjIHRoaXMgY2FuIGJlIHZlcnkgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgYSBzY3JpcHQgd2hpY2ggaGFzIGFuIGV4dHJhCiAgICAjIG9yIG1pc3NpbmcgYnJhY2UKICAgIG15ICggJGd1ZXNzZWRfaW5kZW50YXRpb25fbGV2ZWwsICRzdHJ1Y3R1cmFsX2luZGVudGF0aW9uX2xldmVsICkgPSBAXzsKICAgIGlmICggJGd1ZXNzZWRfaW5kZW50YXRpb25fbGV2ZWwgbmUgJHN0cnVjdHVyYWxfaW5kZW50YXRpb25fbGV2ZWwgKSB7CiAgICAgICAgJGxhc3RfdGFiYmluZ19kaXNhZ3JlZW1lbnQgPSAkaW5wdXRfbGluZV9udW1iZXI7CgogICAgICAgIGlmICgkaW5fdGFiYmluZ19kaXNhZ3JlZW1lbnQpIHsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICR0YWJiaW5nX2Rpc2FncmVlbWVudF9jb3VudCsrOwoKICAgICAgICAgICAgaWYgKCAkdGFiYmluZ19kaXNhZ3JlZW1lbnRfY291bnQgPD0gTUFYX05BR19NRVNTQUdFUyApIHsKICAgICAgICAgICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoCiJTdGFydCBpbmRlbnRhdGlvbiBkaXNhZ3JlZW1lbnQ6IGlucHV0PSRndWVzc2VkX2luZGVudGF0aW9uX2xldmVsOyBvdXRwdXQ9JHN0cnVjdHVyYWxfaW5kZW50YXRpb25fbGV2ZWxcbiIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGluX3RhYmJpbmdfZGlzYWdyZWVtZW50ICAgID0gJGlucHV0X2xpbmVfbnVtYmVyOwogICAgICAgICAgICAkZmlyc3RfdGFiYmluZ19kaXNhZ3JlZW1lbnQgPSAkaW5fdGFiYmluZ19kaXNhZ3JlZW1lbnQKICAgICAgICAgICAgICB1bmxlc3MgKCRmaXJzdF90YWJiaW5nX2Rpc2FncmVlbWVudCk7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CgogICAgICAgIGlmICgkaW5fdGFiYmluZ19kaXNhZ3JlZW1lbnQpIHsKCiAgICAgICAgICAgIGlmICggJHRhYmJpbmdfZGlzYWdyZWVtZW50X2NvdW50IDw9IE1BWF9OQUdfTUVTU0FHRVMgKSB7CiAgICAgICAgICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KAoiRW5kIGluZGVudGF0aW9uIGRpc2FncmVlbWVudCBmcm9tIGlucHV0IGxpbmUgJGluX3RhYmJpbmdfZGlzYWdyZWVtZW50XG4iCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggJHRhYmJpbmdfZGlzYWdyZWVtZW50X2NvdW50ID09IE1BWF9OQUdfTUVTU0FHRVMgKSB7CiAgICAgICAgICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgKICAgICAgICAgICAgICAgICAgICAgICAgIk5vIGZ1cnRoZXIgdGFiYmluZyBkaXNhZ3JlZW1lbnRzIHdpbGwgYmUgbm90ZWRcbiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRpbl90YWJiaW5nX2Rpc2FncmVlbWVudCA9IDA7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuOwp9CjE7Cgo=
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyB0aGUgUGVybDo6VGlkeTo6SW5kZW50YXRpb25JdGVtIGNsYXNzIHN1cHBsaWVzIGl0ZW1zIHdoaWNoIGNvbnRhaW4KIyBob3cgbXVjaCB3aGl0ZXNwYWNlIHNob3VsZCBiZSB1c2VkIGF0IHRoZSBzdGFydCBvZiBhIGxpbmUKIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnBhY2thZ2UgUGVybDo6VGlkeTo6SW5kZW50YXRpb25JdGVtOwp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm91ciAkVkVSU0lPTiA9ICcyMDE5MTIwMyc7CgpzdWIgbmV3IHsKCiAgICAjIENyZWF0ZSBhbiAnaW5kZW50YXRpb25faXRlbScgd2hpY2ggZGVzY3JpYmVzIG9uZSBsZXZlbCBvZiBsZWFkaW5nCiAgICAjIHdoaXRlc3BhY2Ugd2hlbiB0aGUgJy1scCcgaW5kZW50YXRpb24gaXMgdXNlZC4KICAgIG15ICgKICAgICAgICAkY2xhc3MsICAgICAgICAgICAgICAgJHNwYWNlcywgICAgICAgICAgICRsZXZlbCwKICAgICAgICAkY2lfbGV2ZWwsICAgICAgICAgICAgJGF2YWlsYWJsZV9zcGFjZXMsICRpbmRleCwKICAgICAgICAkZ251X3NlcXVlbmNlX251bWJlciwgJGFsaWduX3BhcmVuLCAgICAgICRzdGFja19kZXB0aCwKICAgICAgICAkc3RhcnRpbmdfaW5kZXgsCiAgICApID0gQF87CgogICAgbXkgJGNsb3NlZCAgICAgICAgICAgID0gLTE7CiAgICBteSAkYXJyb3dfY291bnQgICAgICAgPSAwOwogICAgbXkgJGNvbW1hX2NvdW50ICAgICAgID0gMDsKICAgIG15ICRoYXZlX2NoaWxkICAgICAgICA9IDA7CiAgICBteSAkd2FudF9yaWdodF9zcGFjZXMgPSAwOwogICAgbXkgJG1hcmtlZCAgICAgICAgICAgID0gMDsKCiAgICAjIERFRklOSVRJT05TOgogICAgIyBzcGFjZXMgICAgICAgICAgICAgPT4gICMgdG90YWwgbGVhZGluZyB3aGl0ZSBzcGFjZXMKICAgICMgbGV2ZWwgICAgICAgICAgICAgID0+ICAjIHRoZSBpbmRlbnRhdGlvbiAnbGV2ZWwnCiAgICAjIGNpX2xldmVsICAgICAgICAgICA9PiAgIyB0aGUgJ2NvbnRpbnVhdGlvbiBsZXZlbCcKICAgICMgYXZhaWxhYmxlX3NwYWNlcyAgID0+ICAjIGhvdyBtYW55IGxlZnQgc3BhY2VzIGF2YWlsYWJsZQogICAgIyAgICAgICAgICAgICAgICAgICAgICAgICMgZm9yIHRoaXMgbGV2ZWwKICAgICMgY2xvc2VkICAgICAgICAgICAgID0+ICAjIGluZGV4IHdoZXJlIHdlIHNhdyBjbG9zaW5nICd9JwogICAgIyBjb21tYV9jb3VudCAgICAgICAgPT4gICMgaG93IG1hbnkgY29tbWFzIGF0IHRoaXMgbGV2ZWw/CiAgICAjIHNlcXVlbmNlX251bWJlciAgICA9PiAgIyBvdXRwdXQgYmF0Y2ggbnVtYmVyCiAgICAjIGluZGV4ICAgICAgICAgICAgICA9PiAgIyBpbmRleCBpbiBvdXRwdXQgYmF0Y2ggbGlzdAogICAgIyBoYXZlX2NoaWxkICAgICAgICAgPT4gICMgYW55IGRlcGVuZGVudHM/CiAgICAjIHJlY292ZXJhYmxlX3NwYWNlcyA9PiAgIyBob3cgbWFueSBzcGFjZXMgdG8gdGhlIHJpZ2h0CiAgICAjICAgICAgICAgICAgICAgICAgICAgICAgIyB3ZSB3b3VsZCBsaWtlIHRvIG1vdmUgdG8gZ2V0CiAgICAjICAgICAgICAgICAgICAgICAgICAgICAgIyBhbGlnbm1lbnQgKG5lZ2F0aXZlIGlmIGxlZnQpCiAgICAjIGFsaWduX3BhcmVuICAgICAgICA9PiAgIyBkbyB3ZSB3YW50IHRvIHRyeSB0byBhbGlnbgogICAgIyAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aCBhbiBvcGVuaW5nIHN0cnVjdHVyZT8KICAgICMgbWFya2VkICAgICAgICAgICAgID0+ICAjIGlmIHZpc2l0ZWQgYnkgY29ycmVjdG9yIGxvZ2ljCiAgICAjIHN0YWNrX2RlcHRoICAgICAgICA9PiAgIyBpbmRlbnRhdGlvbiBuZXN0aW5nIGRlcHRoCiAgICAjIHN0YXJ0aW5nX2luZGV4ICAgICA9PiAgIyBmaXJzdCB0b2tlbiBpbmRleCBvZiB0aGlzIGxldmVsCiAgICAjIGFycm93X2NvdW50ICAgICAgICA9PiAgIyBob3cgbWFueSA9PidzCgogICAgcmV0dXJuIGJsZXNzIHsKICAgICAgICBfc3BhY2VzICAgICAgICAgICAgID0+ICRzcGFjZXMsCiAgICAgICAgX2xldmVsICAgICAgICAgICAgICA9PiAkbGV2ZWwsCiAgICAgICAgX2NpX2xldmVsICAgICAgICAgICA9PiAkY2lfbGV2ZWwsCiAgICAgICAgX2F2YWlsYWJsZV9zcGFjZXMgICA9PiAkYXZhaWxhYmxlX3NwYWNlcywKICAgICAgICBfY2xvc2VkICAgICAgICAgICAgID0+ICRjbG9zZWQsCiAgICAgICAgX2NvbW1hX2NvdW50ICAgICAgICA9PiAkY29tbWFfY291bnQsCiAgICAgICAgX3NlcXVlbmNlX251bWJlciAgICA9PiAkZ251X3NlcXVlbmNlX251bWJlciwKICAgICAgICBfaW5kZXggICAgICAgICAgICAgID0+ICRpbmRleCwKICAgICAgICBfaGF2ZV9jaGlsZCAgICAgICAgID0+ICRoYXZlX2NoaWxkLAogICAgICAgIF9yZWNvdmVyYWJsZV9zcGFjZXMgPT4gJHdhbnRfcmlnaHRfc3BhY2VzLAogICAgICAgIF9hbGlnbl9wYXJlbiAgICAgICAgPT4gJGFsaWduX3BhcmVuLAogICAgICAgIF9tYXJrZWQgICAgICAgICAgICAgPT4gJG1hcmtlZCwKICAgICAgICBfc3RhY2tfZGVwdGggICAgICAgID0+ICRzdGFja19kZXB0aCwKICAgICAgICBfc3RhcnRpbmdfaW5kZXggICAgID0+ICRzdGFydGluZ19pbmRleCwKICAgICAgICBfYXJyb3dfY291bnQgICAgICAgID0+ICRhcnJvd19jb3VudCwKICAgIH0sICRjbGFzczsKfQoKc3ViIHBlcm1hbmVudGx5X2RlY3JlYXNlX2F2YWlsYWJsZV9zcGFjZXMgewoKICAgICMgbWFrZSBhIHBlcm1hbmVudCByZWR1Y3Rpb24gaW4gdGhlIGF2YWlsYWJsZSBpbmRlbnRhdGlvbiBzcGFjZXMKICAgICMgYXQgb25lIGluZGVudGF0aW9uIGl0ZW0uICBOT1RFOiBpZiB0aGVyZSBhcmUgY2hpbGQgbm9kZXMsIHRoZWlyCiAgICAjIHRvdGFsIFNQQUNFUyBtdXN0IGJlIHJlZHVjZWQgYnkgdGhlIGNhbGxlci4KCiAgICBteSAoICRpdGVtLCAkc3BhY2VzX25lZWRlZCApID0gQF87CiAgICBteSAkYXZhaWxhYmxlX3NwYWNlcyA9ICRpdGVtLT5nZXRfYXZhaWxhYmxlX3NwYWNlcygpOwogICAgbXkgJGRlbGV0ZWRfc3BhY2VzID0KICAgICAgKCAkYXZhaWxhYmxlX3NwYWNlcyA+ICRzcGFjZXNfbmVlZGVkICkKICAgICAgPyAkc3BhY2VzX25lZWRlZAogICAgICA6ICRhdmFpbGFibGVfc3BhY2VzOwogICAgJGl0ZW0tPmRlY3JlYXNlX2F2YWlsYWJsZV9zcGFjZXMoJGRlbGV0ZWRfc3BhY2VzKTsKICAgICRpdGVtLT5kZWNyZWFzZV9TUEFDRVMoJGRlbGV0ZWRfc3BhY2VzKTsKICAgICRpdGVtLT5zZXRfcmVjb3ZlcmFibGVfc3BhY2VzKDApOwoKICAgIHJldHVybiAkZGVsZXRlZF9zcGFjZXM7Cn0KCnN1YiB0ZW50YXRpdmVseV9kZWNyZWFzZV9hdmFpbGFibGVfc3BhY2VzIHsKCiAgICAjIFdlIGFyZSBhc2tlZCB0byB0ZW50YXRpdmVseSBkZWxldGUgJHNwYWNlc19uZWVkZWQgb2YgaW5kZW50YXRpb24KICAgICMgZm9yIGFuIGluZGVudGF0aW9uIGl0ZW0uICBXZSBtYXkgd2FudCB0byB1bmRvIHRoaXMgbGF0ZXIuICBOT1RFOiBpZgogICAgIyB0aGVyZSBhcmUgY2hpbGQgbm9kZXMsIHRoZWlyIHRvdGFsIFNQQUNFUyBtdXN0IGJlIHJlZHVjZWQgYnkgdGhlCiAgICAjIGNhbGxlci4KICAgIG15ICggJGl0ZW0sICRzcGFjZXNfbmVlZGVkICkgPSBAXzsKICAgIG15ICRhdmFpbGFibGVfc3BhY2VzID0gJGl0ZW0tPmdldF9hdmFpbGFibGVfc3BhY2VzKCk7CiAgICBteSAkZGVsZXRlZF9zcGFjZXMgPQogICAgICAoICRhdmFpbGFibGVfc3BhY2VzID4gJHNwYWNlc19uZWVkZWQgKQogICAgICA/ICRzcGFjZXNfbmVlZGVkCiAgICAgIDogJGF2YWlsYWJsZV9zcGFjZXM7CiAgICAkaXRlbS0+ZGVjcmVhc2VfYXZhaWxhYmxlX3NwYWNlcygkZGVsZXRlZF9zcGFjZXMpOwogICAgJGl0ZW0tPmRlY3JlYXNlX1NQQUNFUygkZGVsZXRlZF9zcGFjZXMpOwogICAgJGl0ZW0tPmluY3JlYXNlX3JlY292ZXJhYmxlX3NwYWNlcygkZGVsZXRlZF9zcGFjZXMpOwogICAgcmV0dXJuICRkZWxldGVkX3NwYWNlczsKfQoKc3ViIGdldF9zdGFja19kZXB0aCB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgcmV0dXJuICRzZWxmLT57X3N0YWNrX2RlcHRofTsKfQoKc3ViIGdldF9zcGFjZXMgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIHJldHVybiAkc2VsZi0+e19zcGFjZXN9Owp9CgpzdWIgZ2V0X21hcmtlZCB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgcmV0dXJuICRzZWxmLT57X21hcmtlZH07Cn0KCnN1YiBzZXRfbWFya2VkIHsKICAgIG15ICggJHNlbGYsICR2YWx1ZSApID0gQF87CiAgICBpZiAoIGRlZmluZWQoJHZhbHVlKSApIHsKICAgICAgICAkc2VsZi0+e19tYXJrZWR9ID0gJHZhbHVlOwogICAgfQogICAgcmV0dXJuICRzZWxmLT57X21hcmtlZH07Cn0KCnN1YiBnZXRfYXZhaWxhYmxlX3NwYWNlcyB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgcmV0dXJuICRzZWxmLT57X2F2YWlsYWJsZV9zcGFjZXN9Owp9CgpzdWIgZGVjcmVhc2VfU1BBQ0VTIHsKICAgIG15ICggJHNlbGYsICR2YWx1ZSApID0gQF87CiAgICBpZiAoIGRlZmluZWQoJHZhbHVlKSApIHsKICAgICAgICAkc2VsZi0+e19zcGFjZXN9IC09ICR2YWx1ZTsKICAgIH0KICAgIHJldHVybiAkc2VsZi0+e19zcGFjZXN9Owp9CgpzdWIgZGVjcmVhc2VfYXZhaWxhYmxlX3NwYWNlcyB7CiAgICBteSAoICRzZWxmLCAkdmFsdWUgKSA9IEBfOwogICAgaWYgKCBkZWZpbmVkKCR2YWx1ZSkgKSB7CiAgICAgICAgJHNlbGYtPntfYXZhaWxhYmxlX3NwYWNlc30gLT0gJHZhbHVlOwogICAgfQogICAgcmV0dXJuICRzZWxmLT57X2F2YWlsYWJsZV9zcGFjZXN9Owp9CgpzdWIgZ2V0X2FsaWduX3BhcmVuIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICByZXR1cm4gJHNlbGYtPntfYWxpZ25fcGFyZW59Owp9CgpzdWIgZ2V0X3JlY292ZXJhYmxlX3NwYWNlcyB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgcmV0dXJuICRzZWxmLT57X3JlY292ZXJhYmxlX3NwYWNlc307Cn0KCnN1YiBzZXRfcmVjb3ZlcmFibGVfc3BhY2VzIHsKICAgIG15ICggJHNlbGYsICR2YWx1ZSApID0gQF87CiAgICBpZiAoIGRlZmluZWQoJHZhbHVlKSApIHsKICAgICAgICAkc2VsZi0+e19yZWNvdmVyYWJsZV9zcGFjZXN9ID0gJHZhbHVlOwogICAgfQogICAgcmV0dXJuICRzZWxmLT57X3JlY292ZXJhYmxlX3NwYWNlc307Cn0KCnN1YiBpbmNyZWFzZV9yZWNvdmVyYWJsZV9zcGFjZXMgewogICAgbXkgKCAkc2VsZiwgJHZhbHVlICkgPSBAXzsKICAgIGlmICggZGVmaW5lZCgkdmFsdWUpICkgewogICAgICAgICRzZWxmLT57X3JlY292ZXJhYmxlX3NwYWNlc30gKz0gJHZhbHVlOwogICAgfQogICAgcmV0dXJuICRzZWxmLT57X3JlY292ZXJhYmxlX3NwYWNlc307Cn0KCnN1YiBnZXRfY2lfbGV2ZWwgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIHJldHVybiAkc2VsZi0+e19jaV9sZXZlbH07Cn0KCnN1YiBnZXRfbGV2ZWwgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIHJldHVybiAkc2VsZi0+e19sZXZlbH07Cn0KCnN1YiBnZXRfc2VxdWVuY2VfbnVtYmVyIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICByZXR1cm4gJHNlbGYtPntfc2VxdWVuY2VfbnVtYmVyfTsKfQoKc3ViIGdldF9pbmRleCB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgcmV0dXJuICRzZWxmLT57X2luZGV4fTsKfQoKc3ViIGdldF9zdGFydGluZ19pbmRleCB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgcmV0dXJuICRzZWxmLT57X3N0YXJ0aW5nX2luZGV4fTsKfQoKc3ViIHNldF9oYXZlX2NoaWxkIHsKICAgIG15ICggJHNlbGYsICR2YWx1ZSApID0gQF87CiAgICBpZiAoIGRlZmluZWQoJHZhbHVlKSApIHsKICAgICAgICAkc2VsZi0+e19oYXZlX2NoaWxkfSA9ICR2YWx1ZTsKICAgIH0KICAgIHJldHVybiAkc2VsZi0+e19oYXZlX2NoaWxkfTsKfQoKc3ViIGdldF9oYXZlX2NoaWxkIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICByZXR1cm4gJHNlbGYtPntfaGF2ZV9jaGlsZH07Cn0KCnN1YiBzZXRfYXJyb3dfY291bnQgewogICAgbXkgKCAkc2VsZiwgJHZhbHVlICkgPSBAXzsKICAgIGlmICggZGVmaW5lZCgkdmFsdWUpICkgewogICAgICAgICRzZWxmLT57X2Fycm93X2NvdW50fSA9ICR2YWx1ZTsKICAgIH0KICAgIHJldHVybiAkc2VsZi0+e19hcnJvd19jb3VudH07Cn0KCnN1YiBnZXRfYXJyb3dfY291bnQgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIHJldHVybiAkc2VsZi0+e19hcnJvd19jb3VudH07Cn0KCnN1YiBzZXRfY29tbWFfY291bnQgewogICAgbXkgKCAkc2VsZiwgJHZhbHVlICkgPSBAXzsKICAgIGlmICggZGVmaW5lZCgkdmFsdWUpICkgewogICAgICAgICRzZWxmLT57X2NvbW1hX2NvdW50fSA9ICR2YWx1ZTsKICAgIH0KICAgIHJldHVybiAkc2VsZi0+e19jb21tYV9jb3VudH07Cn0KCnN1YiBnZXRfY29tbWFfY291bnQgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIHJldHVybiAkc2VsZi0+e19jb21tYV9jb3VudH07Cn0KCnN1YiBzZXRfY2xvc2VkIHsKICAgIG15ICggJHNlbGYsICR2YWx1ZSApID0gQF87CiAgICBpZiAoIGRlZmluZWQoJHZhbHVlKSApIHsKICAgICAgICAkc2VsZi0+e19jbG9zZWR9ID0gJHZhbHVlOwogICAgfQogICAgcmV0dXJuICRzZWxmLT57X2Nsb3NlZH07Cn0KCnN1YiBnZXRfY2xvc2VkIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICByZXR1cm4gJHNlbGYtPntfY2xvc2VkfTsKfQoxOwo=
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBUaGlzIGlzIGEgc3RyaXBwZWQgZG93biB2ZXJzaW9uIG9mIElPOjpTY2FsYXIKIyBHaXZlbiBhIHJlZmVyZW5jZSB0byBhIHNjYWxhciwgaXQgc3VwcGxpZXMgZWl0aGVyOgojIGEgZ2V0bGluZSBtZXRob2Qgd2hpY2ggcmVhZHMgbGluZXMgKG1vZGU9J3InKSwgb3IKIyBhIHByaW50IG1ldGhvZCB3aGljaCByZWFkcyBsaW5lcyAobW9kZT0ndycpCiMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCnBhY2thZ2UgUGVybDo6VGlkeTo6SU9TY2FsYXI7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIENhcnA7Cm91ciAkVkVSU0lPTiA9ICcyMDE5MTIwMyc7CgpzdWIgbmV3IHsKICAgIG15ICggJHBhY2thZ2UsICRyc2NhbGFyLCAkbW9kZSApID0gQF87CiAgICBteSAkcmVmID0gcmVmICRyc2NhbGFyOwogICAgaWYgKCAkcmVmIG5lICdTQ0FMQVInICkgewogICAgICAgIGNvbmZlc3MgPDxFT007Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpleHBlY3RpbmcgcmVmIHRvIFNDQUxBUiBidXQgZ290IHJlZiB0byAoJHJlZik7IHRyYWNlIGZvbGxvd3M6Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFT00KCiAgICB9CiAgICBpZiAoICRtb2RlIGVxICd3JyApIHsKICAgICAgICAkeyRyc2NhbGFyfSA9ICIiOwogICAgICAgIHJldHVybiBibGVzcyBbICRyc2NhbGFyLCAkbW9kZSBdLCAkcGFja2FnZTsKICAgIH0KICAgIGVsc2lmICggJG1vZGUgZXEgJ3InICkgewoKICAgICAgICAjIENvbnZlcnQgYSBzY2FsYXIgdG8gYW4gYXJyYXkuCiAgICAgICAgIyBUaGlzIGF2b2lkcyBsb29raW5nIGZvciAiXG4iIG9uIGVhY2ggY2FsbCB0byBnZXRsaW5lCiAgICAgICAgIwogICAgICAgICMgTk9URVM6IFRoZSAtMSBjb3VudCBpcyBuZWVkZWQgdG8gYXZvaWQgbG9zcyBvZiB0cmFpbGluZyBibGFuayBsaW5lcwogICAgICAgICMgKHdoaWNoIG1pZ2h0IGJlIGltcG9ydGFudCBpbiBhIERBVEEgc2VjdGlvbikuCiAgICAgICAgbXkgQGFycmF5OwogICAgICAgIGlmICggJHJzY2FsYXIgJiYgJHskcnNjYWxhcn0gKSB7CgogICAgICAgICAgICAjQGFycmF5ID0gbWFwIHsgJF8gLj0gIlxuIiB9IHNwbGl0IC9cbi8sICR7JHJzY2FsYXJ9LCAtMTsKICAgICAgICAgICAgQGFycmF5ID0gbWFwIHsgJF8gLiAiXG4iIH0gc3BsaXQgL1xuLywgJHskcnNjYWxhcn0sIC0xOwoKICAgICAgICAgICAgIyByZW1vdmUgcG9zc2libGUgZXh0cmEgYmxhbmsgbGluZSBpbnRyb2R1Y2VkIHdpdGggc3BsaXQKICAgICAgICAgICAgaWYgKCBAYXJyYXkgJiYgJGFycmF5Wy0xXSBlcSAiXG4iICkgeyBwb3AgQGFycmF5IH0KICAgICAgICB9CiAgICAgICAgbXkgJGlfbmV4dCA9IDA7CiAgICAgICAgcmV0dXJuIGJsZXNzIFsgXEBhcnJheSwgJG1vZGUsICRpX25leHQgXSwgJHBhY2thZ2U7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBjb25mZXNzIDw8RU9NOwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZXhwZWN0aW5nIG1vZGUgPSAncicgb3IgJ3cnIGJ1dCBnb3QgbW9kZSAoJG1vZGUpOyB0cmFjZSBmb2xsb3dzOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRU9NCiAgICB9Cn0KCnN1YiBnZXRsaW5lIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICBteSAkbW9kZSA9ICRzZWxmLT5bMV07CiAgICBpZiAoICRtb2RlIG5lICdyJyApIHsKICAgICAgICBjb25mZXNzIDw8RU9NOwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZ2V0bGluZSBjYWxsIHJlcXVpcmVzIG1vZGUgPSAncicgYnV0IG1vZGUgPSAoJG1vZGUpOyB0cmFjZSBmb2xsb3dzOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRU9NCiAgICB9CiAgICBteSAkaSA9ICRzZWxmLT5bMl0rKzsKICAgIHJldHVybiAkc2VsZi0+WzBdLT5bJGldOwp9CgpzdWIgcHJpbnQgewogICAgbXkgKCAkc2VsZiwgJG1zZyApID0gQF87CiAgICBteSAkbW9kZSA9ICRzZWxmLT5bMV07CiAgICBpZiAoICRtb2RlIG5lICd3JyApIHsKICAgICAgICBjb25mZXNzIDw8RU9NOwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KcHJpbnQgY2FsbCByZXF1aXJlcyBtb2RlID0gJ3cnIGJ1dCBtb2RlID0gKCRtb2RlKTsgdHJhY2UgZm9sbG93czoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVPTQogICAgfQogICAgJHsgJHNlbGYtPlswXSB9IC49ICRtc2c7CiAgICByZXR1cm47Cn0Kc3ViIGNsb3NlIHsgcmV0dXJuIH0KMTsKCg==
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBUaGUgUGVybDo6VGlkeTo6SHRtbFdyaXRlciBjbGFzcyB3cml0ZXMgYSBjb3B5IG9mIHRoZSBpbnB1dCBzdHJlYW0gaW4gaHRtbAojCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKcGFja2FnZSBQZXJsOjpUaWR5OjpIdG1sV3JpdGVyOwp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm91ciAkVkVSU0lPTiA9ICcyMDE5MTIwMyc7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7CgojIGNsYXNzIHZhcmlhYmxlcwp1c2UgdmFycyBxd3sKICAlaHRtbF9jb2xvcgogICVodG1sX2JvbGQKICAlaHRtbF9pdGFsaWMKICAldG9rZW5fc2hvcnRfbmFtZXMKICAlc2hvcnRfdG9fbG9uZ19uYW1lcwogICRyT3B0cwogICRjc3NfZmlsZW5hbWUKICAkY3NzX2xpbmtuYW1lCiAgJG1pc3NpbmdfaHRtbF9lbnRpdGllcwogICRtaXNzaW5nX3BvZF9odG1sCn07CgojIHJlcGxhY2UgdW5zYWZlIGNoYXJhY3RlcnMgd2l0aCBIVE1MIGVudGl0eSByZXByZXNlbnRhdGlvbiBpZiBIVE1MOjpFbnRpdGllcwojIGlzIGF2YWlsYWJsZQojeyBldmFsICJ1c2UgSFRNTDo6RW50aXRpZXMiOyAkbWlzc2luZ19odG1sX2VudGl0aWVzID0gJEA7IH0KCkJFR0lOIHsKICAgIGlmICggIWV2YWwgeyByZXF1aXJlIEhUTUw6OkVudGl0aWVzOyAxIH0gKSB7CiAgICAgICAgJG1pc3NpbmdfaHRtbF9lbnRpdGllcyA9ICRAID8gJEAgOiAxOwogICAgfQogICAgaWYgKCAhZXZhbCB7IHJlcXVpcmUgUG9kOjpIdG1sOyAxIH0gKSB7CiAgICAgICAgJG1pc3NpbmdfcG9kX2h0bWwgPSAkQCA/ICRAIDogMTsKICAgIH0KfQoKc3ViIG5ldyB7CgogICAgbXkgKCAkY2xhc3MsICRpbnB1dF9maWxlLCAkaHRtbF9maWxlLCAkZXh0ZW5zaW9uLCAkaHRtbF90b2NfZXh0ZW5zaW9uLAogICAgICAgICRodG1sX3NyY19leHRlbnNpb24gKQogICAgICA9IEBfOwoKICAgIG15ICRodG1sX2ZpbGVfb3BlbmVkID0gMDsKICAgIG15ICRodG1sX2ZoOwogICAgKCAkaHRtbF9maCwgbXkgJGh0bWxfZmlsZW5hbWUgKSA9CiAgICAgIFBlcmw6OlRpZHk6OnN0cmVhbWhhbmRsZSggJGh0bWxfZmlsZSwgJ3cnICk7CiAgICB1bmxlc3MgKCRodG1sX2ZoKSB7CiAgICAgICAgUGVybDo6VGlkeTo6V2FybigiY2FuJ3Qgb3BlbiAkaHRtbF9maWxlOiAkIVxuIik7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgJGh0bWxfZmlsZV9vcGVuZWQgPSAxOwoKICAgIGlmICggISRpbnB1dF9maWxlIHx8ICRpbnB1dF9maWxlIGVxICctJyB8fCByZWYoJGlucHV0X2ZpbGUpICkgewogICAgICAgICRpbnB1dF9maWxlID0gIk5PTkFNRSI7CiAgICB9CgogICAgIyB3cml0ZSB0aGUgdGFibGUgb2YgY29udGVudHMgdG8gYSBzdHJpbmcKICAgIG15ICR0b2Nfc3RyaW5nOwogICAgbXkgJGh0bWxfdG9jX2ZoID0gUGVybDo6VGlkeTo6SU9TY2FsYXItPm5ldyggXCR0b2Nfc3RyaW5nLCAndycgKTsKCiAgICBteSAkaHRtbF9wcmVfZmg7CiAgICBteSBAcHJlX3N0cmluZ19zdGFjazsKICAgIGlmICggJHJPcHRzLT57J2h0bWwtcHJlLW9ubHknfSApIHsKCiAgICAgICAgIyBwcmUgc2VjdGlvbiBnb2VzIGRpcmVjdGx5IHRvIHRoZSBvdXRwdXQgc3RyZWFtCiAgICAgICAgJGh0bWxfcHJlX2ZoID0gJGh0bWxfZmg7CiAgICAgICAgJGh0bWxfcHJlX2ZoLT5wcmludCggPDwiUFJFX0VORCIpOwo8cHJlPgpQUkVfRU5ECiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBwcmUgc2VjdGlvbiBnbyBvdXQgdG8gYSB0ZW1wb3Jhcnkgc3RyaW5nCiAgICAgICAgbXkgJHByZV9zdHJpbmc7CiAgICAgICAgJGh0bWxfcHJlX2ZoID0gUGVybDo6VGlkeTo6SU9TY2FsYXItPm5ldyggXCRwcmVfc3RyaW5nLCAndycgKTsKICAgICAgICBwdXNoIEBwcmVfc3RyaW5nX3N0YWNrLCBcJHByZV9zdHJpbmc7CiAgICB9CgogICAgIyBwb2QgdGV4dCBnZXRzIGRpdmVydGVkIGlmIHRoZSAncG9kMmh0bWwnIGlzIHVzZWQKICAgIG15ICRodG1sX3BvZF9maDsKICAgIG15ICRwb2Rfc3RyaW5nOwogICAgaWYgKCAkck9wdHMtPnsncG9kMmh0bWwnfSApIHsKICAgICAgICBpZiAoICRyT3B0cy0+eydodG1sLXByZS1vbmx5J30gKSB7CiAgICAgICAgICAgIHVuZGVmICRyT3B0cy0+eydwb2QyaHRtbCd9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIyNldmFsICJ1c2UgUG9kOjpIdG1sIjsKICAgICAgICAgICAgI2lmICgkQCkgewogICAgICAgICAgICBpZiAoJG1pc3NpbmdfcG9kX2h0bWwpIHsKICAgICAgICAgICAgICAgIFBlcmw6OlRpZHk6Oldhcm4oCiJ1bmFibGUgdG8gZmluZCBQb2Q6Okh0bWw7IGNhbm5vdCB1c2UgcG9kMmh0bWxcbi1ucG9kIGRpc2FibGVzIHRoaXMgbWVzc2FnZVxuIgogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHVuZGVmICRyT3B0cy0+eydwb2QyaHRtbCd9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJGh0bWxfcG9kX2ZoID0gUGVybDo6VGlkeTo6SU9TY2FsYXItPm5ldyggXCRwb2Rfc3RyaW5nLCAndycgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBteSAkdG9jX2ZpbGVuYW1lOwogICAgbXkgJHNyY19maWxlbmFtZTsKICAgIGlmICggJHJPcHRzLT57J2ZyYW1lcyd9ICkgewogICAgICAgIHVubGVzcyAoJGV4dGVuc2lvbikgewogICAgICAgICAgICBQZXJsOjpUaWR5OjpXYXJuKAoiY2Fubm90IHVzZSBmcmFtZXMgd2l0aG91dCBhIHNwZWNpZmllZCBvdXRwdXQgZXh0ZW5zaW9uOyBpZ25vcmluZyAtZnJtXG4iCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHVuZGVmICRyT3B0cy0+eydmcmFtZXMnfTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICR0b2NfZmlsZW5hbWUgPSAkaW5wdXRfZmlsZSAuICRodG1sX3RvY19leHRlbnNpb24gLiAkZXh0ZW5zaW9uOwogICAgICAgICAgICAkc3JjX2ZpbGVuYW1lID0gJGlucHV0X2ZpbGUgLiAkaHRtbF9zcmNfZXh0ZW5zaW9uIC4gJGV4dGVuc2lvbjsKICAgICAgICB9CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIE91dHB1dCBpcyBub3cgZGlyZWN0ZWQgYXMgZm9sbG93czoKICAgICMgaHRtbF90b2NfZmggPC0tIHRhYmxlIG9mIGNvbnRlbnRzIGl0ZW1zCiAgICAjIGh0bWxfcHJlX2ZoIDwtLSB0aGUgPHByZT4gc2VjdGlvbiBvZiBmb3JtYXR0ZWQgY29kZSwgZXhjZXB0OgogICAgIyBodG1sX3BvZF9maCA8LS0gcG9kIGdvZXMgaGVyZSB3aXRoIHRoZSBwb2QyaHRtbCBvcHRpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIG15ICR0aXRsZSA9ICRyT3B0cy0+eyd0aXRsZSd9OwogICAgdW5sZXNzICgkdGl0bGUpIHsKICAgICAgICAoICR0aXRsZSwgbXkgJHBhdGggKSA9IGZpbGVwYXJzZSgkaW5wdXRfZmlsZSk7CiAgICB9CiAgICBteSAkdG9jX2l0ZW1fY291bnQgPSAwOwogICAgbXkgJGluX3RvY19wYWNrYWdlID0gIiI7CiAgICBteSAkbGFzdF9sZXZlbCAgICAgPSAwOwogICAgcmV0dXJuIGJsZXNzIHsKICAgICAgICBfaW5wdXRfZmlsZSAgICAgICAgPT4gJGlucHV0X2ZpbGUsICAgICAgICAgICMgbmFtZSBvZiBpbnB1dCBmaWxlCiAgICAgICAgX3RpdGxlICAgICAgICAgICAgID0+ICR0aXRsZSwgICAgICAgICAgICAgICAjIHRpdGxlLCB1bmVzY2FwZWQKICAgICAgICBfaHRtbF9maWxlICAgICAgICAgPT4gJGh0bWxfZmlsZSwgICAgICAgICAgICMgbmFtZSBvZiAuaHRtbCBvdXRwdXQgZmlsZQogICAgICAgIF90b2NfZmlsZW5hbWUgICAgICA9PiAkdG9jX2ZpbGVuYW1lLCAgICAgICAgIyBmb3IgZnJhbWVzIG9wdGlvbgogICAgICAgIF9zcmNfZmlsZW5hbWUgICAgICA9PiAkc3JjX2ZpbGVuYW1lLCAgICAgICAgIyBmb3IgZnJhbWVzIG9wdGlvbgogICAgICAgIF9odG1sX2ZpbGVfb3BlbmVkICA9PiAkaHRtbF9maWxlX29wZW5lZCwgICAgIyBhIGZsYWcKICAgICAgICBfaHRtbF9maCAgICAgICAgICAgPT4gJGh0bWxfZmgsICAgICAgICAgICAgICMgdGhlIG91dHB1dCBzdHJlYW0KICAgICAgICBfaHRtbF9wcmVfZmggICAgICAgPT4gJGh0bWxfcHJlX2ZoLCAgICAgICAgICMgcHJlIHNlY3Rpb24gZ29lcyBoZXJlCiAgICAgICAgX3JwcmVfc3RyaW5nX3N0YWNrID0+IFxAcHJlX3N0cmluZ19zdGFjaywgICAjIHN0YWNrIG9mIHByZSBzZWN0aW9ucwogICAgICAgIF9odG1sX3BvZF9maCAgICAgICA9PiAkaHRtbF9wb2RfZmgsICAgICAgICAgIyBwb2QgZ29lcyBoZXJlIGlmIHBvZDJodG1sCiAgICAgICAgX3Jwb2Rfc3RyaW5nICAgICAgID0+IFwkcG9kX3N0cmluZywgICAgICAgICAjIHN0cmluZyBob2xkaW5nIHBvZAogICAgICAgIF9wb2RfY3V0X2NvdW50ICAgICA9PiAwLCAgICAgICAgICAgICAgICAgICAgIyBob3cgbWFueSA9Y3V0J3M/CiAgICAgICAgX2h0bWxfdG9jX2ZoICAgICAgID0+ICRodG1sX3RvY19maCwgICAgICAgICAjIGZoIGZvciB0YWJsZSBvZiBjb250ZW50cwogICAgICAgIF9ydG9jX3N0cmluZyAgICAgICA9PiBcJHRvY19zdHJpbmcsICAgICAgICAgIyBzdHJpbmcgaG9sZGluZyB0b2MKICAgICAgICBfcnRvY19pdGVtX2NvdW50ICAgPT4gXCR0b2NfaXRlbV9jb3VudCwgICAgICMgaG93IG1hbnkgdG9jIGl0ZW1zCiAgICAgICAgX3Jpbl90b2NfcGFja2FnZSAgID0+IFwkaW5fdG9jX3BhY2thZ2UsICAgICAjIHBhY2thZ2UgbmFtZQogICAgICAgIF9ydG9jX25hbWVfY291bnQgICA9PiB7fSwgICAgICAgICAgICAgICAgICAgIyBoYXNoIHRvIHRyYWNrIHVuaXF1ZSBuYW1lcwogICAgICAgIF9ycGFja2FnZV9zdGFjayAgICA9PiBbXSwgICAgICAgICAgICAgICAgICAgIyBzdGFjayB0byBjaGVjayBmb3IgcGFja2FnZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBuYW1lIGNoYW5nZXMKICAgICAgICBfcmxhc3RfbGV2ZWwgICAgICAgPT4gXCRsYXN0X2xldmVsLCAgICAgICAgICMgYnJhY2UgaW5kZW50YXRpb24gbGV2ZWwKICAgIH0sICRjbGFzczsKfQoKc3ViIGNsb3NlX29iamVjdCB7CiAgICBteSAoJG9iamVjdCkgPSBAXzsKCiAgICAjIHJldHVybnMgdHJ1ZSBpZiBjbG9zZSB3b3JrcywgZmFsc2UgaWYgbm90CiAgICAjIGZhaWx1cmUgcHJvYmFibHkgbWVhbnMgdGhlcmUgaXMgbm8gY2xvc2UgbWV0aG9kCiAgICByZXR1cm4gZXZhbCB7ICRvYmplY3QtPmNsb3NlKCk7IDEgfTsKfQoKc3ViIGFkZF90b2NfaXRlbSB7CgogICAgIyBBZGQgYW4gaXRlbSB0byB0aGUgaHRtbCB0YWJsZSBvZiBjb250ZW50cy4KICAgICMgVGhpcyBpcyBjYWxsZWQgZXZlbiBpZiBubyB0YWJsZSBvZiBjb250ZW50cyBpcyB3cml0dGVuLAogICAgIyBiZWNhdXNlIHdlIHN0aWxsIHdhbnQgdG8gcHV0IHRoZSBhbmNob3JzIGluIHRoZSA8cHJlPiB0ZXh0LgogICAgIyBXZSBhcmUgZ2l2ZW4gYW4gYW5jaG9yIG5hbWUgYW5kIGl0cyB0eXBlOyB0eXBlcyBhcmU6CiAgICAjICAgICAgJ3BhY2thZ2UnLCAnc3ViJywgJ19fRU5EX18nLCAnX19EQVRBX18nLCAnRU9GJwogICAgIyBUaGVyZSBtdXN0IGJlIGFuICdFT0YnIGNhbGwgYXQgdGhlIGVuZCB0byB3cmFwIHRoaW5ncyB1cC4KICAgIG15ICggJHNlbGYsICRuYW1lLCAkdHlwZSApID0gQF87CiAgICBteSAkaHRtbF90b2NfZmggICAgID0gJHNlbGYtPntfaHRtbF90b2NfZmh9OwogICAgbXkgJGh0bWxfcHJlX2ZoICAgICA9ICRzZWxmLT57X2h0bWxfcHJlX2ZofTsKICAgIG15ICRydG9jX25hbWVfY291bnQgPSAkc2VsZi0+e19ydG9jX25hbWVfY291bnR9OwogICAgbXkgJHJ0b2NfaXRlbV9jb3VudCA9ICRzZWxmLT57X3J0b2NfaXRlbV9jb3VudH07CiAgICBteSAkcmxhc3RfbGV2ZWwgICAgID0gJHNlbGYtPntfcmxhc3RfbGV2ZWx9OwogICAgbXkgJHJpbl90b2NfcGFja2FnZSA9ICRzZWxmLT57X3Jpbl90b2NfcGFja2FnZX07CiAgICBteSAkcnBhY2thZ2Vfc3RhY2sgID0gJHNlbGYtPntfcnBhY2thZ2Vfc3RhY2t9OwoKICAgICMgcGFja2FnZXMgY29udGFpbiBzdWJsaXN0cyBvZiBzdWJzLCBzbyB0byBhdm9pZCBlcnJvcnMgYWxsIHBhY2thZ2UKICAgICMgaXRlbXMgYXJlIHdyaXR0ZW4gYW5kIGZpbmlzaGVkIHdpdGggdGhlIGZvbGxvd2luZyByb3V0aW5lcwogICAgbXkgJGVuZF9wYWNrYWdlX2xpc3QgPSBzdWIgewogICAgICAgIGlmICggJHskcmluX3RvY19wYWNrYWdlfSApIHsKICAgICAgICAgICAgJGh0bWxfdG9jX2ZoLT5wcmludCgiPC91bD5cbjwvbGk+XG4iKTsKICAgICAgICAgICAgJHskcmluX3RvY19wYWNrYWdlfSA9ICIiOwogICAgICAgIH0KICAgIH07CgogICAgbXkgJHN0YXJ0X3BhY2thZ2VfbGlzdCA9IHN1YiB7CiAgICAgICAgbXkgKCAkdW5pcXVlX25hbWUsICRwYWNrYWdlICkgPSBAXzsKICAgICAgICBpZiAoICR7JHJpbl90b2NfcGFja2FnZX0gKSB7ICRlbmRfcGFja2FnZV9saXN0LT4oKSB9CiAgICAgICAgJGh0bWxfdG9jX2ZoLT5wcmludCg8PEVPTSk7CjxsaT48YSBocmVmPVwiIyR1bmlxdWVfbmFtZVwiPnBhY2thZ2UgJHBhY2thZ2U8L2E+Cjx1bD4KRU9NCiAgICAgICAgJHskcmluX3RvY19wYWNrYWdlfSA9ICRwYWNrYWdlOwogICAgfTsKCiAgICAjIHN0YXJ0IHRoZSB0YWJsZSBvZiBjb250ZW50cyBvbiB0aGUgZmlyc3QgaXRlbQogICAgdW5sZXNzICggJHskcnRvY19pdGVtX2NvdW50fSApIHsKCiAgICAgICAgIyBidXQganVzdCBxdWl0IGlmIHdlIGhpdCBFT0Ygd2l0aG91dCBhbnkgb3RoZXIgZW50cmllcwogICAgICAgICMgaW4gdGhpcyBjYXNlLCB0aGVyZSB3aWxsIGJlIG5vIHRvYwogICAgICAgIHJldHVybiBpZiAoICR0eXBlIGVxICdFT0YnICk7CiAgICAgICAgJGh0bWxfdG9jX2ZoLT5wcmludCggPDwiVE9DX0VORCIpOwo8IS0tIEJFR0lOIENPREUgSU5ERVggLS0+PGEgbmFtZT0iY29kZS1pbmRleCI+PC9hPgo8dWw+ClRPQ19FTkQKICAgIH0KICAgICR7JHJ0b2NfaXRlbV9jb3VudH0rKzsKCiAgICAjIG1ha2UgYSB1bmlxdWUgYW5jaG9yIG5hbWUgZm9yIHRoaXMgbG9jYXRpb246CiAgICAjICAgLSBwYWNrYWdlcyBnZXQgYSAncGFja2FnZS0nIHByZWZpeAogICAgIyAgIC0gc3VicyB1c2UgdGhlaXIgbmFtZXMKICAgIG15ICR1bmlxdWVfbmFtZSA9ICRuYW1lOwogICAgaWYgKCAkdHlwZSBlcSAncGFja2FnZScgKSB7ICR1bmlxdWVfbmFtZSA9ICJwYWNrYWdlLSRuYW1lIiB9CgogICAgIyBhcHBlbmQgJy0xJywgJy0yJywgZXRjIGlmIG5lY2Vzc2FyeSB0byBtYWtlIHVuaXF1ZTsgdGhpcyB3aWxsCiAgICAjIGJlIHVuaXF1ZSBiZWNhdXNlIHN1YnMgYW5kIHBhY2thZ2VzIGNhbm5vdCBoYXZlIGEgJy0nCiAgICBpZiAoIG15ICRjb3VudCA9ICRydG9jX25hbWVfY291bnQtPnsgbGMgJHVuaXF1ZV9uYW1lIH0rKyApIHsKICAgICAgICAkdW5pcXVlX25hbWUgLj0gIi0kY291bnQiOwogICAgfQoKICAgICMgICAtIGFsbCBuYW1lcyBnZXQgdGVybWluYWwgJy0nIGlmIHBvZDJodG1sIGlzIHVzZWQsIHRvIGF2b2lkCiAgICAjICAgICBjb25mbGljdHMgd2l0aCBhbmNob3IgbmFtZXMgY3JlYXRlZCBieSBwb2QyaHRtbAogICAgaWYgKCAkck9wdHMtPnsncG9kMmh0bWwnfSApIHsgJHVuaXF1ZV9uYW1lIC49ICctJyB9CgogICAgIyBzdGFydC9zdG9wIGxpc3RzIG9mIHN1YnMKICAgIGlmICggJHR5cGUgZXEgJ3N1YicgKSB7CiAgICAgICAgbXkgJHBhY2thZ2UgPSAkcnBhY2thZ2Vfc3RhY2stPlsgJHskcmxhc3RfbGV2ZWx9IF07CiAgICAgICAgdW5sZXNzICgkcGFja2FnZSkgeyAkcGFja2FnZSA9ICdtYWluJyB9CgogICAgICAgICMgaWYgd2UncmUgYWxyZWFkeSBpbiBhIHBhY2thZ2Uvc3ViIGxpc3QsIGJlIHN1cmUgaXRzIHRoZSByaWdodAogICAgICAgICMgcGFja2FnZSBvciBlbHNlIGNsb3NlIGl0CiAgICAgICAgaWYgKCAkeyRyaW5fdG9jX3BhY2thZ2V9ICYmICR7JHJpbl90b2NfcGFja2FnZX0gbmUgJHBhY2thZ2UgKSB7CiAgICAgICAgICAgICRlbmRfcGFja2FnZV9saXN0LT4oKTsKICAgICAgICB9CgogICAgICAgICMgc3RhcnQgYSBwYWNrYWdlL3N1YiBsaXN0IGlmIG5lY2Vzc2FyeQogICAgICAgIHVubGVzcyAoICR7JHJpbl90b2NfcGFja2FnZX0gKSB7CiAgICAgICAgICAgICRzdGFydF9wYWNrYWdlX2xpc3QtPiggJHVuaXF1ZV9uYW1lLCAkcGFja2FnZSApOwogICAgICAgIH0KICAgIH0KCiAgICAjIG5vdyB3cml0ZSBhbiBlbnRyeSBpbiB0aGUgdG9jIGZvciB0aGlzIGl0ZW0KICAgIGlmICggJHR5cGUgZXEgJ3BhY2thZ2UnICkgewogICAgICAgICRzdGFydF9wYWNrYWdlX2xpc3QtPiggJHVuaXF1ZV9uYW1lLCAkbmFtZSApOwogICAgfQogICAgZWxzaWYgKCAkdHlwZSBlcSAnc3ViJyApIHsKICAgICAgICAkaHRtbF90b2NfZmgtPnByaW50KCI8bGk+PGEgaHJlZj1cIiMkdW5pcXVlX25hbWVcIj4kbmFtZTwvYT48L2xpPlxuIik7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkZW5kX3BhY2thZ2VfbGlzdC0+KCk7CiAgICAgICAgJGh0bWxfdG9jX2ZoLT5wcmludCgiPGxpPjxhIGhyZWY9XCIjJHVuaXF1ZV9uYW1lXCI+JG5hbWU8L2E+PC9saT5cbiIpOwogICAgfQoKICAgICMgd3JpdGUgdGhlIGFuY2hvciBpbiB0aGUgPHByZT4gc2VjdGlvbgogICAgJGh0bWxfcHJlX2ZoLT5wcmludCgiPGEgbmFtZT1cIiR1bmlxdWVfbmFtZVwiPjwvYT4iKTsKCiAgICAjIGVuZCB0aGUgdGFibGUgb2YgY29udGVudHMsIGlmIGFueSwgb24gdGhlIGVuZCBvZiBmaWxlCiAgICBpZiAoICR0eXBlIGVxICdFT0YnICkgewogICAgICAgICRodG1sX3RvY19maC0+cHJpbnQoIDw8IlRPQ19FTkQiKTsKPC91bD4KPCEtLSBFTkQgQ09ERSBJTkRFWCAtLT4KVE9DX0VORAogICAgfQogICAgcmV0dXJuOwp9CgpCRUdJTiB7CgogICAgIyBUaGlzIGlzIHRoZSBvZmZpY2lhbCBsaXN0IG9mIHRva2VucyB3aGljaCBtYXkgYmUgaWRlbnRpZmllZCBieSB0aGUKICAgICMgdXNlci4gIExvbmcgbmFtZXMgYXJlIHVzZWQgYXMgZ2V0b3B0IGtleXMuICBTaG9ydCBuYW1lcyBhcmUKICAgICMgY29udmVuaWVudCBzaG9ydCBhYmJyZXZpYXRpb25zIGZvciBzcGVjaWZ5aW5nIGlucHV0LiAgU2hvcnQgbmFtZXMKICAgICMgc29tZXdoYXQgcmVzZW1ibGUgdG9rZW4gdHlwZSBjaGFyYWN0ZXJzLCBidXQgYXJlIG9mdGVuIGRpZmZlcmVudAogICAgIyBiZWNhdXNlIHRoZXkgbWF5IG9ubHkgYmUgYWxwaGFudW1lcmljLCB0byBhbGxvdyBjb21tYW5kIGxpbmUKICAgICMgaW5wdXQuICBBbHNvLCBub3RlIHRoYXQgYmVjYXVzZSBvZiBjYXNlIGluc2Vuc2l0aXZpdHkgb2YgaHRtbCwKICAgICMgdGhpcyB0YWJsZSBtdXN0IGJlIGluIGEgc2luZ2xlIGNhc2Ugb25seSAoSSd2ZSBjaG9zZW4gdG8gdXNlIGFsbAogICAgIyBsb3dlciBjYXNlKS4KICAgICMgV2hlbiBhZGRpbmcgTkVXX1RPS0VOUzogdXBkYXRlIHRoaXMgaGFzaCB0YWJsZQogICAgIyBzaG9ydCBuYW1lcyA9PiBsb25nIG5hbWVzCiAgICAlc2hvcnRfdG9fbG9uZ19uYW1lcyA9ICgKICAgICAgICAnbicgID0+ICdudW1lcmljJywKICAgICAgICAncCcgID0+ICdwYXJlbicsCiAgICAgICAgJ3EnICA9PiAncXVvdGUnLAogICAgICAgICdzJyAgPT4gJ3N0cnVjdHVyZScsCiAgICAgICAgJ2MnICA9PiAnY29tbWVudCcsCiAgICAgICAgJ3YnICA9PiAndi1zdHJpbmcnLAogICAgICAgICdjbScgPT4gJ2NvbW1hJywKICAgICAgICAndycgID0+ICdiYXJld29yZCcsCiAgICAgICAgJ2NvJyA9PiAnY29sb24nLAogICAgICAgICdwdScgPT4gJ3B1bmN0dWF0aW9uJywKICAgICAgICAnaScgID0+ICdpZGVudGlmaWVyJywKICAgICAgICAnaicgID0+ICdsYWJlbCcsCiAgICAgICAgJ2gnICA9PiAnaGVyZS1kb2MtdGFyZ2V0JywKICAgICAgICAnaGgnID0+ICdoZXJlLWRvYy10ZXh0JywKICAgICAgICAnaycgID0+ICdrZXl3b3JkJywKICAgICAgICAnc2MnID0+ICdzZW1pY29sb24nLAogICAgICAgICdtJyAgPT4gJ3N1YnJvdXRpbmUnLAogICAgICAgICdwZCcgPT4gJ3BvZC10ZXh0JywKICAgICk7CgogICAgIyBOb3cgd2UgaGF2ZSB0byBtYXAgYWN0dWFsIHRva2VuIHR5cGVzIGludG8gb25lIG9mIHRoZSBhYm92ZSBzaG9ydAogICAgIyBuYW1lczsgYW55IHRva2VuIHR5cGVzIG5vdCBtYXBwZWQgd2lsbCBnZXQgJ3B1bmN0dWF0aW9uJwogICAgIyBwcm9wZXJ0aWVzLgoKICAgICMgVGhlIHZhbHVlcyBvZiB0aGlzIGhhc2ggdGFibGUgY29ycmVzcG9uZCB0byB0aGUga2V5cyBvZiB0aGUKICAgICMgcHJldmlvdXMgaGFzaCB0YWJsZS4KICAgICMgVGhlIGtleXMgb2YgdGhpcyBoYXNoIHRhYmxlIGFyZSB0b2tlbiB0eXBlcyBhbmQgY2FuIGJlIHNlZW4KICAgICMgYnkgcnVubmluZyB3aXRoIC0tZHVtcC10b2tlbi10eXBlcyAoLWR0dCkuCgogICAgIyBXaGVuIGFkZGluZyBORVdfVE9LRU5TOiB1cGRhdGUgdGhpcyBoYXNoIHRhYmxlCiAgICAjICR0eXBlID0+ICRzaG9ydF9uYW1lCiAgICAldG9rZW5fc2hvcnRfbmFtZXMgPSAoCiAgICAgICAgJyMnICA9PiAnYycsCiAgICAgICAgJ24nICA9PiAnbicsCiAgICAgICAgJ3YnICA9PiAndicsCiAgICAgICAgJ2snICA9PiAnaycsCiAgICAgICAgJ0YnICA9PiAnaycsCiAgICAgICAgJ1EnICA9PiAncScsCiAgICAgICAgJ3EnICA9PiAncScsCiAgICAgICAgJ0onICA9PiAnaicsCiAgICAgICAgJ2onICA9PiAnaicsCiAgICAgICAgJ2gnICA9PiAnaCcsCiAgICAgICAgJ0gnICA9PiAnaGgnLAogICAgICAgICd3JyAgPT4gJ3cnLAogICAgICAgICcsJyAgPT4gJ2NtJywKICAgICAgICAnPT4nID0+ICdjbScsCiAgICAgICAgJzsnICA9PiAnc2MnLAogICAgICAgICc6JyAgPT4gJ2NvJywKICAgICAgICAnZicgID0+ICdzYycsCiAgICAgICAgJygnICA9PiAncCcsCiAgICAgICAgJyknICA9PiAncCcsCiAgICAgICAgJ00nICA9PiAnbScsCiAgICAgICAgJ1AnICA9PiAncGQnLAogICAgICAgICdBJyAgPT4gJ2NvJywKICAgICk7CgogICAgIyBUaGVzZSB0b2tlbiB0eXBlcyB3aWxsIGFsbCBiZSBjYWxsZWQgaWRlbnRpZmllcnMgZm9yIG5vdwogICAgIyBGSVhNRTogY291bGQgc2VwYXJhdGUgdXNlciBkZWZpbmVkIG1vZHVsZXMgYXMgc2VwYXJhdGUgdHlwZQogICAgbXkgQGlkZW50aWZpZXIgPSBxdzwgaSB0IFUgQyBZIFogRyA6OiBDT1JFOjo+OwogICAgQHRva2VuX3Nob3J0X25hbWVze0BpZGVudGlmaWVyfSA9ICgnaScpIHggc2NhbGFyKEBpZGVudGlmaWVyKTsKCiAgICAjIFRoZXNlIHRva2VuIHR5cGVzIHdpbGwgYmUgY2FsbGVkICdzdHJ1Y3R1cmUnCiAgICBteSBAc3RydWN0dXJlID0gcXc8IHsgfSA+OwogICAgQHRva2VuX3Nob3J0X25hbWVze0BzdHJ1Y3R1cmV9ID0gKCdzJykgeCBzY2FsYXIoQHN0cnVjdHVyZSk7CgogICAgIyBPTEQgTk9URVM6IHNhdmUgZm9yIHJlZmVyZW5jZQogICAgIyBBbnkgb2YgdGhlc2UgY291bGQgYmUgYWRkZWQgbGF0ZXIgaWYgaXQgd291bGQgYmUgdXNlZnVsLgogICAgIyBGb3Igbm93LCB0aGV5IHdpbGwgYnkgZGVmYXVsdCBiZWNvbWUgcHVuY3R1YXRpb24KICAgICMgICAgbXkgQGxpc3QgPSBxdzwgTCBSIFsgXSA+OwogICAgIyAgICBAdG9rZW5fbG9uZ19uYW1lc3tAbGlzdH0gPSAoJ25vbi1zdHJ1Y3R1cmUnKSB4IHNjYWxhcihAbGlzdCk7CiAgICAjCiAgICAjICAgIG15IEBsaXN0ID0gcXciCiAgICAjICAgICAgLyAvPSAqICo9ICoqICoqPSArICs9IC0gLT0gJSAlPSA9ICsrIC0tIDw8IDw8PSA+PiA+Pj0gcHAgcCBtIG1tCiAgICAjICAgICAgIjsKICAgICMgICAgQHRva2VuX2xvbmdfbmFtZXN7QGxpc3R9ID0gKCdtYXRoJykgeCBzY2FsYXIoQGxpc3QpOwogICAgIwogICAgIyAgICBteSBAbGlzdCA9IHF3IiAmICY9IH4gfj0gXiBePSB8IHw9ICI7CiAgICAjICAgIEB0b2tlbl9sb25nX25hbWVze0BsaXN0fSA9ICgnYml0JykgeCBzY2FsYXIoQGxpc3QpOwogICAgIwogICAgIyAgICBteSBAbGlzdCA9IHF3IiA9PSAhPSA8ID4gPD0gPD0+ICI7CiAgICAjICAgIEB0b2tlbl9sb25nX25hbWVze0BsaXN0fSA9ICgnbnVtZXJpY2FsLWNvbXBhcmlzb24nKSB4IHNjYWxhcihAbGlzdCk7CiAgICAjCiAgICAjICAgIG15IEBsaXN0ID0gcXciICYmIHx8ICEgJiY9IHx8PSAvLz0gIjsKICAgICMgICAgQHRva2VuX2xvbmdfbmFtZXN7QGxpc3R9ID0gKCdsb2dpY2FsJykgeCBzY2FsYXIoQGxpc3QpOwogICAgIwogICAgIyAgICBteSBAbGlzdCA9IHF3IiAuIC49ID1+ICF+IHggeD0gIjsKICAgICMgICAgQHRva2VuX2xvbmdfbmFtZXN7QGxpc3R9ID0gKCdzdHJpbmctb3BlcmF0b3JzJykgeCBzY2FsYXIoQGxpc3QpOwogICAgIwogICAgIyAgICAjIEluY29tcGxldGUuLgogICAgIyAgICBteSBAbGlzdCA9IHF3IiAuLiAtPiA8PiAuLi4gXCA/ICI7CiAgICAjICAgIEB0b2tlbl9sb25nX25hbWVze0BsaXN0fSA9ICgnbWlzYy1vcGVyYXRvcnMnKSB4IHNjYWxhcihAbGlzdCk7Cgp9CgpzdWIgbWFrZV9nZXRvcHRfbG9uZ19uYW1lcyB7CiAgICBteSAoICRjbGFzcywgJHJnZXRvcHRfbmFtZXMgKSA9IEBfOwogICAgd2hpbGUgKCBteSAoICRzaG9ydF9uYW1lLCAkbmFtZSApID0gZWFjaCAlc2hvcnRfdG9fbG9uZ19uYW1lcyApIHsKICAgICAgICBwdXNoIEB7JHJnZXRvcHRfbmFtZXN9LCAiaHRtbC1jb2xvci0kbmFtZT1zIjsKICAgICAgICBwdXNoIEB7JHJnZXRvcHRfbmFtZXN9LCAiaHRtbC1pdGFsaWMtJG5hbWUhIjsKICAgICAgICBwdXNoIEB7JHJnZXRvcHRfbmFtZXN9LCAiaHRtbC1ib2xkLSRuYW1lISI7CiAgICB9CiAgICBwdXNoIEB7JHJnZXRvcHRfbmFtZXN9LCAiaHRtbC1jb2xvci1iYWNrZ3JvdW5kPXMiOwogICAgcHVzaCBAeyRyZ2V0b3B0X25hbWVzfSwgImh0bWwtbGlua2VkLXN0eWxlLXNoZWV0PXMiOwogICAgcHVzaCBAeyRyZ2V0b3B0X25hbWVzfSwgIm5vaHRtbC1zdHlsZS1zaGVldHMiOwogICAgcHVzaCBAeyRyZ2V0b3B0X25hbWVzfSwgImh0bWwtcHJlLW9ubHkiOwogICAgcHVzaCBAeyRyZ2V0b3B0X25hbWVzfSwgImh0bWwtbGluZS1udW1iZXJzIjsKICAgIHB1c2ggQHskcmdldG9wdF9uYW1lc30sICJodG1sLWVudGl0aWVzISI7CiAgICBwdXNoIEB7JHJnZXRvcHRfbmFtZXN9LCAic3R5bGVzaGVldCI7CiAgICBwdXNoIEB7JHJnZXRvcHRfbmFtZXN9LCAiaHRtbC10YWJsZS1vZi1jb250ZW50cyEiOwogICAgcHVzaCBAeyRyZ2V0b3B0X25hbWVzfSwgInBvZDJodG1sISI7CiAgICBwdXNoIEB7JHJnZXRvcHRfbmFtZXN9LCAiZnJhbWVzISI7CiAgICBwdXNoIEB7JHJnZXRvcHRfbmFtZXN9LCAiaHRtbC10b2MtZXh0ZW5zaW9uPXMiOwogICAgcHVzaCBAeyRyZ2V0b3B0X25hbWVzfSwgImh0bWwtc3JjLWV4dGVuc2lvbj1zIjsKCiAgICAjIFBvZDo6SHRtbCBwYXJhbWV0ZXJzOgogICAgcHVzaCBAeyRyZ2V0b3B0X25hbWVzfSwgImJhY2tsaW5rPXMiOwogICAgcHVzaCBAeyRyZ2V0b3B0X25hbWVzfSwgImNhY2hlZGlyPXMiOwogICAgcHVzaCBAeyRyZ2V0b3B0X25hbWVzfSwgImh0bWxyb290PXMiOwogICAgcHVzaCBAeyRyZ2V0b3B0X25hbWVzfSwgImxpYnBvZHM9cyI7CiAgICBwdXNoIEB7JHJnZXRvcHRfbmFtZXN9LCAicG9kcGF0aD1zIjsKICAgIHB1c2ggQHskcmdldG9wdF9uYW1lc30sICJwb2Ryb290PXMiOwogICAgcHVzaCBAeyRyZ2V0b3B0X25hbWVzfSwgInRpdGxlPXMiOwoKICAgICMgUG9kOjpIdG1sIHBhcmFtZXRlcnMgd2l0aCBsZWFkaW5nICdwb2QnIHdoaWNoIHdpbGwgYmUgcmVtb3ZlZAogICAgIyBiZWZvcmUgdGhlIGNhbGwgdG8gUG9kOjpIdG1sCiAgICBwdXNoIEB7JHJnZXRvcHRfbmFtZXN9LCAicG9kcXVpZXQhIjsKICAgIHB1c2ggQHskcmdldG9wdF9uYW1lc30sICJwb2R2ZXJib3NlISI7CiAgICBwdXNoIEB7JHJnZXRvcHRfbmFtZXN9LCAicG9kcmVjdXJzZSEiOwogICAgcHVzaCBAeyRyZ2V0b3B0X25hbWVzfSwgInBvZGZsdXNoIjsKICAgIHB1c2ggQHskcmdldG9wdF9uYW1lc30sICJwb2RoZWFkZXIhIjsKICAgIHB1c2ggQHskcmdldG9wdF9uYW1lc30sICJwb2RpbmRleCEiOwogICAgcmV0dXJuOwp9CgpzdWIgbWFrZV9hYmJyZXZpYXRlZF9uYW1lcyB7CgogICAgIyBXZSdyZSBhcHBlbmRpbmcgdGhpbmdzIGxpa2UgdGhpcyB0byB0aGUgZXhwYW5zaW9uIGxpc3Q6CiAgICAjICAgICAgJ2hjYycgICAgPT4gW3F3KGh0bWwtY29sb3ItY29tbWVudCldLAogICAgIyAgICAgICdoY2snICAgID0+IFtxdyhodG1sLWNvbG9yLWtleXdvcmQpXSwKICAgICMgIGV0YwogICAgbXkgKCAkY2xhc3MsICRyZXhwYW5zaW9uICkgPSBAXzsKCiAgICAjIGFiYnJldmlhdGlvbnMgZm9yIGNvbG9yL2JvbGQvaXRhbGljIHByb3BlcnRpZXMKICAgIHdoaWxlICggbXkgKCAkc2hvcnRfbmFtZSwgJGxvbmdfbmFtZSApID0gZWFjaCAlc2hvcnRfdG9fbG9uZ19uYW1lcyApIHsKICAgICAgICAkeyRyZXhwYW5zaW9ufXsiaGMkc2hvcnRfbmFtZSJ9ICA9IFsiaHRtbC1jb2xvci0kbG9uZ19uYW1lIl07CiAgICAgICAgJHskcmV4cGFuc2lvbn17ImhiJHNob3J0X25hbWUifSAgPSBbImh0bWwtYm9sZC0kbG9uZ19uYW1lIl07CiAgICAgICAgJHskcmV4cGFuc2lvbn17ImhpJHNob3J0X25hbWUifSAgPSBbImh0bWwtaXRhbGljLSRsb25nX25hbWUiXTsKICAgICAgICAkeyRyZXhwYW5zaW9ufXsibmhiJHNob3J0X25hbWUifSA9IFsibm9odG1sLWJvbGQtJGxvbmdfbmFtZSJdOwogICAgICAgICR7JHJleHBhbnNpb259eyJuaGkkc2hvcnRfbmFtZSJ9ID0gWyJub2h0bWwtaXRhbGljLSRsb25nX25hbWUiXTsKICAgIH0KCiAgICAjIGFiYnJldmlhdGlvbnMgZm9yIGFsbCBvdGhlciBodG1sIG9wdGlvbnMKICAgICR7JHJleHBhbnNpb259eyJoY2JnIn0gID0gWyJodG1sLWNvbG9yLWJhY2tncm91bmQiXTsKICAgICR7JHJleHBhbnNpb259eyJwcmUifSAgID0gWyJodG1sLXByZS1vbmx5Il07CiAgICAkeyRyZXhwYW5zaW9ufXsidG9jIn0gICA9IFsiaHRtbC10YWJsZS1vZi1jb250ZW50cyJdOwogICAgJHskcmV4cGFuc2lvbn17Im50b2MifSAgPSBbIm5vaHRtbC10YWJsZS1vZi1jb250ZW50cyJdOwogICAgJHskcmV4cGFuc2lvbn17Im5ubiJ9ICAgPSBbImh0bWwtbGluZS1udW1iZXJzIl07CiAgICAkeyRyZXhwYW5zaW9ufXsiaGVudCJ9ICA9IFsiaHRtbC1lbnRpdGllcyJdOwogICAgJHskcmV4cGFuc2lvbn17Im5oZW50In0gPSBbIm5vaHRtbC1lbnRpdGllcyJdOwogICAgJHskcmV4cGFuc2lvbn17ImNzcyJ9ICAgPSBbImh0bWwtbGlua2VkLXN0eWxlLXNoZWV0Il07CiAgICAkeyRyZXhwYW5zaW9ufXsibnNzIn0gICA9IFsibm9odG1sLXN0eWxlLXNoZWV0cyJdOwogICAgJHskcmV4cGFuc2lvbn17InNzIn0gICAgPSBbInN0eWxlc2hlZXQiXTsKICAgICR7JHJleHBhbnNpb259eyJwb2QifSAgID0gWyJwb2QyaHRtbCJdOwogICAgJHskcmV4cGFuc2lvbn17Im5wb2QifSAgPSBbIm5vcG9kMmh0bWwiXTsKICAgICR7JHJleHBhbnNpb259eyJmcm0ifSAgID0gWyJmcmFtZXMiXTsKICAgICR7JHJleHBhbnNpb259eyJuZnJtIn0gID0gWyJub2ZyYW1lcyJdOwogICAgJHskcmV4cGFuc2lvbn17InRleHQifSAgPSBbImh0bWwtdG9jLWV4dGVuc2lvbiJdOwogICAgJHskcmV4cGFuc2lvbn17InNleHQifSAgPSBbImh0bWwtc3JjLWV4dGVuc2lvbiJdOwogICAgcmV0dXJuOwp9CgpzdWIgY2hlY2tfb3B0aW9ucyB7CgogICAgIyBUaGlzIHdpbGwgYmUgY2FsbGVkIG9uY2UgYWZ0ZXIgb3B0aW9ucyBoYXZlIGJlZW4gcGFyc2VkCiAgICAjIE5vdGUgdGhhdCB3ZSBhcmUgZGVmaW5pbmcgdGhlIHBhY2thZ2UgdmFyaWFibGUgJHJPcHRzIGhlcmU6CiAgICAoIG15ICRjbGFzcywgJHJPcHRzICkgPSBAXzsKCiAgICAjIFgxMSBjb2xvciBuYW1lcyBmb3IgZGVmYXVsdCBzZXR0aW5ncyB0aGF0IHNlZW1lZCB0byBsb29rIG9rCiAgICAjICh0aGVzZSBjb2xvciBuYW1lcyBhcmUgb25seSB1c2VkIGZvciBwcm9ncmFtbWluZyBjbGFyaXR5OyB0aGUgaGV4CiAgICAjIG51bWJlcnMgYXJlIGFjdHVhbGx5IHdyaXR0ZW4pCiAgICB1c2UgY29uc3RhbnQgRm9yZXN0R3JlZW4gICA9PiAiIzIyOEIyMiI7CiAgICB1c2UgY29uc3RhbnQgU2FkZGxlQnJvd24gICA9PiAiIzhCNDUxMyI7CiAgICB1c2UgY29uc3RhbnQgbWFnZW50YTQgICAgICA9PiAiIzhCMDA4QiI7CiAgICB1c2UgY29uc3RhbnQgSW5kaWFuUmVkMyAgICA9PiAiI0NENTU1NSI7CiAgICB1c2UgY29uc3RhbnQgRGVlcFNreUJsdWU0ICA9PiAiIzAwNjg4QiI7CiAgICB1c2UgY29uc3RhbnQgTWVkaXVtT3JjaGlkMyA9PiAiI0I0NTJDRCI7CiAgICB1c2UgY29uc3RhbnQgYmxhY2sgICAgICAgICA9PiAiIzAwMDAwMCI7CiAgICB1c2UgY29uc3RhbnQgd2hpdGUgICAgICAgICA9PiAiI0ZGRkZGRiI7CiAgICB1c2UgY29uc3RhbnQgcmVkICAgICAgICAgICA9PiAiI0ZGMDAwMCI7CgogICAgIyBzZXQgZGVmYXVsdCBjb2xvciwgYm9sZCwgaXRhbGljIHByb3BlcnRpZXMKICAgICMgYW55dGhpbmcgbm90IGxpc3RlZCBoZXJlIHdpbGwgYmUgZ2l2ZW4gdGhlIGRlZmF1bHQgKHB1bmN0dWF0aW9uKSBjb2xvciAtLQogICAgIyB0aGVzZSB0eXBlcyBjdXJyZW50bHkgbm90IGxpc3RlZCBhbmQgZ2V0IGRlZmF1bHQ6IHdzIHB1IHMgc2MgY20gY28gcAogICAgIyBXaGVuIGFkZGluZyBORVdfVE9LRU5TOiBhZGQgYW4gZW50cnkgaGVyZSBpZiB5b3UgZG9uJ3Qgd2FudCBkZWZhdWx0cwoKICAgICMgc2V0X2RlZmF1bHRfcHJvcGVydGllcyggJHNob3J0X25hbWUsIGRlZmF1bHRfY29sb3IsIGJvbGQ/LCBpdGFsaWM/ICk7CiAgICBzZXRfZGVmYXVsdF9wcm9wZXJ0aWVzKCAnYycsICBGb3Jlc3RHcmVlbiwgICAwLCAwICk7CiAgICBzZXRfZGVmYXVsdF9wcm9wZXJ0aWVzKCAncGQnLCBGb3Jlc3RHcmVlbiwgICAwLCAxICk7CiAgICBzZXRfZGVmYXVsdF9wcm9wZXJ0aWVzKCAnaycsICBtYWdlbnRhNCwgICAgICAxLCAwICk7ICAgICMgd2FzIFNhZGRsZUJyb3duCiAgICBzZXRfZGVmYXVsdF9wcm9wZXJ0aWVzKCAncScsICBJbmRpYW5SZWQzLCAgICAwLCAwICk7CiAgICBzZXRfZGVmYXVsdF9wcm9wZXJ0aWVzKCAnaGgnLCBJbmRpYW5SZWQzLCAgICAwLCAxICk7CiAgICBzZXRfZGVmYXVsdF9wcm9wZXJ0aWVzKCAnaCcsICBJbmRpYW5SZWQzLCAgICAxLCAwICk7CiAgICBzZXRfZGVmYXVsdF9wcm9wZXJ0aWVzKCAnaScsICBEZWVwU2t5Qmx1ZTQsICAwLCAwICk7CiAgICBzZXRfZGVmYXVsdF9wcm9wZXJ0aWVzKCAndycsICBibGFjaywgICAgICAgICAwLCAwICk7CiAgICBzZXRfZGVmYXVsdF9wcm9wZXJ0aWVzKCAnbicsICBNZWRpdW1PcmNoaWQzLCAwLCAwICk7CiAgICBzZXRfZGVmYXVsdF9wcm9wZXJ0aWVzKCAndicsICBNZWRpdW1PcmNoaWQzLCAwLCAwICk7CiAgICBzZXRfZGVmYXVsdF9wcm9wZXJ0aWVzKCAnaicsICBJbmRpYW5SZWQzLCAgICAxLCAwICk7CiAgICBzZXRfZGVmYXVsdF9wcm9wZXJ0aWVzKCAnbScsICByZWQsICAgICAgICAgICAxLCAwICk7CgogICAgc2V0X2RlZmF1bHRfY29sb3IoICdodG1sLWNvbG9yLWJhY2tncm91bmQnLCAgd2hpdGUgKTsKICAgIHNldF9kZWZhdWx0X2NvbG9yKCAnaHRtbC1jb2xvci1wdW5jdHVhdGlvbicsIGJsYWNrICk7CgogICAgIyBzZXR1cCBwcm9wZXJ0eSBsb29rdXAgdGFibGVzIGZvciB0b2tlbnMgYmFzZWQgb24gdGhlaXIgc2hvcnQgbmFtZXMKICAgICMgZXZlcnkgdG9rZW4gdHlwZSBoYXMgYSBzaG9ydCBuYW1lLCBhbmQgd2lsbCB1c2UgdGhlc2UgdGFibGVzCiAgICAjIHRvIGRvIHRoZSBodG1sIG1hcmt1cAogICAgd2hpbGUgKCBteSAoICRzaG9ydF9uYW1lLCAkbG9uZ19uYW1lICkgPSBlYWNoICVzaG9ydF90b19sb25nX25hbWVzICkgewogICAgICAgICRodG1sX2NvbG9yeyRzaG9ydF9uYW1lfSAgPSAkck9wdHMtPnsiaHRtbC1jb2xvci0kbG9uZ19uYW1lIn07CiAgICAgICAgJGh0bWxfYm9sZHskc2hvcnRfbmFtZX0gICA9ICRyT3B0cy0+eyJodG1sLWJvbGQtJGxvbmdfbmFtZSJ9OwogICAgICAgICRodG1sX2l0YWxpY3skc2hvcnRfbmFtZX0gPSAkck9wdHMtPnsiaHRtbC1pdGFsaWMtJGxvbmdfbmFtZSJ9OwogICAgfQoKICAgICMgd3JpdGUgc3R5bGUgc2hlZXQgdG8gU1RET1VUIGFuZCBkaWUgaWYgcmVxdWVzdGVkCiAgICBpZiAoIGRlZmluZWQoICRyT3B0cy0+eydzdHlsZXNoZWV0J30gKSApIHsKICAgICAgICB3cml0ZV9zdHlsZV9zaGVldF9maWxlKCctJyk7CiAgICAgICAgUGVybDo6VGlkeTo6RXhpdCgwKTsKICAgIH0KCiAgICAjIG1ha2Ugc3VyZSB1c2VyIGdpdmVzIGEgZmlsZSBuYW1lIGFmdGVyIC1jc3MKICAgIGlmICggZGVmaW5lZCggJHJPcHRzLT57J2h0bWwtbGlua2VkLXN0eWxlLXNoZWV0J30gKSApIHsKICAgICAgICAkY3NzX2xpbmtuYW1lID0gJHJPcHRzLT57J2h0bWwtbGlua2VkLXN0eWxlLXNoZWV0J307CiAgICAgICAgaWYgKCAkY3NzX2xpbmtuYW1lID1+IC9eLS8gKSB7CiAgICAgICAgICAgIFBlcmw6OlRpZHk6OkRpZSgiWW91IG11c3Qgc3BlY2lmeSBhIHZhbGlkIGZpbGVuYW1lIGFmdGVyIC1jc3NcbiIpOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGZvciBjb25mbGljdAogICAgaWYgKCAkY3NzX2xpbmtuYW1lICYmICRyT3B0cy0+eydub2h0bWwtc3R5bGUtc2hlZXRzJ30gKSB7CiAgICAgICAgJHJPcHRzLT57J25vaHRtbC1zdHlsZS1zaGVldHMnfSA9IDA7CiAgICAgICAgd2FybmluZygiWW91IGNhbid0IHNwZWNpZnkgYm90aCAtY3NzIGFuZCAtbnNzOyAtbnNzIGlnbm9yZWRcbiIpOwogICAgfQoKICAgICMgd3JpdGUgYSBzdHlsZSBzaGVldCBmaWxlIGlmIG5lY2Vzc2FyeQogICAgaWYgKCRjc3NfbGlua25hbWUpIHsKCiAgICAgICAgIyBpZiB0aGUgc2VsZWN0ZWQgZmlsZW5hbWUgZXhpc3RzLCBkb24ndCB3cml0ZSwgYmVjYXVzZSB1c2VyIG1heQogICAgICAgICMgaGF2ZSBkb25lIHNvbWUgd29yayBieSBoYW5kIHRvIGNyZWF0ZSBpdDsgdXNlIGJhY2t1cCBuYW1lIGluc3RlYWQKICAgICAgICAjIEFsc28sIHRoaXMgd2lsbCBhdm9pZCBhIHBvdGVudGlhbCBkaXNhc3RlciBpbiB3aGljaCB0aGUgdXNlcgogICAgICAgICMgZm9yZ2V0cyB0byBzcGVjaWZ5IHRoZSBzdHlsZSBzaGVldCwgbGlrZSB0aGlzOgogICAgICAgICMgICAgcGVybHRpZHkgLWh0bWwgLWNzcyBteWZpbGUxLnBsIG15ZmlsZTIucGwKICAgICAgICAjIFRoaXMgd291bGQgY2F1c2UgbXlmaWxlMS5wbCB0byBwYXJzZWQgYXMgdGhlIHN0eWxlIHNoZWV0IGJ5IEdldE9wdHMKICAgICAgICBteSAkY3NzX2ZpbGVuYW1lID0gJGNzc19saW5rbmFtZTsKICAgICAgICB1bmxlc3MgKCAtZSAkY3NzX2ZpbGVuYW1lICkgewogICAgICAgICAgICB3cml0ZV9zdHlsZV9zaGVldF9maWxlKCRjc3NfZmlsZW5hbWUpOwogICAgICAgIH0KICAgIH0KICAgICRtaXNzaW5nX2h0bWxfZW50aXRpZXMgPSAxIHVubGVzcyAkck9wdHMtPnsnaHRtbC1lbnRpdGllcyd9OwogICAgcmV0dXJuOwp9CgpzdWIgd3JpdGVfc3R5bGVfc2hlZXRfZmlsZSB7CgogICAgbXkgJGNzc19maWxlbmFtZSA9IHNoaWZ0OwogICAgbXkgJGZoOwogICAgdW5sZXNzICggJGZoID0gSU86OkZpbGUtPm5ldygiPiAkY3NzX2ZpbGVuYW1lIikgKSB7CiAgICAgICAgUGVybDo6VGlkeTo6RGllKCJjYW4ndCBvcGVuICRjc3NfZmlsZW5hbWU6ICQhXG4iKTsKICAgIH0KICAgIHdyaXRlX3N0eWxlX3NoZWV0X2RhdGEoJGZoKTsKICAgIGNsb3NlX29iamVjdCgkZmgpOwogICAgcmV0dXJuOwp9CgpzdWIgd3JpdGVfc3R5bGVfc2hlZXRfZGF0YSB7CgogICAgIyB3cml0ZSB0aGUgc3R5bGUgc2hlZXQgZGF0YSB0byBhbiBvcGVuIGZpbGUgaGFuZGxlCiAgICBteSAkZmggPSBzaGlmdDsKCiAgICBteSAkYmdfY29sb3IgICA9ICRyT3B0cy0+eydodG1sLWNvbG9yLWJhY2tncm91bmQnfTsKICAgIG15ICR0ZXh0X2NvbG9yID0gJHJPcHRzLT57J2h0bWwtY29sb3ItcHVuY3R1YXRpb24nfTsKCiAgICAjIHByZS1iZ2NvbG9yIGlzIG5ldywgYW5kIG1heSBub3QgYmUgZGVmaW5lZAogICAgbXkgJHByZV9iZ19jb2xvciA9ICRyT3B0cy0+eydodG1sLXByZS1jb2xvci1iYWNrZ3JvdW5kJ307CiAgICAkcHJlX2JnX2NvbG9yID0gJGJnX2NvbG9yIHVubGVzcyAkcHJlX2JnX2NvbG9yOwoKICAgICRmaC0+cHJpbnQoPDwiRU9NIik7Ci8qIGRlZmF1bHQgc3R5bGUgc2hlZXQgZ2VuZXJhdGVkIGJ5IHBlcmx0aWR5ICovCmJvZHkge2JhY2tncm91bmQ6ICRiZ19jb2xvcjsgY29sb3I6ICR0ZXh0X2NvbG9yfQpwcmUgeyBjb2xvcjogJHRleHRfY29sb3I7IAogICAgICBiYWNrZ3JvdW5kOiAkcHJlX2JnX2NvbG9yOwogICAgICBmb250LWZhbWlseTogY291cmllcjsKICAgIH0gCgpFT00KCiAgICBmb3JlYWNoIG15ICRzaG9ydF9uYW1lICggc29ydCBrZXlzICVzaG9ydF90b19sb25nX25hbWVzICkgewogICAgICAgIG15ICRsb25nX25hbWUgPSAkc2hvcnRfdG9fbG9uZ19uYW1lc3skc2hvcnRfbmFtZX07CgogICAgICAgIG15ICRhYmJyZXYgPSAnLicgLiAkc2hvcnRfbmFtZTsKICAgICAgICBpZiAoIGxlbmd0aCgkc2hvcnRfbmFtZSkgPT0gMSApIHsgJGFiYnJldiAuPSAnICcgfSAgICAjIGZvciBhbGlnbm1lbnQKICAgICAgICBteSAkY29sb3IgPSAkaHRtbF9jb2xvcnskc2hvcnRfbmFtZX07CiAgICAgICAgaWYgKCAhZGVmaW5lZCgkY29sb3IpICkgeyAkY29sb3IgPSAkdGV4dF9jb2xvciB9CiAgICAgICAgJGZoLT5wcmludCgiJGFiYnJldiBceyBjb2xvcjogJGNvbG9yOyIpOwoKICAgICAgICBpZiAoICRodG1sX2JvbGR7JHNob3J0X25hbWV9ICkgewogICAgICAgICAgICAkZmgtPnByaW50KCIgZm9udC13ZWlnaHQ6Ym9sZDsiKTsKICAgICAgICB9CgogICAgICAgIGlmICggJGh0bWxfaXRhbGljeyRzaG9ydF9uYW1lfSApIHsKICAgICAgICAgICAgJGZoLT5wcmludCgiIGZvbnQtc3R5bGU6aXRhbGljOyIpOwogICAgICAgIH0KICAgICAgICAkZmgtPnByaW50KCJ9IC8qICRsb25nX25hbWUgKi9cbiIpOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgc2V0X2RlZmF1bHRfY29sb3IgewoKICAgICMgbWFrZSBzdXJlIHRoYXQgb3B0aW9ucyBoYXNoICRyT3B0cy0+eyRrZXl9IGNvbnRhaW5zIGEgdmFsaWQgY29sb3IKICAgIG15ICggJGtleSwgJGNvbG9yICkgPSBAXzsKICAgIGlmICggJHJPcHRzLT57JGtleX0gKSB7ICRjb2xvciA9ICRyT3B0cy0+eyRrZXl9IH0KICAgICRyT3B0cy0+eyRrZXl9ID0gY2hlY2tfUkdCKCRjb2xvcik7CiAgICByZXR1cm47Cn0KCnN1YiBjaGVja19SR0IgewoKICAgICMgaWYgY29sb3IgaXMgYSA2IGRpZ2l0IGhleCBSR0IgdmFsdWUsIHByZXBlbmQgYSAjLCBvdGhlcndpc2UKICAgICMgYXNzdW1lIHRoYXQgaXQgaXMgYSB2YWxpZCBhc2NpaSBjb2xvciBuYW1lCiAgICBteSAoJGNvbG9yKSA9IEBfOwogICAgaWYgKCAkY29sb3IgPX4gL15bMC05YS1mQS1GXXs2LDZ9JC8gKSB7ICRjb2xvciA9ICIjJGNvbG9yIiB9CiAgICByZXR1cm4gJGNvbG9yOwp9CgpzdWIgc2V0X2RlZmF1bHRfcHJvcGVydGllcyB7CiAgICBteSAoICRzaG9ydF9uYW1lLCAkY29sb3IsICRib2xkLCAkaXRhbGljICkgPSBAXzsKCiAgICBzZXRfZGVmYXVsdF9jb2xvciggImh0bWwtY29sb3ItJHNob3J0X3RvX2xvbmdfbmFtZXN7JHNob3J0X25hbWV9IiwgJGNvbG9yICk7CiAgICBteSAka2V5OwogICAgJGtleSAgICAgICAgICAgPSAiaHRtbC1ib2xkLSRzaG9ydF90b19sb25nX25hbWVzeyRzaG9ydF9uYW1lfSI7CiAgICAkck9wdHMtPnska2V5fSA9ICggZGVmaW5lZCAkck9wdHMtPnska2V5fSApID8gJHJPcHRzLT57JGtleX0gOiAkYm9sZDsKICAgICRrZXkgICAgICAgICAgID0gImh0bWwtaXRhbGljLSRzaG9ydF90b19sb25nX25hbWVzeyRzaG9ydF9uYW1lfSI7CiAgICAkck9wdHMtPnska2V5fSA9ICggZGVmaW5lZCAkck9wdHMtPnska2V5fSApID8gJHJPcHRzLT57JGtleX0gOiAkaXRhbGljOwogICAgcmV0dXJuOwp9CgpzdWIgcG9kX3RvX2h0bWwgewoKICAgICMgVXNlIFBvZDo6SHRtbCB0byBwcm9jZXNzIHRoZSBwb2QgYW5kIG1ha2UgdGhlIHBhZ2UKICAgICMgdGhlbiBtZXJnZSB0aGUgcGVybHRpZHkgY29kZSBzZWN0aW9ucyBpbnRvIGl0LgogICAgIyByZXR1cm4gMSBpZiBzdWNjZXNzLCAwIG90aGVyd2lzZQogICAgbXkgKCAkc2VsZiwgJHBvZF9zdHJpbmcsICRjc3Nfc3RyaW5nLCAkdG9jX3N0cmluZywgJHJwcmVfc3RyaW5nX3N0YWNrICkgPQogICAgICBAXzsKICAgIG15ICRpbnB1dF9maWxlICAgPSAkc2VsZi0+e19pbnB1dF9maWxlfTsKICAgIG15ICR0aXRsZSAgICAgICAgPSAkc2VsZi0+e190aXRsZX07CiAgICBteSAkc3VjY2Vzc19mbGFnID0gMDsKCiAgICAjIGRvbid0IHRyeSB0byB1c2UgcG9kMmh0bWwgaWYgbm8gcG9kCiAgICB1bmxlc3MgKCRwb2Rfc3RyaW5nKSB7CiAgICAgICAgcmV0dXJuICRzdWNjZXNzX2ZsYWc7CiAgICB9CgogICAgIyBQb2Q6Okh0bWwgcmVxdWlyZXMgYSByZWFsIHRlbXBvcmFyeSBmaWxlbmFtZQogICAgbXkgKCAkZmhfdG1wLCAkdG1wZmlsZSApID0gRmlsZTo6VGVtcDo6dGVtcGZpbGUoKTsKICAgIHVubGVzcyAoJGZoX3RtcCkgewogICAgICAgIFBlcmw6OlRpZHk6Oldhcm4oCiAgICAgICAgICAgICJ1bmFibGUgdG8gb3BlbiB0ZW1wb3JhcnkgZmlsZSAkdG1wZmlsZTsgY2Fubm90IHVzZSBwb2QyaHRtbFxuIik7CiAgICAgICAgcmV0dXJuICRzdWNjZXNzX2ZsYWc7CiAgICB9CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyBXYXJuaW5nOiBhIHRlbXBvcmFyeSBmaWxlIGlzIG9wZW47IHdlIGhhdmUgdG8gY2xlYW4gdXAgaWYKICAgICMgdGhpbmdzIGdvIGJhZC4gIEZyb20gaGVyZSBvbiBhbGwgcmV0dXJucyBzaG91bGQgYmUgYnkgZ29pbmcgdG8KICAgICMgUkVUVVJOIHNvIHRoYXQgdGhlIHRlbXBvcmFyeSBmaWxlIGdldHMgdW5saW5rZWQuCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgIyB3cml0ZSB0aGUgcG9kIHRleHQgdG8gdGhlIHRlbXBvcmFyeSBmaWxlCiAgICAkZmhfdG1wLT5wcmludCgkcG9kX3N0cmluZyk7CiAgICAkZmhfdG1wLT5jbG9zZSgpOwoKICAgICMgSGFuZCBvZmYgdGhlIHBvZCB0byBwb2QyaHRtbC4KICAgICMgTm90ZSB0aGF0IHdlIGNhbiB1c2UgdGhlIHNhbWUgdGVtcG9yYXJ5IGZpbGVuYW1lIGZvciBpbnB1dCBhbmQgb3V0cHV0CiAgICAjIGJlY2F1c2Ugb2YgdGhlIHdheSBwb2QyaHRtbCB3b3Jrcy4KICAgIHsKCiAgICAgICAgbXkgQGFyZ3M7CiAgICAgICAgcHVzaCBAYXJncywgIi0taW5maWxlPSR0bXBmaWxlIiwgIi0tb3V0ZmlsZT0kdG1wZmlsZSIsICItLXRpdGxlPSR0aXRsZSI7CgogICAgICAgICMgRmxhZ3Mgd2l0aCBzdHJpbmcgYXJnczoKICAgICAgICAjICJiYWNrbGluaz1zIiwgImNhY2hlZGlyPXMiLCAiaHRtbHJvb3Q9cyIsICJsaWJwb2RzPXMiLAogICAgICAgICMgInBvZHBhdGg9cyIsICJwb2Ryb290PXMiCiAgICAgICAgIyBOb3RlOiAtY3NzPXMgaXMgaGFuZGxlZCBieSBwZXJsdGlkeSBpdHNlbGYKICAgICAgICBmb3JlYWNoIG15ICRrdyAocXcoYmFja2xpbmsgY2FjaGVkaXIgaHRtbHJvb3QgbGlicG9kcyBwb2RwYXRoIHBvZHJvb3QpKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKCAkck9wdHMtPnska3d9ICkgeyBwdXNoIEBhcmdzLCAiLS0ka3c9JHJPcHRzLT57JGt3fSIgfQogICAgICAgIH0KCiAgICAgICAgIyBUb2dnbGUgc3dpdGNoZXM7IHRoZXNlIGhhdmUgZXh0cmEgbGVhZGluZyAncG9kJwogICAgICAgICMgImhlYWRlciEiLCAiaW5kZXghIiwgInJlY3Vyc2UhIiwgInF1aWV0ISIsICJ2ZXJib3NlISIKICAgICAgICBmb3JlYWNoIG15ICRrdyAocXcocG9kaGVhZGVyIHBvZGluZGV4IHBvZHJlY3Vyc2UgcG9kcXVpZXQgcG9kdmVyYm9zZSkpIHsKICAgICAgICAgICAgbXkgJGt3ZCA9ICRrdzsgICAgIyBhbGxvd3MgdXMgdG8gc3RyaXAgJ3BvZCcKICAgICAgICAgICAgaWYgKCAkck9wdHMtPnska3d9ICkgeyAka3dkID1+IHMvXnBvZC8vOyBwdXNoIEBhcmdzLCAiLS0ka3dkIiB9CiAgICAgICAgICAgIGVsc2lmICggZGVmaW5lZCggJHJPcHRzLT57JGt3fSApICkgewogICAgICAgICAgICAgICAgJGt3ZCA9fiBzL15wb2QvLzsKICAgICAgICAgICAgICAgIHB1c2ggQGFyZ3MsICItLW5vJGt3ZCI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgImZsdXNoIiwKICAgICAgICBteSAka3cgPSAncG9kZmx1c2gnOwogICAgICAgIGlmICggJHJPcHRzLT57JGt3fSApIHsgJGt3ID1+IHMvXnBvZC8vOyBwdXNoIEBhcmdzLCAiLS0ka3ciIH0KCiAgICAgICAgIyBNdXN0IGNsZWFuIHVwIGlmIHBvZDJodG1sIGRpZXMgKGl0IGNhbik7CiAgICAgICAgIyBCZSBjYXJlZnVsIG5vdCB0byBvdmVyd3JpdGUgY2FsbGVycyBfX0RJRV9fIHJvdXRpbmUKICAgICAgICBsb2NhbCAkU0lHe19fRElFX199ID0gc3ViIHsKICAgICAgICAgICAgdW5saW5rICR0bXBmaWxlIGlmIC1lICR0bXBmaWxlOwogICAgICAgICAgICBQZXJsOjpUaWR5OjpEaWUoICRfWzBdICk7CiAgICAgICAgfTsKCiAgICAgICAgcG9kMmh0bWwoQGFyZ3MpOwogICAgfQogICAgJGZoX3RtcCA9IElPOjpGaWxlLT5uZXcoICR0bXBmaWxlLCAncicgKTsKICAgIHVubGVzcyAoJGZoX3RtcCkgewoKICAgICAgICAjIHRoaXMgZXJyb3Igc2hvdWxkbid0IGhhcHBlbiAuLi4gd2UganVzdCB1c2VkIHRoaXMgZmlsZW5hbWUKICAgICAgICBQZXJsOjpUaWR5OjpXYXJuKAogICAgICAgICAgICAidW5hYmxlIHRvIG9wZW4gdGVtcG9yYXJ5IGZpbGUgJHRtcGZpbGU7IGNhbm5vdCB1c2UgcG9kMmh0bWxcbiIpOwogICAgICAgIGdvdG8gUkVUVVJOOwogICAgfQoKICAgIG15ICRodG1sX2ZoID0gJHNlbGYtPntfaHRtbF9maH07CiAgICBteSBAdG9jOwogICAgbXkgJGluX3RvYzsKICAgIG15ICR1bF9sZXZlbCA9IDA7CiAgICBteSAkbm9fcHJpbnQ7CgogICAgIyBUaGlzIHJvdXRpbmUgd2lsbCB3cml0ZSB0aGUgaHRtbCBzZWxlY3RpdmVseSBhbmQgc3RvcmUgdGhlIHRvYwogICAgbXkgJGh0bWxfcHJpbnQgPSBzdWIgewogICAgICAgIGZvcmVhY2ggKEBfKSB7CiAgICAgICAgICAgICRodG1sX2ZoLT5wcmludCgkXykgdW5sZXNzICgkbm9fcHJpbnQpOwogICAgICAgICAgICBpZiAoJGluX3RvYykgeyBwdXNoIEB0b2MsICRfIH0KICAgICAgICB9CiAgICB9OwoKICAgICMgbG9vcCBvdmVyIGxpbmVzIG9mIGh0bWwgb3V0cHV0IGZyb20gcG9kMmh0bWwgYW5kIG1lcmdlIGluCiAgICAjIHRoZSBuZWNlc3NhcnkgcGVybHRpZHkgaHRtbCBzZWN0aW9ucwogICAgbXkgKCAkc2F3X2JvZHksICRzYXdfaW5kZXgsICRzYXdfYm9keV9lbmQgKTsKCiAgICBteSAkdGltZXN0YW1wID0gIiI7CiAgICBpZiAoICRyT3B0cy0+eyd0aW1lc3RhbXAnfSApIHsKICAgICAgICBteSAkZGF0ZSA9IGxvY2FsdGltZTsKICAgICAgICAkdGltZXN0YW1wID0gIm9uICRkYXRlIjsKICAgIH0KICAgIHdoaWxlICggbXkgJGxpbmUgPSAkZmhfdG1wLT5nZXRsaW5lKCkgKSB7CgogICAgICAgIGlmICggJGxpbmUgPX4gL15ccyo8aHRtbD5ccyokL2kgKSB7CiAgICAgICAgICAgICMjbXkgJGRhdGUgPSBsb2NhbHRpbWU7CiAgICAgICAgICAgICMjJGh0bWxfcHJpbnQtPigiPCEtLSBHZW5lcmF0ZWQgYnkgcGVybHRpZHkgb24gJGRhdGUgLS0+XG4iKTsKICAgICAgICAgICAgJGh0bWxfcHJpbnQtPigiPCEtLSBHZW5lcmF0ZWQgYnkgcGVybHRpZHkgJHRpbWVzdGFtcCAtLT5cbiIpOwogICAgICAgICAgICAkaHRtbF9wcmludC0+KCRsaW5lKTsKICAgICAgICB9CgogICAgICAgICMgQ29weSB0aGUgcGVybHRpZHkgY3NzLCBpZiBhbnksIGFmdGVyIDxib2R5PiB0YWcKICAgICAgICBlbHNpZiAoICRsaW5lID1+IC9eXHMqPGJvZHkuKj5ccyokL2kgKSB7CiAgICAgICAgICAgICRzYXdfYm9keSA9IDE7CiAgICAgICAgICAgICRodG1sX3ByaW50LT4oJGNzc19zdHJpbmcpIGlmICRjc3Nfc3RyaW5nOwogICAgICAgICAgICAkaHRtbF9wcmludC0+KCRsaW5lKTsKCiAgICAgICAgICAgICMgYWRkIGEgdG9wIGFuY2hvciBhbmQgaGVhZGluZwogICAgICAgICAgICAkaHRtbF9wcmludC0+KCI8YSBuYW1lPVwiLXRvcC1cIj48L2E+XG4iKTsKICAgICAgICAgICAgJHRpdGxlID0gZXNjYXBlX2h0bWwoJHRpdGxlKTsKICAgICAgICAgICAgJGh0bWxfcHJpbnQtPigiPGgxPiR0aXRsZTwvaDE+XG4iKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZm9yIHN0YXJ0IG9mIGluZGV4LCBvbGQgcG9kMmh0bWwKICAgICAgICAjIGJlZm9yZSBQb2Q6Okh0bWwgVkVSU0lPTiAxLjE1XzAyIGl0IGlzIGRlbGltaXRlZCBieSBjb21tZW50cyBhczoKICAgICAgICAjICAgIDwhLS0gSU5ERVggQkVHSU4gLS0+CiAgICAgICAgIyAgICA8dWw+CiAgICAgICAgIyAgICAgLi4uCiAgICAgICAgIyAgICA8L3VsPgogICAgICAgICMgICAgPCEtLSBJTkRFWCBFTkQgLS0+CiAgICAgICAgIwogICAgICAgIGVsc2lmICggJGxpbmUgPX4gL15ccyo8IS0tIElOREVYIEJFR0lOIC0tPlxzKiQvaSApIHsKICAgICAgICAgICAgJGluX3RvYyA9ICdJTkRFWCc7CgogICAgICAgICAgICAjIHdoZW4gZnJhbWVzIGFyZSB1c2VkLCBhbiBleHRyYSB0YWJsZSBvZiBjb250ZW50cyBpbiB0aGUKICAgICAgICAgICAgIyBjb250ZW50cyBwYW5lbCBpcyBjb25mdXNpbmcsIHNvIGRvbid0IHByaW50IGl0CiAgICAgICAgICAgICRub19wcmludCA9ICRyT3B0cy0+eydmcmFtZXMnfQogICAgICAgICAgICAgIHx8ICEkck9wdHMtPnsnaHRtbC10YWJsZS1vZi1jb250ZW50cyd9OwogICAgICAgICAgICAkaHRtbF9wcmludC0+KCI8aDI+RG9jIEluZGV4OjwvaDI+XG4iKSBpZiAkck9wdHMtPnsnZnJhbWVzJ307CiAgICAgICAgICAgICRodG1sX3ByaW50LT4oJGxpbmUpOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBmb3Igc3RhcnQgb2YgaW5kZXgsIG5ldyBwb2QyaHRtbAogICAgICAgICMgQWZ0ZXIgUG9kOjpIdG1sIFZFUlNJT04gMS4xNV8wMiBpdCBpcyBkZWxpbWl0ZWQgYXM6CiAgICAgICAgIyA8dWwgaWQ9ImluZGV4Ij4KICAgICAgICAjIC4uLgogICAgICAgICMgPC91bD4KICAgICAgICBlbHNpZiAoICRsaW5lID1+IC9eXHMqPHVsXHMraWQ9ImluZGV4Ij4vaSApIHsKICAgICAgICAgICAgJGluX3RvYyAgID0gJ1VMJzsKICAgICAgICAgICAgJHVsX2xldmVsID0gMTsKCiAgICAgICAgICAgICMgd2hlbiBmcmFtZXMgYXJlIHVzZWQsIGFuIGV4dHJhIHRhYmxlIG9mIGNvbnRlbnRzIGluIHRoZQogICAgICAgICAgICAjIGNvbnRlbnRzIHBhbmVsIGlzIGNvbmZ1c2luZywgc28gZG9uJ3QgcHJpbnQgaXQKICAgICAgICAgICAgJG5vX3ByaW50ID0gJHJPcHRzLT57J2ZyYW1lcyd9CiAgICAgICAgICAgICAgfHwgISRyT3B0cy0+eydodG1sLXRhYmxlLW9mLWNvbnRlbnRzJ307CiAgICAgICAgICAgICRodG1sX3ByaW50LT4oIjxoMj5Eb2MgSW5kZXg6PC9oMj5cbiIpIGlmICRyT3B0cy0+eydmcmFtZXMnfTsKICAgICAgICAgICAgJGh0bWxfcHJpbnQtPigkbGluZSk7CiAgICAgICAgfQoKICAgICAgICAjIENoZWNrIGZvciBlbmQgb2YgaW5kZXgsIG9sZCBwb2QyaHRtbAogICAgICAgIGVsc2lmICggJGxpbmUgPX4gL15ccyo8IS0tIElOREVYIEVORCAtLT5ccyokL2kgKSB7CiAgICAgICAgICAgICRzYXdfaW5kZXggPSAxOwogICAgICAgICAgICAkaHRtbF9wcmludC0+KCRsaW5lKTsKCiAgICAgICAgICAgICMgQ29weSB0aGUgcGVybHRpZHkgdG9jLCBpZiBhbnksIGFmdGVyIHRoZSBQb2Q6Okh0bWwgdG9jCiAgICAgICAgICAgIGlmICgkdG9jX3N0cmluZykgewogICAgICAgICAgICAgICAgJGh0bWxfcHJpbnQtPigiPGhyIC8+XG4iKSBpZiAkck9wdHMtPnsnZnJhbWVzJ307CiAgICAgICAgICAgICAgICAkaHRtbF9wcmludC0+KCI8aDI+Q29kZSBJbmRleDo8L2gyPlxuIik7CiAgICAgICAgICAgICAgICAjI215IEB0b2MgPSBtYXAgeyAkXyAuPSAiXG4iIH0gc3BsaXQgL1xuLywgJHRvY19zdHJpbmc7CiAgICAgICAgICAgICAgICBteSBAdG9jID0gbWFwIHsgJF8gLiAiXG4iIH0gc3BsaXQgL1xuLywgJHRvY19zdHJpbmc7CiAgICAgICAgICAgICAgICAkaHRtbF9wcmludC0+KEB0b2MpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRpbl90b2MgICA9ICIiOwogICAgICAgICAgICAkbm9fcHJpbnQgPSAwOwogICAgICAgIH0KCiAgICAgICAgIyBtdXN0IHRyYWNrIDx1bD4gZGVwdGggbGV2ZWwgZm9yIG5ldyBwb2QyaHRtbAogICAgICAgIGVsc2lmICggJGxpbmUgPX4gL1xzKjx1bD5ccyokL2kgJiYgJGluX3RvYyBlcSAnVUwnICkgewogICAgICAgICAgICAkdWxfbGV2ZWwrKzsKICAgICAgICAgICAgJGh0bWxfcHJpbnQtPigkbGluZSk7CiAgICAgICAgfQoKICAgICAgICAjIENoZWNrIGZvciBlbmQgb2YgaW5kZXgsIGZvciBuZXcgcG9kMmh0bWwKICAgICAgICBlbHNpZiAoICRsaW5lID1+IC9ccyo8XC91bD4vaSAmJiAkaW5fdG9jIGVxICdVTCcgKSB7CiAgICAgICAgICAgICR1bF9sZXZlbC0tOwogICAgICAgICAgICAkaHRtbF9wcmludC0+KCRsaW5lKTsKCiAgICAgICAgICAgICMgQ29weSB0aGUgcGVybHRpZHkgdG9jLCBpZiBhbnksIGFmdGVyIHRoZSBQb2Q6Okh0bWwgdG9jCiAgICAgICAgICAgIGlmICggJHVsX2xldmVsIDw9IDAgKSB7CiAgICAgICAgICAgICAgICAkc2F3X2luZGV4ID0gMTsKICAgICAgICAgICAgICAgIGlmICgkdG9jX3N0cmluZykgewogICAgICAgICAgICAgICAgICAgICRodG1sX3ByaW50LT4oIjxociAvPlxuIikgaWYgJHJPcHRzLT57J2ZyYW1lcyd9OwogICAgICAgICAgICAgICAgICAgICRodG1sX3ByaW50LT4oIjxoMj5Db2RlIEluZGV4OjwvaDI+XG4iKTsKICAgICAgICAgICAgICAgICAgICAjI215IEB0b2MgPSBtYXAgeyAkXyAuPSAiXG4iIH0gc3BsaXQgL1xuLywgJHRvY19zdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgbXkgQHRvYyA9IG1hcCB7ICRfIC4gIlxuIiB9IHNwbGl0IC9cbi8sICR0b2Nfc3RyaW5nOwogICAgICAgICAgICAgICAgICAgICRodG1sX3ByaW50LT4oQHRvYyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkaW5fdG9jICAgPSAiIjsKICAgICAgICAgICAgICAgICR1bF9sZXZlbCA9IDA7CiAgICAgICAgICAgICAgICAkbm9fcHJpbnQgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIENvcHkgb25lIHBlcmx0aWR5IHNlY3Rpb24gYWZ0ZXIgZWFjaCBtYXJrZXIKICAgICAgICBlbHNpZiAoICRsaW5lID1+IC9eKC4qKTwhLS0gcEVSTFRJRFkgc0VDVElPTiAtLT4oLiopJC8gKSB7CiAgICAgICAgICAgICRsaW5lID0gJDI7CiAgICAgICAgICAgICRodG1sX3ByaW50LT4oJDEpIGlmICQxOwoKICAgICAgICAgICAgIyBJbnRlcm1pbmdsZSBjb2RlIGFuZCBwb2Qgc2VjdGlvbnMgaWYgd2Ugc2F3IG11bHRpcGxlID1jdXQncy4KICAgICAgICAgICAgaWYgKCAkc2VsZi0+e19wb2RfY3V0X2NvdW50fSA+IDEgKSB7CiAgICAgICAgICAgICAgICBteSAkcnByZV9zdHJpbmcgPSBzaGlmdCggQHskcnByZV9zdHJpbmdfc3RhY2t9ICk7CiAgICAgICAgICAgICAgICBpZiAoICR7JHJwcmVfc3RyaW5nfSApIHsKICAgICAgICAgICAgICAgICAgICAkaHRtbF9wcmludC0+KCc8cHJlPicpOwogICAgICAgICAgICAgICAgICAgICRodG1sX3ByaW50LT4oICR7JHJwcmVfc3RyaW5nfSApOwogICAgICAgICAgICAgICAgICAgICRodG1sX3ByaW50LT4oJzwvcHJlPicpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICMgc2hvdWxkbid0IGhhcHBlbjogd2Ugc3RvcmVkIGEgc3RyaW5nIGJlZm9yZSB3cml0aW5nCiAgICAgICAgICAgICAgICAgICAgIyBlYWNoIG1hcmtlci4KICAgICAgICAgICAgICAgICAgICBQZXJsOjpUaWR5OjpXYXJuKAoiUHJvYmxlbSBtZXJnaW5nIGh0bWwgc3RyZWFtIHdpdGggcG9kMmh0bWw7IG9yZGVyIG1heSBiZSB3cm9uZ1xuIgogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkaHRtbF9wcmludC0+KCRsaW5lKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBJZiBkaWRuJ3Qgc2VlIG11bHRpcGxlID1jdXQgbGluZXMsIHdlJ2xsIHB1dCB0aGUgcG9kIG91dCBmaXJzdAogICAgICAgICAgICAjIGFuZCB0aGVuIHRoZSBjb2RlLCBiZWNhdXNlIGl0J3MgbGVzcyBjb25mdXNpbmcuCiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICMgc2luY2Ugd2UgYXJlIG5vdCBpbnRlcm1peGluZyBjb2RlIGFuZCBwb2QsIHdlIGRvbid0IG5lZWQKICAgICAgICAgICAgICAgICMgb3Igd2FudCBhbnkgPGhyPiBsaW5lcyB3aGljaCBzZXBhcmF0ZWQgcG9kIGFuZCBjb2RlCiAgICAgICAgICAgICAgICAkaHRtbF9wcmludC0+KCRsaW5lKSB1bmxlc3MgKCAkbGluZSA9fiAvXlxzKjxocj5ccyokL2kgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBDb3B5IGFueSByZW1haW5pbmcgY29kZSBzZWN0aW9uIGJlZm9yZSB0aGUgPC9ib2R5PiB0YWcKICAgICAgICBlbHNpZiAoICRsaW5lID1+IC9eXHMqPFwvYm9keT5ccyokL2kgKSB7CiAgICAgICAgICAgICRzYXdfYm9keV9lbmQgPSAxOwogICAgICAgICAgICBpZiAoIEB7JHJwcmVfc3RyaW5nX3N0YWNrfSApIHsKICAgICAgICAgICAgICAgIHVubGVzcyAoICRzZWxmLT57X3BvZF9jdXRfY291bnR9ID4gMSApIHsKICAgICAgICAgICAgICAgICAgICAkaHRtbF9wcmludC0+KCc8aHIgLz4nKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHdoaWxlICggbXkgJHJwcmVfc3RyaW5nID0gc2hpZnQoIEB7JHJwcmVfc3RyaW5nX3N0YWNrfSApICkgewogICAgICAgICAgICAgICAgICAgICRodG1sX3ByaW50LT4oJzxwcmU+Jyk7CiAgICAgICAgICAgICAgICAgICAgJGh0bWxfcHJpbnQtPiggJHskcnByZV9zdHJpbmd9ICk7CiAgICAgICAgICAgICAgICAgICAgJGh0bWxfcHJpbnQtPignPC9wcmU+Jyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGh0bWxfcHJpbnQtPigkbGluZSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkaHRtbF9wcmludC0+KCRsaW5lKTsKICAgICAgICB9CiAgICB9CgogICAgJHN1Y2Nlc3NfZmxhZyA9IDE7CiAgICB1bmxlc3MgKCRzYXdfYm9keSkgewogICAgICAgIFBlcmw6OlRpZHk6Oldhcm4oIkRpZCBub3Qgc2VlIDxib2R5PiBpbiBwb2QyaHRtbCBvdXRwdXRcbiIpOwogICAgICAgICRzdWNjZXNzX2ZsYWcgPSAwOwogICAgfQogICAgdW5sZXNzICgkc2F3X2JvZHlfZW5kKSB7CiAgICAgICAgUGVybDo6VGlkeTo6V2FybigiRGlkIG5vdCBzZWUgPC9ib2R5PiBpbiBwb2QyaHRtbCBvdXRwdXRcbiIpOwogICAgICAgICRzdWNjZXNzX2ZsYWcgPSAwOwogICAgfQogICAgdW5sZXNzICgkc2F3X2luZGV4KSB7CiAgICAgICAgUGVybDo6VGlkeTo6V2FybigiRGlkIG5vdCBmaW5kIElOREVYIEVORCBpbiBwb2QyaHRtbCBvdXRwdXRcbiIpOwogICAgICAgICRzdWNjZXNzX2ZsYWcgPSAwOwogICAgfQoKICBSRVRVUk46CiAgICBjbG9zZV9vYmplY3QoJGh0bWxfZmgpOwoKICAgICMgbm90ZSB0aGF0IHdlIGhhdmUgdG8gdW5saW5rIHRtcGZpbGUgYmVmb3JlIG1ha2luZyBmcmFtZXMKICAgICMgYmVjYXVzZSB0aGUgdG1wZmlsZSBtYXkgYmUgb25lIG9mIHRoZSBuYW1lcyB1c2VkIGZvciBmcmFtZXMKICAgIGlmICggLWUgJHRtcGZpbGUgKSB7CiAgICAgICAgdW5sZXNzICggdW5saW5rKCR0bXBmaWxlKSApIHsKICAgICAgICAgICAgUGVybDo6VGlkeTo6V2FybigiY291bGRuJ3QgdW5saW5rIHRlbXBvcmFyeSBmaWxlICR0bXBmaWxlOiAkIVxuIik7CiAgICAgICAgICAgICRzdWNjZXNzX2ZsYWcgPSAwOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICRzdWNjZXNzX2ZsYWcgJiYgJHJPcHRzLT57J2ZyYW1lcyd9ICkgewogICAgICAgICRzZWxmLT5tYWtlX2ZyYW1lKCBcQHRvYyApOwogICAgfQogICAgcmV0dXJuICRzdWNjZXNzX2ZsYWc7Cn0KCnN1YiBtYWtlX2ZyYW1lIHsKCiAgICAjIE1ha2UgYSBmcmFtZSB3aXRoIHRhYmxlIG9mIGNvbnRlbnRzIGluIHRoZSBsZWZ0IHBhbmVsCiAgICAjIGFuZCB0aGUgdGV4dCBpbiB0aGUgcmlnaHQgcGFuZWwuCiAgICAjIE9uIGVudHJ5OgogICAgIyAgJGh0bWxfZmlsZW5hbWUgY29udGFpbnMgdGhlIG5vLWZyYW1lcyBodG1sIG91dHB1dAogICAgIyAgJHJ0b2MgaXMgYSByZWZlcmVuY2UgdG8gYW4gYXJyYXkgd2l0aCB0aGUgdGFibGUgb2YgY29udGVudHMKICAgIG15ICggJHNlbGYsICRydG9jICkgPSBAXzsKICAgIG15ICRpbnB1dF9maWxlICAgID0gJHNlbGYtPntfaW5wdXRfZmlsZX07CiAgICBteSAkaHRtbF9maWxlbmFtZSA9ICRzZWxmLT57X2h0bWxfZmlsZX07CiAgICBteSAkdG9jX2ZpbGVuYW1lICA9ICRzZWxmLT57X3RvY19maWxlbmFtZX07CiAgICBteSAkc3JjX2ZpbGVuYW1lICA9ICRzZWxmLT57X3NyY19maWxlbmFtZX07CiAgICBteSAkdGl0bGUgICAgICAgICA9ICRzZWxmLT57X3RpdGxlfTsKICAgICR0aXRsZSA9IGVzY2FwZV9odG1sKCR0aXRsZSk7CgogICAgIyBGVVRVUkUgaW5wdXQgcGFyYW1ldGVyOgogICAgbXkgJHRvcF9iYXNlbmFtZSA9ICIiOwoKICAgICMgV2UgbmVlZCB0byBwcm9kdWNlIDMgaHRtbCBmaWxlczoKICAgICMgMS4gLSB0aGUgdGFibGUgb2YgY29udGVudHMKICAgICMgMi4gLSB0aGUgY29udGVudHMgKHNvdXJjZSBjb2RlKSBpdHNlbGYKICAgICMgMy4gLSB0aGUgZnJhbWUgd2hpY2ggY29udGFpbnMgdGhlbQoKICAgICMgZ2V0IGJhc2VuYW1lcyBmb3IgcmVsYXRpdmUgbGlua3MKICAgIG15ICggJHRvY19iYXNlbmFtZSwgJHRvY19wYXRoICkgPSBmaWxlcGFyc2UoJHRvY19maWxlbmFtZSk7CiAgICBteSAoICRzcmNfYmFzZW5hbWUsICRzcmNfcGF0aCApID0gZmlsZXBhcnNlKCRzcmNfZmlsZW5hbWUpOwoKICAgICMgMS4gTWFrZSB0aGUgdGFibGUgb2YgY29udGVudHMgcGFuZWwsIHdpdGggYXBwcm9wcmlhdGUgY2hhbmdlcwogICAgIyB0byB0aGUgYW5jaG9yIG5hbWVzCiAgICBteSAkc3JjX2ZyYW1lX25hbWUgPSAnU1JDJzsKICAgIG15ICRmaXJzdF9hbmNob3IgPQogICAgICB3cml0ZV90b2NfaHRtbCggJHRpdGxlLCAkdG9jX2ZpbGVuYW1lLCAkc3JjX2Jhc2VuYW1lLCAkcnRvYywKICAgICAgICAkc3JjX2ZyYW1lX25hbWUgKTsKCiAgICAjIDIuIFRoZSBjdXJyZW50IC5odG1sIGZpbGVuYW1lIGlzIHJlbmFtZWQgdG8gYmUgdGhlIGNvbnRlbnRzIHBhbmVsCiAgICByZW5hbWUoICRodG1sX2ZpbGVuYW1lLCAkc3JjX2ZpbGVuYW1lICkKICAgICAgb3IgUGVybDo6VGlkeTo6RGllKCJDYW5ub3QgcmVuYW1lICRodG1sX2ZpbGVuYW1lIHRvICRzcmNfZmlsZW5hbWU6JCFcbiIpOwoKICAgICMgMy4gVGhlbiB1c2UgdGhlIG9yaWdpbmFsIGh0bWwgZmlsZW5hbWUgZm9yIHRoZSBmcmFtZQogICAgd3JpdGVfZnJhbWVfaHRtbCgKICAgICAgICAkdGl0bGUsICAgICAgICAkaHRtbF9maWxlbmFtZSwgJHRvcF9iYXNlbmFtZSwKICAgICAgICAkdG9jX2Jhc2VuYW1lLCAkc3JjX2Jhc2VuYW1lLCAgJHNyY19mcmFtZV9uYW1lCiAgICApOwogICAgcmV0dXJuOwp9CgpzdWIgd3JpdGVfdG9jX2h0bWwgewoKICAgICMgd3JpdGUgYSBzZXBhcmF0ZSBodG1sIHRhYmxlIG9mIGNvbnRlbnRzIGZpbGUgZm9yIGZyYW1lcwogICAgbXkgKCAkdGl0bGUsICR0b2NfZmlsZW5hbWUsICRzcmNfYmFzZW5hbWUsICRydG9jLCAkc3JjX2ZyYW1lX25hbWUgKSA9IEBfOwogICAgbXkgJGZoID0gSU86OkZpbGUtPm5ldyggJHRvY19maWxlbmFtZSwgJ3cnICkKICAgICAgb3IgUGVybDo6VGlkeTo6RGllKCJDYW5ub3Qgb3BlbiAkdG9jX2ZpbGVuYW1lOiQhXG4iKTsKICAgICRmaC0+cHJpbnQoPDxFT00pOwo8aHRtbD4KPGhlYWQ+Cjx0aXRsZT4kdGl0bGU8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5Pgo8aDE+PGEgaHJlZj1cIiRzcmNfYmFzZW5hbWUjLXRvcC0iIHRhcmdldD0iJHNyY19mcmFtZV9uYW1lIj4kdGl0bGU8L2E+PC9oMT4KRU9NCgogICAgbXkgJGZpcnN0X2FuY2hvciA9CiAgICAgIGNoYW5nZV9hbmNob3JfbmFtZXMoICRydG9jLCAkc3JjX2Jhc2VuYW1lLCAiJHNyY19mcmFtZV9uYW1lIiApOwogICAgJGZoLT5wcmludCggam9pbiAiIiwgQHskcnRvY30gKTsKCiAgICAkZmgtPnByaW50KDw8RU9NKTsKPC9ib2R5Pgo8L2h0bWw+CkVPTQoKICAgIHJldHVybjsKfQoKc3ViIHdyaXRlX2ZyYW1lX2h0bWwgewoKICAgICMgd3JpdGUgYW4gaHRtbCBmaWxlIHRvIGJlIHRoZSB0YWJsZSBvZiBjb250ZW50cyBmcmFtZQogICAgbXkgKAogICAgICAgICR0aXRsZSwgICAgICAgICRmcmFtZV9maWxlbmFtZSwgJHRvcF9iYXNlbmFtZSwKICAgICAgICAkdG9jX2Jhc2VuYW1lLCAkc3JjX2Jhc2VuYW1lLCAgICRzcmNfZnJhbWVfbmFtZQogICAgKSA9IEBfOwoKICAgIG15ICRmaCA9IElPOjpGaWxlLT5uZXcoICRmcmFtZV9maWxlbmFtZSwgJ3cnICkKICAgICAgb3IgUGVybDo6VGlkeTo6RGllKCJDYW5ub3Qgb3BlbiAkdG9jX2Jhc2VuYW1lOiQhXG4iKTsKCiAgICAkZmgtPnByaW50KDw8RU9NKTsKPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgRnJhbWVzZXQvL0VOIgogICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLWZyYW1lc2V0LmR0ZCI+Cjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Imlzby04ODU5LTEiID8+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KPGhlYWQ+Cjx0aXRsZT4kdGl0bGU8L3RpdGxlPgo8L2hlYWQ+CkVPTQoKICAgICMgdHdvIGxlZnQgcGFuZWxzLCBvbmUgcmlnaHQsIGlmIG1hc3RlciBpbmRleCBmaWxlCiAgICBpZiAoJHRvcF9iYXNlbmFtZSkgewogICAgICAgICRmaC0+cHJpbnQoPDxFT00pOwo8ZnJhbWVzZXQgY29scz0iMjAlLDgwJSI+CjxmcmFtZXNldCByb3dzPSIzMCUsNzAlIj4KPGZyYW1lIHNyYyA9ICIkdG9wX2Jhc2VuYW1lIiAvPgo8ZnJhbWUgc3JjID0gIiR0b2NfYmFzZW5hbWUiIC8+CjwvZnJhbWVzZXQ+CkVPTQogICAgfQoKICAgICMgb25lIGxlZnQgcGFuZWxzLCBvbmUgcmlnaHQsIGlmIG5vIG1hc3RlciBpbmRleCBmaWxlCiAgICBlbHNlIHsKICAgICAgICAkZmgtPnByaW50KDw8RU9NKTsKPGZyYW1lc2V0IGNvbHM9IjIwJSwqIj4KPGZyYW1lIHNyYyA9ICIkdG9jX2Jhc2VuYW1lIiAvPgpFT00KICAgIH0KICAgICRmaC0+cHJpbnQoPDxFT00pOwo8ZnJhbWUgc3JjID0gIiRzcmNfYmFzZW5hbWUiIG5hbWUgPSAiJHNyY19mcmFtZV9uYW1lIiAvPgo8bm9mcmFtZXM+Cjxib2R5Pgo8cD5JZiB5b3Ugc2VlIHRoaXMgbWVzc2FnZSwgeW91IGFyZSB1c2luZyBhIG5vbi1mcmFtZS1jYXBhYmxlIHdlYiBjbGllbnQuPC9wPgo8cD5UaGlzIGRvY3VtZW50IGNvbnRhaW5zOjwvcD4KPHVsPgo8bGk+PGEgaHJlZj0iJHRvY19iYXNlbmFtZSI+QSB0YWJsZSBvZiBjb250ZW50czwvYT48L2xpPgo8bGk+PGEgaHJlZj0iJHNyY19iYXNlbmFtZSI+VGhlIHNvdXJjZSBjb2RlPC9hPjwvbGk+CjwvdWw+CjwvYm9keT4KPC9ub2ZyYW1lcz4KPC9mcmFtZXNldD4KPC9odG1sPgpFT00KICAgIHJldHVybjsKfQoKc3ViIGNoYW5nZV9hbmNob3JfbmFtZXMgewoKICAgICMgYWRkIGEgZmlsZW5hbWUgYW5kIHRhcmdldCB0byBhbmNob3JzCiAgICAjIGFsc28gcmV0dXJuIHRoZSBmaXJzdCBhbmNob3IKICAgIG15ICggJHJsaW5lcywgJGZpbGVuYW1lLCAkdGFyZ2V0ICkgPSBAXzsKICAgIG15ICRmaXJzdF9hbmNob3I7CiAgICBmb3JlYWNoIG15ICRsaW5lICggQHskcmxpbmVzfSApIHsKCiAgICAgICAgIyAgV2UncmUgbG9va2luZyBmb3IgbGluZXMgbGlrZSB0aGlzOgogICAgICAgICMgIDxMST48QSBIUkVGPSIjc3lub3BzaXMiPlNZTk9QU0lTPC9BPjwvTEk+CiAgICAgICAgIyAgLS0tLSAgLSAgICAgICAtLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjICAkMSAgICAgICAgICAgICAgJDQgICAgICAgICAgICAkNQogICAgICAgIGlmICggJGxpbmUgPX4gL14oLiopPGEoLiopaHJlZlxzKj1ccyoiKFteI10qKSMoW14iXSspIltePl0qPiguKikkL2kgKSB7CiAgICAgICAgICAgIG15ICRwcmUgID0gJDE7CiAgICAgICAgICAgIG15ICRuYW1lID0gJDQ7CiAgICAgICAgICAgIG15ICRwb3N0ID0gJDU7CiAgICAgICAgICAgIG15ICRocmVmID0gIiRmaWxlbmFtZSMkbmFtZSI7CiAgICAgICAgICAgICRsaW5lID0gIiRwcmU8YSBocmVmPVwiJGhyZWZcIiB0YXJnZXQ9XCIkdGFyZ2V0XCI+JHBvc3RcbiI7CiAgICAgICAgICAgIHVubGVzcyAoJGZpcnN0X2FuY2hvcikgeyAkZmlyc3RfYW5jaG9yID0gJGhyZWYgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAkZmlyc3RfYW5jaG9yOwp9CgpzdWIgY2xvc2VfaHRtbF9maWxlIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICByZXR1cm4gdW5sZXNzICRzZWxmLT57X2h0bWxfZmlsZV9vcGVuZWR9OwoKICAgIG15ICRodG1sX2ZoICAgICA9ICRzZWxmLT57X2h0bWxfZmh9OwogICAgbXkgJHJ0b2Nfc3RyaW5nID0gJHNlbGYtPntfcnRvY19zdHJpbmd9OwoKICAgICMgVGhlcmUgYXJlIDMgYmFzaWMgcGF0aHMgdG8gaHRtbCBvdXRwdXQuLi4KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyBQYXRoIDE6IGZpbmlzaCB1cCBpZiBpbiAtcHJlIG1vZGUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBpZiAoICRyT3B0cy0+eydodG1sLXByZS1vbmx5J30gKSB7CiAgICAgICAgJGh0bWxfZmgtPnByaW50KCA8PCJQUkVfRU5EIik7CjwvcHJlPgpQUkVfRU5ECiAgICAgICAgY2xvc2Vfb2JqZWN0KCRodG1sX2ZoKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBGaW5pc2ggdGhlIGluZGV4CiAgICAkc2VsZi0+YWRkX3RvY19pdGVtKCAnRU9GJywgJ0VPRicgKTsKCiAgICBteSAkcnByZV9zdHJpbmdfc3RhY2sgPSAkc2VsZi0+e19ycHJlX3N0cmluZ19zdGFja307CgogICAgIyBQYXRjaCB0byBkYXJrZW4gdGhlIDxwcmU+IGJhY2tncm91bmQgY29sb3IgaW4gY2FzZSBvZiBwb2QyaHRtbCBhbmQKICAgICMgaW50ZXJsZWF2ZWQgY29kZS9kb2N1bWVudGF0aW9uLiAgT3RoZXJ3aXNlLCB0aGUgZGlzdGluY3Rpb24KICAgICMgYmV0d2VlbiBjb2RlIGFuZCBkb2N1bWVudGF0aW9uIGlzIGJsdXJyZWQuCiAgICBpZiAoICAgJHJPcHRzLT57cG9kMmh0bWx9CiAgICAgICAgJiYgJHNlbGYtPntfcG9kX2N1dF9jb3VudH0gPj0gMQogICAgICAgICYmICRyT3B0cy0+eydodG1sLWNvbG9yLWJhY2tncm91bmQnfSBlcSAnI0ZGRkZGRicgKQogICAgewogICAgICAgICRyT3B0cy0+eydodG1sLXByZS1jb2xvci1iYWNrZ3JvdW5kJ30gPSAnI0YwRjBGMCc7CiAgICB9CgogICAgIyBwdXQgdGhlIGNzcyBvciBpdHMgbGluayBpbnRvIGEgc3RyaW5nLCBpZiB1c2VkCiAgICBteSAkY3NzX3N0cmluZzsKICAgIG15ICRmaF9jc3MgPSBQZXJsOjpUaWR5OjpJT1NjYWxhci0+bmV3KCBcJGNzc19zdHJpbmcsICd3JyApOwoKICAgICMgdXNlIGNzcyBsaW5rZWQgdG8gYW5vdGhlciBmaWxlCiAgICBpZiAoICRyT3B0cy0+eydodG1sLWxpbmtlZC1zdHlsZS1zaGVldCd9ICkgewogICAgICAgICRmaF9jc3MtPnByaW50KAogICAgICAgICAgICBxcSg8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IiRjc3NfbGlua25hbWUiIHR5cGU9InRleHQvY3NzIiAvPikpOwogICAgfQoKICAgICMgdXNlIGNzcyBlbWJlZGRlZCBpbiB0aGlzIGZpbGUKICAgIGVsc2lmICggISRyT3B0cy0+eydub2h0bWwtc3R5bGUtc2hlZXRzJ30gKSB7CiAgICAgICAgJGZoX2Nzcy0+cHJpbnQoIDw8J0VORENTUycpOwo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgo8IS0tCkVORENTUwogICAgICAgIHdyaXRlX3N0eWxlX3NoZWV0X2RhdGEoJGZoX2Nzcyk7CiAgICAgICAgJGZoX2Nzcy0+cHJpbnQoIDw8IkVORENTUyIpOwotLT4KPC9zdHlsZT4KRU5EQ1NTCiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyBwYXRoIDI6IHVzZSBwb2QyaHRtbCBpZiByZXF1ZXN0ZWQKICAgICMgICAgICAgICBJZiB3ZSBmYWlsIGZvciBzb21lIHJlYXNvbiwgY29udGludWUgb24gdG8gcGF0aCAzCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBpZiAoICRyT3B0cy0+eydwb2QyaHRtbCd9ICkgewogICAgICAgIG15ICRycG9kX3N0cmluZyA9ICRzZWxmLT57X3Jwb2Rfc3RyaW5nfTsKICAgICAgICAkc2VsZi0+cG9kX3RvX2h0bWwoCiAgICAgICAgICAgICR7JHJwb2Rfc3RyaW5nfSwgJGNzc19zdHJpbmcsCiAgICAgICAgICAgICR7JHJ0b2Nfc3RyaW5nfSwgJHJwcmVfc3RyaW5nX3N0YWNrCiAgICAgICAgKSAmJiByZXR1cm47CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyBwYXRoIDM6IHdyaXRlIGNvZGUgaW4gaHRtbCwgd2l0aCBwb2Qgb25seSBpbiBpdGFsaWNzCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBteSAkaW5wdXRfZmlsZSA9ICRzZWxmLT57X2lucHV0X2ZpbGV9OwogICAgbXkgJHRpdGxlICAgICAgPSBlc2NhcGVfaHRtbCgkaW5wdXRfZmlsZSk7CiAgICBteSAkdGltZXN0YW1wICA9ICIiOwogICAgaWYgKCAkck9wdHMtPnsndGltZXN0YW1wJ30gKSB7CiAgICAgICAgbXkgJGRhdGUgPSBsb2NhbHRpbWU7CiAgICAgICAgJHRpbWVzdGFtcCA9ICJvbiAkZGF0ZSI7CiAgICB9CiAgICAkaHRtbF9maC0+cHJpbnQoIDw8IkhUTUxfU1RBUlQiKTsKPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgCiAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KPCEtLSBHZW5lcmF0ZWQgYnkgcGVybHRpZHkgJHRpbWVzdGFtcCAtLT4KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgo8aGVhZD4KPHRpdGxlPiR0aXRsZTwvdGl0bGU+CkhUTUxfU1RBUlQKCiAgICAjIG91dHB1dCB0aGUgY3NzLCBpZiB1c2VkCiAgICBpZiAoJGNzc19zdHJpbmcpIHsKICAgICAgICAkaHRtbF9maC0+cHJpbnQoJGNzc19zdHJpbmcpOwogICAgICAgICRodG1sX2ZoLT5wcmludCggPDwiRU5EQ1NTIik7CjwvaGVhZD4KPGJvZHk+CkVORENTUwogICAgfQogICAgZWxzZSB7CgogICAgICAgICRodG1sX2ZoLT5wcmludCggPDwiSFRNTF9TVEFSVCIpOwo8L2hlYWQ+Cjxib2R5IGJnY29sb3I9XCIkck9wdHMtPnsnaHRtbC1jb2xvci1iYWNrZ3JvdW5kJ31cIiB0ZXh0PVwiJHJPcHRzLT57J2h0bWwtY29sb3ItcHVuY3R1YXRpb24nfVwiPgpIVE1MX1NUQVJUCiAgICB9CgogICAgJGh0bWxfZmgtPnByaW50KCI8YSBuYW1lPVwiLXRvcC1cIj48L2E+XG4iKTsKICAgICRodG1sX2ZoLT5wcmludCggPDwiRU9NIik7CjxoMT4kdGl0bGU8L2gxPgpFT00KCiAgICAjIGNvcHkgdGhlIHRhYmxlIG9mIGNvbnRlbnRzCiAgICBpZiAoICAgJHskcnRvY19zdHJpbmd9CiAgICAgICAgJiYgISRyT3B0cy0+eydmcmFtZXMnfQogICAgICAgICYmICRyT3B0cy0+eydodG1sLXRhYmxlLW9mLWNvbnRlbnRzJ30gKQogICAgewogICAgICAgICRodG1sX2ZoLT5wcmludCggJHskcnRvY19zdHJpbmd9ICk7CiAgICB9CgogICAgIyBjb3B5IHRoZSBwcmUgc2VjdGlvbihzKQogICAgbXkgJGZuYW1lX2NvbW1lbnQgPSAkaW5wdXRfZmlsZTsKICAgICRmbmFtZV9jb21tZW50ID1+IHMvLS0rLy0vZzsgICAgIyBwcm90ZWN0IEhUTUwgY29tbWVudCB0YWdzCiAgICAkaHRtbF9maC0+cHJpbnQoIDw8IkVORF9QUkUiKTsKPGhyIC8+CjwhLS0gY29udGVudHMgb2YgZmlsZW5hbWU6ICRmbmFtZV9jb21tZW50IC0tPgo8cHJlPgpFTkRfUFJFCgogICAgZm9yZWFjaCBteSAkcnByZV9zdHJpbmcgKCBAeyRycHJlX3N0cmluZ19zdGFja30gKSB7CiAgICAgICAgJGh0bWxfZmgtPnByaW50KCAkeyRycHJlX3N0cmluZ30gKTsKICAgIH0KCiAgICAjIGFuZCBmaW5pc2ggdGhlIGh0bWwgcGFnZQogICAgJGh0bWxfZmgtPnByaW50KCA8PCJIVE1MX0VORCIpOwo8L3ByZT4KPC9ib2R5Pgo8L2h0bWw+CkhUTUxfRU5ECiAgICBjbG9zZV9vYmplY3QoJGh0bWxfZmgpOwoKICAgIGlmICggJHJPcHRzLT57J2ZyYW1lcyd9ICkgewogICAgICAgICMjbXkgQHRvYyA9IG1hcCB7ICRfIC49ICJcbiIgfSBzcGxpdCAvXG4vLCAkeyRydG9jX3N0cmluZ307CiAgICAgICAgbXkgQHRvYyA9IG1hcCB7ICRfIC4gIlxuIiB9IHNwbGl0IC9cbi8sICR7JHJ0b2Nfc3RyaW5nfTsKICAgICAgICAkc2VsZi0+bWFrZV9mcmFtZSggXEB0b2MgKTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIG1hcmt1cF90b2tlbnMgewogICAgbXkgKCAkc2VsZiwgJHJ0b2tlbnMsICRydG9rZW5fdHlwZSwgJHJsZXZlbHMgKSA9IEBfOwogICAgbXkgKCBAY29sb3JlZF90b2tlbnMsICR0eXBlLCAkdG9rZW4sICRsZXZlbCApOwogICAgbXkgJHJsYXN0X2xldmVsICAgID0gJHNlbGYtPntfcmxhc3RfbGV2ZWx9OwogICAgbXkgJHJwYWNrYWdlX3N0YWNrID0gJHNlbGYtPntfcnBhY2thZ2Vfc3RhY2t9OwoKICAgIGZvciAoIG15ICRqID0gMCA7ICRqIDwgQHskcnRva2VuX3R5cGV9IDsgJGorKyApIHsKICAgICAgICAkdHlwZSAgPSAkcnRva2VuX3R5cGUtPlskal07CiAgICAgICAgJHRva2VuID0gJHJ0b2tlbnMtPlskal07CiAgICAgICAgJGxldmVsID0gJHJsZXZlbHMtPlskal07CiAgICAgICAgJGxldmVsID0gMCBpZiAoICRsZXZlbCA8IDAgKTsKCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIFVwZGF0ZSB0aGUgcGFja2FnZSBzdGFjay4gIFRoZSBwYWNrYWdlIHN0YWNrIGlzIG5lZWRlZCB0byBrZWVwCiAgICAgICAgIyB0aGUgdG9jIGNvcnJlY3QgYmVjYXVzZSBzb21lIHBhY2thZ2VzIG1heSBiZSBkZWNsYXJlZCB3aXRoaW4KICAgICAgICAjIGJsb2NrcyBhbmQgZ28gb3V0IG9mIHNjb3BlIHdoZW4gd2UgbGVhdmUgdGhlIGJsb2NrLgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgaWYgKCAkbGV2ZWwgPiAkeyRybGFzdF9sZXZlbH0gKSB7CiAgICAgICAgICAgIHVubGVzcyAoICRycGFja2FnZV9zdGFjay0+WyAkbGV2ZWwgLSAxIF0gKSB7CiAgICAgICAgICAgICAgICAkcnBhY2thZ2Vfc3RhY2stPlsgJGxldmVsIC0gMSBdID0gJ21haW4nOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRycGFja2FnZV9zdGFjay0+WyRsZXZlbF0gPSAkcnBhY2thZ2Vfc3RhY2stPlsgJGxldmVsIC0gMSBdOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRsZXZlbCA8ICR7JHJsYXN0X2xldmVsfSApIHsKICAgICAgICAgICAgbXkgJHBhY2thZ2UgPSAkcnBhY2thZ2Vfc3RhY2stPlskbGV2ZWxdOwogICAgICAgICAgICB1bmxlc3MgKCRwYWNrYWdlKSB7ICRwYWNrYWdlID0gJ21haW4nIH0KCiAgICAgICAgICAgICMgaWYgd2UgY2hhbmdlIHBhY2thZ2VzIGR1ZSB0byBhIG5lc3RpbmcgY2hhbmdlLCB3ZQogICAgICAgICAgICAjIGhhdmUgdG8gbWFrZSBhbiBlbnRyeSBpbiB0aGUgdG9jCiAgICAgICAgICAgIGlmICggJHBhY2thZ2UgbmUgJHJwYWNrYWdlX3N0YWNrLT5bICRsZXZlbCArIDEgXSApIHsKICAgICAgICAgICAgICAgICRzZWxmLT5hZGRfdG9jX2l0ZW0oICRwYWNrYWdlLCAncGFja2FnZScgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkeyRybGFzdF9sZXZlbH0gPSAkbGV2ZWw7CgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBJbnRlcmNlcHQgYSBzdWIgbmFtZSBoZXJlOyBzcGxpdCBpdAogICAgICAgICMgaW50byBrZXl3b3JkICdzdWInIGFuZCBzdWIgbmFtZTsgYW5kIGFkZCBhbgogICAgICAgICMgZW50cnkgaW4gdGhlIHRvYwogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgaWYgKCAkdHlwZSBlcSAnaScgJiYgJHRva2VuID1+IC9eKHN1YlxzKykoXHcuKikkLyApIHsKICAgICAgICAgICAgJHRva2VuID0gJHNlbGYtPm1hcmt1cF9odG1sX2VsZW1lbnQoICQxLCAnaycgKTsKICAgICAgICAgICAgcHVzaCBAY29sb3JlZF90b2tlbnMsICR0b2tlbjsKICAgICAgICAgICAgJHRva2VuID0gJDI7CiAgICAgICAgICAgICR0eXBlICA9ICdNJzsKCiAgICAgICAgICAgICMgYnV0IGRvbid0IGluY2x1ZGUgc3ViIGRlY2xhcmF0aW9ucyBpbiB0aGUgdG9jOwogICAgICAgICAgICAjIHRoZXNlIHdsbGwgaGF2ZSBsZWFkaW5nIHRva2VuIHR5cGVzICdpOycKICAgICAgICAgICAgbXkgJHNpZ25hdHVyZSA9IGpvaW4gIiIsIEB7JHJ0b2tlbl90eXBlfTsKICAgICAgICAgICAgdW5sZXNzICggJHNpZ25hdHVyZSA9fiAvXmk7LyApIHsKICAgICAgICAgICAgICAgIG15ICRzdWJuYW1lID0gJHRva2VuOwogICAgICAgICAgICAgICAgJHN1Ym5hbWUgPX4gcy9bXHNcKF0uKiQvLzsgIyByZW1vdmUgYW55IGF0dHJpYnV0ZXMgYW5kIHByb3RvdHlwZQogICAgICAgICAgICAgICAgJHNlbGYtPmFkZF90b2NfaXRlbSggJHN1Ym5hbWUsICdzdWInICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBJbnRlcmNlcHQgYSBwYWNrYWdlIG5hbWUgaGVyZTsgc3BsaXQgaXQKICAgICAgICAjIGludG8ga2V5d29yZCAncGFja2FnZScgYW5kIG5hbWU7IGFkZCB0byB0aGUgdG9jLAogICAgICAgICMgYW5kIHVwZGF0ZSB0aGUgcGFja2FnZSBzdGFjawogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgaWYgKCAkdHlwZSBlcSAnaScgJiYgJHRva2VuID1+IC9eKHBhY2thZ2VccyspKFx3LiopJC8gKSB7CiAgICAgICAgICAgICR0b2tlbiA9ICRzZWxmLT5tYXJrdXBfaHRtbF9lbGVtZW50KCAkMSwgJ2snICk7CiAgICAgICAgICAgIHB1c2ggQGNvbG9yZWRfdG9rZW5zLCAkdG9rZW47CiAgICAgICAgICAgICR0b2tlbiA9ICQyOwogICAgICAgICAgICAkdHlwZSAgPSAnaSc7CiAgICAgICAgICAgICRzZWxmLT5hZGRfdG9jX2l0ZW0oICIkdG9rZW4iLCAncGFja2FnZScgKTsKICAgICAgICAgICAgJHJwYWNrYWdlX3N0YWNrLT5bJGxldmVsXSA9ICR0b2tlbjsKICAgICAgICB9CgogICAgICAgICR0b2tlbiA9ICRzZWxmLT5tYXJrdXBfaHRtbF9lbGVtZW50KCAkdG9rZW4sICR0eXBlICk7CiAgICAgICAgcHVzaCBAY29sb3JlZF90b2tlbnMsICR0b2tlbjsKICAgIH0KICAgIHJldHVybiAoIFxAY29sb3JlZF90b2tlbnMgKTsKfQoKc3ViIG1hcmt1cF9odG1sX2VsZW1lbnQgewogICAgbXkgKCAkc2VsZiwgJHRva2VuLCAkdHlwZSApID0gQF87CgogICAgcmV0dXJuICR0b2tlbiBpZiAoICR0eXBlIGVxICdiJyApOyAgICAgICAgICMgc2tpcCBhIGJsYW5rIHRva2VuCiAgICByZXR1cm4gJHRva2VuIGlmICggJHRva2VuID1+IC9eXHMqJC8gKTsgICAgIyBza2lwIGEgYmxhbmsgbGluZQogICAgJHRva2VuID0gZXNjYXBlX2h0bWwoJHRva2VuKTsKCiAgICAjIGdldCB0aGUgc2hvcnQgYWJicmV2aWF0aW9uIGZvciB0aGlzIHRva2VuIHR5cGUKICAgIG15ICRzaG9ydF9uYW1lID0gJHRva2VuX3Nob3J0X25hbWVzeyR0eXBlfTsKICAgIGlmICggIWRlZmluZWQoJHNob3J0X25hbWUpICkgewogICAgICAgICRzaG9ydF9uYW1lID0gInB1IjsgICAgICAgICAgICAgICAgICAgICMgcHVuY3R1YXRpb24gaXMgZGVmYXVsdAogICAgfQoKICAgICMgaGFuZGxlIHN0eWxlIHNoZWV0cy4uCiAgICBpZiAoICEkck9wdHMtPnsnbm9odG1sLXN0eWxlLXNoZWV0cyd9ICkgewogICAgICAgIGlmICggJHNob3J0X25hbWUgbmUgJ3B1JyApIHsKICAgICAgICAgICAgJHRva2VuID0gcXEoPHNwYW4gY2xhc3M9IiRzaG9ydF9uYW1lIj4pIC4gJHRva2VuIC4gIjwvc3Bhbj4iOwogICAgICAgIH0KICAgIH0KCiAgICAjIGhhbmRsZSBubyBzdHlsZSBzaGVldHMuLgogICAgZWxzZSB7CiAgICAgICAgbXkgJGNvbG9yID0gJGh0bWxfY29sb3J7JHNob3J0X25hbWV9OwoKICAgICAgICBpZiAoICRjb2xvciAmJiAoICRjb2xvciBuZSAkck9wdHMtPnsnaHRtbC1jb2xvci1wdW5jdHVhdGlvbid9ICkgKSB7CiAgICAgICAgICAgICR0b2tlbiA9IHFxKDxmb250IGNvbG9yPSIkY29sb3IiPikgLiAkdG9rZW4gLiAiPC9mb250PiI7CiAgICAgICAgfQogICAgICAgIGlmICggJGh0bWxfaXRhbGljeyRzaG9ydF9uYW1lfSApIHsgJHRva2VuID0gIjxpPiR0b2tlbjwvaT4iIH0KICAgICAgICBpZiAoICRodG1sX2JvbGR7JHNob3J0X25hbWV9ICkgICB7ICR0b2tlbiA9ICI8Yj4kdG9rZW48L2I+IiB9CiAgICB9CiAgICByZXR1cm4gJHRva2VuOwp9CgpzdWIgZXNjYXBlX2h0bWwgewoKICAgIG15ICR0b2tlbiA9IHNoaWZ0OwogICAgaWYgKCRtaXNzaW5nX2h0bWxfZW50aXRpZXMpIHsKICAgICAgICAkdG9rZW4gPX4gcy9cJi8mYW1wOy9nOwogICAgICAgICR0b2tlbiA9fiBzL1w8LyZsdDsvZzsKICAgICAgICAkdG9rZW4gPX4gcy9cPi8mZ3Q7L2c7CiAgICAgICAgJHRva2VuID1+IHMvXCIvJnF1b3Q7L2c7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBIVE1MOjpFbnRpdGllczo6ZW5jb2RlX2VudGl0aWVzKCR0b2tlbik7CiAgICB9CiAgICByZXR1cm4gJHRva2VuOwp9CgpzdWIgZmluaXNoX2Zvcm1hdHRpbmcgewoKICAgICMgY2FsbGVkIGFmdGVyIGxhc3QgbGluZQogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgICRzZWxmLT5jbG9zZV9odG1sX2ZpbGUoKTsKICAgIHJldHVybjsKfQoKc3ViIHdyaXRlX2xpbmUgewoKICAgIG15ICggJHNlbGYsICRsaW5lX29mX3Rva2VucyApID0gQF87CiAgICByZXR1cm4gdW5sZXNzICRzZWxmLT57X2h0bWxfZmlsZV9vcGVuZWR9OwogICAgbXkgJGh0bWxfcHJlX2ZoID0gJHNlbGYtPntfaHRtbF9wcmVfZmh9OwogICAgbXkgJGxpbmVfdHlwZSAgID0gJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdHlwZX07CiAgICBteSAkaW5wdXRfbGluZSAgPSAkbGluZV9vZl90b2tlbnMtPntfbGluZV90ZXh0fTsKICAgIG15ICRsaW5lX251bWJlciA9ICRsaW5lX29mX3Rva2Vucy0+e19saW5lX251bWJlcn07CiAgICBjaG9tcCAkaW5wdXRfbGluZTsKCiAgICAjIG1hcmt1cCBsaW5lIG9mIGNvZGUuLgogICAgbXkgJGh0bWxfbGluZTsKICAgIGlmICggJGxpbmVfdHlwZSBlcSAnQ09ERScgKSB7CiAgICAgICAgbXkgJHJ0b2tlbl90eXBlID0gJGxpbmVfb2ZfdG9rZW5zLT57X3J0b2tlbl90eXBlfTsKICAgICAgICBteSAkcnRva2VucyAgICAgPSAkbGluZV9vZl90b2tlbnMtPntfcnRva2Vuc307CiAgICAgICAgbXkgJHJsZXZlbHMgICAgID0gJGxpbmVfb2ZfdG9rZW5zLT57X3JsZXZlbHN9OwoKICAgICAgICBpZiAoICRpbnB1dF9saW5lID1+IC8oXlxzKikvICkgewogICAgICAgICAgICAkaHRtbF9saW5lID0gJDE7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkaHRtbF9saW5lID0gIiI7CiAgICAgICAgfQogICAgICAgIG15ICgkcmNvbG9yZWRfdG9rZW5zKSA9CiAgICAgICAgICAkc2VsZi0+bWFya3VwX3Rva2VucyggJHJ0b2tlbnMsICRydG9rZW5fdHlwZSwgJHJsZXZlbHMgKTsKICAgICAgICAkaHRtbF9saW5lIC49IGpvaW4gJycsIEB7JHJjb2xvcmVkX3Rva2Vuc307CiAgICB9CgogICAgIyBtYXJrdXAgbGluZSBvZiBub24tY29kZS4uCiAgICBlbHNlIHsKICAgICAgICBteSAkbGluZV9jaGFyYWN0ZXI7CiAgICAgICAgaWYgICAgKCAkbGluZV90eXBlIGVxICdIRVJFJyApICAgICAgIHsgJGxpbmVfY2hhcmFjdGVyID0gJ0gnIH0KICAgICAgICBlbHNpZiAoICRsaW5lX3R5cGUgZXEgJ0hFUkVfRU5EJyApICAgeyAkbGluZV9jaGFyYWN0ZXIgPSAnaCcgfQogICAgICAgIGVsc2lmICggJGxpbmVfdHlwZSBlcSAnRk9STUFUJyApICAgICB7ICRsaW5lX2NoYXJhY3RlciA9ICdIJyB9CiAgICAgICAgZWxzaWYgKCAkbGluZV90eXBlIGVxICdGT1JNQVRfRU5EJyApIHsgJGxpbmVfY2hhcmFjdGVyID0gJ2gnIH0KICAgICAgICBlbHNpZiAoICRsaW5lX3R5cGUgZXEgJ1NZU1RFTScgKSAgICAgeyAkbGluZV9jaGFyYWN0ZXIgPSAnYycgfQogICAgICAgIGVsc2lmICggJGxpbmVfdHlwZSBlcSAnRU5EX1NUQVJUJyApIHsKICAgICAgICAgICAgJGxpbmVfY2hhcmFjdGVyID0gJ2snOwogICAgICAgICAgICAkc2VsZi0+YWRkX3RvY19pdGVtKCAnX19FTkRfXycsICdfX0VORF9fJyApOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRsaW5lX3R5cGUgZXEgJ0RBVEFfU1RBUlQnICkgewogICAgICAgICAgICAkbGluZV9jaGFyYWN0ZXIgPSAnayc7CiAgICAgICAgICAgICRzZWxmLT5hZGRfdG9jX2l0ZW0oICdfX0RBVEFfXycsICdfX0RBVEFfXycgKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkbGluZV90eXBlID1+IC9eUE9ELyApIHsKICAgICAgICAgICAgJGxpbmVfY2hhcmFjdGVyID0gJ1AnOwogICAgICAgICAgICBpZiAoICRyT3B0cy0+eydwb2QyaHRtbCd9ICkgewogICAgICAgICAgICAgICAgbXkgJGh0bWxfcG9kX2ZoID0gJHNlbGYtPntfaHRtbF9wb2RfZmh9OwogICAgICAgICAgICAgICAgaWYgKCAkbGluZV90eXBlIGVxICdQT0RfU1RBUlQnICkgewoKICAgICAgICAgICAgICAgICAgICBteSAkcnByZV9zdHJpbmdfc3RhY2sgPSAkc2VsZi0+e19ycHJlX3N0cmluZ19zdGFja307CiAgICAgICAgICAgICAgICAgICAgbXkgJHJwcmVfc3RyaW5nICAgICAgID0gJHJwcmVfc3RyaW5nX3N0YWNrLT5bLTFdOwoKICAgICAgICAgICAgICAgICAgICAjIGlmIHdlIGhhdmUgd3JpdHRlbiBhbnkgbm9uLWJsYW5rIGxpbmVzIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICMgY3VycmVudCBwcmUgc2VjdGlvbiwgc3RhcnQgd3JpdGluZyB0byBhIG5ldyBvdXRwdXQKICAgICAgICAgICAgICAgICAgICAjIHN0cmluZwogICAgICAgICAgICAgICAgICAgIGlmICggJHskcnByZV9zdHJpbmd9ID1+IC9cUy8gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRwcmVfc3RyaW5nOwogICAgICAgICAgICAgICAgICAgICAgICAkaHRtbF9wcmVfZmggPQogICAgICAgICAgICAgICAgICAgICAgICAgIFBlcmw6OlRpZHk6OklPU2NhbGFyLT5uZXcoIFwkcHJlX3N0cmluZywgJ3cnICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT57X2h0bWxfcHJlX2ZofSA9ICRodG1sX3ByZV9maDsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAeyRycHJlX3N0cmluZ19zdGFja30sIFwkcHJlX3N0cmluZzsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgbGVhdmUgYSBtYXJrZXIgaW4gdGhlIHBvZCBzdHJlYW0gc28gd2Uga25vdwogICAgICAgICAgICAgICAgICAgICAgICAjIHdoZXJlIHRvIHB1dCB0aGUgcHJlIHNlY3Rpb24gd2UganVzdAogICAgICAgICAgICAgICAgICAgICAgICAjIGZpbmlzaGVkLgogICAgICAgICAgICAgICAgICAgICAgICBteSAkZm9yX2h0bWwgPSAnPWZvciBodG1sJzsgICAgIyBkb24ndCBjb25mdXNlIHBvZCB1dGlscwogICAgICAgICAgICAgICAgICAgICAgICAkaHRtbF9wb2RfZmgtPnByaW50KDw8RU9NKTsKCiRmb3JfaHRtbAo8IS0tIHBFUkxUSURZIHNFQ1RJT04gLS0+CgpFT00KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlLCBqdXN0IGNsZWFyIHRoZSBjdXJyZW50IHN0cmluZyBhbmQgc3RhcnQKICAgICAgICAgICAgICAgICAgICAjIG92ZXIKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHskcnByZV9zdHJpbmd9ID0gIiI7CiAgICAgICAgICAgICAgICAgICAgICAgICRodG1sX3BvZF9maC0+cHJpbnQoIlxuIik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGh0bWxfcG9kX2ZoLT5wcmludCggJGlucHV0X2xpbmUgLiAiXG4iICk7CiAgICAgICAgICAgICAgICBpZiAoICRsaW5lX3R5cGUgZXEgJ1BPRF9FTkQnICkgewogICAgICAgICAgICAgICAgICAgICRzZWxmLT57X3BvZF9jdXRfY291bnR9Kys7CiAgICAgICAgICAgICAgICAgICAgJGh0bWxfcG9kX2ZoLT5wcmludCgiXG4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsgJGxpbmVfY2hhcmFjdGVyID0gJ1EnIH0KICAgICAgICAkaHRtbF9saW5lID0gJHNlbGYtPm1hcmt1cF9odG1sX2VsZW1lbnQoICRpbnB1dF9saW5lLCAkbGluZV9jaGFyYWN0ZXIgKTsKICAgIH0KCiAgICAjIGFkZCB0aGUgbGluZSBudW1iZXIgaWYgcmVxdWVzdGVkCiAgICBpZiAoICRyT3B0cy0+eydodG1sLWxpbmUtbnVtYmVycyd9ICkgewogICAgICAgIG15ICRleHRyYV9zcGFjZSA9CiAgICAgICAgICAgICggJGxpbmVfbnVtYmVyIDwgMTAgKSAgID8gIiAgICIKICAgICAgICAgIDogKCAkbGluZV9udW1iZXIgPCAxMDAgKSAgPyAiICAiCiAgICAgICAgICA6ICggJGxpbmVfbnVtYmVyIDwgMTAwMCApID8gIiAiCiAgICAgICAgICA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgIiI7CiAgICAgICAgJGh0bWxfbGluZSA9ICRleHRyYV9zcGFjZSAuICRsaW5lX251bWJlciAuICIgIiAuICRodG1sX2xpbmU7CiAgICB9CgogICAgIyB3cml0ZSB0aGUgbGluZQogICAgJGh0bWxfcHJlX2ZoLT5wcmludCgiJGh0bWxfbGluZVxuIik7CiAgICByZXR1cm47Cn0KMTsKCg==
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyB0aGUgUGVybDo6VGlkeTo6TGluZVNpbmsgY2xhc3Mgc3VwcGxpZXMgYSB3cml0ZV9saW5lIG1ldGhvZCBmb3IKIyBhY3R1YWwgZmlsZSB3cml0aW5nCiMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpwYWNrYWdlIFBlcmw6OlRpZHk6OkxpbmVTaW5rOwp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm91ciAkVkVSU0lPTiA9ICcyMDE5MTIwMyc7CgpzdWIgbmV3IHsKCiAgICBteSAoICRjbGFzcywgJG91dHB1dF9maWxlLCAkdGVlX2ZpbGUsICRsaW5lX3NlcGFyYXRvciwgJHJPcHRzLAogICAgICAgICRycGVuZGluZ19sb2dmaWxlX21lc3NhZ2UsICRiaW5tb2RlICkKICAgICAgPSBAXzsKICAgIG15ICRmaCAgICAgPSB1bmRlZjsKICAgIG15ICRmaF90ZWUgPSB1bmRlZjsKCiAgICBteSAkb3V0cHV0X2ZpbGVfb3BlbiA9IDA7CgogICAgaWYgKCAkck9wdHMtPnsnZm9ybWF0J30gZXEgJ3RpZHknICkgewogICAgICAgICggJGZoLCAkb3V0cHV0X2ZpbGUgKSA9IFBlcmw6OlRpZHk6OnN0cmVhbWhhbmRsZSggJG91dHB1dF9maWxlLCAndycgKTsKICAgICAgICB1bmxlc3MgKCRmaCkgeyBQZXJsOjpUaWR5OjpEaWUoIkNhbm5vdCB3cml0ZSB0byBvdXRwdXQgc3RyZWFtXG4iKTsgfQogICAgICAgICRvdXRwdXRfZmlsZV9vcGVuID0gMTsKICAgICAgICBpZiAoJGJpbm1vZGUpIHsKICAgICAgICAgICAgaWYgKCAgICRyT3B0cy0+eydjaGFyYWN0ZXItZW5jb2RpbmcnfQogICAgICAgICAgICAgICAgJiYgJHJPcHRzLT57J2NoYXJhY3Rlci1lbmNvZGluZyd9IGVxICd1dGY4JyApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmICggcmVmKCRmaCkgZXEgJ0lPOjpGaWxlJyApIHsKICAgICAgICAgICAgICAgICAgICAkZmgtPmJpbm1vZGUoIjpyYXc6ZW5jb2RpbmcoVVRGLTgpIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRvdXRwdXRfZmlsZSBlcSAnLScgKSB7CiAgICAgICAgICAgICAgICAgICAgYmlubW9kZSBTVERPVVQsICI6cmF3OmVuY29kaW5nKFVURi04KSI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgUGF0Y2ggZm9yIFJUIDEyMjAzMAogICAgICAgICAgICBlbHNpZiAoIHJlZigkZmgpIGVxICdJTzo6RmlsZScgKSB7ICRmaC0+YmlubW9kZSgpOyB9CgogICAgICAgICAgICBlbHNpZiAoICRvdXRwdXRfZmlsZSBlcSAnLScgKSB7IGJpbm1vZGUgU1RET1VUIH0KICAgICAgICB9CiAgICB9CgogICAgIyBpbiBvcmRlciB0byBjaGVjayBvdXRwdXQgc3ludGF4IHdoZW4gc3RhbmRhcmQgb3V0cHV0IGlzIHVzZWQsCiAgICAjIG9yIHdoZW4gaXQgaXMgYW4gb2JqZWN0LCB3ZSBoYXZlIHRvIG1ha2UgYSBjb3B5IG9mIHRoZSBmaWxlCiAgICBpZiAoICRvdXRwdXRfZmlsZSBlcSAnLScgfHwgcmVmICRvdXRwdXRfZmlsZSApIHsKICAgICAgICBpZiAoICRyT3B0cy0+eydjaGVjay1zeW50YXgnfSApIHsKCiAgICAgICAgICAgICMgVHVybmluZyBvZmYgc3ludGF4IGNoZWNrIHdoZW4gc3RhbmRhcmQgb3V0cHV0IGlzIHVzZWQuCiAgICAgICAgICAgICMgVGhlIHJlYXNvbiBpcyB0aGF0IHRlbXBvcmFyeSBmaWxlcyBjYXVzZSBwcm9ibGVtcyBvbgogICAgICAgICAgICAjIG9uIG1hbnkgc3lzdGVtcy4KICAgICAgICAgICAgJHJPcHRzLT57J2NoZWNrLXN5bnRheCd9ID0gMDsKICAgICAgICAgICAgJHskcnBlbmRpbmdfbG9nZmlsZV9tZXNzYWdlfSAuPSA8PEVPTTsKTm90ZTogLS1zeW50YXggY2hlY2sgd2lsbCBiZSBza2lwcGVkIGJlY2F1c2Ugc3RhbmRhcmQgb3V0cHV0IGlzIHVzZWQKRU9NCgogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gYmxlc3MgewogICAgICAgIF9maCAgICAgICAgICAgICAgID0+ICRmaCwKICAgICAgICBfZmhfdGVlICAgICAgICAgICA9PiAkZmhfdGVlLAogICAgICAgIF9vdXRwdXRfZmlsZSAgICAgID0+ICRvdXRwdXRfZmlsZSwKICAgICAgICBfb3V0cHV0X2ZpbGVfb3BlbiA9PiAkb3V0cHV0X2ZpbGVfb3BlbiwKICAgICAgICBfdGVlX2ZsYWcgICAgICAgICA9PiAwLAogICAgICAgIF90ZWVfZmlsZSAgICAgICAgID0+ICR0ZWVfZmlsZSwKICAgICAgICBfdGVlX2ZpbGVfb3BlbmVkICA9PiAwLAogICAgICAgIF9saW5lX3NlcGFyYXRvciAgID0+ICRsaW5lX3NlcGFyYXRvciwKICAgICAgICBfYmlubW9kZSAgICAgICAgICA9PiAkYmlubW9kZSwKICAgIH0sICRjbGFzczsKfQoKc3ViIHdyaXRlX2xpbmUgewoKICAgIG15ICggJHNlbGYsICRsaW5lICkgPSBAXzsKICAgIG15ICRmaCA9ICRzZWxmLT57X2ZofTsKCiAgICBteSAkb3V0cHV0X2ZpbGVfb3BlbiA9ICRzZWxmLT57X291dHB1dF9maWxlX29wZW59OwogICAgY2hvbXAgJGxpbmU7CiAgICAkbGluZSAuPSAkc2VsZi0+e19saW5lX3NlcGFyYXRvcn07CgogICAgJGZoLT5wcmludCgkbGluZSkgaWYgKCAkc2VsZi0+e19vdXRwdXRfZmlsZV9vcGVufSApOwoKICAgIGlmICggJHNlbGYtPntfdGVlX2ZsYWd9ICkgewogICAgICAgIHVubGVzcyAoICRzZWxmLT57X3RlZV9maWxlX29wZW5lZH0gKSB7ICRzZWxmLT5yZWFsbHlfb3Blbl90ZWVfZmlsZSgpIH0KICAgICAgICBteSAkZmhfdGVlID0gJHNlbGYtPntfZmhfdGVlfTsKICAgICAgICBwcmludCAkZmhfdGVlICRsaW5lOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgdGVlX29uIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAkc2VsZi0+e190ZWVfZmxhZ30gPSAxOwogICAgcmV0dXJuOwp9CgpzdWIgdGVlX29mZiB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgJHNlbGYtPntfdGVlX2ZsYWd9ID0gMDsKICAgIHJldHVybjsKfQoKc3ViIHJlYWxseV9vcGVuX3RlZV9maWxlIHsKICAgIG15ICRzZWxmICAgICA9IHNoaWZ0OwogICAgbXkgJHRlZV9maWxlID0gJHNlbGYtPntfdGVlX2ZpbGV9OwogICAgbXkgJGZoX3RlZTsKICAgICRmaF90ZWUgPSBJTzo6RmlsZS0+bmV3KCI+JHRlZV9maWxlIikKICAgICAgb3IgUGVybDo6VGlkeTo6RGllKCJjb3VsZG4ndCBvcGVuIFRFRSBmaWxlICR0ZWVfZmlsZTogJCFcbiIpOwogICAgYmlubW9kZSAkZmhfdGVlIGlmICRzZWxmLT57X2Jpbm1vZGV9OwogICAgJHNlbGYtPntfdGVlX2ZpbGVfb3BlbmVkfSA9IDE7CiAgICAkc2VsZi0+e19maF90ZWV9ICAgICAgICAgID0gJGZoX3RlZTsKICAgIHJldHVybjsKfQoKc3ViIGNsb3NlX291dHB1dF9maWxlIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CgogICAgIyBPbmx5IGNsb3NlIHBoeXNpY2FsIGZpbGVzLCBub3QgU1RET1VUIGFuZCBvdGhlciBvYmplY3RzCiAgICBteSAkb3V0cHV0X2ZpbGUgPSAkc2VsZi0+e19vdXRwdXRfZmlsZX07CiAgICBpZiAoICRvdXRwdXRfZmlsZSBuZSAnLScgJiYgIXJlZiAkb3V0cHV0X2ZpbGUgKSB7CiAgICAgICAgZXZhbCB7ICRzZWxmLT57X2ZofS0+Y2xvc2UoKSB9IGlmICRzZWxmLT57X291dHB1dF9maWxlX29wZW59OwogICAgfQogICAgJHNlbGYtPmNsb3NlX3RlZV9maWxlKCk7CiAgICByZXR1cm47Cn0KCnN1YiBjbG9zZV90ZWVfZmlsZSB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwoKICAgICMgT25seSBjbG9zZSBwaHlzaWNhbCBmaWxlcywgbm90IFNURE9VVCBhbmQgb3RoZXIgb2JqZWN0cwogICAgaWYgKCAkc2VsZi0+e190ZWVfZmlsZV9vcGVuZWR9ICkgewogICAgICAgIG15ICR0ZWVfZmlsZSA9ICRzZWxmLT57X3RlZV9maWxlfTsKICAgICAgICBpZiAoICR0ZWVfZmlsZSBuZSAnLScgJiYgIXJlZiAkdGVlX2ZpbGUgKSB7CiAgICAgICAgICAgIGV2YWwgeyAkc2VsZi0+e19maF90ZWV9LT5jbG9zZSgpIH07CiAgICAgICAgICAgICRzZWxmLT57X3RlZV9maWxlX29wZW5lZH0gPSAwOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybjsKfQoKMTsKCg==
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBUaGUgUGVybDo6VGlkeTo6TGluZUJ1ZmZlciBjbGFzcyBzdXBwbGllcyBhICdnZXRfbGluZSgpJwojIG1ldGhvZCBmb3IgcmV0dXJuaW5nIHRoZSBuZXh0IGxpbmUgdG8gYmUgcGFyc2VkLCBhcyB3ZWxsIGFzIGEKIyAncGVla19haGVhZCgpJyBtZXRob2QKIwojIFRoZSBpbnB1dCBwYXJhbWV0ZXIgaXMgYW4gb2JqZWN0IHdpdGggYSAnZ2V0X2xpbmUoKScgbWV0aG9kCiMgd2hpY2ggcmV0dXJucyB0aGUgbmV4dCBsaW5lIHRvIGJlIHBhcnNlZAojCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKcGFja2FnZSBQZXJsOjpUaWR5OjpMaW5lQnVmZmVyOwp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm91ciAkVkVSU0lPTiA9ICcyMDE5MTIwMyc7CgpzdWIgbmV3IHsKCiAgICBteSAoICRjbGFzcywgJGxpbmVfc291cmNlX29iamVjdCApID0gQF87CgogICAgcmV0dXJuIGJsZXNzIHsKICAgICAgICBfbGluZV9zb3VyY2Vfb2JqZWN0ID0+ICRsaW5lX3NvdXJjZV9vYmplY3QsCiAgICAgICAgX3Jsb29rYWhlYWRfYnVmZmVyICA9PiBbXSwKICAgIH0sICRjbGFzczsKfQoKc3ViIHBlZWtfYWhlYWQgewogICAgbXkgKCAkc2VsZiwgJGJ1ZmZlcl9pbmRleCApID0gQF87CiAgICBteSAkbGluZSAgICAgICAgICAgICAgID0gdW5kZWY7CiAgICBteSAkbGluZV9zb3VyY2Vfb2JqZWN0ID0gJHNlbGYtPntfbGluZV9zb3VyY2Vfb2JqZWN0fTsKICAgIG15ICRybG9va2FoZWFkX2J1ZmZlciAgPSAkc2VsZi0+e19ybG9va2FoZWFkX2J1ZmZlcn07CiAgICBpZiAoICRidWZmZXJfaW5kZXggPCBzY2FsYXIoIEB7JHJsb29rYWhlYWRfYnVmZmVyfSApICkgewogICAgICAgICRsaW5lID0gJHJsb29rYWhlYWRfYnVmZmVyLT5bJGJ1ZmZlcl9pbmRleF07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkbGluZSA9ICRsaW5lX3NvdXJjZV9vYmplY3QtPmdldF9saW5lKCk7CiAgICAgICAgcHVzaCggQHskcmxvb2thaGVhZF9idWZmZXJ9LCAkbGluZSApOwogICAgfQogICAgcmV0dXJuICRsaW5lOwp9CgpzdWIgZ2V0X2xpbmUgewogICAgbXkgJHNlbGYgICAgICAgICAgICAgICA9IHNoaWZ0OwogICAgbXkgJGxpbmUgICAgICAgICAgICAgICA9IHVuZGVmOwogICAgbXkgJGxpbmVfc291cmNlX29iamVjdCA9ICRzZWxmLT57X2xpbmVfc291cmNlX29iamVjdH07CiAgICBteSAkcmxvb2thaGVhZF9idWZmZXIgID0gJHNlbGYtPntfcmxvb2thaGVhZF9idWZmZXJ9OwoKICAgIGlmICggc2NhbGFyKCBAeyRybG9va2FoZWFkX2J1ZmZlcn0gKSApIHsKICAgICAgICAkbGluZSA9IHNoaWZ0IEB7JHJsb29rYWhlYWRfYnVmZmVyfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRsaW5lID0gJGxpbmVfc291cmNlX29iamVjdC0+Z2V0X2xpbmUoKTsKICAgIH0KICAgIHJldHVybiAkbGluZTsKfQoxOwoK
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBUaGUgUGVybDo6VGlkeTo6RGV2TnVsbCBjbGFzcyBzdXBwbGllcyBhIGR1bW15IHByaW50IG1ldGhvZAojCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKcGFja2FnZSBQZXJsOjpUaWR5OjpEZXZOdWxsOwp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm91ciAkVkVSU0lPTiA9ICcyMDE5MTIwMyc7CnN1YiBuZXcgICB7IG15ICRzZWxmID0gc2hpZnQ7IHJldHVybiBibGVzcyB7fSwgJHNlbGYgfQpzdWIgcHJpbnQgeyByZXR1cm4gfQpzdWIgY2xvc2UgeyByZXR1cm4gfQoKMTsKCg==
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBUaGUgUGVybDo6VGlkeTo6RGlhZ25vc3RpY3MgY2xhc3Mgd3JpdGVzIHRoZSBESUFHTk9TVElDUyBmaWxlLCB3aGljaCBpcwojIHVzZWZ1bCBmb3IgcHJvZ3JhbSBkZXZlbG9wbWVudC4KIwojIE9ubHkgb25lIHN1Y2ggZmlsZSBpcyBjcmVhdGVkIHJlZ2FyZGxlc3Mgb2YgdGhlIG51bWJlciBvZiBpbnB1dAojIGZpbGVzIHByb2Nlc3NlZC4gIFRoaXMgYWxsb3dzIHRoZSByZXN1bHRzIG9mIHByb2Nlc3NpbmcgbWFueSBmaWxlcwojIHRvIGJlIHN1bW1hcml6ZWQgaW4gYSBzaW5nbGUgZmlsZS4KCiMgT3V0cHV0IG1lc3NhZ2VzIGdvIHRvIGEgZmlsZSBuYW1lZCBESUFHTk9TVElDUywgd2hlcmUKIyB0aGV5IGFyZSBsYWJlbGVkIGJ5IGZpbGUgYW5kIGxpbmUuICBUaGlzIGFsbG93cyBtYW55IGZpbGVzIHRvIGJlCiMgc2Nhbm5lZCBhdCBvbmNlIGZvciBzb21lIHBhcnRpY3VsYXIgY29uZGl0aW9uIG9mIGludGVyZXN0LiAgSXQgd2FzCiMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgZGV2ZWxvcGluZyBndWVzc2luZyBzdHJhdGVnaWVzLgojCiMgTk9URTogVGhpcyBmZWF0dXJlIGlzIGRlYWN0aXZhdGVkIGluIGZpbmFsIHJlbGVhc2VzIGJ1dCBjYW4gYmUKIyByZWFjdGl2YXRlZCBmb3IgZGVidWdnaW5nIGJ5IHVuLWNvbW1lbnRpbmcgdGhlICdJJyBvcHRpb25zIGZsYWcKIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnBhY2thZ2UgUGVybDo6VGlkeTo6RGlhZ25vc3RpY3M7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKb3VyICRWRVJTSU9OID0gJzIwMTkxMjAzJzsKCnN1YiBuZXcgewoKICAgIG15ICRjbGFzcyA9IHNoaWZ0OwogICAgcmV0dXJuIGJsZXNzIHsKICAgICAgICBfd3JpdGVfZGlhZ25vc3RpY3NfY291bnQgPT4gMCwKICAgICAgICBfbGFzdF9kaWFnbm9zdGljX2ZpbGUgICAgPT4gIiIsCiAgICAgICAgX2lucHV0X2ZpbGUgICAgICAgICAgICAgID0+ICIiLAogICAgICAgIF9maCAgICAgICAgICAgICAgICAgICAgICA9PiB1bmRlZiwKICAgIH0sICRjbGFzczsKfQoKc3ViIHNldF9pbnB1dF9maWxlIHsKICAgIG15ICggJHNlbGYsICRpbnB1dF9maWxlICkgPSBAXzsKICAgICRzZWxmLT57X2lucHV0X2ZpbGV9ID0gJGlucHV0X2ZpbGU7CiAgICByZXR1cm47Cn0KCnN1YiB3cml0ZV9kaWFnbm9zdGljcyB7CiAgICBteSAoICRzZWxmLCAkbXNnICkgPSBAXzsKCiAgICB1bmxlc3MgKCAkc2VsZi0+e193cml0ZV9kaWFnbm9zdGljc19jb3VudH0gKSB7CiAgICAgICAgb3BlbiggJHNlbGYtPntfZmh9LCAiPiIsICJESUFHTk9TVElDUyIgKQogICAgICAgICAgb3IgUGVybDo6VGlkeTo6RGllKCJjb3VsZG4ndCBvcGVuIERJQUdOT1NUSUNTOiAkIVxuIik7CiAgICB9CgogICAgbXkgJGZoICAgICAgICAgICAgICAgICAgID0gJHNlbGYtPntfZmh9OwogICAgbXkgJGxhc3RfZGlhZ25vc3RpY19maWxlID0gJHNlbGYtPntfbGFzdF9kaWFnbm9zdGljX2ZpbGV9OwogICAgbXkgJGlucHV0X2ZpbGUgICAgICAgICAgID0gJHNlbGYtPntfaW5wdXRfZmlsZX07CiAgICBpZiAoICRsYXN0X2RpYWdub3N0aWNfZmlsZSBuZSAkaW5wdXRfZmlsZSApIHsKICAgICAgICAkZmgtPnByaW50KCJcbkZJTEU6JGlucHV0X2ZpbGVcbiIpOwogICAgfQogICAgJHNlbGYtPntfbGFzdF9kaWFnbm9zdGljX2ZpbGV9ID0gJGlucHV0X2ZpbGU7CiAgICBteSAkaW5wdXRfbGluZV9udW1iZXIgPSBQZXJsOjpUaWR5OjpUb2tlbml6ZXI6OmdldF9pbnB1dF9saW5lX251bWJlcigpOwogICAgJGZoLT5wcmludCgiJGlucHV0X2xpbmVfbnVtYmVyOlx0JG1zZyIpOwogICAgJHNlbGYtPntfd3JpdGVfZGlhZ25vc3RpY3NfY291bnR9Kys7CiAgICByZXR1cm47Cn0KCjE7Cgo=
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyB0aGUgUGVybDo6VGlkeTo6TGluZVNvdXJjZSBjbGFzcyBzdXBwbGllcyBhbiBvYmplY3Qgd2l0aCBhICdnZXRfbGluZSgpJyBtZXRob2QKIyB3aGljaCByZXR1cm5zIHRoZSBuZXh0IGxpbmUgdG8gYmUgcGFyc2VkCiMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpwYWNrYWdlIFBlcmw6OlRpZHk6OkxpbmVTb3VyY2U7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKb3VyICRWRVJTSU9OID0gJzIwMTkxMjAzJzsKCnN1YiBuZXcgewoKICAgIG15ICggJGNsYXNzLCAkaW5wdXRfZmlsZSwgJHJPcHRzLCAkcnBlbmRpbmdfbG9nZmlsZV9tZXNzYWdlICkgPSBAXzsKCiAgICBteSAkaW5wdXRfbGluZV9lbmRpbmc7CiAgICBpZiAoICRyT3B0cy0+eydwcmVzZXJ2ZS1saW5lLWVuZGluZ3MnfSApIHsKICAgICAgICAkaW5wdXRfbGluZV9lbmRpbmcgPSBQZXJsOjpUaWR5OjpmaW5kX2lucHV0X2xpbmVfZW5kaW5nKCRpbnB1dF9maWxlKTsKICAgIH0KCiAgICAoIG15ICRmaCwgJGlucHV0X2ZpbGUgKSA9IFBlcmw6OlRpZHk6OnN0cmVhbWhhbmRsZSggJGlucHV0X2ZpbGUsICdyJyApOwogICAgcmV0dXJuIHVubGVzcyAkZmg7CgogICAgIyBpbiBvcmRlciB0byBjaGVjayBvdXRwdXQgc3ludGF4IHdoZW4gc3RhbmRhcmQgb3V0cHV0IGlzIHVzZWQsCiAgICAjIG9yIHdoZW4gaXQgaXMgYW4gb2JqZWN0LCB3ZSBoYXZlIHRvIG1ha2UgYSBjb3B5IG9mIHRoZSBmaWxlCiAgICBpZiAoICggJGlucHV0X2ZpbGUgZXEgJy0nIHx8IHJlZiAkaW5wdXRfZmlsZSApICYmICRyT3B0cy0+eydjaGVjay1zeW50YXgnfSApCiAgICB7CgogICAgICAgICMgVHVybmluZyBvZmYgc3ludGF4IGNoZWNrIHdoZW4gaW5wdXQgb3V0cHV0IGlzIHVzZWQuCiAgICAgICAgIyBUaGUgcmVhc29uIGlzIHRoYXQgdGVtcG9yYXJ5IGZpbGVzIGNhdXNlIHByb2JsZW1zIG9uCiAgICAgICAgIyBvbiBtYW55IHN5c3RlbXMuCiAgICAgICAgJHJPcHRzLT57J2NoZWNrLXN5bnRheCd9ID0gMDsKCiAgICAgICAgJHskcnBlbmRpbmdfbG9nZmlsZV9tZXNzYWdlfSAuPSA8PEVPTTsKTm90ZTogLS1zeW50YXggY2hlY2sgd2lsbCBiZSBza2lwcGVkIGJlY2F1c2Ugc3RhbmRhcmQgaW5wdXQgaXMgdXNlZApFT00KCiAgICB9CgogICAgcmV0dXJuIGJsZXNzIHsKICAgICAgICBfZmggICAgICAgICAgICAgICAgPT4gJGZoLAogICAgICAgIF9maWxlbmFtZSAgICAgICAgICA9PiAkaW5wdXRfZmlsZSwKICAgICAgICBfaW5wdXRfbGluZV9lbmRpbmcgPT4gJGlucHV0X2xpbmVfZW5kaW5nLAogICAgICAgIF9yaW5wdXRfYnVmZmVyICAgICA9PiBbXSwKICAgICAgICBfc3RhcnRlZCAgICAgICAgICAgPT4gMCwKICAgIH0sICRjbGFzczsKfQoKc3ViIGNsb3NlX2lucHV0X2ZpbGUgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKCiAgICAjIE9ubHkgY2xvc2UgcGh5c2ljYWwgZmlsZXMsIG5vdCBTVERJTiBhbmQgb3RoZXIgb2JqZWN0cwogICAgbXkgJGZpbGVuYW1lID0gJHNlbGYtPntfZmlsZW5hbWV9OwogICAgaWYgKCAkZmlsZW5hbWUgbmUgJy0nICYmICFyZWYgJGZpbGVuYW1lICkgewogICAgICAgIGV2YWwgeyAkc2VsZi0+e19maH0tPmNsb3NlKCkgfTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIGdldF9saW5lIHsKICAgIG15ICRzZWxmICAgICAgICAgID0gc2hpZnQ7CiAgICBteSAkbGluZSAgICAgICAgICA9IHVuZGVmOwogICAgbXkgJGZoICAgICAgICAgICAgPSAkc2VsZi0+e19maH07CiAgICBteSAkcmlucHV0X2J1ZmZlciA9ICRzZWxmLT57X3JpbnB1dF9idWZmZXJ9OwoKICAgIGlmICggc2NhbGFyKCBAeyRyaW5wdXRfYnVmZmVyfSApICkgewogICAgICAgICRsaW5lID0gc2hpZnQgQHskcmlucHV0X2J1ZmZlcn07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkbGluZSA9ICRmaC0+Z2V0bGluZSgpOwoKICAgICAgICAjIHBhdGNoIHRvIHJlYWQgcmF3IG1hYyBmaWxlcyB1bmRlciB1bml4LCBkb3MKICAgICAgICAjIHNlZSBpZiB0aGUgZmlyc3QgbGluZSBoYXMgZW1iZWRkZWQgXHIncwogICAgICAgIGlmICggJGxpbmUgJiYgISRzZWxmLT57X3N0YXJ0ZWR9ICkgewogICAgICAgICAgICBpZiAoICRsaW5lID1+IC9bXDAxNV1bXlwwMTVcMDEyXS8gKSB7CgogICAgICAgICAgICAgICAgIyBmb3VuZCBvbmUgLS0gYnJlYWsgdGhlIGxpbmUgdXAgYW5kIHN0b3JlIGluIGEgYnVmZmVyCiAgICAgICAgICAgICAgICBAeyRyaW5wdXRfYnVmZmVyfSA9IG1hcCB7ICRfIC4gIlxuIiB9IHNwbGl0IC9cMDE1LywgJGxpbmU7CiAgICAgICAgICAgICAgICBteSAkY291bnQgPSBAeyRyaW5wdXRfYnVmZmVyfTsKICAgICAgICAgICAgICAgICRsaW5lID0gc2hpZnQgQHskcmlucHV0X2J1ZmZlcn07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHNlbGYtPntfc3RhcnRlZH0rKzsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gJGxpbmU7Cn0KMTsKCg==
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBUaGUgUGVybDo6VGlkeTo6TG9nZ2VyIGNsYXNzIHdyaXRlcyB0aGUgLkxPRyBhbmQgLkVSUiBmaWxlcwojCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKcGFja2FnZSBQZXJsOjpUaWR5OjpMb2dnZXI7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKb3VyICRWRVJTSU9OID0gJzIwMTkxMjAzJzsKCnN1YiBuZXcgewoKICAgIG15ICggJGNsYXNzLCAkck9wdHMsICRsb2dfZmlsZSwgJHdhcm5pbmdfZmlsZSwgJGZoX3N0ZGVyciwgJHNhd19leHRydWRlLAogICAgICAgICRkaXNwbGF5X25hbWUgKQogICAgICA9IEBfOwoKICAgIG15ICRmaF93YXJuaW5ncyA9ICRyT3B0cy0+eydzdGFuZGFyZC1lcnJvci1vdXRwdXQnfSA/ICRmaF9zdGRlcnIgOiB1bmRlZjsKCiAgICAjIHJlbW92ZSBhbnkgb2xkIGVycm9yIG91dHB1dCBmaWxlIGlmIHdlIG1pZ2h0IHdyaXRlIGEgbmV3IG9uZQogICAgdW5sZXNzICggJGZoX3dhcm5pbmdzIHx8IHJlZigkd2FybmluZ19maWxlKSApIHsKICAgICAgICBpZiAoIC1lICR3YXJuaW5nX2ZpbGUgKSB7CiAgICAgICAgICAgIHVubGluaygkd2FybmluZ19maWxlKQogICAgICAgICAgICAgIG9yIFBlcmw6OlRpZHk6OkRpZSgKICAgICAgICAgICAgICAgICJjb3VsZG4ndCB1bmxpbmsgd2FybmluZyBmaWxlICR3YXJuaW5nX2ZpbGU6ICQhXG4iKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJGxvZ2ZpbGVfZ2FwID0KICAgICAgZGVmaW5lZCggJHJPcHRzLT57J2xvZ2ZpbGUtZ2FwJ30gKQogICAgICA/ICRyT3B0cy0+eydsb2dmaWxlLWdhcCd9CiAgICAgIDogNTA7CiAgICBpZiAoICRsb2dmaWxlX2dhcCA9PSAwICkgeyAkbG9nZmlsZV9nYXAgPSAxIH0KCiAgICByZXR1cm4gYmxlc3MgewogICAgICAgIF9sb2dfZmlsZSAgICAgICAgICAgICAgICAgICAgICA9PiAkbG9nX2ZpbGUsCiAgICAgICAgX2xvZ2ZpbGVfZ2FwICAgICAgICAgICAgICAgICAgID0+ICRsb2dmaWxlX2dhcCwKICAgICAgICBfck9wdHMgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJHJPcHRzLAogICAgICAgIF9maF93YXJuaW5ncyAgICAgICAgICAgICAgICAgICA9PiAkZmhfd2FybmluZ3MsCiAgICAgICAgX2xhc3RfaW5wdXRfbGluZV93cml0dGVuICAgICAgID0+IDAsCiAgICAgICAgX2F0X2VuZF9vZl9maWxlICAgICAgICAgICAgICAgID0+IDAsCiAgICAgICAgX3VzZV9wcmVmaXggICAgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgX2Jsb2NrX2xvZ19vdXRwdXQgICAgICAgICAgICAgID0+IDAsCiAgICAgICAgX2xpbmVfb2ZfdG9rZW5zICAgICAgICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIF9vdXRwdXRfbGluZV9udW1iZXIgICAgICAgICAgICA9PiB1bmRlZiwKICAgICAgICBfd3JvdGVfbGluZV9pbmZvcm1hdGlvbl9zdHJpbmcgPT4gMCwKICAgICAgICBfd3JvdGVfY29sdW1uX2hlYWRpbmdzICAgICAgICAgPT4gMCwKICAgICAgICBfd2FybmluZ19maWxlICAgICAgICAgICAgICAgICAgPT4gJHdhcm5pbmdfZmlsZSwKICAgICAgICBfd2FybmluZ19jb3VudCAgICAgICAgICAgICAgICAgPT4gMCwKICAgICAgICBfY29tcGxhaW50X2NvdW50ICAgICAgICAgICAgICAgPT4gMCwKICAgICAgICBfc2F3X2NvZGVfYnVnICAgID0+IC0xLCAgICAgICAgICAgICAjIC0xPW5vIDA9bWF5YmUgMT1mb3Igc3VyZQogICAgICAgIF9zYXdfYnJhY2VfZXJyb3IgPT4gMCwKICAgICAgICBfc2F3X2V4dHJ1ZGUgICAgID0+ICRzYXdfZXh0cnVkZSwKICAgICAgICBfb3V0cHV0X2FycmF5ICAgID0+IFtdLAogICAgICAgIF9maWxlbmFtZV9zdGFtcCA9PiAkZGlzcGxheV9uYW1lID8gJGRpc3BsYXlfbmFtZSAuICc6JyA6ICIiLAogICAgfSwgJGNsYXNzOwp9CgpzdWIgZ2V0X3dhcm5pbmdfY291bnQgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIHJldHVybiAkc2VsZi0+e193YXJuaW5nX2NvdW50fTsKfQoKc3ViIGdldF91c2VfcHJlZml4IHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICByZXR1cm4gJHNlbGYtPntfdXNlX3ByZWZpeH07Cn0KCnN1YiBibG9ja19sb2dfb3V0cHV0IHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAkc2VsZi0+e19ibG9ja19sb2dfb3V0cHV0fSA9IDE7CiAgICByZXR1cm47Cn0KCnN1YiB1bmJsb2NrX2xvZ19vdXRwdXQgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgICRzZWxmLT57X2Jsb2NrX2xvZ19vdXRwdXR9ID0gMDsKICAgIHJldHVybjsKfQoKc3ViIGludGVycnVwdF9sb2dmaWxlIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAkc2VsZi0+e191c2VfcHJlZml4fSA9IDA7CiAgICAkc2VsZi0+d2FybmluZygiXG4iKTsKICAgICRzZWxmLT53cml0ZV9sb2dmaWxlX2VudHJ5KCAnIycgeCAyNCAuICIgIFdBUk5JTkcgICIgLiAnIycgeCAyNSAuICJcbiIgKTsKICAgIHJldHVybjsKfQoKc3ViIHJlc3VtZV9sb2dmaWxlIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAkc2VsZi0+d3JpdGVfbG9nZmlsZV9lbnRyeSggJyMnIHggNjAgLiAiXG4iICk7CiAgICAkc2VsZi0+e191c2VfcHJlZml4fSA9IDE7CiAgICByZXR1cm47Cn0KCnN1YiB3ZV9hcmVfYXRfdGhlX2xhc3RfbGluZSB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgdW5sZXNzICggJHNlbGYtPntfd3JvdGVfbGluZV9pbmZvcm1hdGlvbl9zdHJpbmd9ICkgewogICAgICAgICRzZWxmLT53cml0ZV9sb2dmaWxlX2VudHJ5KCJMYXN0IGxpbmVcblxuIik7CiAgICB9CiAgICAkc2VsZi0+e19hdF9lbmRfb2ZfZmlsZX0gPSAxOwogICAgcmV0dXJuOwp9CgojIHJlY29yZCBzb21lIHN0dWZmIGluIGNhc2Ugd2UgZ28gZG93biBpbiBmbGFtZXMKc3ViIGJsYWNrX2JveCB7CiAgICBteSAoICRzZWxmLCAkbGluZV9vZl90b2tlbnMsICRvdXRwdXRfbGluZV9udW1iZXIgKSA9IEBfOwogICAgbXkgJGlucHV0X2xpbmUgICAgICAgID0gJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdGV4dH07CiAgICBteSAkaW5wdXRfbGluZV9udW1iZXIgPSAkbGluZV9vZl90b2tlbnMtPntfbGluZV9udW1iZXJ9OwoKICAgICMgc2F2ZSBsaW5lIGluZm9ybWF0aW9uIGluIGNhc2Ugd2UgaGF2ZSB0byB3cml0ZSBhIGxvZ2ZpbGUgbWVzc2FnZQogICAgJHNlbGYtPntfbGluZV9vZl90b2tlbnN9ICAgICAgICAgICAgICAgID0gJGxpbmVfb2ZfdG9rZW5zOwogICAgJHNlbGYtPntfb3V0cHV0X2xpbmVfbnVtYmVyfSAgICAgICAgICAgID0gJG91dHB1dF9saW5lX251bWJlcjsKICAgICRzZWxmLT57X3dyb3RlX2xpbmVfaW5mb3JtYXRpb25fc3RyaW5nfSA9IDA7CgogICAgbXkgJGxhc3RfaW5wdXRfbGluZV93cml0dGVuID0gJHNlbGYtPntfbGFzdF9pbnB1dF9saW5lX3dyaXR0ZW59OwogICAgbXkgJHJPcHRzICAgICAgICAgICAgICAgICAgID0gJHNlbGYtPntfck9wdHN9OwogICAgaWYgKAogICAgICAgICgKICAgICAgICAgICAgKCAkaW5wdXRfbGluZV9udW1iZXIgLSAkbGFzdF9pbnB1dF9saW5lX3dyaXR0ZW4gKSA+PQogICAgICAgICAgICAkc2VsZi0+e19sb2dmaWxlX2dhcH0KICAgICAgICApCiAgICAgICAgfHwgKCAkaW5wdXRfbGluZSA9fiAvXlxzKihzdWJ8cGFja2FnZSlccysoXHcrKS8gKQogICAgICApCiAgICB7CiAgICAgICAgbXkgJHN0cnVjdHVyYWxfaW5kZW50YXRpb25fbGV2ZWwgPSAkbGluZV9vZl90b2tlbnMtPntfbGV2ZWxfMH07CiAgICAgICAgJHN0cnVjdHVyYWxfaW5kZW50YXRpb25fbGV2ZWwgPSAwCiAgICAgICAgICBpZiAoICRzdHJ1Y3R1cmFsX2luZGVudGF0aW9uX2xldmVsIDwgMCApOwogICAgICAgICRzZWxmLT57X2xhc3RfaW5wdXRfbGluZV93cml0dGVufSA9ICRpbnB1dF9saW5lX251bWJlcjsKICAgICAgICAoIG15ICRvdXRfc3RyID0gJGlucHV0X2xpbmUgKSA9fiBzL15ccyovLzsKICAgICAgICBjaG9tcCAkb3V0X3N0cjsKCiAgICAgICAgJG91dF9zdHIgPSAoICcuJyB4ICRzdHJ1Y3R1cmFsX2luZGVudGF0aW9uX2xldmVsICkgLiAkb3V0X3N0cjsKCiAgICAgICAgaWYgKCBsZW5ndGgoJG91dF9zdHIpID4gMzUgKSB7CiAgICAgICAgICAgICRvdXRfc3RyID0gc3Vic3RyKCAkb3V0X3N0ciwgMCwgMzUgKSAuICIgLi4uLiI7CiAgICAgICAgfQogICAgICAgICRzZWxmLT5sb2dmaWxlX291dHB1dCggIiIsICIkb3V0X3N0clxuIiApOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgd3JpdGVfbG9nZmlsZV9lbnRyeSB7CgogICAgbXkgKCAkc2VsZiwgQG1zZyApID0gQF87CgogICAgIyBhZGQgbGVhZGluZyA+Pj4gdG8gYXZvaWQgY29uZnVzaW5nIGVycm9yIG1lc3NhZ2VzIGFuZCBjb2RlCiAgICAkc2VsZi0+bG9nZmlsZV9vdXRwdXQoICI+Pj4iLCAiQG1zZyIgKTsKICAgIHJldHVybjsKfQoKc3ViIHdyaXRlX2NvbHVtbl9oZWFkaW5ncyB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwoKICAgICRzZWxmLT57X3dyb3RlX2NvbHVtbl9oZWFkaW5nc30gPSAxOwogICAgbXkgJHJvdXRwdXRfYXJyYXkgPSAkc2VsZi0+e19vdXRwdXRfYXJyYXl9OwogICAgcHVzaCBAeyRyb3V0cHV0X2FycmF5fSwgPDxFT007ClRoZSBuZXN0aW5nIGRlcHRocyBpbiB0aGUgdGFibGUgYmVsb3cgYXJlIGF0IHRoZSBzdGFydCBvZiB0aGUgbGluZXMuClRoZSBpbmRpY2F0ZWQgb3V0cHV0IGxpbmUgbnVtYmVycyBhcmUgbm90IGFsd2F5cyBleGFjdC4KY2kgPSBsZXZlbHMgb2YgY29udGludWF0aW9uIGluZGVudGF0aW9uOyBiayA9IDEgaWYgaW4gQkxPQ0ssIDAgaWYgbm90LgoKaW46b3V0IGluZGVudCBjIGIgIG5lc3RpbmcgICBjb2RlICsgbWVzc2FnZXM7IChtZXNzYWdlcyBiZWdpbiB3aXRoID4+PikKbGluZXMgIGxldmVscyBpIGsgICAgICAgICAgICAoY29kZSBiZWdpbnMgd2l0aCBvbmUgJy4nIHBlciBpbmRlbnQgbGV2ZWwpCi0tLS0tLSAgLS0tLS0gLSAtIC0tLS0tLS0tICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFT00KICAgIHJldHVybjsKfQoKc3ViIG1ha2VfbGluZV9pbmZvcm1hdGlvbl9zdHJpbmcgewoKICAgICMgbWFrZSBjb2x1bW5zIG9mIGluZm9ybWF0aW9uIHdoZW4gYSBsb2dmaWxlIG1lc3NhZ2UgbmVlZHMgdG8gZ28gb3V0CiAgICBteSAkc2VsZiAgICAgICAgICAgICAgICAgICAgPSBzaGlmdDsKICAgIG15ICRsaW5lX29mX3Rva2VucyAgICAgICAgICA9ICRzZWxmLT57X2xpbmVfb2ZfdG9rZW5zfTsKICAgIG15ICRpbnB1dF9saW5lX251bWJlciAgICAgICA9ICRsaW5lX29mX3Rva2Vucy0+e19saW5lX251bWJlcn07CiAgICBteSAkbGluZV9pbmZvcm1hdGlvbl9zdHJpbmcgPSAiIjsKICAgIGlmICgkaW5wdXRfbGluZV9udW1iZXIpIHsKCiAgICAgICAgbXkgJG91dHB1dF9saW5lX251bWJlciAgID0gJHNlbGYtPntfb3V0cHV0X2xpbmVfbnVtYmVyfTsKICAgICAgICBteSAkYnJhY2VfZGVwdGggICAgICAgICAgPSAkbGluZV9vZl90b2tlbnMtPntfY3VybHlfYnJhY2VfZGVwdGh9OwogICAgICAgIG15ICRwYXJlbl9kZXB0aCAgICAgICAgICA9ICRsaW5lX29mX3Rva2Vucy0+e19wYXJlbl9kZXB0aH07CiAgICAgICAgbXkgJHNxdWFyZV9icmFja2V0X2RlcHRoID0gJGxpbmVfb2ZfdG9rZW5zLT57X3NxdWFyZV9icmFja2V0X2RlcHRofTsKICAgICAgICBteSAkZ3Vlc3NlZF9pbmRlbnRhdGlvbl9sZXZlbCA9CiAgICAgICAgICAkbGluZV9vZl90b2tlbnMtPntfZ3Vlc3NlZF9pbmRlbnRhdGlvbl9sZXZlbH07CiAgICAgICAgIyNteSAkcnRva2VuX2FycmF5ID0gJGxpbmVfb2ZfdG9rZW5zLT57X3J0b2tlbl9hcnJheX07CgogICAgICAgIG15ICRzdHJ1Y3R1cmFsX2luZGVudGF0aW9uX2xldmVsID0gJGxpbmVfb2ZfdG9rZW5zLT57X2xldmVsXzB9OwoKICAgICAgICAkc2VsZi0+d3JpdGVfY29sdW1uX2hlYWRpbmdzKCkgdW5sZXNzICRzZWxmLT57X3dyb3RlX2NvbHVtbl9oZWFkaW5nc307CgogICAgICAgICMga2VlcCBsb2dmaWxlIGNvbHVtbnMgYWxpZ25lZCBmb3Igc2NyaXB0cyB1cCB0byA5OTkgbGluZXM7CiAgICAgICAgIyBmb3IgbG9uZ2VyIHNjcmlwdHMgaXQgZG9lc24ndCByZWFsbHkgbWF0dGVyCiAgICAgICAgbXkgJGV4dHJhX3NwYWNlID0gIiI7CiAgICAgICAgJGV4dHJhX3NwYWNlIC49CiAgICAgICAgICAgICggJGlucHV0X2xpbmVfbnVtYmVyIDwgMTAgKSAgPyAiICAiCiAgICAgICAgICA6ICggJGlucHV0X2xpbmVfbnVtYmVyIDwgMTAwICkgPyAiICIKICAgICAgICAgIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiOwogICAgICAgICRleHRyYV9zcGFjZSAuPQogICAgICAgICAgICAoICRvdXRwdXRfbGluZV9udW1iZXIgPCAxMCApICA/ICIgICIKICAgICAgICAgIDogKCAkb3V0cHV0X2xpbmVfbnVtYmVyIDwgMTAwICkgPyAiICIKICAgICAgICAgIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIjsKCiAgICAgICAgIyB0aGVyZSBhcmUgMiBwb3NzaWJsZSBuZXN0aW5nIHN0cmluZ3M6CiAgICAgICAgIyB0aGUgb3JpZ2luYWwgd2hpY2ggbG9va3MgbGlrZSB0aGlzOiAgKDAgWzEgezIKICAgICAgICAjIHRoZSBuZXcgb25lLCB3aGljaCBsb29rcyBsaWtlIHRoaXM6ICB7e1sKICAgICAgICAjIHRoZSBuZXcgb25lIGlzIGVhc2llciB0byByZWFkLCBhbmQgc2hvd3MgdGhlIG9yZGVyLCBidXQKICAgICAgICAjIGNvdWxkIGJlIGFyYml0cmFyaWx5IGxvbmcsIHNvIHdlIHVzZSBpdCB1bmxlc3MgaXQgaXMgdG9vIGxvbmcKICAgICAgICBteSAkbmVzdGluZ19zdHJpbmcgPQogICAgICAgICAgIigkcGFyZW5fZGVwdGggWyRzcXVhcmVfYnJhY2tldF9kZXB0aCB7JGJyYWNlX2RlcHRoIjsKICAgICAgICBteSAkbmVzdGluZ19zdHJpbmdfbmV3ID0gJGxpbmVfb2ZfdG9rZW5zLT57X25lc3RpbmdfdG9rZW5zXzB9OwogICAgICAgIG15ICRjaV9sZXZlbCAgICAgICAgICAgPSAkbGluZV9vZl90b2tlbnMtPntfY2lfbGV2ZWxfMH07CiAgICAgICAgaWYgKCAkY2lfbGV2ZWwgPiA5ICkgeyAkY2lfbGV2ZWwgPSAnKicgfQogICAgICAgIG15ICRiayA9ICggJGxpbmVfb2ZfdG9rZW5zLT57X25lc3RpbmdfYmxvY2tzXzB9ID1+IC8xJC8gKSA/ICcxJyA6ICcwJzsKCiAgICAgICAgaWYgKCBsZW5ndGgoJG5lc3Rpbmdfc3RyaW5nX25ldykgPD0gOCApIHsKICAgICAgICAgICAgJG5lc3Rpbmdfc3RyaW5nID0KICAgICAgICAgICAgICAkbmVzdGluZ19zdHJpbmdfbmV3IC4gIiAiIHggKCA4IC0gbGVuZ3RoKCRuZXN0aW5nX3N0cmluZ19uZXcpICk7CiAgICAgICAgfQogICAgICAgICRsaW5lX2luZm9ybWF0aW9uX3N0cmluZyA9CiJMJGlucHV0X2xpbmVfbnVtYmVyOiRvdXRwdXRfbGluZV9udW1iZXIkZXh0cmFfc3BhY2UgaSRndWVzc2VkX2luZGVudGF0aW9uX2xldmVsOiRzdHJ1Y3R1cmFsX2luZGVudGF0aW9uX2xldmVsICRjaV9sZXZlbCAkYmsgJG5lc3Rpbmdfc3RyaW5nIjsKICAgIH0KICAgIHJldHVybiAkbGluZV9pbmZvcm1hdGlvbl9zdHJpbmc7Cn0KCnN1YiBsb2dmaWxlX291dHB1dCB7CiAgICBteSAoICRzZWxmLCAkcHJvbXB0LCAkbXNnICkgPSBAXzsKICAgIHJldHVybiBpZiAoICRzZWxmLT57X2Jsb2NrX2xvZ19vdXRwdXR9ICk7CgogICAgbXkgJHJvdXRwdXRfYXJyYXkgPSAkc2VsZi0+e19vdXRwdXRfYXJyYXl9OwogICAgaWYgKCAkc2VsZi0+e19hdF9lbmRfb2ZfZmlsZX0gfHwgISRzZWxmLT57X3VzZV9wcmVmaXh9ICkgewogICAgICAgIHB1c2ggQHskcm91dHB1dF9hcnJheX0sICIkbXNnIjsKICAgIH0KICAgIGVsc2UgewogICAgICAgIG15ICRsaW5lX2luZm9ybWF0aW9uX3N0cmluZyA9ICRzZWxmLT5tYWtlX2xpbmVfaW5mb3JtYXRpb25fc3RyaW5nKCk7CiAgICAgICAgJHNlbGYtPntfd3JvdGVfbGluZV9pbmZvcm1hdGlvbl9zdHJpbmd9ID0gMTsKCiAgICAgICAgaWYgKCRsaW5lX2luZm9ybWF0aW9uX3N0cmluZykgewogICAgICAgICAgICBwdXNoIEB7JHJvdXRwdXRfYXJyYXl9LCAiJGxpbmVfaW5mb3JtYXRpb25fc3RyaW5nICAgJHByb21wdCRtc2ciOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcHVzaCBAeyRyb3V0cHV0X2FycmF5fSwgIiRtc2ciOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybjsKfQoKc3ViIGdldF9zYXdfYnJhY2VfZXJyb3IgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIHJldHVybiAkc2VsZi0+e19zYXdfYnJhY2VfZXJyb3J9Owp9CgpzdWIgaW5jcmVtZW50X2JyYWNlX2Vycm9yIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAkc2VsZi0+e19zYXdfYnJhY2VfZXJyb3J9Kys7CiAgICByZXR1cm47Cn0KCnN1YiBicmFjZV93YXJuaW5nIHsKICAgIG15ICggJHNlbGYsICRtc2cgKSA9IEBfOwoKICAgICN1c2UgY29uc3RhbnQgQlJBQ0VfV0FSTklOR19MSU1JVCA9PiAxMDsKICAgIG15ICRCUkFDRV9XQVJOSU5HX0xJTUlUID0gMTA7CiAgICBteSAkc2F3X2JyYWNlX2Vycm9yICAgICA9ICRzZWxmLT57X3Nhd19icmFjZV9lcnJvcn07CgogICAgaWYgKCAkc2F3X2JyYWNlX2Vycm9yIDwgJEJSQUNFX1dBUk5JTkdfTElNSVQgKSB7CiAgICAgICAgJHNlbGYtPndhcm5pbmcoJG1zZyk7CiAgICB9CiAgICAkc2F3X2JyYWNlX2Vycm9yKys7CiAgICAkc2VsZi0+e19zYXdfYnJhY2VfZXJyb3J9ID0gJHNhd19icmFjZV9lcnJvcjsKCiAgICBpZiAoICRzYXdfYnJhY2VfZXJyb3IgPT0gJEJSQUNFX1dBUk5JTkdfTElNSVQgKSB7CiAgICAgICAgJHNlbGYtPndhcm5pbmcoIk5vIGZ1cnRoZXIgd2FybmluZ3Mgb2YgdGhpcyB0eXBlIHdpbGwgYmUgZ2l2ZW5cbiIpOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgY29tcGxhaW4gewoKICAgICMgaGFuZGxlIG5vbi1jcml0aWNhbCB3YXJuaW5nIG1lc3NhZ2VzIGJhc2VkIG9uIGlucHV0IGZsYWcKICAgIG15ICggJHNlbGYsICRtc2cgKSA9IEBfOwogICAgbXkgJHJPcHRzID0gJHNlbGYtPntfck9wdHN9OwoKICAgICMgdGhlc2UgYXBwZWFyIGluIC5FUlIgb3V0cHV0IG9ubHkgaWYgLXcgZmxhZyBpcyB1c2VkCiAgICBpZiAoICRyT3B0cy0+eyd3YXJuaW5nLW91dHB1dCd9ICkgewogICAgICAgICRzZWxmLT53YXJuaW5nKCRtc2cpOwogICAgfQoKICAgICMgb3RoZXJ3aXNlLCB0aGV5IGdvIHRvIHRoZSAuTE9HIGZpbGUKICAgIGVsc2UgewogICAgICAgICRzZWxmLT57X2NvbXBsYWludF9jb3VudH0rKzsKICAgICAgICAkc2VsZi0+d3JpdGVfbG9nZmlsZV9lbnRyeSgkbXNnKTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIHdhcm5pbmcgewoKICAgICMgcmVwb3J0IGVycm9ycyB0byAuRVJSIGZpbGUgKG9yIHN0ZG91dCkKICAgIG15ICggJHNlbGYsICRtc2cgKSA9IEBfOwoKICAgICN1c2UgY29uc3RhbnQgV0FSTklOR19MSU1JVCA9PiA1MDsKICAgIG15ICRXQVJOSU5HX0xJTUlUID0gNTA7CgogICAgbXkgJHJPcHRzID0gJHNlbGYtPntfck9wdHN9OwogICAgdW5sZXNzICggJHJPcHRzLT57J3F1aWV0J30gKSB7CgogICAgICAgIG15ICR3YXJuaW5nX2NvdW50ID0gJHNlbGYtPntfd2FybmluZ19jb3VudH07CiAgICAgICAgbXkgJGZoX3dhcm5pbmdzICAgPSAkc2VsZi0+e19maF93YXJuaW5nc307CiAgICAgICAgaWYgKCAhJGZoX3dhcm5pbmdzICkgewogICAgICAgICAgICBteSAkd2FybmluZ19maWxlID0gJHNlbGYtPntfd2FybmluZ19maWxlfTsKICAgICAgICAgICAgKCAkZmhfd2FybmluZ3MsIG15ICRmaWxlbmFtZSApID0KICAgICAgICAgICAgICBQZXJsOjpUaWR5OjpzdHJlYW1oYW5kbGUoICR3YXJuaW5nX2ZpbGUsICd3JyApOwogICAgICAgICAgICAkZmhfd2FybmluZ3Mgb3IgUGVybDo6VGlkeTo6RGllKCJjb3VsZG4ndCBvcGVuICRmaWxlbmFtZSAkIVxuIik7CiAgICAgICAgICAgIFBlcmw6OlRpZHk6Oldhcm4oIiMjIFBsZWFzZSBzZWUgZmlsZSAkZmlsZW5hbWVcbiIpCiAgICAgICAgICAgICAgdW5sZXNzIHJlZigkd2FybmluZ19maWxlKTsKICAgICAgICAgICAgJHNlbGYtPntfZmhfd2FybmluZ3N9ID0gJGZoX3dhcm5pbmdzOwogICAgICAgICAgICAkZmhfd2FybmluZ3MtPnByaW50KCJQZXJsdGlkeSB2ZXJzaW9uIGlzICRQZXJsOjpUaWR5OjpWRVJTSU9OXG4iKTsKICAgICAgICB9CgogICAgICAgIG15ICRmaWxlbmFtZV9zdGFtcCA9ICRzZWxmLT57X2ZpbGVuYW1lX3N0YW1wfTsKCiAgICAgICAgaWYgKCAkd2FybmluZ19jb3VudCA8ICRXQVJOSU5HX0xJTUlUICkgewoKICAgICAgICAgICAgaWYgKCAhJHdhcm5pbmdfY291bnQgKSB7CgogICAgICAgICAgICAgICAgIyBPbiBmaXJzdCBlcnJvciBhbHdheXMgd3JpdGUgYSBsaW5lIHdpdGggdGhlIGZpbGVuYW1lLiAgTm90ZQogICAgICAgICAgICAgICAgIyB0aGF0IHRoZSBmaWxlbmFtZSB3aWxsIGJlICdwZXJsdGlkeScgaWYgaW5wdXQgaXMgZnJvbSBzdGRpbgogICAgICAgICAgICAgICAgIyBvciBmcm9tIGEgZGF0YSBzdHJ1Y3R1cmUuCiAgICAgICAgICAgICAgICBpZiAoJGZpbGVuYW1lX3N0YW1wKSB7CiAgICAgICAgICAgICAgICAgICAgJGZoX3dhcm5pbmdzLT5wcmludCgKICAgICAgICAgICAgICAgICAgICAgICAgIlxuJGZpbGVuYW1lX3N0YW1wIEJlZ2luIEVycm9yIE91dHB1dCBTdHJlYW1cbiIpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgVHVybiBvZmYgZmlsZW5hbWUgc3RhbXBpbmcgdW5sZXNzIGVycm9yIG91dHB1dCBpcyBkaXJlY3RlZAogICAgICAgICAgICAgICAgIyB0byB0aGUgc3RhbmRhcmQgZXJyb3Igb3V0cHV0ICh3aXRoIC1zZSBmbGFnKQogICAgICAgICAgICAgICAgaWYgKCAhJHJPcHRzLT57J3N0YW5kYXJkLWVycm9yLW91dHB1dCd9ICkgewogICAgICAgICAgICAgICAgICAgICRmaWxlbmFtZV9zdGFtcCA9ICIiOwogICAgICAgICAgICAgICAgICAgICRzZWxmLT57X2ZpbGVuYW1lX3N0YW1wfSA9ICRmaWxlbmFtZV9zdGFtcDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkc2VsZi0+Z2V0X3VzZV9wcmVmaXgoKSA+IDAgKSB7CiAgICAgICAgICAgICAgICAkc2VsZi0+d3JpdGVfbG9nZmlsZV9lbnRyeSgiV0FSTklORzogJG1zZyIpOwoKICAgICAgICAgICAgICAgICMgYWRkIHByZWZpeCAnZmlsZW5hbWU6bGluZV9ubzogJyB0byBtZXNzYWdlIGxpbmVzCiAgICAgICAgICAgICAgICBteSAkaW5wdXRfbGluZV9udW1iZXIgPQogICAgICAgICAgICAgICAgICBQZXJsOjpUaWR5OjpUb2tlbml6ZXI6OmdldF9pbnB1dF9saW5lX251bWJlcigpOwogICAgICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCgkaW5wdXRfbGluZV9udW1iZXIpICkgeyAkaW5wdXRfbGluZV9udW1iZXIgPSAtMSB9CiAgICAgICAgICAgICAgICBteSAkcHJlX3N0cmluZyA9ICRmaWxlbmFtZV9zdGFtcCAuICRpbnB1dF9saW5lX251bWJlciAuICc6ICc7CiAgICAgICAgICAgICAgICBjaG9tcCAkbXNnOwogICAgICAgICAgICAgICAgJG1zZyA9fiBzL1xuL1xuJHByZV9zdHJpbmcvZzsKICAgICAgICAgICAgICAgICRtc2cgPSAkcHJlX3N0cmluZyAuICRtc2cgLiAiXG4iOwoKICAgICAgICAgICAgICAgICRmaF93YXJuaW5ncy0+cHJpbnQoJG1zZyk7CgogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJHNlbGYtPndyaXRlX2xvZ2ZpbGVfZW50cnkoJG1zZyk7CgogICAgICAgICAgICAgICAgIyBhZGQgcHJlZml4ICdmaWxlbmFtZTogJyB0byBtZXNzYWdlIGxpbmVzCiAgICAgICAgICAgICAgICBpZiAoJGZpbGVuYW1lX3N0YW1wKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJHByZV9zdHJpbmcgPSAkZmlsZW5hbWVfc3RhbXAgLiAiICI7CiAgICAgICAgICAgICAgICAgICAgY2hvbXAgJG1zZzsKICAgICAgICAgICAgICAgICAgICAkbXNnID1+IHMvXG4vXG4kcHJlX3N0cmluZy9nOwogICAgICAgICAgICAgICAgICAgICRtc2cgPSAkcHJlX3N0cmluZyAuICRtc2cgLiAiXG4iOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRmaF93YXJuaW5ncy0+cHJpbnQoJG1zZyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJHdhcm5pbmdfY291bnQrKzsKICAgICAgICAkc2VsZi0+e193YXJuaW5nX2NvdW50fSA9ICR3YXJuaW5nX2NvdW50OwoKICAgICAgICBpZiAoICR3YXJuaW5nX2NvdW50ID09ICRXQVJOSU5HX0xJTUlUICkgewogICAgICAgICAgICAkZmhfd2FybmluZ3MtPnByaW50KAogICAgICAgICAgICAgICAgJGZpbGVuYW1lX3N0YW1wIC4gIk5vIGZ1cnRoZXIgd2FybmluZ3Mgd2lsbCBiZSBnaXZlblxuIiApOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybjsKfQoKIyBwcm9ncmFtbWluZyBidWcgY29kZXM6CiMgICAtMSA9IG5vIGJ1ZwojICAgIDAgPSBtYXliZSwgbm90IHN1cmUuCiMgICAgMSA9IGRlZmluaXRlbHkKc3ViIHJlcG9ydF9wb3NzaWJsZV9idWcgewogICAgbXkgJHNlbGYgICAgICAgICA9IHNoaWZ0OwogICAgbXkgJHNhd19jb2RlX2J1ZyA9ICRzZWxmLT57X3Nhd19jb2RlX2J1Z307CiAgICAkc2VsZi0+e19zYXdfY29kZV9idWd9ID0gKCAkc2F3X2NvZGVfYnVnIDwgMCApID8gMCA6ICRzYXdfY29kZV9idWc7CiAgICByZXR1cm47Cn0KCnN1YiByZXBvcnRfZGVmaW5pdGVfYnVnIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAkc2VsZi0+e19zYXdfY29kZV9idWd9ID0gMTsKICAgIHJldHVybjsKfQoKc3ViIGFza191c2VyX2Zvcl9idWdfcmVwb3J0IHsKCiAgICBteSAoICRzZWxmLCAkaW5maWxlX3N5bnRheF9vaywgJGZvcm1hdHRlciApID0gQF87CiAgICBteSAkc2F3X2NvZGVfYnVnID0gJHNlbGYtPntfc2F3X2NvZGVfYnVnfTsKICAgIGlmICggKCAkc2F3X2NvZGVfYnVnID09IDAgKSAmJiAoICRpbmZpbGVfc3ludGF4X29rID09IDEgKSApIHsKICAgICAgICAkc2VsZi0+d2FybmluZyg8PEVPTSk7CgpZb3UgbWF5IGhhdmUgZW5jb3VudGVyZWQgYSBjb2RlIGJ1ZyBpbiBwZXJsdGlkeS4gIElmIHlvdSB0aGluayBzbywgYW5kCnRoZSBwcm9ibGVtIGlzIG5vdCBsaXN0ZWQgaW4gdGhlIEJVR1MgZmlsZSBhdApodHRwOi8vcGVybHRpZHkuc291cmNlZm9yZ2UubmV0LCBwbGVhc2UgcmVwb3J0IGl0IHNvIHRoYXQgaXQgY2FuIGJlCmNvcnJlY3RlZC4gIEluY2x1ZGUgdGhlIHNtYWxsZXN0IHBvc3NpYmxlIHNjcmlwdCB3aGljaCBoYXMgdGhlIHByb2JsZW0sCmFsb25nIHdpdGggdGhlIC5MT0cgZmlsZS4gU2VlIHRoZSBtYW51YWwgcGFnZXMgZm9yIGNvbnRhY3QgaW5mb3JtYXRpb24uClRoYW5rIHlvdSEKRU9NCgogICAgfQogICAgZWxzaWYgKCAkc2F3X2NvZGVfYnVnID09IDEgKSB7CiAgICAgICAgaWYgKCAkc2VsZi0+e19zYXdfZXh0cnVkZX0gKSB7CiAgICAgICAgICAgICRzZWxmLT53YXJuaW5nKDw8RU9NKTsKCllvdSBtYXkgaGF2ZSBlbmNvdW50ZXJlZCBhIGJ1ZyBpbiBwZXJsdGlkeS4gIEhvd2V2ZXIsIHNpbmNlIHlvdSBhcmUgdXNpbmcgdGhlCi1leHRydWRlIG9wdGlvbiwgdGhlIHByb2JsZW0gbWF5IGJlIHdpdGggcGVybCBvciBvbmUgb2YgaXRzIG1vZHVsZXMsIHdoaWNoIGhhdmUKb2NjYXNpb25hbCBwcm9ibGVtcyB3aXRoIHRoaXMgdHlwZSBvZiBmaWxlLiAgSWYgeW91IGJlbGlldmUgdGhhdCB0aGUKcHJvYmxlbSBpcyB3aXRoIHBlcmx0aWR5LCBhbmQgdGhlIHByb2JsZW0gaXMgbm90IGxpc3RlZCBpbiB0aGUgQlVHUyBmaWxlIGF0Cmh0dHA6Ly9wZXJsdGlkeS5zb3VyY2Vmb3JnZS5uZXQsIHBsZWFzZSByZXBvcnQgaXQgc28gdGhhdCBpdCBjYW4gYmUgY29ycmVjdGVkLgpJbmNsdWRlIHRoZSBzbWFsbGVzdCBwb3NzaWJsZSBzY3JpcHQgd2hpY2ggaGFzIHRoZSBwcm9ibGVtLCBhbG9uZyB3aXRoIHRoZSAuTE9HCmZpbGUuIFNlZSB0aGUgbWFudWFsIHBhZ2VzIGZvciBjb250YWN0IGluZm9ybWF0aW9uLgpUaGFuayB5b3UhCkVPTQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJHNlbGYtPndhcm5pbmcoPDxFT00pOwoKT29wcywgeW91IHNlZW0gdG8gaGF2ZSBlbmNvdW50ZXJlZCBhIGJ1ZyBpbiBwZXJsdGlkeS4gIFBsZWFzZSBjaGVjayB0aGUKQlVHUyBmaWxlIGF0IGh0dHA6Ly9wZXJsdGlkeS5zb3VyY2Vmb3JnZS5uZXQuICBJZiB0aGUgcHJvYmxlbSBpcyBub3QKbGlzdGVkIHRoZXJlLCBwbGVhc2UgcmVwb3J0IGl0IHNvIHRoYXQgaXQgY2FuIGJlIGNvcnJlY3RlZC4gIEluY2x1ZGUgdGhlCnNtYWxsZXN0IHBvc3NpYmxlIHNjcmlwdCB3aGljaCBwcm9kdWNlcyB0aGlzIG1lc3NhZ2UsIGFsb25nIHdpdGggdGhlCi5MT0cgZmlsZSBpZiBhcHByb3ByaWF0ZS4gIFNlZSB0aGUgbWFudWFsIHBhZ2VzIGZvciBjb250YWN0IGluZm9ybWF0aW9uLgpZb3VyIGVmZm9ydHMgYXJlIGFwcHJlY2lhdGVkLiAgClRoYW5rIHlvdSEKRU9NCiAgICAgICAgICAgIG15ICRhZGRlZF9zZW1pY29sb25fY291bnQgPSAwOwogICAgICAgICAgICBldmFsIHsKICAgICAgICAgICAgICAgICRhZGRlZF9zZW1pY29sb25fY291bnQgPQogICAgICAgICAgICAgICAgICAkZm9ybWF0dGVyLT5nZXRfYWRkZWRfc2VtaWNvbG9uX2NvdW50KCk7CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIGlmICggJGFkZGVkX3NlbWljb2xvbl9jb3VudCA+IDAgKSB7CiAgICAgICAgICAgICAgICAkc2VsZi0+d2FybmluZyg8PEVPTSk7CgpUaGUgbG9nIGZpbGUgc2hvd3MgdGhhdCBwZXJsdGlkeSBhZGRlZCAkYWRkZWRfc2VtaWNvbG9uX2NvdW50IHNlbWljb2xvbnMuClBsZWFzZSByZXJ1biB3aXRoIC1uYXNjIHRvIHNlZSBpZiB0aGF0IGlzIHRoZSBjYXVzZSBvZiB0aGUgc3ludGF4IGVycm9yLiAgRXZlbgppZiB0aGF0IGlzIHRoZSBwcm9ibGVtLCBwbGVhc2UgcmVwb3J0IGl0IHNvIHRoYXQgaXQgY2FuIGJlIGZpeGVkLgpFT00KCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBmaW5pc2ggewoKICAgICMgY2FsbGVkIGFmdGVyIGFsbCBmb3JtYXR0aW5nIHRvIHN1bW1hcml6ZSBlcnJvcnMKICAgIG15ICggJHNlbGYsICRpbmZpbGVfc3ludGF4X29rLCAkZm9ybWF0dGVyICkgPSBAXzsKCiAgICBteSAkck9wdHMgICAgICAgICA9ICRzZWxmLT57X3JPcHRzfTsKICAgIG15ICR3YXJuaW5nX2NvdW50ID0gJHNlbGYtPntfd2FybmluZ19jb3VudH07CiAgICBteSAkc2F3X2NvZGVfYnVnICA9ICRzZWxmLT57X3Nhd19jb2RlX2J1Z307CgogICAgbXkgJHNhdmVfbG9nZmlsZSA9CiAgICAgICAgICggJHNhd19jb2RlX2J1ZyA9PSAwICYmICRpbmZpbGVfc3ludGF4X29rID09IDEgKQogICAgICB8fCAkc2F3X2NvZGVfYnVnID09IDEKICAgICAgfHwgJHJPcHRzLT57J2xvZ2ZpbGUnfTsKICAgIG15ICRsb2dfZmlsZSA9ICRzZWxmLT57X2xvZ19maWxlfTsKICAgIGlmICgkd2FybmluZ19jb3VudCkgewogICAgICAgIGlmICgkc2F2ZV9sb2dmaWxlKSB7CiAgICAgICAgICAgICRzZWxmLT5ibG9ja19sb2dfb3V0cHV0KCk7ICAgICMgYXZvaWQgZWNob2luZyB0aGlzIHRvIHRoZSBsb2dmaWxlCiAgICAgICAgICAgICRzZWxmLT53YXJuaW5nKAogICAgICAgICAgICAgICAgIlRoZSBsb2dmaWxlICRsb2dfZmlsZSBtYXkgY29udGFpbiB1c2VmdWwgaW5mb3JtYXRpb25cbiIpOwogICAgICAgICAgICAkc2VsZi0+dW5ibG9ja19sb2dfb3V0cHV0KCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRzZWxmLT57X2NvbXBsYWludF9jb3VudH0gPiAwICkgewogICAgICAgICAgICAkc2VsZi0+d2FybmluZygKIlRvIHNlZSAkc2VsZi0+e19jb21wbGFpbnRfY291bnR9IG5vbi1jcml0aWNhbCB3YXJuaW5ncyByZXJ1biB3aXRoIC13XG4iCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRzZWxmLT57X3Nhd19icmFjZV9lcnJvcn0KICAgICAgICAgICAgJiYgKCAkc2VsZi0+e19sb2dmaWxlX2dhcH0gPiAxIHx8ICEkc2F2ZV9sb2dmaWxlICkgKQogICAgICAgIHsKICAgICAgICAgICAgJHNlbGYtPndhcm5pbmcoIlRvIHNhdmUgYSBmdWxsIC5MT0cgZmlsZSByZXJ1biB3aXRoIC1nXG4iKTsKICAgICAgICB9CiAgICB9CiAgICAkc2VsZi0+YXNrX3VzZXJfZm9yX2J1Z19yZXBvcnQoICRpbmZpbGVfc3ludGF4X29rLCAkZm9ybWF0dGVyICk7CgogICAgaWYgKCRzYXZlX2xvZ2ZpbGUpIHsKICAgICAgICBteSAkbG9nX2ZpbGUgPSAkc2VsZi0+e19sb2dfZmlsZX07CiAgICAgICAgbXkgKCAkZmgsICRmaWxlbmFtZSApID0gUGVybDo6VGlkeTo6c3RyZWFtaGFuZGxlKCAkbG9nX2ZpbGUsICd3JyApOwogICAgICAgIGlmICgkZmgpIHsKICAgICAgICAgICAgbXkgJHJvdXRwdXRfYXJyYXkgPSAkc2VsZi0+e19vdXRwdXRfYXJyYXl9OwogICAgICAgICAgICBmb3JlYWNoICggQHskcm91dHB1dF9hcnJheX0gKSB7ICRmaC0+cHJpbnQoJF8pIH0KICAgICAgICAgICAgaWYgKCAkbG9nX2ZpbGUgbmUgJy0nICYmICFyZWYgJGxvZ19maWxlICkgewogICAgICAgICAgICAgICAgZXZhbCB7ICRmaC0+Y2xvc2UoKSB9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuOwp9CjE7Cgo=
cGFja2FnZSBQZXJsOjpUaWR5OjpWZXJ0aWNhbEFsaWduZXI7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKb3VyICRWRVJTSU9OID0gJzIwMTkxMjAzJzsKCnVzZSBQZXJsOjpUaWR5OjpWZXJ0aWNhbEFsaWduZXI6OkFsaWdubWVudDsKdXNlIFBlcmw6OlRpZHk6OlZlcnRpY2FsQWxpZ25lcjo6TGluZTsKCiMgVGhlIFBlcmw6OlRpZHk6OlZlcnRpY2FsQWxpZ25lciBwYWNrYWdlIGNvbGxlY3RzIG91dHB1dCBsaW5lcyBhbmQKIyBhdHRlbXB0cyB0byBsaW5lIHVwIGNlcnRhaW4gY29tbW9uIHRva2Vucywgc3VjaCBhcyA9PiBhbmQgIywgd2hpY2ggYXJlCiMgaWRlbnRpZmllZCBieSB0aGUgY2FsbGluZyByb3V0aW5lLgojCiMgVGhlcmUgYXJlIHR3byBtYWluIHJvdXRpbmVzOiB2YWxpZ25faW5wdXQgYW5kIGZsdXNoLiAgQXBwZW5kIGFjdHMgYXMgYQojIHN0b3JhZ2UgYnVmZmVyLCBjb2xsZWN0aW5nIGxpbmVzIGludG8gYSBncm91cCB3aGljaCBjYW4gYmUgdmVydGljYWxseQojIGFsaWduZWQuICBXaGVuIGFsaWdubWVudCBpcyBubyBsb25nZXIgcG9zc2libGUgb3IgZGVzaXJhYmxlLCBpdCBkdW1wcwojIHRoZSBncm91cCB0byBmbHVzaC4KIwojICAgICB2YWxpZ25faW5wdXQgLS0tLS0+IGZsdXNoCiMKIyAgICAgY29sbGVjdHMgICAgICAgICAgd3JpdGVzCiMgICAgIHZlcnRpY2FsICAgICAgICAgIG9uZQojICAgICBncm91cHMgICAgICAgICAgICBncm91cAoKQkVHSU4gewoKICAgICMgQ2F1dGlvbjogdGhlc2UgZGVidWcgZmxhZ3MgcHJvZHVjZSBhIGxvdCBvZiBvdXRwdXQKICAgICMgVGhleSBzaG91bGQgYWxsIGJlIDAgZXhjZXB0IHdoZW4gZGVidWdnaW5nIHNtYWxsIHNjcmlwdHMKCiAgICB1c2UgY29uc3RhbnQgVkFMSUdOX0RFQlVHX0ZMQUdfQVBQRU5EICA9PiAwOwogICAgdXNlIGNvbnN0YW50IFZBTElHTl9ERUJVR19GTEFHX0FQUEVORDAgPT4gMDsKICAgIHVzZSBjb25zdGFudCBWQUxJR05fREVCVUdfRkxBR19URVJOQVJZID0+IDA7CiAgICB1c2UgY29uc3RhbnQgVkFMSUdOX0RFQlVHX0ZMQUdfVEFCUyAgICA9PiAwOwoKICAgIG15ICRkZWJ1Z193YXJuaW5nID0gc3ViIHsKICAgICAgICBwcmludCBTVERPVVQgIlZBTElHTl9ERUJVR0dJTkcgd2l0aCBrZXkgJF9bMF1cbiI7CiAgICAgICAgcmV0dXJuOwogICAgfTsKCiAgICBWQUxJR05fREVCVUdfRkxBR19BUFBFTkQgICYmICRkZWJ1Z193YXJuaW5nLT4oJ0FQUEVORCcpOwogICAgVkFMSUdOX0RFQlVHX0ZMQUdfQVBQRU5EMCAmJiAkZGVidWdfd2FybmluZy0+KCdBUFBFTkQwJyk7CiAgICBWQUxJR05fREVCVUdfRkxBR19URVJOQVJZICYmICRkZWJ1Z193YXJuaW5nLT4oJ1RFUk5BUlknKTsKICAgIFZBTElHTl9ERUJVR19GTEFHX1RBQlMgICAgJiYgJGRlYnVnX3dhcm5pbmctPignVEFCUycpOwoKfQoKdXNlIHZhcnMgcXcoCiAgJHZlcnRpY2FsX2FsaWduZXJfc2VsZgogICRtYXhpbXVtX2FsaWdubWVudF9pbmRleAogICRyYWxpZ25tZW50X2xpc3QKICAkbWF4aW11bV9qbWF4X3NlZW4KICAkbWluaW11bV9qbWF4X3NlZW4KICAkcHJldmlvdXNfbWluaW11bV9qbWF4X3NlZW4KICAkcHJldmlvdXNfbWF4aW11bV9qbWF4X3NlZW4KICBAZ3JvdXBfbGluZXMKICAkZ3JvdXBfbGV2ZWwKICAkZ3JvdXBfdHlwZQogICRncm91cF9tYXhpbXVtX2dhcAogICRtYXJnaW5hbF9tYXRjaAogICRsYXN0X2xldmVsX3dyaXR0ZW4KICAkbGFzdF9sZWFkaW5nX3NwYWNlX2NvdW50CiAgJGV4dHJhX2luZGVudF9vawogICR6ZXJvX2NvdW50CiAgJGxhc3RfY29tbWVudF9jb2x1bW4KICAkbGFzdF9zaWRlX2NvbW1lbnRfbGluZV9udW1iZXIKICAkbGFzdF9zaWRlX2NvbW1lbnRfbGVuZ3RoCiAgJGxhc3Rfc2lkZV9jb21tZW50X2xldmVsCiAgJG91dGRlbnRlZF9saW5lX2NvdW50CiAgJGZpcnN0X291dGRlbnRlZF9saW5lX2F0CiAgJGxhc3Rfb3V0ZGVudGVkX2xpbmVfYXQKICAkZGlhZ25vc3RpY3Nfb2JqZWN0CiAgJGxvZ2dlcl9vYmplY3QKICAkZmlsZV93cml0ZXJfb2JqZWN0CiAgQHNpZGVfY29tbWVudF9oaXN0b3J5CiAgJGNvbW1lbnRfbGVhZGluZ19zcGFjZV9jb3VudAogICRpc19tYXRjaGluZ190ZXJtaW5hbF9saW5lCiAgJGNvbnNlY3V0aXZlX2Jsb2NrX2NvbW1lbnRzCgogICRjYWNoZWRfbGluZV90ZXh0CiAgJGNhY2hlZF9saW5lX3R5cGUKICAkY2FjaGVkX2xpbmVfZmxhZwogICRjYWNoZWRfc2Vxbm8KICAkY2FjaGVkX2xpbmVfdmFsaWQKICAkY2FjaGVkX2xpbmVfbGVhZGluZ19zcGFjZV9jb3VudAogICRjYWNoZWRfc2Vxbm9fc3RyaW5nCgogICR2YWxpZ25fYnVmZmVyX2ZpbGxpbmcKICBAdmFsaWduX2J1ZmZlcgoKICAkc2Vxbm9fc3RyaW5nCiAgJGxhc3Rfbm9uYmxhbmtfc2Vxbm9fc3RyaW5nCgogICRyT3B0cwoKICAkck9wdHNfbWF4aW11bV9saW5lX2xlbmd0aAogICRyT3B0c192YXJpYWJsZV9tYXhpbXVtX2xpbmVfbGVuZ3RoCiAgJHJPcHRzX2NvbnRpbnVhdGlvbl9pbmRlbnRhdGlvbgogICRyT3B0c19pbmRlbnRfY29sdW1ucwogICRyT3B0c190YWJzCiAgJHJPcHRzX2VudGFiX2xlYWRpbmdfd2hpdGVzcGFjZQogICRyT3B0c192YWxpZ24KCiAgJHJPcHRzX2ZpeGVkX3Bvc2l0aW9uX3NpZGVfY29tbWVudAogICRyT3B0c19taW5pbXVtX3NwYWNlX3RvX2NvbW1lbnQKCik7CgpzdWIgaW5pdGlhbGl6ZSB7CgogICAgKAogICAgICAgIG15ICRjbGFzcywgJHJPcHRzLCAkZmlsZV93cml0ZXJfb2JqZWN0LCAkbG9nZ2VyX29iamVjdCwKICAgICAgICAkZGlhZ25vc3RpY3Nfb2JqZWN0CiAgICApID0gQF87CgogICAgIyB2YXJpYWJsZXMgZGVzY3JpYmluZyB0aGUgZW50aXJlIHNwYWNlIGdyb3VwOgogICAgJHJhbGlnbm1lbnRfbGlzdCAgICAgICAgICAgID0gW107CiAgICAkZ3JvdXBfbGV2ZWwgICAgICAgICAgICAgICAgPSAwOwogICAgJGxhc3RfbGV2ZWxfd3JpdHRlbiAgICAgICAgID0gLTE7CiAgICAkZXh0cmFfaW5kZW50X29rICAgICAgICAgICAgPSAwOyAgICAjIGNhbiB3ZSBtb3ZlIGFsbCBsaW5lcyB0byB0aGUgcmlnaHQ/CiAgICAkbGFzdF9zaWRlX2NvbW1lbnRfbGVuZ3RoICAgPSAwOwogICAgJG1heGltdW1fam1heF9zZWVuICAgICAgICAgID0gMDsKICAgICRtaW5pbXVtX2ptYXhfc2VlbiAgICAgICAgICA9IDA7CiAgICAkcHJldmlvdXNfbWluaW11bV9qbWF4X3NlZW4gPSAwOwogICAgJHByZXZpb3VzX21heGltdW1fam1heF9zZWVuID0gMDsKCiAgICAjIHZhcmlhYmxlcyBkZXNjcmliaW5nIGVhY2ggbGluZSBvZiB0aGUgZ3JvdXAKICAgIEBncm91cF9saW5lcyA9ICgpOyAgICAgICAgICAgICAgICAgICMgbGlzdCBvZiBhbGwgbGluZXMgaW4gZ3JvdXAKCiAgICAkb3V0ZGVudGVkX2xpbmVfY291bnQgICAgICAgICAgPSAwOwogICAgJGZpcnN0X291dGRlbnRlZF9saW5lX2F0ICAgICAgID0gMDsKICAgICRsYXN0X291dGRlbnRlZF9saW5lX2F0ICAgICAgICA9IDA7CiAgICAkbGFzdF9zaWRlX2NvbW1lbnRfbGluZV9udW1iZXIgPSAwOwogICAgJGxhc3Rfc2lkZV9jb21tZW50X2xldmVsICAgICAgID0gLTE7CiAgICAkaXNfbWF0Y2hpbmdfdGVybWluYWxfbGluZSAgICAgPSAwOwoKICAgICMgbW9zdCByZWNlbnQgMyBzaWRlIGNvbW1lbnRzOyBbIGxpbmUgbnVtYmVyLCBjb2x1bW4gXQogICAgJHNpZGVfY29tbWVudF9oaXN0b3J5WzBdID0gWyAtMzAwLCAwIF07CiAgICAkc2lkZV9jb21tZW50X2hpc3RvcnlbMV0gPSBbIC0yMDAsIDAgXTsKICAgICRzaWRlX2NvbW1lbnRfaGlzdG9yeVsyXSA9IFsgLTEwMCwgMCBdOwoKICAgICMgdmFsaWduX291dHB1dF9zdGVwX0IgY2FjaGU6CiAgICAkY2FjaGVkX2xpbmVfdGV4dCAgICAgICAgICAgICAgICA9ICIiOwogICAgJGNhY2hlZF9saW5lX3R5cGUgICAgICAgICAgICAgICAgPSAwOwogICAgJGNhY2hlZF9saW5lX2ZsYWcgICAgICAgICAgICAgICAgPSAwOwogICAgJGNhY2hlZF9zZXFubyAgICAgICAgICAgICAgICAgICAgPSAwOwogICAgJGNhY2hlZF9saW5lX3ZhbGlkICAgICAgICAgICAgICAgPSAwOwogICAgJGNhY2hlZF9saW5lX2xlYWRpbmdfc3BhY2VfY291bnQgPSAwOwogICAgJGNhY2hlZF9zZXFub19zdHJpbmcgICAgICAgICAgICAgPSAiIjsKCiAgICAjIHN0cmluZyBvZiBzZXF1ZW5jZSBudW1iZXJzIGpvaW5lZCB0b2dldGhlcgogICAgJHNlcW5vX3N0cmluZyAgICAgICAgICAgICAgID0gIiI7CiAgICAkbGFzdF9ub25ibGFua19zZXFub19zdHJpbmcgPSAiIjsKCiAgICAjIGZyZXF1ZW50bHkgdXNlZCBwYXJhbWV0ZXJzCiAgICAkck9wdHNfaW5kZW50X2NvbHVtbnMgICAgICAgICAgID0gJHJPcHRzLT57J2luZGVudC1jb2x1bW5zJ307CiAgICAkck9wdHNfdGFicyAgICAgICAgICAgICAgICAgICAgID0gJHJPcHRzLT57J3RhYnMnfTsKICAgICRyT3B0c19lbnRhYl9sZWFkaW5nX3doaXRlc3BhY2UgPSAkck9wdHMtPnsnZW50YWItbGVhZGluZy13aGl0ZXNwYWNlJ307CiAgICAkck9wdHNfZml4ZWRfcG9zaXRpb25fc2lkZV9jb21tZW50ID0KICAgICAgJHJPcHRzLT57J2ZpeGVkLXBvc2l0aW9uLXNpZGUtY29tbWVudCd9OwogICAgJHJPcHRzX21pbmltdW1fc3BhY2VfdG9fY29tbWVudCA9ICRyT3B0cy0+eydtaW5pbXVtLXNwYWNlLXRvLWNvbW1lbnQnfTsKICAgICRyT3B0c19tYXhpbXVtX2xpbmVfbGVuZ3RoICAgICAgPSAkck9wdHMtPnsnbWF4aW11bS1saW5lLWxlbmd0aCd9OwogICAgJHJPcHRzX3ZhcmlhYmxlX21heGltdW1fbGluZV9sZW5ndGggPQogICAgICAkck9wdHMtPnsndmFyaWFibGUtbWF4aW11bS1saW5lLWxlbmd0aCd9OwogICAgJHJPcHRzX3ZhbGlnbiA9ICRyT3B0cy0+eyd2YWxpZ24nfTsKCiAgICAkY29uc2VjdXRpdmVfYmxvY2tfY29tbWVudHMgPSAwOwogICAgZm9yZ2V0X3NpZGVfY29tbWVudCgpOwoKICAgIGluaXRpYWxpemVfZm9yX25ld19ncm91cCgpOwoKICAgICR2ZXJ0aWNhbF9hbGlnbmVyX3NlbGYgPSB7fTsKICAgIGJsZXNzICR2ZXJ0aWNhbF9hbGlnbmVyX3NlbGYsICRjbGFzczsKICAgIHJldHVybiAkdmVydGljYWxfYWxpZ25lcl9zZWxmOwp9CgpzdWIgaW5pdGlhbGl6ZV9mb3JfbmV3X2dyb3VwIHsKICAgIEBncm91cF9saW5lcyAgICAgICAgICAgICAgICAgPSAoKTsKICAgICRtYXhpbXVtX2FsaWdubWVudF9pbmRleCAgICAgPSAtMTsgICMgYWxpZ25tZW50cyBpbiBjdXJyZW50IGdyb3VwCiAgICAkemVyb19jb3VudCAgICAgICAgICAgICAgICAgID0gMDsgICAjIGNvdW50IGNvbnNlY3V0aXZlIGxpbmVzIHdpdGhvdXQgdG9rZW5zCiAgICAkZ3JvdXBfbWF4aW11bV9nYXAgICAgICAgICAgID0gMDsgICAjIGxhcmdlc3QgZ2FwIGludHJvZHVjZWQKICAgICRncm91cF90eXBlICAgICAgICAgICAgICAgICAgPSAiIjsKICAgICRtYXJnaW5hbF9tYXRjaCAgICAgICAgICAgICAgPSAwOwogICAgJGNvbW1lbnRfbGVhZGluZ19zcGFjZV9jb3VudCA9IDA7CiAgICAkbGFzdF9sZWFkaW5nX3NwYWNlX2NvdW50ICAgID0gMDsKICAgIHJldHVybjsKfQoKIyBpbnRlcmZhY2UgdG8gUGVybDo6VGlkeTo6RGlhZ25vc3RpY3Mgcm91dGluZXMKc3ViIHdyaXRlX2RpYWdub3N0aWNzIHsKICAgIG15ICRtc2cgPSBzaGlmdDsKICAgIGlmICgkZGlhZ25vc3RpY3Nfb2JqZWN0KSB7CiAgICAgICAgJGRpYWdub3N0aWNzX29iamVjdC0+d3JpdGVfZGlhZ25vc3RpY3MoJG1zZyk7CiAgICB9CiAgICByZXR1cm47Cn0KCiMgaW50ZXJmYWNlIHRvIFBlcmw6OlRpZHk6OkxvZ2dlciByb3V0aW5lcwpzdWIgd2FybmluZyB7CiAgICBteSAoJG1zZykgPSBAXzsKICAgIGlmICgkbG9nZ2VyX29iamVjdCkgewogICAgICAgICRsb2dnZXJfb2JqZWN0LT53YXJuaW5nKCRtc2cpOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgd3JpdGVfbG9nZmlsZV9lbnRyeSB7CiAgICBteSAoJG1zZykgPSBAXzsKICAgIGlmICgkbG9nZ2VyX29iamVjdCkgewogICAgICAgICRsb2dnZXJfb2JqZWN0LT53cml0ZV9sb2dmaWxlX2VudHJ5KCRtc2cpOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgcmVwb3J0X2RlZmluaXRlX2J1ZyB7CiAgICBpZiAoJGxvZ2dlcl9vYmplY3QpIHsKICAgICAgICAkbG9nZ2VyX29iamVjdC0+cmVwb3J0X2RlZmluaXRlX2J1ZygpOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgZ2V0X2NhY2hlZF9saW5lX2NvdW50IHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICByZXR1cm4gQGdyb3VwX2xpbmVzICsgKCAkY2FjaGVkX2xpbmVfdHlwZSA/IDEgOiAwICk7Cn0KCnN1YiBnZXRfc3BhY2VzIHsKCiAgICAjIHJldHVybiB0aGUgbnVtYmVyIG9mIGxlYWRpbmcgc3BhY2VzIGFzc29jaWF0ZWQgd2l0aCBhbiBpbmRlbnRhdGlvbgogICAgIyB2YXJpYWJsZSAkaW5kZW50YXRpb24gaXMgZWl0aGVyIGEgY29uc3RhbnQgbnVtYmVyIG9mIHNwYWNlcyBvciBhbgogICAgIyBvYmplY3Qgd2l0aCBhIGdldF9zcGFjZXMgbWV0aG9kLgogICAgbXkgJGluZGVudGF0aW9uID0gc2hpZnQ7CiAgICByZXR1cm4gcmVmKCRpbmRlbnRhdGlvbikgPyAkaW5kZW50YXRpb24tPmdldF9zcGFjZXMoKSA6ICRpbmRlbnRhdGlvbjsKfQoKc3ViIGdldF9yZWNvdmVyYWJsZV9zcGFjZXMgewoKICAgICMgcmV0dXJuIHRoZSBudW1iZXIgb2Ygc3BhY2VzICgrIG1lYW5zIHNoaWZ0IHJpZ2h0LCAtIG1lYW5zIHNoaWZ0IGxlZnQpCiAgICAjIHRoYXQgd2Ugd291bGQgbGlrZSB0byBzaGlmdCBhIGdyb3VwIG9mIGxpbmVzIHdpdGggdGhlIHNhbWUgaW5kZW50YXRpb24KICAgICMgdG8gZ2V0IHRoZW0gdG8gbGluZSB1cCB3aXRoIHRoZWlyIG9wZW5pbmcgcGFyZW5zCiAgICBteSAkaW5kZW50YXRpb24gPSBzaGlmdDsKICAgIHJldHVybiByZWYoJGluZGVudGF0aW9uKSA/ICRpbmRlbnRhdGlvbi0+Z2V0X3JlY292ZXJhYmxlX3NwYWNlcygpIDogMDsKfQoKc3ViIGdldF9zdGFja19kZXB0aCB7CgogICAgbXkgJGluZGVudGF0aW9uID0gc2hpZnQ7CiAgICByZXR1cm4gcmVmKCRpbmRlbnRhdGlvbikgPyAkaW5kZW50YXRpb24tPmdldF9zdGFja19kZXB0aCgpIDogMDsKfQoKc3ViIG1ha2VfYWxpZ25tZW50IHsKICAgIG15ICggJGNvbCwgJHRva2VuICkgPSBAXzsKCiAgICAjIG1ha2Ugb25lIG5ldyBhbGlnbm1lbnQgYXQgY29sdW1uICRjb2wgd2hpY2ggYWxpZ25zIHRva2VuICR0b2tlbgogICAgKyskbWF4aW11bV9hbGlnbm1lbnRfaW5kZXg7CgogICAgI215ICRhbGlnbm1lbnQgPSBuZXcgUGVybDo6VGlkeTo6VmVydGljYWxBbGlnbmVyOjpBbGlnbm1lbnQoCiAgICBteSAkbmxpbmVzICAgID0gQGdyb3VwX2xpbmVzOwogICAgbXkgJGFsaWdubWVudCA9IFBlcmw6OlRpZHk6OlZlcnRpY2FsQWxpZ25lcjo6QWxpZ25tZW50LT5uZXcoCiAgICAgICAgY29sdW1uICAgICAgICAgID0+ICRjb2wsCiAgICAgICAgc3RhcnRpbmdfY29sdW1uID0+ICRjb2wsCiAgICAgICAgbWF0Y2hpbmdfdG9rZW4gID0+ICR0b2tlbiwKICAgICAgICBzdGFydGluZ19saW5lICAgPT4gJG5saW5lcyAtIDEsCiAgICAgICAgZW5kaW5nX2xpbmUgICAgID0+ICRubGluZXMgLSAxLAogICAgICAgIHNlcmlhbF9udW1iZXIgICA9PiAkbWF4aW11bV9hbGlnbm1lbnRfaW5kZXgsCiAgICApOwogICAgJHJhbGlnbm1lbnRfbGlzdC0+WyRtYXhpbXVtX2FsaWdubWVudF9pbmRleF0gPSAkYWxpZ25tZW50OwogICAgcmV0dXJuICRhbGlnbm1lbnQ7Cn0KCnN1YiBkdW1wX2FsaWdubWVudHMgewogICAgcHJpbnQgU1RET1VUCiJDdXJyZW50IEFsaWdubWVudHM6XG5pXHR0b2tlblx0c3RhcnRpbmdfY29sdW1uXHRjb2x1bW5cdHN0YXJ0aW5nX2xpbmVcdGVuZGluZ19saW5lXG4iOwogICAgZm9yIG15ICRpICggMCAuLiAkbWF4aW11bV9hbGlnbm1lbnRfaW5kZXggKSB7CiAgICAgICAgbXkgJGNvbHVtbiAgICAgICAgICA9ICRyYWxpZ25tZW50X2xpc3QtPlskaV0tPmdldF9jb2x1bW4oKTsKICAgICAgICBteSAkc3RhcnRpbmdfY29sdW1uID0gJHJhbGlnbm1lbnRfbGlzdC0+WyRpXS0+Z2V0X3N0YXJ0aW5nX2NvbHVtbigpOwogICAgICAgIG15ICRtYXRjaGluZ190b2tlbiAgPSAkcmFsaWdubWVudF9saXN0LT5bJGldLT5nZXRfbWF0Y2hpbmdfdG9rZW4oKTsKICAgICAgICBteSAkc3RhcnRpbmdfbGluZSAgID0gJHJhbGlnbm1lbnRfbGlzdC0+WyRpXS0+Z2V0X3N0YXJ0aW5nX2xpbmUoKTsKICAgICAgICBteSAkZW5kaW5nX2xpbmUgICAgID0gJHJhbGlnbm1lbnRfbGlzdC0+WyRpXS0+Z2V0X2VuZGluZ19saW5lKCk7CiAgICAgICAgcHJpbnQgU1RET1VUCiIkaVx0JG1hdGNoaW5nX3Rva2VuXHQkc3RhcnRpbmdfY29sdW1uXHQkY29sdW1uXHQkc3RhcnRpbmdfbGluZVx0JGVuZGluZ19saW5lXG4iOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgc2F2ZV9hbGlnbm1lbnRfY29sdW1ucyB7CiAgICBmb3IgbXkgJGkgKCAwIC4uICRtYXhpbXVtX2FsaWdubWVudF9pbmRleCApIHsKICAgICAgICAkcmFsaWdubWVudF9saXN0LT5bJGldLT5zYXZlX2NvbHVtbigpOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgcmVzdG9yZV9hbGlnbm1lbnRfY29sdW1ucyB7CiAgICBmb3IgbXkgJGkgKCAwIC4uICRtYXhpbXVtX2FsaWdubWVudF9pbmRleCApIHsKICAgICAgICAkcmFsaWdubWVudF9saXN0LT5bJGldLT5yZXN0b3JlX2NvbHVtbigpOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgZm9yZ2V0X3NpZGVfY29tbWVudCB7CiAgICAkbGFzdF9jb21tZW50X2NvbHVtbiA9IDA7CiAgICByZXR1cm47Cn0KCnN1YiBtYXhpbXVtX2xpbmVfbGVuZ3RoX2Zvcl9sZXZlbCB7CgogICAgIyByZXR1cm4gbWF4aW11bSBsaW5lIGxlbmd0aCBmb3IgbGluZSBzdGFydGluZyB3aXRoIGEgZ2l2ZW4gbGV2ZWwKICAgIG15ICRtYXhpbXVtX2xpbmVfbGVuZ3RoID0gJHJPcHRzX21heGltdW1fbGluZV9sZW5ndGg7CiAgICBpZiAoJHJPcHRzX3ZhcmlhYmxlX21heGltdW1fbGluZV9sZW5ndGgpIHsKICAgICAgICBteSAkbGV2ZWwgPSBzaGlmdDsKICAgICAgICBpZiAoICRsZXZlbCA8IDAgKSB7ICRsZXZlbCA9IDAgfQogICAgICAgICRtYXhpbXVtX2xpbmVfbGVuZ3RoICs9ICRsZXZlbCAqICRyT3B0c19pbmRlbnRfY29sdW1uczsKICAgIH0KICAgIHJldHVybiAkbWF4aW11bV9saW5lX2xlbmd0aDsKfQoKc3ViIHB1c2hfZ3JvdXBfbGluZSB7CgogICAgbXkgKCRuZXdfbGluZSkgPSBAXzsKICAgIHB1c2ggQGdyb3VwX2xpbmVzLCAkbmV3X2xpbmU7CiAgICByZXR1cm47Cn0KCnN1YiB2YWxpZ25faW5wdXQgewoKICAgICMgUGxhY2Ugb25lIGxpbmUgaW4gdGhlIGN1cnJlbnQgdmVydGljYWwgZ3JvdXAuCiAgICAjCiAgICAjIFRoZSBpbnB1dCBwYXJhbWV0ZXJzIGFyZToKICAgICMgICAgICRsZXZlbCA9IGluZGVudGF0aW9uIGxldmVsIG9mIHRoaXMgbGluZQogICAgIyAgICAgJHJmaWVsZHMgPSByZWZlcmVuY2UgdG8gYXJyYXkgb2YgZmllbGRzCiAgICAjICAgICAkcnBhdHRlcm5zID0gcmVmZXJlbmNlIHRvIGFycmF5IG9mIHBhdHRlcm5zLCBvbmUgcGVyIGZpZWxkCiAgICAjICAgICAkcnRva2VucyAgID0gcmVmZXJlbmNlIHRvIGFycmF5IG9mIHRva2VucyBzdGFydGluZyBmaWVsZHMgMSwyLC4uCiAgICAjCiAgICAjIEhlcmUgaXMgYW4gZXhhbXBsZSBvZiB3aGF0IHRoaXMgcGFja2FnZSBkb2VzLiAgSW4gdGhpcyBleGFtcGxlLAogICAgIyB3ZSBhcmUgdHJ5aW5nIHRvIGxpbmUgdXAgYm90aCB0aGUgJz0+JyBhbmQgdGhlICcjJy4KICAgICMKICAgICMgICAgICAgICAnMTgnID0+ICdncmF2ZScsICAgICMgICBcYAogICAgIyAgICAgICAgICcxOScgPT4gJ2FjdXRlJywgICAgIyAgIGAnCiAgICAjICAgICAgICAgJzIwJyA9PiAnY2Fyb24nLCAgICAjICAgXHYKICAgICMgPC10YWJzLT48ZjEtPjwtLWZpZWxkIDIgLS0tPjwtZjMtPgogICAgIyB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICB8CiAgICAjIHwgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgIHwKICAgICMgY29sMSAgICAgICAgY29sMiAgICAgICAgIGNvbDMgY29sNAogICAgIwogICAgIyBUaGUgY2FsbGluZyByb3V0aW5lIGhhcyBhbHJlYWR5IGJyb2tlbiB0aGUgZW50aXJlIGxpbmUgaW50byAzIGZpZWxkcyBhcwogICAgIyBpbmRpY2F0ZWQuICAoU28gdGhlIHdvcmsgb2YgaWRlbnRpZnlpbmcgcHJvbWlzaW5nIGNvbW1vbiB0b2tlbnMgaGFzCiAgICAjIGFscmVhZHkgYmVlbiBkb25lKS4KICAgICMKICAgICMgSW4gdGhpcyBleGFtcGxlLCB0aGVyZSB3aWxsIGJlIDIgdG9rZW5zIGJlaW5nIG1hdGNoZWQ6ICc9PicgYW5kICcjJy4KICAgICMgVGhleSBhcmUgdGhlIGxlYWRpbmcgcGFydHMgb2YgZmllbGRzIDIgYW5kIDMsIGJ1dCB3ZSBkbyBuZWVkIHRvIGtub3cKICAgICMgd2hhdCB0aGV5IGFyZSBzbyB0aGF0IHdlIGNhbiBkdW1wIGEgZ3JvdXAgb2YgbGluZXMgd2hlbiB0aGVzZSB0b2tlbnMKICAgICMgY2hhbmdlLgogICAgIwogICAgIyBUaGUgZmllbGRzIGNvbnRhaW4gdGhlIGFjdHVhbCBjaGFyYWN0ZXJzIG9mIGVhY2ggZmllbGQuICBUaGUgcGF0dGVybnMKICAgICMgYXJlIGxpa2UgdGhlIGZpZWxkcywgYnV0IHRoZXkgY29udGFpbiBtYWlubHkgdG9rZW4gdHlwZXMgaW5zdGVhZAogICAgIyBvZiB0b2tlbnMsIHNvIHRoZXkgaGF2ZSBmZXdlciBjaGFyYWN0ZXJzLiAgVGhleSBhcmUgdXNlZCB0byBiZQogICAgIyBzdXJlIHdlIGFyZSBtYXRjaGluZyBmaWVsZHMgb2Ygc2ltaWxhciB0eXBlLgogICAgIwogICAgIyBJbiB0aGlzIGV4YW1wbGUsIHRoZXJlIHdpbGwgYmUgNCBjb2x1bW4gaW5kZXhlcyBiZWluZyBhZGp1c3RlZC4gIFRoZQogICAgIyBmaXJzdCBvbmUgaXMgYWx3YXlzIGF0IHplcm8uICBUaGUgaW50ZXJpb3IgY29sdW1ucyBhcmUgYXQgdGhlIHN0YXJ0IG9mCiAgICAjIHRoZSBtYXRjaGluZyB0b2tlbnMsIGFuZCB0aGUgbGFzdCBvbmUgdHJhY2tzIHRoZSBtYXhpbXVtIGxpbmUgbGVuZ3RoLgogICAgIwogICAgIyBFYWNoIHRpbWUgYSBuZXcgbGluZSBjb21lcyBpbiwgaXQgam9pbnMgdGhlIGN1cnJlbnQgdmVydGljYWwKICAgICMgZ3JvdXAgaWYgcG9zc2libGUuICBPdGhlcndpc2UgaXQgY2F1c2VzIHRoZSBjdXJyZW50IGdyb3VwIHRvIGJlIGR1bXBlZAogICAgIyBhbmQgYSBuZXcgZ3JvdXAgaXMgc3RhcnRlZC4KICAgICMKICAgICMgRm9yIGVhY2ggbmV3IGdyb3VwIG1lbWJlciwgdGhlIGNvbHVtbiBsb2NhdGlvbnMgYXJlIGluY3JlYXNlZCwgYXMKICAgICMgbmVjZXNzYXJ5LCB0byBtYWtlIHJvb20gZm9yIHRoZSBuZXcgZmllbGRzLiAgV2hlbiB0aGUgZ3JvdXAgaXMgZmluYWxseQogICAgIyBvdXRwdXQsIHRoZXNlIGNvbHVtbiBudW1iZXJzIGFyZSB1c2VkIHRvIGNvbXB1dGUgdGhlIGFtb3VudCBvZiBzcGFjZXMgb2YKICAgICMgcGFkZGluZyBuZWVkZWQgZm9yIGVhY2ggZmllbGQuCiAgICAjCiAgICAjIFByb2dyYW1taW5nIG5vdGU6IHRoZSBmaWVsZHMgYXJlIGFzc3VtZWQgbm90IHRvIGhhdmUgYW55IHRhYiBjaGFyYWN0ZXJzLgogICAgIyBUYWJzIGhhdmUgYmVlbiBwcmV2aW91c2x5IHJlbW92ZWQgZXhjZXB0IGZvciB0YWJzIGluIHF1b3RlZCBzdHJpbmdzIGFuZAogICAgIyBzaWRlIGNvbW1lbnRzLiAgVGFicyBpbiB0aGVzZSBmaWVsZHMgY2FuIG1lc3MgdXAgdGhlIGNvbHVtbiBjb3VudGluZy4KICAgICMgVGhlIGxvZyBmaWxlIHdhcm5zIHRoZSB1c2VyIGlmIHRoZXJlIGFyZSBhbnkgc3VjaCB0YWJzLgoKICAgIG15ICggJHJsaW5lX2hhc2gsICRyZmllbGRzLCAkcnRva2VucywgJHJwYXR0ZXJucyApID0gQF87CiAgICBteSAkbGV2ZWwgICAgICAgICAgICAgICAgICAgICA9ICRybGluZV9oYXNoLT57bGV2ZWx9OwogICAgbXkgJGxldmVsX2VuZCAgICAgICAgICAgICAgICAgPSAkcmxpbmVfaGFzaC0+e2xldmVsX2VuZH07CiAgICBteSAkaW5kZW50YXRpb24gICAgICAgICAgICAgICA9ICRybGluZV9oYXNoLT57aW5kZW50YXRpb259OwogICAgbXkgJGlzX2ZvcmNlZF9icmVhayAgICAgICAgICAgPSAkcmxpbmVfaGFzaC0+e2lzX2ZvcmNlZF9icmVha307CiAgICBteSAkb3V0ZGVudF9sb25nX2xpbmVzICAgICAgICA9ICRybGluZV9oYXNoLT57b3V0ZGVudF9sb25nX2xpbmVzfTsKICAgIG15ICRpc190ZXJtaW5hbF90ZXJuYXJ5ICAgICAgID0gJHJsaW5lX2hhc2gtPntpc190ZXJtaW5hbF90ZXJuYXJ5fTsKICAgIG15ICRpc190ZXJtaW5hbF9zdGF0ZW1lbnQgICAgID0gJHJsaW5lX2hhc2gtPntpc190ZXJtaW5hbF9zdGF0ZW1lbnR9OwogICAgbXkgJGRvX25vdF9wYWQgICAgICAgICAgICAgICAgPSAkcmxpbmVfaGFzaC0+e2RvX25vdF9wYWR9OwogICAgbXkgJHJ2ZXJ0aWNhbF90aWdodG5lc3NfZmxhZ3MgPSAkcmxpbmVfaGFzaC0+e3J2ZXJ0aWNhbF90aWdodG5lc3NfZmxhZ3N9OwogICAgbXkgJGxldmVsX2p1bXAgICAgICAgICAgICAgICAgPSAkcmxpbmVfaGFzaC0+e2xldmVsX2p1bXB9OwoKICAgICMgbnVtYmVyIG9mIGZpZWxkcyBpcyAkam1heAogICAgIyBudW1iZXIgb2YgdG9rZW5zIGJldHdlZW4gZmllbGRzIGlzICRqbWF4LTEKICAgIG15ICRqbWF4ID0gQHskcmZpZWxkc30gLSAxOwoKICAgIG15ICRsZWFkaW5nX3NwYWNlX2NvdW50ID0gZ2V0X3NwYWNlcygkaW5kZW50YXRpb24pOwoKICAgICMgc2V0IG91dGRlbnRlZCBmbGFnIHRvIGJlIHN1cmUgd2UgZWl0aGVyIGFsaWduIHdpdGhpbiBzdGF0ZW1lbnRzIG9yCiAgICAjIGFjcm9zcyBzdGF0ZW1lbnQgYm91bmRhcmllcywgYnV0IG5vdCBib3RoLgogICAgbXkgJGlzX291dGRlbnRlZCA9ICRsYXN0X2xlYWRpbmdfc3BhY2VfY291bnQgPiAkbGVhZGluZ19zcGFjZV9jb3VudDsKICAgICRsYXN0X2xlYWRpbmdfc3BhY2VfY291bnQgPSAkbGVhZGluZ19zcGFjZV9jb3VudDsKCiAgICAjIFBhdGNoOiB1bmRvIGZvciBoYW5naW5nIHNpZGUgY29tbWVudAogICAgbXkgJGlzX2hhbmdpbmdfc2lkZV9jb21tZW50ID0KICAgICAgKCAkam1heCA9PSAxICYmICRydG9rZW5zLT5bMF0gZXEgJyMnICYmICRyZmllbGRzLT5bMF0gPX4gL15ccyokLyApOwogICAgJGlzX291dGRlbnRlZCA9IDAgaWYgJGlzX2hhbmdpbmdfc2lkZV9jb21tZW50OwoKICAgICMgRm9yZ2V0IHNpZGUgY29tbWVudCBhbGlnbm1lbnQgYWZ0ZXIgc2VlaW5nIDIgb3IgbW9yZSBibG9jayBjb21tZW50cwogICAgbXkgJGlzX2Jsb2NrX2NvbW1lbnQgPSAoICRqbWF4ID09IDAgJiYgJHJmaWVsZHMtPlswXSA9fiAvXiMvICk7CiAgICBpZiAoJGlzX2Jsb2NrX2NvbW1lbnQpIHsKICAgICAgICAkY29uc2VjdXRpdmVfYmxvY2tfY29tbWVudHMrKzsKICAgIH0KICAgIGVsc2UgewogICAgICAgIGlmICggJGNvbnNlY3V0aXZlX2Jsb2NrX2NvbW1lbnRzID4gMSApIHsgZm9yZ2V0X3NpZGVfY29tbWVudCgpIH0KICAgICAgICAkY29uc2VjdXRpdmVfYmxvY2tfY29tbWVudHMgPSAwOwogICAgfQoKICAgIFZBTElHTl9ERUJVR19GTEFHX0FQUEVORDAgJiYgZG8gewogICAgICAgIG15ICRubGluZXMgPSBAZ3JvdXBfbGluZXM7CiAgICAgICAgcHJpbnQgU1RET1VUCiJBUFBFTkQwOiBlbnRlcmluZyBsaW5lcz0kbmxpbmVzIG5ldyAjZmllbGRzPSAkam1heCwgbGVhZGluZ19jb3VudD0kbGVhZGluZ19zcGFjZV9jb3VudCBsYXN0X2NtdD0kbGFzdF9jb21tZW50X2NvbHVtbiBmb3JjZT0kaXNfZm9yY2VkX2JyZWFrLCBsZXZlbF9qdW1wPSRsZXZlbF9qdW1wLCBsZXZlbD0kbGV2ZWwsIGdyb3VwX2xldmVsPSRncm91cF9sZXZlbCwgbGV2ZWxfanVtcD0kbGV2ZWxfanVtcFxuIjsKICAgIH07CgogICAgIyBWYWxpZGF0ZSBjYWNoZWQgbGluZSBpZiBuZWNlc3Nhcnk6IElmIHdlIGNhbiBwcm9kdWNlIGEgY29udGFpbmVyCiAgICAjIHdpdGgganVzdCAyIGxpbmVzIHRvdGFsIGJ5IGNvbWJpbmluZyBhbiBleGlzdGluZyBjYWNoZWQgb3BlbmluZwogICAgIyB0b2tlbiB3aXRoIHRoZSBjbG9zaW5nIHRva2VuIHRvIGZvbGxvdywgdGhlbiB3ZSB3aWxsIG1hcmsgYm90aAogICAgIyBjYWNoZWQgZmxhZ3MgYXMgdmFsaWQuCiAgICBpZiAoJHJ2ZXJ0aWNhbF90aWdodG5lc3NfZmxhZ3MpIHsKICAgICAgICBpZiAoICAgQGdyb3VwX2xpbmVzIDw9IDEKICAgICAgICAgICAgJiYgJGNhY2hlZF9saW5lX3R5cGUKICAgICAgICAgICAgJiYgJGNhY2hlZF9zZXFubwogICAgICAgICAgICAmJiAkcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFncy0+WzJdCiAgICAgICAgICAgICYmICRydmVydGljYWxfdGlnaHRuZXNzX2ZsYWdzLT5bMl0gPT0gJGNhY2hlZF9zZXFubyApCiAgICAgICAgewogICAgICAgICAgICAkcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFncy0+WzNdIHx8PSAxOwogICAgICAgICAgICAkY2FjaGVkX2xpbmVfdmFsaWQgfHw9IDE7CiAgICAgICAgfQogICAgfQoKICAgICMgZG8gbm90IGpvaW4gYW4gb3BlbmluZyBibG9jayBicmFjZSB3aXRoIGFuIHVuYmFsYW5jZWQgbGluZQogICAgIyB1bmxlc3MgcmVxdWVzdGVkIHdpdGggYSBmbGFnIHZhbHVlIG9mIDIKICAgIGlmICggICAkY2FjaGVkX2xpbmVfdHlwZSA9PSAzCiAgICAgICAgJiYgIUBncm91cF9saW5lcwogICAgICAgICYmICRjYWNoZWRfbGluZV9mbGFnIDwgMgogICAgICAgICYmICRsZXZlbF9qdW1wICE9IDAgKQogICAgewogICAgICAgICRjYWNoZWRfbGluZV92YWxpZCA9IDA7CiAgICB9CgogICAgIyBwYXRjaCB1bnRpbCBuZXcgYWxpZ25lciBpcyBmaW5pc2hlZAogICAgaWYgKCRkb19ub3RfcGFkKSB7IG15X2ZsdXNoKCkgfQoKICAgICMgc2hvdWxkbid0IGhhcHBlbjoKICAgIGlmICggJGxldmVsIDwgMCApIHsgJGxldmVsID0gMCB9CgogICAgIyBkbyBub3QgYWxpZ24gY29kZSBhY3Jvc3MgaW5kZW50YXRpb24gbGV2ZWwgY2hhbmdlcwogICAgIyBvciBpZiB2ZXJ0aWNhbCBhbGlnbm1lbnQgaXMgdHVybmVkIG9mZiBmb3IgZGVidWdnaW5nCiAgICBpZiAoICRsZXZlbCAhPSAkZ3JvdXBfbGV2ZWwgfHwgJGlzX291dGRlbnRlZCB8fCAhJHJPcHRzX3ZhbGlnbiApIHsKCiAgICAgICAgIyB3ZSBhcmUgYWxsb3dlZCB0byBzaGlmdCBhIGdyb3VwIG9mIGxpbmVzIHRvIHRoZSByaWdodCBpZiBpdHMKICAgICAgICAjIGxldmVsIGlzIGdyZWF0ZXIgdGhhbiB0aGUgcHJldmlvdXMgYW5kIG5leHQgZ3JvdXAKICAgICAgICAkZXh0cmFfaW5kZW50X29rID0KICAgICAgICAgICggJGxldmVsIDwgJGdyb3VwX2xldmVsICYmICRsYXN0X2xldmVsX3dyaXR0ZW4gPCAkZ3JvdXBfbGV2ZWwgKTsKCiAgICAgICAgbXlfZmx1c2goKTsKCiAgICAgICAgIyBJZiB3ZSBrbm93IHRoYXQgdGhpcyBsaW5lIHdpbGwgZ2V0IGZsdXNoZWQgb3V0IGJ5IGl0c2VsZiBiZWNhdXNlCiAgICAgICAgIyBvZiBsZXZlbCBjaGFuZ2VzLCB3ZSBjYW4gbGVhdmUgdGhlIGV4dHJhX2luZGVudF9vayBmbGFnIHNldC4KICAgICAgICAjIFRoYXQgd2F5LCBpZiB3ZSBnZXQgYW4gZXh0ZXJuYWwgZmx1c2ggY2FsbCwgd2Ugd2lsbCBzdGlsbCBiZQogICAgICAgICMgYWJsZSB0byBkbyBzb21lIC1scCBhbGlnbm1lbnQgaWYgbmVjZXNzYXJ5LgogICAgICAgICRleHRyYV9pbmRlbnRfb2sgPSAoICRpc190ZXJtaW5hbF9zdGF0ZW1lbnQgJiYgJGxldmVsID4gJGdyb3VwX2xldmVsICk7CgogICAgICAgICRncm91cF9sZXZlbCA9ICRsZXZlbDsKCiAgICAgICAgIyB3YWl0IHVudGlsIGFmdGVyIHRoZSBhYm92ZSBmbHVzaCB0byBnZXQgdGhlIGxlYWRpbmcgc3BhY2UKICAgICAgICAjIGNvdW50IGJlY2F1c2UgaXQgbWF5IGhhdmUgYmVlbiBjaGFuZ2VkIGlmIHRoZSAtaWNwIGZsYWcgaXMgaW4KICAgICAgICAjIGVmZmVjdAogICAgICAgICRsZWFkaW5nX3NwYWNlX2NvdW50ID0gZ2V0X3NwYWNlcygkaW5kZW50YXRpb24pOwoKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIENvbGxlY3Qgb3V0ZGVudGFibGUgYmxvY2sgQ09NTUVOVFMKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIG15ICRpc19ibGFua19saW5lID0gIiI7CiAgICBpZiAoICRncm91cF90eXBlIGVxICdDT01NRU5UJyApIHsKICAgICAgICBpZiAoCiAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICRpc19ibG9ja19jb21tZW50CiAgICAgICAgICAgICAgICAmJiAkb3V0ZGVudF9sb25nX2xpbmVzCiAgICAgICAgICAgICAgICAmJiAkbGVhZGluZ19zcGFjZV9jb3VudCA9PSAkY29tbWVudF9sZWFkaW5nX3NwYWNlX2NvdW50CiAgICAgICAgICAgICkKICAgICAgICAgICAgfHwgJGlzX2JsYW5rX2xpbmUKICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIHB1c2hfZ3JvdXBfbGluZSggJHJmaWVsZHMtPlswXSApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBteV9mbHVzaCgpOwogICAgICAgIH0KICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIGFkZCBkdW1teSBmaWVsZHMgZm9yIHRlcm1pbmFsIHRlcm5hcnkKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIG15ICRqX3Rlcm1pbmFsX21hdGNoOwoKICAgIGlmICggJGlzX3Rlcm1pbmFsX3Rlcm5hcnkgJiYgQGdyb3VwX2xpbmVzICkgewogICAgICAgICRqX3Rlcm1pbmFsX21hdGNoID0KICAgICAgICAgIGZpeF90ZXJtaW5hbF90ZXJuYXJ5KCAkZ3JvdXBfbGluZXNbLTFdLCAkcmZpZWxkcywgJHJ0b2tlbnMsCiAgICAgICAgICAgICRycGF0dGVybnMgKTsKICAgICAgICAkam1heCA9IEB7JHJmaWVsZHN9IC0gMTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIGFkZCBkdW1teSBmaWVsZHMgZm9yIGVsc2Ugc3RhdGVtZW50CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgaWYgKCAgICRyZmllbGRzLT5bMF0gPX4gL15lbHNlXHMqJC8KICAgICAgICAmJiBAZ3JvdXBfbGluZXMKICAgICAgICAmJiAkbGV2ZWxfanVtcCA9PSAwICkKICAgIHsKCiAgICAgICAgJGpfdGVybWluYWxfbWF0Y2ggPQogICAgICAgICAgZml4X3Rlcm1pbmFsX2Vsc2UoICRncm91cF9saW5lc1stMV0sICRyZmllbGRzLCAkcnRva2VucywgJHJwYXR0ZXJucyApOwogICAgICAgICRqbWF4ID0gQHskcmZpZWxkc30gLSAxOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgSGFuZGxlIHNpbXBsZSBsaW5lIG9mIGNvZGUgd2l0aCBubyBmaWVsZHMgdG8gbWF0Y2guCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBpZiAoICRqbWF4IDw9IDAgKSB7CiAgICAgICAgJHplcm9fY291bnQrKzsKCiAgICAgICAgaWYgKCBAZ3JvdXBfbGluZXMKICAgICAgICAgICAgJiYgIWdldF9yZWNvdmVyYWJsZV9zcGFjZXMoICRncm91cF9saW5lc1swXS0+Z2V0X2luZGVudGF0aW9uKCkgKSApCiAgICAgICAgewoKICAgICAgICAgICAgIyBmbHVzaCB0aGUgY3VycmVudCBncm91cCBpZiBpdCBoYXMgc29tZSBhbGlnbmVkIGNvbHVtbnMuLgogICAgICAgICAgICBpZiAoICRncm91cF9saW5lc1swXS0+Z2V0X2ptYXgoKSA+IDEgKSB7IG15X2ZsdXNoKCkgfQoKICAgICAgICAgICAgIyBmbHVzaCBjdXJyZW50IGdyb3VwIGlmIHdlIGFyZSBqdXN0IGNvbGxlY3Rpbmcgc2lkZSBjb21tZW50cy4uCiAgICAgICAgICAgIGVsc2lmICgKCiAgICAgICAgICAgICAgICAjIC4uLmFuZCB3ZSBoYXZlbid0IHNlZW4gYSBjb21tZW50IGxhdGVseQogICAgICAgICAgICAgICAgKCAkemVyb19jb3VudCA+IDMgKQoKICAgICAgICAgICAgICAgICMgLi5vciBpZiB0aGlzIG5ldyBsaW5lIGRvZXNuJ3QgZml0IHRvIHRoZSBsZWZ0IG9mIHRoZSBjb21tZW50cwogICAgICAgICAgICAgICAgfHwgKCAoICRsZWFkaW5nX3NwYWNlX2NvdW50ICsgbGVuZ3RoKCAkcmZpZWxkcy0+WzBdICkgKSA+CiAgICAgICAgICAgICAgICAgICAgJGdyb3VwX2xpbmVzWzBdLT5nZXRfY29sdW1uKDApICkKICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG15X2ZsdXNoKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc3RhcnQgbmV3IENPTU1FTlQgZ3JvdXAgaWYgdGhpcyBjb21tZW50IG1heSBiZSBvdXRkZW50ZWQKICAgICAgICBpZiAoICAgJGlzX2Jsb2NrX2NvbW1lbnQKICAgICAgICAgICAgJiYgJG91dGRlbnRfbG9uZ19saW5lcwogICAgICAgICAgICAmJiAhQGdyb3VwX2xpbmVzICkKICAgICAgICB7CiAgICAgICAgICAgICRncm91cF90eXBlICAgICAgICAgICAgICAgICAgPSAnQ09NTUVOVCc7CiAgICAgICAgICAgICRjb21tZW50X2xlYWRpbmdfc3BhY2VfY291bnQgPSAkbGVhZGluZ19zcGFjZV9jb3VudDsKICAgICAgICAgICAgcHVzaF9ncm91cF9saW5lKCAkcmZpZWxkcy0+WzBdICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMganVzdCB3cml0ZSB0aGlzIGxpbmUgZGlyZWN0bHkgaWYgbm8gY3VycmVudCBncm91cCwgbm8gc2lkZSBjb21tZW50LAogICAgICAgICMgYW5kIG5vIHNwYWNlIHJlY292ZXJ5IGlzIG5lZWRlZC4KICAgICAgICBpZiAoICFAZ3JvdXBfbGluZXMgJiYgIWdldF9yZWNvdmVyYWJsZV9zcGFjZXMoJGluZGVudGF0aW9uKSApIHsKICAgICAgICAgICAgdmFsaWduX291dHB1dF9zdGVwX0IoICRsZWFkaW5nX3NwYWNlX2NvdW50LCAkcmZpZWxkcy0+WzBdLCAwLAogICAgICAgICAgICAgICAgJG91dGRlbnRfbG9uZ19saW5lcywgJHJ2ZXJ0aWNhbF90aWdodG5lc3NfZmxhZ3MsICRsZXZlbCApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJHplcm9fY291bnQgPSAwOwogICAgfQoKICAgICMgcHJvZ3JhbW1pbmcgY2hlY2s6IChzaG91bGRuJ3QgaGFwcGVuKQogICAgIyBhbiBlcnJvciBoZXJlIGltcGxpZXMgYW4gaW5jb3JyZWN0IGNhbGwgd2FzIG1hZGUKICAgIGlmICggQHskcmZpZWxkc30gJiYgKCBAeyRydG9rZW5zfSAhPSAoIEB7JHJmaWVsZHN9IC0gMSApICkgKSB7CiAgICAgICAgbXkgJG50ID0gQHskcnRva2Vuc307CiAgICAgICAgbXkgJG5mID0gQHskcmZpZWxkc307CiAgICAgICAgd2FybmluZygKIlByb2dyYW0gYnVnIGluIFBlcmw6OlRpZHk6OlZlcnRpY2FsQWxpZ25lciAtIG51bWJlciBvZiB0b2tlbnMgPSAkbnQgc2hvdWxkIGJlIG9uZSBsZXNzIHRoYW4gbnVtYmVyIG9mIGZpZWxkczogJG5mKVxuIgogICAgICAgICk7CiAgICAgICAgcmVwb3J0X2RlZmluaXRlX2J1ZygpOwogICAgfQogICAgbXkgJG1heGltdW1fbGluZV9sZW5ndGhfZm9yX2xldmVsID0gbWF4aW11bV9saW5lX2xlbmd0aF9mb3JfbGV2ZWwoJGxldmVsKTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIGNyZWF0ZSBhbiBvYmplY3QgdG8gaG9sZCB0aGlzIGxpbmUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIG15ICRuZXdfbGluZSA9IFBlcmw6OlRpZHk6OlZlcnRpY2FsQWxpZ25lcjo6TGluZS0+bmV3KAogICAgICAgIGptYXggICAgICAgICAgICAgICAgICAgICAgPT4gJGptYXgsCiAgICAgICAgam1heF9vcmlnaW5hbF9saW5lICAgICAgICA9PiAkam1heCwKICAgICAgICBydG9rZW5zICAgICAgICAgICAgICAgICAgID0+ICRydG9rZW5zLAogICAgICAgIHJmaWVsZHMgICAgICAgICAgICAgICAgICAgPT4gJHJmaWVsZHMsCiAgICAgICAgcnBhdHRlcm5zICAgICAgICAgICAgICAgICA9PiAkcnBhdHRlcm5zLAogICAgICAgIGluZGVudGF0aW9uICAgICAgICAgICAgICAgPT4gJGluZGVudGF0aW9uLAogICAgICAgIGxlYWRpbmdfc3BhY2VfY291bnQgICAgICAgPT4gJGxlYWRpbmdfc3BhY2VfY291bnQsCiAgICAgICAgb3V0ZGVudF9sb25nX2xpbmVzICAgICAgICA9PiAkb3V0ZGVudF9sb25nX2xpbmVzLAogICAgICAgIGxpc3RfdHlwZSAgICAgICAgICAgICAgICAgPT4gIiIsCiAgICAgICAgaXNfaGFuZ2luZ19zaWRlX2NvbW1lbnQgICA9PiAkaXNfaGFuZ2luZ19zaWRlX2NvbW1lbnQsCiAgICAgICAgbWF4aW11bV9saW5lX2xlbmd0aCAgICAgICA9PiAkbWF4aW11bV9saW5lX2xlbmd0aF9mb3JfbGV2ZWwsCiAgICAgICAgcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFncyA9PiAkcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFncywKICAgICAgICBpc190ZXJtaW5hbF90ZXJuYXJ5ICAgICAgID0+ICRpc190ZXJtaW5hbF90ZXJuYXJ5LAogICAgICAgIGpfdGVybWluYWxfbWF0Y2ggICAgICAgICAgPT4gJGpfdGVybWluYWxfbWF0Y2gsCiAgICApOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgSXQgc2ltcGxpZmllcyB0aGluZ3MgdG8gY3JlYXRlIGEgemVybyBsZW5ndGggc2lkZSBjb21tZW50CiAgICAjIGlmIG5vbmUgZXhpc3RzLgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgbWFrZV9zaWRlX2NvbW1lbnQoICRuZXdfbGluZSwgJGxldmVsX2VuZCApOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgRGVjaWRlIGlmIHRoaXMgaXMgYSBzaW1wbGUgbGlzdCBvZiBpdGVtcy4KICAgICMgVGhlcmUgYXJlIDMgbGlzdCB0eXBlczogbm9uZSwgY29tbWEsIGNvbW1hLWFycm93LgogICAgIyBXZSB1c2UgdGhpcyBiZWxvdyB0byBiZSBsZXNzIHJlc3RyaWN0aXZlIGluIGRlY2lkaW5nIHdoYXQgdG8gYWxpZ24uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBpZiAoJGlzX2ZvcmNlZF9icmVhaykgewogICAgICAgIGRlY2lkZV9pZl9saXN0KCRuZXdfbGluZSk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyBBcHBlbmQgdGhpcyBsaW5lIHRvIHRoZSBjdXJyZW50IGdyb3VwIChvciBzdGFydCBuZXcgZ3JvdXApCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBpZiAoICFAZ3JvdXBfbGluZXMgKSB7CiAgICAgICAgYWRkX3RvX2dyb3VwKCRuZXdfbGluZSk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBwdXNoX2dyb3VwX2xpbmUoJG5ld19saW5lKTsKICAgIH0KCiAgICAjIG91dHB1dCB0aGlzIGdyb3VwIGlmIGl0IGVuZHMgaW4gYSB0ZXJtaW5hbCBlbHNlIG9yIHRlcm5hcnkgbGluZQogICAgaWYgKCBkZWZpbmVkKCRqX3Rlcm1pbmFsX21hdGNoKSApIHsKICAgICAgICBteV9mbHVzaCgpOwogICAgfQoKICAgICMgRm9yY2UgYnJlYWsgYWZ0ZXIganVtcCB0byBsb3dlciBsZXZlbAogICAgaWYgKCAkbGV2ZWxfanVtcCA8IDAgKSB7CiAgICAgICAgbXlfZmx1c2goKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIFNvbWUgb2xkIGRlYnVnZ2luZyBzdHVmZgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgVkFMSUdOX0RFQlVHX0ZMQUdfQVBQRU5EICYmIGRvIHsKICAgICAgICBwcmludCBTVERPVVQgIkFQUEVORCBmaWVsZHM6IjsKICAgICAgICBkdW1wX2FycmF5KCBAeyRyZmllbGRzfSApOwogICAgICAgIHByaW50IFNURE9VVCAiQVBQRU5EIHRva2VuczoiOwogICAgICAgIGR1bXBfYXJyYXkoIEB7JHJ0b2tlbnN9ICk7CiAgICAgICAgcHJpbnQgU1RET1VUICJBUFBFTkQgcGF0dGVybnM6IjsKICAgICAgICBkdW1wX2FycmF5KCBAeyRycGF0dGVybnN9ICk7CiAgICAgICAgZHVtcF9hbGlnbm1lbnRzKCk7CiAgICB9OwoKICAgIHJldHVybjsKfQoKc3ViIGpvaW5faGFuZ2luZ19jb21tZW50IHsKCiAgICBteSAkbGluZSA9IHNoaWZ0OwogICAgbXkgJGptYXggPSAkbGluZS0+Z2V0X2ptYXgoKTsKICAgIHJldHVybiAwIHVubGVzcyAkam1heCA9PSAxOyAgICAjIG11c3QgYmUgMiBmaWVsZHMKICAgIG15ICRydG9rZW5zID0gJGxpbmUtPmdldF9ydG9rZW5zKCk7CiAgICByZXR1cm4gMCB1bmxlc3MgJHJ0b2tlbnMtPlswXSBlcSAnIyc7ICAgICMgdGhlIHNlY29uZCBmaWVsZCBpcyBhIGNvbW1lbnQuLgogICAgbXkgJHJmaWVsZHMgPSAkbGluZS0+Z2V0X3JmaWVsZHMoKTsKICAgIHJldHVybiAwIHVubGVzcyAkcmZpZWxkcy0+WzBdID1+IC9eXHMqJC87ICAgICMgdGhlIGZpcnN0IGZpZWxkIGlzIGVtcHR5Li4uCiAgICBteSAkb2xkX2xpbmUgICAgICAgICAgICA9IHNoaWZ0OwogICAgbXkgJG1heGltdW1fZmllbGRfaW5kZXggPSAkb2xkX2xpbmUtPmdldF9qbWF4KCk7CiAgICByZXR1cm4gMAogICAgICB1bmxlc3MgJG1heGltdW1fZmllbGRfaW5kZXggPiAkam1heDsgICAgIyB0aGUgY3VycmVudCBsaW5lIGhhcyBtb3JlIGZpZWxkcwogICAgbXkgJHJwYXR0ZXJucyA9ICRsaW5lLT5nZXRfcnBhdHRlcm5zKCk7CgogICAgJGxpbmUtPnNldF9pc19oYW5naW5nX3NpZGVfY29tbWVudCgxKTsKICAgICRqbWF4ID0gJG1heGltdW1fZmllbGRfaW5kZXg7CiAgICAkbGluZS0+c2V0X2ptYXgoJGptYXgpOwogICAgJHJmaWVsZHMtPlskam1heF0gICAgICAgICA9ICRyZmllbGRzLT5bMV07CiAgICAkcnRva2Vucy0+WyAkam1heCAtIDEgXSAgID0gJHJ0b2tlbnMtPlswXTsKICAgICRycGF0dGVybnMtPlsgJGptYXggLSAxIF0gPSAkcnBhdHRlcm5zLT5bMF07CiAgICBmb3JlYWNoIG15ICRqICggMSAuLiAkam1heCAtIDEgKSB7CiAgICAgICAgJHJmaWVsZHMtPlskal0gICAgICAgICA9ICIgIjsgIyBOT1RFOiBjYXVzZWQgZ2xpdGNoIHVubGVzcyAxIGJsYW5rLCB3aHk/CiAgICAgICAgJHJ0b2tlbnMtPlsgJGogLSAxIF0gICA9ICIiOwogICAgICAgICRycGF0dGVybnMtPlsgJGogLSAxIF0gPSAiIjsKICAgIH0KICAgIHJldHVybiAxOwp9CgpzdWIgZWxpbWluYXRlX29sZF9maWVsZHMgewoKICAgIG15ICRuZXdfbGluZSA9IHNoaWZ0OwogICAgbXkgJGptYXggICAgID0gJG5ld19saW5lLT5nZXRfam1heCgpOwogICAgaWYgKCAkam1heCA+ICRtYXhpbXVtX2ptYXhfc2VlbiApIHsgJG1heGltdW1fam1heF9zZWVuID0gJGptYXggfQogICAgaWYgKCAkam1heCA8ICRtaW5pbXVtX2ptYXhfc2VlbiApIHsgJG1pbmltdW1fam1heF9zZWVuID0gJGptYXggfQoKICAgICMgdGhlcmUgbXVzdCBiZSBvbmUgcHJldmlvdXMgbGluZQogICAgcmV0dXJuIHVubGVzcyAoIEBncm91cF9saW5lcyA9PSAxICk7CgogICAgbXkgJG9sZF9saW5lICAgICAgICAgICAgPSBzaGlmdDsKICAgIG15ICRtYXhpbXVtX2ZpZWxkX2luZGV4ID0gJG9sZF9saW5lLT5nZXRfam1heCgpOwoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIE1vdmVkIGJlbG93IHRvIGFsbG93IG5ldyBjb2RpbmcgZm9yID0+IG1hdGNoZXMKICAgICMgcmV0dXJuIHVubGVzcyAkbWF4aW11bV9maWVsZF9pbmRleCA+ICRqbWF4OwogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAjIElkZW50aWZ5IHNwZWNpZmljIGNhc2VzIHdoZXJlIGZpZWxkIGVsaW1pbmF0aW9uIGlzIGFsbG93ZWQ6CiAgICAjIGNhc2U9MTogYm90aCBsaW5lcyBoYXZlIGNvbW1hLXNlcGFyYXRlZCBsaXN0cywgYW5kIHRoZSBmaXJzdAogICAgIyAgICAgICAgIGxpbmUgaGFzIGFuIGVxdWFscwogICAgIyBjYXNlPTI6IGJvdGggbGluZXMgaGF2ZSBsZWFkaW5nIGVxdWFscwoKICAgICMgY2FzZSAxIGlzIHRoZSBkZWZhdWx0CiAgICBteSAkY2FzZSA9IDE7CgogICAgIyBTZWUgaWYgY2FzZSAyOiBib3RoIGxpbmVzIGhhdmUgbGVhZGluZyAnPScKICAgICMgV2UnbGwgcmVxdWlyZSBzaW1pbGFyIGxlYWRpbmcgcGF0dGVybnMgaW4gdGhpcyBjYXNlCiAgICBteSAkb2xkX3J0b2tlbnMgICA9ICRvbGRfbGluZS0+Z2V0X3J0b2tlbnMoKTsKICAgIG15ICRydG9rZW5zICAgICAgID0gJG5ld19saW5lLT5nZXRfcnRva2VucygpOwogICAgbXkgJHJwYXR0ZXJucyAgICAgPSAkbmV3X2xpbmUtPmdldF9ycGF0dGVybnMoKTsKICAgIG15ICRvbGRfcnBhdHRlcm5zID0gJG9sZF9saW5lLT5nZXRfcnBhdHRlcm5zKCk7CiAgICBpZiAoICAgJHJ0b2tlbnMtPlswXSA9fiAvXj0+P1xkKiQvCiAgICAgICAgJiYgJG9sZF9ydG9rZW5zLT5bMF0gZXEgJHJ0b2tlbnMtPlswXQogICAgICAgICYmICRvbGRfcnBhdHRlcm5zLT5bMF0gZXEgJHJwYXR0ZXJucy0+WzBdICkKICAgIHsKICAgICAgICAkY2FzZSA9IDI7CiAgICB9CgogICAgIyBub3QgdG9vIG1hbnkgZmV3ZXIgZmllbGRzIGluIG5ldyBsaW5lIGZvciBjYXNlIDEKICAgIHJldHVybiB1bmxlc3MgKCAkY2FzZSAhPSAxIHx8ICRtYXhpbXVtX2ZpZWxkX2luZGV4IC0gMiA8PSAkam1heCApOwoKICAgICMgY2FzZSAxIG11c3QgaGF2ZSBzaWRlIGNvbW1lbnQKICAgIG15ICRvbGRfcmZpZWxkcyA9ICRvbGRfbGluZS0+Z2V0X3JmaWVsZHMoKTsKICAgIHJldHVybgogICAgICBpZiAoICRjYXNlID09IDEKICAgICAgICAmJiBsZW5ndGgoICRvbGRfcmZpZWxkcy0+WyRtYXhpbXVtX2ZpZWxkX2luZGV4XSApID09IDAgKTsKCiAgICBteSAkcmZpZWxkcyA9ICRuZXdfbGluZS0+Z2V0X3JmaWVsZHMoKTsKCiAgICBteSAkaGlkX2VxdWFscyA9IDA7CgogICAgbXkgQG5ld19hbGlnbm1lbnRzICAgICAgICA9ICgpOwogICAgbXkgQG5ld19maWVsZHMgICAgICAgICAgICA9ICgpOwogICAgbXkgQG5ld19tYXRjaGluZ19wYXR0ZXJucyA9ICgpOwogICAgbXkgQG5ld19tYXRjaGluZ190b2tlbnMgICA9ICgpOwoKICAgIG15ICRqICAgICAgICAgICAgICAgPSAwOwogICAgbXkgJGN1cnJlbnRfZmllbGQgICA9ICcnOwogICAgbXkgJGN1cnJlbnRfcGF0dGVybiA9ICcnOwoKICAgICMgbG9vcCBvdmVyIGFsbCBvbGQgdG9rZW5zCiAgICBteSAkaW5fbWF0Y2ggPSAwOwogICAgZm9yZWFjaCBteSAkayAoIDAgLi4gJG1heGltdW1fZmllbGRfaW5kZXggLSAxICkgewogICAgICAgICRjdXJyZW50X2ZpZWxkICAgLj0gJG9sZF9yZmllbGRzLT5bJGtdOwogICAgICAgICRjdXJyZW50X3BhdHRlcm4gLj0gJG9sZF9ycGF0dGVybnMtPlska107CiAgICAgICAgbGFzdCBpZiAoICRqID4gJGptYXggLSAxICk7CgogICAgICAgIGlmICggJG9sZF9ydG9rZW5zLT5bJGtdIGVxICRydG9rZW5zLT5bJGpdICkgewogICAgICAgICAgICAkaW5fbWF0Y2ggICAgICAgICAgICAgICAgICA9IDE7CiAgICAgICAgICAgICRuZXdfZmllbGRzWyRqXSAgICAgICAgICAgID0gJGN1cnJlbnRfZmllbGQ7CiAgICAgICAgICAgICRuZXdfbWF0Y2hpbmdfcGF0dGVybnNbJGpdID0gJGN1cnJlbnRfcGF0dGVybjsKICAgICAgICAgICAgJGN1cnJlbnRfZmllbGQgICAgICAgICAgICAgPSAnJzsKICAgICAgICAgICAgJGN1cnJlbnRfcGF0dGVybiAgICAgICAgICAgPSAnJzsKICAgICAgICAgICAgJG5ld19tYXRjaGluZ190b2tlbnNbJGpdICAgPSAkb2xkX3J0b2tlbnMtPlska107CiAgICAgICAgICAgICRuZXdfYWxpZ25tZW50c1skal0gICAgICAgID0gJG9sZF9saW5lLT5nZXRfYWxpZ25tZW50KCRrKTsKICAgICAgICAgICAgJGorKzsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICBpZiAoICRvbGRfcnRva2Vucy0+WyRrXSA9fiAvXlw9XGQqJC8gKSB7CiAgICAgICAgICAgICAgICBsYXN0IGlmICggJGNhc2UgPT0gMiApOyAgICAjIGF2b2lkIHByb2JsZW1zIHdpdGggc3R1ZmYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbGlrZTogICAkYT0kYj0kYz0kZDsKICAgICAgICAgICAgICAgICRoaWRfZXF1YWxzID0gMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBsYXN0CiAgICAgICAgICAgICAgaWYgKCAkaW5fbWF0Y2ggJiYgJGNhc2UgPT0gMSApCiAgICAgICAgICAgICAgOyAgICAjIGRpc2FsbG93IGdhcHMgaW4gbWF0Y2hpbmcgZmllbGQgdHlwZXMgaW4gY2FzZSAxCiAgICAgICAgfQogICAgfQoKICAgICMgTW9kaWZ5IHRoZSBjdXJyZW50IHN0YXRlIGlmIHdlIGFyZSBzdWNjZXNzZnVsLgogICAgIyBXZSBtdXN0IGV4YWN0bHkgcmVhY2ggdGhlIGVuZHMgb2YgdGhlIG5ldyBsaXN0IGZvciBzdWNjZXNzLCBhbmQgdGhlIG9sZAogICAgIyBwYXR0ZXJuIG11c3QgaGF2ZSBtb3JlIGZpZWxkcy4gSGVyZSBpcyBhbiBleGFtcGxlIHdoZXJlIHRoZSBmaXJzdCBhbmQKICAgICMgc2Vjb25kIGxpbmVzIGhhdmUgdGhlIHNhbWUgbnVtYmVyLCBhbmQgd2Ugc2hvdWxkIG5vdCBhbGlnbjoKICAgICMgIG15IEBhID0gbWFwIGNociwgMCAuLiAyNTU7CiAgICAjICBteSBAYiA9IGdyZXAgL1xXLywgICAgQGE7CiAgICAjICBteSBAYyA9IGdyZXAgL1teXHddLywgQGE7CgogICAgIyBPdGhlcndpc2UsIHdlIHdvdWxkIGdldCBhbGwgb2YgdGhlIGNvbW1hcyBhbGlnbmVkLCB3aGljaCBkb2Vzbid0IHdvcmsgYXMKICAgICMgd2VsbDoKICAgICMgIG15IEBhID0gbWFwIGNociwgICAgICAwIC4uIDI1NTsKICAgICMgIG15IEBiID0gZ3JlcCAvXFcvLCAgICBAYTsKICAgICMgIG15IEBjID0gZ3JlcCAvW15cd10vLCBAYTsKCiAgICBpZiAoICAgKCAkaiA9PSAkam1heCApCiAgICAgICAgJiYgKCAkY3VycmVudF9maWVsZCBlcSAnJyApCiAgICAgICAgJiYgKCAkY2FzZSAhPSAxIHx8ICRoaWRfZXF1YWxzICkKICAgICAgICAmJiAoICRtYXhpbXVtX2ZpZWxkX2luZGV4ID4gJGptYXggKSApCiAgICB7CiAgICAgICAgbXkgJGsgPSAkbWF4aW11bV9maWVsZF9pbmRleDsKICAgICAgICAkY3VycmVudF9maWVsZCAgIC49ICRvbGRfcmZpZWxkcy0+WyRrXTsKICAgICAgICAkY3VycmVudF9wYXR0ZXJuIC49ICRvbGRfcnBhdHRlcm5zLT5bJGtdOwogICAgICAgICRuZXdfZmllbGRzWyRqXSAgICAgICAgICAgID0gJGN1cnJlbnRfZmllbGQ7CiAgICAgICAgJG5ld19tYXRjaGluZ19wYXR0ZXJuc1skal0gPSAkY3VycmVudF9wYXR0ZXJuOwoKICAgICAgICAkbmV3X2FsaWdubWVudHNbJGpdID0gJG9sZF9saW5lLT5nZXRfYWxpZ25tZW50KCRrKTsKICAgICAgICAkbWF4aW11bV9maWVsZF9pbmRleCA9ICRqOwoKICAgICAgICAkb2xkX2xpbmUtPnNldF9hbGlnbm1lbnRzKEBuZXdfYWxpZ25tZW50cyk7CiAgICAgICAgJG9sZF9saW5lLT5zZXRfam1heCgkam1heCk7CiAgICAgICAgJG9sZF9saW5lLT5zZXRfcnRva2VucyggXEBuZXdfbWF0Y2hpbmdfdG9rZW5zICk7CiAgICAgICAgJG9sZF9saW5lLT5zZXRfcmZpZWxkcyggXEBuZXdfZmllbGRzICk7CiAgICAgICAgJG9sZF9saW5lLT5zZXRfcnBhdHRlcm5zKCBcQHskcnBhdHRlcm5zfSApOwogICAgfQoKICAgICMgRHVtYiBEb3duIHN0YXJ0aW5nIG1hdGNoIGlmIG5lY2Vzc2FyeToKICAgICMKICAgICMgQ29uc2lkZXIgdGhlIGZvbGxvd2luZyB0d28gbGluZXM6CiAgICAjCiAgICAjICB7CiAgICAjICAgJGEgPT4gMjAgPiAzID8gMSA6IDAsCiAgICAjICAgJHh5eiA9PiA1LAogICAgIyAgfQoKICAgICMgV2Ugd291bGQgbGlrZSB0byBnZXQgYWxpZ25tZW50IHJlZ2FyZGxlc3Mgb2YgdGhlIG9yZGVyIG9mIHRoZSB0d28gbGluZXMuCiAgICAjIElmIHRoZSBsaW5lcyBjb21lIGluIGluIHRoaXMgb3JkZXIsIHRoZW4gd2Ugd2lsbCBzaW1wbGlmeSB0aGUgcGF0dGVybnMgb2YKICAgICMgdGhlIGZpcnN0IGxpbmUgaW4gc3ViIGVsaW1pbmF0ZV9uZXdfZmllbGRzLiAgSWYgdGhlIGxpbmVzIGNvbWUgaW4gcmV2ZXJzZQogICAgIyBvcmRlciwgdGhlbiB3ZSBhY2hpZXZlIHRoaXMgd2l0aCBlbGltaW5hdGVfbmV3X2ZpZWxkcy4KCiAgICAjIFRoaXMgdXBkYXRlIGlzIGN1cnJlbnRseSByZXN0cmljdGVkIHRvIGxlYWRpbmcgJz0+JyBtYXRjaGVzLiBBbHRob3VnaCB3ZQogICAgIyBjb3VsZCBkbyB0aGlzIGZvciBib3RoICc9JyBhbmQgJz0+Jywgb3ZlcmFsbCB0aGUgcmVzdWx0cyBmb3IgJz0nIGNvbWUgb3V0CiAgICAjIGJldHRlciB3aXRob3V0IHRoaXMgc3RlcCBiZWNhdXNlIHRoaXMgc3RlcCBjYW4gZWxpbWluYXRlIHNvbWUgb3RoZXIgZ29vZAogICAgIyBtYXRjaGVzLiAgRm9yIGV4YW1wbGUsIHdpdGggdGhlICc9JyB3ZSBnZXQ6CgojICBteSBAZGlzaWx2YSA9ICggImRpIFNpbHZhIiwgImRpU2lsdmEiLCAiZGkgU2lceHszMDF9bHZhIiwgImRpU2lceHszMDF9bHZhIiApOwojICBteSBAZHNmICAgICA9IG1hcCAiJF9ceHtGRkZFfUZyZWQiLCBAZGlzaWx2YTsKIyAgbXkgQGRzaiAgICAgPSBtYXAgIiRfXHh7RkZGRX1Kb2huIiwgQGRpc2lsdmE7CiMgIG15IEBkc0ogICAgID0gbWFwICIkXyBKb2huIiwgQGRpc2lsdmE7CgogICAgIyB3aXRob3V0IGluY2x1ZGluZyAnPScgd2UgZ2V0OgoKIyAgbXkgQGRpc2lsdmEgPSAoICJkaSBTaWx2YSIsICJkaVNpbHZhIiwgImRpIFNpXHh7MzAxfWx2YSIsICJkaVNpXHh7MzAxfWx2YSIgKTsKIyAgbXkgQGRzZiA9IG1hcCAiJF9ceHtGRkZFfUZyZWQiLCBAZGlzaWx2YTsKIyAgbXkgQGRzaiA9IG1hcCAiJF9ceHtGRkZFfUpvaG4iLCBAZGlzaWx2YTsKIyAgbXkgQGRzSiA9IG1hcCAiJF8gSm9obiIsICAgICAgICBAZGlzaWx2YTsKICAgIGVsc2lmICgKICAgICAgICAkY2FzZSA9PSAyCgogICAgICAgICYmIEBuZXdfbWF0Y2hpbmdfdG9rZW5zID09IDEKICAgICAgICAjIyYmICRuZXdfbWF0Y2hpbmdfdG9rZW5zWzBdID1+IC9ePS8gICAjIHNlZSBub3RlIGFib3ZlCiAgICAgICAgJiYgJG5ld19tYXRjaGluZ190b2tlbnNbMF0gPX4gL149Pi8KICAgICAgICAmJiAkbWF4aW11bV9maWVsZF9pbmRleCA+IDIKICAgICAgKQogICAgewogICAgICAgIG15ICRqbWF4bSAgICAgICAgICAgICA9ICRqbWF4IC0gMTsKICAgICAgICBteSAka21heG0gICAgICAgICAgICAgPSAkbWF4aW11bV9maWVsZF9pbmRleCAtIDE7CiAgICAgICAgbXkgJGhhdmVfc2lkZV9jb21tZW50ID0gJG9sZF9ydG9rZW5zLT5bJGttYXhtXSBlcSAnIyc7CgogICAgICAgICMgV2UgbmVlZCB0byByZWR1Y2UgdGhlIGdyb3VwIHBhdHRlcm4gdG8gYmUganVzdCB0d28gdG9rZW5zLAogICAgICAgICMgdGhlIGxlYWRpbmcgZXF1YWxpdHkgb3IgPT4gYW5kIHRoZSBmaW5hbCBzaWRlIGNvbW1lbnQKCiAgICAgICAgbXkgJG1pZF9maWVsZCA9IGpvaW4gIiIsCiAgICAgICAgICBAeyRvbGRfcmZpZWxkc31bIDEgLi4gJG1heGltdW1fZmllbGRfaW5kZXggLSAxIF07CiAgICAgICAgbXkgJG1pZF9wYXR0ZXJucyA9IGpvaW4gIiIsCiAgICAgICAgICBAeyRvbGRfcnBhdHRlcm5zfVsgMSAuLiAkbWF4aW11bV9maWVsZF9pbmRleCAtIDEgXTsKICAgICAgICBteSBAbmV3X2FsaWdubWVudHMgPSAoCiAgICAgICAgICAgICRvbGRfbGluZS0+Z2V0X2FsaWdubWVudCgwKSwKICAgICAgICAgICAgJG9sZF9saW5lLT5nZXRfYWxpZ25tZW50KCAkbWF4aW11bV9maWVsZF9pbmRleCAtIDEgKQogICAgICAgICk7CiAgICAgICAgbXkgQG5ld190b2tlbnMgPQogICAgICAgICAgKCAkb2xkX3J0b2tlbnMtPlswXSwgJG9sZF9ydG9rZW5zLT5bICRtYXhpbXVtX2ZpZWxkX2luZGV4IC0gMSBdICk7CiAgICAgICAgbXkgQG5ld19maWVsZHMgPSAoCiAgICAgICAgICAgICRvbGRfcmZpZWxkcy0+WzBdLCAkbWlkX2ZpZWxkLCAkb2xkX3JmaWVsZHMtPlskbWF4aW11bV9maWVsZF9pbmRleF0KICAgICAgICApOwogICAgICAgIG15IEBuZXdfcGF0dGVybnMgPSAoCiAgICAgICAgICAgICRvbGRfcnBhdHRlcm5zLT5bMF0sICRtaWRfcGF0dGVybnMsCiAgICAgICAgICAgICRvbGRfcnBhdHRlcm5zLT5bJG1heGltdW1fZmllbGRfaW5kZXhdCiAgICAgICAgKTsKCiAgICAgICAgJG1heGltdW1fZmllbGRfaW5kZXggPSAyOwogICAgICAgICRvbGRfbGluZS0+c2V0X2ptYXgoJG1heGltdW1fZmllbGRfaW5kZXgpOwogICAgICAgICRvbGRfbGluZS0+c2V0X3J0b2tlbnMoIFxAbmV3X3Rva2VucyApOwogICAgICAgICRvbGRfbGluZS0+c2V0X3JmaWVsZHMoIFxAbmV3X2ZpZWxkcyApOwogICAgICAgICRvbGRfbGluZS0+c2V0X3JwYXR0ZXJucyggXEBuZXdfcGF0dGVybnMgKTsKCiAgICAgICAgaW5pdGlhbGl6ZV9mb3JfbmV3X2dyb3VwKCk7CiAgICAgICAgYWRkX3RvX2dyb3VwKCRvbGRfbGluZSk7CiAgICB9CiAgICByZXR1cm47Cn0KCiMgY3JlYXRlIGFuIGVtcHR5IHNpZGUgY29tbWVudCBpZiBub25lIGV4aXN0cwpzdWIgbWFrZV9zaWRlX2NvbW1lbnQgewogICAgbXkgKCAkbmV3X2xpbmUsICRsZXZlbF9lbmQgKSA9IEBfOwogICAgbXkgJGptYXggICAgPSAkbmV3X2xpbmUtPmdldF9qbWF4KCk7CiAgICBteSAkcnRva2VucyA9ICRuZXdfbGluZS0+Z2V0X3J0b2tlbnMoKTsKCiAgICAjIGlmIGxpbmUgZG9lcyBub3QgaGF2ZSBhIHNpZGUgY29tbWVudC4uLgogICAgaWYgKCAoICRqbWF4ID09IDAgKSB8fCAoICRydG9rZW5zLT5bICRqbWF4IC0gMSBdIG5lICcjJyApICkgewogICAgICAgIG15ICRyZmllbGRzICAgPSAkbmV3X2xpbmUtPmdldF9yZmllbGRzKCk7CiAgICAgICAgbXkgJHJwYXR0ZXJucyA9ICRuZXdfbGluZS0+Z2V0X3JwYXR0ZXJucygpOwogICAgICAgICRydG9rZW5zLT5bJGptYXhdICAgICA9ICcjJzsKICAgICAgICAkcmZpZWxkcy0+WyArKyRqbWF4IF0gPSAnJzsKICAgICAgICAkcnBhdHRlcm5zLT5bJGptYXhdICAgPSAnIyc7CiAgICAgICAgJG5ld19saW5lLT5zZXRfam1heCgkam1heCk7CiAgICAgICAgJG5ld19saW5lLT5zZXRfam1heF9vcmlnaW5hbF9saW5lKCRqbWF4KTsKICAgIH0KCiAgICAjIGxpbmUgaGFzIGEgc2lkZSBjb21tZW50Li4KICAgIGVsc2UgewoKICAgICAgICAjIGRvbid0IHJlbWVtYmVyIG9sZCBzaWRlIGNvbW1lbnQgbG9jYXRpb24gZm9yIHZlcnkgbG9uZwogICAgICAgIG15ICRsaW5lX251bWJlciA9ICR2ZXJ0aWNhbF9hbGlnbmVyX3NlbGYtPmdldF9vdXRwdXRfbGluZV9udW1iZXIoKTsKICAgICAgICBteSAkcmZpZWxkcyAgICAgPSAkbmV3X2xpbmUtPmdldF9yZmllbGRzKCk7CiAgICAgICAgaWYgKAogICAgICAgICAgICAkbGluZV9udW1iZXIgLSAkbGFzdF9zaWRlX2NvbW1lbnRfbGluZV9udW1iZXIgPiAxMgoKICAgICAgICAgICAgIyBhbmQgZG9uJ3QgcmVtZW1iZXIgY29tbWVudCBsb2NhdGlvbiBhY3Jvc3MgYmxvY2sgbGV2ZWwgY2hhbmdlcwogICAgICAgICAgICB8fCAoICAgJGxldmVsX2VuZCA8ICRsYXN0X3NpZGVfY29tbWVudF9sZXZlbAogICAgICAgICAgICAgICAgJiYgJHJmaWVsZHMtPlswXSA9fiAvXn0vICkKICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIGZvcmdldF9zaWRlX2NvbW1lbnQoKTsKICAgICAgICB9CiAgICAgICAgJGxhc3Rfc2lkZV9jb21tZW50X2xpbmVfbnVtYmVyID0gJGxpbmVfbnVtYmVyOwogICAgICAgICRsYXN0X3NpZGVfY29tbWVudF9sZXZlbCAgICAgICA9ICRsZXZlbF9lbmQ7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBkZWNpZGVfaWZfbGlzdCB7CgogICAgbXkgJGxpbmUgPSBzaGlmdDsKCiAgICAjIEEgbGlzdCB3aWxsIGJlIHRha2VuIHRvIGJlIGEgbGluZSB3aXRoIGEgZm9yY2VkIGJyZWFrIGluIHdoaWNoIGFsbAogICAgIyBvZiB0aGUgZmllbGQgc2VwYXJhdG9ycyBhcmUgY29tbWFzIG9yIGNvbW1hLWFycm93cyAoZXhjZXB0IGZvciB0aGUKICAgICMgdHJhaWxpbmcgIykKCiAgICAjIExpc3Qgc2VwYXJhdG9yIHRva2VucyBhcmUgdGhpbmdzIGxpa2UgJywzJyAgIG9yICc9PjInLAogICAgIyB3aGVyZSB0aGUgdHJhaWxpbmcgZGlnaXQgaXMgdGhlIG5lc3RpbmcgZGVwdGguICBBbGxvdyBicmFjZXMKICAgICMgdG8gYWxsb3cgbmVzdGVkIGxpc3QgaXRlbXMuCiAgICBteSAkcnRva2VucyAgICA9ICRsaW5lLT5nZXRfcnRva2VucygpOwogICAgbXkgJHRlc3RfdG9rZW4gPSAkcnRva2Vucy0+WzBdOwogICAgaWYgKCAkdGVzdF90b2tlbiA9fiAvXihcLHw9PikvICkgewogICAgICAgIG15ICRsaXN0X3R5cGUgPSAkdGVzdF90b2tlbjsKICAgICAgICBteSAkam1heCAgICAgID0gJGxpbmUtPmdldF9qbWF4KCk7CgogICAgICAgIGZvcmVhY2ggKCAxIC4uICRqbWF4IC0gMiApIHsKICAgICAgICAgICAgaWYgKCAkcnRva2Vucy0+WyRfXSAhfiAvXihcLHw9PnxceykvICkgewogICAgICAgICAgICAgICAgJGxpc3RfdHlwZSA9ICIiOwogICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkbGluZS0+c2V0X2xpc3RfdHlwZSgkbGlzdF90eXBlKTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIGVsaW1pbmF0ZV9uZXdfZmllbGRzIHsKCiAgICBteSAoICRuZXdfbGluZSwgJG9sZF9saW5lICkgPSBAXzsKICAgIHJldHVybiB1bmxlc3MgKEBncm91cF9saW5lcyk7CiAgICBteSAkam1heCA9ICRuZXdfbGluZS0+Z2V0X2ptYXgoKTsKCiAgICBteSAkb2xkX3J0b2tlbnMgPSAkb2xkX2xpbmUtPmdldF9ydG9rZW5zKCk7CiAgICBteSAkcnRva2VucyAgICAgPSAkbmV3X2xpbmUtPmdldF9ydG9rZW5zKCk7CiAgICBteSAkaXNfYXNzaWdubWVudCA9CiAgICAgICggJHJ0b2tlbnMtPlswXSA9fiAvXj0+P1xkKiQvICYmICggJG9sZF9ydG9rZW5zLT5bMF0gZXEgJHJ0b2tlbnMtPlswXSApICk7CgogICAgIyBtdXN0IGJlIG1vbm90b25pYyB2YXJpYXRpb24KICAgIHJldHVybiB1bmxlc3MgKCAkaXNfYXNzaWdubWVudCB8fCAkcHJldmlvdXNfbWF4aW11bV9qbWF4X3NlZW4gPD0gJGptYXggKTsKCiAgICAjIG11c3QgYmUgbW9yZSBmaWVsZHMgaW4gdGhlIG5ldyBsaW5lCiAgICBteSAkbWF4aW11bV9maWVsZF9pbmRleCA9ICRvbGRfbGluZS0+Z2V0X2ptYXgoKTsKICAgIHJldHVybiB1bmxlc3MgKCAkbWF4aW11bV9maWVsZF9pbmRleCA8ICRqbWF4ICk7CgogICAgdW5sZXNzICgkaXNfYXNzaWdubWVudCkgewogICAgICAgIHJldHVybgogICAgICAgICAgdW5sZXNzICggJG9sZF9saW5lLT5nZXRfam1heF9vcmlnaW5hbF9saW5lKCkgPT0gJG1pbmltdW1fam1heF9zZWVuICkKICAgICAgICAgIDsgICAgIyBvbmx5IGlmIG1vbm90b25pYwoKICAgICAgICAjIG5ldmVyIGNvbWJpbmUgZmllbGRzIG9mIGEgY29tbWEgbGlzdAogICAgICAgIHJldHVybgogICAgICAgICAgdW5sZXNzICggJG1heGltdW1fZmllbGRfaW5kZXggPiAxICkKICAgICAgICAgICYmICggJG5ld19saW5lLT5nZXRfbGlzdF90eXBlKCkgIX4gL14sLyApOwogICAgfQoKICAgIG15ICRyZmllbGRzICAgICAgID0gJG5ld19saW5lLT5nZXRfcmZpZWxkcygpOwogICAgbXkgJHJwYXR0ZXJucyAgICAgPSAkbmV3X2xpbmUtPmdldF9ycGF0dGVybnMoKTsKICAgIG15ICRvbGRfcnBhdHRlcm5zID0gJG9sZF9saW5lLT5nZXRfcnBhdHRlcm5zKCk7CgogICAgIyBsb29wIG92ZXIgYWxsIE9MRCB0b2tlbnMgZXhjZXB0IGNvbW1lbnQgYW5kIGNoZWNrIG1hdGNoCiAgICBteSAkbWF0Y2ggPSAxOwogICAgZm9yZWFjaCBteSAkayAoIDAgLi4gJG1heGltdW1fZmllbGRfaW5kZXggLSAyICkgewogICAgICAgIGlmICggICAoICRvbGRfcnRva2Vucy0+WyRrXSBuZSAkcnRva2Vucy0+WyRrXSApCiAgICAgICAgICAgIHx8ICggJG9sZF9ycGF0dGVybnMtPlska10gbmUgJHJwYXR0ZXJucy0+WyRrXSApICkKICAgICAgICB7CiAgICAgICAgICAgICRtYXRjaCA9IDA7CiAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgfQogICAgfQoKICAgICMgZmlyc3QgdG9rZW5zIGFncmVlLCBzbyBjb21iaW5lIGV4dHJhIG5ldyB0b2tlbnMKICAgIGlmICgkbWF0Y2gpIHsKICAgICAgICBmb3JlYWNoIG15ICRrICggJG1heGltdW1fZmllbGRfaW5kZXggLi4gJGptYXggLSAxICkgewoKICAgICAgICAgICAgJHJmaWVsZHMtPlsgJG1heGltdW1fZmllbGRfaW5kZXggLSAxIF0gLj0gJHJmaWVsZHMtPlska107CiAgICAgICAgICAgICRyZmllbGRzLT5bJGtdID0gIiI7CiAgICAgICAgICAgICRycGF0dGVybnMtPlsgJG1heGltdW1fZmllbGRfaW5kZXggLSAxIF0gLj0gJHJwYXR0ZXJucy0+WyRrXTsKICAgICAgICAgICAgJHJwYXR0ZXJucy0+WyRrXSA9ICIiOwogICAgICAgIH0KCiAgICAgICAgJHJ0b2tlbnMtPlsgJG1heGltdW1fZmllbGRfaW5kZXggLSAxIF0gPSAnIyc7CiAgICAgICAgJHJmaWVsZHMtPlskbWF4aW11bV9maWVsZF9pbmRleF0gICAgICAgPSAkcmZpZWxkcy0+WyRqbWF4XTsKICAgICAgICAkcnBhdHRlcm5zLT5bJG1heGltdW1fZmllbGRfaW5kZXhdICAgICA9ICRycGF0dGVybnMtPlskam1heF07CiAgICAgICAgJGptYXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAkbWF4aW11bV9maWVsZF9pbmRleDsKICAgIH0KICAgICRuZXdfbGluZS0+c2V0X2ptYXgoJGptYXgpOwogICAgcmV0dXJuOwp9CgpzdWIgZml4X3Rlcm1pbmFsX3Rlcm5hcnkgewoKICAgICMgQWRkIGVtcHR5IGZpZWxkcyBhcyBuZWNlc3NhcnkgdG8gYWxpZ24gYSB0ZXJuYXJ5IHRlcm0KICAgICMgbGlrZSB0aGlzOgogICAgIwogICAgIyAgbXkgJGxlYXB5ZWFyID0KICAgICMgICAgICAkeWVhciAlIDQgICA/IDAKICAgICMgICAgOiAkeWVhciAlIDEwMCA/IDEKICAgICMgICAgOiAkeWVhciAlIDQwMCA/IDAKICAgICMgICAgOiAgICAgICAgICAgICAgIDE7CiAgICAjCiAgICAjIHJldHVybnMgMSBpZiB0aGUgdGVybWluYWwgaXRlbSBzaG91bGQgYmUgaW5kZW50ZWQKCiAgICBteSAoICRvbGRfbGluZSwgJHJmaWVsZHMsICRydG9rZW5zLCAkcnBhdHRlcm5zICkgPSBAXzsKICAgIHJldHVybiB1bmxlc3MgKCRvbGRfbGluZSk7CgojIyBGVVRVUkUgQ09ESU5HCiMjICAgICBteSAoICRvbGRfbGluZSwgJGVuZF9saW5lICkgPSBAXzsKIyMgICAgIHJldHVybiB1bmxlc3MgKCAkb2xkX2xpbmUgJiYgJGVuZF9saW5lICk7CiMjCiMjICAgICBteSAkcmZpZWxkcyAgID0gJGVuZF9saW5lLT5nZXRfcmZpZWxkcygpOwojIyAgICAgbXkgJHJwYXR0ZXJucyA9ICRlbmRfbGluZS0+Z2V0X3JwYXR0ZXJucygpOwojIyAgICAgbXkgJHJ0b2tlbnMgICA9ICRlbmRfbGluZS0+Z2V0X3J0b2tlbnMoKTsKCiAgICBteSAkam1heCAgICAgICAgPSBAeyRyZmllbGRzfSAtIDE7CiAgICBteSAkcmZpZWxkc19vbGQgPSAkb2xkX2xpbmUtPmdldF9yZmllbGRzKCk7CgogICAgbXkgJHJwYXR0ZXJuc19vbGQgICAgICAgPSAkb2xkX2xpbmUtPmdldF9ycGF0dGVybnMoKTsKICAgIG15ICRydG9rZW5zX29sZCAgICAgICAgID0gJG9sZF9saW5lLT5nZXRfcnRva2VucygpOwogICAgbXkgJG1heGltdW1fZmllbGRfaW5kZXggPSAkb2xkX2xpbmUtPmdldF9qbWF4KCk7CgogICAgIyBsb29rIGZvciB0aGUgcXVlc3Rpb24gbWFyayBhZnRlciB0aGUgOgogICAgbXkgKCRqcXVlc3Rpb24pOwogICAgbXkgJGRlcHRoX3F1ZXN0aW9uOwogICAgbXkgJHBhZCA9ICIiOwogICAgZm9yZWFjaCBteSAkaiAoIDAgLi4gJG1heGltdW1fZmllbGRfaW5kZXggLSAxICkgewogICAgICAgIG15ICR0b2sgPSAkcnRva2Vuc19vbGQtPlskal07CiAgICAgICAgaWYgKCAkdG9rID1+IC9eXD8oXGQrKSQvICkgewogICAgICAgICAgICAkZGVwdGhfcXVlc3Rpb24gPSAkMTsKCiAgICAgICAgICAgICMgZGVwdGggbXVzdCBiZSBjb3JyZWN0CiAgICAgICAgICAgIG5leHQgdW5sZXNzICggJGRlcHRoX3F1ZXN0aW9uIGVxICRncm91cF9sZXZlbCApOwoKICAgICAgICAgICAgJGpxdWVzdGlvbiA9ICRqOwogICAgICAgICAgICBpZiAoICRyZmllbGRzX29sZC0+WyAkaiArIDEgXSA9fiAvXihcP1xzKikvICkgewogICAgICAgICAgICAgICAgJHBhZCA9ICIgIiB4IGxlbmd0aCgkMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICByZXR1cm47ICAgICMgc2hvdWxkbid0IGhhcHBlbgogICAgICAgICAgICB9CiAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIHVubGVzcyAoIGRlZmluZWQoJGpxdWVzdGlvbikgKTsgICAgIyBzaG91bGRuJ3QgaGFwcGVuCgogICAgIyBOb3cgc3BsaWNlIHRoZSB0b2tlbnMgYW5kIHBhdHRlcm5zIG9mIHRoZSBwcmV2aW91cyBsaW5lCiAgICAjIGludG8gdGhlIGVsc2UgbGluZSB0byBpbnN1cmUgYSBtYXRjaC4gIEFkZCBlbXB0eSBmaWVsZHMKICAgICMgYXMgbmVjZXNzYXJ5LgogICAgbXkgJGphZGQgPSAkanF1ZXN0aW9uOwoKICAgICMgV29yayBvbiBjb3BpZXMgb2YgdGhlIGFjdHVhbCBhcnJheXMgaW4gY2FzZSB3ZSBoYXZlCiAgICAjIHRvIHJldHVybiBkdWUgdG8gYW4gZXJyb3IKICAgIG15IEBmaWVsZHMgICA9IEB7JHJmaWVsZHN9OwogICAgbXkgQHBhdHRlcm5zID0gQHskcnBhdHRlcm5zfTsKICAgIG15IEB0b2tlbnMgICA9IEB7JHJ0b2tlbnN9OwoKICAgIFZBTElHTl9ERUJVR19GTEFHX1RFUk5BUlkgJiYgZG8gewogICAgICAgIGxvY2FsICQiID0gJz48JzsKICAgICAgICBwcmludCBTVERPVVQgIkNVUlJFTlQgRklFTERTPTxAeyRyZmllbGRzX29sZH0+XG4iOwogICAgICAgIHByaW50IFNURE9VVCAiQ1VSUkVOVCBUT0tFTlM9PEB7JHJ0b2tlbnNfb2xkfT5cbiI7CiAgICAgICAgcHJpbnQgU1RET1VUICJDVVJSRU5UIFBBVFRFUk5TPTxAeyRycGF0dGVybnNfb2xkfT5cbiI7CiAgICAgICAgcHJpbnQgU1RET1VUICJVTk1PRElGSUVEIEZJRUxEUz08QHskcmZpZWxkc30+XG4iOwogICAgICAgIHByaW50IFNURE9VVCAiVU5NT0RJRklFRCBUT0tFTlM9PEB7JHJ0b2tlbnN9PlxuIjsKICAgICAgICBwcmludCBTVERPVVQgIlVOTU9ESUZJRUQgUEFUVEVSTlM9PEB7JHJwYXR0ZXJuc30+XG4iOwogICAgfTsKCiAgICAjIGhhbmRsZSBjYXNlcyBvZiBsZWFkaW5nIGNvbG9uIG9uIHRoaXMgbGluZQogICAgaWYgKCAkZmllbGRzWzBdID1+IC9eKDpccyopKC4qKSQvICkgewoKICAgICAgICBteSAoICRjb2xvbiwgJHRoZXJlc3QgKSA9ICggJDEsICQyICk7CgogICAgICAgICMgSGFuZGxlIHN1Yi1jYXNlIG9mIGZpcnN0IGZpZWxkIHdpdGggbGVhZGluZyBjb2xvbiBwbHVzIGFkZGl0aW9uYWwgY29kZQogICAgICAgICMgVGhpcyBpcyB0aGUgdXN1YWwgc2l0dWF0aW9uIGFzIGF0IHRoZSAnMScgYmVsb3c6CiAgICAgICAgIyAgLi4uCiAgICAgICAgIyAgOiAkeWVhciAlIDQwMCA/IDAKICAgICAgICAjICA6ICAgICAgICAgICAgICAgMTsKICAgICAgICBpZiAoJHRoZXJlc3QpIHsKCiAgICAgICAgICAgICMgU3BsaXQgdGhlIGZpcnN0IGZpZWxkIGFmdGVyIHRoZSBsZWFkaW5nIGNvbG9uIGFuZCBpbnNlcnQgcGFkZGluZy4KICAgICAgICAgICAgIyBOb3RlIHRoYXQgdGhpcyBwYWRkaW5nIHdpbGwgcmVtYWluIGV2ZW4gaWYgdGhlIHRlcm1pbmFsIHZhbHVlIGdvZXMKICAgICAgICAgICAgIyBvdXQgb24gYSBzZXBhcmF0ZSBsaW5lLiAgVGhpcyBkb2VzIG5vdCBzZWVtIHRvIGxvb2sgdG8gYmFkLCBzbyBubwogICAgICAgICAgICAjIG1lY2hhbmlzbSBoYXMgYmVlbiBpbmNsdWRlZCB0byB1bmRvIGl0LgogICAgICAgICAgICBteSAkZmllbGQxID0gc2hpZnQgQGZpZWxkczsKICAgICAgICAgICAgdW5zaGlmdCBAZmllbGRzLCAoICRjb2xvbiwgJHBhZCAuICR0aGVyZXN0ICk7CgogICAgICAgICAgICAjIGNoYW5nZSB0aGUgbGVhZGluZyBwYXR0ZXJuIGZyb20gOiB0byA/CiAgICAgICAgICAgIHJldHVybiB1bmxlc3MgKCAkcGF0dGVybnNbMF0gPX4gcy9eXDovPy8gKTsKCiAgICAgICAgICAgICMgaW5zdGFsbCBsZWFkaW5nIHRva2VucyBhbmQgcGF0dGVybnMgb2YgZXhpc3RpbmcgbGluZQogICAgICAgICAgICB1bnNoaWZ0KCBAdG9rZW5zLCAgIEB7JHJ0b2tlbnNfb2xkfVsgMCAuLiAkanF1ZXN0aW9uIF0gKTsKICAgICAgICAgICAgdW5zaGlmdCggQHBhdHRlcm5zLCBAeyRycGF0dGVybnNfb2xkfVsgMCAuLiAkanF1ZXN0aW9uIF0gKTsKCiAgICAgICAgICAgICMgaW5zZXJ0IGFwcHJvcHJpYXRlIG51bWJlciBvZiBlbXB0eSBmaWVsZHMKICAgICAgICAgICAgc3BsaWNlKCBAZmllbGRzLCAxLCAwLCAoJycpIHggJGphZGQgKSBpZiAkamFkZDsKICAgICAgICB9CgogICAgICAgICMgaGFuZGxlIHN1Yi1jYXNlIG9mIGZpcnN0IGZpZWxkIGp1c3QgZXF1YWwgdG8gbGVhZGluZyBjb2xvbi4KICAgICAgICAjIFRoaXMgY2FuIGhhcHBlbiBmb3IgZXhhbXBsZSBpbiB0aGUgZXhhbXBsZSBiZWxvdyB3aGVyZQogICAgICAgICMgdGhlIGxlYWRpbmcgJygnIHdvdWxkIGNyZWF0ZSBhIG5ldyBhbGlnbm1lbnQgdG9rZW4KICAgICAgICAjIDogKCAkbmFtZSA9fiAvW119XSQvICkgPyAoICRtbmFtZSA9ICRuYW1lICkKICAgICAgICAjIDogICAgICAgICAgICAgICAgICAgICAgICAoICRtbmFtZSA9ICRuYW1lIC4gJy0+JyApOwogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgcmV0dXJuIHVubGVzcyAoICRqbWF4ID4gMCAmJiAkdG9rZW5zWzBdIG5lICcjJyApOyAjIHNob3VsZG4ndCBoYXBwZW4KCiAgICAgICAgICAgICMgcHJlcGVuZCBhIGxlYWRpbmcgPyBvbnRvIHRoZSBzZWNvbmQgcGF0dGVybgogICAgICAgICAgICAkcGF0dGVybnNbMV0gPSAiP2IiIC4gJHBhdHRlcm5zWzFdOwoKICAgICAgICAgICAgIyBwYWQgdGhlIHNlY29uZCBmaWVsZAogICAgICAgICAgICAkZmllbGRzWzFdID0gJHBhZCAuICRmaWVsZHNbMV07CgogICAgICAgICAgICAjIGluc3RhbGwgbGVhZGluZyB0b2tlbnMgYW5kIHBhdHRlcm5zIG9mIGV4aXN0aW5nIGxpbmUsIHJlcGxhY2luZwogICAgICAgICAgICAjIGxlYWRpbmcgdG9rZW4gYW5kIGluc2VydGluZyBhcHByb3ByaWF0ZSBudW1iZXIgb2YgZW1wdHkgZmllbGRzCiAgICAgICAgICAgIHNwbGljZSggQHRva2VucywgICAwLCAxLCBAeyRydG9rZW5zX29sZH1bIDAgLi4gJGpxdWVzdGlvbiBdICk7CiAgICAgICAgICAgIHNwbGljZSggQHBhdHRlcm5zLCAxLCAwLCBAeyRycGF0dGVybnNfb2xkfVsgMSAuLiAkanF1ZXN0aW9uIF0gKTsKICAgICAgICAgICAgc3BsaWNlKCBAZmllbGRzLCAxLCAwLCAoJycpIHggJGphZGQgKSBpZiAkamFkZDsKICAgICAgICB9CiAgICB9CgogICAgIyBIYW5kbGUgY2FzZSBvZiBubyBsZWFkaW5nIGNvbG9uIG9uIHRoaXMgbGluZS4gIFRoaXMgd2lsbAogICAgIyBiZSB0aGUgY2FzZSB3aGVuIC13YmE9JzonIGlzIHVzZWQuICBGb3IgZXhhbXBsZSwKICAgICMgICR5ZWFyICUgNDAwID8gMCA6CiAgICAjICAgICAgICAgICAgICAgIDE7CiAgICBlbHNlIHsKCiAgICAgICAgIyBpbnN0YWxsIGxlYWRpbmcgdG9rZW5zIGFuZCBwYXR0ZXJucyBvZiBleGlzdGluZyBsaW5lCiAgICAgICAgJHBhdHRlcm5zWzBdID0gJz8nIC4gJ2InIC4gJHBhdHRlcm5zWzBdOwogICAgICAgIHVuc2hpZnQoIEB0b2tlbnMsICAgQHskcnRva2Vuc19vbGR9WyAwIC4uICRqcXVlc3Rpb24gXSApOwogICAgICAgIHVuc2hpZnQoIEBwYXR0ZXJucywgQHskcnBhdHRlcm5zX29sZH1bIDAgLi4gJGpxdWVzdGlvbiBdICk7CgogICAgICAgICMgaW5zZXJ0IGFwcHJvcHJpYXRlIG51bWJlciBvZiBlbXB0eSBmaWVsZHMKICAgICAgICAkamFkZCA9ICRqcXVlc3Rpb24gKyAxOwogICAgICAgICRmaWVsZHNbMF0gPSAkcGFkIC4gJGZpZWxkc1swXTsKICAgICAgICBzcGxpY2UoIEBmaWVsZHMsIDAsIDAsICgnJykgeCAkamFkZCApIGlmICRqYWRkOwogICAgfQoKICAgIFZBTElHTl9ERUJVR19GTEFHX1RFUk5BUlkgJiYgZG8gewogICAgICAgIGxvY2FsICQiID0gJz48JzsKICAgICAgICBwcmludCBTVERPVVQgIk1PRElGSUVEIFRPS0VOUz08QHRva2Vucz5cbiI7CiAgICAgICAgcHJpbnQgU1RET1VUICJNT0RJRklFRCBQQVRURVJOUz08QHBhdHRlcm5zPlxuIjsKICAgICAgICBwcmludCBTVERPVVQgIk1PRElGSUVEIEZJRUxEUz08QGZpZWxkcz5cbiI7CiAgICB9OwoKICAgICMgYWxsIG9rIC4uIHVwZGF0ZSB0aGUgYXJyYXlzCiAgICBAeyRyZmllbGRzfSAgID0gQGZpZWxkczsKICAgIEB7JHJ0b2tlbnN9ICAgPSBAdG9rZW5zOwogICAgQHskcnBhdHRlcm5zfSA9IEBwYXR0ZXJuczsKIyMgRlVUVVJFIENPRElORwojIyAgICAgJGVuZF9saW5lLT5zZXRfcmZpZWxkcyggXEBmaWVsZHMgKTsKIyMgICAgICRlbmRfbGluZS0+c2V0X3J0b2tlbnMoIFxAdG9rZW5zICk7CiMjICAgICAkZW5kX2xpbmUtPnNldF9ycGF0dGVybnMoIFxAcGF0dGVybnMgKTsKCiAgICAjIGZvcmNlIGEgZmx1c2ggYWZ0ZXIgdGhpcyBsaW5lCiAgICByZXR1cm4gJGpxdWVzdGlvbjsKfQoKc3ViIGZpeF90ZXJtaW5hbF9lbHNlIHsKCiAgICAjIEFkZCBlbXB0eSBmaWVsZHMgYXMgbmVjZXNzYXJ5IHRvIGFsaWduIGEgYmFsYW5jZWQgdGVybWluYWwKICAgICMgZWxzZSBibG9jayB0byBhIHByZXZpb3VzIGlmL2Vsc2lmL3VubGVzcyBibG9jaywKICAgICMgbGlrZSB0aGlzOgogICAgIwogICAgIyAgaWYgICAoIDEgfHwgJHggKSB7IHByaW50ICJvayAxM1xuIjsgfQogICAgIyAgZWxzZSAgICAgICAgICAgICB7IHByaW50ICJub3Qgb2sgMTNcbiI7IH0KICAgICMKICAgICMgcmV0dXJucyBhIHBvc2l0aXZlIHZhbHVlIGlmIHRoZSBlbHNlIGJsb2NrIHNob3VsZCBiZSBpbmRlbnRlZAogICAgIwogICAgbXkgKCAkb2xkX2xpbmUsICRyZmllbGRzLCAkcnRva2VucywgJHJwYXR0ZXJucyApID0gQF87CiAgICByZXR1cm4gdW5sZXNzICgkb2xkX2xpbmUpOwogICAgbXkgJGptYXggPSBAeyRyZmllbGRzfSAtIDE7CiAgICByZXR1cm4gdW5sZXNzICggJGptYXggPiAwICk7CgogICAgI215ICRvbGRfbGluZSAgICA9ICRncm91cF9saW5lc1stMV07CgogICAgIyBjaGVjayBmb3IgYmFsYW5jZWQgZWxzZSBibG9jayBmb2xsb3dpbmcgaWYvZWxzaWYvdW5sZXNzCiAgICBteSAkcmZpZWxkc19vbGQgPSAkb2xkX2xpbmUtPmdldF9yZmllbGRzKCk7CgogICAgIyBUQkQ6IGFkZCBoYW5kbGluZyBmb3IgJ2Nhc2UnCiAgICByZXR1cm4gdW5sZXNzICggJHJmaWVsZHNfb2xkLT5bMF0gPX4gL14oaWZ8ZWxzaWZ8dW5sZXNzKVxzKiQvICk7CgogICAgIyBsb29rIGZvciB0aGUgb3BlbmluZyBicmFjZSBhZnRlciB0aGUgZWxzZSwgYW5kIGV4dHJhY3QgdGhlIGRlcHRoCiAgICBteSAkdG9rX2JyYWNlID0gJHJ0b2tlbnMtPlswXTsKICAgIG15ICRkZXB0aF9icmFjZTsKICAgIGlmICggJHRva19icmFjZSA9fiAvXlx7KFxkKykvICkgeyAkZGVwdGhfYnJhY2UgPSAkMTsgfQoKICAgICMgcHJvYmFibHk6ICAiZWxzZSAjIHNpZGVfY29tbWVudCIKICAgIGVsc2UgeyByZXR1cm4gfQoKICAgIG15ICRycGF0dGVybnNfb2xkICAgICAgID0gJG9sZF9saW5lLT5nZXRfcnBhdHRlcm5zKCk7CiAgICBteSAkcnRva2Vuc19vbGQgICAgICAgICA9ICRvbGRfbGluZS0+Z2V0X3J0b2tlbnMoKTsKICAgIG15ICRtYXhpbXVtX2ZpZWxkX2luZGV4ID0gJG9sZF9saW5lLT5nZXRfam1heCgpOwoKICAgICMgYmUgc3VyZSB0aGUgcHJldmlvdXMgaWYvZWxzaWYgaXMgZm9sbG93ZWQgYnkgYW4gb3BlbmluZyBwYXJlbgogICAgbXkgJGpwYXJlbiAgICA9IDA7CiAgICBteSAkdG9rX3BhcmVuID0gJygnIC4gJGRlcHRoX2JyYWNlOwogICAgbXkgJHRva190ZXN0ICA9ICRydG9rZW5zX29sZC0+WyRqcGFyZW5dOwogICAgcmV0dXJuIHVubGVzcyAoICR0b2tfdGVzdCBlcSAkdG9rX3BhcmVuICk7ICAgICMgc2hvdWxkbid0IGhhcHBlbgoKICAgICMgTm93IGZpbmQgdGhlIG9wZW5pbmcgYmxvY2sgYnJhY2UKICAgIG15ICgkamJyYWNlKTsKICAgIGZvcmVhY2ggbXkgJGogKCAxIC4uICRtYXhpbXVtX2ZpZWxkX2luZGV4IC0gMSApIHsKICAgICAgICBteSAkdG9rID0gJHJ0b2tlbnNfb2xkLT5bJGpdOwogICAgICAgIGlmICggJHRvayBlcSAkdG9rX2JyYWNlICkgewogICAgICAgICAgICAkamJyYWNlID0gJGo7CiAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIHVubGVzcyAoIGRlZmluZWQoJGpicmFjZSkgKTsgICAgICAgICAgICMgc2hvdWxkbid0IGhhcHBlbgoKICAgICMgTm93IHNwbGljZSB0aGUgdG9rZW5zIGFuZCBwYXR0ZXJucyBvZiB0aGUgcHJldmlvdXMgbGluZQogICAgIyBpbnRvIHRoZSBlbHNlIGxpbmUgdG8gaW5zdXJlIGEgbWF0Y2guICBBZGQgZW1wdHkgZmllbGRzCiAgICAjIGFzIG5lY2Vzc2FyeS4KICAgIG15ICRqYWRkID0gJGpicmFjZSAtICRqcGFyZW47CiAgICBzcGxpY2UoIEB7JHJ0b2tlbnN9LCAgIDAsIDAsIEB7JHJ0b2tlbnNfb2xkfVsgJGpwYXJlbiAuLiAkamJyYWNlIC0gMSBdICk7CiAgICBzcGxpY2UoIEB7JHJwYXR0ZXJuc30sIDEsIDAsIEB7JHJwYXR0ZXJuc19vbGR9WyAkanBhcmVuICsgMSAuLiAkamJyYWNlIF0gKTsKICAgIHNwbGljZSggQHskcmZpZWxkc30sIDEsIDAsICgnJykgeCAkamFkZCApOwoKICAgICMgZm9yY2UgYSBmbHVzaCBhZnRlciB0aGlzIGxpbmUgaWYgaXQgZG9lcyBub3QgZm9sbG93IGEgY2FzZQogICAgaWYgICAoICRyZmllbGRzX29sZC0+WzBdID1+IC9eY2FzZVxzKiQvICkgeyByZXR1cm4gfQogICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gJGpicmFjZSB9Cn0KCnsgICAgIyBzdWIgY2hlY2tfbWF0Y2gKICAgIG15ICVpc19nb29kX2FsaWdubWVudDsKCiAgICBCRUdJTiB7CgogICAgICAgICMgVmVydGljYWxseSBhbGlnbmluZyBvbiBjZXJ0YWluICJnb29kIiB0b2tlbnMgaXMgdXN1YWxseSBva2F5CiAgICAgICAgIyBzbyB3ZSBjYW4gYmUgbGVzcyByZXN0cmljdGl2ZSBpbiBtYXJnaW5hbCBjYXNlcy4KICAgICAgICBteSBAcSA9IHF3KCB7ID8gPT4gPSApOwogICAgICAgIHB1c2ggQHEsICgnLCcpOwogICAgICAgIEBpc19nb29kX2FsaWdubWVudHtAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwogICAgfQoKICAgIHN1YiBjaGVja19tYXRjaCB7CgogICAgICAgICMgU2VlIGlmIHRoZSBjdXJyZW50IGxpbmUgbWF0Y2hlcyB0aGUgY3VycmVudCB2ZXJ0aWNhbCBhbGlnbm1lbnQgZ3JvdXAuCiAgICAgICAgIyBJZiBub3QsIGZsdXNoIHRoZSBjdXJyZW50IGdyb3VwLgogICAgICAgIG15ICggJG5ld19saW5lLCAkb2xkX2xpbmUgKSA9IEBfOwoKICAgICAgICAjIHVzZXMgZ2xvYmFsIHZhcmlhYmxlczoKICAgICAgICAjICAkcHJldmlvdXNfbWluaW11bV9qbWF4X3NlZW4KICAgICAgICAjICAkbWF4aW11bV9qbWF4X3NlZW4KICAgICAgICAjICAkbWFyZ2luYWxfbWF0Y2gKICAgICAgICBteSAkam1heCAgICAgICAgICAgICAgICA9ICRuZXdfbGluZS0+Z2V0X2ptYXgoKTsKICAgICAgICBteSAkbWF4aW11bV9maWVsZF9pbmRleCA9ICRvbGRfbGluZS0+Z2V0X2ptYXgoKTsKCiAgICAgICAgIyBmbHVzaCBpZiB0aGlzIGxpbmUgaGFzIHRvbyBtYW55IGZpZWxkcwogICAgICAgICMgdmFyaWFibGUgJEdvVG9Mb2MgaW5kaWNhdGVzIGdvdG8gYnJhbmNoIHBvaW50LCBmb3IgZGVidWdnaW5nCiAgICAgICAgbXkgJEdvVG9Mb2MgPSAxOwogICAgICAgIGlmICggJGptYXggPiAkbWF4aW11bV9maWVsZF9pbmRleCApIHsgZ290byBOT19NQVRDSCB9CgogICAgICAgICMgZmx1c2ggaWYgYWRkaW5nIHRoaXMgbGluZSB3b3VsZCBtYWtlIGEgbm9uLW1vbm90b25pYyBmaWVsZCBjb3VudAogICAgICAgIGlmICgKICAgICAgICAgICAgKCAkbWF4aW11bV9maWVsZF9pbmRleCA+ICRqbWF4ICkgICAgIyB0aGlzIGhhcyB0b28gZmV3IGZpZWxkcwogICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAoICRwcmV2aW91c19taW5pbXVtX2ptYXhfc2VlbiA8CiAgICAgICAgICAgICAgICAgICAgJGptYXggKSAgICAgICAgICAgICAgICAgICAgICMgYW5kIHdvdWxkbid0IGJlIG1vbm90b25pYwogICAgICAgICAgICAgICAgfHwgKCAkb2xkX2xpbmUtPmdldF9qbWF4X29yaWdpbmFsX2xpbmUoKSAhPSAkbWF4aW11bV9qbWF4X3NlZW4gKQogICAgICAgICAgICApCiAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkR29Ub0xvYyA9IDI7CiAgICAgICAgICAgIGdvdG8gTk9fTUFUQ0g7CiAgICAgICAgfQoKICAgICAgICAjIG90aGVyd2lzZSBzZWUgaWYgdGhpcyBsaW5lIG1hdGNoZXMgdGhlIGN1cnJlbnQgZ3JvdXAKICAgICAgICBteSAkam1heF9vcmlnaW5hbF9saW5lICAgICAgPSAkbmV3X2xpbmUtPmdldF9qbWF4X29yaWdpbmFsX2xpbmUoKTsKICAgICAgICBteSAkaXNfaGFuZ2luZ19zaWRlX2NvbW1lbnQgPSAkbmV3X2xpbmUtPmdldF9pc19oYW5naW5nX3NpZGVfY29tbWVudCgpOwogICAgICAgIG15ICRydG9rZW5zICAgICAgICAgICAgICAgICA9ICRuZXdfbGluZS0+Z2V0X3J0b2tlbnMoKTsKICAgICAgICBteSAkcmZpZWxkcyAgICAgICAgICAgICAgICAgPSAkbmV3X2xpbmUtPmdldF9yZmllbGRzKCk7CiAgICAgICAgbXkgJHJwYXR0ZXJucyAgICAgICAgICAgICAgID0gJG5ld19saW5lLT5nZXRfcnBhdHRlcm5zKCk7CiAgICAgICAgbXkgJGxpc3RfdHlwZSAgICAgICAgICAgICAgID0gJG5ld19saW5lLT5nZXRfbGlzdF90eXBlKCk7CgogICAgICAgIG15ICRncm91cF9saXN0X3R5cGUgPSAkb2xkX2xpbmUtPmdldF9saXN0X3R5cGUoKTsKICAgICAgICBteSAkb2xkX3JwYXR0ZXJucyAgID0gJG9sZF9saW5lLT5nZXRfcnBhdHRlcm5zKCk7CiAgICAgICAgbXkgJG9sZF9ydG9rZW5zICAgICA9ICRvbGRfbGluZS0+Z2V0X3J0b2tlbnMoKTsKCiAgICAgICAgbXkgJGpsaW1pdCA9ICRqbWF4IC0gMTsKICAgICAgICBpZiAoICRtYXhpbXVtX2ZpZWxkX2luZGV4ID4gJGptYXggKSB7CiAgICAgICAgICAgICRqbGltaXQgPSAkam1heF9vcmlnaW5hbF9saW5lOwogICAgICAgICAgICAtLSRqbGltaXQgdW5sZXNzICggbGVuZ3RoKCAkbmV3X2xpbmUtPmdldF9yZmllbGRzKCktPlskam1heF0gKSApOwogICAgICAgIH0KCiAgICAgICAgIyBoYW5kbGUgY29tbWEtc2VwYXJhdGVkIGxpc3RzIC4uCiAgICAgICAgaWYgKCAkZ3JvdXBfbGlzdF90eXBlICYmICggJGxpc3RfdHlwZSBlcSAkZ3JvdXBfbGlzdF90eXBlICkgKSB7CiAgICAgICAgICAgIGZvciBteSAkaiAoIDAgLi4gJGpsaW1pdCApIHsKICAgICAgICAgICAgICAgIG15ICRvbGRfdG9rID0gJG9sZF9ydG9rZW5zLT5bJGpdOwogICAgICAgICAgICAgICAgbmV4dCB1bmxlc3MgJG9sZF90b2s7CiAgICAgICAgICAgICAgICBteSAkbmV3X3RvayA9ICRydG9rZW5zLT5bJGpdOwogICAgICAgICAgICAgICAgbmV4dCB1bmxlc3MgJG5ld190b2s7CgogICAgICAgICAgICAgICAgIyBsaXN0cyBhbHdheXMgbWF0Y2ggLi4uCiAgICAgICAgICAgICAgICAjIHVubGVzcyB0aGV5IHdvdWxkIGFsaWduIGFueSAnPT4ncyB3aXRoICcsJ3MKICAgICAgICAgICAgICAgICRHb1RvTG9jID0gMzsKICAgICAgICAgICAgICAgIGdvdG8gTk9fTUFUQ0gKICAgICAgICAgICAgICAgICAgaWYgKCAkb2xkX3RvayA9fiAvXj0+LyAmJiAkbmV3X3RvayA9fiAvXiwvCiAgICAgICAgICAgICAgICAgICAgfHwgJG5ld190b2sgPX4gL149Pi8gJiYgJG9sZF90b2sgPX4gL14sLyApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGRvIGRldGFpbGVkIGNoZWNrIGZvciBldmVyeXRoaW5nIGVsc2UgZXhjZXB0IGhhbmdpbmcgc2lkZSBjb21tZW50cwogICAgICAgIGVsc2lmICggISRpc19oYW5naW5nX3NpZGVfY29tbWVudCApIHsKCiAgICAgICAgICAgIG15ICRsZWFkaW5nX3NwYWNlX2NvdW50ID0gJG5ld19saW5lLT5nZXRfbGVhZGluZ19zcGFjZV9jb3VudCgpOwoKICAgICAgICAgICAgbXkgJG1heF9wYWQgPSAwOwogICAgICAgICAgICBteSAkbWluX3BhZCA9IDA7CiAgICAgICAgICAgIG15ICRzYXdfZ29vZF9hbGlnbm1lbnQ7CgogICAgICAgICAgICBmb3IgbXkgJGogKCAwIC4uICRqbGltaXQgKSB7CgogICAgICAgICAgICAgICAgbXkgJG9sZF90b2sgPSAkb2xkX3J0b2tlbnMtPlskal07CiAgICAgICAgICAgICAgICBteSAkbmV3X3RvayA9ICRydG9rZW5zLT5bJGpdOwoKICAgICAgICAgICAgICAgICMgTm90ZSBvbiBlbmNvZGluZyB1c2VkIGZvciBhbGlnbm1lbnQgdG9rZW5zOgogICAgICAgICAgICAgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICAgICAjIFRva2VucyBhcmUgImRlY29yYXRlZCIgd2l0aCBpbmZvcm1hdGlvbiB3aGljaCBjYW4gaGVscAogICAgICAgICAgICAgICAgIyBwcmV2ZW50IHVud2FudGVkIGFsaWdubWVudHMuICBDb25zaWRlciBmb3IgZXhhbXBsZSB0aGUKICAgICAgICAgICAgICAgICMgZm9sbG93aW5nIHR3byBsaW5lczoKICAgICAgICAgICAgICAgICMgICBsb2NhbCAoICR4biwgJHhkICkgPSBzcGxpdCggJy8nLCAmJ3Jub3JtKEBfKSApOwogICAgICAgICAgICAgICAgIyAgIGxvY2FsICggJGksICRmICkgPSAmJ2JkaXYoICR4biwgJHhkICk7CiAgICAgICAgICAgICAgICAjIFRoZXJlIGFyZSB0aHJlZSBhbGlnbm1lbnQgdG9rZW5zIGluIGVhY2ggbGluZSwgYSBjb21tYSwKICAgICAgICAgICAgICAgICMgYW4gPSwgYW5kIGEgY29tbWEuICBJbiB0aGUgZmlyc3QgbGluZSB0aGVzZSB0aHJlZSB0b2tlbnMKICAgICAgICAgICAgICAgICMgYXJlIGVuY29kZWQgYXM6CiAgICAgICAgICAgICAgICAjICAgICw0K2xvY2FsLTE4ICAgICA9MyAgICAgICw0K3NwbGl0LTcKICAgICAgICAgICAgICAgICMgYW5kIGluIHRoZSBzZWNvbmQgbGluZSB0aGV5IGFyZSBlbmNvZGVkIGFzCiAgICAgICAgICAgICAgICAjICAgICw0K2xvY2FsLTE4ICAgICA9MyAgICAgICw0KyYnYmRpdi04CiAgICAgICAgICAgICAgICAjIFRva2VucyBhbHdheXMgYXQgbGVhc3QgaGF2ZSB0b2tlbiBuYW1lIGFuZCBuZXN0aW5nCiAgICAgICAgICAgICAgICAjIGRlcHRoLiAgU28gaW4gdGhpcyBleGFtcGxlIHRoZSA9J3MgYXJlIGF0IGRlcHRoIDMgYW5kCiAgICAgICAgICAgICAgICAjIHRoZSAsJ3MgYXJlIGF0IGRlcHRoIDQuICBUaGlzIHByZXZlbnRzIGFsaWduaW5nIHRva2VucwogICAgICAgICAgICAgICAgIyBvZiBkaWZmZXJlbnQgZGVwdGhzLiAgQ29tbWFzIGNvbnRhaW4gYWRkaXRpb25hbAogICAgICAgICAgICAgICAgIyBpbmZvcm1hdGlvbiwgYXMgZm9sbG93czoKICAgICAgICAgICAgICAgICMgLCAge2RlcHRofSArIHtjb250YWluZXIgbmFtZX0gLSB7c3BhY2VzIHRvIG9wZW5pbmcgcGFyZW59CiAgICAgICAgICAgICAgICAjIFRoaXMgYWxsb3dzIHVzIHRvIHJlamVjdCBtYXRjaGluZyB0aGUgcmlnaHRtb3N0IGNvbW1hcwogICAgICAgICAgICAgICAgIyBpbiB0aGUgYWJvdmUgdHdvIGxpbmVzLCBzaW5jZSB0aGV5IGFyZSBmb3IgZGlmZmVyZW50CiAgICAgICAgICAgICAgICAjIGZ1bmN0aW9uIGNhbGxzLiAgVGhpcyBlbmNvZGluZyBpcyBkb25lIGluCiAgICAgICAgICAgICAgICAjICdzdWIgc2VuZF9saW5lc190b192ZXJ0aWNhbF9hbGlnbmVyJy4KCiAgICAgICAgICAgICAgICAjIFBpY2sgb2ZmIGFjdHVhbCB0b2tlbi4KICAgICAgICAgICAgICAgICMgRXZlcnl0aGluZyB1cCB0byB0aGUgZmlyc3QgZGlnaXQgaXMgdGhlIGFjdHVhbCB0b2tlbi4KICAgICAgICAgICAgICAgIG15ICRhbGlnbm1lbnRfdG9rZW4gPSAkbmV3X3RvazsKICAgICAgICAgICAgICAgIGlmICggJGFsaWdubWVudF90b2tlbiA9fiAvXihbXlxkXSspLyApIHsgJGFsaWdubWVudF90b2tlbiA9ICQxIH0KCiAgICAgICAgICAgICAgICAjIHNlZSBpZiB0aGUgZGVjb3JhdGVkIHRva2VucyBtYXRjaAogICAgICAgICAgICAgICAgbXkgJHRva2Vuc19tYXRjaCA9ICRuZXdfdG9rIGVxICRvbGRfdG9rCgogICAgICAgICAgICAgICAgICAjIEV4Y2VwdGlvbiBmb3IgbWF0Y2hpbmcgdGVybWluYWwgOiBvZiB0ZXJuYXJ5IHN0YXRlbWVudC4uCiAgICAgICAgICAgICAgICAgICMgY29uc2lkZXIgY29udGFpbmVycyBwcmVmaXhlZCBieSA/IGFuZCA6IGEgbWF0Y2gKICAgICAgICAgICAgICAgICAgfHwgKCAkbmV3X3RvayA9fiAvXixcZCpcK1w6LyAmJiAkb2xkX3RvayA9fiAvXixcZCpcK1w/LyApOwoKICAgICAgICAgICAgICAgICMgTm8gbWF0Y2ggaWYgdGhlIGFsaWdubWVudCB0b2tlbnMgZGlmZmVyLi4uCiAgICAgICAgICAgICAgICBpZiAoICEkdG9rZW5zX21hdGNoICkgewoKICAgICAgICAgICAgICAgICAgICAjIC4uLlVubGVzcyB0aGlzIGlzIGEgc2lkZSBjb21tZW50CiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAkaiA9PSAkamxpbWl0CgogICAgICAgICAgICAgICAgICAgICAgICAjIGFuZCB0aGVyZSBpcyBlaXRoZXIgYXQgbGVhc3Qgb25lIGFsaWdubWVudCB0b2tlbgogICAgICAgICAgICAgICAgICAgICAgICAjIG9yIHRoaXMgaXMgYSBzaW5nbGUgaXRlbSBmb2xsb3dpbmcgYSBsaXN0LiAgVGhpcwogICAgICAgICAgICAgICAgICAgICAgICAjIGxhdHRlciBydWxlIGlzIHJlcXVpcmVkIGZvciAnRGVjZW1iZXInIHRvIGpvaW4KICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgZm9sbG93aW5nIGxpc3Q6CiAgICAgICAgICAgICAgICAgICAgICAgICMgbXkgKEBtb250aHMpID0gKAogICAgICAgICAgICAgICAgICAgICAgICAjICAgICAnJywgICAgICAgJ0phbnVhcnknLCAgICdGZWJydWFyeScsICdNYXJjaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICMgICAgICdBcHJpbCcsICAnTWF5JywgICAgICAgJ0p1bmUnLCAgICAgJ0p1bHknLAogICAgICAgICAgICAgICAgICAgICAgICAjICAgICAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdPY3RvYmVyJywgICdOb3ZlbWJlcicsCiAgICAgICAgICAgICAgICAgICAgICAgICMgICAgICdEZWNlbWJlcicKICAgICAgICAgICAgICAgICAgICAgICAgIyApOwogICAgICAgICAgICAgICAgICAgICAgICAjIElmIGl0IGRvZXNuJ3QgdGhlbiB0aGUgLWxwIGZvcm1hdHRpbmcgd2lsbCBmYWlsLgogICAgICAgICAgICAgICAgICAgICAgICAmJiAoICRqID4gMCB8fCAkb2xkX3RvayA9fiAvXiwvICkKICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRtYXJnaW5hbF9tYXRjaCA9IDEKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRtYXJnaW5hbF9tYXRjaCA9PSAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBAZ3JvdXBfbGluZXMgPT0gMSApOwogICAgICAgICAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJEdvVG9Mb2MgPSA0OwogICAgICAgICAgICAgICAgICAgIGdvdG8gTk9fTUFUQ0g7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBDYWxjdWxhdGUgYW1vdW50IG9mIHBhZGRpbmcgcmVxdWlyZWQgdG8gZml0IHRoaXMgaW4uCiAgICAgICAgICAgICAgICAjICRwYWQgaXMgdGhlIG51bWJlciBvZiBzcGFjZXMgYnkgd2hpY2ggd2UgbXVzdCBpbmNyZWFzZQogICAgICAgICAgICAgICAgIyB0aGUgY3VycmVudCBmaWVsZCB0byBzcXVlZXplIGluIHRoaXMgZmllbGQuCiAgICAgICAgICAgICAgICBteSAkcGFkID0KICAgICAgICAgICAgICAgICAgbGVuZ3RoKCAkcmZpZWxkcy0+WyRqXSApIC0gJG9sZF9saW5lLT5jdXJyZW50X2ZpZWxkX3dpZHRoKCRqKTsKICAgICAgICAgICAgICAgIGlmICggJGogPT0gMCApIHsgJHBhZCArPSAkbGVhZGluZ19zcGFjZV9jb3VudDsgfQoKICAgICAgICAgICAgICAgICMgcmVtZW1iZXIgbWF4IHBhZHMgdG8gbGltaXQgbWFyZ2luYWwgY2FzZXMKICAgICAgICAgICAgICAgIGlmICggJGFsaWdubWVudF90b2tlbiBuZSAnIycgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkcGFkID4gJG1heF9wYWQgKSB7ICRtYXhfcGFkID0gJHBhZCB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkcGFkIDwgJG1pbl9wYWQgKSB7ICRtaW5fcGFkID0gJHBhZCB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoICRpc19nb29kX2FsaWdubWVudHskYWxpZ25tZW50X3Rva2VufSApIHsKICAgICAgICAgICAgICAgICAgICAkc2F3X2dvb2RfYWxpZ25tZW50ID0gMTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIElmIHBhdHRlcm5zIGRvbid0IG1hdGNoLCB3ZSBoYXZlIHRvIGJlIGNhcmVmdWwuLi4KICAgICAgICAgICAgICAgIGlmICggJG9sZF9ycGF0dGVybnMtPlskal0gbmUgJHJwYXR0ZXJucy0+WyRqXSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBmbGFnIHRoaXMgYXMgYSBtYXJnaW5hbCBtYXRjaCBzaW5jZSBwYXR0ZXJucyBkaWZmZXIKICAgICAgICAgICAgICAgICAgICAkbWFyZ2luYWxfbWF0Y2ggPSAxCiAgICAgICAgICAgICAgICAgICAgICBpZiAoICRtYXJnaW5hbF9tYXRjaCA9PSAwICYmIEBncm91cF9saW5lcyA9PSAxICk7CgogICAgICAgICAgICAgICAgICAgICMgV2UgaGF2ZSB0byBiZSB2ZXJ5IGNhcmVmdWwgYWJvdXQgYWxpZ25pbmcgY29tbWFzCiAgICAgICAgICAgICAgICAgICAgIyB3aGVuIHRoZSBwYXR0ZXJuJ3MgZG9uJ3QgbWF0Y2gsIGJlY2F1c2UgaXQgY2FuIGJlCiAgICAgICAgICAgICAgICAgICAgIyB3b3JzZSB0byBjcmVhdGUgYW4gYWxpZ25tZW50IHdoZXJlIG5vbmUgaXMgbmVlZGVkCiAgICAgICAgICAgICAgICAgICAgIyB0aGFuIHRvIG9taXQgb25lLiAgSGVyZSdzIGFuIGV4YW1wbGUgd2hlcmUgdGhlICcsJ3MKICAgICAgICAgICAgICAgICAgICAjIGFyZSBub3QgaW4gbmFtZWQgY29udGFpbmVycy4gIFRoZSBmaXJzdCBsaW5lIGJlbG93CiAgICAgICAgICAgICAgICAgICAgIyBzaG91bGQgbm90IG1hdGNoIHRoZSBuZXh0IHR3bzoKICAgICAgICAgICAgICAgICAgICAjICAgKCAkYSwgJGIgKSA9ICggJGIsICRyICk7CiAgICAgICAgICAgICAgICAgICAgIyAgICggJHgxLCAkeDIgKSA9ICggJHgyIC0gJHEgKiAkeDEsICR4MSApOwogICAgICAgICAgICAgICAgICAgICMgICAoICR5MSwgJHkyICkgPSAoICR5MiAtICRxICogJHkxLCAkeTEgKTsKICAgICAgICAgICAgICAgICAgICBpZiAoICRhbGlnbm1lbnRfdG9rZW4gZXEgJywnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAjIGRvIG5vdCBhbGlnbiBjb21tYXMgdW5sZXNzIHRoZXkgYXJlIGluIG5hbWVkIGNvbnRhaW5lcnMKICAgICAgICAgICAgICAgICAgICAgICAgJEdvVG9Mb2MgPSA1OwogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIE5PX01BVENIIHVubGVzcyAoICRuZXdfdG9rID1+IC9bQS1aYS16XS8gKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgZG8gbm90IGFsaWduIHBhcmVucyB1bmxlc3MgcGF0dGVybnMgbWF0Y2g7CiAgICAgICAgICAgICAgICAgICAgIyBsYXJnZSB1Z2x5IHNwYWNlcyBjYW4gb2NjdXIgaW4gbWF0aCBleHByZXNzaW9ucy4KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRhbGlnbm1lbnRfdG9rZW4gZXEgJygnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBCdXQgd2UgY2FuIGFsbG93IGEgbWF0Y2ggaWYgdGhlIHBhcmVucyBkb24ndAogICAgICAgICAgICAgICAgICAgICAgICAjIHJlcXVpcmUgYW55IHBhZGRpbmcuCiAgICAgICAgICAgICAgICAgICAgICAgICRHb1RvTG9jID0gNjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkcGFkICE9IDAgKSB7IGdvdG8gTk9fTUFUQ0ggfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBIYW5kbGUgYW4gJz0nIGFsaWdubWVudCB3aXRoIGRpZmZlcmVudCBwYXR0ZXJucyB0bwogICAgICAgICAgICAgICAgICAgICMgdGhlIGxlZnQuCiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkYWxpZ25tZW50X3Rva2VuIGVxICc9JyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgSXQgaXMgYmVzdCB0byBiZSBhIGxpdHRsZSByZXN0cmljdGl2ZSB3aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICMgYWxpZ25pbmcgJz0nIHRva2Vucy4gIEhlcmUgaXMgYW4gZXhhbXBsZSBvZgogICAgICAgICAgICAgICAgICAgICAgICAjIHR3byBsaW5lcyB0aGF0IHdlIHdpbGwgbm90IGFsaWduOgogICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgIG15ICR2YXJpYWJsZT02OwogICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICRiYj00OwogICAgICAgICAgICAgICAgICAgICAgICAjIFRoZSBwcm9ibGVtIGlzIHRoYXQgb25lIGlzIGEgJ215JyBkZWNsYXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgIyBhbmQgdGhlIG90aGVyIGlzbid0LCBzbyB0aGV5J3JlIG5vdCB2ZXJ5IHNpbWlsYXIuCiAgICAgICAgICAgICAgICAgICAgICAgICMgV2Ugd2lsbCBmaWx0ZXIgdGhlc2Ugb3V0IGJ5IGNvbXBhcmluZyB0aGUgZmlyc3QKICAgICAgICAgICAgICAgICAgICAgICAgIyBsZXR0ZXIgb2YgdGhlIHBhdHRlcm4uICBUaGlzIGlzIGNydWRlLCBidXQgd29ya3MKICAgICAgICAgICAgICAgICAgICAgICAgIyB3ZWxsIGVub3VnaC4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic3RyKCAkb2xkX3JwYXR0ZXJucy0+WyRqXSwgMCwgMSApIG5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzdHIoICRycGF0dGVybnMtPlskal0sICAgICAwLCAxICkgKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkR29Ub0xvYyA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIE5PX01BVENIOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIElmIHdlIHBhc3MgdGhhdCB0ZXN0LCB3ZSdsbCBjYWxsIGl0IGEgbWFyZ2luYWwgbWF0Y2guCiAgICAgICAgICAgICAgICAgICAgICAgICMgSGVyZSBpcyBhbiBleGFtcGxlIG9mIGEgbWFyZ2luYWwgbWF0Y2g6CiAgICAgICAgICAgICAgICAgICAgICAgICMgICAgICAgJGRvbmV7JCRvcH0gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICRvcCAgICAgICAgID0gY29tcGlsZV9iYmxvY2soJG9wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGUgbGVmdCB0b2tlbnMgYXJlIGJvdGggaWRlbnRpZmllcnMsIGJ1dAogICAgICAgICAgICAgICAgICAgICAgICAjIG9uZSBhY2Nlc3NlcyBhIGhhc2ggYW5kIHRoZSBvdGhlciBkb2Vzbid0LgogICAgICAgICAgICAgICAgICAgICAgICAjIFdlJ2xsIGxldCB0aGlzIGJlIGEgdGVudGF0aXZlIG1hdGNoIGFuZCB1bmRvCiAgICAgICAgICAgICAgICAgICAgICAgICMgaXQgbGF0ZXIgaWYgd2UgZG9uJ3QgZmluZCBtb3JlIHRoYW4gMiBsaW5lcwogICAgICAgICAgICAgICAgICAgICAgICAjIGluIHRoZSBncm91cC4KICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCBAZ3JvdXBfbGluZXMgPT0gMSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRtYXJnaW5hbF9tYXRjaCA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI7ICAgICMgPTIgcHJldmVudHMgYmVpbmcgdW5kb25lIGJlbG93CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBEb24ndCBsZXQgbGluZSB3aXRoIGZld2VyIGZpZWxkcyBpbmNyZWFzZSBjb2x1bW4gd2lkdGhzCiAgICAgICAgICAgICAgICAjICggYWxpZ24zLnQgKQogICAgICAgICAgICAgICAgaWYgKCAkbWF4aW11bV9maWVsZF9pbmRleCA+ICRqbWF4ICkgewoKICAgICAgICAgICAgICAgICAgICAjIEV4Y2VwdGlvbjogc3VzcGVuZCB0aGlzIHJ1bGUgdG8gYWxsb3cgbGFzdCBsaW5lcyB0byBqb2luCiAgICAgICAgICAgICAgICAgICAgJEdvVG9Mb2MgPSA4OwogICAgICAgICAgICAgICAgICAgIGlmICggJHBhZCA+IDAgKSB7IGdvdG8gTk9fTUFUQ0g7IH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSAjIyBlbmQgZm9yIG15ICRqICggMCAuLiAkamxpbWl0KQoKICAgICAgICAgICAgIyBUdXJuIG9mZiB0aGUgIm1hcmdpbmFsIG1hdGNoIiBmbGFnIGluIHNvbWUgY2FzZXMuLi4KICAgICAgICAgICAgIyBBICJtYXJnaW5hbCBtYXRjaCIgb2NjdXJzIHdoZW4gdGhlIGFsaWdubWVudCB0b2tlbnMgYWdyZWUKICAgICAgICAgICAgIyBidXQgdGhlcmUgYXJlIGRpZmZlcmVuY2VzIGluIHRoZSBvdGhlciB0b2tlbnMgKHBhdHRlcm5zKS4KICAgICAgICAgICAgIyBJZiB3ZSBsZWF2ZSB0aGUgbWFyZ2luYWwgbWF0Y2ggZmxhZyBzZXQsIHRoZW4gdGhlIHJ1bGUgaXMgdGhhdCB3ZQogICAgICAgICAgICAjIHdpbGwgYWxpZ24gb25seSBpZiB0aGVyZSBhcmUgbW9yZSB0aGFuIHR3byBsaW5lcyBpbiB0aGUgZ3JvdXAuCiAgICAgICAgICAgICMgV2Ugd2lsbCB0dXJuIG9mIHRoZSBmbGFnIGlmIHdlIGFsbW9zdCBoYXZlIGEgbWF0Y2gKICAgICAgICAgICAgIyBhbmQgZWl0aGVyIHdlIGhhdmUgc2VlbiBhIGdvb2QgYWxpZ25tZW50IHRva2VuIG9yIHdlCiAgICAgICAgICAgICMganVzdCBuZWVkIGEgc21hbGwgcGFkICgyIHNwYWNlcykgdG8gZml0LiAgVGhlc2UgcnVsZXMgYXJlCiAgICAgICAgICAgICMgdGhlIHJlc3VsdCBvZiBleHBlcmltZW50YXRpb24uICBUb2tlbnMgd2hpY2ggbWlzYWxpZ25lZCBieSBqdXN0CiAgICAgICAgICAgICMgb25lIG9yIHR3byBjaGFyYWN0ZXJzIGFyZSBhbm5veWluZy4gIE9uIHRoZSBvdGhlciBoYW5kLAogICAgICAgICAgICAjIGxhcmdlIGdhcHMgdG8gbGVzcyBpbXBvcnRhbnQgYWxpZ25tZW50IHRva2VucyBhcmUgYWxzbyBhbm5veWluZy4KICAgICAgICAgICAgaWYgKCAgICRtYXJnaW5hbF9tYXRjaCA9PSAxCiAgICAgICAgICAgICAgICAmJiAkam1heCA9PSAkbWF4aW11bV9maWVsZF9pbmRleAogICAgICAgICAgICAgICAgJiYgKCAkc2F3X2dvb2RfYWxpZ25tZW50IHx8ICggJG1heF9wYWQgPCAzICYmICRtaW5fcGFkID4gLTMgKSApCiAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkbWFyZ2luYWxfbWF0Y2ggPSAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgICMjcHJpbnQgIm1hcmdpbmFsPSRtYXJnaW5hbF9tYXRjaCBzYXc9JHNhd19nb29kX2FsaWdubWVudCBqbWF4PSRqbWF4IG1heD0kbWF4aW11bV9maWVsZF9pbmRleCBtYXhwYWQ9JG1heF9wYWQgbWlucGFkPSRtaW5fcGFkXG4iOwogICAgICAgIH0KCiAgICAgICAgIyBXZSBoYXZlIGEgbWF0Y2ggKGV2ZW4gaWYgbWFyZ2luYWwpLgogICAgICAgICMgSWYgdGhlIGN1cnJlbnQgbGluZSBoYXMgZmV3ZXIgZmllbGRzIHRoYW4gdGhlIGN1cnJlbnQgZ3JvdXAKICAgICAgICAjIGJ1dCBvdGhlcndpc2UgbWF0Y2hlcywgY29weSB0aGUgcmVtYWluaW5nIGdyb3VwIGZpZWxkcyB0bwogICAgICAgICMgbWFrZSBpdCBhIHBlcmZlY3QgbWF0Y2guCiAgICAgICAgaWYgKCAkbWF4aW11bV9maWVsZF9pbmRleCA+ICRqbWF4ICkgewoKICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICAgICAjIEZJWE1FOiBUaGUgcHJldmlvdXMgdmVyc2lvbiBoYWQgYSBidWcgd2hpY2ggbWFkZSBzaWRlIGNvbW1lbnRzCiAgICAgICAgICAgICMgYmVjb21lIHJlZ3VsYXIgZmllbGRzLCBzbyBmb3Igbm93IHRoZSBwcm9ncmFtIGRvZXMgbm90IGFsbG93IGEKICAgICAgICAgICAgIyBsaW5lIHdpdGggc2lkZSBjb21tZW50IHRvIG1hdGNoLiAgVGhpcyBzaG91bGQgZXZlbnR1YWxseSBiZSBkb25lLgogICAgICAgICAgICAjIFRoZSBiZXN0IHRlc3QgZmlsZSBmb3IgZXhwZXJpbWVudGluZyBpcyAnbGlzdGEudCcKICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICAgICAgbXkgJGNvbW1lbnQgPSAkcmZpZWxkcy0+WyRqbWF4XTsKICAgICAgICAgICAgJEdvVG9Mb2MgPSA5OwogICAgICAgICAgICBnb3RvIE5PX01BVENIIGlmICgkY29tbWVudCk7CgogICAgICAgICAgICAjIENvcnJlY3RlZCBsb29wCiAgICAgICAgICAgIGZvciBteSAkamogKCAkamxpbWl0IC4uICRtYXhpbXVtX2ZpZWxkX2luZGV4ICkgewogICAgICAgICAgICAgICAgJHJ0b2tlbnMtPlskampdICAgICAgICAgPSAkb2xkX3J0b2tlbnMtPlskampdOwogICAgICAgICAgICAgICAgJHJmaWVsZHMtPlsgJGpqICsgMSBdICAgPSAnJzsKICAgICAgICAgICAgICAgICRycGF0dGVybnMtPlsgJGpqICsgMSBdID0gJG9sZF9ycGF0dGVybnMtPlsgJGpqICsgMSBdOwogICAgICAgICAgICB9CgojIyAgICAgICAgICBUSEVTRSBETyBOT1QgR0lWRSBDT1JSRUNUIFJFU1VMVFMKIyMgICAgICAgICAgJHJmaWVsZHMtPlskam1heF0gPSAkY29tbWVudDsKIyMgICAgICAgICAgJG5ld19saW5lLT5zZXRfam1heCgkam1heCk7CgogICAgICAgIH0KICAgICAgICByZXR1cm47CgogICAgICBOT19NQVRDSDoKCiAgICAgICAgIyB2YXJpYWJsZSAkR29Ub0xvYyBpcyBmb3IgZGVidWdnaW5nCiAgICAgICAgI3ByaW50ICJubyBtYXRjaCBmcm9tICRHb1RvTG9jXG4iOwoKICAgICAgICAjIE1ha2Ugb25lIGxhc3QgZWZmb3J0IHRvIHJldGFpbiBhIG1hdGNoIG9mIGNlcnRhaW4gc3RhdGVtZW50cwogICAgICAgIG15ICRtYXRjaCA9IHNhbHZhZ2VfZXF1YWxpdHlfbWF0Y2hlcyggJG5ld19saW5lLCAkb2xkX2xpbmUgKTsKICAgICAgICBteV9mbHVzaF9jb2RlKCkgdW5sZXNzICgkbWF0Y2gpOwogICAgICAgIHJldHVybjsKICAgIH0KfQoKc3ViIHNhbHZhZ2VfZXF1YWxpdHlfbWF0Y2hlcyB7CiAgICBteSAoICRuZXdfbGluZSwgJG9sZF9saW5lICkgPSBAXzsKCiAgICAjIFJlZHVjZSB0aGUgY29tcGxleGl0eSBvZiB0aGUgdHdvIGxpbmVzIGlmIGl0IHdpbGwgYWxsb3cgdXMgdG8gcmV0YWluCiAgICAjIGFsaWdubWVudCBvZiBzb21lIGNvbW1vbiBhbGlnbm1lbnRzLCBpbmNsdWRpbmcgJz0nIGFuZCAnPT4nLiAgV2Ugd2lsbAogICAgIyBjb252ZXJ0IGJvdGggbGluZXMgdG8gaGF2ZSBqdXN0IHR3byBtYXRjaGluZyB0b2tlbnMsIHRoZSBlcXVhbGl0eSBhbmQgdGhlCiAgICAjIHNpZGUgY29tbWVudC4KCiAgICAjIHJldHVybiAwIG9yIHVuZGVmIGlmIHVuc3VjY2Vzc2Z1bAogICAgIyByZXR1cm4gMSBpZiBzdWNjZXNzZnVsCgogICAgIyBIZXJlIGlzIGEgdmVyeSBzaW1wbGUgZXhhbXBsZSBvZiB0d28gbGluZXMgd2hlcmUgd2UgY291bGQgYXQgbGVhc3QKICAgICMgYWxpZ24gdGhlIGVxdWFsczoKICAgICMgICR4ID0gJGNsYXNzLT5fc3ViKCAkeCwgJGRlbHRhICk7CiAgICAjICAkeHBvd25tMSA9ICRjbGFzcy0+X3BvdyggJGNsYXNzLT5fY29weSgkeCksICRubTEgKTsgICAgIyB4KGkpXihuLTEpCgogICAgIyBXZSB3aWxsIG9ubHkgZG8gdGhpcyBpZiB0aGVyZSBpcyBvbmUgb2xkIGxpbmUgKGFuZCBvbmUgbmV3IGxpbmUpCiAgICByZXR1cm4gdW5sZXNzICggQGdyb3VwX2xpbmVzID09IDEgKTsKICAgIHJldHVybiBpZiAoJGlzX21hdGNoaW5nX3Rlcm1pbmFsX2xpbmUpOwoKICAgICMgV2UgYXJlIG9ubHkgbG9va2luZyBmb3IgZXF1YWxpdHkgdHlwZSBzdGF0ZW1lbnRzCiAgICBteSAkb2xkX3J0b2tlbnMgPSAkb2xkX2xpbmUtPmdldF9ydG9rZW5zKCk7CiAgICBteSAkcnRva2VucyAgICAgPSAkbmV3X2xpbmUtPmdldF9ydG9rZW5zKCk7CiAgICBteSAkaXNfZXF1YWxzID0KICAgICAgKCAkcnRva2Vucy0+WzBdID1+IC89LyAmJiAoICRvbGRfcnRva2Vucy0+WzBdIGVxICRydG9rZW5zLT5bMF0gKSApOwogICAgcmV0dXJuIHVubGVzcyAoJGlzX2VxdWFscyk7CgogICAgIyBUaGUgbGVhZGluZyBwYXR0ZXJucyBtdXN0IG1hdGNoCiAgICBteSAkb2xkX3JwYXR0ZXJucyA9ICRvbGRfbGluZS0+Z2V0X3JwYXR0ZXJucygpOwogICAgbXkgJHJwYXR0ZXJucyAgICAgPSAkbmV3X2xpbmUtPmdldF9ycGF0dGVybnMoKTsKICAgIHJldHVybiBpZiAoICRvbGRfcnBhdHRlcm5zLT5bMF0gbmUgJHJwYXR0ZXJucy0+WzBdICk7CgogICAgIyBCb3RoIHNob3VsZCBoYXZlIHNpZGUgY29tbWVudCBmaWVsZHMgKHNob3VsZCBhbHdheXMgYmUgdHJ1ZSkKICAgIG15ICRqbWF4X29sZCAgICA9ICRvbGRfbGluZS0+Z2V0X2ptYXgoKTsKICAgIG15ICRqbWF4X25ldyAgICA9ICRuZXdfbGluZS0+Z2V0X2ptYXgoKTsKICAgIG15ICRlbmRfdG9rX29sZCA9ICRvbGRfcnRva2Vucy0+WyAkam1heF9vbGQgLSAxIF07CiAgICBteSAkZW5kX3Rva19uZXcgPSAkcnRva2Vucy0+WyAkam1heF9uZXcgLSAxIF07CiAgICBteSAkaGF2ZV9zaWRlX2NvbW1lbnRzID0KICAgICAgICAgZGVmaW5lZCgkZW5kX3Rva19vbGQpCiAgICAgICYmICRlbmRfdG9rX29sZCBlcSAnIycKICAgICAgJiYgZGVmaW5lZCgkZW5kX3Rva19uZXcpCiAgICAgICYmICRlbmRfdG9rX25ldyBlcSAnIyc7CiAgICBpZiAoICEkaGF2ZV9zaWRlX2NvbW1lbnRzICkgeyByZXR1cm47IH0KCiAgICAjIERvIG5vdCBtYXRjaCBpZiBhbnkgcmVtYWluaW5nIHRva2VucyBpbiBuZXcgbGluZSBpbmNsdWRlICc/JywgJ2lmJywKICAgICMgJ3VubGVzcycsJ3x8JywgJyYmJy4gVGhlIHJlYXNvbiBpcyB0aGF0ICgxKSB0aGlzIGlzbid0IGEgZ3JlYXQgbWF0Y2gsIGFuZAogICAgIyAoMikgd2Ugd2lsbCBwcmV2ZW50IHBvc3NpYmx5IGJldHRlciBtYXRjaHMgdG8gZm9sbG93LiAgSGVyZSBpcyBhbgogICAgIyBleGFtcGxlLiAgVGhlIG1hdGNoIG9mIHRoZSBmaXJzdCB0d28gbGluZXMgaXMgcmVqZWN0ZWQsIGFuZCB0aGlzIGFsbG93cwogICAgIyB0aGUgc2Vjb25kIGFuZCB0aGlyZCBsaW5lcyB0byBtYXRjaC4KICAgICMgICBteSAkdHlwZSA9IHNoaWZ0IHx8ICJvIjsKICAgICMgICBteSAkZm5hbWUgID0gKCAkdHlwZSBlcSAnb28nICAgICAgICAgICAgICAgPyAnb3J0ZV9jaXR5JyA6ICdvcnRlJyApOwogICAgIyAgIG15ICRzdWZmaXggPSAoICRjb29yZF9zeXN0ZW0gZXEgJ3N0YW5kYXJkJyA/ICcnICAgICAgICAgIDogJy1vcmlnJyApOwogICAgIyBUaGlzIGxvZ2ljIGNhbiBjYXVzZSBzb21lIHVud2FudGVkIGxvc3NlcyBvZiBhbGlnbm1lbnRzLCBidXQgaXQgY2FuIHJldGFpbgogICAgIyBsb25nIHJ1bnMgb2YgbXVsdGlwbGUtdG9rZW4gYWxpZ25tZW50cywgc28gb3ZlcmFsbCBpdCBpcyB3b3J0aHdoaWxlLgogICAgIyBJZiB3ZSBoYWQgYSBwZWVrIGF0IHRoZSBzdWJzZXF1ZW50IGxpbmUgd2UgY291bGQgbWFrZSBhIG11Y2ggYmV0dGVyCiAgICAjIGRlY2lzaW9uIGhlcmUsIGJ1dCBmb3Igbm93IHRoaXMgaXMgbm90IGF2YWlsYWJsZS4KICAgIGZvciAoIG15ICRqID0gMSA7ICRqIDwgJGptYXhfbmV3IC0gMSA7ICRqKysgKSB7CiAgICAgICAgbXkgJG5ld190b2sgPSAkcnRva2Vucy0+WyRqXTsKCiAgICAgICAgIyBnaXQjMTY6IGRvIG5vdCBjb25zaWRlciBmYXQgY29tbWFzIGFzIGdvb2QgYWxpZ21uZW50cyBoZXJlCiAgICAgICAgbXkgJGlzX2dvb2RfYWxpZ25tZW50ID0KICAgICAgICAgICggJG5ld190b2sgPX4gL14oPXxcP3xpZnx1bmxlc3N8XHxcfHxcJlwmKS8gJiYgJG5ld190b2sgIX4gL149Pi8gKTsKICAgICAgICByZXR1cm4gaWYgKCRpc19nb29kX2FsaWdubWVudCk7CiAgICB9CgogICAgbXkgJHNxdWVlemVfbGluZSA9IHN1YiB7CiAgICAgICAgbXkgKCRsaW5lX29iaikgPSBAXzsKCiAgICAgICAgIyByZWR1Y2UgYSBsaW5lIGRvd24gdG8gdGhlIHRocmVlIGZpZWxkcyBzdXJyb3VuZGluZwogICAgICAgICMgdGhlIHR3byB0b2tlbnMsIGFuICc9JyBvZiBzb21lIHNvcnQgYW5kIGEgJyMnIGF0IHRoZSBlbmQKCiAgICAgICAgbXkgJGptYXggICAgID0gJGxpbmVfb2JqLT5nZXRfam1heCgpOwogICAgICAgIG15ICRqbWF4X25ldyA9IDI7CiAgICAgICAgcmV0dXJuIHVubGVzcyAkam1heCA+ICRqbWF4X25ldzsKICAgICAgICBteSAkcmZpZWxkcyAgICAgPSAkbGluZV9vYmotPmdldF9yZmllbGRzKCk7CiAgICAgICAgbXkgJHJwYXR0ZXJucyAgID0gJGxpbmVfb2JqLT5nZXRfcnBhdHRlcm5zKCk7CiAgICAgICAgbXkgJHJ0b2tlbnMgICAgID0gJGxpbmVfb2JqLT5nZXRfcnRva2VucygpOwogICAgICAgIG15ICRyZmllbGRzX25ldyA9IFsKICAgICAgICAgICAgJHJmaWVsZHMtPlswXSwgam9pbiggJycsIEB7JHJmaWVsZHN9WyAxIC4uICRqbWF4IC0gMSBdICksCiAgICAgICAgICAgICRyZmllbGRzLT5bJGptYXhdCiAgICAgICAgXTsKICAgICAgICBteSAkcnBhdHRlcm5zX25ldyA9IFsKICAgICAgICAgICAgJHJwYXR0ZXJucy0+WzBdLCBqb2luKCAnJywgQHskcnBhdHRlcm5zfVsgMSAuLiAkam1heCAtIDEgXSApLAogICAgICAgICAgICAkcnBhdHRlcm5zLT5bJGptYXhdCiAgICAgICAgXTsKICAgICAgICBteSAkcnRva2Vuc19uZXcgPSBbICRydG9rZW5zLT5bMF0sICRydG9rZW5zLT5bICRqbWF4IC0gMSBdIF07CiAgICAgICAgJGxpbmVfb2JqLT57X3JmaWVsZHN9ICAgPSAkcmZpZWxkc19uZXc7CiAgICAgICAgJGxpbmVfb2JqLT57X3JwYXR0ZXJuc30gPSAkcnBhdHRlcm5zX25ldzsKICAgICAgICAkbGluZV9vYmotPntfcnRva2Vuc30gICA9ICRydG9rZW5zX25ldzsKICAgICAgICAkbGluZV9vYmotPnNldF9qbWF4KCRqbWF4X25ldyk7CiAgICB9OwoKICAgICMgT2theSwgd2Ugd2lsbCBmb3JjZSBhIG1hdGNoIGF0IHRoZSBlcXVhbHMtbGlrZSB0b2tlbi4gIFdlIHdpbGwgZml4IGJvdGgKICAgICMgbGluZXMgdG8gaGF2ZSBqdXN0IDIgdG9rZW5zIGFuZCAzIGZpZWxkczoKICAgICRzcXVlZXplX2xpbmUtPigkbmV3X2xpbmUpOwogICAgJHNxdWVlemVfbGluZS0+KCRvbGRfbGluZSk7CgogICAgIyBzdGFydCBvdmVyIHdpdGggYSBuZXcgZ3JvdXAKICAgIGluaXRpYWxpemVfZm9yX25ld19ncm91cCgpOwogICAgYWRkX3RvX2dyb3VwKCRvbGRfbGluZSk7CiAgICByZXR1cm4gMTsKfQoKc3ViIGNoZWNrX2ZpdCB7CgogICAgbXkgKCAkbmV3X2xpbmUsICRvbGRfbGluZSApID0gQF87CiAgICByZXR1cm4gdW5sZXNzIChAZ3JvdXBfbGluZXMpOwoKICAgIG15ICRqbWF4ICAgICAgICAgICAgICAgICAgICA9ICRuZXdfbGluZS0+Z2V0X2ptYXgoKTsKICAgIG15ICRsZWFkaW5nX3NwYWNlX2NvdW50ICAgICA9ICRuZXdfbGluZS0+Z2V0X2xlYWRpbmdfc3BhY2VfY291bnQoKTsKICAgIG15ICRpc19oYW5naW5nX3NpZGVfY29tbWVudCA9ICRuZXdfbGluZS0+Z2V0X2lzX2hhbmdpbmdfc2lkZV9jb21tZW50KCk7CiAgICBteSAkcnRva2VucyAgICAgICAgICAgICAgICAgPSAkbmV3X2xpbmUtPmdldF9ydG9rZW5zKCk7CiAgICBteSAkcmZpZWxkcyAgICAgICAgICAgICAgICAgPSAkbmV3X2xpbmUtPmdldF9yZmllbGRzKCk7CiAgICBteSAkcnBhdHRlcm5zICAgICAgICAgICAgICAgPSAkbmV3X2xpbmUtPmdldF9ycGF0dGVybnMoKTsKCiAgICBteSAkZ3JvdXBfbGlzdF90eXBlID0gJGdyb3VwX2xpbmVzWzBdLT5nZXRfbGlzdF90eXBlKCk7CgogICAgbXkgJHBhZGRpbmdfc29fZmFyICAgID0gMDsKICAgIG15ICRwYWRkaW5nX2F2YWlsYWJsZSA9ICRvbGRfbGluZS0+Z2V0X2F2YWlsYWJsZV9zcGFjZV9vbl9yaWdodCgpOwoKICAgICMgc2F2ZSBjdXJyZW50IGNvbHVtbnMgaW4gY2FzZSB0aGlzIGRvZXNuJ3Qgd29yawogICAgc2F2ZV9hbGlnbm1lbnRfY29sdW1ucygpOwoKICAgIG15ICRtYXhpbXVtX2ZpZWxkX2luZGV4ID0gJG9sZF9saW5lLT5nZXRfam1heCgpOwogICAgZm9yIG15ICRqICggMCAuLiAkam1heCApIHsKCiAgICAgICAgbXkgJHBhZCA9IGxlbmd0aCggJHJmaWVsZHMtPlskal0gKSAtICRvbGRfbGluZS0+Y3VycmVudF9maWVsZF93aWR0aCgkaik7CgogICAgICAgIGlmICggJGogPT0gMCApIHsKICAgICAgICAgICAgJHBhZCArPSAkbGVhZGluZ19zcGFjZV9jb3VudDsKICAgICAgICB9CgogICAgICAgICMgcmVtZW1iZXIgbGFyZ2VzdCBnYXAgb2YgdGhlIGdyb3VwLCBleGNsdWRpbmcgZ2FwIHRvIHNpZGUgY29tbWVudAogICAgICAgIGlmICggICAkcGFkIDwgMAogICAgICAgICAgICAmJiAkZ3JvdXBfbWF4aW11bV9nYXAgPCAtJHBhZAogICAgICAgICAgICAmJiAkaiA+IDAKICAgICAgICAgICAgJiYgJGogPCAkam1heCAtIDEgKQogICAgICAgIHsKICAgICAgICAgICAgJGdyb3VwX21heGltdW1fZ2FwID0gLSRwYWQ7CiAgICAgICAgfQoKICAgICAgICBuZXh0IGlmICRwYWQgPCAwOwoKICAgICAgICAjIyBPTEQgTk9URVM6CiAgICAgICAgIyMgVGhpcyBwYXRjaCBoZWxwcyBzb21ldGltZXMsIGJ1dCBpdCBkb2Vzbid0IGNoZWNrIHRvIHNlZSBpZgogICAgICAgICMjIHRoZSBsaW5lIGlzIHRvbyBsb25nIGV2ZW4gd2l0aG91dCB0aGUgc2lkZSBjb21tZW50LiAgSXQgbmVlZHMKICAgICAgICAjIyB0byBiZSByZXdvcmtlZC4KICAgICAgICAjI2Rvbid0IGxldCBhIGxvbmcgdG9rZW4gd2l0aCBubyB0cmFpbGluZyBzaWRlIGNvbW1lbnQgcHVzaAogICAgICAgICMjc2lkZSBjb21tZW50cyBvdXQsIG9yIGVuZCBhIGdyb3VwLiAgKHNpZGVjbXQxLnQpCiAgICAgICAgIyNuZXh0IGlmICgkaj09JGptYXgtMSAmJiBsZW5ndGgoJHJmaWVsZHMtPlskam1heF0pPT0wKTsKCiAgICAgICAgIyBCRUdJTiBQQVRDSCBmb3Iga2VpdGgxLnR4dC4KICAgICAgICAjIElmIHRoZSBncm91cCBiZWdhbiBtYXRjaGluZyBtdWx0aXBsZSB0b2tlbnMgYnV0IGxhdGVyIHRoaXMgZ290CiAgICAgICAgIyByZWR1Y2VkIHRvIGEgZmV3ZXIgbnVtYmVyIG9mIG1hdGNoaW5nIHRva2VucywgdGhlbiB0aGUgZmllbGRzCiAgICAgICAgIyBvZiB0aGUgbGF0ZXIgbGluZXMgd2lsbCBzdGlsbCBoYXZlIHRvIGZpdCBpbnRvIHRoZWlyIGNvcnJlc3BvbmRpbmcKICAgICAgICAjIGZpZWxkcy4gIFNvIGEgbGFyZ2UgbGF0ZXIgZmllbGQgd2lsbCAicHVzaCIgdGhlIG90aGVyIGZpZWxkcyB0bwogICAgICAgICMgdGhlIHJpZ2h0LCBpbmNsdWRpbmcgcHJldmlvdXMgc2lkZSBjb21tZW50cywgYW5kIGlmIHRoZXJlIGlzIG5vIHJvb20KICAgICAgICAjIHRoZW4gdGhlcmUgaXMgbm8gbWF0Y2guCiAgICAgICAgIyBGb3IgZXhhbXBsZSwgbG9vayBhdCB0aGUgbGFzdCBsaW5lIGluIHRoZSBmb2xsb3dpbmcgc25pcHBldDoKCiAjIG15ICRiX3Byb2RfZGIgPSAoICRFTlZ7T1JBQ0xFX1NJRH0gPX4gbS9wJC8gJiYgISR0ZXN0aW5nICkgPyB0cnVlICAgIDogZmFsc2U7CiAjIG15ICRlbnYgICAgICAgPSAoJGJfcHJvZF9kYikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAicHJkIiAgIDogInZhbCI7CiAjIG15ICRwbGFudCAgICAgPSAoICRPUFR7cH0gKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAkT1BUe3B9IDogIlNUTCI7CiAjIG15ICR0YXNrICAgICAgPSAkT1BUe3R9OwogIyBteSAkZm5hbSAgICAgID0gImxvbmdnZ2dnZ2dnZ2dnZ2dnZ2cuJHJlY29yZF9jcmVhdGVkLiRlbnYuJHBsYW50LmlkYXNoIjsKCiAgICAgICAgIyBUaGUgbG9uZyB0ZXJtIHdpbGwgcHVzaCB0aGUgJz8nIHRvIHRoZSByaWdodCB0byBmaXQgaW4sIGFuZCBpbiB0aGlzCiAgICAgICAgIyBjYXNlIHRoZXJlIGlzIG5vdCBlbm91Z2ggcm9vbSBzbyBpdCB3aWxsIG5vdCBtYXRjaCB0aGUgZXF1YWxzIHVubGVzcwogICAgICAgICMgd2UgZG8gc29tZXRoaW5nIHNwZWNpYWwuCgogICAgICAgICMgVXN1YWxseSBpdCBsb29rcyBnb29kIHRvIGtlZXAgYW4gaW5pdGlhbCBhbGlnbm1lbnQgb2YgJz0nIGdvaW5nLCBhbmQKICAgICAgICAjIHdlIGNhbiBkbyB0aGlzIGlmIHRoZSBsb25nIHRlcm0gY2FuIGZpdCBpbiB0aGUgc3BhY2UgdGFrZW4gdXAgYnkgdGhlCiAgICAgICAgIyByZW1haW5pbmcgZmllbGRzICh0aGUgPyA6IGZpZWxkcyBoZXJlKS4KCiAgICAgICAgIyBBbGxvd2luZyBhbnkgbWF0Y2hpbmcgdG9rZW4gZm9yIG5vdywgYnV0IGl0IGNvdWxkIGJlIHJlc3RyaWN0ZWQKICAgICAgICAjIHRvIGFuICc9Jy1saWtlIHRva2VuIGlmIG5lY2Vzc2FyeS4KCiAgICAgICAgaWYgKAogICAgICAgICAgICAgICAkcGFkID4gJHBhZGRpbmdfYXZhaWxhYmxlCiAgICAgICAgICAgICYmICRqbWF4ID09IDIgICAgICAgICAgICAgICAgICAgICAgICAjIG1hdGNoaW5nIG9uZSB0aGluZyAocGx1cyAjKQogICAgICAgICAgICAmJiAkaiA9PSAkam1heCAtIDEgICAgICAgICAgICAgICAgICAgIyBhdCBsYXN0IGZpZWxkCiAgICAgICAgICAgICYmIEBncm91cF9saW5lcyA+IDEgICAgICAgICAgICAgICAgICAjIG1vcmUgdGhhbiAxIGxpbmUgaW4gZ3JvdXAgbm93CiAgICAgICAgICAgICYmICRqbWF4IDwgJG1heGltdW1fZmllbGRfaW5kZXggICAgICAjIG90aGVyIGxpbmVzIGhhdmUgbW9yZSBmaWVsZHMKICAgICAgICAgICAgJiYgbGVuZ3RoKCAkcmZpZWxkcy0+WyRqbWF4XSApID09IDAgICMgbm8gc2lkZSBjb21tZW50CgogICAgICAgICAgICAjIFVuY29tbWVudCB0byBtYXRjaCBvbmx5IGVxdWFscyAoYnV0IHRoaXMgZG9lcyBub3Qgc2VlbSBuZWNlc3NhcnkpCiAgICAgICAgICAgICMgJiYgJHJ0b2tlbnMtPlswXSA9fiAvXj1cZC8gICAgICAgICAgICMgbWF0Y2hpbmcgYW4gZXF1YWxzCiAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkZXh0cmFfcGFkZGluZyA9IDA7CiAgICAgICAgICAgIGZvcmVhY2ggbXkgJGpqICggJGogKyAxIC4uICRtYXhpbXVtX2ZpZWxkX2luZGV4IC0gMSApIHsKICAgICAgICAgICAgICAgICRleHRyYV9wYWRkaW5nICs9ICRvbGRfbGluZS0+Y3VycmVudF9maWVsZF93aWR0aCgkamopOwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IGlmICggJHBhZCA8PSAkcGFkZGluZ19hdmFpbGFibGUgKyAkZXh0cmFfcGFkZGluZyApOwogICAgICAgIH0KCiAgICAgICAgIyBFTkQgUEFUQ0ggZm9yIGtlaXRoMS5wbAoKICAgICAgICAjIFRoaXMgbGluZSB3aWxsIG5lZWQgc3BhY2U7IGxldHMgc2VlIGlmIHdlIHdhbnQgdG8gYWNjZXB0IGl0Li4KICAgICAgICBpZiAoCgogICAgICAgICAgICAjIG5vdCBpZiB0aGlzIHdvbid0IGZpdAogICAgICAgICAgICAoICRwYWQgPiAkcGFkZGluZ19hdmFpbGFibGUgKQoKICAgICAgICAgICAgIyBwcmV2aW91c2x5LCB0aGVyZSB3ZXJlIHVwcGVyIGJvdW5kcyBwbGFjZWQgb24gcGFkZGluZyBoZXJlCiAgICAgICAgICAgICMgKG1heGltdW1fd2hpdGVzcGFjZV9jb2x1bW5zKSwgYnV0IHRoZXkgd2VyZSBub3QgcmVhbGx5IGhlbHBmdWwKCiAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgIyByZXZlcnQgdG8gc3RhcnRpbmcgc3RhdGUgdGhlbiBmbHVzaDsgdGhpbmdzIGRpZG4ndCB3b3JrIG91dAogICAgICAgICAgICByZXN0b3JlX2FsaWdubWVudF9jb2x1bW5zKCk7CiAgICAgICAgICAgIG15X2ZsdXNoX2NvZGUoKTsKICAgICAgICAgICAgbGFzdDsKICAgICAgICB9CgogICAgICAgICMgcGF0Y2ggdG8gYXZvaWQgZXhjZXNzaXZlIGdhcHMgaW4gcHJldmlvdXMgbGluZXMsCiAgICAgICAgIyBkdWUgdG8gYSBsaW5lIG9mIGZld2VyIGZpZWxkcy4KICAgICAgICAjICAgcmV0dXJuIGpvaW4oICIuIiwKICAgICAgICAjICAgICAgICRzZWxmLT57ImRmaSJ9LCAgJHNlbGYtPnsiYWEifSwgJHNlbGYtPnJzdmQsICAgICAkc2VsZi0+eyJyZCJ9LAogICAgICAgICMgICAgICAgJHNlbGYtPnsiYXJlYSJ9LCAkc2VsZi0+eyJpZCJ9LCAkc2VsZi0+eyJzZWwifSApOwogICAgICAgIG5leHQgaWYgKCAkam1heCA8ICRtYXhpbXVtX2ZpZWxkX2luZGV4ICYmICRqID09ICRqbWF4IC0gMSApOwoKICAgICAgICAjIGxvb2tzIG9rLCBzcXVlZXplIHRoaXMgZmllbGQgaW4KICAgICAgICAkb2xkX2xpbmUtPmluY3JlYXNlX2ZpZWxkX3dpZHRoKCAkaiwgJHBhZCApOwogICAgICAgICRwYWRkaW5nX2F2YWlsYWJsZSAtPSAkcGFkOwoKICAgICAgICAjIHJlbWVtYmVyIGxhcmdlc3QgZ2FwIG9mIHRoZSBncm91cCwgZXhjbHVkaW5nIGdhcCB0byBzaWRlIGNvbW1lbnQKICAgICAgICBpZiAoICRwYWQgPiAkZ3JvdXBfbWF4aW11bV9nYXAgJiYgJGogPiAwICYmICRqIDwgJGptYXggLSAxICkgewogICAgICAgICAgICAkZ3JvdXBfbWF4aW11bV9nYXAgPSAkcGFkOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybjsKfQoKc3ViIGFkZF90b19ncm91cCB7CgogICAgIyBUaGUgY3VycmVudCBsaW5lIGVpdGhlciBzdGFydHMgYSBuZXcgYWxpZ25tZW50IGdyb3VwIG9yIGlzCiAgICAjIGFjY2VwdGVkIGludG8gdGhlIGN1cnJlbnQgYWxpZ25tZW50IGdyb3VwLgogICAgbXkgKCRuZXdfbGluZSkgPSBAXzsKICAgIHB1c2hfZ3JvdXBfbGluZSgkbmV3X2xpbmUpOwoKICAgICMgaW5pdGlhbGl6ZSBmaWVsZCBsZW5ndGhzIGlmIHN0YXJ0aW5nIG5ldyBncm91cAogICAgaWYgKCBAZ3JvdXBfbGluZXMgPT0gMSApIHsKCiAgICAgICAgbXkgJGptYXggICAgPSAkbmV3X2xpbmUtPmdldF9qbWF4KCk7CiAgICAgICAgbXkgJHJmaWVsZHMgPSAkbmV3X2xpbmUtPmdldF9yZmllbGRzKCk7CiAgICAgICAgbXkgJHJ0b2tlbnMgPSAkbmV3X2xpbmUtPmdldF9ydG9rZW5zKCk7CiAgICAgICAgbXkgJGNvbCAgICAgPSAkbmV3X2xpbmUtPmdldF9sZWFkaW5nX3NwYWNlX2NvdW50KCk7CgogICAgICAgIGZvciBteSAkaiAoIDAgLi4gJGptYXggKSB7CiAgICAgICAgICAgICRjb2wgKz0gbGVuZ3RoKCAkcmZpZWxkcy0+WyRqXSApOwoKICAgICAgICAgICAgIyBjcmVhdGUgaW5pdGlhbCBhbGlnbm1lbnRzIGZvciB0aGUgbmV3IGdyb3VwCiAgICAgICAgICAgIG15ICR0b2tlbiA9ICIiOwogICAgICAgICAgICBpZiAoICRqIDwgJGptYXggKSB7ICR0b2tlbiA9ICRydG9rZW5zLT5bJGpdIH0KICAgICAgICAgICAgbXkgJGFsaWdubWVudCA9IG1ha2VfYWxpZ25tZW50KCAkY29sLCAkdG9rZW4gKTsKICAgICAgICAgICAgJG5ld19saW5lLT5zZXRfYWxpZ25tZW50KCAkaiwgJGFsaWdubWVudCApOwogICAgICAgIH0KCiAgICAgICAgJG1heGltdW1fam1heF9zZWVuID0gJGptYXg7CiAgICAgICAgJG1pbmltdW1fam1heF9zZWVuID0gJGptYXg7CiAgICB9CgogICAgIyB1c2UgcHJldmlvdXMgYWxpZ25tZW50cyBvdGhlcndpc2UKICAgIGVsc2UgewogICAgICAgIG15IEBuZXdfYWxpZ25tZW50cyA9ICRncm91cF9saW5lc1stMl0tPmdldF9hbGlnbm1lbnRzKCk7CiAgICAgICAgJG5ld19saW5lLT5zZXRfYWxpZ25tZW50cyhAbmV3X2FsaWdubWVudHMpOwogICAgfQoKICAgICMgcmVtZW1iZXIgZ3JvdXAgam1heCBleHRyZW1lcyBmb3IgbmV4dCBjYWxsIHRvIHZhbGlnbl9pbnB1dAogICAgJHByZXZpb3VzX21pbmltdW1fam1heF9zZWVuID0gJG1pbmltdW1fam1heF9zZWVuOwogICAgJHByZXZpb3VzX21heGltdW1fam1heF9zZWVuID0gJG1heGltdW1fam1heF9zZWVuOwogICAgcmV0dXJuOwp9CgpzdWIgZHVtcF9hcnJheSB7CgogICAgIyBkZWJ1ZyByb3V0aW5lIHRvIGR1bXAgYXJyYXkgY29udGVudHMKICAgIGxvY2FsICQiID0gJykoJzsKICAgIHByaW50IFNURE9VVCAiKEBfKVxuIjsKICAgIHJldHVybjsKfQoKIyBmbHVzaCgpIHNlbmRzIHRoZSBjdXJyZW50IFBlcmw6OlRpZHk6OlZlcnRpY2FsQWxpZ25lciBncm91cCBkb3duIHRoZQojIHBpcGVsaW5lIHRvIFBlcmw6OlRpZHk6OkZpbGVXcml0ZXIuCgojIFRoaXMgaXMgdGhlIGV4dGVybmFsIGZsdXNoLCB3aGljaCBhbHNvIGVtcHRpZXMgdGhlIGJ1ZmZlciBhbmQgY2FjaGUKc3ViIGZsdXNoIHsKCiAgICAjIHRoZSBidWZmZXIgbXVzdCBiZSBlbXB0aWVkIGZpcnN0LCB0aGVuIGFueSBjYWNoZWQgdGV4dAogICAgZHVtcF92YWxpZ25fYnVmZmVyKCk7CgogICAgaWYgKEBncm91cF9saW5lcykgewogICAgICAgIG15X2ZsdXNoKCk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBpZiAoJGNhY2hlZF9saW5lX3R5cGUpIHsKICAgICAgICAgICAgJHNlcW5vX3N0cmluZyA9ICRjYWNoZWRfc2Vxbm9fc3RyaW5nOwogICAgICAgICAgICB2YWxpZ25fb3V0cHV0X3N0ZXBfQyggJGNhY2hlZF9saW5lX3RleHQsCiAgICAgICAgICAgICAgICAkY2FjaGVkX2xpbmVfbGVhZGluZ19zcGFjZV9jb3VudCwKICAgICAgICAgICAgICAgICRsYXN0X2xldmVsX3dyaXR0ZW4gKTsKICAgICAgICAgICAgJGNhY2hlZF9saW5lX3R5cGUgICAgPSAwOwogICAgICAgICAgICAkY2FjaGVkX2xpbmVfdGV4dCAgICA9ICIiOwogICAgICAgICAgICAkY2FjaGVkX3NlcW5vX3N0cmluZyA9ICIiOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybjsKfQoKc3ViIHJlZHVjZV92YWxpZ25fYnVmZmVyX2luZGVudGF0aW9uIHsKCiAgICBteSAoJGRpZmYpID0gQF87CiAgICBpZiAoICR2YWxpZ25fYnVmZmVyX2ZpbGxpbmcgJiYgJGRpZmYgKSB7CiAgICAgICAgbXkgJG1heF92YWxpZ25fYnVmZmVyID0gQHZhbGlnbl9idWZmZXI7CiAgICAgICAgZm9yZWFjaCBteSAkaSAoIDAgLi4gJG1heF92YWxpZ25fYnVmZmVyIC0gMSApIHsKICAgICAgICAgICAgbXkgKCAkbGluZSwgJGxlYWRpbmdfc3BhY2VfY291bnQsICRsZXZlbCApID0KICAgICAgICAgICAgICBAeyAkdmFsaWduX2J1ZmZlclskaV0gfTsKICAgICAgICAgICAgbXkgJHdzID0gc3Vic3RyKCAkbGluZSwgMCwgJGRpZmYgKTsKICAgICAgICAgICAgaWYgKCAoIGxlbmd0aCgkd3MpID09ICRkaWZmICkgJiYgJHdzID1+IC9eXHMrJC8gKSB7CiAgICAgICAgICAgICAgICAkbGluZSA9IHN1YnN0ciggJGxpbmUsICRkaWZmICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkbGVhZGluZ19zcGFjZV9jb3VudCA+PSAkZGlmZiApIHsKICAgICAgICAgICAgICAgICRsZWFkaW5nX3NwYWNlX2NvdW50IC09ICRkaWZmOwogICAgICAgICAgICAgICAgJGxldmVsID0gbGV2ZWxfY2hhbmdlKCAkbGVhZGluZ19zcGFjZV9jb3VudCwgJGRpZmYsICRsZXZlbCApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR2YWxpZ25fYnVmZmVyWyRpXSA9IFsgJGxpbmUsICRsZWFkaW5nX3NwYWNlX2NvdW50LCAkbGV2ZWwgXTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBsZXZlbF9jaGFuZ2UgewoKICAgICMgY29tcHV0ZSBkZWNyZWFzZSBpbiBsZXZlbCB3aGVuIHdlIHJlbW92ZSAkZGlmZiBzcGFjZXMgZnJvbSB0aGUKICAgICMgbGVhZGluZyBzcGFjZXMKICAgIG15ICggJGxlYWRpbmdfc3BhY2VfY291bnQsICRkaWZmLCAkbGV2ZWwgKSA9IEBfOwogICAgaWYgKCRyT3B0c19pbmRlbnRfY29sdW1ucykgewogICAgICAgIG15ICRvbGV2ID0KICAgICAgICAgIGludCggKCAkbGVhZGluZ19zcGFjZV9jb3VudCArICRkaWZmICkgLyAkck9wdHNfaW5kZW50X2NvbHVtbnMgKTsKICAgICAgICBteSAkbmxldiA9IGludCggJGxlYWRpbmdfc3BhY2VfY291bnQgLyAkck9wdHNfaW5kZW50X2NvbHVtbnMgKTsKICAgICAgICAkbGV2ZWwgLT0gKCAkb2xldiAtICRubGV2ICk7CiAgICAgICAgaWYgKCAkbGV2ZWwgPCAwICkgeyAkbGV2ZWwgPSAwIH0KICAgIH0KICAgIHJldHVybiAkbGV2ZWw7Cn0KCnN1YiBkdW1wX3ZhbGlnbl9idWZmZXIgewogICAgaWYgKEB2YWxpZ25fYnVmZmVyKSB7CiAgICAgICAgZm9yZWFjaCAoQHZhbGlnbl9idWZmZXIpIHsKICAgICAgICAgICAgdmFsaWduX291dHB1dF9zdGVwX0QoIEB7JF99ICk7CiAgICAgICAgfQogICAgICAgIEB2YWxpZ25fYnVmZmVyID0gKCk7CiAgICB9CiAgICAkdmFsaWduX2J1ZmZlcl9maWxsaW5nID0gIiI7CiAgICByZXR1cm47Cn0KCnN1YiBteV9mbHVzaF9jb21tZW50IHsKCiAgICAjIE91dHB1dCBhIGdyb3VwIG9mIENPTU1FTlQgbGluZXMKCiAgICByZXR1cm4gdW5sZXNzIChAZ3JvdXBfbGluZXMpOwogICAgbXkgJGxlYWRpbmdfc3BhY2VfY291bnQgPSAkY29tbWVudF9sZWFkaW5nX3NwYWNlX2NvdW50OwogICAgbXkgJGxlYWRpbmdfc3RyaW5nICAgICAgPSBnZXRfbGVhZGluZ19zdHJpbmcoJGxlYWRpbmdfc3BhY2VfY291bnQpOwoKICAgICMgbG9vayBmb3IgZXhjZXNzaXZlbHkgbG9uZyBsaW5lcwogICAgbXkgJG1heF9leGNlc3MgPSAwOwogICAgZm9yZWFjaCBteSAkc3RyIChAZ3JvdXBfbGluZXMpIHsKICAgICAgICBteSAkZXhjZXNzID0KICAgICAgICAgIGxlbmd0aCgkc3RyKSArCiAgICAgICAgICAkbGVhZGluZ19zcGFjZV9jb3VudCAtCiAgICAgICAgICBtYXhpbXVtX2xpbmVfbGVuZ3RoX2Zvcl9sZXZlbCgkZ3JvdXBfbGV2ZWwpOwogICAgICAgIGlmICggJGV4Y2VzcyA+ICRtYXhfZXhjZXNzICkgewogICAgICAgICAgICAkbWF4X2V4Y2VzcyA9ICRleGNlc3M7CiAgICAgICAgfQogICAgfQoKICAgICMgemVybyBsZWFkaW5nIHNwYWNlIGNvdW50IGlmIGFueSBsaW5lcyBhcmUgdG9vIGxvbmcKICAgIGlmICggJG1heF9leGNlc3MgPiAwICkgewogICAgICAgICRsZWFkaW5nX3NwYWNlX2NvdW50IC09ICRtYXhfZXhjZXNzOwogICAgICAgIGlmICggJGxlYWRpbmdfc3BhY2VfY291bnQgPCAwICkgeyAkbGVhZGluZ19zcGFjZV9jb3VudCA9IDAgfQogICAgICAgICRsYXN0X291dGRlbnRlZF9saW5lX2F0ID0gJGZpbGVfd3JpdGVyX29iamVjdC0+Z2V0X291dHB1dF9saW5lX251bWJlcigpOwogICAgICAgIHVubGVzcyAoJG91dGRlbnRlZF9saW5lX2NvdW50KSB7CiAgICAgICAgICAgICRmaXJzdF9vdXRkZW50ZWRfbGluZV9hdCA9ICRsYXN0X291dGRlbnRlZF9saW5lX2F0OwogICAgICAgIH0KICAgICAgICBteSAkbmxpbmVzID0gQGdyb3VwX2xpbmVzOwogICAgICAgICRvdXRkZW50ZWRfbGluZV9jb3VudCArPSAkbmxpbmVzOwogICAgfQoKICAgICMgd3JpdGUgdGhlIGxpbmVzCiAgICBteSAkb3V0ZGVudF9sb25nX2xpbmVzID0gMDsKICAgIGZvcmVhY2ggbXkgJGxpbmUgKEBncm91cF9saW5lcykgewogICAgICAgIHZhbGlnbl9vdXRwdXRfc3RlcF9CKCAkbGVhZGluZ19zcGFjZV9jb3VudCwgJGxpbmUsIDAsCiAgICAgICAgICAgICRvdXRkZW50X2xvbmdfbGluZXMsICIiLCAkZ3JvdXBfbGV2ZWwgKTsKICAgIH0KCiAgICBpbml0aWFsaXplX2Zvcl9uZXdfZ3JvdXAoKTsKICAgIHJldHVybjsKfQoKc3ViIG15X2ZsdXNoX2NvZGUgewoKICAgICMgT3V0cHV0IGEgZ3JvdXAgb2YgQ09ERSBsaW5lcwoKICAgIHJldHVybiB1bmxlc3MgKEBncm91cF9saW5lcyk7CgogICAgVkFMSUdOX0RFQlVHX0ZMQUdfQVBQRU5EMAogICAgICAmJiBkbyB7CiAgICAgICAgbXkgJGdyb3VwX2xpc3RfdHlwZSA9ICRncm91cF9saW5lc1swXS0+Z2V0X2xpc3RfdHlwZSgpOwogICAgICAgIG15ICggJGEsICRiLCAkYyApID0gY2FsbGVyKCk7CiAgICAgICAgbXkgJG5saW5lcyAgICAgICAgICAgICAgPSBAZ3JvdXBfbGluZXM7CiAgICAgICAgbXkgJG1heGltdW1fZmllbGRfaW5kZXggPSAkZ3JvdXBfbGluZXNbMF0tPmdldF9qbWF4KCk7CiAgICAgICAgbXkgJHJmaWVsZHNfb2xkICAgICAgICAgPSAkZ3JvdXBfbGluZXNbMF0tPmdldF9yZmllbGRzKCk7CiAgICAgICAgbXkgJHRvayAgICAgICAgICAgICAgICAgPSAkcmZpZWxkc19vbGQtPlswXTsKICAgICAgICBwcmludCBTVERPVVQKIkFQUEVORDA6IG15X2ZsdXNoX2NvZGUgY2FsbGVkIGZyb20gJGEgJGIgJGMgZmllbGRzPSRtYXhpbXVtX2ZpZWxkX2luZGV4IGxpc3Q9JGdyb3VwX2xpc3RfdHlwZSBsaW5lcz0kbmxpbmVzIGV4dHJhPSRleHRyYV9pbmRlbnRfb2sgZmlyc3QgdG9rPSR0b2s7XG4iOwoKICAgICAgfTsKCiAgICAjIHNvbWUgc21hbGwgZ3JvdXBzIGFyZSBiZXN0IGxlZnQgdW5hbGlnbmVkCiAgICBteSAkZG9fbm90X2FsaWduID0gZGVjaWRlX2lmX2FsaWduZWRfcGFpcigpOwoKICAgICMgb3B0aW1pemUgc2lkZSBjb21tZW50IGxvY2F0aW9uCiAgICAkZG9fbm90X2FsaWduID0gYWRqdXN0X3NpZGVfY29tbWVudCgkZG9fbm90X2FsaWduKTsKCiAgICAjIHJlY292ZXIgc3BhY2VzIGZvciAtbHAgb3B0aW9uIGlmIHBvc3NpYmxlCiAgICBteSAkZXh0cmFfbGVhZGluZ19zcGFjZXMgPSBnZXRfZXh0cmFfbGVhZGluZ19zcGFjZXMoKTsKCiAgICAjIGFsbCBsaW5lcyBvZiB0aGlzIGdyb3VwIGhhdmUgdGhlIHNhbWUgYmFzaWMgbGVhZGluZyBzcGFjaW5nCiAgICBteSAkZ3JvdXBfbGVhZGVyX2xlbmd0aCA9ICRncm91cF9saW5lc1swXS0+Z2V0X2xlYWRpbmdfc3BhY2VfY291bnQoKTsKCiAgICAjIGFkZCBleHRyYSBsZWFkaW5nIHNwYWNlcyBpZiBoZWxwZnVsCiAgICAjIE5PVEU6IFVzZSB6ZXJvOyB0aGlzIGRpZCBub3Qgd29yayB3ZWxsCiAgICBteSAkbWluX2NpX2dhcCA9IDA7CgogICAgIyBvdXRwdXQgdGhlIGxpbmVzCiAgICBmb3JlYWNoIG15ICRsaW5lIChAZ3JvdXBfbGluZXMpIHsKICAgICAgICB2YWxpZ25fb3V0cHV0X3N0ZXBfQSggJGxpbmUsICRtaW5fY2lfZ2FwLCAkZG9fbm90X2FsaWduLAogICAgICAgICAgICAkZ3JvdXBfbGVhZGVyX2xlbmd0aCwgJGV4dHJhX2xlYWRpbmdfc3BhY2VzICk7CiAgICB9CgogICAgaW5pdGlhbGl6ZV9mb3JfbmV3X2dyb3VwKCk7CiAgICByZXR1cm47Cn0KCnN1YiBteV9mbHVzaCB7CgogICAgIyBUaGlzIGlzIHRoZSB2ZXJ0aWNhbCBhbGlnbmVyIGludGVybmFsIGZsdXNoLCB3aGljaCBsZWF2ZXMgdGhlIGNhY2hlCiAgICAjIGludGFjdAogICAgcmV0dXJuIHVubGVzcyAoQGdyb3VwX2xpbmVzKTsKCiAgICBWQUxJR05fREVCVUdfRkxBR19BUFBFTkQwICYmIGRvIHsKICAgICAgICBteSAoICRhLCAkYiwgJGMgKSA9IGNhbGxlcigpOwogICAgICAgIG15ICRubGluZXMgPSBAZ3JvdXBfbGluZXM7CiAgICAgICAgcHJpbnQgU1RET1VUCiJBUFBFTkQwOiBteV9mbHVzaCBjYWxsZWQgZnJvbSAkYSAkYiAkYyBsaW5lcz0kbmxpbmVzLCB0eXBlPSRncm91cF90eXBlIFxuIjsKICAgIH07CgogICAgIyBoYW5kbGUgYSBncm91cCBvZiBDT01NRU5UIGxpbmVzCiAgICBpZiAoICRncm91cF90eXBlIGVxICdDT01NRU5UJyApIHsgbXlfZmx1c2hfY29tbWVudCgpIH0KCiAgICAjIGhhbmRsZSBhIHNpbmdsZSBsaW5lIG9mIENPREUKICAgIGVsc2lmICggQGdyb3VwX2xpbmVzID09IDEgKSB7IG15X2ZsdXNoX2NvZGUoKSB9CgogICAgIyBoYW5kbGUgZ3JvdXAocykgb2YgQ09ERSBsaW5lcwogICAgZWxzZSB7CgogICAgICAgICMgTFAgRklYIFBBUlQgMQogICAgICAgICMgSWYgd2UgYXJlIHRyeWluZyB0byBhZGQgZXh0cmEgaW5kZW50YXRpb24gZm9yIC1scCBmb3JtYXR0aW5nLAogICAgICAgICMgdGhlbiB3ZSBuZWVkIHRvIHRyeSB0byBrZWVwIHRoZSBncm91cCBpbnRhY3QuICBCdXQgd2UgaGF2ZQogICAgICAgICMgdG8gc2V0IHRoZSAkZXh0cmFfaW5kZW50X29rIGZsYWcgdG8gemVybyBpbiBjYXNlIHNvbWUgbGluZXMKICAgICAgICAjIGFyZSBvdXRwdXQgc2VwYXJhdGVseS4gIFdlIGZpeCB0aGluZ3MgdXAgYXQgdGhlIGJvdHRvbS4KICAgICAgICAjIE5PVEU6IHRoaXMgaXMgYSB3b3JrYXJvdW5kIGJ1dCBpcyB0ZW50YXRpdmU7IHdlIHNob3VsZCByZWFsbHkgbG9vayB0bwogICAgICAgICMgc2VlIGlmIGlmIGV4dHJhIGluZGVudGF0aW9uIGlzIHBvc3NpYmxlLgogICAgICAgIG15ICRyT3B0X2xwICAgICAgICAgICAgICA9ICRyT3B0cy0+eydsaW5lLXVwLXBhcmVudGhlc2VzJ307CiAgICAgICAgbXkgJGtlZXBfZ3JvdXBfaW50YWN0ICAgID0gJHJPcHRfbHAgJiYgJGV4dHJhX2luZGVudF9vazsKICAgICAgICBteSAkZXh0cmFfaW5kZW50X29rX3NhdmUgPSAkZXh0cmFfaW5kZW50X29rOwogICAgICAgICRleHRyYV9pbmRlbnRfb2sgPSAwOwoKICAgICAgICAjIHdlIHdpbGwgcmVidWlsZCBhbGlnbm1lbnQgbGluZSBncm91cChzKTsKICAgICAgICBteSBAbmV3X2xpbmVzID0gQGdyb3VwX2xpbmVzOwogICAgICAgIGluaXRpYWxpemVfZm9yX25ld19ncm91cCgpOwoKICAgICAgICAjI215ICRoYXNfdGVybWluYWxfdGVybmFyeSA9ICRuZXdfbGluZXNbLTFdLT57X2lzX3Rlcm1pbmFsX3Rlcm5hcnl9OwoKICAgICAgICAjIHJlbW92ZSB1bm1hdGNoZWQgdG9rZW5zIGluIGFsbCBsaW5lcwogICAgICAgIGRlbGV0ZV91bm1hdGNoZWRfdG9rZW5zKCBcQG5ld19saW5lcyApOwoKICAgICAgICBmb3JlYWNoIG15ICRuZXdfbGluZSAoQG5ld19saW5lcykgewoKICAgICAgICAgICAgIyBTdGFydCBhIG5ldyBncm91cCBpZiBuZWNlc3NhcnkKICAgICAgICAgICAgaWYgKCAhQGdyb3VwX2xpbmVzICkgewogICAgICAgICAgICAgICAgYWRkX3RvX2dyb3VwKCRuZXdfbGluZSk7CgogICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJGpfdGVybWluYWxfbWF0Y2ggPSAkbmV3X2xpbmUtPmdldF9qX3Rlcm1pbmFsX21hdGNoKCk7CiAgICAgICAgICAgIG15ICRiYXNlX2xpbmUgICAgICAgID0gJGdyb3VwX2xpbmVzWzBdOwoKICAgICAgICAgICAgIyBJbml0aWFsaXplIGEgZ2xvYmFsIGZsYWcgc2F5aW5nIGlmIHRoZSBsYXN0IGxpbmUgb2YgdGhlIGdyb3VwCiAgICAgICAgICAgICMgc2hvdWxkIG1hdGNoIGVuZCBvZiBncm91cCBhbmQgYWxzbyB0ZXJtaW5hdGUgdGhlIGdyb3VwLiAgVGhlcmUKICAgICAgICAgICAgIyBzaG91bGQgYmUgbm8gcmV0dXJucyBiZXR3ZWVuIGhlcmUgYW5kIHdoZXJlIHRoZSBmbGFnIGlzIGhhbmRsZWQKICAgICAgICAgICAgIyBhdCB0aGUgYm90dG9tLgogICAgICAgICAgICBteSAkY29sX21hdGNoaW5nX3Rlcm1pbmFsID0gMDsKICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCRqX3Rlcm1pbmFsX21hdGNoKSApIHsKCiAgICAgICAgICAgICAgICAjIHJlbWVtYmVyIHRoZSBjb2x1bW4gb2YgdGhlIHRlcm1pbmFsID8gb3IgeyB0byBtYXRjaCB3aXRoCiAgICAgICAgICAgICAgICAkY29sX21hdGNoaW5nX3Rlcm1pbmFsID0KICAgICAgICAgICAgICAgICAgJGJhc2VfbGluZS0+Z2V0X2NvbHVtbigkal90ZXJtaW5hbF9tYXRjaCk7CgogICAgICAgICAgICAgICAgIyBzZXQgZ2xvYmFsIGZsYWcgZm9yIHN1YiBkZWNpZGVfaWZfYWxpZ25lZF9wYWlyCiAgICAgICAgICAgICAgICAkaXNfbWF0Y2hpbmdfdGVybWluYWxfbGluZSA9IDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAjIEFsbG93IGhhbmdpbmcgc2lkZSBjb21tZW50IHRvIGpvaW4gY3VycmVudCBncm91cCwgaWYgYW55LiBUaGlzCiAgICAgICAgICAgICMgd2lsbCBoZWxwIGtlZXAgc2lkZSBjb21tZW50cyBhbGlnbmVkLCBiZWNhdXNlIG90aGVyd2lzZSB3ZQogICAgICAgICAgICAjIHdpbGwgaGF2ZSB0byBzdGFydCBhIG5ldyBncm91cCwgbWFraW5nIGFsaWdubWVudCBsZXNzIGxpa2VseS4KICAgICAgICAgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICAgICAgICBpZiAoICRuZXdfbGluZS0+Z2V0X2lzX2hhbmdpbmdfc2lkZV9jb21tZW50KCkgKSB7CiAgICAgICAgICAgICAgICBqb2luX2hhbmdpbmdfY29tbWVudCggJG5ld19saW5lLCAkYmFzZV9saW5lICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgSWYgdGhpcyBsaW5lIGhhcyBubyBtYXRjaGluZyB0b2tlbnMsIHRoZW4gZmx1c2ggb3V0IHRoZSBsaW5lcwogICAgICAgICAgICAjIEJFRk9SRSB0aGlzIGxpbmUgdW5sZXNzIGJvdGggaXQgYW5kIHRoZSBwcmV2aW91cyBsaW5lIGhhdmUgc2lkZQogICAgICAgICAgICAjIGNvbW1lbnRzLiAgVGhpcyBwcmV2ZW50cyB0aGlzIGxpbmUgZnJvbSBwdXNoaW5nIHNpZGUgY29tZW50cyBvdXQKICAgICAgICAgICAgIyB0byB0aGUgcmlnaHQuCiAgICAgICAgICAgICMjZWxzaWYgKCAkbmV3X2xpbmUtPmdldF9qbWF4KCkgPT0gMSApIHsKICAgICAgICAgICAgZWxzaWYgKCAkbmV3X2xpbmUtPmdldF9qbWF4KCkgPT0gMSAmJiAhJGtlZXBfZ3JvdXBfaW50YWN0ICkgewoKICAgICAgICAgICAgICAgICMgVGhlcmUgYXJlIG5vIG1hdGNoaW5nIHRva2Vucywgc28gbm93IGNoZWNrIHNpZGUgY29tbWVudHM6CiAgICAgICAgICAgICAgICBteSAkcHJldl9jb21tZW50ID0gJGdyb3VwX2xpbmVzWy0xXS0+Z2V0X3JmaWVsZHMoKS0+Wy0xXTsKICAgICAgICAgICAgICAgIG15ICRzaWRlX2NvbW1lbnQgPSAkbmV3X2xpbmUtPmdldF9yZmllbGRzKCktPlstMV07CiAgICAgICAgICAgICAgICBteV9mbHVzaF9jb2RlKCkgdW5sZXNzICggJHNpZGVfY29tbWVudCAmJiAkcHJldl9jb21tZW50ICk7CgogICAgICAgICAgICB9CgogICAgICAgICAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgIyBJZiB0aGVyZSBpcyBqdXN0IG9uZSBwcmV2aW91cyBsaW5lLCBhbmQgaXQgaGFzIG1vcmUgZmllbGRzCiAgICAgICAgICAgICMgdGhhbiB0aGUgbmV3IGxpbmUsIHRyeSB0byBqb2luIGZpZWxkcyB0b2dldGhlciB0byBnZXQgYSBtYXRjaAogICAgICAgICAgICAjIHdpdGggdGhlIG5ldyBsaW5lLiAgQXQgdGhlIHByZXNlbnQgdGltZSwgb25seSBhIHNpbmdsZQogICAgICAgICAgICAjIGxlYWRpbmcgJz0nIGlzIGFsbG93ZWQgdG8gYmUgY29tcHJlc3NlZCBvdXQuICBUaGlzIGlzIHVzZWZ1bAogICAgICAgICAgICAjIGluIHJhcmUgY2FzZXMgd2hlcmUgYSB0YWJsZSBpcyBmb3JjZWQgdG8gdXNlIG9sZCBicmVha3BvaW50cwogICAgICAgICAgICAjIGJlY2F1c2Ugb2Ygc2lkZSBjb21tZW50cywKICAgICAgICAgICAgIyBhbmQgdGhlIHRhYmxlIHN0YXJ0cyBvdXQgc29tZXRoaW5nIGxpa2UgdGhpczoKICAgICAgICAgICAgIyAgIG15ICVNb250aENoYXJzID0gKCcwJywgJ0phbicsICAgIyBzaWRlIGNvbW1lbnQKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICcxJywgJ0ZlYicsCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAnMicsICdNYXInLAogICAgICAgICAgICAjIEVsaW1pbmF0aW5nIHRoZSAnPScgZmllbGQgd2lsbCBhbGxvdyB0aGUgcmVtYWluaW5nIGZpZWxkcyB0bwogICAgICAgICAgICAjIGxpbmUgdXAuICBUaGlzIHNpdHVhdGlvbiBkb2VzIG5vdCBvY2N1ciBpZiB0aGVyZSBhcmUgbm8gc2lkZQogICAgICAgICAgICAjIGNvbW1lbnRzIGJlY2F1c2Ugc2Nhbl9saXN0IHdvdWxkIHB1dCBhIGJyZWFrIGFmdGVyIHRoZQogICAgICAgICAgICAjIG9wZW5pbmcgJygnLgogICAgICAgICAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgICAgICAgIGVsaW1pbmF0ZV9vbGRfZmllbGRzKCAkbmV3X2xpbmUsICRiYXNlX2xpbmUgKTsKCiAgICAgICAgICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAjIElmIHRoZSBuZXcgbGluZSBoYXMgbW9yZSBmaWVsZHMgdGhhbiB0aGUgY3VycmVudCBncm91cCwKICAgICAgICAgICAgIyBzZWUgaWYgd2UgY2FuIG1hdGNoIHRoZSBmaXJzdCBmaWVsZHMgYW5kIGNvbWJpbmUgdGhlIHJlbWFpbmluZwogICAgICAgICAgICAjIGZpZWxkcyBvZiB0aGUgbmV3IGxpbmUuCiAgICAgICAgICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgICAgICAgZWxpbWluYXRlX25ld19maWVsZHMoICRuZXdfbGluZSwgJGJhc2VfbGluZSApOwoKICAgICAgICAgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICMgRmx1c2ggcHJldmlvdXMgZ3JvdXAgdW5sZXNzIGFsbCBjb21tb24gdG9rZW5zIGFuZCBwYXR0ZXJucwogICAgICAgICAgICAjIG1hdGNoLi4KCiAgICAgICAgICAgIGNoZWNrX21hdGNoKCAkbmV3X2xpbmUsICRiYXNlX2xpbmUgKTsKCiAgICAgICAgICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAjIFNlZSBpZiB0aGVyZSBpcyBzcGFjZSBmb3IgdGhpcyBsaW5lIGluIHRoZSBjdXJyZW50IGdyb3VwIChpZgogICAgICAgICAgICAjIGFueSkKICAgICAgICAgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgIGlmIChAZ3JvdXBfbGluZXMpIHsKICAgICAgICAgICAgICAgIGNoZWNrX2ZpdCggJG5ld19saW5lLCAkYmFzZV9saW5lICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGFkZF90b19ncm91cCgkbmV3X2xpbmUpOwoKICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCRqX3Rlcm1pbmFsX21hdGNoKSApIHsKCiAgICAgICAgICAgICAgICAjIGlmIHRoZXJlIGlzIG9ubHkgb25lIGxpbmUgaW4gdGhlIGdyb3VwIChtYXliZSBkdWUgdG8gZmFpbHVyZQogICAgICAgICAgICAgICAgIyB0byBtYXRjaCBwZXJmZWN0bHkgd2l0aCBwcmV2aW91cyBsaW5lcyksIHRoZW4gYWxpZ24gdGhlID8gb3IKICAgICAgICAgICAgICAgICMgeyBvZiB0aGlzIHRlcm1pbmFsIGxpbmUgd2l0aCB0aGUgcHJldmlvdXMgb25lIHVubGVzcyB0aGF0CiAgICAgICAgICAgICAgICAjIHdvdWxkIG1ha2UgdGhlIGxpbmUgdG9vIGxvbmcKICAgICAgICAgICAgICAgIGlmICggQGdyb3VwX2xpbmVzID09IDEgKSB7CiAgICAgICAgICAgICAgICAgICAgJGJhc2VfbGluZSA9ICRncm91cF9saW5lc1swXTsKICAgICAgICAgICAgICAgICAgICBteSAkY29sX25vdyA9ICRiYXNlX2xpbmUtPmdldF9jb2x1bW4oJGpfdGVybWluYWxfbWF0Y2gpOwogICAgICAgICAgICAgICAgICAgIG15ICRwYWQgICAgID0gJGNvbF9tYXRjaGluZ190ZXJtaW5hbCAtICRjb2xfbm93OwogICAgICAgICAgICAgICAgICAgIG15ICRwYWRkaW5nX2F2YWlsYWJsZSA9CiAgICAgICAgICAgICAgICAgICAgICAkYmFzZV9saW5lLT5nZXRfYXZhaWxhYmxlX3NwYWNlX29uX3JpZ2h0KCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkcGFkID4gMCAmJiAkcGFkIDw9ICRwYWRkaW5nX2F2YWlsYWJsZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGJhc2VfbGluZS0+aW5jcmVhc2VfZmllbGRfd2lkdGgoICRqX3Rlcm1pbmFsX21hdGNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhZCApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG15X2ZsdXNoX2NvZGUoKTsKICAgICAgICAgICAgICAgICRpc19tYXRjaGluZ190ZXJtaW5hbF9saW5lID0gMDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBPcHRpb25hbCBvcHRpbWl6YXRpb247IGVuZCB0aGUgZ3JvdXAgaWYgd2Uga25vdyB3ZSBjYW5ub3QgbWF0Y2gKICAgICAgICAgICAgIyBuZXh0IGxpbmUuCiAgICAgICAgICAgIGVsc2lmICggJG5ld19saW5lLT57X2VuZF9ncm91cH0gKSB7CiAgICAgICAgICAgICAgICBteV9mbHVzaF9jb2RlKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgTFAgRklYIFBBUlQgMgogICAgICAgICMgaWYgd2UgbWFuYWdlZCB0byBrZWVwIHRoZSBncm91cCBpbnRhY3QgZm9yIC1scCBmb3JtYXR0aW5nLAogICAgICAgICMgcmVzdG9yZSB0aGUgZmxhZyB3aGljaCBhbGxvd3MgZXh0cmEgaW5kZW50YXRpb24KICAgICAgICBpZiAoICRrZWVwX2dyb3VwX2ludGFjdCAmJiBAZ3JvdXBfbGluZXMgPT0gQG5ld19saW5lcyApIHsKICAgICAgICAgICAgJGV4dHJhX2luZGVudF9vayA9ICRleHRyYV9pbmRlbnRfb2tfc2F2ZTsKICAgICAgICB9CiAgICAgICAgbXlfZmx1c2hfY29kZSgpOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgZGVsZXRlX3NlbGVjdGVkX3Rva2VucyB7CgogICAgbXkgKCAkbGluZV9vYmosICRyaWRlbCApID0gQF87CgogICAgIyByZW1vdmUgYW4gdW51c2VkIGFsaWdubWVudCB0b2tlbihzKSB0byBpbXByb3ZlIGFsaWdubWVudCBjaGFuY2VzCiAgICByZXR1cm4gdW5sZXNzICggZGVmaW5lZCgkbGluZV9vYmopICYmIGRlZmluZWQoJHJpZGVsKSAmJiBAeyRyaWRlbH0gKTsKCiAgICBteSAkam1heF9vbGQgICAgICA9ICRsaW5lX29iai0+Z2V0X2ptYXgoKTsKICAgIG15ICRyZmllbGRzX29sZCAgID0gJGxpbmVfb2JqLT5nZXRfcmZpZWxkcygpOwogICAgbXkgJHJwYXR0ZXJuc19vbGQgPSAkbGluZV9vYmotPmdldF9ycGF0dGVybnMoKTsKICAgIG15ICRydG9rZW5zX29sZCAgID0gJGxpbmVfb2JqLT5nZXRfcnRva2VucygpOwoKICAgIGxvY2FsICQiID0gJz4gPCc7CiAgICAwICYmIHByaW50IDw8RU9NOwpkZWxldGUgaW5kZXhlczogPEB7JHJpZGVsfT4Kb2xkIGptYXg6ICRqbWF4X29sZApvbGQgdG9rZW5zOiA8QHskcnRva2Vuc19vbGR9PgpvbGQgcGF0dGVybnM6IDxAeyRycGF0dGVybnNfb2xkfT4Kb2xkIGZpZWxkczogPEB7JHJmaWVsZHNfb2xkfT4KRU9NCgogICAgbXkgJHJmaWVsZHNfbmV3ICAgPSBbXTsKICAgIG15ICRycGF0dGVybnNfbmV3ID0gW107CiAgICBteSAkcnRva2Vuc19uZXcgICA9IFtdOwoKICAgIG15ICRrbWF4ICAgICAgPSBAeyRyaWRlbH0gLSAxOwogICAgbXkgJGsgICAgICAgICA9IDA7CiAgICBteSAkamRlbF9uZXh0ID0gJHJpZGVsLT5bJGtdOwoKICAgICMgRklYTUU6CiAgICBpZiAoICRqZGVsX25leHQgPCAwICkgeyBwcmludCBTVERFUlIgImJhZCBqZGVsX25leHQ9JGpkZWxfbmV4dFxuIjsgcmV0dXJuIH0KICAgIG15ICRwYXR0ZXJuID0gJHJwYXR0ZXJuc19vbGQtPlswXTsKICAgIG15ICRmaWVsZCAgID0gJHJmaWVsZHNfb2xkLT5bMF07CiAgICBwdXNoIEB7JHJmaWVsZHNfbmV3fSwgICAkZmllbGQ7CiAgICBwdXNoIEB7JHJwYXR0ZXJuc19uZXd9LCAkcGF0dGVybjsKICAgIGZvciAoIG15ICRqID0gMCA7ICRqIDwgJGptYXhfb2xkIDsgJGorKyApIHsKICAgICAgICBteSAkdG9rZW4gICA9ICRydG9rZW5zX29sZC0+WyRqXTsKICAgICAgICBteSAkZmllbGQgICA9ICRyZmllbGRzX29sZC0+WyAkaiArIDEgXTsKICAgICAgICBteSAkcGF0dGVybiA9ICRycGF0dGVybnNfb2xkLT5bICRqICsgMSBdOwogICAgICAgIGlmICggJGsgPiAka21heCB8fCAkaiA8ICRqZGVsX25leHQgKSB7CiAgICAgICAgICAgIHB1c2ggQHskcnRva2Vuc19uZXd9LCAgICR0b2tlbjsKICAgICAgICAgICAgcHVzaCBAeyRyZmllbGRzX25ld30sICAgJGZpZWxkOwogICAgICAgICAgICBwdXNoIEB7JHJwYXR0ZXJuc19uZXd9LCAkcGF0dGVybjsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkaiA9PSAkamRlbF9uZXh0ICkgewogICAgICAgICAgICAkcmZpZWxkc19uZXctPlstMV0gICAuPSAkZmllbGQ7CiAgICAgICAgICAgICRycGF0dGVybnNfbmV3LT5bLTFdIC49ICRwYXR0ZXJuOwogICAgICAgICAgICBpZiAoICsrJGsgPD0gJGttYXggKSB7CiAgICAgICAgICAgICAgICBteSAkamRlbF9sYXN0ID0gJGpkZWxfbmV4dDsKICAgICAgICAgICAgICAgICRqZGVsX25leHQgPSAkcmlkZWwtPlska107CiAgICAgICAgICAgICAgICBpZiAoICRqZGVsX25leHQgPCAkamRlbF9sYXN0ICkgewoKICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOgogICAgICAgICAgICAgICAgICAgIHByaW50IFNUREVSUiAiYmFkIGpkZWxfbmV4dD0kamRlbF9uZXh0XG4iOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIC0tLS0tIHggLS0tLS0tIHggLS0tLS0tIHggLS0tLS0tCiAgICAjdCAgICAgIDAgICAgICAgIDEgICAgICAgIDIgICAgICAgIDwtIHRva2VuIGluZGV4aW5nCiAgICAjZiAgIDAgICAgICAxICAgICAgICAyICAgICAgICAzICAgIDwtIGZpZWxkIGFuZCBwYXR0ZXJuCgogICAgbXkgJGptYXhfbmV3ID0gQHskcmZpZWxkc19uZXd9IC0gMTsKICAgICRsaW5lX29iai0+c2V0X3J0b2tlbnMoJHJ0b2tlbnNfbmV3KTsKICAgICRsaW5lX29iai0+c2V0X3JwYXR0ZXJucygkcnBhdHRlcm5zX25ldyk7CiAgICAkbGluZV9vYmotPnNldF9yZmllbGRzKCRyZmllbGRzX25ldyk7CiAgICAkbGluZV9vYmotPnNldF9qbWF4KCRqbWF4X25ldyk7CgogICAgMCAmJiBwcmludCA8PEVPTTsKCm5ldyBqbWF4OiAkam1heF9uZXcKbmV3IHRva2VuczogPEB7JHJ0b2tlbnNfbmV3fT4KbmV3IHBhdHRlcm5zOiA8QHskcnBhdHRlcm5zX25ld30+Cm5ldyBmaWVsZHM6IDxAeyRyZmllbGRzX25ld30+CkVPTQogICAgcmV0dXJuOwp9CgpzdWIgZGVjb2RlX2FsaWdubWVudF90b2tlbiB7CgogICAgIyBVbnBhY2sgdGhlIHZhbHVlcyBwYWNrZWQgaW4gYW4gYWxpZ25tZW50IHRva2VuCiAgICAjCiAgICAjIFVzYWdlOgogICAgIyAgICAgICAgbXkgKCAkcmF3X3RvaywgJGxldiwgJHRhZywgJHRva19jb3VudCApID0KICAgICMgICAgICAgICAgZGVjb2RlX2FsaWdubWVudF90b2tlbigkdG9rZW4pOwoKICAgICMgQWxpZ25tZW50IHRva2VucyBoYXZlIGEgdHJhaWxpbmcgZGVjaW1hbCBsZXZlbCBhbmQgb3B0aW9uYWwgdGFnIChmb3IKICAgICMgY29tbWFzKToKICAgICMgRm9yIGV4YW1wbGUsIHRoZSBmaXJzdCBjb21tYSBpbiB0aGUgZm9sbG93aW5nIGxpbmUKICAgICMgICAgIHN1YiBiYW5uZXIgIHsgY3JsZjsgcmVwb3J0KCBzaGlmdCwgJy8nLCBzaGlmdCApOyBjcmxmIH0KICAgICMgaXMgZGVjb3JhdGVkIGFzIGZvbGxvd3M6CiAgICAjICAgICwyK3JlcG9ydC02ICA9PiAodG9rLGxldix0YWcpID1xdyggLCAgIDIgICArcmVwb3J0LTYpCgogICAgIyBBbiBvcHRpb25hbCB0b2tlbiBjb3VudCBtYXkgYmUgYXBwZW5kZWQgd2l0aCBhIGxlYWRpbmcgZG90LgogICAgIyBDdXJyZW50bHkgdGhpcyBpcyBvbmx5IGRvbmUgZm9yICc9JyB0b2tlbnMgYnV0IHRoaXMgY291bGQgY2hhbmdlLgogICAgIyBGb3IgZXhhbXBsZSwgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBsaW5lOgogICAgIyAgICRucG9ydCAgID0gJHBvcnQgPSBzaGlmdCB8fCAkbmFtZTsKICAgICMgVGhlIGZpcnN0ICc9JyBtYXkgZWl0aGVyIGJlICc9MCcgb3IgJz0wLjEnIFtsZXZlbCAwLCBmaXJzdCBlcXVhbHNdCiAgICAjIFRoZSBzZWNvbmQgJz0nIHdpbGwgYmUgJz0wLjInIFtsZXZlbCAwLCBzZWNvbmQgZXF1YWxzXQogICAgbXkgKCR0b2spID0gQF87CiAgICBteSAoICRyYXdfdG9rLCAkbGV2LCAkdGFnLCAkdG9rX2NvdW50ICkgPSAoICR0b2ssIDAsICIiLCAxICk7CiAgICBpZiAoICR0b2sgPX4gL14oXEQrKShcZCspKFteXC5dKikoXC4oXGQrKSk/JC8gKSB7CiAgICAgICAgJHJhd190b2sgICA9ICQxOwogICAgICAgICRsZXYgICAgICAgPSAkMjsKICAgICAgICAkdGFnICAgICAgID0gJDMgaWYgKCQzKTsKICAgICAgICAkdG9rX2NvdW50ID0gJDUgaWYgKCQ1KTsKICAgIH0KICAgIHJldHVybiAoICRyYXdfdG9rLCAkbGV2LCAkdGFnLCAkdG9rX2NvdW50ICk7Cn0KCnsgICAgIyBzdWIgaXNfZGVsZXRhYmxlX3Rva2VuCgogICAgbXkgJWlzX2RlbGV0YWJsZV9lcXVhbHM7CgogICAgQkVHSU4gewogICAgICAgIG15IEBxOwoKICAgICAgICAjIFRoZXNlIHRva2VucyB3aXRoID0gbWF5IGJlIGRlbGV0ZWQgZm9yIHZlcnRpY2FsIGFsaWdtbmVtdAogICAgICAgIEBxID0gcXcoCiAgICAgICAgICA8PSA+PSA9PSA9fiAhPSA8PT4KICAgICAgICApOwogICAgICAgIEBpc19kZWxldGFibGVfZXF1YWxze0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CgogICAgfQoKICAgIHN1YiBpc19kZWxldGFibGVfdG9rZW4gewoKICAgICAgICAjIERldGVybWluZSBpZiBhIHRva2VuIHdpdGggbm8gbWF0Y2ggcG9zc2liaWxpdHkgY2FuIGJlIHJlbW92ZWQgdG8KICAgICAgICAjIGltcHJvdmUgY2hhbmNlcyBvZiBtYWtpbmcgYW4gYWxpZ25tZW50LgogICAgICAgIG15ICggJHRva2VuLCAkaSwgJGltYXgsICRqbGluZSwgJGlfZXEgKSA9IEBfOwoKICAgICAgICBteSAoICRyYXdfdG9rLCAkbGV2LCAkdGFnLCAkdG9rX2NvdW50ICkgPQogICAgICAgICAgZGVjb2RlX2FsaWdubWVudF90b2tlbigkdG9rZW4pOwoKICAgICAgICAjIG9rYXkgdG8gZGVsZXRlIHNlY29uZCBhbmQgaGlnaGVyIGNvcGllcyBvZiBhIHRva2VuCiAgICAgICAgaWYgKCAkdG9rX2NvdW50ID4gMSApIHsgcmV0dXJuIDEgfQoKICAgICAgICAjIG9ubHkgcmVtb3ZlIGxvd2VyIGxldmVsIGNvbW1hcwogICAgICAgIGlmICggJHJhd190b2sgZXEgJywnICkgewoKICAgICAgICAgICAgcmV0dXJuIGlmICggZGVmaW5lZCgkaV9lcSkgJiYgJGkgPCAkaV9lcSApOwogICAgICAgICAgICByZXR1cm4gaWYgKCAkbGV2IDw9ICRncm91cF9sZXZlbCApOwogICAgICAgIH0KCiAgICAgICAgIyBtb3N0IG9wZXJhdG9ycyB3aXRoIGFuIGVxdWFscyBzaWduIHNob3VsZCBiZSByZXRhaW5lZCBpZiBhdAogICAgICAgICMgc2FtZSBsZXZlbCBhcyB0aGlzIHN0YXRlbWVudAogICAgICAgIGVsc2lmICggJHJhd190b2sgPX4gLz0vICkgewogICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICB1bmxlc3MgKCAkbGV2ID4gJGdyb3VwX2xldmVsIHx8ICRpc19kZWxldGFibGVfZXF1YWxzeyRyYXdfdG9rfSApOwogICAgICAgIH0KCiAgICAgICAgIyBvdGhlcndpc2UsIG9rIHRvIGRlbGV0ZSB0aGUgdG9rZW4KICAgICAgICByZXR1cm4gMTsKICAgIH0KfQoKc3ViIGRlbGV0ZV91bm1hdGNoZWRfdG9rZW5zIHsKICAgIG15ICgkcmxpbmVzKSA9IEBfOwoKICAgICMgVGhpcyBpcyBhIHByZWxpbWluYXJ5IHN0ZXAgaW4gdmVydGljYWwgYWxpZ25tZW50IGluIHdoaWNoIHdlIHJlbW92ZSBhcwogICAgIyBtYW55IG9idmlvdXNseSB1bi1uZWVkZWQgYWxpZ25tZW50IHRva2VucyBhcyBwb3NzaWJsZS4gIFRoaXMgd2lsbCBwcmV2ZW50CiAgICAjIHRoZW0gZnJvbSBpbnRlcmZlcmluZyB3aXRoIHRoZSBmaW5hbCBhbGlnbm1lbnQuCgogICAgcmV0dXJuIHVubGVzcyBAeyRybGluZXN9OwogICAgbXkgJGhhc190ZXJtaW5hbF9tYXRjaCA9ICRybGluZXMtPlstMV0tPmdldF9qX3Rlcm1pbmFsX21hdGNoKCk7CgogICAgIyBpZ25vcmUgaGFuZ2luZyBzaWRlIGNvbW1lbnRzIGluIHRoZXNlIG9wZXJhdGlvbnMKICAgIG15IEBmaWx0ZXJlZCAgID0gZ3JlcCB7ICEkXy0+e19pc19oYW5naW5nX3NpZGVfY29tbWVudH0gfSBAeyRybGluZXN9OwogICAgbXkgJHJuZXdfbGluZXMgPSBcQGZpbHRlcmVkOwogICAgbXkgQGlfZXF1YWxzOwogICAgbXkgQG1pbl9sZXZlbHM7CgogICAgbXkgJGptYXggPSBAeyRybmV3X2xpbmVzfSAtIDE7CgogICAgbXkgJWlzX2dvb2RfdG9rOwoKICAgICMgY3JlYXRlIGEgaGFzaCBvZiB0b2tlbnMgZm9yIGVhY2ggbGluZQogICAgbXkgJHJsaW5lX2hhc2hlcyA9IFtdOwogICAgZm9yZWFjaCBteSAkbGluZSAoIEB7JHJuZXdfbGluZXN9ICkgewogICAgICAgIG15ICRyaGFzaCAgID0ge307CiAgICAgICAgbXkgJHJ0b2tlbnMgPSAkbGluZS0+Z2V0X3J0b2tlbnMoKTsKICAgICAgICBteSAkaSAgICAgICA9IDA7CiAgICAgICAgbXkgJGlfZXE7CiAgICAgICAgbXkgJGxldl9taW47CiAgICAgICAgZm9yZWFjaCBteSAkdG9rICggQHskcnRva2Vuc30gKSB7CiAgICAgICAgICAgIG15ICggJHJhd190b2ssICRsZXYsICR0YWcsICR0b2tfY291bnQgKSA9CiAgICAgICAgICAgICAgZGVjb2RlX2FsaWdubWVudF90b2tlbigkdG9rKTsKICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCgkbGV2X21pbikgfHwgJGxldiA8ICRsZXZfbWluICkgeyAkbGV2X21pbiA9ICRsZXYgfQoKICAgICAgICAgICAgIyBQb3NzaWJsZSBmdXR1cmUgdXBncmFkZTogZm9yIG11bHRpcGxlIG1hdGNoZXMsCiAgICAgICAgICAgICMgcmVjb3JkIFskaTEsICRpMiwgLi5dIGluc3RlYWQgb2YgJGkKICAgICAgICAgICAgJHJoYXNoLT57JHRva30gPQogICAgICAgICAgICAgIFsgJGksIHVuZGVmLCB1bmRlZiwgJHJhd190b2ssICRsZXYsICR0YWcsICR0b2tfY291bnQgXTsKCiAgICAgICAgICAgICMgcmVtZW1iZXIgdGhlIGZpcnN0IGVxdWFscyBhdCBsaW5lIGxldmVsCiAgICAgICAgICAgIGlmICggIWRlZmluZWQoJGlfZXEpICYmICRyYXdfdG9rIGVxICc9JyApIHsKICAgICAgICAgICAgICAgIGlmICggJGxldiBlcSAkZ3JvdXBfbGV2ZWwgKSB7ICRpX2VxID0gJGkgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRpKys7CiAgICAgICAgfQogICAgICAgIHB1c2ggQHskcmxpbmVfaGFzaGVzfSwgJHJoYXNoOwogICAgICAgIHB1c2ggQGlfZXF1YWxzLCAgICRpX2VxOwogICAgICAgIHB1c2ggQG1pbl9sZXZlbHMsICRsZXZfbWluOwogICAgfQoKICAgICMgY29tcGFyZSBlYWNoIGxpbmUgcGFpciBhbmQgcmVjb3JkIG1hdGNoZXMKICAgIG15ICRydG9rX2hhc2ggPSB7fTsKICAgIG15ICRuciAgICAgICAgPSAwOwogICAgZm9yICggbXkgJGpsID0gMCA7ICRqbCA8ICRqbWF4IDsgJGpsKysgKSB7CiAgICAgICAgbXkgJG5sID0gJG5yOwogICAgICAgICRuciA9IDA7CiAgICAgICAgbXkgJGpyICAgICAgPSAkamwgKyAxOwogICAgICAgIG15ICRyaGFzaF9sID0gJHJsaW5lX2hhc2hlcy0+WyRqbF07CiAgICAgICAgbXkgJHJoYXNoX3IgPSAkcmxpbmVfaGFzaGVzLT5bJGpyXTsKICAgICAgICBteSAkY291bnQgICA9IDA7ICAgICAgICAgICAgICAgICAgICAgICMgVU5VU0VEIE5PVz8KICAgICAgICBteSAkbnRva3MgICA9IDA7CiAgICAgICAgZm9yZWFjaCBteSAkdG9rICgga2V5cyAleyRyaGFzaF9sfSApIHsKICAgICAgICAgICAgJG50b2tzKys7CiAgICAgICAgICAgIGlmICggZGVmaW5lZCggJHJoYXNoX3ItPnskdG9rfSApICkgewogICAgICAgICAgICAgICAgaWYgKCAkdG9rIG5lICcjJyApIHsgJGNvdW50Kys7IH0KICAgICAgICAgICAgICAgIG15ICRpbCA9ICRyaGFzaF9sLT57JHRva30tPlswXTsKICAgICAgICAgICAgICAgIG15ICRpciA9ICRyaGFzaF9yLT57JHRva30tPlswXTsKICAgICAgICAgICAgICAgICRyaGFzaF9sLT57JHRva30tPlsyXSA9ICRpcjsKICAgICAgICAgICAgICAgICRyaGFzaF9yLT57JHRva30tPlsxXSA9ICRpbDsKICAgICAgICAgICAgICAgIGlmICggJHRvayBuZSAnIycgKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAeyAkcnRva19oYXNoLT57JHRva30gfSwgKCAkamwsICRqciApOwogICAgICAgICAgICAgICAgICAgICRucisrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIFNldCBhIGxpbmUgYnJlYWsgaWYgbm8gbWF0Y2hpbmcgdG9rZW5zIGJldHdlZW4gdGhlc2UgbGluZXMKICAgICAgICBpZiAoICRuciA9PSAwICYmICRubCA+IDAgKSB7CiAgICAgICAgICAgICRybmV3X2xpbmVzLT5bJGpsXS0+e19lbmRfZ3JvdXB9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgIyBmaW5kIHN1Ymdyb3VwcwogICAgbXkgQHN1Ymdyb3VwczsKICAgIHB1c2ggQHN1Ymdyb3VwcywgWyAwLCAkam1heCBdOwogICAgZm9yICggbXkgJGpsID0gMCA7ICRqbCA8ICRqbWF4IDsgJGpsKysgKSB7CiAgICAgICAgaWYgKCAkcm5ld19saW5lcy0+WyRqbF0tPntfZW5kX2dyb3VwfSApIHsKICAgICAgICAgICAgJHN1Ymdyb3Vwc1stMV0tPlsxXSA9ICRqbDsKICAgICAgICAgICAgcHVzaCBAc3ViZ3JvdXBzLCBbICRqbCArIDEsICRqbWF4IF07CiAgICAgICAgfQogICAgfQoKICAgICMgTG9vcCB0byBwcm9jZXNzIGVhY2ggc3ViZ3JvdXBzCiAgICBmb3JlYWNoIG15ICRpdGVtIChAc3ViZ3JvdXBzKSB7CiAgICAgICAgbXkgKCAkamJlZywgJGplbmQgKSA9IEB7JGl0ZW19OwoKICAgICAgICAjIGxvb2sgZm9yIGNvbXBsZXRlIHRlcm5hcnkgb3IgaWYvZWxzaWYvZWxzZSBibG9ja3MKICAgICAgICBteSAkbmxpbmVzID0gJGplbmQgLSAkamJlZyArIDE7CiAgICAgICAgbXkgJXRva2VuX2xpbmVfY291bnQ7CiAgICAgICAgZm9yICggbXkgJGpqID0gJGpiZWcgOyAkamogPD0gJGplbmQgOyAkamorKyApIHsKICAgICAgICAgICAgbXkgJXNlZW47CiAgICAgICAgICAgIG15ICRsaW5lICAgID0gJHJuZXdfbGluZXMtPlskampdOwogICAgICAgICAgICBteSAkcnRva2VucyA9ICRsaW5lLT5nZXRfcnRva2VucygpOwogICAgICAgICAgICBmb3JlYWNoIG15ICR0b2sgKCBAeyRydG9rZW5zfSApIHsKICAgICAgICAgICAgICAgIGlmICggISRzZWVueyR0b2t9ICkgewogICAgICAgICAgICAgICAgICAgICRzZWVueyR0b2t9Kys7CiAgICAgICAgICAgICAgICAgICAgJHRva2VuX2xpbmVfY291bnR7JHRva30rKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBMb29rIGZvciBpZi9lbHNlL2Vsc2lmIGFuZCB0ZXJuYXJ5IGJsb2NrcwogICAgICAgIG15ICRpc19mdWxsX2Jsb2NrOwogICAgICAgIGZvcmVhY2ggbXkgJHRvayAoIGtleXMgJXRva2VuX2xpbmVfY291bnQgKSB7CiAgICAgICAgICAgIGlmICggJHRva2VuX2xpbmVfY291bnR7JHRva30gPT0gJG5saW5lcyApIHsKICAgICAgICAgICAgICAgIGlmICggJHRvayA9fiAvXlw/LyB8fCAkdG9rID1+IC9eXHtcZCtpZi8gKSB7CiAgICAgICAgICAgICAgICAgICAgJGlzX2Z1bGxfYmxvY2sgPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHJlbW92ZSB1bndhbnRlZCBhbGlnbm1lbnQgdG9rZW5zCiAgICAgICAgZm9yICggbXkgJGpqID0gJGpiZWcgOyAkamogPD0gJGplbmQgOyAkamorKyApIHsKICAgICAgICAgICAgbXkgJGxpbmUgICAgPSAkcm5ld19saW5lcy0+WyRqal07CiAgICAgICAgICAgIG15ICRydG9rZW5zID0gJGxpbmUtPmdldF9ydG9rZW5zKCk7CiAgICAgICAgICAgIG15ICRyaGFzaCAgID0gJHJsaW5lX2hhc2hlcy0+WyRqal07CiAgICAgICAgICAgIG15ICRpICAgICAgID0gMDsKICAgICAgICAgICAgbXkgJGlfZXEgICAgPSAkaV9lcXVhbHNbJGpqXTsKICAgICAgICAgICAgbXkgQGlkZWw7CiAgICAgICAgICAgIG15ICRpbWF4ID0gQHskcnRva2Vuc30gLSAyOwogICAgICAgICAgICBteSAkZGVsZXRlX2Fib3ZlX2xldmVsOwoKICAgICAgICAgICAgZm9yICggbXkgJGkgPSAwIDsgJGkgPD0gJGltYXggOyAkaSsrICkgewogICAgICAgICAgICAgICAgbXkgJHRvayA9ICRydG9rZW5zLT5bJGldOwogICAgICAgICAgICAgICAgbmV4dCBpZiAoICR0b2sgZXEgJyMnICk7ICAgICMgc2hvdWxkbid0IGhhcHBlbgogICAgICAgICAgICAgICAgbXkgKCAkaWlpLCAkaWwsICRpciwgJHJhd190b2ssICRsZXYsICR0YWcsICR0b2tfY291bnQgKSA9CiAgICAgICAgICAgICAgICAgIEB7ICRyaGFzaC0+eyR0b2t9IH07CgogICAgICAgICAgICAgICAgIyBhbHdheXMgcmVtb3ZlIHVubWF0Y2hlZCB0b2tlbnMKICAgICAgICAgICAgICAgIG15ICRkZWxldGVfbWUgPSAhZGVmaW5lZCgkaWwpICYmICFkZWZpbmVkKCRpcik7CgogICAgICAgICAgICAgICAgIyBhbHNvLCBpZiB0aGlzIGlzIGEgY29tcGxldGUgdGVybmFyeSBvciBpZi9lbHNpZi9lbHNlIGJsb2NrLAogICAgICAgICAgICAgICAgIyByZW1vdmUgYWxsIGFsaWdubWVudHMgd2hpY2ggYXJlIG5vdCBhbHNvIGluIGV2ZXJ5IGxpbmUKICAgICAgICAgICAgICAgICRkZWxldGVfbWUgfHw9CiAgICAgICAgICAgICAgICAgICggJGlzX2Z1bGxfYmxvY2sgJiYgJHRva2VuX2xpbmVfY291bnR7JHRva30gPCAkbmxpbmVzICk7CgogICAgICAgICAgICAgICAgIyBSZW1vdmUgYWxsIHRva2VucyBhYm92ZSBhIGNlcnRhaW4gbGV2ZWwgZm9sbG93aW5nIGEgcHJldmlvdXMKICAgICAgICAgICAgICAgICMgZGVsZXRpb24uICBGb3IgZXhhbXBsZSwgd2UgaGF2ZSB0byByZW1vdmUgdGFnZ2VkIGhpZ2hlciBsZXZlbAogICAgICAgICAgICAgICAgIyBhbGlnbm1lbnQgdG9rZW5zIGZvbGxvd2luZyBhID0+IGRlbGV0aW9uIGJlY2F1c2UgdGhlIHRhZ3Mgb2YKICAgICAgICAgICAgICAgICMgaGlnaGVyIGxldmVsIHRva2VucyB3aWxsIG5vdyBiZSBpbmNvcnJlY3QuIEZvciBleGFtcGxlLCB0aGlzCiAgICAgICAgICAgICAgICAjIHdpbGwgcHJldmVudCBhbGlnbmluZyBjb21tYXMgYXMgZm9sbG93cyBhZnRlciBkZWxldGluZyB0aGUKICAgICAgICAgICAgICAgICMgc2Vjb25kID0+CiAgICAgICAgICAgICAgICAjICAgICR3LT5pbnNlcnQoCiAgICAgICAgICAgICAgICAjCUxpc3RCb3ggPT4gb3JpZ2luID0+IFsgMjcwLCAxNjAgXSwKICAgICAgICAgICAgICAgICMJc2l6ZSAgICA9PiBbIDIwMCwgICAgICAgICAgIDU1IF0sCiAgICAgICAgICAgICAgICAjICAgICk7CiAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQoJGRlbGV0ZV9hYm92ZV9sZXZlbCkgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkbGV2ID4gJGRlbGV0ZV9hYm92ZV9sZXZlbCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGRlbGV0ZV9tZSB8fD0gMTsgICAgIyR0YWc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgeyAkZGVsZXRlX2Fib3ZlX2xldmVsID0gdW5kZWYgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkZGVsZXRlX21lCiAgICAgICAgICAgICAgICAgICAgJiYgaXNfZGVsZXRhYmxlX3Rva2VuKCAkdG9rLCAkaSwgJGltYXgsICRqaiwgJGlfZXEgKQoKICAgICAgICAgICAgICAgICAgICAjIFBhdGNoOiBkbyBub3QgdG91Y2ggdGhlIGZpcnN0IGxpbmUgb2YgYSB0ZXJtaW5hbCBtYXRjaCwKICAgICAgICAgICAgICAgICAgICAjIHN1Y2ggYXMgYmVsb3csIGJlY2F1c2Ugal90ZXJtaW5hbCBoYXMgYWxyZWFkeSBiZWVuIHNldC4KICAgICAgICAgICAgICAgICAgICAjICAgIGlmICgkdGFnKSB7ICR0YWdvID0gIjwkdGFnPiI7ICR0YWdjID0gIjwvJHRhZz4iOyB9CiAgICAgICAgICAgICAgICAgICAgIyAgICBlbHNlICAgICAgeyAkdGFnbyA9ICR0YWdjID0gJyc7IH0KICAgICAgICAgICAgICAgICAgICAjIEJ1dCBzZWUgc25pcHBldHMgJ2Vsc2UxLnQnIGFuZCAnZWxzZTIudCcKICAgICAgICAgICAgICAgICAgICAmJiAhKCAkamogPT0gJGpiZWcgJiYgJGhhc190ZXJtaW5hbF9tYXRjaCAmJiAkbmxpbmVzID09IDIgKQoKICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQGlkZWwsICRpOwogICAgICAgICAgICAgICAgICAgIGlmICggIWRlZmluZWQoJGRlbGV0ZV9hYm92ZV9sZXZlbCkKICAgICAgICAgICAgICAgICAgICAgICAgfHwgJGxldiA8ICRkZWxldGVfYWJvdmVfbGV2ZWwgKQogICAgICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgZGVsZXRlIGFsbCBmb2xsb3dpbmcgaGlnaGVyIGxldmVsIGFsaWdubWVudHMKICAgICAgICAgICAgICAgICAgICAgICAgJGRlbGV0ZV9hYm92ZV9sZXZlbCA9ICRsZXY7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGJ1dCBrZWVwIGRlbGV0aW5nIGFmdGVyID0+IHRvIG5leHQgbG93ZXIgbGV2ZWwKICAgICAgICAgICAgICAgICAgICAgICAgIyB0byBhdm9pZCBzb21lIGJpemFycmUgYWxpZ25tZW50cwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRyYXdfdG9rIGVxICc9PicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGVsZXRlX2Fib3ZlX2xldmVsID0gJGxldiAtIDE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChAaWRlbCkgeyBkZWxldGVfc2VsZWN0ZWRfdG9rZW5zKCAkbGluZSwgXEBpZGVsICkgfQogICAgICAgIH0KICAgIH0gICAgIyBFbmQgbG9vcCBvdmVyIHN1Ymdyb3VwcwoKICAgIHJldHVybjsKfQoKeyAgICAgICAgIyBkZWNpZGVfaWZfYWxpZ25lZF9wYWlyCgogICAgbXkgJWlzX2lmX29yOwogICAgbXkgJWlzX2Fzc2lnbm1lbnQ7CgogICAgQkVHSU4gewoKICAgICAgICBteSBAcSA9IHF3KAogICAgICAgICAgaWYgb3IgfHwKICAgICAgICApOwogICAgICAgIEBpc19pZl9vcntAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgICAgICBAcSA9IHF3KAogICAgICAgICAgPSAqKj0gKz0gKj0gJj0gPDw9ICYmPQogICAgICAgICAgLT0gLz0gfD0gPj49IHx8PSAvLz0KICAgICAgICAgIC49ICU9IF49CiAgICAgICAgICB4PQogICAgICAgICk7CiAgICAgICAgQGlzX2Fzc2lnbm1lbnR7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKICAgIH0KCiAgICBzdWIgZGVjaWRlX2lmX2FsaWduZWRfcGFpciB7CgogICAgICAgICMgRG8gbm90IHRyeSB0byBhbGlnbiB0d28gbGluZXMgd2hpY2ggYXJlIG5vdCByZWFsbHkgc2ltaWxhcgogICAgICAgIHJldHVybiB1bmxlc3MgKCBAZ3JvdXBfbGluZXMgPT0gMiApOwogICAgICAgIHJldHVybiBpZiAoJGlzX21hdGNoaW5nX3Rlcm1pbmFsX2xpbmUpOwoKICAgICAgICAjIGFsd2F5cyBhbGlnbiBsaXN0cwogICAgICAgIG15ICRncm91cF9saXN0X3R5cGUgPSAkZ3JvdXBfbGluZXNbMF0tPmdldF9saXN0X3R5cGUoKTsKICAgICAgICByZXR1cm4gMCBpZiAoJGdyb3VwX2xpc3RfdHlwZSk7CgogICAgICAgIG15ICRqbWF4MCAgICAgICAgICA9ICRncm91cF9saW5lc1swXS0+Z2V0X2ptYXgoKTsKICAgICAgICBteSAkam1heDEgICAgICAgICAgPSAkZ3JvdXBfbGluZXNbMV0tPmdldF9qbWF4KCk7CiAgICAgICAgbXkgJHJ0b2tlbnMgICAgICAgID0gJGdyb3VwX2xpbmVzWzBdLT5nZXRfcnRva2VucygpOwogICAgICAgIG15ICRsZWFkaW5nX2VxdWFscyA9ICggJHJ0b2tlbnMtPlswXSA9fiAvPS8gKTsKCiAgICAgICAgIyBzY2FuIHRoZSB0b2tlbnMgb24gdGhlIHNlY29uZCBsaW5lCiAgICAgICAgbXkgJHJ0b2tlbnMxID0gJGdyb3VwX2xpbmVzWzFdLT5nZXRfcnRva2VucygpOwogICAgICAgIG15ICRzYXdfaWZfb3I7ICAgICMgaWYgd2Ugc2F3IGFuICdpZicgb3IgJ29yJyBhdCBncm91cCBsZXZlbAogICAgICAgIG15ICRyYXdfdG9rYiA9ICIiOyAgICAjIGZpcnN0IHRva2VuIHNlZW4gYXQgZ3JvdXAgbGV2ZWwKICAgICAgICBmb3IgKCBteSAkaiA9IDAgOyAkaiA8ICRqbWF4MSAtIDEgOyAkaisrICkgewogICAgICAgICAgICBteSAoICRyYXdfdG9rLCAkbGV2LCAkdGFnLCAkdG9rX2NvdW50ICkgPQogICAgICAgICAgICAgIGRlY29kZV9hbGlnbm1lbnRfdG9rZW4oICRydG9rZW5zMS0+WyRqXSApOwogICAgICAgICAgICBpZiAoICRyYXdfdG9rICYmICRsZXYgPT0gJGdyb3VwX2xldmVsICkgewogICAgICAgICAgICAgICAgaWYgKCAhJHJhd190b2tiICkgeyAkcmF3X3Rva2IgPSAkcmF3X3RvayB9CiAgICAgICAgICAgICAgICAkc2F3X2lmX29yIHx8PSAkaXNfaWZfb3J7JHJhd190b2t9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIEEgbWFyZ2luYWwgbWF0Y2ggaXMgYSBtYXRjaCB3aGljaCBoYXMgZGlmZmVyZW50IHBhdHRlcm5zLiBOb3JtYWxseSwKICAgICAgICAjIHdlIHNob3VsZCBub3QgYWxsb3cgZXhhY3RseSB0d28gbGluZXMgdG8gbWF0Y2ggaWYgbWFyZ2luYWwuIEJ1dAogICAgICAgICMgd2UgY2FuIGFsbG93IG1hdGNoaW5nIGluIHNvbWUgc3BlY2lmaWMgY2FzZXMuCiAgICAgICAgbXkgJGlzX21hcmdpbmFsID0gJG1hcmdpbmFsX21hdGNoOwoKICAgICAgICAjIGxpbmVzIHdpdGggZGlmZmVyaW5nIG51bWJlciBvZiBhbGlnbm1lbnQgdG9rZW5zIGFyZSBtYXJnaW5hbAogICAgICAgICRpc19tYXJnaW5hbCB8fD0KICAgICAgICAgICRwcmV2aW91c19tYXhpbXVtX2ptYXhfc2VlbiAhPSAkcHJldmlvdXNfbWluaW11bV9qbWF4X3NlZW4KICAgICAgICAgICYmICEkaXNfYXNzaWdubWVudHskcmF3X3Rva2J9OwoKICAgICAgICAjIFdlIHdpbGwgdXNlIHRoZSBsaW5lIGVuZGluZ3MgdG8gaGVscCBkZWNpZGUgb24gYWxpZ25tZW50cy4uLgogICAgICAgICMgU2VlIGlmIHRoZSBsaW5lcyBlbmQgd2l0aCBzZW1pY29sb25zLi4uCiAgICAgICAgbXkgJHJwYXR0ZXJuczAgPSAkZ3JvdXBfbGluZXNbMF0tPmdldF9ycGF0dGVybnMoKTsKICAgICAgICBteSAkcnBhdHRlcm5zMSA9ICRncm91cF9saW5lc1sxXS0+Z2V0X3JwYXR0ZXJucygpOwogICAgICAgIG15ICRzY190ZXJtMDsKICAgICAgICBteSAkc2NfdGVybTE7CiAgICAgICAgaWYgKCAkam1heDAgPCAxIHx8ICRqbWF4MSA8IDEgKSB7CgogICAgICAgICAgICAjIHNob3VsZG4ndCBoYXBwZW4KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG15ICRwYXQwID0gJHJwYXR0ZXJuczAtPlsgJGptYXgwIC0gMSBdOwogICAgICAgICAgICBteSAkcGF0MSA9ICRycGF0dGVybnMxLT5bICRqbWF4MSAtIDEgXTsKICAgICAgICAgICAgJHNjX3Rlcm0wID0gJHBhdDAgPX4gLztiPyQvOwogICAgICAgICAgICAkc2NfdGVybTEgPSAkcGF0MSA9fiAvO2I/JC87CiAgICAgICAgfQoKICAgICAgICBpZiAoICEkaXNfbWFyZ2luYWwgJiYgISRzY190ZXJtMCApIHsKCiAgICAgICAgICAgICMgRmlyc3QgbGluZSBvZiBhc3NpZ25tZW50IHNob3VsZCBiZSBzZW1pY29sb24gdGVybWluYXRlZC4KICAgICAgICAgICAgIyBGb3IgZXhhbXBsZSwgZG8gbm90IGFsaWduIGhlcmU6CiAgICAgICAgICAgICMgICQkaHJlZnstTlVNX1RFWFRfRklMRVN9ID0gJCRocmVmey1OVU1fQklOQVJZX0ZJTEVTfSA9CiAgICAgICAgICAgICMgICAgJCRocmVmey1OVU1fRElSU30gPSAwOwogICAgICAgICAgICBpZiAoICRpc19hc3NpZ25tZW50eyRyYXdfdG9rYn0gKSB7CiAgICAgICAgICAgICAgICAkaXNfbWFyZ2luYWwgPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIFRyeSB0byBhdm9pZCBzb21lIHVuZGVzaXJhYmxlIGFsaWdubWVudHMgb2Ygb3BlbmluZyB0b2tlbnMKICAgICAgICAjIGZvciBleGFtcGxlLCB0aGUgc3BhY2UgYmV0d2VlbiBncmVwIGFuZCB7IGhlcmU6CiAgICAgICAgIyAgcmV0dXJuIG1hcCB7ICggJF8gPT4gJF8gKSB9CiAgICAgICAgIyAgICBncmVwICAgICB7IC8kaGFuZGxlcy8gfSAkc2VsZi0+X2dldF9kZWxlZ2F0ZV9tZXRob2RfbGlzdDsKICAgICAgICAkaXNfbWFyZ2luYWwgfHw9CiAgICAgICAgICAgICAoICRyYXdfdG9rYiBlcSAnKCcgfHwgJHJhd190b2tiIGVxICd7JyApCiAgICAgICAgICAmJiAkam1heDEgPT0gMgogICAgICAgICAgJiYgJHNjX3Rlcm0wIG5lICRzY190ZXJtMTsKCiAgICAgICAgIyBVbmRvIHRoZSBtYXJnaW5hbCBtYXRjaCBmbGFnIGluIGNlcnRhaW4gY2FzZXMsCiAgICAgICAgaWYgKCRpc19tYXJnaW5hbCkgewoKICAgICAgICAgICAgIyBUd28gbGluZXMgd2l0aCBhIGxlYWRpbmcgZXF1YWxzLWxpa2Ugb3BlcmF0b3IgYXJlIGFsbG93ZWQgdG8KICAgICAgICAgICAgIyBhbGlnbiBpZiB0aGUgcGF0dGVybnMgdG8gdGhlIGxlZnQgb2YgdGhlIGVxdWFscyBhcmUgdGhlIHNhbWUuCiAgICAgICAgICAgICMgRm9yIGV4YW1wbGUgdGhlIGZvbGxvd2luZyB0d28gbGluZXMgYXJlIGEgbWFyZ2luYWwgbWF0Y2ggYnV0IGhhdmUKICAgICAgICAgICAgIyB0aGUgc2FtZSBsZWZ0IHNpZGUgcGF0dGVybnMsIHNvIHdlIHdpbGwgYWxpZ24gdGhlIGVxdWFscy4KICAgICAgICAgICAgIyAgICAgbXkgJG9yaWcgPSBteSAkZm9ybWF0ID0gIl48PDw8PCB+flxuIjsKICAgICAgICAgICAgIyAgICAgbXkgJGFiYyAgPSAiYWJjIjsKICAgICAgICAgICAgIyBCdXQgdGhlc2UgaGF2ZSBhIGRpZmZlcmVudCBsZWZ0IHBhdHRlcm4gc28gdGhleSB3aWxsIG5vdCBiZQogICAgICAgICAgICAjIGFsaWduZWQKICAgICAgICAgICAgIyAgICAgJHhtbGRvYyAuPSAkYDsKICAgICAgICAgICAgIyAgICAgJHNlbGYtPnsnbGVmdG92ZXJzJ30gLj0gIjxieC1zZXE6c2VxIiAuICQnOwoKICAgICAgICAgICAgIyBGaXJzdCBsaW5lIHNlbWljb2xvbiB0ZXJtaW5hdGVkIGJ1dCBzZWNvbmQgbm90LCB1c3VhbGx5IG9rOgogICAgICAgICAgICAjICAgICAgICAgICAgICAgbXkgJHdhbnQgPSAiJ2FiJywgJ2EnLCAnYiciOwogICAgICAgICAgICAjICAgICAgICAgICAgICAgbXkgJGdvdCAgPSBqb2luKCAiLCAiLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICBtYXAgeyBkZWZpbmVkKCRfKSA/ICInJF8nIiA6ICJ1bmRlZiIgfQogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICBAZ290ICk7CiAgICAgICAgICAgICMgIEZpcnN0IGxpbmUgbm90IHNlbWljb2xvbiB0ZXJtaW5hdGVkLCBOb3QgT0sgdG8gbWF0Y2g6CiAgICAgICAgICAgICMgICAkJGhyZWZ7LU5VTV9URVhUX0ZJTEVTfSA9ICQkaHJlZnstTlVNX0JJTkFSWV9GSUxFU30gPQogICAgICAgICAgICAjICAgICAgJCRocmVmey1OVU1fRElSU30gPSAwOwogICAgICAgICAgICBteSAkcGF0MCA9ICRycGF0dGVybnMwLT5bMF07CiAgICAgICAgICAgIG15ICRwYXQxID0gJHJwYXR0ZXJuczEtPlswXTsKCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAgICAgIyBUdXJuIG9mZiB0aGUgbWFyZ2luYWwgZmxhZyBmb3Igc29tZSB0eXBlcyBvZiBhc3NpZ25tZW50cwogICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgICAgIGlmICggJGlzX2Fzc2lnbm1lbnR7JHJhd190b2tifSApIHsKCiAgICAgICAgICAgICAgICAjIHVuZG8gbWFyZ2luYWwgZmxhZyBpZiBmaXJzdCBsaW5lIGlzIHNlbWljb2xvbiB0ZXJtaW5hdGVkCiAgICAgICAgICAgICAgICAjIGFuZCBsZWFkaW5nIHBhdHRlcnMgbWF0Y2gKICAgICAgICAgICAgICAgIGlmICgkc2NfdGVybTApIHsgICAgIyAmJiAkc2NfdGVybTEpIHsKICAgICAgICAgICAgICAgICAgICAkaXNfbWFyZ2luYWwgPSAkcGF0MCBuZSAkcGF0MTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRyYXdfdG9rYiBlcSAnPT4nICkgewoKICAgICAgICAgICAgICAgICMgdW5kbyBtYXJnaW5hbCBmbGFnIGlmIHBhdHRlcm5zIG1hdGNoCiAgICAgICAgICAgICAgICAkaXNfbWFyZ2luYWwgPSAkcGF0MCBuZSAkcGF0MTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRyYXdfdG9rYiBlcSAnPX4nICkgewoKICAgICAgICAgICAgICAgICMgdW5kbyBtYXJnaW5hbCBmbGFnIGlmIGJvdGggbGluZXMgYXJlIHNlbWljb2xvbiB0ZXJtaW5hdGVkCiAgICAgICAgICAgICAgICAjIGFuZCBsZWFkaW5nIHBhdHRlcnMgbWF0Y2gKICAgICAgICAgICAgICAgIGlmICggJHNjX3Rlcm0xICYmICRzY190ZXJtMCApIHsKICAgICAgICAgICAgICAgICAgICAkaXNfbWFyZ2luYWwgPSAkcGF0MCBuZSAkcGF0MTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgICAgICMgVHVybiBvZmYgdGhlIG1hcmdpbmFsIGZsYWcgaWYgd2Ugc2F3IGFuICdpZicgb3IgJ29yJwogICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgICAgICMgQSB0cmFpbGluZyAnaWYnIGFuZCAnb3InIG9mdGVuIGdpdmVzIGEgZ29vZCBhbGlnbm1lbnQKICAgICAgICAgICAgIyBGb3IgZXhhbXBsZSwgd2UgY2FuIGFsaWduIHRoZXNlOgogICAgICAgICAgICAjICByZXR1cm4gLTEgICAgIGlmICRfWzBdID1+IG0vXkNIQVBUfEFQUEVORElYLzsKICAgICAgICAgICAgIyAgcmV0dXJuICQxICsgMCBpZiAkX1swXSA9fiBtL15TRUNUKFxkKikkLzsKCiAgICAgICAgICAgICMgb3IKICAgICAgICAgICAgIyAgJGRfaW5fbVsyXSA9IDI5ICAgICAgICAgIGlmICggJkRhdGVfTGVhcFllYXIoJHkpICk7CiAgICAgICAgICAgICMgICRkICAgICAgICAgPSAkZF9pbl9tWyRtXSBpZiAoICRkID4gJGRfaW5fbVskbV0gKTsKCiAgICAgICAgICAgIGlmICgkc2F3X2lmX29yKSB7CgogICAgICAgICAgICAgICAgIyB1bmRvIG1hcmdpbmFsIGZsYWcgaWYgYm90aCBsaW5lcyBhcmUgc2VtaWNvbG9uIHRlcm1pbmF0ZWQKICAgICAgICAgICAgICAgIGlmICggJHNjX3Rlcm0wICYmICRzY190ZXJtMSApIHsKICAgICAgICAgICAgICAgICAgICAkaXNfbWFyZ2luYWwgPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBTZXQgdGhlIHJldHVybiBmbGFnOgogICAgICAgICMgRG9uJ3QgYWxpZ24gaWYgc3RpbGwgbWFyZ2luYWwKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgbXkgJGRvX25vdF9hbGlnbiA9ICRpc19tYXJnaW5hbDsKCiAgICAgICAgIyBCdXQgdHJ5IHRvIGNvbnZlcnQgdGhlbSBpbnRvIGEgc2ltcGxlIGNvbW1lbnQgZ3JvdXAgaWYgdGhlIGZpcnN0IGxpbmUKICAgICAgICAjIGEgaGFzIHNpZGUgY29tbWVudAogICAgICAgIG15ICRyZmllbGRzICAgICAgICAgICAgID0gJGdyb3VwX2xpbmVzWzBdLT5nZXRfcmZpZWxkcygpOwogICAgICAgIG15ICRtYXhpbXVtX2ZpZWxkX2luZGV4ID0gJGdyb3VwX2xpbmVzWzBdLT5nZXRfam1heCgpOwogICAgICAgIGlmICggJGRvX25vdF9hbGlnbgogICAgICAgICAgICAmJiAoIGxlbmd0aCggJHJmaWVsZHMtPlskbWF4aW11bV9maWVsZF9pbmRleF0gKSA+IDAgKSApCiAgICAgICAgewogICAgICAgICAgICBjb21iaW5lX2ZpZWxkcygpOwogICAgICAgICAgICAkZG9fbm90X2FsaWduID0gMDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRkb19ub3RfYWxpZ247CiAgICB9Cn0KCnN1YiBhZGp1c3Rfc2lkZV9jb21tZW50IHsKCiAgICBteSAkZG9fbm90X2FsaWduID0gc2hpZnQ7CgogICAgIyBsZXQncyBzZWUgaWYgd2UgY2FuIG1vdmUgdGhlIHNpZGUgY29tbWVudCBmaWVsZCBvdXQgYSBsaXR0bGUKICAgICMgdG8gaW1wcm92ZSByZWFkYWJpbGl0eSAodGhlIGxhc3QgZmllbGQgaXMgYWx3YXlzIGEgc2lkZSBjb21tZW50IGZpZWxkKQogICAgbXkgJGhhdmVfc2lkZV9jb21tZW50ICAgICAgID0gMDsKICAgIG15ICRmaXJzdF9zaWRlX2NvbW1lbnRfbGluZSA9IC0xOwogICAgbXkgJG1heGltdW1fZmllbGRfaW5kZXggICAgID0gJGdyb3VwX2xpbmVzWzBdLT5nZXRfam1heCgpOwogICAgbXkgJGkgICAgICAgICAgICAgICAgICAgICAgID0gMDsKICAgIGZvcmVhY2ggbXkgJGxpbmUgKEBncm91cF9saW5lcykgewogICAgICAgIGlmICggbGVuZ3RoKCAkbGluZS0+Z2V0X3JmaWVsZHMoKS0+WyRtYXhpbXVtX2ZpZWxkX2luZGV4XSApICkgewogICAgICAgICAgICAkaGF2ZV9zaWRlX2NvbW1lbnQgICAgICAgPSAxOwogICAgICAgICAgICAkZmlyc3Rfc2lkZV9jb21tZW50X2xpbmUgPSAkaTsKICAgICAgICAgICAgbGFzdDsKICAgICAgICB9CiAgICAgICAgJGkrKzsKICAgIH0KCiAgICBteSAka21heCA9ICRtYXhpbXVtX2ZpZWxkX2luZGV4ICsgMTsKCiAgICBpZiAoJGhhdmVfc2lkZV9jb21tZW50KSB7CgogICAgICAgIG15ICRsaW5lID0gJGdyb3VwX2xpbmVzWzBdOwoKICAgICAgICAjIHRoZSBtYXhpbXVtIHNwYWNlIHdpdGhvdXQgZXhjZWVkaW5nIHRoZSBsaW5lIGxlbmd0aDoKICAgICAgICBteSAkYXZhaWwgPSAkbGluZS0+Z2V0X2F2YWlsYWJsZV9zcGFjZV9vbl9yaWdodCgpOwoKICAgICAgICAjIHRyeSB0byB1c2UgdGhlIHByZXZpb3VzIGNvbW1lbnQgY29sdW1uCiAgICAgICAgbXkgJHNpZGVfY29tbWVudF9jb2x1bW4gPSAkbGluZS0+Z2V0X2NvbHVtbiggJGttYXggLSAyICk7CiAgICAgICAgbXkgJG1vdmUgICAgICAgICAgICAgICAgPSAkbGFzdF9jb21tZW50X2NvbHVtbiAtICRzaWRlX2NvbW1lbnRfY29sdW1uOwoKIyMgICAgICAgIG15ICRzY19saW5lMCA9ICRzaWRlX2NvbW1lbnRfaGlzdG9yeVswXS0+WzBdOwojIyAgICAgICAgbXkgJHNjX2NvbDAgID0gJHNpZGVfY29tbWVudF9oaXN0b3J5WzBdLT5bMV07CiMjICAgICAgICBteSAkc2NfbGluZTEgPSAkc2lkZV9jb21tZW50X2hpc3RvcnlbMV0tPlswXTsKIyMgICAgICAgIG15ICRzY19jb2wxICA9ICRzaWRlX2NvbW1lbnRfaGlzdG9yeVsxXS0+WzFdOwojIyAgICAgICAgbXkgJHNjX2xpbmUyID0gJHNpZGVfY29tbWVudF9oaXN0b3J5WzJdLT5bMF07CiMjICAgICAgICBteSAkc2NfY29sMiAgPSAkc2lkZV9jb21tZW50X2hpc3RvcnlbMl0tPlsxXTsKIyMKIyMgICAgICAgICMgRlVUVVJFIFVQREFURVM6CiMjICAgICAgICAjIEJlIHN1cmUgdG8gaWdub3JlICdkbyBub3QgYWxpZ24nIGFuZCAgJ30gIyBlbmQgY29tbWVudHMnCiMjICAgICAgICAjIEZpbmQgZmlyc3QgJG1vdmUgPiAwIGFuZCAkbW92ZSA8PSAkYXZhaWwgYXMgZm9sbG93czoKIyMgICAgICAgICMgMS4gdHJ5IHNjX2NvbDEgaWYgc2NfY29sMSA9PSBzY19jb2wwICYmIChsaW5lLXNjX2xpbmUwKSA8IDEyCiMjICAgICAgICAjIDIuIHRyeSBzY19jb2wyIGlmIChsaW5lLXNjX2xpbmUyKSA8IDEyCiMjICAgICAgICAjIDMuIHRyeSBtaW4gcG9zc2libGUgc3BhY2UsIHBsdXMgdXAgdG8gOCwKIyMgICAgICAgICMgNC4gdHJ5IG1pbiBwb3NzaWJsZSBzcGFjZQoKICAgICAgICBpZiAoICRrbWF4ID4gMCAmJiAhJGRvX25vdF9hbGlnbiApIHsKCiAgICAgICAgICAgICMgYnV0IGlmIHRoaXMgZG9lc24ndCB3b3JrLCBnaXZlIHVwIGFuZCB1c2UgdGhlIG1pbmltdW0gc3BhY2UKICAgICAgICAgICAgaWYgKCAkbW92ZSA+ICRhdmFpbCApIHsKICAgICAgICAgICAgICAgICRtb3ZlID0gJHJPcHRzX21pbmltdW1fc3BhY2VfdG9fY29tbWVudCAtIDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYnV0IHdlIHdhbnQgc29tZSBtaW5pbXVtIHNwYWNlIHRvIHRoZSBjb21tZW50CiAgICAgICAgICAgIG15ICRtaW5fbW92ZSA9ICRyT3B0c19taW5pbXVtX3NwYWNlX3RvX2NvbW1lbnQgLSAxOwogICAgICAgICAgICBpZiAoICAgJG1vdmUgPj0gMAogICAgICAgICAgICAgICAgJiYgJGxhc3Rfc2lkZV9jb21tZW50X2xlbmd0aCA+IDAKICAgICAgICAgICAgICAgICYmICggJGZpcnN0X3NpZGVfY29tbWVudF9saW5lID09IDAgKQogICAgICAgICAgICAgICAgJiYgJGdyb3VwX2xldmVsID09ICRsYXN0X2xldmVsX3dyaXR0ZW4gKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkbWluX21vdmUgPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRtb3ZlIDwgJG1pbl9tb3ZlICkgewogICAgICAgICAgICAgICAgJG1vdmUgPSAkbWluX21vdmU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcHJldmlvdXNseSwgYW4gdXBwZXIgYm91bmQgd2FzIHBsYWNlZCBvbiAkbW92ZSBoZXJlLAogICAgICAgICAgICAjIChtYXhpbXVtX3NwYWNlX3RvX2NvbW1lbnQpLCBidXQgaXQgd2FzIG5vdCBoZWxwZnVsCgogICAgICAgICAgICAjIGRvbid0IGV4Y2VlZCB0aGUgYXZhaWxhYmxlIHNwYWNlCiAgICAgICAgICAgIGlmICggJG1vdmUgPiAkYXZhaWwgKSB7ICRtb3ZlID0gJGF2YWlsIH0KCiAgICAgICAgICAgICMgd2UgY2FuIG9ubHkgaW5jcmVhc2Ugc3BhY2UsIG5ldmVyIGRlY3JlYXNlCiAgICAgICAgICAgIGlmICggJG1vdmUgPiAwICkgewogICAgICAgICAgICAgICAgJGxpbmUtPmluY3JlYXNlX2ZpZWxkX3dpZHRoKCAkbWF4aW11bV9maWVsZF9pbmRleCAtIDEsICRtb3ZlICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmVtZW1iZXIgdGhpcyBjb2x1bW4gZm9yIHRoZSBuZXh0IGdyb3VwCiAgICAgICAgICAgICRsYXN0X2NvbW1lbnRfY29sdW1uID0gJGxpbmUtPmdldF9jb2x1bW4oICRrbWF4IC0gMiApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgdHJ5IHRvIGF0IGxlYXN0IGxpbmUgdXAgdGhlIGV4aXN0aW5nIHNpZGUgY29tbWVudCBsb2NhdGlvbgogICAgICAgICAgICBpZiAoICRrbWF4ID4gMCAmJiAkbW92ZSA+IDAgJiYgJG1vdmUgPCAkYXZhaWwgKSB7CiAgICAgICAgICAgICAgICAkbGluZS0+aW5jcmVhc2VfZmllbGRfd2lkdGgoICRtYXhpbXVtX2ZpZWxkX2luZGV4IC0gMSwgJG1vdmUgKTsKICAgICAgICAgICAgICAgICRkb19ub3RfYWxpZ24gPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHJlc2V0IHNpZGUgY29tbWVudCBjb2x1bW4gaWYgd2UgY2FuJ3QgYWxpZ24KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBmb3JnZXRfc2lkZV9jb21tZW50KCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gJGRvX25vdF9hbGlnbjsKfQoKc3ViIHZhbGlnbl9vdXRwdXRfc3RlcF9BIHsKCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMgVGhpcyBpcyBTdGVwIEEgaW4gd3JpdGluZyB2ZXJ0aWNhbGx5IGFsaWduZWQgbGluZXMuCiAgICAjIFRoZSBsaW5lIGlzIHByZXBhcmVkIGFjY29yZGluZyB0byB0aGUgYWxpZ25tZW50cyB3aGljaCBoYXZlCiAgICAjIGJlZW4gZm91bmQuIFRoZW4gaXQgaXMgc2hpcHBlZCB0byB0aGUgbmV4dCBzdGVwLgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgbXkgKCAkbGluZSwgJG1pbl9jaV9nYXAsICRkb19ub3RfYWxpZ24sICRncm91cF9sZWFkZXJfbGVuZ3RoLAogICAgICAgICRleHRyYV9sZWFkaW5nX3NwYWNlcyApCiAgICAgID0gQF87CiAgICBteSAkcmZpZWxkcyAgICAgICAgICAgICAgICAgICA9ICRsaW5lLT5nZXRfcmZpZWxkcygpOwogICAgbXkgJGxlYWRpbmdfc3BhY2VfY291bnQgICAgICAgPSAkbGluZS0+Z2V0X2xlYWRpbmdfc3BhY2VfY291bnQoKTsKICAgIG15ICRvdXRkZW50X2xvbmdfbGluZXMgICAgICAgID0gJGxpbmUtPmdldF9vdXRkZW50X2xvbmdfbGluZXMoKTsKICAgIG15ICRtYXhpbXVtX2ZpZWxkX2luZGV4ICAgICAgID0gJGxpbmUtPmdldF9qbWF4KCk7CiAgICBteSAkcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFncyA9ICRsaW5lLT5nZXRfcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFncygpOwoKICAgICMgYWRkIGFueSBleHRyYSBzcGFjZXMKICAgIGlmICggJGxlYWRpbmdfc3BhY2VfY291bnQgPiAkZ3JvdXBfbGVhZGVyX2xlbmd0aCApIHsKICAgICAgICAkbGVhZGluZ19zcGFjZV9jb3VudCArPSAkbWluX2NpX2dhcDsKICAgIH0KCiAgICBteSAkc3RyID0gJHJmaWVsZHMtPlswXTsKCiAgICAjIGxvb3AgdG8gY29uY2F0ZW5hdGUgYWxsIGZpZWxkcyBvZiB0aGlzIGxpbmUgYW5kIG5lZWRlZCBwYWRkaW5nCiAgICBteSAkdG90YWxfcGFkX2NvdW50ID0gMDsKICAgIGZvciBteSAkaiAoIDEgLi4gJG1heGltdW1fZmllbGRfaW5kZXggKSB7CgogICAgICAgICMgc2tpcCB6ZXJvLWxlbmd0aCBzaWRlIGNvbW1lbnRzCiAgICAgICAgbGFzdAogICAgICAgICAgaWYgKAogICAgICAgICAgICAoICRqID09ICRtYXhpbXVtX2ZpZWxkX2luZGV4ICkKICAgICAgICAgICAgJiYgKCAhZGVmaW5lZCggJHJmaWVsZHMtPlskal0gKQogICAgICAgICAgICAgICAgfHwgKCBsZW5ndGgoICRyZmllbGRzLT5bJGpdICkgPT0gMCApICkKICAgICAgICAgICk7CgogICAgICAgICMgY29tcHV0ZSBzcGFjZXMgb2YgcGFkZGluZyBiZWZvcmUgdGhpcyBmaWVsZAogICAgICAgIG15ICRjb2wgPSAkbGluZS0+Z2V0X2NvbHVtbiggJGogLSAxICk7CiAgICAgICAgbXkgJHBhZCA9ICRjb2wgLSAoIGxlbmd0aCgkc3RyKSArICRsZWFkaW5nX3NwYWNlX2NvdW50ICk7CgogICAgICAgIGlmICgkZG9fbm90X2FsaWduKSB7CiAgICAgICAgICAgICRwYWQgPQogICAgICAgICAgICAgICggJGogPCAkbWF4aW11bV9maWVsZF9pbmRleCApCiAgICAgICAgICAgICAgPyAwCiAgICAgICAgICAgICAgOiAkck9wdHNfbWluaW11bV9zcGFjZV90b19jb21tZW50IC0gMTsKICAgICAgICB9CgogICAgICAgICMgaWYgdGhlIC1mcHNjIGZsYWcgaXMgc2V0LCBtb3ZlIHRoZSBzaWRlIGNvbW1lbnQgdG8gdGhlIHNlbGVjdGVkCiAgICAgICAgIyBjb2x1bW4gaWYgYW5kIG9ubHkgaWYgaXQgaXMgcG9zc2libGUsIGlnbm9yaW5nIGNvbnN0cmFpbnRzIG9uCiAgICAgICAgIyBsaW5lIGxlbmd0aCBhbmQgbWluaW11bSBzcGFjZSB0byBjb21tZW50CiAgICAgICAgaWYgKCAkck9wdHNfZml4ZWRfcG9zaXRpb25fc2lkZV9jb21tZW50ICYmICRqID09ICRtYXhpbXVtX2ZpZWxkX2luZGV4ICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRuZXdwYWQgPSAkcGFkICsgJHJPcHRzX2ZpeGVkX3Bvc2l0aW9uX3NpZGVfY29tbWVudCAtICRjb2wgLSAxOwogICAgICAgICAgICBpZiAoICRuZXdwYWQgPj0gMCApIHsgJHBhZCA9ICRuZXdwYWQ7IH0KICAgICAgICB9CgogICAgICAgICMgYWNjdW11bGF0ZSB0aGUgcGFkZGluZwogICAgICAgIGlmICggJHBhZCA+IDAgKSB7ICR0b3RhbF9wYWRfY291bnQgKz0gJHBhZDsgfQoKICAgICAgICAjIGFkZCB0aGlzIGZpZWxkCiAgICAgICAgaWYgKCAhZGVmaW5lZCAkcmZpZWxkcy0+WyRqXSApIHsKICAgICAgICAgICAgd3JpdGVfZGlhZ25vc3RpY3MoIlVOREVGaW5lZCBmaWVsZCBhdCBqPSRqXG4iKTsKICAgICAgICB9CgogICAgICAgICMgb25seSBhZGQgcGFkZGluZyB3aGVuIHdlIGhhdmUgYSBmaW5pdGUgZmllbGQ7CiAgICAgICAgIyB0aGlzIGF2b2lkcyBleHRyYSB0ZXJtaW5hbCBzcGFjZXMgaWYgd2UgaGF2ZSBlbXB0eSBmaWVsZHMKICAgICAgICBpZiAoIGxlbmd0aCggJHJmaWVsZHMtPlskal0gKSA+IDAgKSB7CiAgICAgICAgICAgICRzdHIgLj0gJyAnIHggJHRvdGFsX3BhZF9jb3VudDsKICAgICAgICAgICAgJHRvdGFsX3BhZF9jb3VudCA9IDA7CiAgICAgICAgICAgICRzdHIgLj0gJHJmaWVsZHMtPlskal07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkdG90YWxfcGFkX2NvdW50ID0gMDsKICAgICAgICB9CgogICAgICAgICMgdXBkYXRlIHNpZGUgY29tbWVudCBoaXN0b3J5IGJ1ZmZlcgogICAgICAgIGlmICggJGogPT0gJG1heGltdW1fZmllbGRfaW5kZXggKSB7CiAgICAgICAgICAgIG15ICRsaW5lbm8gPSAkZmlsZV93cml0ZXJfb2JqZWN0LT5nZXRfb3V0cHV0X2xpbmVfbnVtYmVyKCk7CiAgICAgICAgICAgIHNoaWZ0IEBzaWRlX2NvbW1lbnRfaGlzdG9yeTsKICAgICAgICAgICAgcHVzaCBAc2lkZV9jb21tZW50X2hpc3RvcnksIFsgJGxpbmVubywgJGNvbCBdOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkc2lkZV9jb21tZW50X2xlbmd0aCA9ICggbGVuZ3RoKCAkcmZpZWxkcy0+WyRtYXhpbXVtX2ZpZWxkX2luZGV4XSApICk7CgogICAgIyBzaGlwIHRoaXMgbGluZSBvZmYKICAgIHZhbGlnbl9vdXRwdXRfc3RlcF9CKCAkbGVhZGluZ19zcGFjZV9jb3VudCArICRleHRyYV9sZWFkaW5nX3NwYWNlcywKICAgICAgICAkc3RyLCAkc2lkZV9jb21tZW50X2xlbmd0aCwgJG91dGRlbnRfbG9uZ19saW5lcywKICAgICAgICAkcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFncywgJGdyb3VwX2xldmVsICk7CiAgICByZXR1cm47Cn0KCnN1YiBnZXRfZXh0cmFfbGVhZGluZ19zcGFjZXMgewoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIERlZmluZSBhbnkgZXh0cmEgaW5kZW50YXRpb24gc3BhY2UgKGZvciB0aGUgLWxwIG9wdGlvbikuCiAgICAjIEhlcmUgaXMgd2h5OgogICAgIyBJZiBhIGxpc3QgaGFzIHNpZGUgY29tbWVudHMsIHN1YiBzY2FuX2xpc3QgbXVzdCBkdW1wIHRoZQogICAgIyBsaXN0IGJlZm9yZSBpdCBzZWVzIGV2ZXJ5dGhpbmcuICBXaGVuIHRoaXMgaGFwcGVucywgaXQgc2V0cwogICAgIyB0aGUgaW5kZW50YXRpb24gdG8gdGhlIHN0YW5kYXJkIHNjaGVtZSwgYnV0IG5vdGVzIGhvdwogICAgIyBtYW55IHNwYWNlcyBpdCB3b3VsZCBoYXZlIGxpa2VkIHRvIHVzZS4gIFdlIG1heSBiZSBhYmxlCiAgICAjIHRvIHJlY292ZXIgdGhhdCBzcGFjZSBoZXJlIGluIHRoZSBldmVudCB0aGF0IGFsbCBvZiB0aGUKICAgICMgbGluZXMgb2YgYSBsaXN0IGFyZSBiYWNrIHRvZ2V0aGVyIGFnYWluLgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBteSAkZXh0cmFfbGVhZGluZ19zcGFjZXMgPSAwOwogICAgaWYgKCRleHRyYV9pbmRlbnRfb2spIHsKICAgICAgICBteSAkb2JqZWN0ID0gJGdyb3VwX2xpbmVzWzBdLT5nZXRfaW5kZW50YXRpb24oKTsKICAgICAgICBpZiAoIHJlZigkb2JqZWN0KSApIHsKICAgICAgICAgICAgbXkgJGV4dHJhX2luZGVudGF0aW9uX3NwYWNlc193YW50ZWQgPQogICAgICAgICAgICAgIGdldF9yZWNvdmVyYWJsZV9zcGFjZXMoJG9iamVjdCk7CgogICAgICAgICAgICAjIGFsbCBpbmRlbnRhdGlvbiBvYmplY3RzIG11c3QgYmUgdGhlIHNhbWUKICAgICAgICAgICAgZm9yIG15ICRpICggMSAuLiBAZ3JvdXBfbGluZXMgLSAxICkgewogICAgICAgICAgICAgICAgaWYgKCAkb2JqZWN0ICE9ICRncm91cF9saW5lc1skaV0tPmdldF9pbmRlbnRhdGlvbigpICkgewogICAgICAgICAgICAgICAgICAgICRleHRyYV9pbmRlbnRhdGlvbl9zcGFjZXNfd2FudGVkID0gMDsKICAgICAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGV4dHJhX2luZGVudGF0aW9uX3NwYWNlc193YW50ZWQpIHsKCiAgICAgICAgICAgICAgICAjIHRoZSBtYXhpbXVtIHNwYWNlIHdpdGhvdXQgZXhjZWVkaW5nIHRoZSBsaW5lIGxlbmd0aDoKICAgICAgICAgICAgICAgIG15ICRhdmFpbCA9ICRncm91cF9saW5lc1swXS0+Z2V0X2F2YWlsYWJsZV9zcGFjZV9vbl9yaWdodCgpOwogICAgICAgICAgICAgICAgJGV4dHJhX2xlYWRpbmdfc3BhY2VzID0KICAgICAgICAgICAgICAgICAgKCAkYXZhaWwgPiAkZXh0cmFfaW5kZW50YXRpb25fc3BhY2VzX3dhbnRlZCApCiAgICAgICAgICAgICAgICAgID8gJGV4dHJhX2luZGVudGF0aW9uX3NwYWNlc193YW50ZWQKICAgICAgICAgICAgICAgICAgOiAkYXZhaWw7CgogICAgICAgICAgICAgICAgIyB1cGRhdGUgdGhlIGluZGVudGF0aW9uIG9iamVjdCBiZWNhdXNlIHdpdGggLWljcCB0aGUgdGVybWluYWwKICAgICAgICAgICAgICAgICMgJyk7JyB3aWxsIHVzZSB0aGUgc2FtZSBhZGp1c3RtZW50LgogICAgICAgICAgICAgICAgJG9iamVjdC0+cGVybWFuZW50bHlfZGVjcmVhc2VfYXZhaWxhYmxlX3NwYWNlcygKICAgICAgICAgICAgICAgICAgICAtJGV4dHJhX2xlYWRpbmdfc3BhY2VzICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gJGV4dHJhX2xlYWRpbmdfc3BhY2VzOwp9CgpzdWIgY29tYmluZV9maWVsZHMgewoKICAgICMgY29tYmluZSBhbGwgZmllbGRzIGV4Y2VwdCBmb3IgdGhlIGNvbW1lbnQgZmllbGQgICggc2lkZWNtdC50ICkKICAgICMgVXNlcyBnbG9iYWwgdmFyaWFibGVzOgogICAgIyAgQGdyb3VwX2xpbmVzCiAgICBteSAkbWF4aW11bV9maWVsZF9pbmRleCA9ICRncm91cF9saW5lc1swXS0+Z2V0X2ptYXgoKTsKICAgIGZvcmVhY2ggbXkgJGxpbmUgKEBncm91cF9saW5lcykgewogICAgICAgIG15ICRyZmllbGRzID0gJGxpbmUtPmdldF9yZmllbGRzKCk7CiAgICAgICAgZm9yZWFjaCAoIDEgLi4gJG1heGltdW1fZmllbGRfaW5kZXggLSAxICkgewogICAgICAgICAgICAkcmZpZWxkcy0+WzBdIC49ICRyZmllbGRzLT5bJF9dOwogICAgICAgIH0KICAgICAgICAkcmZpZWxkcy0+WzFdID0gJHJmaWVsZHMtPlskbWF4aW11bV9maWVsZF9pbmRleF07CgogICAgICAgICRsaW5lLT5zZXRfam1heCgxKTsKICAgICAgICAkbGluZS0+c2V0X2NvbHVtbiggMCwgMCApOwogICAgICAgICRsaW5lLT5zZXRfY29sdW1uKCAxLCAwICk7CgogICAgfQogICAgJG1heGltdW1fZmllbGRfaW5kZXggPSAxOwoKICAgIGZvcmVhY2ggbXkgJGxpbmUgKEBncm91cF9saW5lcykgewogICAgICAgIG15ICRyZmllbGRzID0gJGxpbmUtPmdldF9yZmllbGRzKCk7CiAgICAgICAgZm9yIG15ICRrICggMCAuLiAkbWF4aW11bV9maWVsZF9pbmRleCApIHsKICAgICAgICAgICAgbXkgJHBhZCA9IGxlbmd0aCggJHJmaWVsZHMtPlska10gKSAtICRsaW5lLT5jdXJyZW50X2ZpZWxkX3dpZHRoKCRrKTsKICAgICAgICAgICAgaWYgKCAkayA9PSAwICkgewogICAgICAgICAgICAgICAgJHBhZCArPSAkbGluZS0+Z2V0X2xlYWRpbmdfc3BhY2VfY291bnQoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkcGFkID4gMCApIHsgJGxpbmUtPmluY3JlYXNlX2ZpZWxkX3dpZHRoKCAkaywgJHBhZCApIH0KCiAgICAgICAgfQogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgZ2V0X291dHB1dF9saW5lX251bWJlciB7CgogICAgIyB0aGUgb3V0cHV0IGxpbmUgbnVtYmVyIHJlcG9ydGVkIHRvIGEgY2FsbGVyIGlzIHRoZSBudW1iZXIgb2YgaXRlbXMKICAgICMgd3JpdHRlbiBwbHVzIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGJ1ZmZlcgogICAgbXkgJHNlbGYgICA9IHNoaWZ0OwogICAgbXkgJG5saW5lcyA9IEBncm91cF9saW5lczsKICAgIHJldHVybiAkbmxpbmVzICsgJGZpbGVfd3JpdGVyX29iamVjdC0+Z2V0X291dHB1dF9saW5lX251bWJlcigpOwp9CgpzdWIgdmFsaWduX291dHB1dF9zdGVwX0IgewoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBUaGlzIGlzIFN0ZXAgQiBpbiB3cml0aW5nIHZlcnRpY2FsbHkgYWxpZ25lZCBsaW5lcy4KICAgICMgVmVydGljYWwgdGlnaHRuZXNzIGlzIGFwcGxpZWQgYWNjb3JkaW5nIHRvIHByZXNldCBmbGFncy4KICAgICMgSW4gcGFydGljdWxhciB0aGlzIHJvdXRpbmUgaGFuZGxlcyBzdGFja2luZyBvZiBvcGVuaW5nCiAgICAjIGFuZCBjbG9zaW5nIHRva2Vucy4KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgIG15ICggJGxlYWRpbmdfc3BhY2VfY291bnQsICRzdHIsICRzaWRlX2NvbW1lbnRfbGVuZ3RoLCAkb3V0ZGVudF9sb25nX2xpbmVzLAogICAgICAgICRydmVydGljYWxfdGlnaHRuZXNzX2ZsYWdzLCAkbGV2ZWwgKQogICAgICA9IEBfOwoKICAgICMgaGFuZGxlIG91dGRlbnRpbmcgb2YgbG9uZyBsaW5lczoKICAgIGlmICgkb3V0ZGVudF9sb25nX2xpbmVzKSB7CiAgICAgICAgbXkgJGV4Y2VzcyA9CiAgICAgICAgICBsZW5ndGgoJHN0cikgLQogICAgICAgICAgJHNpZGVfY29tbWVudF9sZW5ndGggKwogICAgICAgICAgJGxlYWRpbmdfc3BhY2VfY291bnQgLQogICAgICAgICAgbWF4aW11bV9saW5lX2xlbmd0aF9mb3JfbGV2ZWwoJGxldmVsKTsKICAgICAgICBpZiAoICRleGNlc3MgPiAwICkgewogICAgICAgICAgICAkbGVhZGluZ19zcGFjZV9jb3VudCA9IDA7CiAgICAgICAgICAgICRsYXN0X291dGRlbnRlZF9saW5lX2F0ID0KICAgICAgICAgICAgICAkZmlsZV93cml0ZXJfb2JqZWN0LT5nZXRfb3V0cHV0X2xpbmVfbnVtYmVyKCk7CgogICAgICAgICAgICB1bmxlc3MgKCRvdXRkZW50ZWRfbGluZV9jb3VudCkgewogICAgICAgICAgICAgICAgJGZpcnN0X291dGRlbnRlZF9saW5lX2F0ID0gJGxhc3Rfb3V0ZGVudGVkX2xpbmVfYXQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG91dGRlbnRlZF9saW5lX2NvdW50Kys7CiAgICAgICAgfQogICAgfQoKICAgICMgTWFrZSBwcmVsaW1pbmFyeSBsZWFkaW5nIHdoaXRlc3BhY2UuICBJdCBjb3VsZCBnZXQgY2hhbmdlZAogICAgIyBsYXRlciBieSBlbnRhYmJpbmcsIHNvIHdlIGhhdmUgdG8ga2VlcCB0cmFjayBvZiBhbnkgY2hhbmdlcwogICAgIyB0byB0aGUgbGVhZGluZ19zcGFjZV9jb3VudCBmcm9tIGhlcmUgb24uCiAgICBteSAkbGVhZGluZ19zdHJpbmcgPQogICAgICAkbGVhZGluZ19zcGFjZV9jb3VudCA+IDAgPyAoICcgJyB4ICRsZWFkaW5nX3NwYWNlX2NvdW50ICkgOiAiIjsKCiAgICAjIFVucGFjayBhbnkgcmVjb21iaW5hdGlvbiBkYXRhOyBpdCB3YXMgcGFja2VkIGJ5CiAgICAjIHN1YiBzZW5kX2xpbmVzX3RvX3ZlcnRpY2FsX2FsaWduZXIuIENvbnRlbnRzOgogICAgIwogICAgIyAgIFswXSB0eXBlOiAxPW9wZW5pbmcgbm9uLWJsb2NrICAgIDI9Y2xvc2luZyBub24tYmxvY2sKICAgICMgICAgICAgICAgICAgMz1vcGVuaW5nIGJsb2NrIGJyYWNlICA0PWNsb3NpbmcgYmxvY2sgYnJhY2UKICAgICMgICBbMV0gZmxhZzogaWYgb3BlbmluZzogMT1ubyBtdWx0aXBsZSBzdGVwcywgMj1tdWx0aXBsZSBzdGVwcyBvawogICAgIyAgICAgICAgICAgICBpZiBjbG9zaW5nOiBzcGFjZXMgb2YgcGFkZGluZyB0byB1c2UKICAgICMgICBbMl0gc2VxdWVuY2UgbnVtYmVyIG9mIGNvbnRhaW5lcgogICAgIyAgIFszXSB2YWxpZCBmbGFnOiBkbyBub3QgYXBwZW5kIGlmIHRoaXMgZmxhZyBpcyBmYWxzZQogICAgIwogICAgbXkgKCAkb3Blbl9vcl9jbG9zZSwgJHRpZ2h0bmVzc19mbGFnLCAkc2Vxbm8sICR2YWxpZCwgJHNlcW5vX2JlZywKICAgICAgICAkc2Vxbm9fZW5kICk7CiAgICBpZiAoJHJ2ZXJ0aWNhbF90aWdodG5lc3NfZmxhZ3MpIHsKICAgICAgICAoCiAgICAgICAgICAgICRvcGVuX29yX2Nsb3NlLCAkdGlnaHRuZXNzX2ZsYWcsICRzZXFubywgJHZhbGlkLCAkc2Vxbm9fYmVnLAogICAgICAgICAgICAkc2Vxbm9fZW5kCiAgICAgICAgKSA9IEB7JHJ2ZXJ0aWNhbF90aWdodG5lc3NfZmxhZ3N9OwogICAgfQoKICAgICRzZXFub19zdHJpbmcgPSAkc2Vxbm9fZW5kOwoKICAgICMgaGFuZGxlIGFueSBjYWNoZWQgbGluZSAuLgogICAgIyBlaXRoZXIgYXBwZW5kIHRoaXMgbGluZSB0byBpdCBvciB3cml0ZSBpdCBvdXQKICAgIGlmICggbGVuZ3RoKCRjYWNoZWRfbGluZV90ZXh0KSApIHsKCiAgICAgICAgIyBEdW1wIGFuIGludmFsaWQgY2FjaGVkIGxpbmUKICAgICAgICBpZiAoICEkY2FjaGVkX2xpbmVfdmFsaWQgKSB7CiAgICAgICAgICAgIHZhbGlnbl9vdXRwdXRfc3RlcF9DKCAkY2FjaGVkX2xpbmVfdGV4dCwKICAgICAgICAgICAgICAgICRjYWNoZWRfbGluZV9sZWFkaW5nX3NwYWNlX2NvdW50LAogICAgICAgICAgICAgICAgJGxhc3RfbGV2ZWxfd3JpdHRlbiApOwogICAgICAgIH0KCiAgICAgICAgIyBIYW5kbGUgY2FjaGVkIGxpbmUgZW5kaW5nIGluIE9QRU5JTkcgdG9rZW5zCiAgICAgICAgZWxzaWYgKCAkY2FjaGVkX2xpbmVfdHlwZSA9PSAxIHx8ICRjYWNoZWRfbGluZV90eXBlID09IDMgKSB7CgogICAgICAgICAgICBteSAkZ2FwID0gJGxlYWRpbmdfc3BhY2VfY291bnQgLSBsZW5ndGgoJGNhY2hlZF9saW5lX3RleHQpOwoKICAgICAgICAgICAgIyBoYW5kbGUgb3B0aW9uIG9mIGp1c3Qgb25lIHRpZ2h0IG9wZW5pbmcgcGVyIGxpbmU6CiAgICAgICAgICAgIGlmICggJGNhY2hlZF9saW5lX2ZsYWcgPT0gMSApIHsKICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCgkb3Blbl9vcl9jbG9zZSkgJiYgJG9wZW5fb3JfY2xvc2UgPT0gMSApIHsKICAgICAgICAgICAgICAgICAgICAkZ2FwID0gLTE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJGdhcCA+PSAwICYmIGRlZmluZWQoJHNlcW5vX2JlZykgKSB7CiAgICAgICAgICAgICAgICAkbGVhZGluZ19zdHJpbmcgICAgICA9ICRjYWNoZWRfbGluZV90ZXh0IC4gJyAnIHggJGdhcDsKICAgICAgICAgICAgICAgICRsZWFkaW5nX3NwYWNlX2NvdW50ID0gJGNhY2hlZF9saW5lX2xlYWRpbmdfc3BhY2VfY291bnQ7CiAgICAgICAgICAgICAgICAkc2Vxbm9fc3RyaW5nICAgICAgICA9ICRjYWNoZWRfc2Vxbm9fc3RyaW5nIC4gJzonIC4gJHNlcW5vX2JlZzsKICAgICAgICAgICAgICAgICRsZXZlbCAgICAgICAgICAgICAgID0gJGxhc3RfbGV2ZWxfd3JpdHRlbjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHZhbGlnbl9vdXRwdXRfc3RlcF9DKCAkY2FjaGVkX2xpbmVfdGV4dCwKICAgICAgICAgICAgICAgICAgICAkY2FjaGVkX2xpbmVfbGVhZGluZ19zcGFjZV9jb3VudCwKICAgICAgICAgICAgICAgICAgICAkbGFzdF9sZXZlbF93cml0dGVuICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgSGFuZGxlIGNhY2hlZCBsaW5lIGVuZGluZyBpbiBDTE9TSU5HIHRva2VucwogICAgICAgIGVsc2UgewogICAgICAgICAgICBteSAkdGVzdF9saW5lID0gJGNhY2hlZF9saW5lX3RleHQgLiAnICcgeCAkY2FjaGVkX2xpbmVfZmxhZyAuICRzdHI7CiAgICAgICAgICAgIGlmICgKCiAgICAgICAgICAgICAgICAjIFRoZSBuZXcgbGluZSBtdXN0IHN0YXJ0IHdpdGggY29udGFpbmVyCiAgICAgICAgICAgICAgICAkc2Vxbm9fYmVnCgogICAgICAgICAgICAgICAgIyBUaGUgY29udGFpbmVyIGNvbWJpbmF0aW9uIG11c3QgYmUgb2theS4uCiAgICAgICAgICAgICAgICAmJiAoCgogICAgICAgICAgICAgICAgICAgICMgb2theSB0byBjb21iaW5lIGxpa2UgdHlwZXMKICAgICAgICAgICAgICAgICAgICAoICRvcGVuX29yX2Nsb3NlID09ICRjYWNoZWRfbGluZV90eXBlICkKCiAgICAgICAgICAgICAgICAgICAgIyBjbG9zaW5nIGJsb2NrIGJyYWNlIG1heSBhcHBlbmQgdG8gbm9uLWJsb2NrCiAgICAgICAgICAgICAgICAgICAgfHwgKCAkY2FjaGVkX2xpbmVfdHlwZSA9PSAyICYmICRvcGVuX29yX2Nsb3NlID09IDQgKQoKICAgICAgICAgICAgICAgICAgICAjIHNvbWV0aGluZyBsaWtlICcpOycKICAgICAgICAgICAgICAgICAgICB8fCAoICEkb3Blbl9vcl9jbG9zZSAmJiAkY2FjaGVkX2xpbmVfdHlwZSA9PSAyICkKCiAgICAgICAgICAgICAgICApCgogICAgICAgICAgICAgICAgIyBUaGUgY29tYmluZWQgbGluZSBtdXN0IGZpdAogICAgICAgICAgICAgICAgJiYgKAogICAgICAgICAgICAgICAgICAgIGxlbmd0aCgkdGVzdF9saW5lKSA8PQogICAgICAgICAgICAgICAgICAgIG1heGltdW1fbGluZV9sZW5ndGhfZm9yX2xldmVsKCRsYXN0X2xldmVsX3dyaXR0ZW4pICkKICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAkc2Vxbm9fc3RyaW5nID0gJGNhY2hlZF9zZXFub19zdHJpbmcgLiAnOicgLiAkc2Vxbm9fYmVnOwoKICAgICAgICAgICAgICAgICMgUGF0Y2ggdG8gb3V0ZGVudCBjbG9zaW5nIHRva2VucyBlbmRpbmcgIyBpbiAnKTsnCiAgICAgICAgICAgICAgICAjIElmIHdlIGFyZSBqb2luaW5nIGEgbGluZSBsaWtlICcpOycgdG8gYSBwcmV2aW91cyBzdGFja2VkCiAgICAgICAgICAgICAgICAjIHNldCBvZiBjbG9zaW5nIHRva2VucywgdGhlbiBkZWNpZGUgaWYgd2UgbWF5IG91dGRlbnQgdGhlCiAgICAgICAgICAgICAgICAjIGNvbWJpbmVkIHN0YWNrIHRvIHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgJyk7Jy4gIFNpbmNlIHdlCiAgICAgICAgICAgICAgICAjIHNob3VsZCBub3Qgbm9ybWFsbHkgb3V0ZGVudCBhbnkgb2YgdGhlIG90aGVyIHRva2VucyBtb3JlIHRoYW4KICAgICAgICAgICAgICAgICMgdGhlIGluZGVudGF0aW9uIG9mIHRoZSBsaW5lcyB0aGF0IGNvbnRhaW5lZCB0aGVtLCB3ZSB3aWxsCiAgICAgICAgICAgICAgICAjIG9ubHkgZG8gdGhpcyBpZiBhbGwgb2YgdGhlIGNvcnJlc3BvbmRpbmcgb3BlbmluZwogICAgICAgICAgICAgICAgIyB0b2tlbnMgd2VyZSBvbiB0aGUgc2FtZSBsaW5lLiAgVGhpcyBjYW4gaGFwcGVuIHdpdGgKICAgICAgICAgICAgICAgICMgLXNvdCBhbmQgLXNjdC4gIEZvciBleGFtcGxlLCBpdCBpcyBvayBoZXJlOgogICAgICAgICAgICAgICAgIyAgIF9fUEFDS0FHRV9fLT5sb2FkX2NvbXBvbmVudHMoIHF3KAogICAgICAgICAgICAgICAgIyAgICAgICAgIFBLOjpBdXRvCiAgICAgICAgICAgICAgICAjICAgICAgICAgQ29yZQogICAgICAgICAgICAgICAgIyAgICkpOwogICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgIyAgIEJ1dCwgZm9yIGV4YW1wbGUsIHdlIGRvIG5vdCBvdXRkZW50IGluIHRoaXMgZXhhbXBsZSBiZWNhdXNlCiAgICAgICAgICAgICAgICAjICAgdGhhdCB3b3VsZCBwdXQgdGhlIGNsb3Npbmcgc3ViIGJyYWNlIG91dCBmYXJ0aGVyIHRoYW4gdGhlCiAgICAgICAgICAgICAgICAjICAgb3BlbmluZyBzdWIgYnJhY2U6CiAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAjICAgcGVybHRpZHkgLXNvdCAtc2N0CiAgICAgICAgICAgICAgICAjICAgJGMtPlRrOjpiaW5kKAogICAgICAgICAgICAgICAgIyAgICAgICAnPENvbnRyb2wtZj4nID0+IHN1YiB7CiAgICAgICAgICAgICAgICAjICAgICAgICAgICBteSAoJGMpID0gQF87CiAgICAgICAgICAgICAgICAjICAgICAgICAgICBteSAkZSA9ICRjLT5YRXZlbnQ7CiAgICAgICAgICAgICAgICAjICAgICAgICAgICBpdGVtc1VuZGVyQXJlYSAkYzsKICAgICAgICAgICAgICAgICMgICAgICAgfSApOwogICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgaWYgKCAkc3RyID1+IC9eXCk7LyAmJiAkY2FjaGVkX2xpbmVfdGV4dCA9fiAvXltcKVx9XF1cc10qJC8gKSB7CgogICAgICAgICAgICAgICAgICAgICMgVGhlIHdheSB0byB0ZWxsIHRoaXMgaXMgaWYgdGhlIHN0YWNrZWQgc2VxdWVuY2UgbnVtYmVycwogICAgICAgICAgICAgICAgICAgICMgb2YgdGhpcyBvdXRwdXQgbGluZSBhcmUgdGhlIHJldmVyc2Ugb2YgdGhlIHN0YWNrZWQKICAgICAgICAgICAgICAgICAgICAjIHNlcXVlbmNlIG51bWJlcnMgb2YgdGhlIHByZXZpb3VzIG5vbi1ibGFuayBsaW5lIG9mCiAgICAgICAgICAgICAgICAgICAgIyBzZXF1ZW5jZSBudW1iZXJzLiAgU28gd2UgY2FuIGpvaW4gaWYgdGhlIHByZXZpb3VzCiAgICAgICAgICAgICAgICAgICAgIyBub25ibGFuayBzdHJpbmcgb2YgdG9rZW5zIGlzIHRoZSBtaXJyb3IgaW1hZ2UuICBGb3IKICAgICAgICAgICAgICAgICAgICAjIGV4YW1wbGUgaWYgc3RhY2sgKX1dIGlzIDEzOjg6NiB0aGVuIHdlIGFyZSBsb29raW5nIGZvciBhCiAgICAgICAgICAgICAgICAgICAgIyBsZWFkaW5nIHN0YWNrIGxpa2UgW3soIHdoaWNoIGlzIDY6ODoxMyBXZSBvbmx5IG5lZWQgdG8KICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIHRoZSB0d28gZW5kcywgYmVjYXVzZSB0aGUgaW50ZXJtZWRpYXRlIHRva2VucyBtdXN0CiAgICAgICAgICAgICAgICAgICAgIyBmYWxsIGluIG9yZGVyLiAgTm90ZSBvbiBzcGVlZDogaGF2aW5nIHRvIHNwbGl0IG9uIGNvbG9ucwogICAgICAgICAgICAgICAgICAgICMgYW5kIGVsaW1pbmF0ZSBtdWx0aXBsZSBjb2xvbnMgbWlnaHQgYXBwZWFyIHRvIGJlIHNsb3csCiAgICAgICAgICAgICAgICAgICAgIyBidXQgaXQncyBub3QgYW4gaXNzdWUgYmVjYXVzZSB3ZSBhbG1vc3QgbmV2ZXIgY29tZQogICAgICAgICAgICAgICAgICAgICMgdGhyb3VnaCBoZXJlLiAgSW4gYSB0eXBpY2FsIGZpbGUgd2UgZG9uJ3QuCiAgICAgICAgICAgICAgICAgICAgJHNlcW5vX3N0cmluZyAgICAgICAgICAgICAgID1+IHMvXjorLy87CiAgICAgICAgICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfc2Vxbm9fc3RyaW5nID1+IHMvXjorLy87CiAgICAgICAgICAgICAgICAgICAgJHNlcW5vX3N0cmluZyAgICAgICAgICAgICAgID1+IHMvOisvOi9nOwogICAgICAgICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3NlcW5vX3N0cmluZyA9fiBzLzorLzovZzsKCiAgICAgICAgICAgICAgICAgICAgIyBob3cgbWFueSBzcGFjZXMgY2FuIHdlIG91dGRlbnQ/CiAgICAgICAgICAgICAgICAgICAgbXkgJGRpZmYgPQogICAgICAgICAgICAgICAgICAgICAgJGNhY2hlZF9saW5lX2xlYWRpbmdfc3BhY2VfY291bnQgLSAkbGVhZGluZ19zcGFjZV9jb3VudDsKICAgICAgICAgICAgICAgICAgICBpZiAoICAgJGRpZmYgPiAwCiAgICAgICAgICAgICAgICAgICAgICAgICYmIGxlbmd0aCgkc2Vxbm9fc3RyaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAmJiBsZW5ndGgoJGxhc3Rfbm9uYmxhbmtfc2Vxbm9fc3RyaW5nKSA9PQogICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgoJHNlcW5vX3N0cmluZykgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgQHNlcW5vX2xhc3QgPQogICAgICAgICAgICAgICAgICAgICAgICAgICggc3BsaXQgLzovLCAkbGFzdF9ub25ibGFua19zZXFub19zdHJpbmcgKTsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgQHNlcW5vX25vdyA9ICggc3BsaXQgLzovLCAkc2Vxbm9fc3RyaW5nICk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggICAkc2Vxbm9fbm93Wy0xXSA9PSAkc2Vxbm9fbGFzdFswXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHNlcW5vX25vd1swXSA9PSAkc2Vxbm9fbGFzdFstMV0gKQogICAgICAgICAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBPSyB0byBvdXRkZW50IC4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZvciBhYnNvbHV0ZSBzYWZldHksIGJlIHN1cmUgd2Ugb25seSByZW1vdmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2hpdGVzcGFjZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHdzID0gc3Vic3RyKCAkdGVzdF9saW5lLCAwLCAkZGlmZiApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAoIGxlbmd0aCgkd3MpID09ICRkaWZmICkgJiYgJHdzID1+IC9eXHMrJC8gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0ZXN0X2xpbmUgPSBzdWJzdHIoICR0ZXN0X2xpbmUsICRkaWZmICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNhY2hlZF9saW5lX2xlYWRpbmdfc3BhY2VfY291bnQgLT0gJGRpZmY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxhc3RfbGV2ZWxfd3JpdHRlbiA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbF9jaGFuZ2UoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjYWNoZWRfbGluZV9sZWFkaW5nX3NwYWNlX2NvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlmZiwgJGxhc3RfbGV2ZWxfd3JpdHRlbiApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZHVjZV92YWxpZ25fYnVmZmVyX2luZGVudGF0aW9uKCRkaWZmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNob3VsZG4ndCBoYXBwZW4sIGJ1dCBub3QgY3JpdGljYWw6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjI2Vsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMgRVJST1IgdHJhbnNmZXJyaW5nIGluZGVudGF0aW9uIGhlcmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRzdHIgICAgICAgICAgICAgICAgID0gJHRlc3RfbGluZTsKICAgICAgICAgICAgICAgICRsZWFkaW5nX3N0cmluZyAgICAgID0gIiI7CiAgICAgICAgICAgICAgICAkbGVhZGluZ19zcGFjZV9jb3VudCA9ICRjYWNoZWRfbGluZV9sZWFkaW5nX3NwYWNlX2NvdW50OwogICAgICAgICAgICAgICAgJGxldmVsICAgICAgICAgICAgICAgPSAkbGFzdF9sZXZlbF93cml0dGVuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdmFsaWduX291dHB1dF9zdGVwX0MoICRjYWNoZWRfbGluZV90ZXh0LAogICAgICAgICAgICAgICAgICAgICRjYWNoZWRfbGluZV9sZWFkaW5nX3NwYWNlX2NvdW50LAogICAgICAgICAgICAgICAgICAgICRsYXN0X2xldmVsX3dyaXR0ZW4gKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgICRjYWNoZWRfbGluZV90eXBlID0gMDsKICAgICRjYWNoZWRfbGluZV90ZXh0ID0gIiI7CgogICAgIyBtYWtlIHRoZSBsaW5lIHRvIGJlIHdyaXR0ZW4KICAgIG15ICRsaW5lID0gJGxlYWRpbmdfc3RyaW5nIC4gJHN0cjsKCiAgICAjIHdyaXRlIG9yIGNhY2hlIHRoaXMgbGluZQogICAgaWYgKCAhJG9wZW5fb3JfY2xvc2UgfHwgJHNpZGVfY29tbWVudF9sZW5ndGggPiAwICkgewogICAgICAgIHZhbGlnbl9vdXRwdXRfc3RlcF9DKCAkbGluZSwgJGxlYWRpbmdfc3BhY2VfY291bnQsICRsZXZlbCApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJGNhY2hlZF9saW5lX3RleHQgICAgICAgICAgICAgICAgPSAkbGluZTsKICAgICAgICAkY2FjaGVkX2xpbmVfdHlwZSAgICAgICAgICAgICAgICA9ICRvcGVuX29yX2Nsb3NlOwogICAgICAgICRjYWNoZWRfbGluZV9mbGFnICAgICAgICAgICAgICAgID0gJHRpZ2h0bmVzc19mbGFnOwogICAgICAgICRjYWNoZWRfc2Vxbm8gICAgICAgICAgICAgICAgICAgID0gJHNlcW5vOwogICAgICAgICRjYWNoZWRfbGluZV92YWxpZCAgICAgICAgICAgICAgID0gJHZhbGlkOwogICAgICAgICRjYWNoZWRfbGluZV9sZWFkaW5nX3NwYWNlX2NvdW50ID0gJGxlYWRpbmdfc3BhY2VfY291bnQ7CiAgICAgICAgJGNhY2hlZF9zZXFub19zdHJpbmcgICAgICAgICAgICAgPSAkc2Vxbm9fc3RyaW5nOwogICAgfQoKICAgICRsYXN0X2xldmVsX3dyaXR0ZW4gICAgICAgPSAkbGV2ZWw7CiAgICAkbGFzdF9zaWRlX2NvbW1lbnRfbGVuZ3RoID0gJHNpZGVfY29tbWVudF9sZW5ndGg7CiAgICAkZXh0cmFfaW5kZW50X29rICAgICAgICAgID0gMDsKICAgIHJldHVybjsKfQoKc3ViIHZhbGlnbl9vdXRwdXRfc3RlcF9DIHsKCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMgVGhpcyBpcyBTdGVwIEMgaW4gd3JpdGluZyB2ZXJ0aWNhbGx5IGFsaWduZWQgbGluZXMuCiAgICAjIExpbmVzIGFyZSBlaXRoZXIgc3RvcmVkIGluIGEgYnVmZmVyIG9yIHBhc3NlZCBhbG9uZyB0byB0aGUgbmV4dCBzdGVwLgogICAgIyBUaGUgcmVhc29uIGZvciBzdG9yaW5nIGxpbmVzIGlzIHRoYXQgd2UgbWF5IGxhdGVyIHdhbnQgdG8gcmVkdWNlIHRoZWlyCiAgICAjIGluZGVudGF0aW9uIHdoZW4gLXNvdCBhbmQgLXNjdCBhcmUgYm90aCB1c2VkLgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICBteSBAYXJncyA9IEBfOwoKICAgICMgRHVtcCBhbnkgc2F2ZWQgbGluZXMgaWYgd2Ugc2VlIGEgbGluZSB3aXRoIGFuIHVuYmFsYW5jZWQgb3BlbmluZyBvcgogICAgIyBjbG9zaW5nIHRva2VuLgogICAgZHVtcF92YWxpZ25fYnVmZmVyKCkgaWYgKCAkc2Vxbm9fc3RyaW5nICYmICR2YWxpZ25fYnVmZmVyX2ZpbGxpbmcgKTsKCiAgICAjIEVpdGhlciBzdG9yZSBvciB3cml0ZSB0aGlzIGxpbmUKICAgIGlmICgkdmFsaWduX2J1ZmZlcl9maWxsaW5nKSB7CiAgICAgICAgcHVzaCBAdmFsaWduX2J1ZmZlciwgW0BhcmdzXTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHZhbGlnbl9vdXRwdXRfc3RlcF9EKEBhcmdzKTsKICAgIH0KCiAgICAjIEZvciBsaW5lcyBzdGFydGluZyBvciBlbmRpbmcgd2l0aCBvcGVuaW5nIG9yIGNsb3NpbmcgdG9rZW5zLi4KICAgIGlmICgkc2Vxbm9fc3RyaW5nKSB7CiAgICAgICAgJGxhc3Rfbm9uYmxhbmtfc2Vxbm9fc3RyaW5nID0gJHNlcW5vX3N0cmluZzsKCiAgICAgICAgIyBTdGFydCBzdG9yaW5nIGxpbmVzIHdoZW4gd2Ugc2VlIGEgbGluZSB3aXRoIG11bHRpcGxlIHN0YWNrZWQgb3BlbmluZwogICAgICAgICMgdG9rZW5zLgogICAgICAgICMgcGF0Y2ggZm9yIFJUICM5NDM1NCwgcmVxdWVzdGVkIGJ5IENvbGluIFdpbGxpYW1zCiAgICAgICAgaWYgKCAkc2Vxbm9fc3RyaW5nID1+IC9eXGQrKFw6K1xkKykrJC8gJiYgJGFyZ3NbMF0gIX4gL15bXH1cKVxdXDpcP10vICkKICAgICAgICB7CgogICAgICAgICAgICAjIFRoaXMgdGVzdCBpcyBlZmZpY2llbnQgYnV0IGEgbGl0dGxlIHN1YnRsZTogVGhlIGZpcnN0IHRlc3Qgc2F5cwogICAgICAgICAgICAjIHRoYXQgd2UgaGF2ZSBtdWx0aXBsZSBzZXF1ZW5jZSBudW1iZXJzIGFuZCBoZW5jZSBtdWx0aXBsZSBvcGVuaW5nCiAgICAgICAgICAgICMgb3IgY2xvc2luZyB0b2tlbnMgaW4gdGhpcyBsaW5lLiAgVGhlIHNlY29uZCBwYXJ0IG9mIHRoZSB0ZXN0CiAgICAgICAgICAgICMgcmVqZWN0cyBzdGFja2VkIGNsb3NpbmcgYW5kIHRlcm5hcnkgdG9rZW5zLiAgU28gaWYgd2UgZ2V0IGhlcmUKICAgICAgICAgICAgIyB0aGVuIHdlIHNob3VsZCBoYXZlIHN0YWNrZWQgdW5iYWxhbmNlZCBvcGVuaW5nIHRva2Vucy4KCiAgICAgICAgICAgICMgSGVyZSBpcyBhIGNvbXBsZXggZXhhbXBsZToKCiAgICAgICAgICAgICMgRm9vKCRCYXJbMF0sIHsgICMgKHNpZGUgY29tbWVudCkKICAgICAgICAgICAgIyAJYmF6ID0+IDEsCiAgICAgICAgICAgICMgfSk7CgogICAgICAgICAgICAjIFRoZSBmaXJzdCBsaW5lIGhhcyBzZXF1ZW5jZSA2Ojo0LiAgSXQgZG9lcyBub3QgYmVnaW4gd2l0aAogICAgICAgICAgICAjIGEgY2xvc2luZyB0b2tlbiBvciB0ZXJuYXJ5LCBzbyBpdCBwYXNzZXMgdGhlIHRlc3QgYW5kIG11c3QgYmUKICAgICAgICAgICAgIyBzdGFja2VkIG9wZW5pbmcgdG9rZW5zLgoKICAgICAgICAgICAgIyBUaGUgbGFzdCBsaW5lIGhhcyBzZXF1ZW5jZSA0OjYgYnV0IGlzIGEgc3RhY2sgb2YgY2xvc2luZyB0b2tlbnMsCiAgICAgICAgICAgICMgc28gaXQgZ2V0cyByZWplY3RlZC4KCiAgICAgICAgICAgICMgTm90ZSB0aGF0IHRoZSBzZXF1ZW5jZSBudW1iZXIgb2YgYW4gb3BlbmluZyB0b2tlbiBmb3IgYSBxdyBxdW90ZQogICAgICAgICAgICAjIGlzIGEgbmVnYXRpdmUgbnVtYmVyIGFuZCB3aWxsIGJlIHJlamVjdGVkLgogICAgICAgICAgICAjIEZvciBleGFtcGxlLCBmb3IgdGhlIGZvbGxvd2luZyBsaW5lOgogICAgICAgICAgICAjICAgIHNraXBfc3ltYm9scyhbcXcoCiAgICAgICAgICAgICMgJHNlcW5vX3N0cmluZz0nMTA6NTotMScuICBJdCB3b3VsZCBiZSBva2F5IHRvIGFjY2VwdCBpdCBidXQKICAgICAgICAgICAgIyBJIGRlY2lkZWQgbm90IHRvIGRvIHRoaXMgYWZ0ZXIgdGVzdGluZy4KCiAgICAgICAgICAgICR2YWxpZ25fYnVmZmVyX2ZpbGxpbmcgPSAkc2Vxbm9fc3RyaW5nOwoKICAgICAgICB9CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiB2YWxpZ25fb3V0cHV0X3N0ZXBfRCB7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIFRoaXMgaXMgU3RlcCBEIGluIHdyaXRpbmcgdmVydGljYWxseSBhbGlnbmVkIGxpbmVzLgogICAgIyBXcml0ZSBvbmUgdmVydGljYWxseSBhbGlnbmVkIGxpbmUgb2YgY29kZSB0byB0aGUgb3V0cHV0IG9iamVjdC4KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgIG15ICggJGxpbmUsICRsZWFkaW5nX3NwYWNlX2NvdW50LCAkbGV2ZWwgKSA9IEBfOwoKICAgICMgVGhlIGxpbmUgaXMgY3VycmVudGx5IGNvcnJlY3QgaWYgdGhlcmUgaXMgbm8gdGFiYmluZyAocmVjb21tZW5kZWQhKQogICAgIyBXZSBtYXkgaGF2ZSB0byBsb3Agb2ZmIHNvbWUgbGVhZGluZyBzcGFjZXMgYW5kIHJlcGxhY2Ugd2l0aCB0YWJzLgogICAgaWYgKCAkbGVhZGluZ19zcGFjZV9jb3VudCA+IDAgKSB7CgogICAgICAgICMgTm90aGluZyB0byBkbyBpZiBubyB0YWJzCiAgICAgICAgaWYgKCAhKCAkck9wdHNfdGFicyB8fCAkck9wdHNfZW50YWJfbGVhZGluZ193aGl0ZXNwYWNlICkKICAgICAgICAgICAgfHwgJHJPcHRzX2luZGVudF9jb2x1bW5zIDw9IDAgKQogICAgICAgIHsKCiAgICAgICAgICAgICMgbm90aGluZyB0byBkbwogICAgICAgIH0KCiAgICAgICAgIyBIYW5kbGUgZW50YWIgb3B0aW9uCiAgICAgICAgZWxzaWYgKCRyT3B0c19lbnRhYl9sZWFkaW5nX3doaXRlc3BhY2UpIHsKCiAgICAgICAgICMgUGF0Y2ggMTItbm92LTIwMTggYmFzZWQgb24gcmVwb3J0IGZyb20gR2xlbm4uIEV4dHJhIHBhZGRpbmcgd2FzCiAgICAgICAgICMgbm90IGNvcnJlY3RseSBlbnRhYmJlZCwgbm9yIHdlcmUgc2lkZSBjb21tZW50czoKICAgICAgICAgIyBJbmNyZWFzZSBsZWFkaW5nIHNwYWNlIGNvdW50IGZvciBhIHBhZGRlZCBsaW5lIHRvIGdldCBjb3JyZWN0IHRhYmJpbmcKICAgICAgICAgICAgaWYgKCAkbGluZSA9fiAvXihccyspKC4qKSQvICkgewogICAgICAgICAgICAgICAgbXkgJHNwYWNlcyA9IGxlbmd0aCgkMSk7CiAgICAgICAgICAgICAgICBpZiAoICRzcGFjZXMgPiAkbGVhZGluZ19zcGFjZV9jb3VudCApIHsKICAgICAgICAgICAgICAgICAgICAkbGVhZGluZ19zcGFjZV9jb3VudCA9ICRzcGFjZXM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRzcGFjZV9jb3VudCA9CiAgICAgICAgICAgICAgJGxlYWRpbmdfc3BhY2VfY291bnQgJSAkck9wdHNfZW50YWJfbGVhZGluZ193aGl0ZXNwYWNlOwogICAgICAgICAgICBteSAkdGFiX2NvdW50ID0KICAgICAgICAgICAgICBpbnQoICRsZWFkaW5nX3NwYWNlX2NvdW50IC8gJHJPcHRzX2VudGFiX2xlYWRpbmdfd2hpdGVzcGFjZSApOwogICAgICAgICAgICBteSAkbGVhZGluZ19zdHJpbmcgPSAiXHQiIHggJHRhYl9jb3VudCAuICcgJyB4ICRzcGFjZV9jb3VudDsKICAgICAgICAgICAgaWYgKCAkbGluZSA9fiAvXlxzeyRsZWFkaW5nX3NwYWNlX2NvdW50LCRsZWFkaW5nX3NwYWNlX2NvdW50fS8gKSB7CiAgICAgICAgICAgICAgICBzdWJzdHIoICRsaW5lLCAwLCAkbGVhZGluZ19zcGFjZV9jb3VudCApID0gJGxlYWRpbmdfc3RyaW5nOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICMgc2hvdWxkbid0IGhhcHBlbiAtIHByb2dyYW0gZXJyb3IgY291bnRpbmcgd2hpdGVzcGFjZQogICAgICAgICAgICAgICAgIyAtIHNraXAgZW50YWJiaW5nCiAgICAgICAgICAgICAgICBWQUxJR05fREVCVUdfRkxBR19UQUJTCiAgICAgICAgICAgICAgICAgICYmIHdhcm5pbmcoCiJFcnJvciBlbnRhYmJpbmcgaW4gdmFsaWduX291dHB1dF9zdGVwX0Q6IGV4cGVjdGVkIGNvdW50PSRsZWFkaW5nX3NwYWNlX2NvdW50XG4iCiAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgSGFuZGxlIG9wdGlvbiBvZiBvbmUgdGFiIHBlciBsZXZlbAogICAgICAgIGVsc2UgewogICAgICAgICAgICBteSAkbGVhZGluZ19zdHJpbmcgPSAoICJcdCIgeCAkbGV2ZWwgKTsKICAgICAgICAgICAgbXkgJHNwYWNlX2NvdW50ID0KICAgICAgICAgICAgICAkbGVhZGluZ19zcGFjZV9jb3VudCAtICRsZXZlbCAqICRyT3B0c19pbmRlbnRfY29sdW1uczsKCiAgICAgICAgICAgICMgc2hvdWxkbid0IGhhcHBlbjoKICAgICAgICAgICAgaWYgKCAkc3BhY2VfY291bnQgPCAwICkgewoKICAgICAgICAgICAgICAgICMgQnV0IGl0IGNvdWxkIGJlIGFuIG91dGRlbnRlZCBjb21tZW50CiAgICAgICAgICAgICAgICBpZiAoICRsaW5lICF+IC9eXHMqIy8gKSB7CiAgICAgICAgICAgICAgICAgICAgVkFMSUdOX0RFQlVHX0ZMQUdfVEFCUwogICAgICAgICAgICAgICAgICAgICAgJiYgd2FybmluZygKIkVycm9yIGVudGFiYmluZyBpbiB2YWxpZ25fb3V0cHV0X3N0ZXBfRDogZm9yIGxldmVsPSRncm91cF9sZXZlbCBjb3VudD0kbGVhZGluZ19zcGFjZV9jb3VudFxuIgogICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRsZWFkaW5nX3N0cmluZyA9ICggJyAnIHggJGxlYWRpbmdfc3BhY2VfY291bnQgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRsZWFkaW5nX3N0cmluZyAuPSAoICcgJyB4ICRzcGFjZV9jb3VudCApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJGxpbmUgPX4gL15cc3skbGVhZGluZ19zcGFjZV9jb3VudCwkbGVhZGluZ19zcGFjZV9jb3VudH0vICkgewogICAgICAgICAgICAgICAgc3Vic3RyKCAkbGluZSwgMCwgJGxlYWRpbmdfc3BhY2VfY291bnQgKSA9ICRsZWFkaW5nX3N0cmluZzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIHNob3VsZG4ndCBoYXBwZW4gLSBwcm9ncmFtIGVycm9yIGNvdW50aW5nIHdoaXRlc3BhY2UKICAgICAgICAgICAgICAgICMgd2UnbGwgc2tpcCBlbnRhYmJpbmcKICAgICAgICAgICAgICAgIFZBTElHTl9ERUJVR19GTEFHX1RBQlMKICAgICAgICAgICAgICAgICAgJiYgd2FybmluZygKIkVycm9yIGVudGFiYmluZyBpbiB2YWxpZ25fb3V0cHV0X3N0ZXBfRDogZXhwZWN0ZWQgY291bnQ9JGxlYWRpbmdfc3BhY2VfY291bnRcbiIKICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgICRmaWxlX3dyaXRlcl9vYmplY3QtPndyaXRlX2NvZGVfbGluZSggJGxpbmUgLiAiXG4iICk7CiAgICByZXR1cm47Cn0KCnsgICAgIyBiZWdpbiBnZXRfbGVhZGluZ19zdHJpbmcKCiAgICBteSBAbGVhZGluZ19zdHJpbmdfY2FjaGU7CgogICAgc3ViIGdldF9sZWFkaW5nX3N0cmluZyB7CgogICAgICAgICMgZGVmaW5lIHRoZSBsZWFkaW5nIHdoaXRlc3BhY2Ugc3RyaW5nIGZvciB0aGlzIGxpbmUuLgogICAgICAgIG15ICRsZWFkaW5nX3doaXRlc3BhY2VfY291bnQgPSBzaGlmdDsKCiAgICAgICAgIyBIYW5kbGUgY2FzZSBvZiB6ZXJvIHdoaXRlc3BhY2UsIHdoaWNoIGluY2x1ZGVzIG11bHRpLWxpbmUgcXVvdGVzCiAgICAgICAgIyAod2hpY2ggbWF5IGhhdmUgYSBmaW5pdGUgbGV2ZWw7IHRoaXMgcHJldmVudHMgdGFiIHByb2JsZW1zKQogICAgICAgIGlmICggJGxlYWRpbmdfd2hpdGVzcGFjZV9jb3VudCA8PSAwICkgewogICAgICAgICAgICByZXR1cm4gIiI7CiAgICAgICAgfQoKICAgICAgICAjIGxvb2sgZm9yIHByZXZpb3VzIHJlc3VsdAogICAgICAgIGVsc2lmICggJGxlYWRpbmdfc3RyaW5nX2NhY2hlWyRsZWFkaW5nX3doaXRlc3BhY2VfY291bnRdICkgewogICAgICAgICAgICByZXR1cm4gJGxlYWRpbmdfc3RyaW5nX2NhY2hlWyRsZWFkaW5nX3doaXRlc3BhY2VfY291bnRdOwogICAgICAgIH0KCiAgICAgICAgIyBtdXN0IGNvbXB1dGUgYSBzdHJpbmcgZm9yIHRoaXMgbnVtYmVyIG9mIHNwYWNlcwogICAgICAgIG15ICRsZWFkaW5nX3N0cmluZzsKCiAgICAgICAgIyBIYW5kbGUgc2ltcGxlIGNhc2Ugb2Ygbm8gdGFicwogICAgICAgIGlmICggISggJHJPcHRzX3RhYnMgfHwgJHJPcHRzX2VudGFiX2xlYWRpbmdfd2hpdGVzcGFjZSApCiAgICAgICAgICAgIHx8ICRyT3B0c19pbmRlbnRfY29sdW1ucyA8PSAwICkKICAgICAgICB7CiAgICAgICAgICAgICRsZWFkaW5nX3N0cmluZyA9ICggJyAnIHggJGxlYWRpbmdfd2hpdGVzcGFjZV9jb3VudCApOwogICAgICAgIH0KCiAgICAgICAgIyBIYW5kbGUgZW50YWIgb3B0aW9uCiAgICAgICAgZWxzaWYgKCRyT3B0c19lbnRhYl9sZWFkaW5nX3doaXRlc3BhY2UpIHsKICAgICAgICAgICAgbXkgJHNwYWNlX2NvdW50ID0KICAgICAgICAgICAgICAkbGVhZGluZ193aGl0ZXNwYWNlX2NvdW50ICUgJHJPcHRzX2VudGFiX2xlYWRpbmdfd2hpdGVzcGFjZTsKICAgICAgICAgICAgbXkgJHRhYl9jb3VudCA9IGludCgKICAgICAgICAgICAgICAgICRsZWFkaW5nX3doaXRlc3BhY2VfY291bnQgLyAkck9wdHNfZW50YWJfbGVhZGluZ193aGl0ZXNwYWNlICk7CiAgICAgICAgICAgICRsZWFkaW5nX3N0cmluZyA9ICJcdCIgeCAkdGFiX2NvdW50IC4gJyAnIHggJHNwYWNlX2NvdW50OwogICAgICAgIH0KCiAgICAgICAgIyBIYW5kbGUgb3B0aW9uIG9mIG9uZSB0YWIgcGVyIGxldmVsCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRsZWFkaW5nX3N0cmluZyA9ICggIlx0IiB4ICRncm91cF9sZXZlbCApOwogICAgICAgICAgICBteSAkc3BhY2VfY291bnQgPQogICAgICAgICAgICAgICRsZWFkaW5nX3doaXRlc3BhY2VfY291bnQgLSAkZ3JvdXBfbGV2ZWwgKiAkck9wdHNfaW5kZW50X2NvbHVtbnM7CgogICAgICAgICAgICAjIHNob3VsZG4ndCBoYXBwZW46CiAgICAgICAgICAgIGlmICggJHNwYWNlX2NvdW50IDwgMCApIHsKICAgICAgICAgICAgICAgIFZBTElHTl9ERUJVR19GTEFHX1RBQlMKICAgICAgICAgICAgICAgICAgJiYgd2FybmluZygKIkVycm9yIGluIGdldF9sZWFkaW5nX3N0cmluZzogZm9yIGxldmVsPSRncm91cF9sZXZlbCBjb3VudD0kbGVhZGluZ193aGl0ZXNwYWNlX2NvdW50XG4iCiAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyAtLSBza2lwIGVudGFiYmluZwogICAgICAgICAgICAgICAgJGxlYWRpbmdfc3RyaW5nID0gKCAnICcgeCAkbGVhZGluZ193aGl0ZXNwYWNlX2NvdW50ICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkbGVhZGluZ19zdHJpbmcgLj0gKCAnICcgeCAkc3BhY2VfY291bnQgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkbGVhZGluZ19zdHJpbmdfY2FjaGVbJGxlYWRpbmdfd2hpdGVzcGFjZV9jb3VudF0gPSAkbGVhZGluZ19zdHJpbmc7CiAgICAgICAgcmV0dXJuICRsZWFkaW5nX3N0cmluZzsKICAgIH0KfSAgICAjIGVuZCBnZXRfbGVhZGluZ19zdHJpbmcKCnN1YiByZXBvcnRfYW55dGhpbmdfdW51c3VhbCB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgaWYgKCAkb3V0ZGVudGVkX2xpbmVfY291bnQgPiAwICkgewogICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoCiAgICAgICAgICAgICIkb3V0ZGVudGVkX2xpbmVfY291bnQgbG9uZyBsaW5lcyB3ZXJlIG91dGRlbnRlZDpcbiIpOwogICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoCiAgICAgICAgICAgICIgIEZpcnN0IGF0IG91dHB1dCBsaW5lICRmaXJzdF9vdXRkZW50ZWRfbGluZV9hdFxuIik7CgogICAgICAgIGlmICggJG91dGRlbnRlZF9saW5lX2NvdW50ID4gMSApIHsKICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgKICAgICAgICAgICAgICAgICIgICBMYXN0IGF0IG91dHB1dCBsaW5lICRsYXN0X291dGRlbnRlZF9saW5lX2F0XG4iKTsKICAgICAgICB9CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgKICAgICAgICAgICAgIiAgdXNlIC1ub2xsIHRvIHByZXZlbnQgb3V0ZGVudGluZywgLWw9biB0byBpbmNyZWFzZSBsaW5lIGxlbmd0aFxuIgogICAgICAgICk7CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiXG4iKTsKICAgIH0KICAgIHJldHVybjsKfQoxOwo=
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyB0aGUgUGVybDo6VGlkeTo6VG9rZW5pemVyIHBhY2thZ2UgaXMgZXNzZW50aWFsbHkgYSBmaWx0ZXIgd2hpY2gKIyByZWFkcyBsaW5lcyBvZiBwZXJsIHNvdXJjZSBjb2RlIGZyb20gYSBzb3VyY2Ugb2JqZWN0IGFuZCBwcm92aWRlcwojIGNvcnJlc3BvbmRpbmcgdG9rZW5pemVkIGxpbmVzIHRocm91Z2ggaXRzIGdldF9saW5lKCkgbWV0aG9kLiAgTGluZXMKIyBmbG93IGZyb20gdGhlIHNvdXJjZV9vYmplY3QgdG8gdGhlIGNhbGxlciBsaWtlIHRoaXM6CiMKIyBzb3VyY2Vfb2JqZWN0IC0tPiBMaW5lQnVmZmVyX29iamVjdCAtLT4gVG9rZW5pemVyIC0tPiAgY2FsbGluZyByb3V0aW5lCiMgICBnZXRfbGluZSgpICAgICAgICAgZ2V0X2xpbmUoKSAgICAgICAgICAgZ2V0X2xpbmUoKSAgICAgbGluZV9vZl90b2tlbnMKIwojIFRoZSBzb3VyY2Ugb2JqZWN0IGNhbiBiZSBhbnkgb2JqZWN0IHdpdGggYSBnZXRfbGluZSgpIG1ldGhvZCB3aGljaAojIHN1cHBsaWVzIG9uZSBsaW5lIChhIGNoYXJhY3RlciBzdHJpbmcpIHBlcmwgY2FsbC4KIyBUaGUgTGluZUJ1ZmZlciBvYmplY3QgaXMgY3JlYXRlZCBieSB0aGUgVG9rZW5pemVyLgojIFRoZSBUb2tlbml6ZXIgcmV0dXJucyBhIHJlZmVyZW5jZSB0byBhIGRhdGEgc3RydWN0dXJlICdsaW5lX29mX3Rva2VucycKIyBjb250YWluaW5nIG9uZSB0b2tlbml6ZWQgbGluZSBmb3IgZWFjaCBjYWxsIHRvIGl0cyBnZXRfbGluZSgpIG1ldGhvZC4KIwojIFdBUk5JTkc6IFRoaXMgaXMgbm90IGEgcmVhbCBjbGFzcyB5ZXQuICBPbmx5IG9uZSB0b2tlbml6ZXIgbXkgYmUgdXNlZC4KIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnBhY2thZ2UgUGVybDo6VGlkeTo6VG9rZW5pemVyOwp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm91ciAkVkVSU0lPTiA9ICcyMDE5MTIwMyc7Cgp1c2UgUGVybDo6VGlkeTo6TGluZUJ1ZmZlcjsKCkJFR0lOIHsKCiAgICAjIENhdXRpb246IHRoZXNlIGRlYnVnIGZsYWdzIHByb2R1Y2UgYSBsb3Qgb2Ygb3V0cHV0CiAgICAjIFRoZXkgc2hvdWxkIGFsbCBiZSAwIGV4Y2VwdCB3aGVuIGRlYnVnZ2luZyBzbWFsbCBzY3JpcHRzCgogICAgdXNlIGNvbnN0YW50IFRPS0VOSVpFUl9ERUJVR19GTEFHX0VYUEVDVCAgID0+IDA7CiAgICB1c2UgY29uc3RhbnQgVE9LRU5JWkVSX0RFQlVHX0ZMQUdfTlNDQU4gICAgPT4gMDsKICAgIHVzZSBjb25zdGFudCBUT0tFTklaRVJfREVCVUdfRkxBR19RVU9URSAgICA9PiAwOwogICAgdXNlIGNvbnN0YW50IFRPS0VOSVpFUl9ERUJVR19GTEFHX1NDQU5fSUQgID0+IDA7CiAgICB1c2UgY29uc3RhbnQgVE9LRU5JWkVSX0RFQlVHX0ZMQUdfVE9LRU5JWkUgPT4gMDsKCiAgICBteSAkZGVidWdfd2FybmluZyA9IHN1YiB7CiAgICAgICAgcHJpbnQgU1RET1VUICJUT0tFTklaRVJfREVCVUdHSU5HIHdpdGgga2V5ICRfWzBdXG4iOwogICAgfTsKCiAgICBUT0tFTklaRVJfREVCVUdfRkxBR19FWFBFQ1QgICAmJiAkZGVidWdfd2FybmluZy0+KCdFWFBFQ1QnKTsKICAgIFRPS0VOSVpFUl9ERUJVR19GTEFHX05TQ0FOICAgICYmICRkZWJ1Z193YXJuaW5nLT4oJ05TQ0FOJyk7CiAgICBUT0tFTklaRVJfREVCVUdfRkxBR19RVU9URSAgICAmJiAkZGVidWdfd2FybmluZy0+KCdRVU9URScpOwogICAgVE9LRU5JWkVSX0RFQlVHX0ZMQUdfU0NBTl9JRCAgJiYgJGRlYnVnX3dhcm5pbmctPignU0NBTl9JRCcpOwogICAgVE9LRU5JWkVSX0RFQlVHX0ZMQUdfVE9LRU5JWkUgJiYgJGRlYnVnX3dhcm5pbmctPignVE9LRU5JWkUnKTsKCn0KCnVzZSBDYXJwOwoKIyBQQUNLQUdFIFZBUklBQkxFUyBmb3IgcHJvY2Vzc2luZyBhbiBlbnRpcmUgRklMRS4KdXNlIHZhcnMgcXd7CiAgJHRva2VuaXplcl9zZWxmCgogICRsYXN0X25vbmJsYW5rX3Rva2VuCiAgJGxhc3Rfbm9uYmxhbmtfdHlwZQogICRsYXN0X25vbmJsYW5rX2Jsb2NrX3R5cGUKICAkc3RhdGVtZW50X3R5cGUKICAkaW5fYXR0cmlidXRlX2xpc3QKICAkY3VycmVudF9wYWNrYWdlCiAgJGNvbnRleHQKCiAgJWlzX2NvbnN0YW50CiAgJWlzX3VzZXJfZnVuY3Rpb24KICAldXNlcl9mdW5jdGlvbl9wcm90b3R5cGUKICAlaXNfYmxvY2tfZnVuY3Rpb24KICAlaXNfYmxvY2tfbGlzdF9mdW5jdGlvbgogICVzYXdfZnVuY3Rpb25fZGVmaW5pdGlvbgoKICAkYnJhY2VfZGVwdGgKICAkcGFyZW5fZGVwdGgKICAkc3F1YXJlX2JyYWNrZXRfZGVwdGgKCiAgQGN1cnJlbnRfZGVwdGgKICBAdG90YWxfZGVwdGgKICAkdG90YWxfZGVwdGgKICBAbmVzdGluZ19zZXF1ZW5jZV9udW1iZXIKICBAY3VycmVudF9zZXF1ZW5jZV9udW1iZXIKICBAcGFyZW5fdHlwZQogIEBwYXJlbl9zZW1pY29sb25fY291bnQKICBAcGFyZW5fc3RydWN0dXJhbF90eXBlCiAgQGJyYWNlX3R5cGUKICBAYnJhY2Vfc3RydWN0dXJhbF90eXBlCiAgQGJyYWNlX2NvbnRleHQKICBAYnJhY2VfcGFja2FnZQogIEBzcXVhcmVfYnJhY2tldF90eXBlCiAgQHNxdWFyZV9icmFja2V0X3N0cnVjdHVyYWxfdHlwZQogIEBkZXB0aF9hcnJheQogIEBuZXN0ZWRfdGVybmFyeV9mbGFnCiAgQG5lc3RlZF9zdGF0ZW1lbnRfdHlwZQogIEBzdGFydGluZ19saW5lX29mX2N1cnJlbnRfZGVwdGgKfTsKCiMgR0xPQkFMIENPTlNUQU5UUyBmb3Igcm91dGluZXMgaW4gdGhpcyBwYWNrYWdlCnVzZSB2YXJzIHF3ewogICVpc19pbmRpcmVjdF9vYmplY3RfdGFrZXIKICAlaXNfYmxvY2tfb3BlcmF0b3IKICAlZXhwZWN0aW5nX29wZXJhdG9yX3Rva2VuCiAgJWV4cGVjdGluZ19vcGVyYXRvcl90eXBlcwogICVleHBlY3RpbmdfdGVybV90eXBlcwogICVleHBlY3RpbmdfdGVybV90b2tlbgogICVpc19kaWdyYXBoCiAgJWlzX2ZpbGVfdGVzdF9vcGVyYXRvcgogICVpc190cmlncmFwaAogICVpc190ZXRyYWdyYXBoCiAgJWlzX3ZhbGlkX3Rva2VuX3R5cGUKICAlaXNfa2V5d29yZAogICVpc19jb2RlX2Jsb2NrX3Rva2VuCiAgJXJlYWxseV93YW50X3Rlcm0KICBAb3BlbmluZ19icmFjZV9uYW1lcwogIEBjbG9zaW5nX2JyYWNlX25hbWVzCiAgJWlzX2tleXdvcmRfdGFraW5nX2xpc3QKICAlaXNfa2V5d29yZF90YWtpbmdfb3B0aW9uYWxfYXJncwogICVpc19xX3FxX3F3X3F4X3FyX3NfeV90cl9tCiAgJWlzX3N1YgogICVpc19wYWNrYWdlCn07CgojIHBvc3NpYmxlIHZhbHVlcyBvZiBvcGVyYXRvcl9leHBlY3RlZCgpCnVzZSBjb25zdGFudCBURVJNICAgICA9PiAtMTsKdXNlIGNvbnN0YW50IFVOS05PV04gID0+IDA7CnVzZSBjb25zdGFudCBPUEVSQVRPUiA9PiAxOwoKIyBwb3NzaWJsZSB2YWx1ZXMgb2YgY29udGV4dAp1c2UgY29uc3RhbnQgU0NBTEFSX0NPTlRFWFQgID0+IC0xOwp1c2UgY29uc3RhbnQgVU5LTk9XTl9DT05URVhUID0+IDA7CnVzZSBjb25zdGFudCBMSVNUX0NPTlRFWFQgICAgPT4gMTsKCiMgTWF4aW11bSBudW1iZXIgb2YgbGl0dGxlIG1lc3NhZ2VzOyBwcm9iYWJseSBuZWVkIG5vdCBiZSBjaGFuZ2VkLgp1c2UgY29uc3RhbnQgTUFYX05BR19NRVNTQUdFUyA9PiA2OwoKewoKICAgICMgbWV0aG9kcyB0byBjb3VudCBpbnN0YW5jZXMKICAgIG15ICRfY291bnQgPSAwOwogICAgc3ViIGdldF9jb3VudCAgICAgICAgeyByZXR1cm4gJF9jb3VudDsgfQogICAgc3ViIF9pbmNyZW1lbnRfY291bnQgeyByZXR1cm4gKyskX2NvdW50IH0KICAgIHN1YiBfZGVjcmVtZW50X2NvdW50IHsgcmV0dXJuIC0tJF9jb3VudCB9Cn0KCnN1YiBERVNUUk9ZIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAkc2VsZi0+X2RlY3JlbWVudF9jb3VudCgpOwogICAgcmV0dXJuOwp9CgpzdWIgY2hlY2tfb3B0aW9ucyB7CgogICAgIyBDaGVjayBUb2tlbml6ZXIgcGFyYW1ldGVycwogICAgbXkgJHJPcHRzID0gc2hpZnQ7CgogICAgJWlzX3N1YiA9ICgpOwogICAgJGlzX3N1Ynsnc3ViJ30gPSAxOwoKICAgICMgSW5zdGFsbCBhbnkgYWxpYXNlcyB0byAnc3ViJwogICAgaWYgKCAkck9wdHMtPnsnc3ViLWFsaWFzLWxpc3QnfSApIHsKCiAgICAgICAgIyBOb3RlIHRoYXQgYW55ICdzdWItYWxpYXMtbGlzdCcgaGFzIGJlZW4gcHJlcHJvY2Vzc2VkIHRvCiAgICAgICAgIyBiZSBhIHRyaW1tZWQsIHNwYWNlLXNlcGFyYXRlZCBsaXN0IHdoaWNoIGluY2x1ZGVzICdzdWInCiAgICAgICAgIyBmb3IgZXhhbXBsZSwgaXQgbWlnaHQgYmUgJ3N1YiBtZXRob2QgZnVuJwogICAgICAgIG15IEBzdWJfYWxpYXNfbGlzdCA9IHNwbGl0IC9ccysvLCAkck9wdHMtPnsnc3ViLWFsaWFzLWxpc3QnfTsKICAgICAgICBmb3JlYWNoIG15ICR3b3JkIChAc3ViX2FsaWFzX2xpc3QpIHsKICAgICAgICAgICAgJGlzX3N1Ynskd29yZH0gPSAxOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybjsKfQoKc3ViIG5ldyB7CgogICAgbXkgKCAkY2xhc3MsIEBhcmdzICkgPSBAXzsKCiAgICAjIE5vdGU6ICd0YWJzJyBhbmQgJ2luZGVudF9jb2x1bW5zJyBhcmUgdGVtcG9yYXJ5IGFuZCBzaG91bGQgYmUKICAgICMgcmVtb3ZlZCBhc2FwCiAgICBteSAlZGVmYXVsdHMgPSAoCiAgICAgICAgc291cmNlX29iamVjdCAgICAgICAgPT4gdW5kZWYsCiAgICAgICAgZGVidWdnZXJfb2JqZWN0ICAgICAgPT4gdW5kZWYsCiAgICAgICAgZGlhZ25vc3RpY3Nfb2JqZWN0ICAgPT4gdW5kZWYsCiAgICAgICAgbG9nZ2VyX29iamVjdCAgICAgICAgPT4gdW5kZWYsCiAgICAgICAgc3RhcnRpbmdfbGV2ZWwgICAgICAgPT4gdW5kZWYsCiAgICAgICAgaW5kZW50X2NvbHVtbnMgICAgICAgPT4gNCwKICAgICAgICB0YWJzaXplICAgICAgICAgICAgICA9PiA4LAogICAgICAgIGxvb2tfZm9yX2hhc2hfYmFuZyAgID0+IDAsCiAgICAgICAgdHJpbV9xdyAgICAgICAgICAgICAgPT4gMSwKICAgICAgICBsb29rX2Zvcl9hdXRvbG9hZGVyICA9PiAxLAogICAgICAgIGxvb2tfZm9yX3NlbGZsb2FkZXIgID0+IDEsCiAgICAgICAgc3RhcnRpbmdfbGluZV9udW1iZXIgPT4gMSwKICAgICAgICBleHRlbmRlZF9zeW50YXggICAgICA9PiAwLAogICAgKTsKICAgIG15ICVhcmdzID0gKCAlZGVmYXVsdHMsIEBhcmdzICk7CgogICAgIyB3ZSBhcmUgZ2l2ZW4gYW4gb2JqZWN0IHdpdGggYSBnZXRfbGluZSgpIG1ldGhvZCB0byBzdXBwbHkgc291cmNlIGxpbmVzCiAgICBteSAkc291cmNlX29iamVjdCA9ICRhcmdze3NvdXJjZV9vYmplY3R9OwoKICAgICMgd2UgY3JlYXRlIGFub3RoZXIgb2JqZWN0IHdpdGggYSBnZXRfbGluZSgpIGFuZCBwZWVrX2FoZWFkKCkgbWV0aG9kCiAgICBteSAkbGluZV9idWZmZXJfb2JqZWN0ID0gUGVybDo6VGlkeTo6TGluZUJ1ZmZlci0+bmV3KCRzb3VyY2Vfb2JqZWN0KTsKCiAgICAjIFRva2VuaXplciBzdGF0ZSBkYXRhIGlzIGFzIGZvbGxvd3M6CiAgICAjIF9yaGVyZV90YXJnZXRfbGlzdCAgICByZWZlcmVuY2UgdG8gbGlzdCBvZiBoZXJlLWRvYyB0YXJnZXRzCiAgICAjIF9oZXJlX2RvY190YXJnZXQgICAgICB0aGUgdGFyZ2V0IHN0cmluZyBmb3IgYSBoZXJlIGRvY3VtZW50CiAgICAjIF9oZXJlX3F1b3RlX2NoYXJhY3RlciB0aGUgdHlwZSBvZiBoZXJlLWRvYyBxdW90aW5nICgiICcgYCBvciBub25lKQogICAgIyAgICAgICAgICAgICAgICAgICAgICAgdG8gZGV0ZXJtaW5lIGlmIGludGVycG9sYXRpb24gaXMgZG9uZQogICAgIyBfcXVvdGVfdGFyZ2V0ICAgICAgICAgY2hhcmFjdGVyIHdlIHNlZWsgaWYgY2hhc2luZyBhIHF1b3RlCiAgICAjIF9saW5lX3N0YXJ0X3F1b3RlICAgICBsaW5lIHdoZXJlIHdlIHN0YXJ0ZWQgbG9va2luZyBmb3IgYSBsb25nIHF1b3RlCiAgICAjIF9pbl9oZXJlX2RvYyAgICAgICAgICBmbGFnIGluZGljYXRpbmcgaWYgd2UgYXJlIGluIGEgaGVyZS1kb2MKICAgICMgX2luX3BvZCAgICAgICAgICAgICAgIGZsYWcgc2V0IGlmIHdlIGFyZSBpbiBwb2QgZG9jdW1lbnRhdGlvbgogICAgIyBfaW5fZXJyb3IgICAgICAgICAgICAgZmxhZyBzZXQgaWYgd2Ugc2F3IHNldmVyZSBlcnJvciAoYmluYXJ5IGluIHNjcmlwdCkKICAgICMgX2luX2RhdGEgICAgICAgICAgICAgIGZsYWcgc2V0IGlmIHdlIGFyZSBpbiBfX0RBVEFfXyBzZWN0aW9uCiAgICAjIF9pbl9lbmQgICAgICAgICAgICAgICBmbGFnIHNldCBpZiB3ZSBhcmUgaW4gX19FTkRfXyBzZWN0aW9uCiAgICAjIF9pbl9mb3JtYXQgICAgICAgICAgICBmbGFnIHNldCBpZiB3ZSBhcmUgaW4gYSBmb3JtYXQgZGVzY3JpcHRpb24KICAgICMgX2luX2F0dHJpYnV0ZV9saXN0ICAgIGZsYWcgdGVsbGluZyBpZiB3ZSBhcmUgbG9va2luZyBmb3IgYXR0cmlidXRlcwogICAgIyBfaW5fcXVvdGUgICAgICAgICAgICAgZmxhZyB0ZWxsaW5nIGlmIHdlIGFyZSBjaGFzaW5nIGEgcXVvdGUKICAgICMgX3N0YXJ0aW5nX2xldmVsICAgICAgIGluZGVudGF0aW9uIGxldmVsIG9mIGZpcnN0IGxpbmUKICAgICMgX2xpbmVfYnVmZmVyX29iamVjdCAgIG9iamVjdCB3aXRoIGdldF9saW5lKCkgbWV0aG9kIHRvIHN1cHBseSBzb3VyY2UgY29kZQogICAgIyBfZGlhZ25vc3RpY3Nfb2JqZWN0ICAgcGxhY2UgdG8gd3JpdGUgZGVidWdnaW5nIGluZm9ybWF0aW9uCiAgICAjIF91bmV4cGVjdGVkX2Vycm9yX2NvdW50ICBlcnJvciBjb3VudCB1c2VkIHRvIGxpbWl0IG91dHB1dAogICAgIyBfbG93ZXJfY2FzZV9sYWJlbHNfYXQgIGxpbmUgbnVtYmVycyB3aGVyZSBsb3dlciBjYXNlIGxhYmVscyBzZWVuCiAgICAjIF9oaXRfYnVnCQkgICAgIHByb2dyYW0gYnVnIGRldGVjdGVkCiAgICAkdG9rZW5pemVyX3NlbGYgPSB7CiAgICAgICAgX3JoZXJlX3RhcmdldF9saXN0ICAgICAgICAgICAgICAgICAgPT4gW10sCiAgICAgICAgX2luX2hlcmVfZG9jICAgICAgICAgICAgICAgICAgICAgICAgPT4gMCwKICAgICAgICBfaGVyZV9kb2NfdGFyZ2V0ICAgICAgICAgICAgICAgICAgICA9PiAiIiwKICAgICAgICBfaGVyZV9xdW90ZV9jaGFyYWN0ZXIgICAgICAgICAgICAgICA9PiAiIiwKICAgICAgICBfaW5fZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAwLAogICAgICAgIF9pbl9lbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IDAsCiAgICAgICAgX2luX2Zvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gMCwKICAgICAgICBfaW5fZXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAwLAogICAgICAgIF9pbl9wb2QgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IDAsCiAgICAgICAgX2luX2F0dHJpYnV0ZV9saXN0ICAgICAgICAgICAgICAgICAgPT4gMCwKICAgICAgICBfaW5fcXVvdGUgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAwLAogICAgICAgIF9xdW90ZV90YXJnZXQgICAgICAgICAgICAgICAgICAgICAgID0+ICIiLAogICAgICAgIF9saW5lX3N0YXJ0X3F1b3RlICAgICAgICAgICAgICAgICAgID0+IC0xLAogICAgICAgIF9zdGFydGluZ19sZXZlbCAgICAgICAgICAgICAgICAgICAgID0+ICRhcmdze3N0YXJ0aW5nX2xldmVsfSwKICAgICAgICBfa25vd19zdGFydGluZ19sZXZlbCAgICAgICAgICAgICAgICA9PiBkZWZpbmVkKCAkYXJnc3tzdGFydGluZ19sZXZlbH0gKSwKICAgICAgICBfdGFic2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkYXJnc3t0YWJzaXplfSwKICAgICAgICBfaW5kZW50X2NvbHVtbnMgICAgICAgICAgICAgICAgICAgICA9PiAkYXJnc3tpbmRlbnRfY29sdW1uc30sCiAgICAgICAgX2xvb2tfZm9yX2hhc2hfYmFuZyAgICAgICAgICAgICAgICAgPT4gJGFyZ3N7bG9va19mb3JfaGFzaF9iYW5nfSwKICAgICAgICBfdHJpbV9xdyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkYXJnc3t0cmltX3F3fSwKICAgICAgICBfY29udGludWF0aW9uX2luZGVudGF0aW9uICAgICAgICAgICA9PiAkYXJnc3tjb250aW51YXRpb25faW5kZW50YXRpb259LAogICAgICAgIF9vdXRkZW50X2xhYmVscyAgICAgICAgICAgICAgICAgICAgID0+ICRhcmdze291dGRlbnRfbGFiZWxzfSwKICAgICAgICBfbGFzdF9saW5lX251bWJlciAgICAgICAgICAgICAgICAgICA9PiAkYXJnc3tzdGFydGluZ19saW5lX251bWJlcn0gLSAxLAogICAgICAgIF9zYXdfcGVybF9kYXNoX1AgICAgICAgICAgICAgICAgICAgID0+IDAsCiAgICAgICAgX3Nhd19wZXJsX2Rhc2hfdyAgICAgICAgICAgICAgICAgICAgPT4gMCwKICAgICAgICBfc2F3X3VzZV9zdHJpY3QgICAgICAgICAgICAgICAgICAgICA9PiAwLAogICAgICAgIF9zYXdfdl9zdHJpbmcgICAgICAgICAgICAgICAgICAgICAgID0+IDAsCiAgICAgICAgX2hpdF9idWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gMCwKICAgICAgICBfbG9va19mb3JfYXV0b2xvYWRlciAgICAgICAgICAgICAgICA9PiAkYXJnc3tsb29rX2Zvcl9hdXRvbG9hZGVyfSwKICAgICAgICBfbG9va19mb3Jfc2VsZmxvYWRlciAgICAgICAgICAgICAgICA9PiAkYXJnc3tsb29rX2Zvcl9zZWxmbG9hZGVyfSwKICAgICAgICBfc2F3X2F1dG9sb2FkZXIgICAgICAgICAgICAgICAgICAgICA9PiAwLAogICAgICAgIF9zYXdfc2VsZmxvYWRlciAgICAgICAgICAgICAgICAgICAgID0+IDAsCiAgICAgICAgX3Nhd19oYXNoX2JhbmcgICAgICAgICAgICAgICAgICAgICAgPT4gMCwKICAgICAgICBfc2F3X2VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAwLAogICAgICAgIF9zYXdfZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IDAsCiAgICAgICAgX3Nhd19uZWdhdGl2ZV9pbmRlbnRhdGlvbiAgICAgICAgICAgPT4gMCwKICAgICAgICBfc3RhcnRlZF90b2tlbml6aW5nICAgICAgICAgICAgICAgICA9PiAwLAogICAgICAgIF9saW5lX2J1ZmZlcl9vYmplY3QgICAgICAgICAgICAgICAgID0+ICRsaW5lX2J1ZmZlcl9vYmplY3QsCiAgICAgICAgX2RlYnVnZ2VyX29iamVjdCAgICAgICAgICAgICAgICAgICAgPT4gJGFyZ3N7ZGVidWdnZXJfb2JqZWN0fSwKICAgICAgICBfZGlhZ25vc3RpY3Nfb2JqZWN0ICAgICAgICAgICAgICAgICA9PiAkYXJnc3tkaWFnbm9zdGljc19vYmplY3R9LAogICAgICAgIF9sb2dnZXJfb2JqZWN0ICAgICAgICAgICAgICAgICAgICAgID0+ICRhcmdze2xvZ2dlcl9vYmplY3R9LAogICAgICAgIF91bmV4cGVjdGVkX2Vycm9yX2NvdW50ICAgICAgICAgICAgID0+IDAsCiAgICAgICAgX3N0YXJ0ZWRfbG9va2luZ19mb3JfaGVyZV90YXJnZXRfYXQgPT4gMCwKICAgICAgICBfbmVhcmx5X21hdGNoZWRfaGVyZV90YXJnZXRfYXQgICAgICA9PiB1bmRlZiwKICAgICAgICBfbGluZV90ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAiIiwKICAgICAgICBfcmxvd2VyX2Nhc2VfbGFiZWxzX2F0ICAgICAgICAgICAgICA9PiB1bmRlZiwKICAgICAgICBfZXh0ZW5kZWRfc3ludGF4ICAgICAgICAgICAgICAgICAgICA9PiAkYXJnc3tleHRlbmRlZF9zeW50YXh9LAogICAgfTsKCiAgICBwcmVwYXJlX2Zvcl9hX25ld19maWxlKCk7CiAgICBmaW5kX3N0YXJ0aW5nX2luZGVudGF0aW9uX2xldmVsKCk7CgogICAgYmxlc3MgJHRva2VuaXplcl9zZWxmLCAkY2xhc3M7CgogICAgIyBUaGlzIGlzIG5vdCBhIGZ1bGwgY2xhc3MgeWV0LCBzbyBkaWUgaWYgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvCiAgICAjIGNyZWF0ZSBtb3JlIHRoYW4gb25lIG9iamVjdC4KCiAgICBpZiAoIF9pbmNyZW1lbnRfY291bnQoKSA+IDEgKSB7CiAgICAgICAgY29uZmVzcwoiQXR0ZW1wdCB0byBjcmVhdGUgbW9yZSB0aGFuIDEgb2JqZWN0IGluICRjbGFzcywgd2hpY2ggaXMgbm90IGEgdHJ1ZSBjbGFzcyB5ZXRcbiI7CiAgICB9CgogICAgcmV0dXJuICR0b2tlbml6ZXJfc2VsZjsKCn0KCiMgaW50ZXJmYWNlIHRvIFBlcmw6OlRpZHk6OkxvZ2dlciByb3V0aW5lcwpzdWIgd2FybmluZyB7CiAgICBteSAkbXNnICAgICAgICAgICA9IHNoaWZ0OwogICAgbXkgJGxvZ2dlcl9vYmplY3QgPSAkdG9rZW5pemVyX3NlbGYtPntfbG9nZ2VyX29iamVjdH07CiAgICBpZiAoJGxvZ2dlcl9vYmplY3QpIHsKICAgICAgICAkbG9nZ2VyX29iamVjdC0+d2FybmluZygkbXNnKTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIGNvbXBsYWluIHsKICAgIG15ICRtc2cgICAgICAgICAgID0gc2hpZnQ7CiAgICBteSAkbG9nZ2VyX29iamVjdCA9ICR0b2tlbml6ZXJfc2VsZi0+e19sb2dnZXJfb2JqZWN0fTsKICAgIGlmICgkbG9nZ2VyX29iamVjdCkgewogICAgICAgICRsb2dnZXJfb2JqZWN0LT5jb21wbGFpbigkbXNnKTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIHdyaXRlX2xvZ2ZpbGVfZW50cnkgewogICAgbXkgJG1zZyAgICAgICAgICAgPSBzaGlmdDsKICAgIG15ICRsb2dnZXJfb2JqZWN0ID0gJHRva2VuaXplcl9zZWxmLT57X2xvZ2dlcl9vYmplY3R9OwogICAgaWYgKCRsb2dnZXJfb2JqZWN0KSB7CiAgICAgICAgJGxvZ2dlcl9vYmplY3QtPndyaXRlX2xvZ2ZpbGVfZW50cnkoJG1zZyk7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBpbnRlcnJ1cHRfbG9nZmlsZSB7CiAgICBteSAkbG9nZ2VyX29iamVjdCA9ICR0b2tlbml6ZXJfc2VsZi0+e19sb2dnZXJfb2JqZWN0fTsKICAgIGlmICgkbG9nZ2VyX29iamVjdCkgewogICAgICAgICRsb2dnZXJfb2JqZWN0LT5pbnRlcnJ1cHRfbG9nZmlsZSgpOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgcmVzdW1lX2xvZ2ZpbGUgewogICAgbXkgJGxvZ2dlcl9vYmplY3QgPSAkdG9rZW5pemVyX3NlbGYtPntfbG9nZ2VyX29iamVjdH07CiAgICBpZiAoJGxvZ2dlcl9vYmplY3QpIHsKICAgICAgICAkbG9nZ2VyX29iamVjdC0+cmVzdW1lX2xvZ2ZpbGUoKTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIGluY3JlbWVudF9icmFjZV9lcnJvciB7CiAgICBteSAkbG9nZ2VyX29iamVjdCA9ICR0b2tlbml6ZXJfc2VsZi0+e19sb2dnZXJfb2JqZWN0fTsKICAgIGlmICgkbG9nZ2VyX29iamVjdCkgewogICAgICAgICRsb2dnZXJfb2JqZWN0LT5pbmNyZW1lbnRfYnJhY2VfZXJyb3IoKTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIHJlcG9ydF9kZWZpbml0ZV9idWcgewogICAgJHRva2VuaXplcl9zZWxmLT57X2hpdF9idWd9ID0gMTsKICAgIG15ICRsb2dnZXJfb2JqZWN0ID0gJHRva2VuaXplcl9zZWxmLT57X2xvZ2dlcl9vYmplY3R9OwogICAgaWYgKCRsb2dnZXJfb2JqZWN0KSB7CiAgICAgICAgJGxvZ2dlcl9vYmplY3QtPnJlcG9ydF9kZWZpbml0ZV9idWcoKTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIGJyYWNlX3dhcm5pbmcgewogICAgbXkgJG1zZyAgICAgICAgICAgPSBzaGlmdDsKICAgIG15ICRsb2dnZXJfb2JqZWN0ID0gJHRva2VuaXplcl9zZWxmLT57X2xvZ2dlcl9vYmplY3R9OwogICAgaWYgKCRsb2dnZXJfb2JqZWN0KSB7CiAgICAgICAgJGxvZ2dlcl9vYmplY3QtPmJyYWNlX3dhcm5pbmcoJG1zZyk7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBnZXRfc2F3X2JyYWNlX2Vycm9yIHsKICAgIG15ICRsb2dnZXJfb2JqZWN0ID0gJHRva2VuaXplcl9zZWxmLT57X2xvZ2dlcl9vYmplY3R9OwogICAgaWYgKCRsb2dnZXJfb2JqZWN0KSB7CiAgICAgICAgcmV0dXJuICRsb2dnZXJfb2JqZWN0LT5nZXRfc2F3X2JyYWNlX2Vycm9yKCk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gMDsKICAgIH0KfQoKIyBpbnRlcmZhY2UgdG8gUGVybDo6VGlkeTo6RGlhZ25vc3RpY3Mgcm91dGluZXMKc3ViIHdyaXRlX2RpYWdub3N0aWNzIHsKICAgIG15ICRtc2cgPSBzaGlmdDsKICAgIGlmICggJHRva2VuaXplcl9zZWxmLT57X2RpYWdub3N0aWNzX29iamVjdH0gKSB7CiAgICAgICAgJHRva2VuaXplcl9zZWxmLT57X2RpYWdub3N0aWNzX29iamVjdH0tPndyaXRlX2RpYWdub3N0aWNzKCRtc2cpOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgcmVwb3J0X3Rva2VuaXphdGlvbl9lcnJvcnMgewoKICAgIG15ICRzZWxmICAgICAgICAgPSBzaGlmdDsKICAgIG15ICRzZXZlcmVfZXJyb3IgPSAkc2VsZi0+e19pbl9lcnJvcn07CgogICAgbXkgJGxldmVsID0gZ2V0X2luZGVudGF0aW9uX2xldmVsKCk7CiAgICBpZiAoICRsZXZlbCAhPSAkdG9rZW5pemVyX3NlbGYtPntfc3RhcnRpbmdfbGV2ZWx9ICkgewogICAgICAgIHdhcm5pbmcoImZpbmFsIGluZGVudGF0aW9uIGxldmVsOiAkbGV2ZWxcbiIpOwogICAgfQoKICAgIGNoZWNrX2ZpbmFsX25lc3RpbmdfZGVwdGhzKCk7CgogICAgaWYgKCAkdG9rZW5pemVyX3NlbGYtPntfbG9va19mb3JfaGFzaF9iYW5nfQogICAgICAgICYmICEkdG9rZW5pemVyX3NlbGYtPntfc2F3X2hhc2hfYmFuZ30gKQogICAgewogICAgICAgIHdhcm5pbmcoCiAgICAgICAgICAgICJoaXQgRU9GIHdpdGhvdXQgc2VlaW5nIGhhc2gtYmFuZyBsaW5lOyBtYXliZSBkb24ndCBuZWVkIC14P1xuIik7CiAgICB9CgogICAgaWYgKCAkdG9rZW5pemVyX3NlbGYtPntfaW5fZm9ybWF0fSApIHsKICAgICAgICB3YXJuaW5nKCJoaXQgRU9GIHdoaWxlIGluIGZvcm1hdCBkZXNjcmlwdGlvblxuIik7CiAgICB9CgogICAgaWYgKCAkdG9rZW5pemVyX3NlbGYtPntfaW5fcG9kfSApIHsKCiAgICAgICAgIyBKdXN0IHdyaXRlIGxvZyBlbnRyeSBpZiB0aGlzIGlzIGFmdGVyIF9fRU5EX18gb3IgX19EQVRBX18KICAgICAgICAjIGJlY2F1c2UgdGhpcyBoYXBwZW5zIHRvIG9mdGVuLCBhbmQgaXQgaXMgbm90IGxpa2VseSB0byBiZQogICAgICAgICMgYSBwYXJzaW5nIGVycm9yLgogICAgICAgIGlmICggJHRva2VuaXplcl9zZWxmLT57X3Nhd19kYXRhfSB8fCAkdG9rZW5pemVyX3NlbGYtPntfc2F3X2VuZH0gKSB7CiAgICAgICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoCiJoaXQgZW9mIHdoaWxlIGluIHBvZCBkb2N1bWVudGF0aW9uIChubyA9Y3V0IHNlZW4pXG5cdHRoaXMgY2FuIGNhdXNlIHRyb3VibGUgd2l0aCBzb21lIHBvZCB1dGlsaXRpZXNcbiIKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGVsc2UgewogICAgICAgICAgICBjb21wbGFpbigKImhpdCBlb2Ygd2hpbGUgaW4gcG9kIGRvY3VtZW50YXRpb24gKG5vID1jdXQgc2Vlbilcblx0dGhpcyBjYW4gY2F1c2UgdHJvdWJsZSB3aXRoIHNvbWUgcG9kIHV0aWxpdGllc1xuIgogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICB9CgogICAgaWYgKCAkdG9rZW5pemVyX3NlbGYtPntfaW5faGVyZV9kb2N9ICkgewogICAgICAgICRzZXZlcmVfZXJyb3IgPSAxOwogICAgICAgIG15ICRoZXJlX2RvY190YXJnZXQgPSAkdG9rZW5pemVyX3NlbGYtPntfaGVyZV9kb2NfdGFyZ2V0fTsKICAgICAgICBteSAkc3RhcnRlZF9sb29raW5nX2Zvcl9oZXJlX3RhcmdldF9hdCA9CiAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPntfc3RhcnRlZF9sb29raW5nX2Zvcl9oZXJlX3RhcmdldF9hdH07CiAgICAgICAgaWYgKCRoZXJlX2RvY190YXJnZXQpIHsKICAgICAgICAgICAgd2FybmluZygKImhpdCBFT0YgaW4gaGVyZSBkb2N1bWVudCBzdGFydGluZyBhdCBsaW5lICRzdGFydGVkX2xvb2tpbmdfZm9yX2hlcmVfdGFyZ2V0X2F0IHdpdGggdGFyZ2V0OiAkaGVyZV9kb2NfdGFyZ2V0XG4iCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICB3YXJuaW5nKAoiaGl0IEVPRiBpbiBoZXJlIGRvY3VtZW50IHN0YXJ0aW5nIGF0IGxpbmUgJHN0YXJ0ZWRfbG9va2luZ19mb3JfaGVyZV90YXJnZXRfYXQgd2l0aCBlbXB0eSB0YXJnZXQgc3RyaW5nXG4iCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIG15ICRuZWFybHlfbWF0Y2hlZF9oZXJlX3RhcmdldF9hdCA9CiAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPntfbmVhcmx5X21hdGNoZWRfaGVyZV90YXJnZXRfYXR9OwogICAgICAgIGlmICgkbmVhcmx5X21hdGNoZWRfaGVyZV90YXJnZXRfYXQpIHsKICAgICAgICAgICAgd2FybmluZygKIk5PVEU6IGFsbW9zdCBtYXRjaGVkIGF0IGlucHV0IGxpbmUgJG5lYXJseV9tYXRjaGVkX2hlcmVfdGFyZ2V0X2F0IGV4Y2VwdCBmb3Igd2hpdGVzcGFjZVxuIgogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICR0b2tlbml6ZXJfc2VsZi0+e19pbl9xdW90ZX0gKSB7CiAgICAgICAgJHNldmVyZV9lcnJvciA9IDE7CiAgICAgICAgbXkgJGxpbmVfc3RhcnRfcXVvdGUgPSAkdG9rZW5pemVyX3NlbGYtPntfbGluZV9zdGFydF9xdW90ZX07CiAgICAgICAgbXkgJHF1b3RlX3RhcmdldCAgICAgPSAkdG9rZW5pemVyX3NlbGYtPntfcXVvdGVfdGFyZ2V0fTsKICAgICAgICBteSAkd2hhdCA9CiAgICAgICAgICAoICR0b2tlbml6ZXJfc2VsZi0+e19pbl9hdHRyaWJ1dGVfbGlzdH0gKQogICAgICAgICAgPyAiYXR0cmlidXRlIGxpc3QiCiAgICAgICAgICA6ICJxdW90ZS9wYXR0ZXJuIjsKICAgICAgICB3YXJuaW5nKAoiaGl0IEVPRiBzZWVraW5nIGVuZCBvZiAkd2hhdCBzdGFydGluZyBhdCBsaW5lICRsaW5lX3N0YXJ0X3F1b3RlIGVuZGluZyBpbiAkcXVvdGVfdGFyZ2V0XG4iCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICR0b2tlbml6ZXJfc2VsZi0+e19oaXRfYnVnfSApIHsKICAgICAgICAkc2V2ZXJlX2Vycm9yID0gMTsKICAgIH0KCiAgICBteSAkbG9nZ2VyX29iamVjdCA9ICR0b2tlbml6ZXJfc2VsZi0+e19sb2dnZXJfb2JqZWN0fTsKCiMgVE9ETzogZXZlbnR1YWxseSBtYXkgd2FudCB0byBhY3RpdmF0ZSB0aGlzIHRvIGNhdXNlIGZpbGUgdG8gYmUgb3V0cHV0IHZlcmJhdGltCiAgICBpZiAoMCkgewoKICAgICAgICAjIFNldCB0aGUgc2V2ZXJlIGVycm9yIGZvciBhIGZhaXJseSBoaWdoIHdhcm5pbmcgY291bnQgYmVjYXVzZQogICAgICAgICMgc29tZSBvZiB0aGUgd2FybmluZ3MgZG8gbm90IGhhcm0gZm9ybWF0dGluZywgc3VjaCBhcyBkdXBsaWNhdGUKICAgICAgICAjIHN1YiBuYW1lcy4KICAgICAgICBteSAkd2FybmluZ19jb3VudCA9ICRsb2dnZXJfb2JqZWN0LT57X3dhcm5pbmdfY291bnR9OwogICAgICAgIGlmICggJHdhcm5pbmdfY291bnQgPiA1MCApIHsKICAgICAgICAgICAgJHNldmVyZV9lcnJvciA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIEJyYWNlIGVycm9ycyBhcmUgc2lnbmlmaWNhbnQsIHNvIHNldCB0aGUgc2V2ZXJlIGVycm9yIGZsYWcgYXQKICAgICAgICAjIGEgbG93IG51bWJlci4KICAgICAgICBteSAkc2F3X2JyYWNlX2Vycm9yID0gJGxvZ2dlcl9vYmplY3QtPntfc2F3X2JyYWNlX2Vycm9yfTsKICAgICAgICBpZiAoICRzYXdfYnJhY2VfZXJyb3IgPiAyICkgewogICAgICAgICAgICAkc2V2ZXJlX2Vycm9yID0gMTsKICAgICAgICB9CiAgICB9CgogICAgdW5sZXNzICggJHRva2VuaXplcl9zZWxmLT57X3Nhd19wZXJsX2Rhc2hfd30gKSB7CiAgICAgICAgaWYgKCAkXSA8IDUuMDA2ICkgewogICAgICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCJTdWdnZXN0IGluY2x1ZGluZyAnLXcgcGFyYW1ldGVyJ1xuIik7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCJTdWdnZXN0IGluY2x1ZGluZyAndXNlIHdhcm5pbmdzOydcbiIpOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICR0b2tlbml6ZXJfc2VsZi0+e19zYXdfcGVybF9kYXNoX1B9ICkgewogICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoIlVzZSBvZiAtUCBwYXJhbWV0ZXIgZm9yIGRlZmluZXMgaXMgZGlzY291cmFnZWRcbiIpOwogICAgfQoKICAgIHVubGVzcyAoICR0b2tlbml6ZXJfc2VsZi0+e19zYXdfdXNlX3N0cmljdH0gKSB7CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiU3VnZ2VzdCBpbmNsdWRpbmcgJ3VzZSBzdHJpY3Q7J1xuIik7CiAgICB9CgogICAgIyBpdCBpcyBzdWdnZXN0ZWQgdGhhdCBsYWJlbHMgaGF2ZSBhdCBsZWFzdCBvbmUgdXBwZXIgY2FzZSBjaGFyYWN0ZXIKICAgICMgZm9yIGxlZ2liaWxpdHkgYW5kIHRvIGF2b2lkIGNvZGUgYnJlYWthZ2UgYXMgbmV3IGtleXdvcmRzIGFyZSBpbnRyb2R1Y2VkCiAgICBpZiAoICR0b2tlbml6ZXJfc2VsZi0+e19ybG93ZXJfY2FzZV9sYWJlbHNfYXR9ICkgewogICAgICAgIG15IEBsb3dlcl9jYXNlX2xhYmVsc19hdCA9CiAgICAgICAgICBAeyAkdG9rZW5pemVyX3NlbGYtPntfcmxvd2VyX2Nhc2VfbGFiZWxzX2F0fSB9OwogICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoCiAgICAgICAgICAgICJTdWdnZXN0IHVzaW5nIHVwcGVyIGNhc2UgY2hhcmFjdGVycyBpbiBsYWJlbChzKVxuIik7CiAgICAgICAgbG9jYWwgJCIgPSAnKSgnOwogICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoIiAgZGVmaW5lZCBhdCBsaW5lKHMpOiAoQGxvd2VyX2Nhc2VfbGFiZWxzX2F0KVxuIik7CiAgICB9CiAgICByZXR1cm4gJHNldmVyZV9lcnJvcjsKfQoKc3ViIHJlcG9ydF92X3N0cmluZyB7CgogICAgIyB3YXJuIGlmIHRoaXMgdmVyc2lvbiBjYW4ndCBoYW5kbGUgdi1zdHJpbmdzCiAgICBteSAkdG9rID0gc2hpZnQ7CiAgICB1bmxlc3MgKCAkdG9rZW5pemVyX3NlbGYtPntfc2F3X3Zfc3RyaW5nfSApIHsKICAgICAgICAkdG9rZW5pemVyX3NlbGYtPntfc2F3X3Zfc3RyaW5nfSA9ICR0b2tlbml6ZXJfc2VsZi0+e19sYXN0X2xpbmVfbnVtYmVyfTsKICAgIH0KICAgIGlmICggJF0gPCA1LjAwNiApIHsKICAgICAgICB3YXJuaW5nKAoiRm91bmQgdi1zdHJpbmcgJyR0b2snIGJ1dCB2LXN0cmluZ3MgYXJlIG5vdCBpbXBsZW1lbnRlZCBpbiB5b3VyIHZlcnNpb24gb2YgcGVybDsgc2VlIENhbWVsIDMgYm9vayBjaCAyXG4iCiAgICAgICAgKTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIGdldF9pbnB1dF9saW5lX251bWJlciB7CiAgICByZXR1cm4gJHRva2VuaXplcl9zZWxmLT57X2xhc3RfbGluZV9udW1iZXJ9Owp9CgojIHJldHVybnMgdGhlIG5leHQgdG9rZW5pemVkIGxpbmUKc3ViIGdldF9saW5lIHsKCiAgICBteSAkc2VsZiA9IHNoaWZ0OwoKICAgICMgVVNFUyBHTE9CQUwgVkFSSUFCTEVTOiAkdG9rZW5pemVyX3NlbGYsICRicmFjZV9kZXB0aCwKICAgICMgJHNxdWFyZV9icmFja2V0X2RlcHRoLCAkcGFyZW5fZGVwdGgKCiAgICBteSAkaW5wdXRfbGluZSA9ICR0b2tlbml6ZXJfc2VsZi0+e19saW5lX2J1ZmZlcl9vYmplY3R9LT5nZXRfbGluZSgpOwogICAgJHRva2VuaXplcl9zZWxmLT57X2xpbmVfdGV4dH0gPSAkaW5wdXRfbGluZTsKCiAgICByZXR1cm4gdW5sZXNzICgkaW5wdXRfbGluZSk7CgogICAgbXkgJGlucHV0X2xpbmVfbnVtYmVyID0gKyskdG9rZW5pemVyX3NlbGYtPntfbGFzdF9saW5lX251bWJlcn07CgogICAgIyBGaW5kIGFuZCByZW1vdmUgd2hhdCBjaGFyYWN0ZXJzIHRlcm1pbmF0ZSB0aGlzIGxpbmUsIGluY2x1ZGluZyBhbnkKICAgICMgY29udHJvbCByCiAgICBteSAkaW5wdXRfbGluZV9zZXBhcmF0b3IgPSAiIjsKICAgIGlmICggY2hvbXAoJGlucHV0X2xpbmUpICkgeyAkaW5wdXRfbGluZV9zZXBhcmF0b3IgPSAkLyB9CgogICAgIyBUT0RPOiB3aGF0IG90aGVyIGNoYXJhY3RlcnMgc2hvdWxkIGJlIGluY2x1ZGVkIGhlcmU/CiAgICBpZiAoICRpbnB1dF9saW5lID1+IHMvKChccnxcMDM1fFwwMzIpKykkLy8gKSB7CiAgICAgICAgJGlucHV0X2xpbmVfc2VwYXJhdG9yID0gJDIgLiAkaW5wdXRfbGluZV9zZXBhcmF0b3I7CiAgICB9CgogICAgIyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2Uga2VlcCB0aGUgbGluZSB0ZXh0IHRlcm1pbmF0ZWQgd2l0aAogICAgIyBhIG5ld2xpbmUgY2hhcmFjdGVyCiAgICAkaW5wdXRfbGluZSAuPSAiXG4iOwogICAgJHRva2VuaXplcl9zZWxmLT57X2xpbmVfdGV4dH0gPSAkaW5wdXRfbGluZTsgICAgIyB1cGRhdGUKCiAgICAjIGNyZWF0ZSBhIGRhdGEgc3RydWN0dXJlIGRlc2NyaWJpbmcgdGhpcyBsaW5lIHdoaWNoIHdpbGwgYmUKICAgICMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlci4KCiAgICAjIF9saW5lX3R5cGUgY29kZXMgYXJlOgogICAgIyAgIFNZU1RFTSAgICAgICAgIC0gc3lzdGVtLXNwZWNpZmljIGNvZGUgYmVmb3JlIGhhc2gtYmFuZyBsaW5lCiAgICAjICAgQ09ERSAgICAgICAgICAgLSBsaW5lIG9mIHBlcmwgY29kZSAoaW5jbHVkaW5nIGNvbW1lbnRzKQogICAgIyAgIFBPRF9TVEFSVCAgICAgIC0gbGluZSBzdGFydGluZyBwb2QsIHN1Y2ggYXMgJz1oZWFkJwogICAgIyAgIFBPRCAgICAgICAgICAgIC0gcG9kIGRvY3VtZW50YXRpb24gdGV4dAogICAgIyAgIFBPRF9FTkQgICAgICAgIC0gbGFzdCBsaW5lIG9mIHBvZCBzZWN0aW9uLCAnPWN1dCcKICAgICMgICBIRVJFICAgICAgICAgICAtIHRleHQgb2YgaGVyZS1kb2N1bWVudAogICAgIyAgIEhFUkVfRU5EICAgICAgIC0gbGFzdCBsaW5lIG9mIGhlcmUtZG9jICh0YXJnZXQgd29yZCkKICAgICMgICBGT1JNQVQgICAgICAgICAtIGZvcm1hdCBzZWN0aW9uCiAgICAjICAgRk9STUFUX0VORCAgICAgLSBsYXN0IGxpbmUgb2YgZm9ybWF0IHNlY3Rpb24sICcuJwogICAgIyAgIERBVEFfU1RBUlQgICAgIC0gX19EQVRBX18gbGluZQogICAgIyAgIERBVEEgICAgICAgICAgIC0gdW5pZGVudGlmaWVkIHRleHQgZm9sbG93aW5nIF9fREFUQV9fCiAgICAjICAgRU5EX1NUQVJUICAgICAgLSBfX0VORF9fIGxpbmUKICAgICMgICBFTkQgICAgICAgICAgICAtIHVuaWRlbnRpZmllZCB0ZXh0IGZvbGxvd2luZyBfX0VORF9fCiAgICAjICAgRVJST1IgICAgICAgICAgLSB3ZSBhcmUgaW4gYmlnIHRyb3VibGUsIHByb2JhYmx5IG5vdCBhIHBlcmwgc2NyaXB0CgogICAgIyBPdGhlciB2YXJpYWJsZXM6CiAgICAjICAgX2N1cmx5X2JyYWNlX2RlcHRoICAgICAtIGRlcHRoIG9mIGN1cmx5IGJyYWNlcyBhdCBzdGFydCBvZiBsaW5lCiAgICAjICAgX3NxdWFyZV9icmFja2V0X2RlcHRoICAtIGRlcHRoIG9mIHNxdWFyZSBicmFja2V0cyBhdCBzdGFydCBvZiBsaW5lCiAgICAjICAgX3BhcmVuX2RlcHRoICAgICAgICAgICAtIGRlcHRoIG9mIHBhcmVucyBhdCBzdGFydCBvZiBsaW5lCiAgICAjICAgX3N0YXJ0aW5nX2luX3F1b3RlICAgICAtIHRoaXMgbGluZSBjb250aW51ZXMgYSBtdWx0aS1saW5lIHF1b3RlCiAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzbyBkb24ndCB0cmltIGxlYWRpbmcgYmxhbmtzISkKICAgICMgICBfZW5kaW5nX2luX3F1b3RlICAgICAgIC0gdGhpcyBsaW5lIGVuZHMgaW4gYSBtdWx0aS1saW5lIHF1b3RlCiAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzbyBkb24ndCB0cmltIHRyYWlsaW5nIGJsYW5rcyEpCiAgICBteSAkbGluZV9vZl90b2tlbnMgPSB7CiAgICAgICAgX2xpbmVfdHlwZSAgICAgICAgICAgICAgICAgPT4gJ0VPRicsCiAgICAgICAgX2xpbmVfdGV4dCAgICAgICAgICAgICAgICAgPT4gJGlucHV0X2xpbmUsCiAgICAgICAgX2xpbmVfbnVtYmVyICAgICAgICAgICAgICAgPT4gJGlucHV0X2xpbmVfbnVtYmVyLAogICAgICAgIF9ydG9rZW5fdHlwZSAgICAgICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIF9ydG9rZW5zICAgICAgICAgICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIF9ybGV2ZWxzICAgICAgICAgICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIF9yc2xldmVscyAgICAgICAgICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIF9yYmxvY2tfdHlwZSAgICAgICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIF9yY29udGFpbmVyX3R5cGUgICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIF9yY29udGFpbmVyX2Vudmlyb25tZW50ICAgID0+IHVuZGVmLAogICAgICAgIF9ydHlwZV9zZXF1ZW5jZSAgICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIF9ybmVzdGluZ190b2tlbnMgICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIF9yY2lfbGV2ZWxzICAgICAgICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIF9ybmVzdGluZ19ibG9ja3MgICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIF9ndWVzc2VkX2luZGVudGF0aW9uX2xldmVsID0+IDAsCiAgICAgICAgX3N0YXJ0aW5nX2luX3F1b3RlICAgID0+IDAsICAgICAgICAgICAgICAgICAgICAjIHRvIGJlIHNldCBieSBzdWJyb3V0aW5lCiAgICAgICAgX2VuZGluZ19pbl9xdW90ZSAgICAgID0+IDAsCiAgICAgICAgX2N1cmx5X2JyYWNlX2RlcHRoICAgID0+ICRicmFjZV9kZXB0aCwKICAgICAgICBfc3F1YXJlX2JyYWNrZXRfZGVwdGggPT4gJHNxdWFyZV9icmFja2V0X2RlcHRoLAogICAgICAgIF9wYXJlbl9kZXB0aCAgICAgICAgICA9PiAkcGFyZW5fZGVwdGgsCiAgICAgICAgX3F1b3RlX2NoYXJhY3RlciAgICAgID0+ICcnLAogICAgfTsKCiAgICAjIG11c3QgcHJpbnQgbGluZSB1bmNoYW5nZWQgaWYgd2UgYXJlIGluIGEgaGVyZSBkb2N1bWVudAogICAgaWYgKCAkdG9rZW5pemVyX3NlbGYtPntfaW5faGVyZV9kb2N9ICkgewoKICAgICAgICAkbGluZV9vZl90b2tlbnMtPntfbGluZV90eXBlfSA9ICdIRVJFJzsKICAgICAgICBteSAkaGVyZV9kb2NfdGFyZ2V0ICAgICAgPSAkdG9rZW5pemVyX3NlbGYtPntfaGVyZV9kb2NfdGFyZ2V0fTsKICAgICAgICBteSAkaGVyZV9xdW90ZV9jaGFyYWN0ZXIgPSAkdG9rZW5pemVyX3NlbGYtPntfaGVyZV9xdW90ZV9jaGFyYWN0ZXJ9OwogICAgICAgIG15ICRjYW5kaWRhdGVfdGFyZ2V0ICAgICA9ICRpbnB1dF9saW5lOwogICAgICAgIGNob21wICRjYW5kaWRhdGVfdGFyZ2V0OwoKICAgICAgICAjIEhhbmRsZSA8PH4gdGFyZ2V0cywgd2hpY2ggYXJlIGluZGljYXRlZCBoZXJlIGJ5IGEgbGVhZGluZyBzcGFjZSBvbgogICAgICAgICMgdGhlIGhlcmUgcXVvdGUgY2hhcmFjdGVyCiAgICAgICAgaWYgKCAkaGVyZV9xdW90ZV9jaGFyYWN0ZXIgPX4gL15ccy8gKSB7CiAgICAgICAgICAgICRjYW5kaWRhdGVfdGFyZ2V0ID1+IHMvXlxzKi8vOwogICAgICAgIH0KICAgICAgICBpZiAoICRjYW5kaWRhdGVfdGFyZ2V0IGVxICRoZXJlX2RvY190YXJnZXQgKSB7CiAgICAgICAgICAgICR0b2tlbml6ZXJfc2VsZi0+e19uZWFybHlfbWF0Y2hlZF9oZXJlX3RhcmdldF9hdH0gPSB1bmRlZjsKICAgICAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdHlwZX0gICAgICAgICAgICAgICAgICAgICA9ICdIRVJFX0VORCc7CiAgICAgICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoIkV4aXRpbmcgSEVSRSBkb2N1bWVudCAkaGVyZV9kb2NfdGFyZ2V0XG4iKTsKCiAgICAgICAgICAgIG15ICRyaGVyZV90YXJnZXRfbGlzdCA9ICR0b2tlbml6ZXJfc2VsZi0+e19yaGVyZV90YXJnZXRfbGlzdH07CiAgICAgICAgICAgIGlmICggQHskcmhlcmVfdGFyZ2V0X2xpc3R9ICkgeyAgIyB0aGVyZSBjYW4gYmUgbXVsdGlwbGUgaGVyZSB0YXJnZXRzCiAgICAgICAgICAgICAgICAoICRoZXJlX2RvY190YXJnZXQsICRoZXJlX3F1b3RlX2NoYXJhY3RlciApID0KICAgICAgICAgICAgICAgICAgQHsgc2hpZnQgQHskcmhlcmVfdGFyZ2V0X2xpc3R9IH07CiAgICAgICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPntfaGVyZV9kb2NfdGFyZ2V0fSA9ICRoZXJlX2RvY190YXJnZXQ7CiAgICAgICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPntfaGVyZV9xdW90ZV9jaGFyYWN0ZXJ9ID0KICAgICAgICAgICAgICAgICAgJGhlcmVfcXVvdGVfY2hhcmFjdGVyOwogICAgICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgKICAgICAgICAgICAgICAgICAgICAiRW50ZXJpbmcgSEVSRSBkb2N1bWVudCAkaGVyZV9kb2NfdGFyZ2V0XG4iKTsKICAgICAgICAgICAgICAgICR0b2tlbml6ZXJfc2VsZi0+e19uZWFybHlfbWF0Y2hlZF9oZXJlX3RhcmdldF9hdH0gPSB1bmRlZjsKICAgICAgICAgICAgICAgICR0b2tlbml6ZXJfc2VsZi0+e19zdGFydGVkX2xvb2tpbmdfZm9yX2hlcmVfdGFyZ2V0X2F0fSA9CiAgICAgICAgICAgICAgICAgICRpbnB1dF9saW5lX251bWJlcjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICR0b2tlbml6ZXJfc2VsZi0+e19pbl9oZXJlX2RvY30gICAgICAgICAgPSAwOwogICAgICAgICAgICAgICAgJHRva2VuaXplcl9zZWxmLT57X2hlcmVfZG9jX3RhcmdldH0gICAgICA9ICIiOwogICAgICAgICAgICAgICAgJHRva2VuaXplcl9zZWxmLT57X2hlcmVfcXVvdGVfY2hhcmFjdGVyfSA9ICIiOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGZvciBlcnJvciBvZiBleHRyYSB3aGl0ZXNwYWNlCiAgICAgICAgIyBub3RlIGZvciBQRVJMNjogbGVhZGluZyB3aGl0ZXNwYWNlIGlzIGFsbG93ZWQKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJGNhbmRpZGF0ZV90YXJnZXQgPX4gcy9ccyokLy87CiAgICAgICAgICAgICRjYW5kaWRhdGVfdGFyZ2V0ID1+IHMvXlxzKi8vOwogICAgICAgICAgICBpZiAoICRjYW5kaWRhdGVfdGFyZ2V0IGVxICRoZXJlX2RvY190YXJnZXQgKSB7CiAgICAgICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPntfbmVhcmx5X21hdGNoZWRfaGVyZV90YXJnZXRfYXR9ID0KICAgICAgICAgICAgICAgICAgJGlucHV0X2xpbmVfbnVtYmVyOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkbGluZV9vZl90b2tlbnM7CiAgICB9CgogICAgIyBtdXN0IHByaW50IGxpbmUgdW5jaGFuZ2VkIGlmIHdlIGFyZSBpbiBhIGZvcm1hdCBzZWN0aW9uCiAgICBlbHNpZiAoICR0b2tlbml6ZXJfc2VsZi0+e19pbl9mb3JtYXR9ICkgewoKICAgICAgICBpZiAoICRpbnB1dF9saW5lID1+IC9eXC5bXHMjXSokLyApIHsKICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiRXhpdGluZyBmb3JtYXQgc2VjdGlvblxuIik7CiAgICAgICAgICAgICR0b2tlbml6ZXJfc2VsZi0+e19pbl9mb3JtYXR9ID0gMDsKICAgICAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdHlwZX0gPSAnRk9STUFUX0VORCc7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkbGluZV9vZl90b2tlbnMtPntfbGluZV90eXBlfSA9ICdGT1JNQVQnOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJGxpbmVfb2ZfdG9rZW5zOwogICAgfQoKICAgICMgbXVzdCBwcmludCBsaW5lIHVuY2hhbmdlZCBpZiB3ZSBhcmUgaW4gcG9kIGRvY3VtZW50YXRpb24KICAgIGVsc2lmICggJHRva2VuaXplcl9zZWxmLT57X2luX3BvZH0gKSB7CgogICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3R5cGV9ID0gJ1BPRCc7CiAgICAgICAgaWYgKCAkaW5wdXRfbGluZSA9fiAvXj1jdXQvICkgewogICAgICAgICAgICAkbGluZV9vZl90b2tlbnMtPntfbGluZV90eXBlfSA9ICdQT0RfRU5EJzsKICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiRXhpdGluZyBQT0Qgc2VjdGlvblxuIik7CiAgICAgICAgICAgICR0b2tlbml6ZXJfc2VsZi0+e19pbl9wb2R9ID0gMDsKICAgICAgICB9CiAgICAgICAgaWYgKCAkaW5wdXRfbGluZSA9fiAvXlwjXCEuKnBlcmxcYi8gKSB7CiAgICAgICAgICAgIHdhcm5pbmcoCiAgICAgICAgICAgICAgICAiSGFzaC1iYW5nIGluIHBvZCBjYW4gY2F1c2Ugb2xkZXIgdmVyc2lvbnMgb2YgcGVybCB0byBmYWlsISBcbiIKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbGluZV9vZl90b2tlbnM7CiAgICB9CgogICAgIyBtdXN0IHByaW50IGxpbmUgdW5jaGFuZ2VkIGlmIHdlIGhhdmUgc2VlbiBhIHNldmVyZSBlcnJvciAoaS5lLiwgd2UKICAgICMgYXJlIHNlZWluZyBpbGxlZ2FsIHRva2VucyBhbmQgY2Fubm90IGNvbnRpbnVlLiAgU3ludGF4IGVycm9ycyBkbwogICAgIyBub3QgcGFzcyB0aGlzIHJvdXRlKS4gIENhbGxpbmcgcm91dGluZSBjYW4gZGVjaWRlIHdoYXQgdG8gZG8sIGJ1dAogICAgIyB0aGUgZGVmYXVsdCBjYW4gYmUgdG8ganVzdCBwYXNzIGFsbCBsaW5lcyBhcyBpZiB0aGV5IHdlcmUgYWZ0ZXIgX19FTkRfXwogICAgZWxzaWYgKCAkdG9rZW5pemVyX3NlbGYtPntfaW5fZXJyb3J9ICkgewogICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3R5cGV9ID0gJ0VSUk9SJzsKICAgICAgICByZXR1cm4gJGxpbmVfb2ZfdG9rZW5zOwogICAgfQoKICAgICMgcHJpbnQgbGluZSB1bmNoYW5nZWQgaWYgd2UgYXJlIF9fREFUQV9fIHNlY3Rpb24KICAgIGVsc2lmICggJHRva2VuaXplcl9zZWxmLT57X2luX2RhdGF9ICkgewoKICAgICAgICAjIC4uLmJ1dCBsb29rIGZvciBQT0QKICAgICAgICAjIE5vdGUgdGhhdCB0aGUgX2luX2RhdGEgYW5kIF9pbl9lbmQgZmxhZ3MgcmVtYWluIHNldAogICAgICAgICMgc28gdGhhdCB3ZSByZXR1cm4gdG8gdGhhdCBzdGF0ZSBhZnRlciBzZWVpbmcgdGhlCiAgICAgICAgIyBlbmQgb2YgYSBwb2Qgc2VjdGlvbgogICAgICAgIGlmICggJGlucHV0X2xpbmUgPX4gL149KD8hY3V0KS8gKSB7CiAgICAgICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3R5cGV9ID0gJ1BPRF9TVEFSVCc7CiAgICAgICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoIkVudGVyaW5nIFBPRCBzZWN0aW9uXG4iKTsKICAgICAgICAgICAgJHRva2VuaXplcl9zZWxmLT57X2luX3BvZH0gPSAxOwogICAgICAgICAgICByZXR1cm4gJGxpbmVfb2ZfdG9rZW5zOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdHlwZX0gPSAnREFUQSc7CiAgICAgICAgICAgIHJldHVybiAkbGluZV9vZl90b2tlbnM7CiAgICAgICAgfQogICAgfQoKICAgICMgcHJpbnQgbGluZSB1bmNoYW5nZWQgaWYgd2UgYXJlIGluIF9fRU5EX18gc2VjdGlvbgogICAgZWxzaWYgKCAkdG9rZW5pemVyX3NlbGYtPntfaW5fZW5kfSApIHsKCiAgICAgICAgIyAuLi5idXQgbG9vayBmb3IgUE9ECiAgICAgICAgIyBOb3RlIHRoYXQgdGhlIF9pbl9kYXRhIGFuZCBfaW5fZW5kIGZsYWdzIHJlbWFpbiBzZXQKICAgICAgICAjIHNvIHRoYXQgd2UgcmV0dXJuIHRvIHRoYXQgc3RhdGUgYWZ0ZXIgc2VlaW5nIHRoZQogICAgICAgICMgZW5kIG9mIGEgcG9kIHNlY3Rpb24KICAgICAgICBpZiAoICRpbnB1dF9saW5lID1+IC9ePSg/IWN1dCkvICkgewogICAgICAgICAgICAkbGluZV9vZl90b2tlbnMtPntfbGluZV90eXBlfSA9ICdQT0RfU1RBUlQnOwogICAgICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCJFbnRlcmluZyBQT0Qgc2VjdGlvblxuIik7CiAgICAgICAgICAgICR0b2tlbml6ZXJfc2VsZi0+e19pbl9wb2R9ID0gMTsKICAgICAgICAgICAgcmV0dXJuICRsaW5lX29mX3Rva2VuczsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3R5cGV9ID0gJ0VORCc7CiAgICAgICAgICAgIHJldHVybiAkbGluZV9vZl90b2tlbnM7CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgZm9yIGEgaGFzaC1iYW5nIGxpbmUgaWYgd2UgaGF2ZW4ndCBzZWVuIG9uZQogICAgaWYgKCAhJHRva2VuaXplcl9zZWxmLT57X3Nhd19oYXNoX2Jhbmd9ICkgewogICAgICAgIGlmICggJGlucHV0X2xpbmUgPX4gL15cI1whLipwZXJsXGIvICkgewogICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPntfc2F3X2hhc2hfYmFuZ30gPSAkaW5wdXRfbGluZV9udW1iZXI7CgogICAgICAgICAgICAjIGNoZWNrIGZvciAtdyBhbmQgLVAgZmxhZ3MKICAgICAgICAgICAgaWYgKCAkaW5wdXRfbGluZSA9fiAvXlwjXCEuKnBlcmxccy4qLS4qUC8gKSB7CiAgICAgICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPntfc2F3X3BlcmxfZGFzaF9QfSA9IDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJGlucHV0X2xpbmUgPX4gL15cI1whLipwZXJsXHMuKi0uKncvICkgewogICAgICAgICAgICAgICAgJHRva2VuaXplcl9zZWxmLT57X3Nhd19wZXJsX2Rhc2hfd30gPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoICRpbnB1dF9saW5lX251bWJlciA+IDEgKQoKICAgICAgICAgICAgICAgICMgbGVhdmUgYW55IGhhc2ggYmFuZyBpbiBhIEJFR0lOIGJsb2NrIGFsb25lCiAgICAgICAgICAgICAgICAjIGkuZS4gc2VlICdkZWJ1Z2dlci1kdWNrX3R5cGUudCcKICAgICAgICAgICAgICAgICYmICEoCiAgICAgICAgICAgICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfYmxvY2tfdHlwZQogICAgICAgICAgICAgICAgICAgICYmICRsYXN0X25vbmJsYW5rX2Jsb2NrX3R5cGUgZXEgJ0JFR0lOJwogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgJiYgKCAhJHRva2VuaXplcl9zZWxmLT57X2xvb2tfZm9yX2hhc2hfYmFuZ30gKQogICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICMgdGhpcyBpcyBoZWxwZnVsIGZvciBWTVMgc3lzdGVtczsgd2UgbWF5IGhhdmUgYWNjaWRlbnRhbGx5CiAgICAgICAgICAgICAgICAjIHRva2VuaXplZCBzb21lIERDTCBjb21tYW5kcwogICAgICAgICAgICAgICAgaWYgKCAkdG9rZW5pemVyX3NlbGYtPntfc3RhcnRlZF90b2tlbml6aW5nfSApIHsKICAgICAgICAgICAgICAgICAgICB3YXJuaW5nKAoiVGhlcmUgc2VlbXMgdG8gYmUgYSBoYXNoLWJhbmcgYWZ0ZXIgbGluZSAxOyBkbyB5b3UgbmVlZCB0byBydW4gd2l0aCAteCA/XG4iCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGNvbXBsYWluKCJVc2VsZXNzIGhhc2gtYmFuZyBhZnRlciBsaW5lIDFcbiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFJlcG9ydCB0aGUgbGVhZGluZyBoYXNoLWJhbmcgYXMgYSBzeXN0ZW0gbGluZQogICAgICAgICAgICAjIFRoaXMgd2lsbCBwcmV2ZW50IC1kYWMgZnJvbSBkZWxldGluZyBpdAogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3R5cGV9ID0gJ1NZU1RFTSc7CiAgICAgICAgICAgICAgICByZXR1cm4gJGxpbmVfb2ZfdG9rZW5zOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgd2FpdCBmb3IgYSBoYXNoLWJhbmcgYmVmb3JlIHBhcnNpbmcgaWYgdGhlIHVzZXIgaW52b2tlZCB1cyB3aXRoIC14CiAgICBpZiAoICR0b2tlbml6ZXJfc2VsZi0+e19sb29rX2Zvcl9oYXNoX2Jhbmd9CiAgICAgICAgJiYgISR0b2tlbml6ZXJfc2VsZi0+e19zYXdfaGFzaF9iYW5nfSApCiAgICB7CiAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdHlwZX0gPSAnU1lTVEVNJzsKICAgICAgICByZXR1cm4gJGxpbmVfb2ZfdG9rZW5zOwogICAgfQoKICAgICMgYSBmaXJzdCBsaW5lIG9mIHRoZSBmb3JtICc6ICMnIHdpbGwgYmUgbWFya2VkIGFzIFNZU1RFTQogICAgIyBzaW5jZSBsaW5lcyBvZiB0aGlzIGZvcm0gbWF5IGJlIHVzZWQgYnkgdGNzaAogICAgaWYgKCAkaW5wdXRfbGluZV9udW1iZXIgPT0gMSAmJiAkaW5wdXRfbGluZSA9fiAvXlxzKlw6XHMqXCMvICkgewogICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3R5cGV9ID0gJ1NZU1RFTSc7CiAgICAgICAgcmV0dXJuICRsaW5lX29mX3Rva2VuczsKICAgIH0KCiAgICAjIG5vdyB3ZSBrbm93IHRoYXQgaXQgaXMgb2sgdG8gdG9rZW5pemUgdGhlIGxpbmUuLi4KICAgICMgdGhlIGxpbmUgdG9rZW5pemVyIHdpbGwgbW9kaWZ5IGFueSBvZiB0aGVzZSBwcml2YXRlIHZhcmlhYmxlczoKICAgICMgICAgICAgIF9yaGVyZV90YXJnZXRfbGlzdAogICAgIyAgICAgICAgX2luX2RhdGEKICAgICMgICAgICAgIF9pbl9lbmQKICAgICMgICAgICAgIF9pbl9mb3JtYXQKICAgICMgICAgICAgIF9pbl9lcnJvcgogICAgIyAgICAgICAgX2luX3BvZAogICAgIyAgICAgICAgX2luX3F1b3RlCiAgICBteSAkZW5kaW5nX2luX3F1b3RlX2xhc3QgPSAkdG9rZW5pemVyX3NlbGYtPntfaW5fcXVvdGV9OwogICAgdG9rZW5pemVfdGhpc19saW5lKCRsaW5lX29mX3Rva2Vucyk7CgogICAgIyBOb3cgZmluaXNoIGRlZmluaW5nIHRoZSByZXR1cm4gc3RydWN0dXJlIGFuZCByZXR1cm4gaXQKICAgICRsaW5lX29mX3Rva2Vucy0+e19lbmRpbmdfaW5fcXVvdGV9ID0gJHRva2VuaXplcl9zZWxmLT57X2luX3F1b3RlfTsKCiAgICAjIGhhbmRsZSBzZXZlcmUgZXJyb3IgKGJpbmFyeSBkYXRhIGluIHNjcmlwdCkKICAgIGlmICggJHRva2VuaXplcl9zZWxmLT57X2luX2Vycm9yfSApIHsKICAgICAgICAkdG9rZW5pemVyX3NlbGYtPntfaW5fcXVvdGV9ID0gMDsgICAgIyB0byBhdm9pZCBhbnkgbW9yZSBtZXNzYWdlcwogICAgICAgIHdhcm5pbmcoIkdpdmluZyB1cCBhZnRlciBlcnJvclxuIik7CiAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdHlwZX0gPSAnRVJST1InOwogICAgICAgIHJlc2V0X2luZGVudGF0aW9uX2xldmVsKDApOyAgICAgICAgICAjIGF2b2lkIGVycm9yIG1lc3NhZ2VzCiAgICAgICAgcmV0dXJuICRsaW5lX29mX3Rva2VuczsKICAgIH0KCiAgICAjIGhhbmRsZSBzdGFydCBvZiBwb2QgZG9jdW1lbnRhdGlvbgogICAgaWYgKCAkdG9rZW5pemVyX3NlbGYtPntfaW5fcG9kfSApIHsKCiAgICAgICAgIyBUaGlzIGdldHMgdHJpY2t5Li5hYm92ZSBhIF9fREFUQV9fIG9yIF9fRU5EX18gc2VjdGlvbiwgcGVybAogICAgICAgICMgYWNjZXB0cyAnPWN1dCcgYXMgdGhlIHN0YXJ0IG9mIHBvZCBzZWN0aW9uLiBCdXQgYWZ0ZXJ3YXJkcywKICAgICAgICAjIG9ubHkgcG9kIHV0aWxpdGllcyBzZWUgaXQgYW5kIHRoZXkgbWF5IGlnbm9yZSBhbiA9Y3V0IHdpdGhvdXQKICAgICAgICAjIGxlYWRpbmcgPWhlYWQuICBJbiBhbnkgY2FzZSwgdGhpcyBpc24ndCBnb29kLgogICAgICAgIGlmICggJGlucHV0X2xpbmUgPX4gL149Y3V0XGIvICkgewogICAgICAgICAgICBpZiAoICR0b2tlbml6ZXJfc2VsZi0+e19zYXdfZGF0YX0gfHwgJHRva2VuaXplcl9zZWxmLT57X3Nhd19lbmR9ICkgewogICAgICAgICAgICAgICAgY29tcGxhaW4oIj1jdXQgd2hpbGUgbm90IGluIHBvZCBpZ25vcmVkXG4iKTsKICAgICAgICAgICAgICAgICR0b2tlbml6ZXJfc2VsZi0+e19pbl9wb2R9ICAgID0gMDsKICAgICAgICAgICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3R5cGV9ID0gJ1BPRF9FTkQnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdHlwZX0gPSAnUE9EX1NUQVJUJzsKICAgICAgICAgICAgICAgIGNvbXBsYWluKAoiPWN1dCBzdGFydHMgYSBwb2Qgc2VjdGlvbiAuLiB0aGlzIGNhbiBmb29sIHBvZCB1dGlsaXRpZXMuXG4iCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiRW50ZXJpbmcgUE9EIHNlY3Rpb25cbiIpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdHlwZX0gPSAnUE9EX1NUQVJUJzsKICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiRW50ZXJpbmcgUE9EIHNlY3Rpb25cbiIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRsaW5lX29mX3Rva2VuczsKICAgIH0KCiAgICAjIHVwZGF0ZSBpbmRlbnRhdGlvbiBsZXZlbHMgZm9yIGxvZyBtZXNzYWdlcwogICAgaWYgKCAkaW5wdXRfbGluZSAhfiAvXlxzKiQvICkgewogICAgICAgIG15ICRybGV2ZWxzID0gJGxpbmVfb2ZfdG9rZW5zLT57X3JsZXZlbHN9OwogICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19ndWVzc2VkX2luZGVudGF0aW9uX2xldmVsfSA9CiAgICAgICAgICBndWVzc19vbGRfaW5kZW50YXRpb25fbGV2ZWwoJGlucHV0X2xpbmUpOwogICAgfQoKICAgICMgc2VlIGlmIHRoaXMgbGluZSBjb250YWlucyBoZXJlIGRvYyB0YXJnZXRzCiAgICBteSAkcmhlcmVfdGFyZ2V0X2xpc3QgPSAkdG9rZW5pemVyX3NlbGYtPntfcmhlcmVfdGFyZ2V0X2xpc3R9OwogICAgaWYgKCBAeyRyaGVyZV90YXJnZXRfbGlzdH0gKSB7CgogICAgICAgIG15ICggJGhlcmVfZG9jX3RhcmdldCwgJGhlcmVfcXVvdGVfY2hhcmFjdGVyICkgPQogICAgICAgICAgQHsgc2hpZnQgQHskcmhlcmVfdGFyZ2V0X2xpc3R9IH07CiAgICAgICAgJHRva2VuaXplcl9zZWxmLT57X2luX2hlcmVfZG9jfSAgICAgICAgICA9IDE7CiAgICAgICAgJHRva2VuaXplcl9zZWxmLT57X2hlcmVfZG9jX3RhcmdldH0gICAgICA9ICRoZXJlX2RvY190YXJnZXQ7CiAgICAgICAgJHRva2VuaXplcl9zZWxmLT57X2hlcmVfcXVvdGVfY2hhcmFjdGVyfSA9ICRoZXJlX3F1b3RlX2NoYXJhY3RlcjsKICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCJFbnRlcmluZyBIRVJFIGRvY3VtZW50ICRoZXJlX2RvY190YXJnZXRcbiIpOwogICAgICAgICR0b2tlbml6ZXJfc2VsZi0+e19zdGFydGVkX2xvb2tpbmdfZm9yX2hlcmVfdGFyZ2V0X2F0fSA9CiAgICAgICAgICAkaW5wdXRfbGluZV9udW1iZXI7CiAgICB9CgogICAgIyBOT1RFOiBfX0VORF9fIGFuZCBfX0RBVEFfXyBzdGF0ZW1lbnRzIGFyZSB3cml0dGVuIHVuZm9ybWF0dGVkCiAgICAjIGJlY2F1c2UgdGhleSBjYW4gdGhlb3JldGljYWxseSBjb250YWluIGFkZGl0aW9uYWwgY2hhcmFjdGVycwogICAgIyB3aGljaCBhcmUgbm90IHRva2VuaXplZCAoYW5kIGNhbm5vdCBiZSByZWFkIHdpdGggPERBVEE+IGVpdGhlciEpLgogICAgaWYgKCAkdG9rZW5pemVyX3NlbGYtPntfaW5fZGF0YX0gKSB7CiAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdHlwZX0gPSAnREFUQV9TVEFSVCc7CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiU3RhcnRpbmcgX19EQVRBX18gc2VjdGlvblxuIik7CiAgICAgICAgJHRva2VuaXplcl9zZWxmLT57X3Nhd19kYXRhfSA9IDE7CgogICAgICAgICMga2VlcCBwYXJzaW5nIGFmdGVyIF9fREFUQV9fIGlmIHVzZSBTZWxmTG9hZGVyIHdhcyBzZWVuCiAgICAgICAgaWYgKCAkdG9rZW5pemVyX3NlbGYtPntfc2F3X3NlbGZsb2FkZXJ9ICkgewogICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPntfaW5fZGF0YX0gPSAwOwogICAgICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KAogICAgICAgICAgICAgICAgIlNlbGZMb2FkZXIgc2VlbiwgY29udGludWluZzsgLW5sc2wgZGVhY3RpdmF0ZXNcbiIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRsaW5lX29mX3Rva2VuczsKICAgIH0KCiAgICBlbHNpZiAoICR0b2tlbml6ZXJfc2VsZi0+e19pbl9lbmR9ICkgewogICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3R5cGV9ID0gJ0VORF9TVEFSVCc7CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiU3RhcnRpbmcgX19FTkRfXyBzZWN0aW9uXG4iKTsKICAgICAgICAkdG9rZW5pemVyX3NlbGYtPntfc2F3X2VuZH0gPSAxOwoKICAgICAgICAjIGtlZXAgcGFyc2luZyBhZnRlciBfX0VORF9fIGlmIHVzZSBBdXRvTG9hZGVyIHdhcyBzZWVuCiAgICAgICAgaWYgKCAkdG9rZW5pemVyX3NlbGYtPntfc2F3X2F1dG9sb2FkZXJ9ICkgewogICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPntfaW5fZW5kfSA9IDA7CiAgICAgICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoCiAgICAgICAgICAgICAgICAiQXV0b0xvYWRlciBzZWVuLCBjb250aW51aW5nOyAtbmxhbCBkZWFjdGl2YXRlc1xuIik7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkbGluZV9vZl90b2tlbnM7CiAgICB9CgogICAgIyBub3csIGZpbmFsbHksIHdlIGtub3cgdGhhdCB0aGlzIGxpbmUgaXMgdHlwZSAnQ09ERScKICAgICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3R5cGV9ID0gJ0NPREUnOwoKICAgICMgcmVtZW1iZXIgaWYgd2UgaGF2ZSBzZWVuIGFueSByZWFsIGNvZGUKICAgIGlmICggICEkdG9rZW5pemVyX3NlbGYtPntfc3RhcnRlZF90b2tlbml6aW5nfQogICAgICAgICYmICRpbnB1dF9saW5lICF+IC9eXHMqJC8KICAgICAgICAmJiAkaW5wdXRfbGluZSAhfiAvXlxzKiMvICkKICAgIHsKICAgICAgICAkdG9rZW5pemVyX3NlbGYtPntfc3RhcnRlZF90b2tlbml6aW5nfSA9IDE7CiAgICB9CgogICAgaWYgKCAkdG9rZW5pemVyX3NlbGYtPntfZGVidWdnZXJfb2JqZWN0fSApIHsKICAgICAgICAkdG9rZW5pemVyX3NlbGYtPntfZGVidWdnZXJfb2JqZWN0fS0+d3JpdGVfZGVidWdfZW50cnkoJGxpbmVfb2ZfdG9rZW5zKTsKICAgIH0KCiAgICAjIE5vdGU6IGlmIGtleXdvcmQgJ2Zvcm1hdCcgb2NjdXJzIGluIHRoaXMgbGluZSBjb2RlLCBpdCBpcyBzdGlsbCBDT0RFCiAgICAjIChrZXl3b3JkICdmb3JtYXQnIG5lZWQgbm90IHN0YXJ0IGEgbGluZSkKICAgIGlmICggJHRva2VuaXplcl9zZWxmLT57X2luX2Zvcm1hdH0gKSB7CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiRW50ZXJpbmcgZm9ybWF0IHNlY3Rpb25cbiIpOwogICAgfQoKICAgIGlmICggJHRva2VuaXplcl9zZWxmLT57X2luX3F1b3RlfQogICAgICAgIGFuZCAoICR0b2tlbml6ZXJfc2VsZi0+e19saW5lX3N0YXJ0X3F1b3RlfSA8IDAgKSApCiAgICB7CgogICAgICAgICNpZiAoICggbXkgJHF1b3RlX3RhcmdldCA9IGdldF9xdW90ZV90YXJnZXQoKSApICF+IC9eXHMqJC8gKSB7CiAgICAgICAgaWYgKAogICAgICAgICAgICAoIG15ICRxdW90ZV90YXJnZXQgPSAkdG9rZW5pemVyX3NlbGYtPntfcXVvdGVfdGFyZ2V0fSApICF+IC9eXHMqJC8gKQogICAgICAgIHsKICAgICAgICAgICAgJHRva2VuaXplcl9zZWxmLT57X2xpbmVfc3RhcnRfcXVvdGV9ID0gJGlucHV0X2xpbmVfbnVtYmVyOwogICAgICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KAogICAgICAgICAgICAgICAgIlN0YXJ0IG11bHRpLWxpbmUgcXVvdGUgb3IgcGF0dGVybiBlbmRpbmcgaW4gJHF1b3RlX3RhcmdldFxuIik7CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAoICR0b2tlbml6ZXJfc2VsZi0+e19saW5lX3N0YXJ0X3F1b3RlfSA+PSAwICkKICAgICAgICAmJiAhJHRva2VuaXplcl9zZWxmLT57X2luX3F1b3RlfSApCiAgICB7CiAgICAgICAgJHRva2VuaXplcl9zZWxmLT57X2xpbmVfc3RhcnRfcXVvdGV9ID0gLTE7CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiRW5kIG9mIG11bHRpLWxpbmUgcXVvdGUgb3IgcGF0dGVyblxuIik7CiAgICB9CgogICAgIyB3ZSBhcmUgcmV0dXJuaW5nIGEgbGluZSBvZiBDT0RFCiAgICByZXR1cm4gJGxpbmVfb2ZfdG9rZW5zOwp9CgpzdWIgZmluZF9zdGFydGluZ19pbmRlbnRhdGlvbl9sZXZlbCB7CgogICAgIyBXZSBuZWVkIHRvIGZpbmQgdGhlIGluZGVudGF0aW9uIGxldmVsIG9mIHRoZSBmaXJzdCBsaW5lIG9mIHRoZQogICAgIyBzY3JpcHQgYmVpbmcgZm9ybWF0dGVkLiAgT2Z0ZW4gaXQgd2lsbCBiZSB6ZXJvIGZvciBhbiBlbnRpcmUgZmlsZSwKICAgICMgYnV0IGlmIHdlIGFyZSBmb3JtYXR0aW5nIGEgbG9jYWwgYmxvY2sgb2YgY29kZSAod2l0aGluIGFuIGVkaXRvciBmb3IKICAgICMgZXhhbXBsZSkgaXQgbWF5IG5vdCBiZSB6ZXJvLiAgVGhlIHVzZXIgbWF5IHNwZWNpZnkgdGhpcyB3aXRoIHRoZQogICAgIyAtc2lsPW4gcGFyYW1ldGVyIGJ1dCBub3JtYWxseSBkb2Vzbid0IHNvIHdlIGhhdmUgdG8gZ3Vlc3MuCiAgICAjCiAgICAjIFVTRVMgR0xPQkFMIFZBUklBQkxFUzogJHRva2VuaXplcl9zZWxmCiAgICBteSAkc3RhcnRpbmdfbGV2ZWwgPSAwOwoKICAgICMgdXNlIHZhbHVlIGlmIGdpdmVuIGFzIHBhcmFtZXRlcgogICAgaWYgKCAkdG9rZW5pemVyX3NlbGYtPntfa25vd19zdGFydGluZ19sZXZlbH0gKSB7CiAgICAgICAgJHN0YXJ0aW5nX2xldmVsID0gJHRva2VuaXplcl9zZWxmLT57X3N0YXJ0aW5nX2xldmVsfTsKICAgIH0KCiAgICAjIGlmIHdlIGtub3cgdGhlcmUgaXMgYSBoYXNoX2JhbmcgbGluZSwgdGhlIGxldmVsIG11c3QgYmUgemVybwogICAgZWxzaWYgKCAkdG9rZW5pemVyX3NlbGYtPntfbG9va19mb3JfaGFzaF9iYW5nfSApIHsKICAgICAgICAkdG9rZW5pemVyX3NlbGYtPntfa25vd19zdGFydGluZ19sZXZlbH0gPSAxOwogICAgfQoKICAgICMgb3RoZXJ3aXNlIGZpZ3VyZSBpdCBvdXQgZnJvbSB0aGUgaW5wdXQgZmlsZQogICAgZWxzZSB7CiAgICAgICAgbXkgJGxpbmU7CiAgICAgICAgbXkgJGkgPSAwOwoKICAgICAgICAjIGtlZXAgbG9va2luZyBhdCBsaW5lcyB1bnRpbCB3ZSBmaW5kIGEgaGFzaCBiYW5nIG9yIHBpZWNlIG9mIGNvZGUKICAgICAgICBteSAkbXNnID0gIiI7CiAgICAgICAgd2hpbGUgKCAkbGluZSA9CiAgICAgICAgICAgICR0b2tlbml6ZXJfc2VsZi0+e19saW5lX2J1ZmZlcl9vYmplY3R9LT5wZWVrX2FoZWFkKCAkaSsrICkgKQogICAgICAgIHsKCiAgICAgICAgICAgICMgaWYgZmlyc3QgbGluZSBpcyAjISB0aGVuIGFzc3VtZSBzdGFydGluZyBsZXZlbCBpcyB6ZXJvCiAgICAgICAgICAgIGlmICggJGkgPT0gMSAmJiAkbGluZSA9fiAvXlwjXCEvICkgewogICAgICAgICAgICAgICAgJHN0YXJ0aW5nX2xldmVsID0gMDsKICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbmV4dCBpZiAoICRsaW5lID1+IC9eXHMqIy8gKTsgICAgIyBza2lwIHBhc3QgY29tbWVudHMKICAgICAgICAgICAgbmV4dCBpZiAoICRsaW5lID1+IC9eXHMqJC8gKTsgICAgIyBza2lwIHBhc3QgYmxhbmsgbGluZXMKICAgICAgICAgICAgJHN0YXJ0aW5nX2xldmVsID0gZ3Vlc3Nfb2xkX2luZGVudGF0aW9uX2xldmVsKCRsaW5lKTsKICAgICAgICAgICAgbGFzdDsKICAgICAgICB9CiAgICAgICAgJG1zZyA9ICJMaW5lICRpIGltcGxpZXMgc3RhcnRpbmctaW5kZW50YXRpb24tbGV2ZWwgPSAkc3RhcnRpbmdfbGV2ZWxcbiI7CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiJG1zZyIpOwogICAgfQogICAgJHRva2VuaXplcl9zZWxmLT57X3N0YXJ0aW5nX2xldmVsfSA9ICRzdGFydGluZ19sZXZlbDsKICAgIHJlc2V0X2luZGVudGF0aW9uX2xldmVsKCRzdGFydGluZ19sZXZlbCk7CiAgICByZXR1cm47Cn0KCnN1YiBndWVzc19vbGRfaW5kZW50YXRpb25fbGV2ZWwgewogICAgbXkgKCRsaW5lKSA9IEBfOwoKICAgICMgR3Vlc3MgdGhlIGluZGVudGF0aW9uIGxldmVsIG9mIGFuIGlucHV0IGxpbmUuCiAgICAjCiAgICAjIEZvciB0aGUgZmlyc3QgbGluZSBvZiBjb2RlIHRoaXMgcmVzdWx0IHdpbGwgZGVmaW5lIHRoZSBzdGFydGluZwogICAgIyBpbmRlbnRhdGlvbiBsZXZlbC4gIEl0IHdpbGwgbWFpbmx5IGJlIG5vbi16ZXJvIHdoZW4gcGVybHRpZHkgaXMgYXBwbGllZAogICAgIyB3aXRoaW4gYW4gZWRpdG9yIHRvIGEgbG9jYWwgYmxvY2sgb2YgY29kZS4KICAgICMKICAgICMgVGhpcyBpcyBhbiBpbXBvc3NpYmxlIHRhc2sgaW4gZ2VuZXJhbCBiZWNhdXNlIHdlIGNhbid0IGtub3cgd2hhdCB0YWJzCiAgICAjIG1lYW50IGZvciB0aGUgb2xkIHNjcmlwdCBhbmQgaG93IG1hbnkgc3BhY2VzIHdlcmUgdXNlZCBmb3Igb25lCiAgICAjIGluZGVudGF0aW9uIGxldmVsIGluIHRoZSBnaXZlbiBpbnB1dCBzY3JpcHQuICBGb3IgZXhhbXBsZSBpdCBtYXkgaGF2ZQogICAgIyBiZWVuIHByZXZpb3VzbHkgZm9ybWF0dGVkIHdpdGggLWk9NyAtZXQ9My4gIEJ1dCB3ZSBjYW4gYXQgbGVhc3QgdHJ5IHRvCiAgICAjIG1ha2Ugc3VyZSB0aGF0IHBlcmx0aWR5IGd1ZXNzZXMgY29ycmVjdGx5IGlmIGl0IGlzIGFwcGxpZWQgcmVwZWF0ZWRseSB0bwogICAgIyBhIGJsb2NrIG9mIGNvZGUgd2l0aGluIGFuIGVkaXRvciwgc28gdGhhdCB0aGUgYmxvY2sgc3RheXMgYXQgdGhlIHNhbWUKICAgICMgbGV2ZWwgd2hlbiBwZXJsdGlkeSBpcyBhcHBsaWVkIHJlcGVhdGVkbHkuCiAgICAjCiAgICAjIFVTRVMgR0xPQkFMIFZBUklBQkxFUzogJHRva2VuaXplcl9zZWxmCiAgICBteSAkbGV2ZWwgPSAwOwoKICAgICMgZmluZCBsZWFkaW5nIHRhYnMsIHNwYWNlcywgYW5kIGFueSBzdGF0ZW1lbnQgbGFiZWwKICAgIG15ICRzcGFjZXMgPSAwOwogICAgaWYgKCAkbGluZSA9fiAvXihcdCspPyhccyspPyhcdys6W146XSk/LyApIHsKCiAgICAgICAgIyBJZiB0aGVyZSBhcmUgbGVhZGluZyB0YWJzLCB3ZSB1c2UgdGhlIHRhYiBzY2hlbWUgZm9yIHRoaXMgcnVuLCBpZgogICAgICAgICMgYW55LCBzbyB0aGF0IHRoZSBjb2RlIHdpbGwgcmVtYWluIHN0YWJsZSB3aGVuIGVkaXRpbmcuCiAgICAgICAgaWYgKCQxKSB7ICRzcGFjZXMgKz0gbGVuZ3RoKCQxKSAqICR0b2tlbml6ZXJfc2VsZi0+e190YWJzaXplfSB9CgogICAgICAgIGlmICgkMikgeyAkc3BhY2VzICs9IGxlbmd0aCgkMikgfQoKICAgICAgICAjIGNvcnJlY3QgZm9yIG91dGRlbnRlZCBsYWJlbHMKICAgICAgICBpZiAoICQzICYmICR0b2tlbml6ZXJfc2VsZi0+eydfb3V0ZGVudF9sYWJlbHMnfSApIHsKICAgICAgICAgICAgJHNwYWNlcyArPSAkdG9rZW5pemVyX3NlbGYtPntfY29udGludWF0aW9uX2luZGVudGF0aW9ufTsKICAgICAgICB9CiAgICB9CgogICAgIyBjb21wdXRlIGluZGVudGF0aW9uIHVzaW5nIHRoZSB2YWx1ZSBvZiAtaSBmb3IgdGhpcyBydW4uCiAgICAjIElmIC1pPTAgaXMgdXNlZCBmb3IgdGhpcyBydW4gKHdoaWNoIGlzIHBvc3NpYmxlKSBpdCBkb2Vzbid0IG1hdHRlcgogICAgIyB3aGF0IHdlIGRvIGhlcmUgYnV0IHdlJ2xsIGd1ZXNzIHRoYXQgdGhlIG9sZCBydW4gdXNlZCA0IHNwYWNlcyBwZXIgbGV2ZWwuCiAgICBteSAkaW5kZW50X2NvbHVtbnMgPSAkdG9rZW5pemVyX3NlbGYtPntfaW5kZW50X2NvbHVtbnN9OwogICAgJGluZGVudF9jb2x1bW5zID0gNCBpZiAoICEkaW5kZW50X2NvbHVtbnMgKTsKICAgICRsZXZlbCAgICAgICAgICA9IGludCggJHNwYWNlcyAvICRpbmRlbnRfY29sdW1ucyApOwogICAgcmV0dXJuICgkbGV2ZWwpOwp9CgojIFRoaXMgaXMgYSBjdXJyZW50bHkgdW51c2VkIGRlYnVnIHJvdXRpbmUKc3ViIGR1bXBfZnVuY3Rpb25zIHsKCiAgICBteSAkZmggPSAqU1RET1VUOwogICAgZm9yZWFjaCBteSAkcGtnICgga2V5cyAlaXNfdXNlcl9mdW5jdGlvbiApIHsKICAgICAgICBwcmludCAkZmggIlxubm9uLWNvbnN0YW50IHN1YnMgaW4gcGFja2FnZSAkcGtnXG4iOwoKICAgICAgICBmb3JlYWNoIG15ICRzdWIgKCBrZXlzICV7ICRpc191c2VyX2Z1bmN0aW9ueyRwa2d9IH0gKSB7CiAgICAgICAgICAgIG15ICRtc2cgPSAiIjsKICAgICAgICAgICAgaWYgKCAkaXNfYmxvY2tfbGlzdF9mdW5jdGlvbnskcGtnfXskc3VifSApIHsKICAgICAgICAgICAgICAgICRtc2cgPSAnYmxvY2tfbGlzdCc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJGlzX2Jsb2NrX2Z1bmN0aW9ueyRwa2d9eyRzdWJ9ICkgewogICAgICAgICAgICAgICAgJG1zZyA9ICdibG9jayc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHJpbnQgJGZoICIkc3ViICRtc2dcbiI7CiAgICAgICAgfQogICAgfQoKICAgIGZvcmVhY2ggbXkgJHBrZyAoIGtleXMgJWlzX2NvbnN0YW50ICkgewogICAgICAgIHByaW50ICRmaCAiXG5jb25zdGFudHMgYW5kIGNvbnN0YW50IHN1YnMgaW4gcGFja2FnZSAkcGtnXG4iOwoKICAgICAgICBmb3JlYWNoIG15ICRzdWIgKCBrZXlzICV7ICRpc19jb25zdGFudHskcGtnfSB9ICkgewogICAgICAgICAgICBwcmludCAkZmggIiRzdWJcbiI7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgb25lc19jb3VudCB7CgogICAgIyBjb3VudCBudW1iZXIgb2YgMSdzIGluIGEgc3RyaW5nIG9mIDEncyBhbmQgMCdzCiAgICAjIGV4YW1wbGU6IG9uZXNfY291bnQoIjAxMDEwMTAxMDEwMSIpIGdpdmVzIDYKICAgIG15ICRzdHIgPSBzaGlmdDsKICAgIHJldHVybiAkc3RyID1+IHRyLzEvMC87Cn0KCnN1YiBwcmVwYXJlX2Zvcl9hX25ld19maWxlIHsKCiAgICAjIHByZXZpb3VzIHRva2VucyBuZWVkZWQgdG8gZGV0ZXJtaW5lIHdoYXQgdG8gZXhwZWN0IG5leHQKICAgICRsYXN0X25vbmJsYW5rX3Rva2VuICAgICAgPSAnOyc7ICAgICMgdGhlIG9ubHkgcG9zc2libGUgc3RhcnRpbmcgc3RhdGUgd2hpY2gKICAgICRsYXN0X25vbmJsYW5rX3R5cGUgICAgICAgPSAnOyc7ICAgICMgd2lsbCBtYWtlIGEgbGVhZGluZyBicmFjZSBhIGNvZGUgYmxvY2sKICAgICRsYXN0X25vbmJsYW5rX2Jsb2NrX3R5cGUgPSAnJzsKCiAgICAjIHNjYWxhcnMgZm9yIHJlbWVtYmVyaW5nIHN0YXRlbWVudCB0eXBlcyBhY3Jvc3MgbXVsdGlwbGUgbGluZXMKICAgICRzdGF0ZW1lbnRfdHlwZSAgICA9ICcnOyAgICAgICAgICAgICMgJycgb3IgJ3VzZScgb3IgJ3N1Yi4uJyBvciAnY2FzZS4uJwogICAgJGluX2F0dHJpYnV0ZV9saXN0ID0gMDsKCiAgICAjIHNjYWxhcnMgZm9yIHJlbWVtYmVyaW5nIHdoZXJlIHdlIGFyZSBpbiB0aGUgZmlsZQogICAgJGN1cnJlbnRfcGFja2FnZSA9ICJtYWluIjsKICAgICRjb250ZXh0ICAgICAgICAgPSBVTktOT1dOX0NPTlRFWFQ7CgogICAgIyBoYXNoZXMgdXNlZCB0byByZW1lbWJlciBmdW5jdGlvbiBpbmZvcm1hdGlvbgogICAgJWlzX2NvbnN0YW50ICAgICAgICAgICAgID0gKCk7ICAgICAgIyB1c2VyLWRlZmluZWQgY29uc3RhbnRzCiAgICAlaXNfdXNlcl9mdW5jdGlvbiAgICAgICAgPSAoKTsgICAgICAjIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMKICAgICV1c2VyX2Z1bmN0aW9uX3Byb3RvdHlwZSA9ICgpOyAgICAgICMgdGhlaXIgcHJvdG90eXBlcwogICAgJWlzX2Jsb2NrX2Z1bmN0aW9uICAgICAgID0gKCk7CiAgICAlaXNfYmxvY2tfbGlzdF9mdW5jdGlvbiAgPSAoKTsKICAgICVzYXdfZnVuY3Rpb25fZGVmaW5pdGlvbiA9ICgpOwoKICAgICMgdmFyaWFibGVzIHVzZWQgdG8gdHJhY2sgZGVwdGhzIG9mIHZhcmlvdXMgY29udGFpbmVycwogICAgIyBhbmQgcmVwb3J0IG5lc3RpbmcgZXJyb3JzCiAgICAkcGFyZW5fZGVwdGggICAgICAgICAgICAgICAgICAgICAgICAgPSAwOwogICAgJGJyYWNlX2RlcHRoICAgICAgICAgICAgICAgICAgICAgICAgID0gMDsKICAgICRzcXVhcmVfYnJhY2tldF9kZXB0aCAgICAgICAgICAgICAgICA9IDA7CiAgICBAY3VycmVudF9kZXB0aCAgICAgICAgICAgICAgICAgICAgICAgPSAoMCkgeCBzY2FsYXIgQGNsb3NpbmdfYnJhY2VfbmFtZXM7CiAgICAkdG90YWxfZGVwdGggICAgICAgICAgICAgICAgICAgICAgICAgPSAwOwogICAgQHRvdGFsX2RlcHRoICAgICAgICAgICAgICAgICAgICAgICAgID0gKCk7CiAgICBAbmVzdGluZ19zZXF1ZW5jZV9udW1iZXIgICAgICAgICAgICAgPSAoIDAgLi4gQGNsb3NpbmdfYnJhY2VfbmFtZXMgLSAxICk7CiAgICBAY3VycmVudF9zZXF1ZW5jZV9udW1iZXIgICAgICAgICAgICAgPSAoKTsKICAgICRwYXJlbl90eXBlWyRwYXJlbl9kZXB0aF0gICAgICAgICAgICA9ICcnOwogICAgJHBhcmVuX3NlbWljb2xvbl9jb3VudFskcGFyZW5fZGVwdGhdID0gMDsKICAgICRwYXJlbl9zdHJ1Y3R1cmFsX3R5cGVbJGJyYWNlX2RlcHRoXSA9ICcnOwogICAgJGJyYWNlX3R5cGVbJGJyYWNlX2RlcHRoXSA9ICc7JzsgICAgIyBpZGVudGlmeSBvcGVuaW5nIGJyYWNlIGFzIGNvZGUgYmxvY2sKICAgICRicmFjZV9zdHJ1Y3R1cmFsX3R5cGVbJGJyYWNlX2RlcHRoXSAgICAgICAgICAgICAgICAgICA9ICcnOwogICAgJGJyYWNlX2NvbnRleHRbJGJyYWNlX2RlcHRoXSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gVU5LTk9XTl9DT05URVhUOwogICAgJGJyYWNlX3BhY2thZ2VbJHBhcmVuX2RlcHRoXSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJGN1cnJlbnRfcGFja2FnZTsKICAgICRzcXVhcmVfYnJhY2tldF90eXBlWyRzcXVhcmVfYnJhY2tldF9kZXB0aF0gICAgICAgICAgICA9ICcnOwogICAgJHNxdWFyZV9icmFja2V0X3N0cnVjdHVyYWxfdHlwZVskc3F1YXJlX2JyYWNrZXRfZGVwdGhdID0gJyc7CgogICAgaW5pdGlhbGl6ZV90b2tlbml6ZXJfc3RhdGUoKTsKICAgIHJldHVybjsKfQoKeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYmVnaW4gdG9rZW5pemVfdGhpc19saW5lCgogICAgdXNlIGNvbnN0YW50IEJSQUNFICAgICAgICAgID0+IDA7CiAgICB1c2UgY29uc3RhbnQgU1FVQVJFX0JSQUNLRVQgPT4gMTsKICAgIHVzZSBjb25zdGFudCBQQVJFTiAgICAgICAgICA9PiAyOwogICAgdXNlIGNvbnN0YW50IFFVRVNUSU9OX0NPTE9OID0+IDM7CgogICAgIyBUVjE6IHNjYWxhcnMgZm9yIHByb2Nlc3Npbmcgb25lIExJTkUuCiAgICAjIFJlLWluaXRpYWxpemVkIG9uIGVhY2ggZW50cnkgdG8gc3ViIHRva2VuaXplX3RoaXNfbGluZS4KICAgIG15ICgKICAgICAgICAkYmxvY2tfdHlwZSwgICAgICAgICRjb250YWluZXJfdHlwZSwgICAgJGV4cGVjdGluZywKICAgICAgICAkaSwgICAgICAgICAgICAgICAgICRpX3RvaywgICAgICAgICAgICAgJGlucHV0X2xpbmUsCiAgICAgICAgJGlucHV0X2xpbmVfbnVtYmVyLCAkbGFzdF9ub25ibGFua19pLCAgICRtYXhfdG9rZW5faW5kZXgsCiAgICAgICAgJG5leHRfdG9rLCAgICAgICAgICAkbmV4dF90eXBlLCAgICAgICAgICRwZWVrZWRfYWhlYWQsCiAgICAgICAgJHByb3RvdHlwZSwgICAgICAgICAkcmhlcmVfdGFyZ2V0X2xpc3QsICRydG9rZW5fbWFwLAogICAgICAgICRydG9rZW5fdHlwZSwgICAgICAgJHJ0b2tlbnMsICAgICAgICAgICAkdG9rLAogICAgICAgICR0eXBlLCAgICAgICAgICAgICAgJHR5cGVfc2VxdWVuY2UsICAgICAkaW5kZW50X2ZsYWcsCiAgICApOwoKICAgICMgVFYyOiByZWZzIHRvIEFSUkFZUyBmb3IgcHJvY2Vzc2luZyBvbmUgTElORQogICAgIyBSZS1pbml0aWFsaXplZCBvbiBlYWNoIGNhbGwuCiAgICBteSAkcm91dHB1dF90b2tlbl9saXN0ICAgICA9IFtdOyAgICAjIHN0YWNrIG9mIG91dHB1dCB0b2tlbiBpbmRleGVzCiAgICBteSAkcm91dHB1dF90b2tlbl90eXBlICAgICA9IFtdOyAgICAjIHRva2VuIHR5cGVzCiAgICBteSAkcm91dHB1dF9ibG9ja190eXBlICAgICA9IFtdOyAgICAjIHR5cGVzIG9mIGNvZGUgYmxvY2sKICAgIG15ICRyb3V0cHV0X2NvbnRhaW5lcl90eXBlID0gW107ICAgICMgcGFyZW4gdHlwZXMsIHN1Y2ggYXMgaWYsIGVsc2lmLCAuLgogICAgbXkgJHJvdXRwdXRfdHlwZV9zZXF1ZW5jZSAgPSBbXTsgICAgIyBuZXN0aW5nIHNlcXVlbnRpYWwgbnVtYmVyCiAgICBteSAkcm91dHB1dF9pbmRlbnRfZmxhZyAgICA9IFtdOyAgICAjCgogICAgIyBUVjM6IFNDQUxBUlMgZm9yIHF1b3RlIHZhcmlhYmxlcy4gIFRoZXNlIGFyZSBpbml0aWFsaXplZCB3aXRoIGEKICAgICMgc3Vicm91dGluZSBjYWxsIGFuZCBjb250aW51YWxseSB1cGRhdGVkIGFzIGxpbmVzIGFyZSBwcm9jZXNzZWQuCiAgICBteSAoICRpbl9xdW90ZSwgJHF1b3RlX3R5cGUsICRxdW90ZV9jaGFyYWN0ZXIsICRxdW90ZV9wb3MsICRxdW90ZV9kZXB0aCwKICAgICAgICAkcXVvdGVkX3N0cmluZ18xLCAkcXVvdGVkX3N0cmluZ18yLCAkYWxsb3dlZF9xdW90ZV9tb2RpZmllcnMsICk7CgogICAgIyBUVjQ6IFNDQUxBUlMgZm9yIG11bHRpLWxpbmUgaWRlbnRpZmllcnMgYW5kCiAgICAjIHN0YXRlbWVudHMuIFRoZXNlIGFyZSBpbml0aWFsaXplZCB3aXRoIGEgc3Vicm91dGluZSBjYWxsCiAgICAjIGFuZCBjb250aW51YWxseSB1cGRhdGVkIGFzIGxpbmVzIGFyZSBwcm9jZXNzZWQuCiAgICBteSAoICRpZF9zY2FuX3N0YXRlLCAkaWRlbnRpZmllciwgJHdhbnRfcGFyZW4sICRpbmRlbnRlZF9pZl9sZXZlbCApOwoKICAgICMgVFY1OiBTQ0FMQVJTIGZvciB0cmFja2luZyBpbmRlbnRhdGlvbiBsZXZlbC4KICAgICMgSW5pdGlhbGl6ZWQgb25jZSBhbmQgY29udGludWFsbHkgdXBkYXRlZCBhcyBsaW5lcyBhcmUKICAgICMgcHJvY2Vzc2VkLgogICAgbXkgKAogICAgICAgICRuZXN0aW5nX3Rva2VuX3N0cmluZywgICAgICAkbmVzdGluZ190eXBlX3N0cmluZywKICAgICAgICAkbmVzdGluZ19ibG9ja19zdHJpbmcsICAgICAgJG5lc3RpbmdfYmxvY2tfZmxhZywKICAgICAgICAkbmVzdGluZ19saXN0X3N0cmluZywgICAgICAgJG5lc3RpbmdfbGlzdF9mbGFnLAogICAgICAgICRjaV9zdHJpbmdfaW5fdG9rZW5pemVyLCAgICAkY29udGludWF0aW9uX3N0cmluZ19pbl90b2tlbml6ZXIsCiAgICAgICAgJGluX3N0YXRlbWVudF9jb250aW51YXRpb24sICRsZXZlbF9pbl90b2tlbml6ZXIsCiAgICAgICAgJHNsZXZlbF9pbl90b2tlbml6ZXIsICAgICAgICRyc2xldmVsX3N0YWNrLAogICAgKTsKCiAgICAjIFRWNjogU0NBTEFSUyBmb3IgcmVtZW1iZXJpbmcgc2V2ZXJhbCBwcmV2aW91cwogICAgIyB0b2tlbnMuIEluaXRpYWxpemVkIG9uY2UgYW5kIGNvbnRpbnVhbGx5IHVwZGF0ZWQgYXMKICAgICMgbGluZXMgYXJlIHByb2Nlc3NlZC4KICAgIG15ICgKICAgICAgICAkbGFzdF9ub25ibGFua19jb250YWluZXJfdHlwZSwgICAgICRsYXN0X25vbmJsYW5rX3R5cGVfc2VxdWVuY2UsCiAgICAgICAgJGxhc3RfbGFzdF9ub25ibGFua190b2tlbiwgICAgICAgICAkbGFzdF9sYXN0X25vbmJsYW5rX3R5cGUsCiAgICAgICAgJGxhc3RfbGFzdF9ub25ibGFua19ibG9ja190eXBlLCAgICAkbGFzdF9sYXN0X25vbmJsYW5rX2NvbnRhaW5lcl90eXBlLAogICAgICAgICRsYXN0X2xhc3Rfbm9uYmxhbmtfdHlwZV9zZXF1ZW5jZSwgJGxhc3Rfbm9uYmxhbmtfcHJvdG90eXBlLAogICAgKTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgYmVnaW5uaW5nIG9mIHRva2VuaXplciB2YXJpYWJsZSBhY2Nlc3MgYW5kIG1hbmlwdWxhdGlvbiByb3V0aW5lcwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgc3ViIGluaXRpYWxpemVfdG9rZW5pemVyX3N0YXRlIHsKCiAgICAgICAgIyBUVjE6IGluaXRpYWxpemVkIG9uIGVhY2ggY2FsbAogICAgICAgICMgVFYyOiBpbml0aWFsaXplZCBvbiBlYWNoIGNhbGwKICAgICAgICAjIFRWMzoKICAgICAgICAkaW5fcXVvdGUgICAgICAgICAgICAgICAgPSAwOwogICAgICAgICRxdW90ZV90eXBlICAgICAgICAgICAgICA9ICdRJzsKICAgICAgICAkcXVvdGVfY2hhcmFjdGVyICAgICAgICAgPSAiIjsKICAgICAgICAkcXVvdGVfcG9zICAgICAgICAgICAgICAgPSAwOwogICAgICAgICRxdW90ZV9kZXB0aCAgICAgICAgICAgICA9IDA7CiAgICAgICAgJHF1b3RlZF9zdHJpbmdfMSAgICAgICAgID0gIiI7CiAgICAgICAgJHF1b3RlZF9zdHJpbmdfMiAgICAgICAgID0gIiI7CiAgICAgICAgJGFsbG93ZWRfcXVvdGVfbW9kaWZpZXJzID0gIiI7CgogICAgICAgICMgVFY0OgogICAgICAgICRpZF9zY2FuX3N0YXRlICAgICA9ICcnOwogICAgICAgICRpZGVudGlmaWVyICAgICAgICA9ICcnOwogICAgICAgICR3YW50X3BhcmVuICAgICAgICA9ICIiOwogICAgICAgICRpbmRlbnRlZF9pZl9sZXZlbCA9IDA7CgogICAgICAgICMgVFY1OgogICAgICAgICRuZXN0aW5nX3Rva2VuX3N0cmluZyAgICAgICAgICAgICA9ICIiOwogICAgICAgICRuZXN0aW5nX3R5cGVfc3RyaW5nICAgICAgICAgICAgICA9ICIiOwogICAgICAgICRuZXN0aW5nX2Jsb2NrX3N0cmluZyAgICAgICAgICAgICA9ICcxJzsgICAgIyBpbml0aWFsbHkgaW4gYSBibG9jawogICAgICAgICRuZXN0aW5nX2Jsb2NrX2ZsYWcgICAgICAgICAgICAgICA9IDE7CiAgICAgICAgJG5lc3RpbmdfbGlzdF9zdHJpbmcgICAgICAgICAgICAgID0gJzAnOyAgICAjIGluaXRpYWxseSBub3QgaW4gYSBsaXN0CiAgICAgICAgJG5lc3RpbmdfbGlzdF9mbGFnICAgICAgICAgICAgICAgID0gMDsgICAgICAjIGluaXRpYWxseSBub3QgaW4gYSBsaXN0CiAgICAgICAgJGNpX3N0cmluZ19pbl90b2tlbml6ZXIgICAgICAgICAgID0gIiI7CiAgICAgICAgJGNvbnRpbnVhdGlvbl9zdHJpbmdfaW5fdG9rZW5pemVyID0gIjAiOwogICAgICAgICRpbl9zdGF0ZW1lbnRfY29udGludWF0aW9uICAgICAgICA9IDA7CiAgICAgICAgJGxldmVsX2luX3Rva2VuaXplciAgICAgICAgICAgICAgID0gMDsKICAgICAgICAkc2xldmVsX2luX3Rva2VuaXplciAgICAgICAgICAgICAgPSAwOwogICAgICAgICRyc2xldmVsX3N0YWNrICAgICAgICAgICAgICAgICAgICA9IFtdOwoKICAgICAgICAjIFRWNjoKICAgICAgICAkbGFzdF9ub25ibGFua19jb250YWluZXJfdHlwZSAgICAgID0gJyc7CiAgICAgICAgJGxhc3Rfbm9uYmxhbmtfdHlwZV9zZXF1ZW5jZSAgICAgICA9ICcnOwogICAgICAgICRsYXN0X2xhc3Rfbm9uYmxhbmtfdG9rZW4gICAgICAgICAgPSAnOyc7CiAgICAgICAgJGxhc3RfbGFzdF9ub25ibGFua190eXBlICAgICAgICAgICA9ICc7JzsKICAgICAgICAkbGFzdF9sYXN0X25vbmJsYW5rX2Jsb2NrX3R5cGUgICAgID0gJyc7CiAgICAgICAgJGxhc3RfbGFzdF9ub25ibGFua19jb250YWluZXJfdHlwZSA9ICcnOwogICAgICAgICRsYXN0X2xhc3Rfbm9uYmxhbmtfdHlwZV9zZXF1ZW5jZSAgPSAnJzsKICAgICAgICAkbGFzdF9ub25ibGFua19wcm90b3R5cGUgICAgICAgICAgID0gIiI7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBzYXZlX3Rva2VuaXplcl9zdGF0ZSB7CgogICAgICAgIG15ICRyVFYxID0gWwogICAgICAgICAgICAkYmxvY2tfdHlwZSwgICAgICAgICRjb250YWluZXJfdHlwZSwgICAgJGV4cGVjdGluZywKICAgICAgICAgICAgJGksICAgICAgICAgICAgICAgICAkaV90b2ssICAgICAgICAgICAgICRpbnB1dF9saW5lLAogICAgICAgICAgICAkaW5wdXRfbGluZV9udW1iZXIsICRsYXN0X25vbmJsYW5rX2ksICAgJG1heF90b2tlbl9pbmRleCwKICAgICAgICAgICAgJG5leHRfdG9rLCAgICAgICAgICAkbmV4dF90eXBlLCAgICAgICAgICRwZWVrZWRfYWhlYWQsCiAgICAgICAgICAgICRwcm90b3R5cGUsICAgICAgICAgJHJoZXJlX3RhcmdldF9saXN0LCAkcnRva2VuX21hcCwKICAgICAgICAgICAgJHJ0b2tlbl90eXBlLCAgICAgICAkcnRva2VucywgICAgICAgICAgICR0b2ssCiAgICAgICAgICAgICR0eXBlLCAgICAgICAgICAgICAgJHR5cGVfc2VxdWVuY2UsICAgICAkaW5kZW50X2ZsYWcsCiAgICAgICAgXTsKCiAgICAgICAgbXkgJHJUVjIgPSBbCiAgICAgICAgICAgICRyb3V0cHV0X3Rva2VuX2xpc3QsICAgICRyb3V0cHV0X3Rva2VuX3R5cGUsCiAgICAgICAgICAgICRyb3V0cHV0X2Jsb2NrX3R5cGUsICAgICRyb3V0cHV0X2NvbnRhaW5lcl90eXBlLAogICAgICAgICAgICAkcm91dHB1dF90eXBlX3NlcXVlbmNlLCAkcm91dHB1dF9pbmRlbnRfZmxhZywKICAgICAgICBdOwoKICAgICAgICBteSAkclRWMyA9IFsKICAgICAgICAgICAgJGluX3F1b3RlLCAgICAgICAgJHF1b3RlX3R5cGUsCiAgICAgICAgICAgICRxdW90ZV9jaGFyYWN0ZXIsICRxdW90ZV9wb3MsCiAgICAgICAgICAgICRxdW90ZV9kZXB0aCwgICAgICRxdW90ZWRfc3RyaW5nXzEsCiAgICAgICAgICAgICRxdW90ZWRfc3RyaW5nXzIsICRhbGxvd2VkX3F1b3RlX21vZGlmaWVycywKICAgICAgICBdOwoKICAgICAgICBteSAkclRWNCA9CiAgICAgICAgICBbICRpZF9zY2FuX3N0YXRlLCAkaWRlbnRpZmllciwgJHdhbnRfcGFyZW4sICRpbmRlbnRlZF9pZl9sZXZlbCBdOwoKICAgICAgICBteSAkclRWNSA9IFsKICAgICAgICAgICAgJG5lc3RpbmdfdG9rZW5fc3RyaW5nLCAgICAgICRuZXN0aW5nX3R5cGVfc3RyaW5nLAogICAgICAgICAgICAkbmVzdGluZ19ibG9ja19zdHJpbmcsICAgICAgJG5lc3RpbmdfYmxvY2tfZmxhZywKICAgICAgICAgICAgJG5lc3RpbmdfbGlzdF9zdHJpbmcsICAgICAgICRuZXN0aW5nX2xpc3RfZmxhZywKICAgICAgICAgICAgJGNpX3N0cmluZ19pbl90b2tlbml6ZXIsICAgICRjb250aW51YXRpb25fc3RyaW5nX2luX3Rva2VuaXplciwKICAgICAgICAgICAgJGluX3N0YXRlbWVudF9jb250aW51YXRpb24sICRsZXZlbF9pbl90b2tlbml6ZXIsCiAgICAgICAgICAgICRzbGV2ZWxfaW5fdG9rZW5pemVyLCAgICAgICAkcnNsZXZlbF9zdGFjaywKICAgICAgICBdOwoKICAgICAgICBteSAkclRWNiA9IFsKICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfY29udGFpbmVyX3R5cGUsCiAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3R5cGVfc2VxdWVuY2UsCiAgICAgICAgICAgICRsYXN0X2xhc3Rfbm9uYmxhbmtfdG9rZW4sCiAgICAgICAgICAgICRsYXN0X2xhc3Rfbm9uYmxhbmtfdHlwZSwKICAgICAgICAgICAgJGxhc3RfbGFzdF9ub25ibGFua19ibG9ja190eXBlLAogICAgICAgICAgICAkbGFzdF9sYXN0X25vbmJsYW5rX2NvbnRhaW5lcl90eXBlLAogICAgICAgICAgICAkbGFzdF9sYXN0X25vbmJsYW5rX3R5cGVfc2VxdWVuY2UsCiAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3Byb3RvdHlwZSwKICAgICAgICBdOwogICAgICAgIHJldHVybiBbICRyVFYxLCAkclRWMiwgJHJUVjMsICRyVFY0LCAkclRWNSwgJHJUVjYgXTsKICAgIH0KCiAgICBzdWIgcmVzdG9yZV90b2tlbml6ZXJfc3RhdGUgewogICAgICAgIG15ICgkcnN0YXRlKSA9IEBfOwogICAgICAgIG15ICggJHJUVjEsICRyVFYyLCAkclRWMywgJHJUVjQsICRyVFY1LCAkclRWNiApID0gQHskcnN0YXRlfTsKICAgICAgICAoCiAgICAgICAgICAgICRibG9ja190eXBlLCAgICAgICAgJGNvbnRhaW5lcl90eXBlLCAgICAkZXhwZWN0aW5nLAogICAgICAgICAgICAkaSwgICAgICAgICAgICAgICAgICRpX3RvaywgICAgICAgICAgICAgJGlucHV0X2xpbmUsCiAgICAgICAgICAgICRpbnB1dF9saW5lX251bWJlciwgJGxhc3Rfbm9uYmxhbmtfaSwgICAkbWF4X3Rva2VuX2luZGV4LAogICAgICAgICAgICAkbmV4dF90b2ssICAgICAgICAgICRuZXh0X3R5cGUsICAgICAgICAgJHBlZWtlZF9haGVhZCwKICAgICAgICAgICAgJHByb3RvdHlwZSwgICAgICAgICAkcmhlcmVfdGFyZ2V0X2xpc3QsICRydG9rZW5fbWFwLAogICAgICAgICAgICAkcnRva2VuX3R5cGUsICAgICAgICRydG9rZW5zLCAgICAgICAgICAgJHRvaywKICAgICAgICAgICAgJHR5cGUsICAgICAgICAgICAgICAkdHlwZV9zZXF1ZW5jZSwgICAgICRpbmRlbnRfZmxhZywKICAgICAgICApID0gQHskclRWMX07CgogICAgICAgICgKICAgICAgICAgICAgJHJvdXRwdXRfdG9rZW5fbGlzdCwgICAgJHJvdXRwdXRfdG9rZW5fdHlwZSwKICAgICAgICAgICAgJHJvdXRwdXRfYmxvY2tfdHlwZSwgICAgJHJvdXRwdXRfY29udGFpbmVyX3R5cGUsCiAgICAgICAgICAgICRyb3V0cHV0X3R5cGVfc2VxdWVuY2UsICRyb3V0cHV0X3R5cGVfc2VxdWVuY2UsCiAgICAgICAgKSA9IEB7JHJUVjJ9OwoKICAgICAgICAoCiAgICAgICAgICAgICRpbl9xdW90ZSwgJHF1b3RlX3R5cGUsICRxdW90ZV9jaGFyYWN0ZXIsICRxdW90ZV9wb3MsICRxdW90ZV9kZXB0aCwKICAgICAgICAgICAgJHF1b3RlZF9zdHJpbmdfMSwgJHF1b3RlZF9zdHJpbmdfMiwgJGFsbG93ZWRfcXVvdGVfbW9kaWZpZXJzLAogICAgICAgICkgPSBAeyRyVFYzfTsKCiAgICAgICAgKCAkaWRfc2Nhbl9zdGF0ZSwgJGlkZW50aWZpZXIsICR3YW50X3BhcmVuLCAkaW5kZW50ZWRfaWZfbGV2ZWwgKSA9CiAgICAgICAgICBAeyRyVFY0fTsKCiAgICAgICAgKAogICAgICAgICAgICAkbmVzdGluZ190b2tlbl9zdHJpbmcsICAgICAgJG5lc3RpbmdfdHlwZV9zdHJpbmcsCiAgICAgICAgICAgICRuZXN0aW5nX2Jsb2NrX3N0cmluZywgICAgICAkbmVzdGluZ19ibG9ja19mbGFnLAogICAgICAgICAgICAkbmVzdGluZ19saXN0X3N0cmluZywgICAgICAgJG5lc3RpbmdfbGlzdF9mbGFnLAogICAgICAgICAgICAkY2lfc3RyaW5nX2luX3Rva2VuaXplciwgICAgJGNvbnRpbnVhdGlvbl9zdHJpbmdfaW5fdG9rZW5pemVyLAogICAgICAgICAgICAkaW5fc3RhdGVtZW50X2NvbnRpbnVhdGlvbiwgJGxldmVsX2luX3Rva2VuaXplciwKICAgICAgICAgICAgJHNsZXZlbF9pbl90b2tlbml6ZXIsICAgICAgICRyc2xldmVsX3N0YWNrLAogICAgICAgICkgPSBAeyRyVFY1fTsKCiAgICAgICAgKAogICAgICAgICAgICAkbGFzdF9ub25ibGFua19jb250YWluZXJfdHlwZSwKICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfdHlwZV9zZXF1ZW5jZSwKICAgICAgICAgICAgJGxhc3RfbGFzdF9ub25ibGFua190b2tlbiwKICAgICAgICAgICAgJGxhc3RfbGFzdF9ub25ibGFua190eXBlLAogICAgICAgICAgICAkbGFzdF9sYXN0X25vbmJsYW5rX2Jsb2NrX3R5cGUsCiAgICAgICAgICAgICRsYXN0X2xhc3Rfbm9uYmxhbmtfY29udGFpbmVyX3R5cGUsCiAgICAgICAgICAgICRsYXN0X2xhc3Rfbm9uYmxhbmtfdHlwZV9zZXF1ZW5jZSwKICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfcHJvdG90eXBlLAogICAgICAgICkgPSBAeyRyVFY2fTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgc3ViIGdldF9pbmRlbnRhdGlvbl9sZXZlbCB7CgogICAgICAgICMgcGF0Y2ggdG8gYXZvaWQgcmVwb3J0aW5nIGVycm9yIGlmIGluZGVudGVkIGlmIGlzIG5vdCB0ZXJtaW5hdGVkCiAgICAgICAgaWYgKCRpbmRlbnRlZF9pZl9sZXZlbCkgeyByZXR1cm4gJGxldmVsX2luX3Rva2VuaXplciAtIDEgfQogICAgICAgIHJldHVybiAkbGV2ZWxfaW5fdG9rZW5pemVyOwogICAgfQoKICAgIHN1YiByZXNldF9pbmRlbnRhdGlvbl9sZXZlbCB7CiAgICAgICAgJGxldmVsX2luX3Rva2VuaXplciA9ICRzbGV2ZWxfaW5fdG9rZW5pemVyID0gc2hpZnQ7CiAgICAgICAgcHVzaCBAeyRyc2xldmVsX3N0YWNrfSwgJHNsZXZlbF9pbl90b2tlbml6ZXI7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBwZWVrZWRfYWhlYWQgewogICAgICAgIG15ICRmbGFnID0gc2hpZnQ7CiAgICAgICAgJHBlZWtlZF9haGVhZCA9IGRlZmluZWQoJGZsYWcpID8gJGZsYWcgOiAkcGVla2VkX2FoZWFkOwogICAgICAgIHJldHVybiAkcGVla2VkX2FoZWFkOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIGVuZCBvZiB0b2tlbml6ZXIgdmFyaWFibGUgYWNjZXNzIGFuZCBtYW5pcHVsYXRpb24gcm91dGluZXMKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgYmVnaW5uaW5nIG9mIHZhcmlvdXMgc2Nhbm5lciBpbnRlcmZhY2Ugcm91dGluZXMKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBzdWIgc2Nhbl9yZXBsYWNlbWVudF90ZXh0IHsKCiAgICAgICAgIyBjaGVjayBmb3IgaGVyZS1kb2NzIGluIHJlcGxhY2VtZW50IHRleHQgaW52b2tlZCBieQogICAgICAgICMgYSBzdWJzdGl0dXRpb24gb3BlcmF0b3Igd2l0aCBleGVjdXRhYmxlIG1vZGlmaWVyICdlJy4KICAgICAgICAjCiAgICAgICAgIyBnaXZlbjoKICAgICAgICAjICAkcmVwbGFjZW1lbnRfdGV4dAogICAgICAgICMgcmV0dXJuOgogICAgICAgICMgICRyaHQgPSByZWZlcmVuY2UgdG8gYW55IGhlcmUtZG9jIHRhcmdldHMKICAgICAgICBteSAoJHJlcGxhY2VtZW50X3RleHQpID0gQF87CgogICAgICAgICMgcXVpY2sgY2hlY2sKICAgICAgICByZXR1cm4gdW5sZXNzICggJHJlcGxhY2VtZW50X3RleHQgPX4gLzw8LyApOwoKICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCJzY2FubmluZyByZXBsYWNlbWVudCB0ZXh0IGZvciBoZXJlLWRvYyB0YXJnZXRzXG4iKTsKCiAgICAgICAgIyBzYXZlIHRoZSBsb2dnZXIgb2JqZWN0IGZvciBlcnJvciBtZXNzYWdlcwogICAgICAgIG15ICRsb2dnZXJfb2JqZWN0ID0gJHRva2VuaXplcl9zZWxmLT57X2xvZ2dlcl9vYmplY3R9OwoKICAgICAgICAjIGxvY2FsaXplIGFsbCBwYWNrYWdlIHZhcmlhYmxlcwogICAgICAgIGxvY2FsICgKICAgICAgICAgICAgJHRva2VuaXplcl9zZWxmLCAgICAgICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfdG9rZW4sCiAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3R5cGUsICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX2Jsb2NrX3R5cGUsCiAgICAgICAgICAgICRzdGF0ZW1lbnRfdHlwZSwgICAgICAgICAgICAgICAgICRpbl9hdHRyaWJ1dGVfbGlzdCwKICAgICAgICAgICAgJGN1cnJlbnRfcGFja2FnZSwgICAgICAgICAgICAgICAgJGNvbnRleHQsCiAgICAgICAgICAgICVpc19jb25zdGFudCwgICAgICAgICAgICAgICAgICAgICVpc191c2VyX2Z1bmN0aW9uLAogICAgICAgICAgICAldXNlcl9mdW5jdGlvbl9wcm90b3R5cGUsICAgICAgICAlaXNfYmxvY2tfZnVuY3Rpb24sCiAgICAgICAgICAgICVpc19ibG9ja19saXN0X2Z1bmN0aW9uLCAgICAgICAgICVzYXdfZnVuY3Rpb25fZGVmaW5pdGlvbiwKICAgICAgICAgICAgJGJyYWNlX2RlcHRoLCAgICAgICAgICAgICAgICAgICAgJHBhcmVuX2RlcHRoLAogICAgICAgICAgICAkc3F1YXJlX2JyYWNrZXRfZGVwdGgsICAgICAgICAgICBAY3VycmVudF9kZXB0aCwKICAgICAgICAgICAgQHRvdGFsX2RlcHRoLCAgICAgICAgICAgICAgICAgICAgJHRvdGFsX2RlcHRoLAogICAgICAgICAgICBAbmVzdGluZ19zZXF1ZW5jZV9udW1iZXIsICAgICAgICBAY3VycmVudF9zZXF1ZW5jZV9udW1iZXIsCiAgICAgICAgICAgIEBwYXJlbl90eXBlLCAgICAgICAgICAgICAgICAgICAgIEBwYXJlbl9zZW1pY29sb25fY291bnQsCiAgICAgICAgICAgIEBwYXJlbl9zdHJ1Y3R1cmFsX3R5cGUsICAgICAgICAgIEBicmFjZV90eXBlLAogICAgICAgICAgICBAYnJhY2Vfc3RydWN0dXJhbF90eXBlLCAgICAgICAgICBAYnJhY2VfY29udGV4dCwKICAgICAgICAgICAgQGJyYWNlX3BhY2thZ2UsICAgICAgICAgICAgICAgICAgQHNxdWFyZV9icmFja2V0X3R5cGUsCiAgICAgICAgICAgIEBzcXVhcmVfYnJhY2tldF9zdHJ1Y3R1cmFsX3R5cGUsIEBkZXB0aF9hcnJheSwKICAgICAgICAgICAgQHN0YXJ0aW5nX2xpbmVfb2ZfY3VycmVudF9kZXB0aCwgQG5lc3RlZF90ZXJuYXJ5X2ZsYWcsCiAgICAgICAgICAgIEBuZXN0ZWRfc3RhdGVtZW50X3R5cGUsCiAgICAgICAgKTsKCiAgICAgICAgIyBzYXZlIGFsbCBsZXhpY2FsIHZhcmlhYmxlcwogICAgICAgIG15ICRyc3RhdGUgPSBzYXZlX3Rva2VuaXplcl9zdGF0ZSgpOwogICAgICAgIF9kZWNyZW1lbnRfY291bnQoKTsgICAgIyBhdm9pZCBlcnJvciBjaGVjayBmb3IgbXVsdGlwbGUgdG9rZW5pemVycwoKICAgICAgICAjIG1ha2UgYSBuZXcgdG9rZW5pemVyCiAgICAgICAgbXkgJHJPcHRzID0ge307CiAgICAgICAgbXkgJHJwZW5kaW5nX2xvZ2ZpbGVfbWVzc2FnZTsKICAgICAgICBteSAkc291cmNlX29iamVjdCA9CiAgICAgICAgICBQZXJsOjpUaWR5OjpMaW5lU291cmNlLT5uZXcoIFwkcmVwbGFjZW1lbnRfdGV4dCwgJHJPcHRzLAogICAgICAgICAgICAkcnBlbmRpbmdfbG9nZmlsZV9tZXNzYWdlICk7CiAgICAgICAgbXkgJHRva2VuaXplciA9IFBlcmw6OlRpZHk6OlRva2VuaXplci0+bmV3KAogICAgICAgICAgICBzb3VyY2Vfb2JqZWN0ICAgICAgICA9PiAkc291cmNlX29iamVjdCwKICAgICAgICAgICAgbG9nZ2VyX29iamVjdCAgICAgICAgPT4gJGxvZ2dlcl9vYmplY3QsCiAgICAgICAgICAgIHN0YXJ0aW5nX2xpbmVfbnVtYmVyID0+ICRpbnB1dF9saW5lX251bWJlciwKICAgICAgICApOwoKICAgICAgICAjIHNjYW4gdGhlIHJlcGxhY2VtZW50IHRleHQKICAgICAgICAxIHdoaWxlICggJHRva2VuaXplci0+Z2V0X2xpbmUoKSApOwoKICAgICAgICAjIHJlbW92ZSBhbnkgaGVyZSBkb2MgdGFyZ2V0cwogICAgICAgIG15ICRyaHQgPSB1bmRlZjsKICAgICAgICBpZiAoICR0b2tlbml6ZXJfc2VsZi0+e19pbl9oZXJlX2RvY30gKSB7CiAgICAgICAgICAgICRyaHQgPSBbXTsKICAgICAgICAgICAgcHVzaCBAeyRyaHR9LAogICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICR0b2tlbml6ZXJfc2VsZi0+e19oZXJlX2RvY190YXJnZXR9LAogICAgICAgICAgICAgICAgJHRva2VuaXplcl9zZWxmLT57X2hlcmVfcXVvdGVfY2hhcmFjdGVyfQogICAgICAgICAgICAgIF07CiAgICAgICAgICAgIGlmICggJHRva2VuaXplcl9zZWxmLT57X3JoZXJlX3RhcmdldF9saXN0fSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQHskcmh0fSwgQHsgJHRva2VuaXplcl9zZWxmLT57X3JoZXJlX3RhcmdldF9saXN0fSB9OwogICAgICAgICAgICAgICAgJHRva2VuaXplcl9zZWxmLT57X3JoZXJlX3RhcmdldF9saXN0fSA9IHVuZGVmOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0b2tlbml6ZXJfc2VsZi0+e19pbl9oZXJlX2RvY30gPSB1bmRlZjsKICAgICAgICB9CgogICAgICAgICMgbm93IGl0cyBzYWZlIHRvIHJlcG9ydCBlcnJvcnMKICAgICAgICBteSAkc2V2ZXJlX2Vycm9yID0gJHRva2VuaXplci0+cmVwb3J0X3Rva2VuaXphdGlvbl9lcnJvcnMoKTsKCiAgICAgICAgIyBUT0RPOiBDb3VsZCBwcm9wYWdhdGUgYSBzZXZlcmUgZXJyb3IgdXAKCiAgICAgICAgIyByZXN0b3JlIGFsbCB0b2tlbml6ZXIgbGV4aWNhbCB2YXJpYWJsZXMKICAgICAgICByZXN0b3JlX3Rva2VuaXplcl9zdGF0ZSgkcnN0YXRlKTsKCiAgICAgICAgIyByZXR1cm4gdGhlIGhlcmUgZG9jIHRhcmdldHMKICAgICAgICByZXR1cm4gJHJodDsKICAgIH0KCiAgICBzdWIgc2Nhbl9iYXJlX2lkZW50aWZpZXIgewogICAgICAgICggJGksICR0b2ssICR0eXBlLCAkcHJvdG90eXBlICkgPQogICAgICAgICAgc2Nhbl9iYXJlX2lkZW50aWZpZXJfZG8oICRpbnB1dF9saW5lLCAkaSwgJHRvaywgJHR5cGUsICRwcm90b3R5cGUsCiAgICAgICAgICAgICRydG9rZW5fbWFwLCAkbWF4X3Rva2VuX2luZGV4ICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBzY2FuX2lkZW50aWZpZXIgewogICAgICAgICggJGksICR0b2ssICR0eXBlLCAkaWRfc2Nhbl9zdGF0ZSwgJGlkZW50aWZpZXIgKSA9CiAgICAgICAgICBzY2FuX2lkZW50aWZpZXJfZG8oICRpLCAkaWRfc2Nhbl9zdGF0ZSwgJGlkZW50aWZpZXIsICRydG9rZW5zLAogICAgICAgICAgICAkbWF4X3Rva2VuX2luZGV4LCAkZXhwZWN0aW5nLCAkcGFyZW5fdHlwZVskcGFyZW5fZGVwdGhdICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBzY2FuX2lkIHsKICAgICAgICAoICRpLCAkdG9rLCAkdHlwZSwgJGlkX3NjYW5fc3RhdGUgKSA9CiAgICAgICAgICBzY2FuX2lkX2RvKCAkaW5wdXRfbGluZSwgJGksICR0b2ssICRydG9rZW5zLCAkcnRva2VuX21hcCwKICAgICAgICAgICAgJGlkX3NjYW5fc3RhdGUsICRtYXhfdG9rZW5faW5kZXggKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgc3ViIHNjYW5fbnVtYmVyIHsKICAgICAgICBteSAkbnVtYmVyOwogICAgICAgICggJGksICR0eXBlLCAkbnVtYmVyICkgPQogICAgICAgICAgc2Nhbl9udW1iZXJfZG8oICRpbnB1dF9saW5lLCAkaSwgJHJ0b2tlbl9tYXAsICR0eXBlLAogICAgICAgICAgICAkbWF4X3Rva2VuX2luZGV4ICk7CiAgICAgICAgcmV0dXJuICRudW1iZXI7CiAgICB9CgogICAgIyBhIHN1YiB0byB3YXJuIGlmIHRva2VuIGZvdW5kIHdoZXJlIHRlcm0gZXhwZWN0ZWQKICAgIHN1YiBlcnJvcl9pZl9leHBlY3RpbmdfVEVSTSB7CiAgICAgICAgaWYgKCAkZXhwZWN0aW5nID09IFRFUk0gKSB7CiAgICAgICAgICAgIGlmICggJHJlYWxseV93YW50X3Rlcm17JGxhc3Rfbm9uYmxhbmtfdHlwZX0gKSB7CiAgICAgICAgICAgICAgICByZXBvcnRfdW5leHBlY3RlZCggJHRvaywgInRlcm0iLCAkaV90b2ssICRsYXN0X25vbmJsYW5rX2ksCiAgICAgICAgICAgICAgICAgICAgJHJ0b2tlbl9tYXAsICRydG9rZW5fdHlwZSwgJGlucHV0X2xpbmUgKTsKICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGEgc3ViIHRvIHdhcm4gaWYgdG9rZW4gZm91bmQgd2hlcmUgb3BlcmF0b3IgZXhwZWN0ZWQKICAgIHN1YiBlcnJvcl9pZl9leHBlY3RpbmdfT1BFUkFUT1IgewogICAgICAgIG15ICR0aGluZyA9IHNoaWZ0OwogICAgICAgIGlmICggJGV4cGVjdGluZyA9PSBPUEVSQVRPUiApIHsKICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCgkdGhpbmcpICkgeyAkdGhpbmcgPSAkdG9rIH0KICAgICAgICAgICAgcmVwb3J0X3VuZXhwZWN0ZWQoICR0aGluZywgIm9wZXJhdG9yIiwgJGlfdG9rLCAkbGFzdF9ub25ibGFua19pLAogICAgICAgICAgICAgICAgJHJ0b2tlbl9tYXAsICRydG9rZW5fdHlwZSwgJGlucHV0X2xpbmUgKTsKICAgICAgICAgICAgaWYgKCAkaV90b2sgPT0gMCApIHsKICAgICAgICAgICAgICAgIGludGVycnVwdF9sb2dmaWxlKCk7CiAgICAgICAgICAgICAgICB3YXJuaW5nKCJNaXNzaW5nICc7JyBhYm92ZT9cbiIpOwogICAgICAgICAgICAgICAgcmVzdW1lX2xvZ2ZpbGUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIGVuZCBzY2FubmVyIGludGVyZmFjZXMKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgbXkgJWlzX2Zvcl9mb3JlYWNoOwogICAgQF8gPSBxdyhmb3IgZm9yZWFjaCk7CiAgICBAaXNfZm9yX2ZvcmVhY2h7QF99ID0gKDEpIHggc2NhbGFyKEBfKTsKCiAgICBteSAlaXNfbXlfb3VyOwogICAgQF8gPSBxdyhteSBvdXIpOwogICAgQGlzX215X291cntAX30gPSAoMSkgeCBzY2FsYXIoQF8pOwoKICAgICMgVGhlc2Uga2V5d29yZHMgbWF5IGludHJvZHVjZSBibG9ja3MgYWZ0ZXIgcGFyZW50aGVzaXplZCBleHByZXNzaW9ucywKICAgICMgaW4gdGhlIGZvcm06CiAgICAjIGtleXdvcmQgKCAuLi4uICkgeyBCTE9DSyB9CiAgICAjIHBhdGNoIGZvciBTV0lUQ0gvQ0FTRTogYWRkZWQgJ3N3aXRjaCcgJ2Nhc2UnICdnaXZlbicgJ3doZW4nCiAgICBteSAlaXNfYmxvY2t0eXBlX3dpdGhfcGFyZW47CiAgICBAXyA9CiAgICAgIHF3KGlmIGVsc2lmIHVubGVzcyB3aGlsZSB1bnRpbCBmb3IgZm9yZWFjaCBzd2l0Y2ggY2FzZSBnaXZlbiB3aGVuIGNhdGNoKTsKICAgIEBpc19ibG9ja3R5cGVfd2l0aF9wYXJlbntAX30gPSAoMSkgeCBzY2FsYXIoQF8pOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIGJlZ2luIGhhc2ggb2YgY29kZSBmb3IgaGFuZGxpbmcgbW9zdCB0b2tlbiB0eXBlcwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIG15ICR0b2tlbml6YXRpb25fY29kZSA9IHsKCiAgICAgICAgIyBubyBzcGVjaWFsIGNvZGUgZm9yIHRoZXNlIHR5cGVzIHlldCwgYnV0IHN5bnRheCBjaGVja3MKICAgICAgICAjIGNvdWxkIGJlIGFkZGVkCgojIyAgICAgICchJyAgID0+IHVuZGVmLAojIyAgICAgICchPScgID0+IHVuZGVmLAojIyAgICAgICchficgID0+IHVuZGVmLAojIyAgICAgICclPScgID0+IHVuZGVmLAojIyAgICAgICcmJj0nID0+IHVuZGVmLAojIyAgICAgICcmPScgID0+IHVuZGVmLAojIyAgICAgICcrPScgID0+IHVuZGVmLAojIyAgICAgICctPScgID0+IHVuZGVmLAojIyAgICAgICcuLicgID0+IHVuZGVmLAojIyAgICAgICcuLicgID0+IHVuZGVmLAojIyAgICAgICcuLi4nID0+IHVuZGVmLAojIyAgICAgICcuPScgID0+IHVuZGVmLAojIyAgICAgICc8PD0nID0+IHVuZGVmLAojIyAgICAgICc8PScgID0+IHVuZGVmLAojIyAgICAgICc8PT4nID0+IHVuZGVmLAojIyAgICAgICc8PicgID0+IHVuZGVmLAojIyAgICAgICc9JyAgID0+IHVuZGVmLAojIyAgICAgICc9PScgID0+IHVuZGVmLAojIyAgICAgICc9ficgID0+IHVuZGVmLAojIyAgICAgICc+PScgID0+IHVuZGVmLAojIyAgICAgICc+PicgID0+IHVuZGVmLAojIyAgICAgICc+Pj0nID0+IHVuZGVmLAojIyAgICAgICdcXCcgID0+IHVuZGVmLAojIyAgICAgICdePScgID0+IHVuZGVmLAojIyAgICAgICd8PScgID0+IHVuZGVmLAojIyAgICAgICd8fD0nID0+IHVuZGVmLAojIyAgICAgICcvLz0nID0+IHVuZGVmLAojIyAgICAgICd+JyAgID0+IHVuZGVmLAojIyAgICAgICd+ficgID0+IHVuZGVmLAojIyAgICAgICchfn4nICA9PiB1bmRlZiwKCiAgICAgICAgJz4nID0+IHN1YiB7CiAgICAgICAgICAgIGVycm9yX2lmX2V4cGVjdGluZ19URVJNKCkKICAgICAgICAgICAgICBpZiAoICRleHBlY3RpbmcgPT0gVEVSTSApOwogICAgICAgIH0sCiAgICAgICAgJ3wnID0+IHN1YiB7CiAgICAgICAgICAgIGVycm9yX2lmX2V4cGVjdGluZ19URVJNKCkKICAgICAgICAgICAgICBpZiAoICRleHBlY3RpbmcgPT0gVEVSTSApOwogICAgICAgIH0sCiAgICAgICAgJyQnID0+IHN1YiB7CgogICAgICAgICAgICAjIHN0YXJ0IGxvb2tpbmcgZm9yIGEgc2NhbGFyCiAgICAgICAgICAgIGVycm9yX2lmX2V4cGVjdGluZ19PUEVSQVRPUigiU2NhbGFyIikKICAgICAgICAgICAgICBpZiAoICRleHBlY3RpbmcgPT0gT1BFUkFUT1IgKTsKICAgICAgICAgICAgc2Nhbl9pZGVudGlmaWVyKCk7CgogICAgICAgICAgICBpZiAoICRpZGVudGlmaWVyIGVxICckXlcnICkgewogICAgICAgICAgICAgICAgJHRva2VuaXplcl9zZWxmLT57X3Nhd19wZXJsX2Rhc2hfd30gPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIENoZWNrIGZvciBpZGVudGlmaWVyIGluIGluZGlyZWN0IG9iamVjdCBzbG90CiAgICAgICAgICAgICMgKHZvcmJvYXJkLnBsLCBzb3J0LnQpLiAgU29tZXRoaW5nIGxpa2U6CiAgICAgICAgICAgICMgICAvXihwcmludHxwcmludGZ8c29ydHxleGVjfHN5c3RlbSkkLwogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkaXNfaW5kaXJlY3Rfb2JqZWN0X3Rha2VyeyRsYXN0X25vbmJsYW5rX3Rva2VufQoKICAgICAgICAgICAgICAgIHx8ICggKCAkbGFzdF9ub25ibGFua190b2tlbiBlcSAnKCcgKQogICAgICAgICAgICAgICAgICAgICYmICRpc19pbmRpcmVjdF9vYmplY3RfdGFrZXJ7ICRwYXJlbl90eXBlWyRwYXJlbl9kZXB0aF0gfSApCiAgICAgICAgICAgICAgICB8fCAoICRsYXN0X25vbmJsYW5rX3R5cGUgPX4gL15bVXddJC8gKSAgICAjIHBvc3NpYmxlIG9iamVjdAogICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHR5cGUgPSAnWic7CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICcoJyA9PiBzdWIgewoKICAgICAgICAgICAgKyskcGFyZW5fZGVwdGg7CiAgICAgICAgICAgICRwYXJlbl9zZW1pY29sb25fY291bnRbJHBhcmVuX2RlcHRoXSA9IDA7CiAgICAgICAgICAgIGlmICgkd2FudF9wYXJlbikgewogICAgICAgICAgICAgICAgJGNvbnRhaW5lcl90eXBlID0gJHdhbnRfcGFyZW47CiAgICAgICAgICAgICAgICAkd2FudF9wYXJlbiAgICAgPSAiIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRzdGF0ZW1lbnRfdHlwZSA9fiAvXnN1YlxiLyApIHsKICAgICAgICAgICAgICAgICRjb250YWluZXJfdHlwZSA9ICRzdGF0ZW1lbnRfdHlwZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRjb250YWluZXJfdHlwZSA9ICRsYXN0X25vbmJsYW5rX3Rva2VuOwoKICAgICAgICAgICAgICAgICMgV2UgY2FuIGNoZWNrIGZvciBhIHN5bnRheCBlcnJvciBoZXJlIG9mIHVuZXhwZWN0ZWQgJygnLAogICAgICAgICAgICAgICAgIyBidXQgdGhpcyBpcyBnb2luZyB0byBnZXQgbWVzc3kuLi4KICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkZXhwZWN0aW5nID09IE9QRVJBVE9SCgogICAgICAgICAgICAgICAgICAgICMgYmUgc3VyZSB0aGlzIGlzIG5vdCBhIG1ldGhvZCBjYWxsIG9mIHRoZSBmb3JtCiAgICAgICAgICAgICAgICAgICAgIyAmbWV0aG9kKC4uLiksICRtZXRob2QtPiguLiksICZ7bWV0aG9kfSguLi4pLAogICAgICAgICAgICAgICAgICAgICMgJHJlZlsyXShsaXN0KSBpcyBvayAmIHNob3J0IGZvciAkcmVmWzJdLT4obGlzdCkKICAgICAgICAgICAgICAgICAgICAjIE5PVEU6IGF0IHByZXNlbnQsIGJyYWNlcyBpbiBzb21ldGhpbmcgbGlrZSAmeyB4eHggfQogICAgICAgICAgICAgICAgICAgICMgYXJlIG5vdCBtYXJrZWQgYXMgYSBibG9jaywgd2UgbWlnaHQgaGF2ZSBhIG1ldGhvZCBjYWxsCiAgICAgICAgICAgICAgICAgICAgJiYgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gIX4gL14oW1xdXH1cJl18XC1cPikvCgogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICMgcmVmOiBjYW1lbCAzIHAgNzAzLgogICAgICAgICAgICAgICAgICAgIGlmICggJGxhc3RfbGFzdF9ub25ibGFua190b2tlbiBlcSAnZG8nICkgewogICAgICAgICAgICAgICAgICAgICAgICBjb21wbGFpbigKImRvIFNVQlJPVVRJTkUgaXMgZGVwcmVjYXRlZDsgY29uc2lkZXIgJiBvciAtPiBub3RhdGlvblxuIgogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgdGhpcyBpcyBhbiBlbXB0eSBsaXN0LCAoKSwgdGhlbiBpdCBpcyBub3QgYW4KICAgICAgICAgICAgICAgICAgICAgICAgIyBlcnJvcjsgZm9yIGV4YW1wbGUsIHdlIG1pZ2h0IGhhdmUgYSBjb25zdGFudCBwaSBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgIyBpbnZva2UgaXQgd2l0aCBwaSgpIG9yIGp1c3QgcGk7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICggJG5leHRfbm9uYmxhbmtfdG9rZW4sICRpX25leHQgKSA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZmluZF9uZXh0X25vbmJsYW5rX3Rva2VuKCAkaSwgJHJ0b2tlbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWF4X3Rva2VuX2luZGV4ICk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJG5leHRfbm9uYmxhbmtfdG9rZW4gbmUgJyknICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGhpbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9pZl9leHBlY3RpbmdfT1BFUkFUT1IoJygnKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRsYXN0X25vbmJsYW5rX3R5cGUgZXEgJ0MnICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRoaW50ID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIkbGFzdF9ub25ibGFua190b2tlbiBoYXMgYSB2b2lkIHByb3RvdHlwZVxuIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICggJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAnaScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAgICRpX3RvayA+IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gPX4gL15cJC8gKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGhpbnQgPQoiRG8geW91IG1lYW4gJyRsYXN0X25vbmJsYW5rX3Rva2VuLT4oJyA/XG4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkaGludCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycnVwdF9sb2dmaWxlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZygkaGludCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdW1lX2xvZ2ZpbGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCAkbmV4dF9ub25ibGFua190b2tlbi4uLgogICAgICAgICAgICAgICAgICAgIH0gIyMgZW5kIGVsc2UgWyBpZiAoICRsYXN0X2xhc3Rfbm9uYmxhbmtfdG9rZW4uLi4KICAgICAgICAgICAgICAgIH0gIyMgZW5kIGlmICggJGV4cGVjdGluZyA9PSBPUEVSQVRPUi4uLgogICAgICAgICAgICB9CiAgICAgICAgICAgICRwYXJlbl90eXBlWyRwYXJlbl9kZXB0aF0gPSAkY29udGFpbmVyX3R5cGU7CiAgICAgICAgICAgICggJHR5cGVfc2VxdWVuY2UsICRpbmRlbnRfZmxhZyApID0KICAgICAgICAgICAgICBpbmNyZWFzZV9uZXN0aW5nX2RlcHRoKCBQQVJFTiwgJHJ0b2tlbl9tYXAtPlskaV90b2tdICk7CgogICAgICAgICAgICAjIHByb3BhZ2F0ZSB0eXBlcyBkb3duIHRocm91Z2ggbmVzdGVkIHBhcmVucwogICAgICAgICAgICAjIGZvciBleGFtcGxlOiB0aGUgc2Vjb25kIHBhcmVuIGluICdpZiAoKCcgd291bGQgYmUgc3RydWN0dXJhbAogICAgICAgICAgICAjIHNpbmNlIHRoZSBmaXJzdCBpcy4KCiAgICAgICAgICAgIGlmICggJGxhc3Rfbm9uYmxhbmtfdG9rZW4gZXEgJygnICkgewogICAgICAgICAgICAgICAgJHR5cGUgPSAkbGFzdF9ub25ibGFua190eXBlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjICAgICBXZSBleGNsdWRlIHBhcmVucyBhcyBzdHJ1Y3R1cmFsIGFmdGVyIGEgJywnIGJlY2F1c2UgaXQKICAgICAgICAgICAgIyAgICAgY2F1c2VzIHN1YnRsZSBwcm9ibGVtcyB3aXRoIGNvbnRpbnVhdGlvbiBpbmRlbnRhdGlvbiBmb3IKICAgICAgICAgICAgIyAgICAgc29tZXRoaW5nIGxpa2UgdGhpcywgd2hlcmUgdGhlIGZpcnN0ICdvcicgd2lsbCBub3QgZ2V0CiAgICAgICAgICAgICMgICAgIGluZGVudGVkLgogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICBhc3NlcnQoCiAgICAgICAgICAgICMgICAgICAgICAgICAgX19MSU5FX18sCiAgICAgICAgICAgICMgICAgICAgICAgICAgKCBub3QgZGVmaW5lZCAkY2hlY2sgKQogICAgICAgICAgICAjICAgICAgICAgICAgICAgb3IgcmVmICRjaGVjawogICAgICAgICAgICAjICAgICAgICAgICAgICAgb3IgJGNoZWNrIGVxICJuZXciCiAgICAgICAgICAgICMgICAgICAgICAgICAgICBvciAkY2hlY2sgZXEgIm9sZCIsCiAgICAgICAgICAgICMgICAgICAgICApOwogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgIExpa2V3aXNlLCB3ZSBleGNsdWRlIHBhcmVucyB3aGVyZSBhIHN0YXRlbWVudCBjYW4gc3RhcnQKICAgICAgICAgICAgIyAgICAgYmVjYXVzZSBvZiBwcm9ibGVtcyB3aXRoIGNvbnRpbnVhdGlvbiBpbmRlbnRhdGlvbiwgbGlrZQogICAgICAgICAgICAjICAgICB0aGVzZToKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgKCRmaXJzdGxpbmUgPX4gL14jXCEuKnBlcmwvKQogICAgICAgICAgICAjICAgICAgICAgYW5kIChwcmludCAkRmlsZTo6RmluZDo6bmFtZSwgIlxuIikKICAgICAgICAgICAgIyAgICAgICAgICAgYW5kIChyZXR1cm4gMSk7CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgICAgICAgIChyZWYoJHVzYWdlX2ZyZWYpID1+IC9DT0RFLykKICAgICAgICAgICAgIyAgICAgICAgID8gJiR1c2FnZV9mcmVmCiAgICAgICAgICAgICMgICAgICAgICAgIDogKCZibGFzdF91c2FnZSwgJmJsYXN0X3BhcmFtcywgJmJsYXN0X2dlbmVyYWxfcGFyYW1zKTsKCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJHR5cGUgPSAneyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAnKScgKSB7CiAgICAgICAgICAgICAgICB3YXJuaW5nKAogICAgICAgICAgICAgICAgICAgICJTeW50YXggZXJyb3I/IGZvdW5kIHRva2VuICckbGFzdF9ub25ibGFua190eXBlJyB0aGVuICcoJ1xuIgogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkcGFyZW5fc3RydWN0dXJhbF90eXBlWyRwYXJlbl9kZXB0aF0gPSAkdHlwZTsKCiAgICAgICAgfSwKICAgICAgICAnKScgPT4gc3ViIHsKICAgICAgICAgICAgKCAkdHlwZV9zZXF1ZW5jZSwgJGluZGVudF9mbGFnICkgPQogICAgICAgICAgICAgIGRlY3JlYXNlX25lc3RpbmdfZGVwdGgoIFBBUkVOLCAkcnRva2VuX21hcC0+WyRpX3Rva10gKTsKCiAgICAgICAgICAgIGlmICggJHBhcmVuX3N0cnVjdHVyYWxfdHlwZVskcGFyZW5fZGVwdGhdIGVxICd7JyApIHsKICAgICAgICAgICAgICAgICR0eXBlID0gJ30nOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkY29udGFpbmVyX3R5cGUgPSAkcGFyZW5fdHlwZVskcGFyZW5fZGVwdGhdOwoKICAgICAgICAgICAgIyByZXN0b3JlIHN0YXRlbWVudCB0eXBlIGFzICdzdWInIGF0IGNsb3NpbmcgcGFyZW4gb2YgYSBzaWduYXR1cmUKICAgICAgICAgICAgIyBzbyB0aGF0IGEgc3Vic2VxdWVudCAnOicgaXMgaWRlbnRpZmllZCBhcyBhbiBhdHRyaWJ1dGUKICAgICAgICAgICAgaWYgKCAkY29udGFpbmVyX3R5cGUgPX4gL15zdWJcYi8gKSB7CiAgICAgICAgICAgICAgICAkc3RhdGVtZW50X3R5cGUgPSAkY29udGFpbmVyX3R5cGU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgICAgL14oZm9yfGZvcmVhY2gpJC8KICAgICAgICAgICAgaWYgKCAkaXNfZm9yX2ZvcmVhY2h7ICRwYXJlbl90eXBlWyRwYXJlbl9kZXB0aF0gfSApIHsKICAgICAgICAgICAgICAgIG15ICRudW1fc2MgPSAkcGFyZW5fc2VtaWNvbG9uX2NvdW50WyRwYXJlbl9kZXB0aF07CiAgICAgICAgICAgICAgICBpZiAoICRudW1fc2MgPiAwICYmICRudW1fc2MgIT0gMiApIHsKICAgICAgICAgICAgICAgICAgICB3YXJuaW5nKCJFeHBlY3RlZCAyICc7JyBpbiAnZm9yKDs7KScgYnV0IHNhdyAkbnVtX3NjXG4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkcGFyZW5fZGVwdGggPiAwICkgeyAkcGFyZW5fZGVwdGgtLSB9CiAgICAgICAgfSwKICAgICAgICAnLCcgPT4gc3ViIHsKICAgICAgICAgICAgaWYgKCAkbGFzdF9ub25ibGFua190eXBlIGVxICcsJyApIHsKICAgICAgICAgICAgICAgIGNvbXBsYWluKCJSZXBlYXRlZCAnLCdzIFxuIik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcGF0Y2ggZm9yIG9wZXJhdG9yX2V4cGVjdGVkOiBub3RlIGlmIHdlIGFyZSBpbiB0aGUgbGlzdCAodXNlLnQpCiAgICAgICAgICAgIGlmICggJHN0YXRlbWVudF90eXBlIGVxICd1c2UnICkgeyAkc3RhdGVtZW50X3R5cGUgPSAnX3VzZScgfQojIyAgICAgICAgICAgICAgICBGSVhNRTogbmVlZCB0byBtb3ZlIHRoaXMgZWxzZXdoZXJlLCBwZXJoYXBzIGNoZWNrIGFmdGVyIGEgJygnCiMjICAgICAgICAgICAgICAgIGVsc2lmICgkbGFzdF9ub25ibGFua190b2tlbiBlcSAnKCcpIHsKIyMgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcoIkxlYWRpbmcgJywncyBpbGxlZ2FsIGluIHNvbWUgdmVyc2lvbnMgb2YgcGVybFxuIik7CiMjICAgICAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICc7JyA9PiBzdWIgewogICAgICAgICAgICAkY29udGV4dCAgICAgICAgPSBVTktOT1dOX0NPTlRFWFQ7CiAgICAgICAgICAgICRzdGF0ZW1lbnRfdHlwZSA9ICcnOwogICAgICAgICAgICAkd2FudF9wYXJlbiAgICAgPSAiIjsKCiAgICAgICAgICAgICMgICAgL14oZm9yfGZvcmVhY2gpJC8KICAgICAgICAgICAgaWYgKCAkaXNfZm9yX2ZvcmVhY2h7ICRwYXJlbl90eXBlWyRwYXJlbl9kZXB0aF0gfSApCiAgICAgICAgICAgIHsgICAgIyBtYXJrIDsgaW4gZm9yIGxvb3AKCiAgICAgICAgICAgICAgICAjIEJlIGNhcmVmdWw6IHdlIGRvIG5vdCB3YW50IGEgc2VtaWNvbG9uIHN1Y2ggYXMgdGhlCiAgICAgICAgICAgICAgICAjIGZvbGxvd2luZyB0byBiZSBpbmNsdWRlZDoKICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICMgICAgZm9yIChzb3J0IHtzdHJjb2xsKCRhLCRiKTt9IGtleXMgJWludmVzdG1lbnRzKSB7CgogICAgICAgICAgICAgICAgaWYgKCAgICRicmFjZV9kZXB0aCA9PSAkZGVwdGhfYXJyYXlbUEFSRU5dW0JSQUNFXVskcGFyZW5fZGVwdGhdCiAgICAgICAgICAgICAgICAgICAgJiYgJHNxdWFyZV9icmFja2V0X2RlcHRoID09CiAgICAgICAgICAgICAgICAgICAgJGRlcHRoX2FycmF5W1BBUkVOXVtTUVVBUkVfQlJBQ0tFVF1bJHBhcmVuX2RlcHRoXSApCiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ2YnOwogICAgICAgICAgICAgICAgICAgICRwYXJlbl9zZW1pY29sb25fY291bnRbJHBhcmVuX2RlcHRoXSsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgIH0sCiAgICAgICAgJyInID0+IHN1YiB7CiAgICAgICAgICAgIGVycm9yX2lmX2V4cGVjdGluZ19PUEVSQVRPUigiU3RyaW5nIikKICAgICAgICAgICAgICBpZiAoICRleHBlY3RpbmcgPT0gT1BFUkFUT1IgKTsKICAgICAgICAgICAgJGluX3F1b3RlICAgICAgICAgICAgICAgID0gMTsKICAgICAgICAgICAgJHR5cGUgICAgICAgICAgICAgICAgICAgID0gJ1EnOwogICAgICAgICAgICAkYWxsb3dlZF9xdW90ZV9tb2RpZmllcnMgPSAiIjsKICAgICAgICB9LAogICAgICAgICInIiA9PiBzdWIgewogICAgICAgICAgICBlcnJvcl9pZl9leHBlY3RpbmdfT1BFUkFUT1IoIlN0cmluZyIpCiAgICAgICAgICAgICAgaWYgKCAkZXhwZWN0aW5nID09IE9QRVJBVE9SICk7CiAgICAgICAgICAgICRpbl9xdW90ZSAgICAgICAgICAgICAgICA9IDE7CiAgICAgICAgICAgICR0eXBlICAgICAgICAgICAgICAgICAgICA9ICdRJzsKICAgICAgICAgICAgJGFsbG93ZWRfcXVvdGVfbW9kaWZpZXJzID0gIiI7CiAgICAgICAgfSwKICAgICAgICAnYCcgPT4gc3ViIHsKICAgICAgICAgICAgZXJyb3JfaWZfZXhwZWN0aW5nX09QRVJBVE9SKCJTdHJpbmciKQogICAgICAgICAgICAgIGlmICggJGV4cGVjdGluZyA9PSBPUEVSQVRPUiApOwogICAgICAgICAgICAkaW5fcXVvdGUgICAgICAgICAgICAgICAgPSAxOwogICAgICAgICAgICAkdHlwZSAgICAgICAgICAgICAgICAgICAgPSAnUSc7CiAgICAgICAgICAgICRhbGxvd2VkX3F1b3RlX21vZGlmaWVycyA9ICIiOwogICAgICAgIH0sCiAgICAgICAgJy8nID0+IHN1YiB7CiAgICAgICAgICAgIG15ICRpc19wYXR0ZXJuOwoKICAgICAgICAgICAgIyBhIHBhdHRlcm4gY2Fubm90IGZvbGxvdyBjZXJ0YWluIGtleXdvcmRzIHdoaWNoIHRha2Ugb3B0aW9uYWwKICAgICAgICAgICAgIyBhcmd1bWVudHMsIGxpa2UgJ3NoaWZ0JyBhbmQgJ3BvcCcuIFNlZSBhbHNvICc/Jy4KICAgICAgICAgICAgaWYgKCAgICRsYXN0X25vbmJsYW5rX3R5cGUgZXEgJ2snCiAgICAgICAgICAgICAgICAmJiAkaXNfa2V5d29yZF90YWtpbmdfb3B0aW9uYWxfYXJnc3skbGFzdF9ub25ibGFua190b2tlbn0gKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkaXNfcGF0dGVybiA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkZXhwZWN0aW5nID09IFVOS05PV04gKSB7ICAgICMgaW5kZXRlcm1pbmF0ZSwgbXVzdCBndWVzcy4uCiAgICAgICAgICAgICAgICBteSAkbXNnOwogICAgICAgICAgICAgICAgKCAkaXNfcGF0dGVybiwgJG1zZyApID0KICAgICAgICAgICAgICAgICAgZ3Vlc3NfaWZfcGF0dGVybl9vcl9kaXZpc2lvbiggJGksICRydG9rZW5zLCAkcnRva2VuX21hcCwKICAgICAgICAgICAgICAgICAgICAkbWF4X3Rva2VuX2luZGV4ICk7CgogICAgICAgICAgICAgICAgaWYgKCRtc2cpIHsKICAgICAgICAgICAgICAgICAgICB3cml0ZV9kaWFnbm9zdGljcygiRElWSURFOiRtc2dcbiIpOwogICAgICAgICAgICAgICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoJG1zZyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7ICRpc19wYXR0ZXJuID0gKCAkZXhwZWN0aW5nID09IFRFUk0gKSB9CgogICAgICAgICAgICBpZiAoJGlzX3BhdHRlcm4pIHsKICAgICAgICAgICAgICAgICRpbl9xdW90ZSAgICAgICAgICAgICAgICA9IDE7CiAgICAgICAgICAgICAgICAkdHlwZSAgICAgICAgICAgICAgICAgICAgPSAnUSc7CiAgICAgICAgICAgICAgICAkYWxsb3dlZF9xdW90ZV9tb2RpZmllcnMgPSAnW21zaXhwb2R1YWxuZ2NdJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsgICAgIyBub3QgYSBwYXR0ZXJuOyBjaGVjayBmb3IgYSAvPSB0b2tlbgoKICAgICAgICAgICAgICAgIGlmICggJHJ0b2tlbnMtPlsgJGkgKyAxIF0gZXEgJz0nICkgeyAgICAjIGZvcm0gdG9rZW4gLz0KICAgICAgICAgICAgICAgICAgICAkaSsrOwogICAgICAgICAgICAgICAgICAgICR0b2sgID0gJy89JzsKICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICR0b2s7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICNERUJVRyAtIGNvbGxlY3RpbmcgaW5mbyBvbiB3aGF0IHRva2VucyBmb2xsb3cgYSBkaXZpZGUKICAgICAgICAgICAgICAjIGZvciBkZXZlbG9wbWVudCBvZiBndWVzc2luZyBhbGdvcml0aG0KICAgICAgICAgICAgICAjaWYgKCBudW1lcmF0b3JfZXhwZWN0ZWQoICRpLCAkcnRva2VucywgJG1heF90b2tlbl9pbmRleCApIDwgMCApIHsKICAgICAgICAgICAgICAjICAgICN3cml0ZV9kaWFnbm9zdGljcyggIkRJVklERT8gJGlucHV0X2xpbmVcbiIgKTsKICAgICAgICAgICAgICAjfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAneycgPT4gc3ViIHsKCiAgICAgICAgICAgICMgaWYgd2UganVzdCBzYXcgYSAnKScsIHdlIHdpbGwgbGFiZWwgdGhpcyBibG9jayB3aXRoCiAgICAgICAgICAgICMgaXRzIHR5cGUuICBXZSBuZWVkIHRvIGRvIHRoaXMgdG8gYWxsb3cgc3ViCiAgICAgICAgICAgICMgY29kZV9ibG9ja190eXBlIHRvIGRldGVybWluZSBpZiB0aGlzIGJyYWNlIHN0YXJ0cyBhCiAgICAgICAgICAgICMgY29kZSBibG9jayBvciBhbm9ueW1vdXMgaGFzaC4gIChUaGUgdHlwZSBvZiBhIHBhcmVuCiAgICAgICAgICAgICMgcGFpciBpcyB0aGUgcHJlY2VkaW5nIHRva2VuLCBzdWNoIGFzICdpZicsICdlbHNlJywKICAgICAgICAgICAgIyBldGMpLgogICAgICAgICAgICAkY29udGFpbmVyX3R5cGUgPSAiIjsKCiAgICAgICAgICAgICMgQVRUUlM6IGZvciBhICd7JyBmb2xsb3dpbmcgYW4gYXR0cmlidXRlIGxpc3QsIHJlc2V0CiAgICAgICAgICAgICMgdGhpbmdzIHRvIGxvb2sgbGlrZSB3ZSBqdXN0IHNhdyB0aGUgc3ViIG5hbWUKICAgICAgICAgICAgaWYgKCAkc3RhdGVtZW50X3R5cGUgPX4gL15zdWIvICkgewogICAgICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gPSAkc3RhdGVtZW50X3R5cGU7CiAgICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua190eXBlICA9ICdpJzsKICAgICAgICAgICAgICAgICRzdGF0ZW1lbnRfdHlwZSAgICAgID0gIiI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcGF0Y2ggZm9yIFNXSVRDSC9DQVNFOiBoaWRlIHRoZXNlIGtleXdvcmRzIGZyb20gYW4gaW1tZWRpYXRlbHkKICAgICAgICAgICAgIyBmb2xsb3dpbmcgb3BlbmluZyBicmFjZQogICAgICAgICAgICBlbHNpZiAoICggJHN0YXRlbWVudF90eXBlIGVxICdjYXNlJyB8fCAkc3RhdGVtZW50X3R5cGUgZXEgJ3doZW4nICkKICAgICAgICAgICAgICAgICYmICRzdGF0ZW1lbnRfdHlwZSBlcSAkbGFzdF9ub25ibGFua190b2tlbiApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3Rva2VuID0gIjsiOwogICAgICAgICAgICB9CgogICAgICAgICAgICBlbHNpZiAoICRsYXN0X25vbmJsYW5rX3Rva2VuIGVxICcpJyApIHsKICAgICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3Rva2VuID0gJHBhcmVuX3R5cGVbICRwYXJlbl9kZXB0aCArIDEgXTsKCiAgICAgICAgICAgICAgICAjIGRlZmVuc2l2ZSBtb3ZlIGluIGNhc2Ugb2YgYSBuZXN0aW5nIGVycm9yIChwYnVnLnQpCiAgICAgICAgICAgICAgICAjIGluIHdoaWNoIHRoaXMgJyknIGhhZCBubyBwcmV2aW91cyAnKCcKICAgICAgICAgICAgICAgICMgdGhpcyBuZXN0aW5nIGVycm9yIHdpbGwgaGF2ZSBiZWVuIGNhdWdodAogICAgICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCgkbGFzdF9ub25ibGFua190b2tlbikgKSB7CiAgICAgICAgICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gPSAnaWYnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgY2hlY2sgZm9yIHN5bnRheCBlcnJvciBoZXJlOwogICAgICAgICAgICAgICAgdW5sZXNzICggJGlzX2Jsb2NrdHlwZV93aXRoX3BhcmVueyRsYXN0X25vbmJsYW5rX3Rva2VufSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICR0b2tlbml6ZXJfc2VsZi0+eydfZXh0ZW5kZWRfc3ludGF4J30gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHdlIGFwcGVuZCBhIHRyYWlsaW5nICgpIHRvIG1hcmsgdGhpcyBhcyBhbiB1bmtub3duCiAgICAgICAgICAgICAgICAgICAgICAgICMgYmxvY2sgdHlwZS4gIFRoaXMgYWxsb3dzIHBlcmx0aWR5IHRvIGZvcm1hdCBzb21lCiAgICAgICAgICAgICAgICAgICAgICAgICMgY29tbW9uIGV4dGVuc2lvbnMgb2YgcGVybCBzeW50YXguCiAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBpcyB1c2VkIGJ5IHN1YiBjb2RlX2Jsb2NrX3R5cGUKICAgICAgICAgICAgICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gLj0gJygpJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRsaXN0ID0KICAgICAgICAgICAgICAgICAgICAgICAgICBqb2luKCAnICcsIHNvcnQga2V5cyAlaXNfYmxvY2t0eXBlX3dpdGhfcGFyZW4gKTsKICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZygKInN5bnRheCBlcnJvciBhdCAnKSB7JywgZGlkbid0IHNlZSBvbmUgb2Y6IDw8JGxpc3Q+PjsgSWYgdGhpcyBjb2RlIGlzIG9rYXkgdHJ5IHVzaW5nIHRoZSAteHMgZmxhZ1xuIgogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBwYXRjaCBmb3IgcGFyZW4tbGVzcyBmb3IvZm9yZWFjaCBnbGl0Y2gsIHBhcnQgMi4KICAgICAgICAgICAgIyBzZWUgbm90ZSBiZWxvdyB1bmRlciAncXcnCiAgICAgICAgICAgIGVsc2lmICgkbGFzdF9ub25ibGFua190b2tlbiBlcSAncXcnCiAgICAgICAgICAgICAgICAmJiAkaXNfZm9yX2ZvcmVhY2h7JHdhbnRfcGFyZW59ICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gPSAkd2FudF9wYXJlbjsKICAgICAgICAgICAgICAgIGlmICggJGxhc3RfbGFzdF9ub25ibGFua190b2tlbiBlcSAkd2FudF9wYXJlbiApIHsKICAgICAgICAgICAgICAgICAgICB3YXJuaW5nKAoic3ludGF4IGVycm9yIGF0ICckd2FudF9wYXJlbiAuLiB7JyAtLSBtaXNzaW5nIFwkIGxvb3AgdmFyaWFibGVcbiIKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICR3YW50X3BhcmVuID0gIiI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgbm93IGlkZW50aWZ5IHdoaWNoIG9mIHRoZSB0aHJlZSBwb3NzaWJsZSB0eXBlcyBvZgogICAgICAgICAgICAjIGN1cmx5IGJyYWNlcyB3ZSBoYXZlOiBoYXNoIGluZGV4IGNvbnRhaW5lciwgYW5vbnltb3VzCiAgICAgICAgICAgICMgaGFzaCByZWZlcmVuY2UsIG9yIGNvZGUgYmxvY2suCgogICAgICAgICAgICAjIG5vbi1zdHJ1Y3R1cmFsIChoYXNoIGluZGV4KSBjdXJseSBicmFjZSBwYWlyCiAgICAgICAgICAgICMgZ2V0IG1hcmtlZCAnTCcgYW5kICdSJwogICAgICAgICAgICBpZiAoIGlzX25vbl9zdHJ1Y3R1cmFsX2JyYWNlKCkgKSB7CiAgICAgICAgICAgICAgICAkdHlwZSA9ICdMJzsKCiAgICAgICAgICAgICAgICAjIHBhdGNoIGZvciBTV0lUQ0gvQ0FTRToKICAgICAgICAgICAgICAgICMgYWxsb3cgcGFyZW4tbGVzcyBpZGVudGlmaWVyIGFmdGVyICd3aGVuJwogICAgICAgICAgICAgICAgIyBpZiB0aGUgYnJhY2UgaXMgcHJlY2VkZWQgYnkgYSBzcGFjZQogICAgICAgICAgICAgICAgaWYgKCAgICRzdGF0ZW1lbnRfdHlwZSBlcSAnd2hlbicKICAgICAgICAgICAgICAgICAgICAmJiAkbGFzdF9ub25ibGFua190eXBlIGVxICdpJwogICAgICAgICAgICAgICAgICAgICYmICRsYXN0X2xhc3Rfbm9uYmxhbmtfdHlwZSBlcSAnaycKICAgICAgICAgICAgICAgICAgICAmJiAoICRpX3RvayA9PSAwIHx8ICRydG9rZW5fdHlwZS0+WyAkaV90b2sgLSAxIF0gZXEgJ2InICkgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICR0eXBlICAgICAgID0gJ3snOwogICAgICAgICAgICAgICAgICAgICRibG9ja190eXBlID0gJHN0YXRlbWVudF90eXBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNvZGUgYW5kIGFub255bW91cyBoYXNoIGhhdmUgdGhlIHNhbWUgdHlwZSwgJ3snLCBidXQgYXJlCiAgICAgICAgICAgICMgZGlzdGluZ3Vpc2hlZCBieSAnYmxvY2tfdHlwZScsCiAgICAgICAgICAgICMgd2hpY2ggd2lsbCBiZSBibGFuayBmb3IgYW4gYW5vbnltb3VzIGhhc2gKICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgJGJsb2NrX3R5cGUgPSBjb2RlX2Jsb2NrX3R5cGUoICRpX3RvaywgJHJ0b2tlbnMsICRydG9rZW5fdHlwZSwKICAgICAgICAgICAgICAgICAgICAkbWF4X3Rva2VuX2luZGV4ICk7CgogICAgICAgICAgICAgICAgIyBwYXRjaCB0byBwcm9tb3RlIGJhcmV3b3JkIHR5cGUgdG8gZnVuY3Rpb24gdGFraW5nIGJsb2NrCiAgICAgICAgICAgICAgICBpZiAoICAgJGJsb2NrX3R5cGUKICAgICAgICAgICAgICAgICAgICAmJiAkbGFzdF9ub25ibGFua190eXBlIGVxICd3JwogICAgICAgICAgICAgICAgICAgICYmICRsYXN0X25vbmJsYW5rX2kgPj0gMCApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkcm91dHB1dF90b2tlbl90eXBlLT5bJGxhc3Rfbm9uYmxhbmtfaV0gZXEgJ3cnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkcm91dHB1dF90b2tlbl90eXBlLT5bJGxhc3Rfbm9uYmxhbmtfaV0gPSAnRyc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgcGF0Y2ggZm9yIFNXSVRDSC9DQVNFOiBpZiB3ZSBmaW5kIGEgc3RyYXkgb3BlbmluZyBibG9jayBicmFjZQogICAgICAgICAgICAgICAgIyB3aGVyZSB3ZSBtaWdodCBhY2NlcHQgYSAnY2FzZScgb3IgJ3doZW4nIGJsb2NrLCB0aGVuIHRha2UgaXQKICAgICAgICAgICAgICAgIGlmICggICAkc3RhdGVtZW50X3R5cGUgZXEgJ2Nhc2UnCiAgICAgICAgICAgICAgICAgICAgfHwgJHN0YXRlbWVudF90eXBlIGVxICd3aGVuJyApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJGJsb2NrX3R5cGUgfHwgJGJsb2NrX3R5cGUgZXEgJ30nICkgewogICAgICAgICAgICAgICAgICAgICAgICAkYmxvY2tfdHlwZSA9ICRzdGF0ZW1lbnRfdHlwZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRicmFjZV90eXBlWyArKyRicmFjZV9kZXB0aCBdICAgICAgICA9ICRibG9ja190eXBlOwogICAgICAgICAgICAkYnJhY2VfcGFja2FnZVskYnJhY2VfZGVwdGhdICAgICAgICAgPSAkY3VycmVudF9wYWNrYWdlOwogICAgICAgICAgICAkYnJhY2Vfc3RydWN0dXJhbF90eXBlWyRicmFjZV9kZXB0aF0gPSAkdHlwZTsKICAgICAgICAgICAgJGJyYWNlX2NvbnRleHRbJGJyYWNlX2RlcHRoXSAgICAgICAgID0gJGNvbnRleHQ7CiAgICAgICAgICAgICggJHR5cGVfc2VxdWVuY2UsICRpbmRlbnRfZmxhZyApID0KICAgICAgICAgICAgICBpbmNyZWFzZV9uZXN0aW5nX2RlcHRoKCBCUkFDRSwgJHJ0b2tlbl9tYXAtPlskaV90b2tdICk7CiAgICAgICAgfSwKICAgICAgICAnfScgPT4gc3ViIHsKICAgICAgICAgICAgJGJsb2NrX3R5cGUgPSAkYnJhY2VfdHlwZVskYnJhY2VfZGVwdGhdOwogICAgICAgICAgICBpZiAoJGJsb2NrX3R5cGUpIHsgJHN0YXRlbWVudF90eXBlID0gJycgfQogICAgICAgICAgICBpZiAoIGRlZmluZWQoICRicmFjZV9wYWNrYWdlWyRicmFjZV9kZXB0aF0gKSApIHsKICAgICAgICAgICAgICAgICRjdXJyZW50X3BhY2thZ2UgPSAkYnJhY2VfcGFja2FnZVskYnJhY2VfZGVwdGhdOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNhbiBoYXBwZW4gb24gYnJhY2UgZXJyb3IgKGNhdWdodCBlbHNld2hlcmUpCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICB9CiAgICAgICAgICAgICggJHR5cGVfc2VxdWVuY2UsICRpbmRlbnRfZmxhZyApID0KICAgICAgICAgICAgICBkZWNyZWFzZV9uZXN0aW5nX2RlcHRoKCBCUkFDRSwgJHJ0b2tlbl9tYXAtPlskaV90b2tdICk7CgogICAgICAgICAgICBpZiAoICRicmFjZV9zdHJ1Y3R1cmFsX3R5cGVbJGJyYWNlX2RlcHRoXSBlcSAnTCcgKSB7CiAgICAgICAgICAgICAgICAkdHlwZSA9ICdSJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBwcm9wYWdhdGUgdHlwZSBpbmZvcm1hdGlvbiBmb3IgJ2RvJyBhbmQgJ2V2YWwnIGJsb2NrcywgYW5kIGFsc28KICAgICAgICAgICAgIyBmb3Igc21hcnRtYXRjaCBvcGVyYXRvci4gIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGVuYWJsZSB1cyB0byBrbm93CiAgICAgICAgICAgICMgaWYgYW4gb3BlcmF0b3Igb3IgdGVybSBpcyBleHBlY3RlZCBuZXh0LgogICAgICAgICAgICBpZiAoICRpc19ibG9ja19vcGVyYXRvcnskYmxvY2tfdHlwZX0gKSB7CiAgICAgICAgICAgICAgICAkdG9rID0gJGJsb2NrX3R5cGU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRjb250ZXh0ID0gJGJyYWNlX2NvbnRleHRbJGJyYWNlX2RlcHRoXTsKICAgICAgICAgICAgaWYgKCAkYnJhY2VfZGVwdGggPiAwICkgeyAkYnJhY2VfZGVwdGgtLTsgfQogICAgICAgIH0sCiAgICAgICAgJyYnID0+IHN1YiB7ICAgICMgbWF5YmUgc3ViIGNhbGw/IHN0YXJ0IGxvb2tpbmcKCiAgICAgICAgICAgICMgV2UgaGF2ZSB0byBjaGVjayBmb3Igc3ViIGNhbGwgdW5sZXNzIHdlIGFyZSBzdXJlIHdlCiAgICAgICAgICAgICMgYXJlIGV4cGVjdGluZyBhbiBvcGVyYXRvci4gIFRoaXMgZXhhbXBsZSBmcm9tIHMycAogICAgICAgICAgICAjIGdvdCBtaXN0YWtlbiBhcyBhIHEgb3BlcmF0b3IgaW4gYW4gZWFybHkgdmVyc2lvbjoKICAgICAgICAgICAgIyAgIHByaW50IEJPRFkgJnEoPDwnRU9UJyk7CiAgICAgICAgICAgIGlmICggJGV4cGVjdGluZyAhPSBPUEVSQVRPUiApIHsKCiAgICAgICAgICAgICAgICAjIEJ1dCBvbmx5IGxvb2sgZm9yIGEgc3ViIGNhbGwgaWYgd2UgYXJlIGV4cGVjdGluZyBhIHRlcm0gb3IKICAgICAgICAgICAgICAgICMgaWYgdGhlcmUgaXMgbm8gZXhpc3Rpbmcgc3BhY2UgYWZ0ZXIgdGhlICYuCiAgICAgICAgICAgICAgICAjIEZvciBleGFtcGxlIHdlIHByb2JhYmx5IGRvbid0IHdhbnQgJiBhcyBzdWIgY2FsbCBoZXJlOgogICAgICAgICAgICAgICAgIyAgICBGY250bDo6U19JUlVTUiAmICRtb2RlOwogICAgICAgICAgICAgICAgaWYgKCAkZXhwZWN0aW5nID09IFRFUk0gfHwgJG5leHRfdHlwZSBuZSAnYicgKSB7CiAgICAgICAgICAgICAgICAgICAgc2Nhbl9pZGVudGlmaWVyKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICc8JyA9PiBzdWIgeyAgICAjIGFuZ2xlIG9wZXJhdG9yIG9yIGxlc3MgdGhhbj8KCiAgICAgICAgICAgIGlmICggJGV4cGVjdGluZyAhPSBPUEVSQVRPUiApIHsKICAgICAgICAgICAgICAgICggJGksICR0eXBlICkgPQogICAgICAgICAgICAgICAgICBmaW5kX2FuZ2xlX29wZXJhdG9yX3Rlcm1pbmF0aW9uKCAkaW5wdXRfbGluZSwgJGksICRydG9rZW5fbWFwLAogICAgICAgICAgICAgICAgICAgICRleHBlY3RpbmcsICRtYXhfdG9rZW5faW5kZXggKTsKCiAgICAgICAgICAgICAgICBpZiAoICR0eXBlIGVxICc8JyAmJiAkZXhwZWN0aW5nID09IFRFUk0gKSB7CiAgICAgICAgICAgICAgICAgICAgZXJyb3JfaWZfZXhwZWN0aW5nX1RFUk0oKTsKICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHRfbG9nZmlsZSgpOwogICAgICAgICAgICAgICAgICAgIHdhcm5pbmcoIlVudGVybWluYXRlZCA8PiBvcGVyYXRvcj9cbiIpOwogICAgICAgICAgICAgICAgICAgIHJlc3VtZV9sb2dmaWxlKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICc/JyA9PiBzdWIgeyAgICAjID86IGNvbmRpdGlvbmFsIG9yIHN0YXJ0aW5nIHBhdHRlcm4/CgogICAgICAgICAgICBteSAkaXNfcGF0dGVybjsKCiAgICAgICAgICAgICMgUGF0Y2ggZm9yIHJ0ICMxMjY5NjUKICAgICAgICAgICAgIyBhIHBhdHRlcm4gY2Fubm90IGZvbGxvdyBjZXJ0YWluIGtleXdvcmRzIHdoaWNoIHRha2Ugb3B0aW9uYWwKICAgICAgICAgICAgIyBhcmd1bWVudHMsIGxpa2UgJ3NoaWZ0JyBhbmQgJ3BvcCcuIFNlZSBhbHNvICcvJy4KICAgICAgICAgICAgaWYgKCAgICRsYXN0X25vbmJsYW5rX3R5cGUgZXEgJ2snCiAgICAgICAgICAgICAgICAmJiAkaXNfa2V5d29yZF90YWtpbmdfb3B0aW9uYWxfYXJnc3skbGFzdF9ub25ibGFua190b2tlbn0gKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkaXNfcGF0dGVybiA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkZXhwZWN0aW5nID09IFVOS05PV04gKSB7CgogICAgICAgICAgICAgICAgbXkgJG1zZzsKICAgICAgICAgICAgICAgICggJGlzX3BhdHRlcm4sICRtc2cgKSA9CiAgICAgICAgICAgICAgICAgIGd1ZXNzX2lmX3BhdHRlcm5fb3JfY29uZGl0aW9uYWwoICRpLCAkcnRva2VucywgJHJ0b2tlbl9tYXAsCiAgICAgICAgICAgICAgICAgICAgJG1heF90b2tlbl9pbmRleCApOwoKICAgICAgICAgICAgICAgIGlmICgkbXNnKSB7IHdyaXRlX2xvZ2ZpbGVfZW50cnkoJG1zZykgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgeyAkaXNfcGF0dGVybiA9ICggJGV4cGVjdGluZyA9PSBURVJNICkgfQoKICAgICAgICAgICAgaWYgKCRpc19wYXR0ZXJuKSB7CiAgICAgICAgICAgICAgICAkaW5fcXVvdGUgICAgICAgICAgICAgICAgPSAxOwogICAgICAgICAgICAgICAgJHR5cGUgICAgICAgICAgICAgICAgICAgID0gJ1EnOwogICAgICAgICAgICAgICAgJGFsbG93ZWRfcXVvdGVfbW9kaWZpZXJzID0gJ1ttc2l4cG9kdWFsbmdjXSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAoICR0eXBlX3NlcXVlbmNlLCAkaW5kZW50X2ZsYWcgKSA9CiAgICAgICAgICAgICAgICAgIGluY3JlYXNlX25lc3RpbmdfZGVwdGgoIFFVRVNUSU9OX0NPTE9OLAogICAgICAgICAgICAgICAgICAgICRydG9rZW5fbWFwLT5bJGlfdG9rXSApOwogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAnKicgPT4gc3ViIHsgICAgIyB0eXBlZ2xvYiwgb3IgbXVsdGlwbHk/CgogICAgICAgICAgICBpZiAoICRleHBlY3RpbmcgPT0gVEVSTSApIHsKICAgICAgICAgICAgICAgIHNjYW5faWRlbnRpZmllcigpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgIGlmICggJHJ0b2tlbnMtPlsgJGkgKyAxIF0gZXEgJz0nICkgewogICAgICAgICAgICAgICAgICAgICR0b2sgID0gJyo9JzsKICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICR0b2s7CiAgICAgICAgICAgICAgICAgICAgJGkrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJHJ0b2tlbnMtPlsgJGkgKyAxIF0gZXEgJyonICkgewogICAgICAgICAgICAgICAgICAgICR0b2sgID0gJyoqJzsKICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICR0b2s7CiAgICAgICAgICAgICAgICAgICAgJGkrKzsKICAgICAgICAgICAgICAgICAgICBpZiAoICRydG9rZW5zLT5bICRpICsgMSBdIGVxICc9JyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRvayAgPSAnKio9JzsKICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAkdG9rOwogICAgICAgICAgICAgICAgICAgICAgICAkaSsrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgJy4nID0+IHN1YiB7ICAgICMgd2hhdCBraW5kIG9mIC4gPwoKICAgICAgICAgICAgaWYgKCAkZXhwZWN0aW5nICE9IE9QRVJBVE9SICkgewogICAgICAgICAgICAgICAgc2Nhbl9udW1iZXIoKTsKICAgICAgICAgICAgICAgIGlmICggJHR5cGUgZXEgJy4nICkgewogICAgICAgICAgICAgICAgICAgIGVycm9yX2lmX2V4cGVjdGluZ19URVJNKCkKICAgICAgICAgICAgICAgICAgICAgIGlmICggJGV4cGVjdGluZyA9PSBURVJNICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICc6JyA9PiBzdWIgewoKICAgICAgICAgICAgIyBpZiB0aGlzIGlzIHRoZSBmaXJzdCBub25ibGFuayBjaGFyYWN0ZXIsIGNhbGwgaXQgYSBsYWJlbAogICAgICAgICAgICAjIHNpbmNlIHBlcmwgc2VlbXMgdG8ganVzdCBzd2FsbG93IGl0CiAgICAgICAgICAgIGlmICggJGlucHV0X2xpbmVfbnVtYmVyID09IDEgJiYgJGxhc3Rfbm9uYmxhbmtfaSA9PSAtMSApIHsKICAgICAgICAgICAgICAgICR0eXBlID0gJ0onOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIEFUVFJTOiBjaGVjayBmb3IgYSAnOicgd2hpY2ggaW50cm9kdWNlcyBhbiBhdHRyaWJ1dGUgbGlzdAogICAgICAgICAgICAjICh0aGlzIG1pZ2h0IGV2ZW50dWFsbHkgZ2V0IGl0cyBvd24gdG9rZW4gdHlwZSkKICAgICAgICAgICAgZWxzaWYgKCAkc3RhdGVtZW50X3R5cGUgPX4gL15zdWJcYi8gKSB7CiAgICAgICAgICAgICAgICAkdHlwZSAgICAgICAgICAgICAgPSAnQSc7CiAgICAgICAgICAgICAgICAkaW5fYXR0cmlidXRlX2xpc3QgPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNoZWNrIGZvciBzY2FsYXIgYXR0cmlidXRlLCBzdWNoIGFzCiAgICAgICAgICAgICMgbXkgJGZvbyA6IHNoYXJlZCA9IDE7CiAgICAgICAgICAgIGVsc2lmICgkaXNfbXlfb3VyeyRzdGF0ZW1lbnRfdHlwZX0KICAgICAgICAgICAgICAgICYmICRjdXJyZW50X2RlcHRoW1FVRVNUSU9OX0NPTE9OXSA9PSAwICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHR5cGUgICAgICAgICAgICAgID0gJ0EnOwogICAgICAgICAgICAgICAgJGluX2F0dHJpYnV0ZV9saXN0ID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdGhlcndpc2UsIGl0IHNob3VsZCBiZSBwYXJ0IG9mIGEgPy86IG9wZXJhdG9yCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgKCAkdHlwZV9zZXF1ZW5jZSwgJGluZGVudF9mbGFnICkgPQogICAgICAgICAgICAgICAgICBkZWNyZWFzZV9uZXN0aW5nX2RlcHRoKCBRVUVTVElPTl9DT0xPTiwKICAgICAgICAgICAgICAgICAgICAkcnRva2VuX21hcC0+WyRpX3Rva10gKTsKICAgICAgICAgICAgICAgIGlmICggJGxhc3Rfbm9uYmxhbmtfdG9rZW4gZXEgJz8nICkgewogICAgICAgICAgICAgICAgICAgIHdhcm5pbmcoIlN5bnRheCBlcnJvciBuZWFyID8gOlxuIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICcrJyA9PiBzdWIgeyAgICAjIHdoYXQga2luZCBvZiBwbHVzPwoKICAgICAgICAgICAgaWYgKCAkZXhwZWN0aW5nID09IFRFUk0gKSB7CiAgICAgICAgICAgICAgICBteSAkbnVtYmVyID0gc2Nhbl9udW1iZXIoKTsKCiAgICAgICAgICAgICAgICAjIHVuYXJ5IHBsdXMgaXMgc2FmZXN0IGFzc3VtcHRpb24gaWYgbm90IGEgbnVtYmVyCiAgICAgICAgICAgICAgICBpZiAoICFkZWZpbmVkKCRudW1iZXIpICkgeyAkdHlwZSA9ICdwJzsgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJGV4cGVjdGluZyA9PSBPUEVSQVRPUiApIHsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICggJG5leHRfdHlwZSBlcSAndycgKSB7ICR0eXBlID0gJ3AnIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgJ0AnID0+IHN1YiB7CgogICAgICAgICAgICBlcnJvcl9pZl9leHBlY3RpbmdfT1BFUkFUT1IoIkFycmF5IikKICAgICAgICAgICAgICBpZiAoICRleHBlY3RpbmcgPT0gT1BFUkFUT1IgKTsKICAgICAgICAgICAgc2Nhbl9pZGVudGlmaWVyKCk7CiAgICAgICAgfSwKICAgICAgICAnJScgPT4gc3ViIHsgICAgIyBoYXNoIG9yIG1vZHVsbz8KCiAgICAgICAgICAgICMgZmlyc3QgZ3Vlc3MgaXMgaGFzaCBpZiBubyBmb2xsb3dpbmcgYmxhbmsKICAgICAgICAgICAgaWYgKCAkZXhwZWN0aW5nID09IFVOS05PV04gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRuZXh0X3R5cGUgbmUgJ2InICkgeyAkZXhwZWN0aW5nID0gVEVSTSB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkZXhwZWN0aW5nID09IFRFUk0gKSB7CiAgICAgICAgICAgICAgICBzY2FuX2lkZW50aWZpZXIoKTsKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgJ1snID0+IHN1YiB7CiAgICAgICAgICAgICRzcXVhcmVfYnJhY2tldF90eXBlWyArKyRzcXVhcmVfYnJhY2tldF9kZXB0aCBdID0KICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua190b2tlbjsKICAgICAgICAgICAgKCAkdHlwZV9zZXF1ZW5jZSwgJGluZGVudF9mbGFnICkgPQogICAgICAgICAgICAgIGluY3JlYXNlX25lc3RpbmdfZGVwdGgoIFNRVUFSRV9CUkFDS0VULCAkcnRva2VuX21hcC0+WyRpX3Rva10gKTsKCiAgICAgICAgICAgICMgSXQgbWF5IHNlZW0gb2RkLCBidXQgc3RydWN0dXJhbCBzcXVhcmUgYnJhY2tldHMgaGF2ZQogICAgICAgICAgICAjIHR5cGUgJ3snIGFuZCAnfScuICBUaGlzIHNpbXBsaWZpZXMgdGhlIGluZGVudGF0aW9uIGxvZ2ljLgogICAgICAgICAgICBpZiAoICFpc19ub25fc3RydWN0dXJhbF9icmFjZSgpICkgewogICAgICAgICAgICAgICAgJHR5cGUgPSAneyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHNxdWFyZV9icmFja2V0X3N0cnVjdHVyYWxfdHlwZVskc3F1YXJlX2JyYWNrZXRfZGVwdGhdID0gJHR5cGU7CiAgICAgICAgfSwKICAgICAgICAnXScgPT4gc3ViIHsKICAgICAgICAgICAgKCAkdHlwZV9zZXF1ZW5jZSwgJGluZGVudF9mbGFnICkgPQogICAgICAgICAgICAgIGRlY3JlYXNlX25lc3RpbmdfZGVwdGgoIFNRVUFSRV9CUkFDS0VULCAkcnRva2VuX21hcC0+WyRpX3Rva10gKTsKCiAgICAgICAgICAgIGlmICggJHNxdWFyZV9icmFja2V0X3N0cnVjdHVyYWxfdHlwZVskc3F1YXJlX2JyYWNrZXRfZGVwdGhdIGVxICd7JyApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICR0eXBlID0gJ30nOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHByb3BhZ2F0ZSB0eXBlIGluZm9ybWF0aW9uIGZvciBzbWFydG1hdGNoIG9wZXJhdG9yLiAgVGhpcyBpcwogICAgICAgICAgICAjIG5lY2Vzc2FyeSB0byBlbmFibGUgdXMgdG8ga25vdyBpZiBhbiBvcGVyYXRvciBvciB0ZXJtIGlzIGV4cGVjdGVkCiAgICAgICAgICAgICMgbmV4dC4KICAgICAgICAgICAgaWYgKCAkc3F1YXJlX2JyYWNrZXRfdHlwZVskc3F1YXJlX2JyYWNrZXRfZGVwdGhdIGVxICd+ficgKSB7CiAgICAgICAgICAgICAgICAkdG9rID0gJHNxdWFyZV9icmFja2V0X3R5cGVbJHNxdWFyZV9icmFja2V0X2RlcHRoXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkc3F1YXJlX2JyYWNrZXRfZGVwdGggPiAwICkgeyAkc3F1YXJlX2JyYWNrZXRfZGVwdGgtLTsgfQogICAgICAgIH0sCiAgICAgICAgJy0nID0+IHN1YiB7ICAgICMgd2hhdCBraW5kIG9mIG1pbnVzPwoKICAgICAgICAgICAgaWYgKCAoICRleHBlY3RpbmcgIT0gT1BFUkFUT1IgKQogICAgICAgICAgICAgICAgJiYgJGlzX2ZpbGVfdGVzdF9vcGVyYXRvcnskbmV4dF90b2t9ICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbXkgKCAkbmV4dF9ub25ibGFua190b2tlbiwgJGlfbmV4dCApID0KICAgICAgICAgICAgICAgICAgZmluZF9uZXh0X25vbmJsYW5rX3Rva2VuKCAkaSArIDEsICRydG9rZW5zLAogICAgICAgICAgICAgICAgICAgICRtYXhfdG9rZW5faW5kZXggKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGZvciBhIHF1b3RlZCB3b3JkIGxpa2UgIi13PT54eCI7CiAgICAgICAgICAgICAgICAjIGl0IGlzIHN1ZmZpY2llbnQgdG8ganVzdCBjaGVjayBmb3IgYSBmb2xsb3dpbmcgJz0nCiAgICAgICAgICAgICAgICBpZiAoICRuZXh0X25vbmJsYW5rX3Rva2VuIGVxICc9JyApIHsKICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICdtJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRpKys7CiAgICAgICAgICAgICAgICAgICAgJHRvayAuPSAkbmV4dF90b2s7CiAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAnRic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkZXhwZWN0aW5nID09IFRFUk0gKSB7CiAgICAgICAgICAgICAgICBteSAkbnVtYmVyID0gc2Nhbl9udW1iZXIoKTsKCiAgICAgICAgICAgICAgICAjIG1heWJlIHBhcnQgb2YgYmFyZXdvcmQgdG9rZW4/IHVuYXJ5IGlzIHNhZmVzdAogICAgICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCgkbnVtYmVyKSApIHsgJHR5cGUgPSAnbSc7IH0KCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkZXhwZWN0aW5nID09IE9QRVJBVE9SICkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgIGlmICggJG5leHRfdHlwZSBlcSAndycgKSB7CiAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAnbSc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICAnXicgPT4gc3ViIHsKCiAgICAgICAgICAgICMgY2hlY2sgZm9yIHNwZWNpYWwgdmFyaWFibGVzIGxpa2UgJHteV0FSTklOR19CSVRTfQogICAgICAgICAgICBpZiAoICRleHBlY3RpbmcgPT0gVEVSTSApIHsKCiAgICAgICAgICAgICAgICAjIEZJWE1FOiB0aGlzIHNob3VsZCB3b3JrIGJ1dCB3aWxsIG5vdCBjYXRjaCBlcnJvcnMKICAgICAgICAgICAgICAgICMgYmVjYXVzZSB3ZSBhbHNvIGhhdmUgdG8gYmUgc3VyZSB0aGF0IHByZXZpb3VzIHRva2VuIGlzCiAgICAgICAgICAgICAgICAjIGEgdHlwZSBjaGFyYWN0ZXIgKCQsQCwlKS4KICAgICAgICAgICAgICAgIGlmICggJGxhc3Rfbm9uYmxhbmtfdG9rZW4gZXEgJ3snCiAgICAgICAgICAgICAgICAgICAgJiYgKCAkbmV4dF90b2sgPX4gL15bQS1aYS16X10vICkgKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICBpZiAoICRuZXh0X3RvayBlcSAnVycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0b2tlbml6ZXJfc2VsZi0+e19zYXdfcGVybF9kYXNoX3d9ID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJHRvayAgPSAkdG9rIC4gJG5leHRfdG9rOwogICAgICAgICAgICAgICAgICAgICRpICAgID0gJGkgKyAxOwogICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ3cnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHVubGVzcyAoIGVycm9yX2lmX2V4cGVjdGluZ19URVJNKCkgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIFNvbWV0aGluZyBsaWtlIHRoaXMgaXMgdmFsaWQgYnV0IHN0cmFuZ2U6CiAgICAgICAgICAgICAgICAgICAgICAgICMgdW5kZWYgXkk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsYWluKCJUaGUgJ14nIHNlZW1zIHVudXN1YWwgaGVyZVxuIik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgJzo6JyA9PiBzdWIgeyAgICAjIHByb2JhYmx5IGEgc3ViIGNhbGwKICAgICAgICAgICAgc2Nhbl9iYXJlX2lkZW50aWZpZXIoKTsKICAgICAgICB9LAogICAgICAgICc8PCcgPT4gc3ViIHsgICAgIyBtYXliZSBhIGhlcmUtZG9jPwogICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICB1bmxlc3MgKCAkaSA8ICRtYXhfdG9rZW5faW5kZXggKQogICAgICAgICAgICAgIDsgICAgICAgICAgIyBoZXJlLWRvYyBub3QgcG9zc2libGUgaWYgZW5kIG9mIGxpbmUKCiAgICAgICAgICAgIGlmICggJGV4cGVjdGluZyAhPSBPUEVSQVRPUiApIHsKICAgICAgICAgICAgICAgIG15ICggJGZvdW5kX3RhcmdldCwgJGhlcmVfZG9jX3RhcmdldCwgJGhlcmVfcXVvdGVfY2hhcmFjdGVyLAogICAgICAgICAgICAgICAgICAgICRzYXdfZXJyb3IgKTsKICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAkZm91bmRfdGFyZ2V0LCAkaGVyZV9kb2NfdGFyZ2V0LCAkaGVyZV9xdW90ZV9jaGFyYWN0ZXIsICRpLAogICAgICAgICAgICAgICAgICAgICRzYXdfZXJyb3IKICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICA9IGZpbmRfaGVyZV9kb2MoICRleHBlY3RpbmcsICRpLCAkcnRva2VucywgJHJ0b2tlbl9tYXAsCiAgICAgICAgICAgICAgICAgICAgJG1heF90b2tlbl9pbmRleCApOwoKICAgICAgICAgICAgICAgIGlmICgkZm91bmRfdGFyZ2V0KSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAeyRyaGVyZV90YXJnZXRfbGlzdH0sCiAgICAgICAgICAgICAgICAgICAgICBbICRoZXJlX2RvY190YXJnZXQsICRoZXJlX3F1b3RlX2NoYXJhY3RlciBdOwogICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ2gnOwogICAgICAgICAgICAgICAgICAgIGlmICggbGVuZ3RoKCRoZXJlX2RvY190YXJnZXQpID4gODAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICR0cnVuY2F0ZWQgPSBzdWJzdHIoICRoZXJlX2RvY190YXJnZXQsIDAsIDgwICk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsYWluKCJMb25nIGhlcmUtdGFyZ2V0OiAnJHRydW5jYXRlZCcgLi4uXG4iKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkaGVyZV9kb2NfdGFyZ2V0ICF+IC9eW0EtWl9dXHcrJC8gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsYWluKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVuY29udmVudGlvbmFsIGhlcmUtdGFyZ2V0OiAnJGhlcmVfZG9jX3RhcmdldCdcbiIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJGV4cGVjdGluZyA9PSBURVJNICkgewogICAgICAgICAgICAgICAgICAgIHVubGVzcyAoJHNhd19lcnJvcikgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG91bGRuJ3QgaGFwcGVuLi4KICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZygiUHJvZ3JhbSBidWc7IGRpZG4ndCBmaW5kIGhlcmUgZG9jIHRhcmdldFxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydF9kZWZpbml0ZV9idWcoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICc8PH4nID0+IHN1YiB7ICAgICMgYSBoZXJlLWRvYywgbmV3IHR5cGUgYWRkZWQgaW4gdjI2CiAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgIHVubGVzcyAoICRpIDwgJG1heF90b2tlbl9pbmRleCApCiAgICAgICAgICAgICAgOyAgICAgICAgICAgIyBoZXJlLWRvYyBub3QgcG9zc2libGUgaWYgZW5kIG9mIGxpbmUKICAgICAgICAgICAgaWYgKCAkZXhwZWN0aW5nICE9IE9QRVJBVE9SICkgewogICAgICAgICAgICAgICAgbXkgKCAkZm91bmRfdGFyZ2V0LCAkaGVyZV9kb2NfdGFyZ2V0LCAkaGVyZV9xdW90ZV9jaGFyYWN0ZXIsCiAgICAgICAgICAgICAgICAgICAgJHNhd19lcnJvciApOwogICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICRmb3VuZF90YXJnZXQsICRoZXJlX2RvY190YXJnZXQsICRoZXJlX3F1b3RlX2NoYXJhY3RlciwgJGksCiAgICAgICAgICAgICAgICAgICAgJHNhd19lcnJvcgogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgID0gZmluZF9oZXJlX2RvYyggJGV4cGVjdGluZywgJGksICRydG9rZW5zLCAkcnRva2VuX21hcCwKICAgICAgICAgICAgICAgICAgICAkbWF4X3Rva2VuX2luZGV4ICk7CgogICAgICAgICAgICAgICAgaWYgKCRmb3VuZF90YXJnZXQpIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCBsZW5ndGgoJGhlcmVfZG9jX3RhcmdldCkgPiA4MCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHRydW5jYXRlZCA9IHN1YnN0ciggJGhlcmVfZG9jX3RhcmdldCwgMCwgODAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxhaW4oIkxvbmcgaGVyZS10YXJnZXQ6ICckdHJ1bmNhdGVkJyAuLi5cbiIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRoZXJlX2RvY190YXJnZXQgIX4gL15bQS1aX11cdyskLyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxhaW4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5jb252ZW50aW9uYWwgaGVyZS10YXJnZXQ6ICckaGVyZV9kb2NfdGFyZ2V0J1xuIik7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIE5vdGUgdGhhdCB3ZSBwdXQgYSBsZWFkaW5nIHNwYWNlIG9uIHRoZSBoZXJlIHF1b3RlCiAgICAgICAgICAgICAgICAgICAgIyBjaGFyYWN0ZXIgaW5kaWNhdGUgdGhhdCBpdCBtYXkgYmUgcHJlY2VkZWQgYnkgc3BhY2VzCiAgICAgICAgICAgICAgICAgICAgJGhlcmVfcXVvdGVfY2hhcmFjdGVyID0gIiAiIC4gJGhlcmVfcXVvdGVfY2hhcmFjdGVyOwogICAgICAgICAgICAgICAgICAgIHB1c2ggQHskcmhlcmVfdGFyZ2V0X2xpc3R9LAogICAgICAgICAgICAgICAgICAgICAgWyAkaGVyZV9kb2NfdGFyZ2V0LCAkaGVyZV9xdW90ZV9jaGFyYWN0ZXIgXTsKICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICdoJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJGV4cGVjdGluZyA9PSBURVJNICkgewogICAgICAgICAgICAgICAgICAgIHVubGVzcyAoJHNhd19lcnJvcikgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG91bGRuJ3QgaGFwcGVuLi4KICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZygiUHJvZ3JhbSBidWc7IGRpZG4ndCBmaW5kIGhlcmUgZG9jIHRhcmdldFxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydF9kZWZpbml0ZV9idWcoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICctPicgPT4gc3ViIHsKCiAgICAgICAgICAgICMgaWYgLT4gcG9pbnRzIHRvIGEgYmFyZSB3b3JkLCB3ZSBtdXN0IHNjYW4gZm9yIGFuIGlkZW50aWZpZXIsCiAgICAgICAgICAgICMgb3RoZXJ3aXNlIHNvbWV0aGluZyBsaWtlIC0+eSB3b3VsZCBsb29rIGxpa2UgdGhlIHkgb3BlcmF0b3IKICAgICAgICAgICAgc2Nhbl9pZGVudGlmaWVyKCk7CiAgICAgICAgfSwKCiAgICAgICAgIyB0eXBlID0gJ3BwJyBmb3IgcHJlLWluY3JlbWVudCwgJysrJyBmb3IgcG9zdC1pbmNyZW1lbnQKICAgICAgICAnKysnID0+IHN1YiB7CiAgICAgICAgICAgIGlmICggJGV4cGVjdGluZyA9PSBURVJNICkgeyAkdHlwZSA9ICdwcCcgfQogICAgICAgICAgICBlbHNpZiAoICRleHBlY3RpbmcgPT0gVU5LTk9XTiApIHsKICAgICAgICAgICAgICAgIG15ICggJG5leHRfbm9uYmxhbmtfdG9rZW4sICRpX25leHQgKSA9CiAgICAgICAgICAgICAgICAgIGZpbmRfbmV4dF9ub25ibGFua190b2tlbiggJGksICRydG9rZW5zLCAkbWF4X3Rva2VuX2luZGV4ICk7CiAgICAgICAgICAgICAgICBpZiAoICRuZXh0X25vbmJsYW5rX3Rva2VuIGVxICckJyApIHsgJHR5cGUgPSAncHAnIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgICc9PicgPT4gc3ViIHsKICAgICAgICAgICAgaWYgKCAkbGFzdF9ub25ibGFua190eXBlIGVxICR0b2sgKSB7CiAgICAgICAgICAgICAgICBjb21wbGFpbigiUmVwZWF0ZWQgJz0+J3MgXG4iKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBwYXRjaCBmb3Igb3BlcmF0b3JfZXhwZWN0ZWQ6IG5vdGUgaWYgd2UgYXJlIGluIHRoZSBsaXN0ICh1c2UudCkKICAgICAgICAgICAgIyBUT0RPOiBtYWtlIHZlcnNpb24gbnVtYmVycyBhIG5ldyB0b2tlbiB0eXBlCiAgICAgICAgICAgIGlmICggJHN0YXRlbWVudF90eXBlIGVxICd1c2UnICkgeyAkc3RhdGVtZW50X3R5cGUgPSAnX3VzZScgfQogICAgICAgIH0sCgogICAgICAgICMgdHlwZSA9ICdtbScgZm9yIHByZS1kZWNyZW1lbnQsICctLScgZm9yIHBvc3QtZGVjcmVtZW50CiAgICAgICAgJy0tJyA9PiBzdWIgewoKICAgICAgICAgICAgaWYgKCAkZXhwZWN0aW5nID09IFRFUk0gKSB7ICR0eXBlID0gJ21tJyB9CiAgICAgICAgICAgIGVsc2lmICggJGV4cGVjdGluZyA9PSBVTktOT1dOICkgewogICAgICAgICAgICAgICAgbXkgKCAkbmV4dF9ub25ibGFua190b2tlbiwgJGlfbmV4dCApID0KICAgICAgICAgICAgICAgICAgZmluZF9uZXh0X25vbmJsYW5rX3Rva2VuKCAkaSwgJHJ0b2tlbnMsICRtYXhfdG9rZW5faW5kZXggKTsKICAgICAgICAgICAgICAgIGlmICggJG5leHRfbm9uYmxhbmtfdG9rZW4gZXEgJyQnICkgeyAkdHlwZSA9ICdtbScgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgJyYmJyA9PiBzdWIgewogICAgICAgICAgICBlcnJvcl9pZl9leHBlY3RpbmdfVEVSTSgpCiAgICAgICAgICAgICAgaWYgKCAkZXhwZWN0aW5nID09IFRFUk0gKTsKICAgICAgICB9LAoKICAgICAgICAnfHwnID0+IHN1YiB7CiAgICAgICAgICAgIGVycm9yX2lmX2V4cGVjdGluZ19URVJNKCkKICAgICAgICAgICAgICBpZiAoICRleHBlY3RpbmcgPT0gVEVSTSApOwogICAgICAgIH0sCgogICAgICAgICcvLycgPT4gc3ViIHsKICAgICAgICAgICAgZXJyb3JfaWZfZXhwZWN0aW5nX1RFUk0oKQogICAgICAgICAgICAgIGlmICggJGV4cGVjdGluZyA9PSBURVJNICk7CiAgICAgICAgfSwKICAgIH07CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgZW5kIGhhc2ggb2YgY29kZSBmb3IgaGFuZGxpbmcgaW5kaXZpZHVhbCB0b2tlbiB0eXBlcwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBteSAlbWF0Y2hpbmdfc3RhcnRfdG9rZW4gPSAoICd9JyA9PiAneycsICddJyA9PiAnWycsICcpJyA9PiAnKCcgKTsKCiAgICAjIFRoZXNlIGJsb2NrIHR5cGVzIHRlcm1pbmF0ZSBzdGF0ZW1lbnRzIGFuZCBkbyBub3QgbmVlZCBhIHRyYWlsaW5nCiAgICAjIHNlbWljb2xvbgogICAgIyBwYXRjaGVkIGZvciBTV0lUQ0gvQ0FTRS8KICAgIG15ICVpc196ZXJvX2NvbnRpbnVhdGlvbl9ibG9ja190eXBlOwogICAgQF8gPSBxdyggfSB7IEJFR0lOIEVORCBDSEVDSyBJTklUIEFVVE9MT0FEIERFU1RST1kgVU5JVENIRUNLIGNvbnRpbnVlIDsKICAgICAgaWYgZWxzaWYgZWxzZSB1bmxlc3Mgd2hpbGUgdW50aWwgZm9yIGZvcmVhY2ggc3dpdGNoIGNhc2UgZ2l2ZW4gd2hlbik7CiAgICBAaXNfemVyb19jb250aW51YXRpb25fYmxvY2tfdHlwZXtAX30gPSAoMSkgeCBzY2FsYXIoQF8pOwoKICAgIG15ICVpc19ub3RfemVyb19jb250aW51YXRpb25fYmxvY2tfdHlwZTsKICAgIEBfID0gcXcoc29ydCBncmVwIG1hcCBkbyBldmFsKTsKICAgIEBpc19ub3RfemVyb19jb250aW51YXRpb25fYmxvY2tfdHlwZXtAX30gPSAoMSkgeCBzY2FsYXIoQF8pOwoKICAgIG15ICVpc19sb2dpY2FsX2NvbnRhaW5lcjsKICAgIEBfID0gcXcoaWYgZWxzaWYgdW5sZXNzIHdoaWxlIGFuZCBvciBlcnIgbm90ICYmICEgIHx8IGZvciBmb3JlYWNoKTsKICAgIEBpc19sb2dpY2FsX2NvbnRhaW5lcntAX30gPSAoMSkgeCBzY2FsYXIoQF8pOwoKICAgIG15ICVpc19iaW5hcnlfdHlwZTsKICAgIEBfID0gcXcofHwgJiYpOwogICAgQGlzX2JpbmFyeV90eXBle0BffSA9ICgxKSB4IHNjYWxhcihAXyk7CgogICAgbXkgJWlzX2JpbmFyeV9rZXl3b3JkOwogICAgQF8gPSBxdyhhbmQgb3IgZXJyIGVxIG5lIGNtcCk7CiAgICBAaXNfYmluYXJ5X2tleXdvcmR7QF99ID0gKDEpIHggc2NhbGFyKEBfKTsKCiAgICAjICdMJyBpcyB0b2tlbiBmb3Igb3BlbmluZyB7IGF0IGhhc2gga2V5CiAgICBteSAlaXNfb3BlbmluZ190eXBlOwogICAgQF8gPSBxdzwgTCB7ICggWyA+OwogICAgQGlzX29wZW5pbmdfdHlwZXtAX30gPSAoMSkgeCBzY2FsYXIoQF8pOwoKICAgICMgJ1InIGlzIHRva2VuIGZvciBjbG9zaW5nIH0gYXQgaGFzaCBrZXkKICAgIG15ICVpc19jbG9zaW5nX3R5cGU7CiAgICBAXyA9IHF3PCBSIH0gKSBdID47CiAgICBAaXNfY2xvc2luZ190eXBle0BffSA9ICgxKSB4IHNjYWxhcihAXyk7CgogICAgbXkgJWlzX3JlZG9fbGFzdF9uZXh0X2dvdG87CiAgICBAXyA9IHF3KHJlZG8gbGFzdCBuZXh0IGdvdG8pOwogICAgQGlzX3JlZG9fbGFzdF9uZXh0X2dvdG97QF99ID0gKDEpIHggc2NhbGFyKEBfKTsKCiAgICBteSAlaXNfdXNlX3JlcXVpcmU7CiAgICBAXyA9IHF3KHVzZSByZXF1aXJlKTsKICAgIEBpc191c2VfcmVxdWlyZXtAX30gPSAoMSkgeCBzY2FsYXIoQF8pOwoKICAgICMgVGhpcyBoYXNoIGhvbGRzIHRoZSBoYXNoIGtleSBpbiAkdG9rZW5pemVyX3NlbGYgZm9yIHRoZXNlIGtleXdvcmRzOgogICAgbXkgJWlzX2Zvcm1hdF9FTkRfREFUQSA9ICgKICAgICAgICAnZm9ybWF0JyAgID0+ICdfaW5fZm9ybWF0JywKICAgICAgICAnX19FTkRfXycgID0+ICdfaW5fZW5kJywKICAgICAgICAnX19EQVRBX18nID0+ICdfaW5fZGF0YScsCiAgICApOwoKICAgICMgb3JpZ2luYWwgcmVmOiBjYW1lbCAzIHAgMTQ3LAogICAgIyBidXQgcGVybCBtYXkgYWNjZXB0IHVuZG9jdW1lbnRlZCBmbGFncwogICAgIyBwZXJsIDUuMTAgYWRkcyAncCcgKHByZXNlcnZlKQogICAgIyBQZXJsIHZlcnNpb24gNS4yMiBhZGRlZCAnbicKICAgICMgRnJvbSBodHRwOi8vcGVybGRvYy5wZXJsLm9yZy9wZXJsb3AuaHRtbCB3ZSBoYXZlCiAgICAjIC9QQVRURVJOL21zaXhwb2R1YWxuZ2Mgb3IgbT9QQVRURVJOP21zaXhwb2R1YWxuZ2MKICAgICMgcy9QQVRURVJOL1JFUExBQ0VNRU5UL21zaXhwb2R1YWxuZ2NlcgogICAgIyB5L1NFQVJDSExJU1QvUkVQTEFDRU1FTlRMSVNUL2Nkc3IKICAgICMgdHIvU0VBUkNITElTVC9SRVBMQUNFTUVOVExJU1QvY2RzcgogICAgIyBxci9TVFJJTkcvbXNpeHBvZHVhbG4KICAgIG15ICVxdW90ZV9tb2RpZmllcnMgPSAoCiAgICAgICAgJ3MnICA9PiAnW21zaXhwb2R1YWxuZ2Nlcl0nLAogICAgICAgICd5JyAgPT4gJ1tjZHNyXScsCiAgICAgICAgJ3RyJyA9PiAnW2Nkc3JdJywKICAgICAgICAnbScgID0+ICdbbXNpeHBvZHVhbG5nY10nLAogICAgICAgICdxcicgPT4gJ1ttc2l4cG9kdWFsbl0nLAogICAgICAgICdxJyAgPT4gIiIsCiAgICAgICAgJ3FxJyA9PiAiIiwKICAgICAgICAncXcnID0+ICIiLAogICAgICAgICdxeCcgPT4gIiIsCiAgICApOwoKICAgICMgdGFibGUgc2hvd2luZyBob3cgbWFueSBxdW90ZWQgdGhpbmdzIHRvIGxvb2sgZm9yIGFmdGVyIHF1b3RlIG9wZXJhdG9yLi4KICAgICMgcywgeSwgdHIgaGF2ZSAyIChwYXR0ZXJuIGFuZCByZXBsYWNlbWVudCkKICAgICMgb3RoZXJzIGhhdmUgMSAocGF0dGVybiBvbmx5KQogICAgbXkgJXF1b3RlX2l0ZW1zID0gKAogICAgICAgICdzJyAgPT4gMiwKICAgICAgICAneScgID0+IDIsCiAgICAgICAgJ3RyJyA9PiAyLAogICAgICAgICdtJyAgPT4gMSwKICAgICAgICAncXInID0+IDEsCiAgICAgICAgJ3EnICA9PiAxLAogICAgICAgICdxcScgPT4gMSwKICAgICAgICAncXcnID0+IDEsCiAgICAgICAgJ3F4JyA9PiAxLAogICAgKTsKCiAgICBzdWIgdG9rZW5pemVfdGhpc19saW5lIHsKCiAgIyBUaGlzIHJvdXRpbmUgYnJlYWtzIGEgbGluZSBvZiBwZXJsIGNvZGUgaW50byB0b2tlbnMgd2hpY2ggYXJlIG9mIHVzZSBpbgogICMgaW5kZW50YXRpb24gYW5kIHJlZm9ybWF0dGluZy4gIE9uZSBvZiBteSBnb2FscyBoYXMgYmVlbiB0byBkZWZpbmUgdG9rZW5zCiAgIyBzdWNoIHRoYXQgYSBuZXdsaW5lIG1heSBiZSBpbnNlcnRlZCBiZXR3ZWVuIGFueSBwYWlyIG9mIHRva2VucyB3aXRob3V0CiAgIyBjaGFuZ2luZyBvciBpbnZhbGlkYXRpbmcgdGhlIHByb2dyYW0uIFRoaXMgdmVyc2lvbiBjb21lcyBjbG9zZSB0byB0aGlzLAogICMgYWx0aG91Z2ggdGhlcmUgYXJlIG5lY2Vzc2FyaWx5IGEgZmV3IGV4Y2VwdGlvbnMgd2hpY2ggbXVzdCBiZSBjYXVnaHQgYnkKICAjIHRoZSBmb3JtYXR0ZXIuICBNYW55IG9mIHRoZXNlIGludm9sdmUgdGhlIHRyZWF0bWVudCBvZiBiYXJlIHdvcmRzLgogICMKICAjIFRoZSB0b2tlbnMgYW5kIHRoZWlyIHR5cGVzIGFyZSByZXR1cm5lZCBpbiBhcnJheXMuICBTZWUgcHJldmlvdXMKICAjIHJvdXRpbmUgZm9yIHRoZWlyIG5hbWVzLgogICMKICAjIFNlZSBhbHNvIHRoZSBhcnJheSAidmFsaWRfdG9rZW5fdHlwZXMiIGluIHRoZSBCRUdJTiBzZWN0aW9uIGZvciBhbgogICMgdXAtdG8tZGF0ZSBsaXN0LgogICMKICAjIFRvIHNpbXBsaWZ5IHRoaW5ncywgdG9rZW4gdHlwZXMgYXJlIGVpdGhlciBhIHNpbmdsZSBjaGFyYWN0ZXIsIG9yIHRoZXkKICAjIGFyZSBpZGVudGljYWwgdG8gdGhlIHRva2VucyB0aGVtc2VsdmVzLgogICMKICAjIEFzIGEgZGVidWdnaW5nIGFpZCwgdGhlIC1EIGZsYWcgY3JlYXRlcyBhIGZpbGUgY29udGFpbmluZyBhIHNpZGUtYnktc2lkZQogICMgY29tcGFyaXNvbiBvZiB0aGUgaW5wdXQgc3RyaW5nIGFuZCBpdHMgdG9rZW5pemF0aW9uIGZvciBlYWNoIGxpbmUgb2YgYSBmaWxlLgogICMgVGhpcyBpcyBhbiBpbnZhbHVhYmxlIGRlYnVnZ2luZyBhaWQuCiAgIwogICMgSW4gYWRkaXRpb24gdG8gdG9rZW5zLCBhbmQgc29tZSBhc3NvY2lhdGVkIHF1YW50aXRpZXMsIHRoZSB0b2tlbml6ZXIKICAjIGFsc28gcmV0dXJucyBmbGFncyBpbmRpY2F0aW9uIGFueSBzcGVjaWFsIGxpbmUgdHlwZXMuICBUaGVzZSBpbmNsdWRlCiAgIyBxdW90ZXMsIGhlcmVfZG9jcywgZm9ybWF0cy4KICAjCiAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICMKICAjIEhvdyB0byBhZGQgTkVXX1RPS0VOUzoKICAjCiAgIyBOZXcgdG9rZW4gdHlwZXMgd2lsbCB1bmRvdWJ0ZWRseSBiZSBuZWVkZWQgaW4gdGhlIGZ1dHVyZSBib3RoIHRvIGtlZXAgdXAKICAjIHdpdGggY2hhbmdlcyBpbiBwZXJsIGFuZCB0byBoZWxwIGFkYXB0IHRoZSB0b2tlbml6ZXIgdG8gb3RoZXIgYXBwbGljYXRpb25zLgogICMKICAjIEhlcmUgYXJlIHNvbWUgbm90ZXMgb24gdGhlIG1pbmltYWwgc3RlcHMuICBJIHdyb3RlIHRoZXNlIG5vdGVzIHdoaWxlCiAgIyBhZGRpbmcgdGhlICd2JyB0b2tlbiB0eXBlIGZvciB2LXN0cmluZ3MsIHdoaWNoIGFyZSB0aGluZ3MgbGlrZSB2ZXJzaW9uCiAgIyBudW1iZXJzIDUuNi4wLCBhbmQgaXAgYWRkcmVzc2VzLCBhbmQgd2lsbCB1c2UgdGhhdCBhcyBhbiBleGFtcGxlLiAgKCBZb3UKICAjIGNhbiB1c2UgeW91ciBlZGl0b3IgdG8gc2VhcmNoIGZvciB0aGUgc3RyaW5nICJORVdfVE9LRU5TIiB0byBmaW5kIHRoZQogICMgYXBwcm9wcmlhdGUgc2VjdGlvbnMgdG8gY2hhbmdlKToKICAjCiAgIyAqLiBUcnkgdG8gdGFsayBzb21lYm9keSBlbHNlIGludG8gZG9pbmcgaXQhICBJZiBub3QsIC4uCiAgIwogICMgKi4gTWFrZSBhIGJhY2t1cCBvZiB5b3VyIGN1cnJlbnQgdmVyc2lvbiBpbiBjYXNlIHRoaW5ncyBkb24ndCB3b3JrIG91dCEKICAjCiAgIyAqLiBUaGluayBvZiBhIG5ldywgdW51c2VkIGNoYXJhY3RlciBmb3IgdGhlIHRva2VuIHR5cGUsIGFuZCBhZGQgdG8KICAjIHRoZSBhcnJheSBAdmFsaWRfdG9rZW5fdHlwZXMgaW4gdGhlIEJFR0lOIHNlY3Rpb24gb2YgdGhpcyBwYWNrYWdlLgogICMgRm9yIGV4YW1wbGUsIEkgdXNlZCAndicgZm9yIHYtc3RyaW5ncy4KICAjCiAgIyAqLiBJbXBsZW1lbnQgY29kaW5nIHRvIHJlY29nbml6ZSB0aGUgJHR5cGUgb2YgdGhlIHRva2VuIGluIHRoaXMgcm91dGluZS4KICAjIFRoaXMgaXMgdGhlIGhhcmRlc3QgcGFydCwgYW5kIGlzIGJlc3QgZG9uZSBieSBpbWl0YXRpbmcgb3IgbW9kaWZ5aW5nCiAgIyBzb21lIG9mIHRoZSBleGlzdGluZyBjb2RpbmcuICBGb3IgZXhhbXBsZSwgdG8gcmVjb2duaXplIHYtc3RyaW5ncywgSQogICMgcGF0Y2hlZCAnc3ViIHNjYW5fYmFyZV9pZGVudGlmaWVyJyB0byByZWNvZ25pemUgdi1zdHJpbmdzIGJlZ2lubmluZyB3aXRoCiAgIyAndicgYW5kICdzdWIgc2Nhbl9udW1iZXInIHRvIHJlY29nbml6ZSB2LXN0cmluZ3Mgd2l0aG91dCB0aGUgbGVhZGluZyAndicuCiAgIwogICMgKi4gVXBkYXRlIHN1YiBvcGVyYXRvcl9leHBlY3RlZC4gIFRoaXMgdXBkYXRlIGlzIGNyaXRpY2FsbHkgaW1wb3J0YW50IGJ1dAogICMgdGhlIGNvZGluZyBpcyB0cml2aWFsLiAgTG9vayBhdCB0aGUgY29tbWVudHMgaW4gdGhhdCByb3V0aW5lIGZvciBoZWxwLgogICMgRm9yIHYtc3RyaW5ncywgd2hpY2ggc2hvdWxkIGJlaGF2ZSBsaWtlIG51bWJlcnMsIEkganVzdCBhZGRlZCAndicgdG8gdGhlCiAgIyByZWdleCB1c2VkIHRvIGhhbmRsZSBudW1iZXJzIGFuZCBzdHJpbmdzICh0eXBlcyAnbicgYW5kICdRJykuCiAgIwogICMgKi4gSW1wbGVtZW50IGEgJ2JvbmQgc3RyZW5ndGgnIHJ1bGUgaW4gc3ViIHNldF9ib25kX3N0cmVuZ3RocyBpbgogICMgUGVybDo6VGlkeTo6Rm9ybWF0dGVyIGZvciBicmVha2luZyBsaW5lcyBhcm91bmQgdGhpcyB0b2tlbiB0eXBlLiAgWW91IGNhbgogICMgc2tpcCB0aGlzIHN0ZXAgYW5kIHRha2UgdGhlIGRlZmF1bHQgYXQgZmlyc3QsIHRoZW4gYWRqdXN0IGxhdGVyIHRvIGdldAogICMgZGVzaXJlZCByZXN1bHRzLiAgRm9yIGFkZGluZyB0eXBlICd2JywgSSBsb29rZWQgYXQgc3ViIGJvbmRfc3RyZW5ndGggYW5kCiAgIyBzYXcgdGhhdCBudW1iZXIgdHlwZSAnbicgd2FzIHVzaW5nIGRlZmF1bHQgc3RyZW5ndGhzLCBzbyBJIGRpZG4ndCBkbwogICMgYW55dGhpbmcuICBJIG1heSB0dW5lIGl0IHVwIHNvbWVkYXkgaWYgSSBkb24ndCBsaWtlIHRoZSB3YXkgbGluZQogICMgYnJlYWtzIHdpdGggdi1zdHJpbmdzIGxvb2suCiAgIwogICMgKi4gSW1wbGVtZW50IGEgJ3doaXRlc3BhY2UnIHJ1bGUgaW4gc3ViIHNldF93aGl0ZXNwYWNlX2ZsYWdzIGluCiAgIyBQZXJsOjpUaWR5OjpGb3JtYXR0ZXIuICBGb3IgYWRkaW5nIHR5cGUgJ3YnLCBJIGxvb2tlZCBhdCB0aGlzIHJvdXRpbmUKICAjIGFuZCBzYXcgdGhhdCB0eXBlICduJyB1c2VkIHNwYWNlcyBvbiBib3RoIHNpZGVzLCBzbyBJIGp1c3QgYWRkZWQgJ3YnCiAgIyB0byB0aGUgYXJyYXkgQHNwYWNlc19ib3RoX3NpZGVzLgogICMKICAjICouIFVwZGF0ZSBIdG1sV3JpdGVyIHBhY2thZ2Ugc28gdGhhdCB1c2VycyBjYW4gY29sb3JpemUgdGhlIHRva2VuIGFzCiAgIyBkZXNpcmVkLiAgVGhpcyBpcyBxdWl0ZSBlYXN5OyBzZWUgY29tbWVudHMgaWRlbnRpZmllZCBieSAnTkVXX1RPS0VOUycgaW4KICAjIHRoYXQgcGFja2FnZS4gIEZvciB2LXN0cmluZ3MsIEkgaW5pdGlhbGx5IGNob3NlIHRvIHVzZSBhIGRlZmF1bHQgY29sb3IKICAjIGVxdWFsIHRvIHRoZSBkZWZhdWx0IGZvciBudW1iZXJzLCBidXQgaXQgbWlnaHQgYmUgbmljZSB0byBjaGFuZ2UgdGhhdAogICMgZXZlbnR1YWxseS4KICAjCiAgIyAqLiBVcGRhdGUgY29tbWVudHMgaW4gUGVybDo6VGlkeTo6VG9rZW5pemVyOjpkdW1wX3Rva2VuX3R5cGVzLgogICMKICAjICouIFJ1biBsb3RzIGFuZCBsb3RzIG9mIGRlYnVnIHRlc3RzLiAgU3RhcnQgd2l0aCBzcGVjaWFsIGZpbGVzIGRlc2lnbmVkCiAgIyB0byB0ZXN0IHRoZSBuZXcgdG9rZW4gdHlwZS4gIFJ1biB3aXRoIHRoZSAtRCBmbGFnIHRvIGNyZWF0ZSBhIC5ERUJVRwogICMgZmlsZSB3aGljaCBzaG93cyB0aGUgdG9rZW5pemF0aW9uLiAgV2hlbiB0aGVzZSB3b3JrIG9rLCB0ZXN0IGFzIG1hbnkgb2xkCiAgIyBzY3JpcHRzIGFzIHBvc3NpYmxlLiAgU3RhcnQgd2l0aCBhbGwgb2YgdGhlICcudCcgZmlsZXMgaW4gdGhlICd0ZXN0JwogICMgZGlyZWN0b3J5IG9mIHRoZSBkaXN0cmlidXRpb24gZmlsZS4gIENvbXBhcmUgLnRkeSBvdXRwdXQgd2l0aCBwcmV2aW91cwogICMgdmVyc2lvbiBhbmQgdXBkYXRlZCB2ZXJzaW9uIHRvIHNlZSB0aGUgZGlmZmVyZW5jZXMuICBUaGVuIGluY2x1ZGUgYXMKICAjIG1hbnkgbW9yZSBmaWxlcyBhcyBwb3NzaWJsZS4gTXkgb3duIHRlY2huaXF1ZSBoYXMgYmVlbiB0byBjb2xsZWN0IGEgaHVnZQogICMgbnVtYmVyIG9mIHBlcmwgc2NyaXB0cyAodGhvdXNhbmRzISkgaW50byBvbmUgZGlyZWN0b3J5IGFuZCBydW4gcGVybHRpZHkKICAjICosIHRoZW4gcnVuIGRpZmYgYmV0d2VlbiB0aGUgb3V0cHV0IG9mIHRoZSBwcmV2aW91cyB2ZXJzaW9uIGFuZCB0aGUKICAjIGN1cnJlbnQgdmVyc2lvbi4KICAjCiAgIyAqLiBGb3IgYW5vdGhlciBleGFtcGxlLCBzZWFyY2ggZm9yIHRoZSBzbWFydG1hdGNoIG9wZXJhdG9yICd+ficKICAjIHdpdGggeW91ciBlZGl0b3IgdG8gc2VlIHdoZXJlIHVwZGF0ZXMgd2VyZSBtYWRlIGZvciBpdC4KICAjCiAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgICBteSAkbGluZV9vZl90b2tlbnMgPSBzaGlmdDsKICAgICAgICBteSAoJHVudHJpbW1lZF9pbnB1dF9saW5lKSA9ICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3RleHR9OwoKICAgICAgICAjIHBhdGNoIHdoaWxlIGNvZGluZyBjaGFuZ2UgaXMgdW5kZXJ3YXkKICAgICAgICAjIG1ha2UgY2FsbGVycyBwcml2YXRlIGRhdGEgdG8gYWxsb3cgYWNjZXNzCiAgICAgICAgIyAkdG9rZW5pemVyX3NlbGYgPSAkY2FsbGVyX3Rva2VuaXplcl9zZWxmOwoKICAgICAgICAjIGV4dHJhY3QgbGluZSBudW1iZXIgZm9yIHVzZSBpbiBlcnJvciBtZXNzYWdlcwogICAgICAgICRpbnB1dF9saW5lX251bWJlciA9ICRsaW5lX29mX3Rva2Vucy0+e19saW5lX251bWJlcn07CgogICAgICAgICMgcmVpbml0aWFsaXplIGZvciBtdWx0aS1saW5lIHF1b3RlCiAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X3N0YXJ0aW5nX2luX3F1b3RlfSA9ICRpbl9xdW90ZSAmJiAkcXVvdGVfdHlwZSBlcSAnUSc7CgogICAgICAgICMgY2hlY2sgZm9yIHBvZCBkb2N1bWVudGF0aW9uCiAgICAgICAgaWYgKCAoICR1bnRyaW1tZWRfaW5wdXRfbGluZSA9fiAvXj1bQS1aYS16X10vICkgKSB7CgogICAgICAgICAgICAjIG11c3Qgbm90IGJlIGluIG11bHRpLWxpbmUgcXVvdGUKICAgICAgICAgICAgIyBhbmQgbXVzdCBub3QgYmUgaW4gYW4gZXF1YXRpb24KICAgICAgICAgICAgaWYgKCAhJGluX3F1b3RlICYmICggb3BlcmF0b3JfZXhwZWN0ZWQoICdiJywgJz0nLCAnYicgKSA9PSBURVJNICkgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPntfaW5fcG9kfSA9IDE7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRpbnB1dF9saW5lID0gJHVudHJpbW1lZF9pbnB1dF9saW5lOwoKICAgICAgICBjaG9tcCAkaW5wdXRfbGluZTsKCiAgICAgICAgIyB0cmltIHN0YXJ0IG9mIHRoaXMgbGluZSB1bmxlc3Mgd2UgYXJlIGNvbnRpbnVpbmcgYSBxdW90ZWQgbGluZQogICAgICAgICMgZG8gbm90IHRyaW0gZW5kIGJlY2F1c2Ugd2UgbWlnaHQgZW5kIGluIGEgcXVvdGUgKHRlc3Q6IGRla2VuNC5wbCkKICAgICAgICAjIFBlcmw6OlRpZHk6OkZvcm1hdHRlciB3aWxsIGRlbGV0ZSBuZWVkbGVzcyB0cmFpbGluZyBibGFua3MKICAgICAgICB1bmxlc3MgKCAkaW5fcXVvdGUgJiYgKCAkcXVvdGVfdHlwZSBlcSAnUScgKSApIHsKICAgICAgICAgICAgJGlucHV0X2xpbmUgPX4gcy9eXHMqLy87ICAgICMgdHJpbSBsZWZ0IGVuZAogICAgICAgIH0KCiAgICAgICAgIyBTZXQgYSBmbGFnIHRvIGluZGljYXRlIGlmIHdlIG1pZ2h0IGJlIGF0IGFuIF9fRU5EX18gb3IgX19EQVRBX18gbGluZQogICAgICAgICMgVGhpcyB3aWxsIGJlIHVzZWQgYmVsb3cgdG8gYXZvaWQgcXVvdGluZyBhIGJhcmUgd29yZCBmb2xsb3dlZCBieQogICAgICAgICMgYSBmYXQgY29tbWEuCiAgICAgICAgbXkgJGlzX0VORF9vcl9EQVRBID0gJGlucHV0X2xpbmUgPX4gL15ccypfXyhFTkR8REFUQSlfX1xzKiQvOwoKICAgICAgICAjIHVwZGF0ZSB0aGUgY29weSBvZiB0aGUgbGluZSBmb3IgdXNlIGluIGVycm9yIG1lc3NhZ2VzCiAgICAgICAgIyBUaGlzIG11c3QgYmUgZXhhY3RseSB3aGF0IHdlIGdpdmUgdGhlIHByZV90b2tlbml6ZXIKICAgICAgICAkdG9rZW5pemVyX3NlbGYtPntfbGluZV90ZXh0fSA9ICRpbnB1dF9saW5lOwoKICAgICAgICAjIHJlLWluaXRpYWxpemUgZm9yIHRoZSBtYWluIGxvb3AKICAgICAgICAkcm91dHB1dF90b2tlbl9saXN0ICAgICA9IFtdOyAgICAjIHN0YWNrIG9mIG91dHB1dCB0b2tlbiBpbmRleGVzCiAgICAgICAgJHJvdXRwdXRfdG9rZW5fdHlwZSAgICAgPSBbXTsgICAgIyB0b2tlbiB0eXBlcwogICAgICAgICRyb3V0cHV0X2Jsb2NrX3R5cGUgICAgID0gW107ICAgICMgdHlwZXMgb2YgY29kZSBibG9jawogICAgICAgICRyb3V0cHV0X2NvbnRhaW5lcl90eXBlID0gW107ICAgICMgcGFyZW4gdHlwZXMsIHN1Y2ggYXMgaWYsIGVsc2lmLCAuLgogICAgICAgICRyb3V0cHV0X3R5cGVfc2VxdWVuY2UgID0gW107ICAgICMgbmVzdGluZyBzZXF1ZW50aWFsIG51bWJlcgoKICAgICAgICAkcmhlcmVfdGFyZ2V0X2xpc3QgPSBbXTsKCiAgICAgICAgJHRvayAgICAgICAgICAgICA9ICRsYXN0X25vbmJsYW5rX3Rva2VuOwogICAgICAgICR0eXBlICAgICAgICAgICAgPSAkbGFzdF9ub25ibGFua190eXBlOwogICAgICAgICRwcm90b3R5cGUgICAgICAgPSAkbGFzdF9ub25ibGFua19wcm90b3R5cGU7CiAgICAgICAgJGxhc3Rfbm9uYmxhbmtfaSA9IC0xOwogICAgICAgICRibG9ja190eXBlICAgICAgPSAkbGFzdF9ub25ibGFua19ibG9ja190eXBlOwogICAgICAgICRjb250YWluZXJfdHlwZSAgPSAkbGFzdF9ub25ibGFua19jb250YWluZXJfdHlwZTsKICAgICAgICAkdHlwZV9zZXF1ZW5jZSAgID0gJGxhc3Rfbm9uYmxhbmtfdHlwZV9zZXF1ZW5jZTsKICAgICAgICAkaW5kZW50X2ZsYWcgICAgID0gMDsKICAgICAgICAkcGVla2VkX2FoZWFkICAgID0gMDsKCiAgICAgICAgIyB0b2tlbml6YXRpb24gaXMgZG9uZSBpbiB0d28gc3RhZ2VzLi4KICAgICAgICAjIHN0YWdlIDEgaXMgYSB2ZXJ5IHNpbXBsZSBwcmUtdG9rZW5pemF0aW9uCiAgICAgICAgbXkgJG1heF90b2tlbnNfd2FudGVkID0gMDsgIyB0aGlzIHNpZ25hbHMgcHJlX3Rva2VuaXplIHRvIGdldCBhbGwgdG9rZW5zCgogICAgICAgICMgYSBsaXR0bGUgb3B0aW1pemF0aW9uIGZvciBhIGZ1bGwtbGluZSBjb21tZW50CiAgICAgICAgaWYgKCAhJGluX3F1b3RlICYmICggJGlucHV0X2xpbmUgPX4gL14jLyApICkgewogICAgICAgICAgICAkbWF4X3Rva2Vuc193YW50ZWQgPSAxICAgICMgbm8gdXNlIHRva2VuaXppbmcgYSBjb21tZW50CiAgICAgICAgfQoKICAgICAgICAjIHN0YXJ0IGJ5IGJyZWFraW5nIHRoZSBsaW5lIGludG8gcHJlLXRva2VucwogICAgICAgICggJHJ0b2tlbnMsICRydG9rZW5fbWFwLCAkcnRva2VuX3R5cGUgKSA9CiAgICAgICAgICBwcmVfdG9rZW5pemUoICRpbnB1dF9saW5lLCAkbWF4X3Rva2Vuc193YW50ZWQgKTsKCiAgICAgICAgJG1heF90b2tlbl9pbmRleCA9IHNjYWxhciggQHskcnRva2Vuc30gKSAtIDE7CiAgICAgICAgcHVzaCggQHskcnRva2Vuc30sICcgJywgJyAnLCAnICcgKTsgICMgZXh0cmEgd2hpdGVzcGFjZSBzaW1wbGlmaWVzIGxvZ2ljCiAgICAgICAgcHVzaCggQHskcnRva2VuX21hcH0sICAwLCAgIDAsICAgMCApOyAgICAgIyBzaG91bGRuJ3QgYmUgcmVmZXJlbmNlZAogICAgICAgIHB1c2goIEB7JHJ0b2tlbl90eXBlfSwgJ2InLCAnYicsICdiJyApOwoKICAgICAgICAjIGluaXRpYWxpemUgZm9yIG1haW4gbG9vcAogICAgICAgIGZvcmVhY2ggbXkgJGlpICggMCAuLiAkbWF4X3Rva2VuX2luZGV4ICsgMyApIHsKICAgICAgICAgICAgJHJvdXRwdXRfdG9rZW5fdHlwZS0+WyRpaV0gICAgID0gIiI7CiAgICAgICAgICAgICRyb3V0cHV0X2Jsb2NrX3R5cGUtPlskaWldICAgICA9ICIiOwogICAgICAgICAgICAkcm91dHB1dF9jb250YWluZXJfdHlwZS0+WyRpaV0gPSAiIjsKICAgICAgICAgICAgJHJvdXRwdXRfdHlwZV9zZXF1ZW5jZS0+WyRpaV0gID0gIiI7CiAgICAgICAgICAgICRyb3V0cHV0X2luZGVudF9mbGFnLT5bJGlpXSAgICA9IDA7CiAgICAgICAgfQogICAgICAgICRpICAgICA9IC0xOwogICAgICAgICRpX3RvayA9IC0xOwoKICAgICAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgYmVnaW4gbWFpbiB0b2tlbml6YXRpb24gbG9vcAogICAgICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICAgICMgd2UgYXJlIGxvb2tpbmcgYXQgZWFjaCBwcmUtdG9rZW4gb2Ygb25lIGxpbmUgYW5kIGNvbWJpbmluZyB0aGVtCiAgICAgICAgIyBpbnRvIHRva2VucwogICAgICAgIHdoaWxlICggKyskaSA8PSAkbWF4X3Rva2VuX2luZGV4ICkgewoKICAgICAgICAgICAgaWYgKCRpbl9xdW90ZSkgeyAgICAjIGNvbnRpbnVlIGxvb2tpbmcgZm9yIGVuZCBvZiBhIHF1b3RlCiAgICAgICAgICAgICAgICAkdHlwZSA9ICRxdW90ZV90eXBlOwoKICAgICAgICAgICAgICAgIHVubGVzcyAoIEB7JHJvdXRwdXRfdG9rZW5fbGlzdH0gKQogICAgICAgICAgICAgICAgeyAgICAgICAgICAgICAgICMgaW5pdGlhbGl6ZSBpZiBjb250aW51YXRpb24gbGluZQogICAgICAgICAgICAgICAgICAgIHB1c2goIEB7JHJvdXRwdXRfdG9rZW5fbGlzdH0sICRpICk7CiAgICAgICAgICAgICAgICAgICAgJHJvdXRwdXRfdG9rZW5fdHlwZS0+WyRpXSA9ICR0eXBlOwoKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICR0b2sgPSAkcXVvdGVfY2hhcmFjdGVyIHVubGVzcyAoICRxdW90ZV9jaGFyYWN0ZXIgPX4gL15ccyokLyApOwoKICAgICAgICAgICAgICAgICMgc2NhbiBmb3IgdGhlIGVuZCBvZiB0aGUgcXVvdGUgb3IgcGF0dGVybgogICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICRpLCAkaW5fcXVvdGUsICRxdW90ZV9jaGFyYWN0ZXIsICRxdW90ZV9wb3MsICRxdW90ZV9kZXB0aCwKICAgICAgICAgICAgICAgICAgICAkcXVvdGVkX3N0cmluZ18xLCAkcXVvdGVkX3N0cmluZ18yCiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgPSBkb19xdW90ZSgKICAgICAgICAgICAgICAgICAgICAkaSwgICAgICAgICAgICAgICAkaW5fcXVvdGUsICAgICRxdW90ZV9jaGFyYWN0ZXIsCiAgICAgICAgICAgICAgICAgICAgJHF1b3RlX3BvcywgICAgICAgJHF1b3RlX2RlcHRoLCAkcXVvdGVkX3N0cmluZ18xLAogICAgICAgICAgICAgICAgICAgICRxdW90ZWRfc3RyaW5nXzIsICRydG9rZW5zLCAgICAgJHJ0b2tlbl9tYXAsCiAgICAgICAgICAgICAgICAgICAgJG1heF90b2tlbl9pbmRleAogICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYWxsIGRvbmUgaWYgd2UgZGlkbid0IGZpbmQgaXQKICAgICAgICAgICAgICAgIGxhc3QgaWYgKCRpbl9xdW90ZSk7CgogICAgICAgICAgICAgICAgIyBzYXZlIHBhdHRlcm4gYW5kIHJlcGxhY2VtZW50IHRleHQgZm9yIHJlc2Nhbm5pbmcKICAgICAgICAgICAgICAgIG15ICRxczEgPSAkcXVvdGVkX3N0cmluZ18xOwogICAgICAgICAgICAgICAgbXkgJHFzMiA9ICRxdW90ZWRfc3RyaW5nXzI7CgogICAgICAgICAgICAgICAgIyByZS1pbml0aWFsaXplIGZvciBuZXh0IHNlYXJjaAogICAgICAgICAgICAgICAgJHF1b3RlX2NoYXJhY3RlciA9ICcnOwogICAgICAgICAgICAgICAgJHF1b3RlX3BvcyAgICAgICA9IDA7CiAgICAgICAgICAgICAgICAkcXVvdGVfdHlwZSAgICAgID0gJ1EnOwogICAgICAgICAgICAgICAgJHF1b3RlZF9zdHJpbmdfMSA9ICIiOwogICAgICAgICAgICAgICAgJHF1b3RlZF9zdHJpbmdfMiA9ICIiOwogICAgICAgICAgICAgICAgbGFzdCBpZiAoICsrJGkgPiAkbWF4X3Rva2VuX2luZGV4ICk7CgogICAgICAgICAgICAgICAgIyBsb29rIGZvciBhbnkgbW9kaWZpZXJzCiAgICAgICAgICAgICAgICBpZiAoJGFsbG93ZWRfcXVvdGVfbW9kaWZpZXJzKSB7CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgZm9yIGV4YWN0IHF1b3RlIG1vZGlmaWVycwogICAgICAgICAgICAgICAgICAgIGlmICggJHJ0b2tlbnMtPlskaV0gPX4gL15bQS1aYS16X10vICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkc3RyID0gJHJ0b2tlbnMtPlskaV07CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRzYXdfbW9kaWZpZXJfZTsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCAkc3RyID1+IC9cRyRhbGxvd2VkX3F1b3RlX21vZGlmaWVycy9nYyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRwb3MgID0gcG9zKCRzdHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGNoYXIgPSBzdWJzdHIoICRzdHIsICRwb3MgLSAxLCAxICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2F3X21vZGlmaWVyX2UgfHw9ICggJGNoYXIgZXEgJ2UnICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgRm9yIGFuICdlJyBxdW90ZSBtb2RpZmllciB3ZSBtdXN0IHNjYW4gdGhlIHJlcGxhY2VtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICMgdGV4dCBmb3IgaGVyZS1kb2MgdGFyZ2V0cy4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzYXdfbW9kaWZpZXJfZSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRyaHQgPSBzY2FuX3JlcGxhY2VtZW50X3RleHQoJHFzMSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDaGFuZ2UgdHlwZSBmcm9tICdRJyB0byAnaCcgZm9yIHF1b3RlcyB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGhlcmUtZG9jIHRhcmdldHMgc28gdGhhdCB0aGUgZm9ybWF0dGVyIChzZWUgc3ViCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHByaW50X2xpbmVfb2ZfdG9rZW5zKSB3aWxsIG5vdCBtYWtlIGFueSBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJyZWFrcyBhZnRlciB0aGlzIHBvaW50LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRyaHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEB7JHJoZXJlX3RhcmdldF9saXN0fSwgQHskcmh0fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICdoJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRpX3RvayA8IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpbGFzdCA9ICRyb3V0cHV0X3Rva2VuX2xpc3QtPlstMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyb3V0cHV0X3Rva2VuX3R5cGUtPlskaWxhc3RdID0gJHR5cGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQoIHBvcygkc3RyKSApICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbWF0Y2hlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBwb3MoJHN0cikgPT0gbGVuZ3RoKCRzdHIpICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgaWYgKCArKyRpID4gJG1heF90b2tlbl9pbmRleCApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTG9va3MgbGlrZSBhIGpvaW5lZCBxdW90ZSBtb2RpZmllcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhbmQga2V5d29yZCwgbWF5YmUgc29tZXRoaW5nIGxpa2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcy94eHgveXl5L2dlZm9yIEBrPS4uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBFeGFtcGxlIGlzICJnYWxnZW4ucGwiLiAgV291bGQgaGF2ZSB0byBzcGxpdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgd29yZCBhbmQgaW5zZXJ0IGEgbmV3IHRva2VuIGluIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBwcmUtdG9rZW4gbGlzdC4gIFRoaXMgaXMgc28gcmFyZSB0aGF0IEkgaGF2ZW4ndAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkb25lIGl0LiAgV2lsbCBqdXN0IGlzc3VlIGEgd2FybmluZyBjaXRhdGlvbi4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgZXJyb3IgbWlnaHQgYWxzbyBiZSB0cmlnZ2VyZWQgaWYgbXkgcXVvdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbW9kaWZpZXIgY2hhcmFjdGVycyBhcmUgaW5jb21wbGV0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZyg8PEVPTSk7CgpQYXJ0aWFsIG1hdGNoIHRvIHF1b3RlIG1vZGlmaWVyICRhbGxvd2VkX3F1b3RlX21vZGlmaWVycyBhdCB3b3JkOiAnJHN0cicKUGxlYXNlIHB1dCBhIHNwYWNlIGJldHdlZW4gcXVvdGUgbW9kaWZpZXJzIGFuZCB0cmFpbGluZyBrZXl3b3Jkcy4KRU9NCgogICAgICAgICAgICAgICAgICAgICAgICAgIyBwcmludCAidG9rZW4gJHJ0b2tlbnMtPlskaV1cbiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAjIG15ICRudW0gPSBsZW5ndGgoJHN0cikgLSBwb3MoJHN0cik7CiAgICAgICAgICAgICAgICAgICAgICAgICAjICRydG9rZW5zLT5bJGldPXN1YnN0cigkcnRva2Vucy0+WyRpXSxwb3MoJHN0ciksJG51bSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAjIHByaW50ICJjb250aW51aW5nIHdpdGggbmV3IHRva2VuICRydG9rZW5zLT5bJGldXG4iOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNraXBwaW5nIHBhc3QgdGhpcyB0b2tlbiBkb2VzIGxlYXN0IGRhbWFnZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgaWYgKCArKyRpID4gJG1heF90b2tlbl9pbmRleCApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZXhhbXBsZSBmaWxlOiByb2tpY2tpNC5wbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGVycm9yIG1pZ2h0IGFsc28gYmUgdHJpZ2dlcmVkIGlmIG15IHF1b3RlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG1vZGlmaWVyIGNoYXJhY3RlcnMgYXJlIGluY29tcGxldGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoCiJOb3RlOiBmb3VuZCB3b3JkICRzdHIgYXQgcXVvdGUgbW9kaWZpZXIgbG9jYXRpb25cbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgcmUtaW5pdGlhbGl6ZQogICAgICAgICAgICAgICAgICAgICRhbGxvd2VkX3F1b3RlX21vZGlmaWVycyA9ICIiOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICB1bmxlc3MgKCAkdG9rID1+IC9eXHMqJC8gfHwgJHRvayBlcSAnQ09SRTo6JyApIHsKCiAgICAgICAgICAgICAgICAjIHRyeSB0byBjYXRjaCBzb21lIGNvbW1vbiBlcnJvcnMKICAgICAgICAgICAgICAgIGlmICggKCAkdHlwZSBlcSAnbicgKSAmJiAoICR0b2sgbmUgJzAnICkgKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICggJGxhc3Rfbm9uYmxhbmtfdG9rZW4gZXEgJ2VxJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxhaW4oIlNob3VsZCAnZXEnIGJlICc9PScgaGVyZSA/XG4iKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkbGFzdF9ub25ibGFua190b2tlbiBlcSAnbmUnICkgewogICAgICAgICAgICAgICAgICAgICAgICBjb21wbGFpbigiU2hvdWxkICduZScgYmUgJyE9JyBoZXJlID9cbiIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkbGFzdF9sYXN0X25vbmJsYW5rX3Rva2VuICAgICAgPSAkbGFzdF9ub25ibGFua190b2tlbjsKICAgICAgICAgICAgICAgICRsYXN0X2xhc3Rfbm9uYmxhbmtfdHlwZSAgICAgICA9ICRsYXN0X25vbmJsYW5rX3R5cGU7CiAgICAgICAgICAgICAgICAkbGFzdF9sYXN0X25vbmJsYW5rX2Jsb2NrX3R5cGUgPSAkbGFzdF9ub25ibGFua19ibG9ja190eXBlOwogICAgICAgICAgICAgICAgJGxhc3RfbGFzdF9ub25ibGFua19jb250YWluZXJfdHlwZSA9CiAgICAgICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX2NvbnRhaW5lcl90eXBlOwogICAgICAgICAgICAgICAgJGxhc3RfbGFzdF9ub25ibGFua190eXBlX3NlcXVlbmNlID0KICAgICAgICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfdHlwZV9zZXF1ZW5jZTsKICAgICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3Rva2VuICAgICAgICAgID0gJHRvazsKICAgICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3R5cGUgICAgICAgICAgID0gJHR5cGU7CiAgICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua19wcm90b3R5cGUgICAgICA9ICRwcm90b3R5cGU7CiAgICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua19ibG9ja190eXBlICAgICA9ICRibG9ja190eXBlOwogICAgICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfY29udGFpbmVyX3R5cGUgPSAkY29udGFpbmVyX3R5cGU7CiAgICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua190eXBlX3NlcXVlbmNlICA9ICR0eXBlX3NlcXVlbmNlOwogICAgICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfaSAgICAgICAgICAgICAgPSAkaV90b2s7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc3RvcmUgcHJldmlvdXMgdG9rZW4gdHlwZQogICAgICAgICAgICBpZiAoICRpX3RvayA+PSAwICkgewogICAgICAgICAgICAgICAgJHJvdXRwdXRfdG9rZW5fdHlwZS0+WyRpX3Rva10gICAgID0gJHR5cGU7CiAgICAgICAgICAgICAgICAkcm91dHB1dF9ibG9ja190eXBlLT5bJGlfdG9rXSAgICAgPSAkYmxvY2tfdHlwZTsKICAgICAgICAgICAgICAgICRyb3V0cHV0X2NvbnRhaW5lcl90eXBlLT5bJGlfdG9rXSA9ICRjb250YWluZXJfdHlwZTsKICAgICAgICAgICAgICAgICRyb3V0cHV0X3R5cGVfc2VxdWVuY2UtPlskaV90b2tdICA9ICR0eXBlX3NlcXVlbmNlOwogICAgICAgICAgICAgICAgJHJvdXRwdXRfaW5kZW50X2ZsYWctPlskaV90b2tdICAgID0gJGluZGVudF9mbGFnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG15ICRwcmVfdG9rICA9ICRydG9rZW5zLT5bJGldOyAgICAgICAgIyBnZXQgdGhlIG5leHQgcHJlLXRva2VuCiAgICAgICAgICAgIG15ICRwcmVfdHlwZSA9ICRydG9rZW5fdHlwZS0+WyRpXTsgICAgIyBhbmQgdHlwZQogICAgICAgICAgICAkdG9rICA9ICRwcmVfdG9rOwogICAgICAgICAgICAkdHlwZSA9ICRwcmVfdHlwZTsgICAgICAgICAgICAgICAgICAgICMgdG8gYmUgbW9kaWZpZWQgYXMgbmVjZXNzYXJ5CiAgICAgICAgICAgICRibG9ja190eXBlID0gIiI7ICAgICMgYmxhbmsgZm9yIGFsbCB0b2tlbnMgZXhjZXB0IGNvZGUgYmxvY2sgYnJhY2VzCiAgICAgICAgICAgICRjb250YWluZXJfdHlwZSA9ICIiOyAgICAjIGJsYW5rIGZvciBhbGwgdG9rZW5zIGV4Y2VwdCBzb21lIHBhcmVucwogICAgICAgICAgICAkdHlwZV9zZXF1ZW5jZSAgPSAiIjsgICAgIyBibGFuayBmb3IgYWxsIHRva2VucyBleGNlcHQgPy86CiAgICAgICAgICAgICRpbmRlbnRfZmxhZyAgICA9IDA7CiAgICAgICAgICAgICRwcm90b3R5cGUgPSAiIjsgICAgIyBibGFuayBmb3IgYWxsIHRva2VucyBleGNlcHQgdXNlciBkZWZpbmVkIHN1YnMKICAgICAgICAgICAgJGlfdG9rICAgICA9ICRpOwoKICAgICAgICAgICAgIyB0aGlzIHByZS10b2tlbiB3aWxsIHN0YXJ0IGFuIG91dHB1dCB0b2tlbgogICAgICAgICAgICBwdXNoKCBAeyRyb3V0cHV0X3Rva2VuX2xpc3R9LCAkaV90b2sgKTsKCiAgICAgICAgICAgICMgY29udGludWUgZ2F0aGVyaW5nIGlkZW50aWZpZXIgaWYgbmVjZXNzYXJ5CiAgICAgICAgICAgICMgYnV0IGRvIG5vdCBzdGFydCBvbiBibGFua3MgYW5kIGNvbW1lbnRzCiAgICAgICAgICAgIGlmICggJGlkX3NjYW5fc3RhdGUgJiYgJHByZV90eXBlICF+IC9bYiNdLyApIHsKCiAgICAgICAgICAgICAgICBpZiAoICRpc19zdWJ7JGlkX3NjYW5fc3RhdGV9IHx8ICRpc19wYWNrYWdleyRpZF9zY2FuX3N0YXRlfSApIHsKICAgICAgICAgICAgICAgICAgICBzY2FuX2lkKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBzY2FuX2lkZW50aWZpZXIoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBsYXN0IGlmICgkaWRfc2Nhbl9zdGF0ZSk7CiAgICAgICAgICAgICAgICBuZXh0IGlmICggKCAkaSA+IDAgKSB8fCAkdHlwZSApOwoKICAgICAgICAgICAgICAgICMgZGlkbid0IGZpbmQgYW55IHRva2VuOyBzdGFydCBvdmVyCiAgICAgICAgICAgICAgICAkdHlwZSA9ICRwcmVfdHlwZTsKICAgICAgICAgICAgICAgICR0b2sgID0gJHByZV90b2s7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaGFuZGxlIHdoaXRlc3BhY2UgdG9rZW5zLi4KICAgICAgICAgICAgbmV4dCBpZiAoICR0eXBlIGVxICdiJyApOwogICAgICAgICAgICBteSAkcHJldl90b2sgID0gJGkgPiAwID8gJHJ0b2tlbnMtPlsgJGkgLSAxIF0gICAgIDogJyAnOwogICAgICAgICAgICBteSAkcHJldl90eXBlID0gJGkgPiAwID8gJHJ0b2tlbl90eXBlLT5bICRpIC0gMSBdIDogJ2InOwoKICAgICAgICAgICAgIyBCdWlsZCBsYXJnZXIgdG9rZW5zIHdoZXJlIHBvc3NpYmxlLCBzaW5jZSB3ZSBhcmUgbm90IGluIGEgcXVvdGUuCiAgICAgICAgICAgICMKICAgICAgICAgICAgIyBGaXJzdCB0cnkgdG8gYXNzZW1ibGUgZGlncmFwaHMuICBUaGUgZm9sbG93aW5nIHRva2VucyBhcmUKICAgICAgICAgICAgIyBleGNsdWRlZCBhbmQgaGFuZGxlZCBzcGVjaWFsbHk6CiAgICAgICAgICAgICMgJy89JyBpcyBleGNsdWRlZCBiZWNhdXNlIHRoZSAvIG1pZ2h0IHN0YXJ0IGEgcGF0dGVybi4KICAgICAgICAgICAgIyAneD0nIGlzIGV4Y2x1ZGVkIHNpbmNlIGl0IG1pZ2h0IGJlICR4PSwgd2l0aCAkIG9uIHByZXZpb3VzIGxpbmUKICAgICAgICAgICAgIyAnKionIGFuZCAqPSBtaWdodCBiZSB0eXBlZ2xvYnMgb2YgcHVuY3R1YXRpb24gdmFyaWFibGVzCiAgICAgICAgICAgICMgSSBoYXZlIGFsbG93ZWQgdG9rZW5zIHN0YXJ0aW5nIHdpdGggPCwgc3VjaCBhcyA8PSwKICAgICAgICAgICAgIyBiZWNhdXNlIEkgZG9uJ3QgdGhpbmsgdGhlc2UgY291bGQgYmUgdmFsaWQgYW5nbGUgb3BlcmF0b3JzLgogICAgICAgICAgICAjIHRlc3QgZmlsZTogc3RvcnJzNC5wbAogICAgICAgICAgICBteSAkdGVzdF90b2sgICA9ICR0b2sgLiAkcnRva2Vucy0+WyAkaSArIDEgXTsKICAgICAgICAgICAgbXkgJGNvbWJpbmVfb2sgPSAkaXNfZGlncmFwaHskdGVzdF90b2t9OwoKICAgICAgICAgICAgIyBjaGVjayBmb3Igc3BlY2lhbCBjYXNlcyB3aGljaCBjYW5ub3QgYmUgY29tYmluZWQKICAgICAgICAgICAgaWYgKCRjb21iaW5lX29rKSB7CgogICAgICAgICAgICAgICAgIyAnLy8nIG11c3QgYmUgZGVmaW5lZF9vciBvcGVyYXRvciBpZiBhbiBvcGVyYXRvciBpcyBleHBlY3RlZC4KICAgICAgICAgICAgICAgICMgVE9ETzogQ29kZSBmb3Igb3RoZXIgYW1iaWd1b3VzIGRpZ3JhcGhzICgvPSwgeD0sICoqLCAqPSkKICAgICAgICAgICAgICAgICMgY291bGQgYmUgbWlncmF0ZWQgaGVyZSBmb3IgY2xhcml0eQoKICAgICAgICAgICAgICAjIFBhdGNoIGZvciBSVCMxMDIzNzEsIG1pc3BhcnNpbmcgYSAvLyBpbiB0aGUgZm9sbG93aW5nIHNuaXBwZXQ6CiAgICAgICAgICAgICAgIyAgICAgc3RhdGUgJGIgLy89IGNjYygpOwogICAgICAgICAgICAgICMgVGhlIHNvbHV0aW9uIGlzIHRvIGFsd2F5cyBhY2NlcHQgdGhlIGRpZ3JhcGggKG9yIHRyaWdyYXBoKSBhZnRlcgogICAgICAgICAgICAgICMgdG9rZW4gdHlwZSAnWicgKHBvc3NpYmxlIGZpbGUgaGFuZGxlKS4gIFRoZSByZWFzb24gaXMgdGhhdAogICAgICAgICAgICAgICMgc3ViIG9wZXJhdG9yX2V4cGVjdGVkIGdpdmVzIFRFUk0gZXhwZWN0ZWQgaGVyZSwgd2hpY2ggaXMKICAgICAgICAgICAgICAjIHdyb25nIGluIHRoaXMgY2FzZS4KICAgICAgICAgICAgICAgIGlmICggJHRlc3RfdG9rIGVxICcvLycgJiYgJGxhc3Rfbm9uYmxhbmtfdHlwZSBuZSAnWicgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJG5leHRfdHlwZSA9ICRydG9rZW5zLT5bICRpICsgMSBdOwogICAgICAgICAgICAgICAgICAgIG15ICRleHBlY3RpbmcgPQogICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3JfZXhwZWN0ZWQoICRwcmV2X3R5cGUsICR0b2ssICRuZXh0X3R5cGUgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBQYXRjaGVkIGZvciBSVCMxMDE1NDcsIHdhcyAndW5sZXNzICgkZXhwZWN0aW5nPT1PUEVSQVRPUiknCiAgICAgICAgICAgICAgICAgICAgJGNvbWJpbmVfb2sgPSAwIGlmICggJGV4cGVjdGluZyA9PSBURVJNICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBQYXRjaCBmb3IgUlQgIzExNDM1OTogTWlzc3BhcnNpbmcgb2YgInByaW50ICR4ICoqIDAuNTsKICAgICAgICAgICAgICAgICMgQWNjZXB0IHRoZSBkaWdyYXBocyAnKionIG9ubHkgYWZ0ZXIgdHlwZSAnWicKICAgICAgICAgICAgICAgICMgT3RoZXJ3aXNlIHBvc3Rwb25lIHRoZSBkZWNpc2lvbi4KICAgICAgICAgICAgICAgIGlmICggJHRlc3RfdG9rIGVxICcqKicgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkbGFzdF9ub25ibGFua190eXBlIG5lICdaJyApIHsgJGNvbWJpbmVfb2sgPSAwIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJGNvbWJpbmVfb2sKCiAgICAgICAgICAgICAgICAmJiAoICR0ZXN0X3RvayBuZSAnLz0nICkgICAgIyBtaWdodCBiZSBwYXR0ZXJuCiAgICAgICAgICAgICAgICAmJiAoICR0ZXN0X3RvayBuZSAneD0nICkgICAgIyBtaWdodCBiZSAkeAogICAgICAgICAgICAgICAgJiYgKCAkdGVzdF90b2sgbmUgJyo9JyApICAgICMgdHlwZWdsb2I/CgogICAgICAgICAgICAgICAgIyBNb3ZlZCBhYm92ZSBhcyBwYXJ0IG9mIGZpeCBmb3IKICAgICAgICAgICAgICAgICMgUlQgIzExNDM1OTogTWlzc3BhcnNpbmcgb2YgInByaW50ICR4ICoqIDAuNTsKICAgICAgICAgICAgICAgICMgJiYgKCAkdGVzdF90b2sgbmUgJyoqJyApICAgICMgdHlwZWdsb2I/CiAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkdG9rID0gJHRlc3RfdG9rOwogICAgICAgICAgICAgICAgJGkrKzsKCiAgICAgICAgICAgICAgICAjIE5vdyB0cnkgdG8gYXNzZW1ibGUgdHJpZ3JhcGhzLiAgTm90ZSB0aGF0IGFsbCBwb3NzaWJsZQogICAgICAgICAgICAgICAgIyBwZXJsIHRyaWdyYXBocyBjYW4gYmUgY29uc3RydWN0ZWQgYnkgYXBwZW5kaW5nIGEgY2hhcmFjdGVyCiAgICAgICAgICAgICAgICAjIHRvIGEgZGlncmFwaC4KICAgICAgICAgICAgICAgICR0ZXN0X3RvayA9ICR0b2sgLiAkcnRva2Vucy0+WyAkaSArIDEgXTsKCiAgICAgICAgICAgICAgICBpZiAoICRpc190cmlncmFwaHskdGVzdF90b2t9ICkgewogICAgICAgICAgICAgICAgICAgICR0b2sgPSAkdGVzdF90b2s7CiAgICAgICAgICAgICAgICAgICAgJGkrKzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIFRoZSBvbmx5IGN1cnJlbnQgdGV0cmFncmFwaCBpcyB0aGUgZG91YmxlIGRpYW1vbmQgb3BlcmF0b3IKICAgICAgICAgICAgICAgICMgYW5kIGl0cyBmaXJzdCB0aHJlZSBjaGFyYWN0ZXJzIGFyZSBub3QgYSB0cmlncmFwaCwgc28KICAgICAgICAgICAgICAgICMgd2UgZG8gY2FuIGRvIGEgc3BlY2lhbCB0ZXN0IGZvciBpdAogICAgICAgICAgICAgICAgZWxzaWYgKCAkdGVzdF90b2sgZXEgJzw8PicgKSB7CiAgICAgICAgICAgICAgICAgICAgJHRlc3RfdG9rIC49ICRydG9rZW5zLT5bICRpICsgMiBdOwogICAgICAgICAgICAgICAgICAgIGlmICggJGlzX3RldHJhZ3JhcGh7JHRlc3RfdG9rfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRvayA9ICR0ZXN0X3RvazsKICAgICAgICAgICAgICAgICAgICAgICAgJGkgKz0gMjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0eXBlICAgICAgPSAkdG9rOwogICAgICAgICAgICAkbmV4dF90b2sgID0gJHJ0b2tlbnMtPlsgJGkgKyAxIF07CiAgICAgICAgICAgICRuZXh0X3R5cGUgPSAkcnRva2VuX3R5cGUtPlsgJGkgKyAxIF07CgogICAgICAgICAgICBUT0tFTklaRVJfREVCVUdfRkxBR19UT0tFTklaRSAmJiBkbyB7CiAgICAgICAgICAgICAgICBsb2NhbCAkIiA9ICcpKCc7CiAgICAgICAgICAgICAgICBteSBAZGVidWdfbGlzdCA9ICgKICAgICAgICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua190b2tlbiwgICAgICAkdG9rLAogICAgICAgICAgICAgICAgICAgICRuZXh0X3RvaywgICAgICAgICAgICAgICAgICRicmFjZV9kZXB0aCwKICAgICAgICAgICAgICAgICAgICAkYnJhY2VfdHlwZVskYnJhY2VfZGVwdGhdLCAkcGFyZW5fZGVwdGgsCiAgICAgICAgICAgICAgICAgICAgJHBhcmVuX3R5cGVbJHBhcmVuX2RlcHRoXQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHByaW50IFNURE9VVCAiVE9LRU5JWkU6KEBkZWJ1Z19saXN0KVxuIjsKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICMgdHVybiBvZmYgYXR0cmlidXRlIGxpc3Qgb24gZmlyc3Qgbm9uLWJsYW5rLCBub24tYmFyZXdvcmQKICAgICAgICAgICAgaWYgKCAkcHJlX3R5cGUgbmUgJ3cnICkgeyAkaW5fYXR0cmlidXRlX2xpc3QgPSAwIH0KCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICAgICAjIFdlIGhhdmUgdGhlIG5leHQgdG9rZW4sICR0b2suCiAgICAgICAgICAgICMgTm93IHdlIGhhdmUgdG8gZXhhbWluZSB0aGlzIHRva2VuIGFuZCBkZWNpZGUgd2hhdCBpdCBpcwogICAgICAgICAgICAjIGFuZCBkZWZpbmUgaXRzICR0eXBlCiAgICAgICAgICAgICMKICAgICAgICAgICAgIyBzZWN0aW9uIDE6IGJhcmUgd29yZHMKICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgICAgICBpZiAoICRwcmVfdHlwZSBlcSAndycgKSB7CiAgICAgICAgICAgICAgICAkZXhwZWN0aW5nID0gb3BlcmF0b3JfZXhwZWN0ZWQoICRwcmV2X3R5cGUsICR0b2ssICRuZXh0X3R5cGUgKTsKICAgICAgICAgICAgICAgIG15ICggJG5leHRfbm9uYmxhbmtfdG9rZW4sICRpX25leHQgKSA9CiAgICAgICAgICAgICAgICAgIGZpbmRfbmV4dF9ub25ibGFua190b2tlbiggJGksICRydG9rZW5zLCAkbWF4X3Rva2VuX2luZGV4ICk7CgogICAgICAgICAgICAgICAgIyBBVFRSUzogaGFuZGxlIHN1YiBhbmQgdmFyaWFibGUgYXR0cmlidXRlcwogICAgICAgICAgICAgICAgaWYgKCRpbl9hdHRyaWJ1dGVfbGlzdCkgewoKICAgICAgICAgICAgICAgICAgICAjIHRyZWF0IGJhcmUgd29yZCBmb2xsb3dlZCBieSBvcGVuIHBhcmVuIGxpa2UgcXcoCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkbmV4dF9ub25ibGFua190b2tlbiBlcSAnKCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRpbl9xdW90ZSAgICAgICAgICAgICAgICA9ICRxdW90ZV9pdGVtc3sncSd9OwogICAgICAgICAgICAgICAgICAgICAgICAkYWxsb3dlZF9xdW90ZV9tb2RpZmllcnMgPSAkcXVvdGVfbW9kaWZpZXJzeydxJ307CiAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlICAgICAgICAgICAgICAgICAgICA9ICdxJzsKICAgICAgICAgICAgICAgICAgICAgICAgJHF1b3RlX3R5cGUgICAgICAgICAgICAgID0gJ3EnOwogICAgICAgICAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBoYW5kbGUgYmFyZXdvcmQgbm90IGZvbGxvd2VkIGJ5IG9wZW4gcGFyZW4KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAndyc7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgcXVvdGUgYSB3b3JkIGZvbGxvd2VkIGJ5ID0+IG9wZXJhdG9yCiAgICAgICAgICAgICAgICAjIHVubGVzcyB0aGUgd29yZCBfX0VORF9fIG9yIF9fREFUQV9fIGFuZCB0aGUgb25seSB3b3JkIG9uCiAgICAgICAgICAgICAgICAjIHRoZSBsaW5lLgogICAgICAgICAgICAgICAgaWYgKCAhJGlzX0VORF9vcl9EQVRBICYmICRuZXh0X25vbmJsYW5rX3Rva2VuIGVxICc9JyApIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkcnRva2Vucy0+WyAkaV9uZXh0ICsgMSBdIGVxICc+JyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkaXNfY29uc3RhbnR7JGN1cnJlbnRfcGFja2FnZX17JHRva30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICdDJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRpc191c2VyX2Z1bmN0aW9ueyRjdXJyZW50X3BhY2thZ2V9eyR0b2t9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAnVSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcHJvdG90eXBlID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHVzZXJfZnVuY3Rpb25fcHJvdG90eXBleyRjdXJyZW50X3BhY2thZ2V9eyR0b2t9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICggJHRvayA9fiAvXnZcZCskLyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ3YnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0X3Zfc3RyaW5nKCR0b2spOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeyAkdHlwZSA9ICd3JyB9CgogICAgICAgICAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgIyBxdW90ZSBhIGJhcmUgd29yZCB3aXRoaW4gYnJhY2VzLi5saWtlIHh4eC0+e3N9OyBub3RlIHRoYXQgd2UKICAgICAjIG11c3QgYmUgc3VyZSB0aGlzIGlzIG5vdCBhIHN0cnVjdHVyYWwgYnJhY2UsIHRvIGF2b2lkCiAgICAgIyBtaXN0YWtpbmcge3N9IGluIHRoZSBmb2xsb3dpbmcgZm9yIGEgcXVvdGVkIGJhcmUgd29yZDoKICAgICAjICAgICBmb3IoQFspe3N9YmxhfUJMQX0KICAgICAjIEFsc28gdHJlYXQgcSBpbiBzb21ldGhpbmcgbGlrZSB2YXJ7LXF9IGFzIGEgYmFyZSB3b3JkLCBub3QgcW91dGUgb3BlcmF0b3IKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkbmV4dF9ub25ibGFua190b2tlbiBlcSAnfScKICAgICAgICAgICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3R5cGUgZXEgJ0wnCiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICggICAkbGFzdF9ub25ibGFua190eXBlIGVxICdtJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGxhc3RfbGFzdF9ub25ibGFua190eXBlIGVxICdMJyApCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAndyc7CiAgICAgICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGEgYmFyZSB3b3JkIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5IDo6IGlzIG5vdCBhIGtleXdvcmQ7CiAgICAgICAgICAgICAgICAjIHVzZSAkdG9rX2t3IHdoZW4gdGVzdGluZyBmb3Iga2V5d29yZHMgdG8gYXZvaWQgYSBtaXN0YWtlCiAgICAgICAgICAgICAgICBteSAkdG9rX2t3ID0gJHRvazsKICAgICAgICAgICAgICAgIGlmICggICAkcnRva2Vucy0+WyAkaSArIDEgXSBlcSAnOicKICAgICAgICAgICAgICAgICAgICAmJiAkcnRva2Vucy0+WyAkaSArIDIgXSBlcSAnOicgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICR0b2tfa3cgLj0gJzo6JzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGhhbmRsZSBvcGVyYXRvciB4IChub3cgd2Uga25vdyBpdCBpc24ndCAkeD0pCiAgICAgICAgICAgICAgICBpZiAoICggJHRvayA9fiAvXnhcZCokLyApICYmICggJGV4cGVjdGluZyA9PSBPUEVSQVRPUiApICkgewogICAgICAgICAgICAgICAgICAgIGlmICggJHRvayBlcSAneCcgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRydG9rZW5zLT5bICRpICsgMSBdIGVxICc9JyApIHsgICAgIyB4PQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRvayAgPSAneD0nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAkdG9rOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGkrKzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ3gnOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBQYXRjaDogbWFyayBzb21ldGhpbmcgbGlrZSB4NCBhcyBhbiBpbnRlZ2VyIGZvciBub3cKICAgICAgICAgICAgICAgICAgICAjIEl0IGdldHMgZml4ZWQgZG93bnN0cmVhbS4gIFRoaXMgaXMgZWFzaWVyIHRoYW4KICAgICAgICAgICAgICAgICAgICAjIHNwbGl0dGluZyB0aGUgcHJldG9rZW4uCiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ24nOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJHRva19rdyBlcSAnQ09SRTo6JyApIHsKICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICR0b2sgPSAkdG9rX2t3OwogICAgICAgICAgICAgICAgICAgICRpICs9IDI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICggJHRvayBlcSAnc3RyaWN0JyApCiAgICAgICAgICAgICAgICAgICAgYW5kICggJGxhc3Rfbm9uYmxhbmtfdG9rZW4gZXEgJ3VzZScgKSApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJHRva2VuaXplcl9zZWxmLT57X3Nhd191c2Vfc3RyaWN0fSA9IDE7CiAgICAgICAgICAgICAgICAgICAgc2Nhbl9iYXJlX2lkZW50aWZpZXIoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBlbHNpZiAoICggJHRvayBlcSAnd2FybmluZ3MnICkKICAgICAgICAgICAgICAgICAgICBhbmQgKCAkbGFzdF9ub25ibGFua190b2tlbiBlcSAndXNlJyApICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPntfc2F3X3BlcmxfZGFzaF93fSA9IDE7CgogICAgICAgICAgICAgICAgICAgICMgc2NhbiBhcyBpZGVudGlmaWVyLCBzbyB0aGF0IHdlIHBpY2sgdXAgc29tZXRoaW5nIGxpa2U6CiAgICAgICAgICAgICAgICAgICAgIyB1c2Ugd2FybmluZ3M6OnJlZ2lzdGVyCiAgICAgICAgICAgICAgICAgICAgc2Nhbl9iYXJlX2lkZW50aWZpZXIoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBlbHNpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgJHRvayBlcSAnQXV0b0xvYWRlcicKICAgICAgICAgICAgICAgICAgICAmJiAkdG9rZW5pemVyX3NlbGYtPntfbG9va19mb3JfYXV0b2xvYWRlcn0KICAgICAgICAgICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3Rva2VuIGVxICd1c2UnCgogICAgICAgICAgICAgICAgICAgICAgICAjIHRoZXNlIHJlZ2V4ZXMgYXJlIGZyb20gQXV0b1NwbGl0LnBtLCB3aGljaCB3ZSB3YW50CiAgICAgICAgICAgICAgICAgICAgICAgICMgdG8gbWltaWMKICAgICAgICAgICAgICAgICAgICAgICAgfHwgJGlucHV0X2xpbmUgPX4gL15ccyoodXNlfHJlcXVpcmUpXHMrQXV0b0xvYWRlclxiLwogICAgICAgICAgICAgICAgICAgICAgICB8fCAkaW5wdXRfbGluZSA9fiAvXGJJU0Fccyo9LipcYkF1dG9Mb2FkZXJcYi8KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCJBdXRvTG9hZGVyIHNlZW4sIC1ubGFsIGRlYWN0aXZhdGVzXG4iKTsKICAgICAgICAgICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPntfc2F3X2F1dG9sb2FkZXJ9ICAgICAgPSAxOwogICAgICAgICAgICAgICAgICAgICR0b2tlbml6ZXJfc2VsZi0+e19sb29rX2Zvcl9hdXRvbG9hZGVyfSA9IDA7CiAgICAgICAgICAgICAgICAgICAgc2Nhbl9iYXJlX2lkZW50aWZpZXIoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBlbHNpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgJHRvayBlcSAnU2VsZkxvYWRlcicKICAgICAgICAgICAgICAgICAgICAmJiAkdG9rZW5pemVyX3NlbGYtPntfbG9va19mb3Jfc2VsZmxvYWRlcn0KICAgICAgICAgICAgICAgICAgICAmJiAoICAgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gZXEgJ3VzZScKICAgICAgICAgICAgICAgICAgICAgICAgfHwgJGlucHV0X2xpbmUgPX4gL15ccyoodXNlfHJlcXVpcmUpXHMrU2VsZkxvYWRlclxiLwogICAgICAgICAgICAgICAgICAgICAgICB8fCAkaW5wdXRfbGluZSA9fiAvXGJJU0Fccyo9LipcYlNlbGZMb2FkZXJcYi8gKQogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiU2VsZkxvYWRlciBzZWVuLCAtbmxzbCBkZWFjdGl2YXRlc1xuIik7CiAgICAgICAgICAgICAgICAgICAgJHRva2VuaXplcl9zZWxmLT57X3Nhd19zZWxmbG9hZGVyfSAgICAgID0gMTsKICAgICAgICAgICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPntfbG9va19mb3Jfc2VsZmxvYWRlcn0gPSAwOwogICAgICAgICAgICAgICAgICAgIHNjYW5fYmFyZV9pZGVudGlmaWVyKCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZWxzaWYgKCAoICR0b2sgZXEgJ2NvbnN0YW50JyApCiAgICAgICAgICAgICAgICAgICAgYW5kICggJGxhc3Rfbm9uYmxhbmtfdG9rZW4gZXEgJ3VzZScgKSApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgc2Nhbl9iYXJlX2lkZW50aWZpZXIoKTsKICAgICAgICAgICAgICAgICAgICBteSAoICRuZXh0X25vbmJsYW5rX3Rva2VuLCAkaV9uZXh0ICkgPQogICAgICAgICAgICAgICAgICAgICAgZmluZF9uZXh0X25vbmJsYW5rX3Rva2VuKCAkaSwgJHJ0b2tlbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICRtYXhfdG9rZW5faW5kZXggKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCRuZXh0X25vbmJsYW5rX3Rva2VuKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRpc19rZXl3b3JkeyRuZXh0X25vbmJsYW5rX3Rva2VufSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFzc3VtZSBxdyBpcyB1c2VkIGFzIGEgcXVvdGUgYW5kIG9rYXksIGFzIGluOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgdXNlIGNvbnN0YW50IHF3eyBERUJVRyAwIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdCB3b3J0aCB0cnlpbmcgdG8gcGFyc2UgZm9yIGp1c3QgYSB3YXJuaW5nCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOT1RFOiBUaGlzIHdhcm5pbmcgaXMgZGVhY3RpdmF0ZWQgYmVjYXVzZSByZWNlbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdmVyc2lvbnMgb2YgcGVybCBkbyBub3QgY29tcGxhaW4gaGVyZSwgYnV0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBjb2RpbmcgaXMgcmV0YWluZWQgZm9yIHJlZmVyZW5jZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggMCAmJiAkbmV4dF9ub25ibGFua190b2tlbiBuZSAncXcnICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcoCiJBdHRlbXB0aW5nIHRvIGRlZmluZSBjb25zdGFudCAnJG5leHRfbm9uYmxhbmtfdG9rZW4nIHdoaWNoIGlzIGEgcGVybCBrZXl3b3JkXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogY291bGQgY2hlY2sgZm9yIGVycm9yIGluIHdoaWNoIG5leHQgdG9rZW4gaXMKICAgICAgICAgICAgICAgICAgICAgICAgIyBub3QgYSB3b3JkIChudW1iZXIsIHB1bmN0dWF0aW9uLCAuLikKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXNfY29uc3RhbnR7JGN1cnJlbnRfcGFja2FnZX17JG5leHRfbm9uYmxhbmtfdG9rZW59CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHZhcmlvdXMgcXVvdGUgb3BlcmF0b3JzCiAgICAgICAgICAgICAgICBlbHNpZiAoICRpc19xX3FxX3F3X3F4X3FyX3NfeV90cl9teyR0b2t9ICkgewojI05JQ09MIFBBVENICiAgICAgICAgICAgICAgICAgICAgaWYgKCAkZXhwZWN0aW5nID09IE9QRVJBVE9SICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBCZSBjYXJlZnVsIG5vdCB0byBjYWxsIGFuIGVycm9yIGZvciBhIHF3IHF1b3RlCiAgICAgICAgICAgICAgICAgICAgICAgICMgd2hlcmUgYSBwYXJlbnRoZXNpemVkIGxpc3QgaXMgYWxsb3dlZC4gIEZvciBleGFtcGxlLAogICAgICAgICAgICAgICAgICAgICAgICAjIGl0IGNvdWxkIGFsc28gYmUgYSBmb3IvZm9yZWFjaCBjb25zdHJ1Y3Qgc3VjaCBhcwogICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICMgICAgZm9yZWFjaCBteSAka2V5IHF3XFVubyBEdWUgVHJlcyBRdWFkcm9cIHsKICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgcHJpbnQgIlNldCAka2V5XG4iOwogICAgICAgICAgICAgICAgICAgICAgICAjICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBPciBpdCBjb3VsZCBiZSBhIGZ1bmN0aW9uIGNhbGwuCiAgICAgICAgICAgICAgICAgICAgICAgICMgTk9URTogQnJhY2VzIGluIHNvbWV0aGluZyBsaWtlICZ7IHh4eCB9IGFyZSBub3QKICAgICAgICAgICAgICAgICAgICAgICAgIyBtYXJrZWQgYXMgYSBibG9jaywgd2UgbWlnaHQgaGF2ZSBhIG1ldGhvZCBjYWxsLgogICAgICAgICAgICAgICAgICAgICAgICAjICZtZXRob2QoLi4uKSwgJG1ldGhvZC0+KC4uKSwgJnttZXRob2R9KC4uLiksCiAgICAgICAgICAgICAgICAgICAgICAgICMgJHJlZlsyXShsaXN0KSBpcyBvayAmIHNob3J0IGZvciAkcmVmWzJdLT4obGlzdCkKICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICAgICAjIFNlZSBub3RlcyBpbiAnc3ViIGNvZGVfYmxvY2tfdHlwZScgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICMgJ3N1YiBpc19ub25fc3RydWN0dXJhbF9icmFjZScKCiAgICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdG9rIGVxICdxdycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICggICAkbGFzdF9ub25ibGFua190b2tlbiA9fiAvXihbXF1cfVwmXXxcLVw+KS8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkaXNfZm9yX2ZvcmVhY2h7JHdhbnRfcGFyZW59ICkKICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2lmX2V4cGVjdGluZ19PUEVSQVRPUigpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRpbl9xdW90ZSAgICAgICAgICAgICAgICA9ICRxdW90ZV9pdGVtc3skdG9rfTsKICAgICAgICAgICAgICAgICAgICAkYWxsb3dlZF9xdW90ZV9tb2RpZmllcnMgPSAkcXVvdGVfbW9kaWZpZXJzeyR0b2t9OwoKICAgICAgICAgICAgICAgICAgICMgQWxsIHF1b3RlIHR5cGVzIGFyZSAnUScgZXhjZXB0IHBvc3NpYmx5IHF3IHF1b3Rlcy4KICAgICAgICAgICAgICAgICAgICMgcXcgcXVvdGVzIGFyZSBzcGVjaWFsIGluIHRoYXQgdGhleSBtYXkgZ2VuZXJhbGx5IGJlIHRyaW1tZWQKICAgICAgICAgICAgICAgICAgICMgb2YgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4gIFNvIHRoZXkgYXJlIGdpdmVuIGEKICAgICAgICAgICAgICAgICAgICMgc2VwYXJhdGUgdHlwZSwgJ3EnLCB1bmxlc3MgcmVxdWVzdGVkIG90aGVyd2lzZS4KICAgICAgICAgICAgICAgICAgICAkdHlwZSA9CiAgICAgICAgICAgICAgICAgICAgICAoICR0b2sgZXEgJ3F3JyAmJiAkdG9rZW5pemVyX3NlbGYtPntfdHJpbV9xd30gKQogICAgICAgICAgICAgICAgICAgICAgPyAncScKICAgICAgICAgICAgICAgICAgICAgIDogJ1EnOwogICAgICAgICAgICAgICAgICAgICRxdW90ZV90eXBlID0gJHR5cGU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBjaGVjayBmb3IgYSBzdGF0ZW1lbnQgbGFiZWwKICAgICAgICAgICAgICAgIGVsc2lmICgKICAgICAgICAgICAgICAgICAgICAgICAoICRuZXh0X25vbmJsYW5rX3Rva2VuIGVxICc6JyApCiAgICAgICAgICAgICAgICAgICAgJiYgKCAkcnRva2Vucy0+WyAkaV9uZXh0ICsgMSBdIG5lICc6JyApCiAgICAgICAgICAgICAgICAgICAgJiYgKCAkaV9uZXh0IDw9ICRtYXhfdG9rZW5faW5kZXggKSAgICAjIGNvbG9uIG9uIHNhbWUgbGluZQogICAgICAgICAgICAgICAgICAgICYmIGxhYmVsX29rKCkKICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGlmICggJHRvayAhfiAvW0EtWl0vICkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEB7ICR0b2tlbml6ZXJfc2VsZi0+e19ybG93ZXJfY2FzZV9sYWJlbHNfYXR9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgJGlucHV0X2xpbmVfbnVtYmVyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICdKJzsKICAgICAgICAgICAgICAgICAgICAkdG9rIC49ICc6JzsKICAgICAgICAgICAgICAgICAgICAkaSA9ICRpX25leHQ7CiAgICAgICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjICAgICAgJ3N1YicgfHwgJ3BhY2thZ2UnCiAgICAgICAgICAgICAgICBlbHNpZiAoICRpc19zdWJ7JHRva19rd30gfHwgJGlzX3BhY2thZ2V7JHRva19rd30gKSB7CiAgICAgICAgICAgICAgICAgICAgZXJyb3JfaWZfZXhwZWN0aW5nX09QRVJBVE9SKCkKICAgICAgICAgICAgICAgICAgICAgIGlmICggJGV4cGVjdGluZyA9PSBPUEVSQVRPUiApOwogICAgICAgICAgICAgICAgICAgIHNjYW5faWQoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIE5vdGUgb24gdG9rZW4gdHlwZXMgZm9yIGZvcm1hdCwgX19EQVRBX18sIF9fRU5EX186CiAgICAgICAgICAgICAgICAjIEl0IHNpbXBsaWZpZXMgdGhpbmdzIHRvIGdpdmUgdGhlc2UgdHlwZSAnOycsIHNvIHRoYXQgd2hlbiB3ZQogICAgICAgICAgICAgICAgIyBzdGFydCByZXNjYW5uaW5nIHdlIHdpbGwgYmUgZXhwZWN0aW5nIGEgdG9rZW4gb2YgdHlwZSBURVJNLgogICAgICAgICAgICAgICAgIyBXZSB3aWxsIHN3aXRjaCB0byB0eXBlICdrJyBiZWZvcmUgb3V0cHV0dGluZyB0aGUgdG9rZW5zLgogICAgICAgICAgICAgICAgZWxzaWYgKCAkaXNfZm9ybWF0X0VORF9EQVRBeyR0b2tfa3d9ICkgewogICAgICAgICAgICAgICAgICAgICR0eXBlID0gJzsnOyAgICAjIG1ha2UgdG9rZW5pemVyIGxvb2sgZm9yIFRFUk0gbmV4dAogICAgICAgICAgICAgICAgICAgICR0b2tlbml6ZXJfc2VsZi0+eyAkaXNfZm9ybWF0X0VORF9EQVRBeyR0b2tfa3d9IH0gPSAxOwogICAgICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZWxzaWYgKCAkaXNfa2V5d29yZHskdG9rX2t3fSApIHsKICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICdrJzsKCiAgICAgICAgICAgICAgICAgICAgIyBTaW5jZSBmb3IgYW5kIGZvcmVhY2ggbWF5IG5vdCBiZSBmb2xsb3dlZCBpbW1lZGlhdGVseQogICAgICAgICAgICAgICAgICAgICMgYnkgYW4gb3BlbmluZyBwYXJlbiwgd2UgaGF2ZSB0byByZW1lbWJlciB3aGljaCBrZXl3b3JkCiAgICAgICAgICAgICAgICAgICAgIyBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIG5leHQgJygnCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkaXNfZm9yX2ZvcmVhY2h7JHRva30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbmV3X3N0YXRlbWVudF9vaygpICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdhbnRfcGFyZW4gPSAkdG9rOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIHJlY29nbml6ZSAndXNlJyBzdGF0ZW1lbnRzLCB3aGljaCBhcmUgc3BlY2lhbAogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJGlzX3VzZV9yZXF1aXJleyR0b2t9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkc3RhdGVtZW50X3R5cGUgPSAkdG9rOwogICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9pZl9leHBlY3RpbmdfT1BFUkFUT1IoKQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJGV4cGVjdGluZyA9PSBPUEVSQVRPUiApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyByZW1lbWJlciBteSBhbmQgb3VyIHRvIGNoZWNrIGZvciB0cmFpbGluZyAiOiBzaGFyZWQiCiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkaXNfbXlfb3VyeyR0b2t9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkc3RhdGVtZW50X3R5cGUgPSAkdG9rOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBDaGVjayBmb3IgbWlzcGxhY2VkICdlbHNpZicgYW5kICdlbHNlJywgYnV0IGFsbG93IGlzb2xhdGVkCiAgICAgICAgICAgICAgICAgICAgIyBlbHNlIG9yIGVsc2lmIGJsb2NrcyB0byBiZSBmb3JtYXR0ZWQuICBUaGlzIGlzIGluZGljYXRlZAogICAgICAgICAgICAgICAgICAgICMgYnkgYSBsYXN0IG5vYmxhbmsgdG9rZW4gb2YgJzsnCiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkdG9rIGVxICdlbHNpZicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggICAkbGFzdF9ub25ibGFua190b2tlbiBuZSAnOycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICRsYXN0X25vbmJsYW5rX2Jsb2NrX3R5cGUgIX4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9eKGlmfGVsc2lmfHVubGVzcykkLyApCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcoCiJleHBlY3RpbmcgJyR0b2snIHRvIGZvbGxvdyBvbmUgb2YgJ2lmfGVsc2lmfHVubGVzcydcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkdG9rIGVxICdlbHNlJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgcGF0Y2hlZCBmb3IgU1dJVENIL0NBU0UKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gbmUgJzsnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkbGFzdF9ub25ibGFua19ibG9ja190eXBlICF+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvXihpZnxlbHNpZnx1bmxlc3N8Y2FzZXx3aGVuKSQvCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBwYXRjaCB0byBhdm9pZCBhbiB1bndhbnRlZCBlcnJvciBtZXNzYWdlIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgY2FzZSBvZiBhIHBhcmVubGVzcyAnY2FzZScgKFJUIDEwNTQ4NCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHN3aXRjaCAoIDEgKSB7IGNhc2UgeCB7IDIgfSBlbHNlIHsgfSB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkc3RhdGVtZW50X3R5cGUgIX4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9eKGlmfGVsc2lmfHVubGVzc3xjYXNlfHdoZW4pJC8KICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcoCiJleHBlY3RpbmcgJyR0b2snIHRvIGZvbGxvdyBvbmUgb2YgJ2lmfGVsc2lmfHVubGVzc3xjYXNlfHdoZW4nXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJHRvayBlcSAnY29udGludWUnICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICAgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gbmUgJzsnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkbGFzdF9ub25ibGFua19ibG9ja190eXBlICF+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKF4oXHt8XH18O3x3aGlsZXx1bnRpbHxmb3J8Zm9yZWFjaCl8OiQpLyApCiAgICAgICAgICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vdGU6ICc7JyAneycgYW5kICd9JyBpbiBsaXN0IGFib3ZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJlY2F1c2UgY29udGludWVzIGNhbiBmb2xsb3cgYmFyZSBibG9ja3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICc6JyBpcyBsYWJlbGVkIGJsb2NrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOT1RFOiBUaGlzIGNoZWNrIGhhcyBiZWVuIGRlYWN0aXZhdGVkIGJlY2F1c2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY29udGludWUgaGFzIGFuIGFsdGVybmF0aXZlIHVzYWdlIGZvciBnaXZlbi93aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJsb2NrcyBpbiBwZXJsIDUuMTAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIHdhcm5pbmcoIickdG9rJyBzaG91bGQgZm9sbG93IGEgYmxvY2tcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBwYXRjaCBmb3IgU1dJVENIL0NBU0UgaWYgJ2Nhc2UnIGFuZCAnd2hlbiBhcmUKICAgICAgICAgICAgICAgICAgICAjIHRyZWF0ZWQgYXMga2V5d29yZHMuCiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkdG9rIGVxICd3aGVuJyB8fCAkdG9rIGVxICdjYXNlJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXRlbWVudF90eXBlID0gJHRvazsgICAgIyBuZXh0ICd7JyBpcyBibG9jawogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgaW5kZW50IHRyYWlsaW5nIGlmL3VubGVzcy93aGlsZS91bnRpbAogICAgICAgICAgICAgICAgICAgICMgb3V0ZGVudGluZyB3aWxsIGJlIGhhbmRsZWQgYnkgbGF0ZXIgaW5kZW50YXRpb24gbG9vcAojIyBERUFDVElWQVRFRDogdW5mb3J0dW5hdGVseSB0aGlzIGNhbiBjYXVzZSBzb21lIHVud2FudGVkIGluZGVudGF0aW9uIGxpa2U6CiMjJG9wdF9vID0gMQojIyAgaWYgISgKIyMgICAgICAgICAgICAgJG9wdF9iCiMjICAgICAgICAgIHx8ICRvcHRfYwojIyAgICAgICAgICB8fCAkb3B0X2QKIyMgICAgICAgICAgfHwgJG9wdF9mCiMjICAgICAgICAgIHx8ICRvcHRfaQojIyAgICAgICAgICB8fCAkb3B0X2wKIyMgICAgICAgICAgfHwgJG9wdF9vCiMjICAgICAgICAgIHx8ICRvcHRfeAojIyAgKTsKIyMgICAgICAgICAgICAgICAgICAgIGlmICggICAkdG9rID1+IC9eKGlmfHVubGVzc3x3aGlsZXx1bnRpbCkkLwojIyAgICAgICAgICAgICAgICAgICAgICAgICYmICRuZXh0X25vbmJsYW5rX3Rva2VuIG5lICcoJyApCiMjICAgICAgICAgICAgICAgICAgICB7CiMjICAgICAgICAgICAgICAgICAgICAgICAgJGluZGVudF9mbGFnID0gMTsKIyMgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGNoZWNrIGZvciBpbmxpbmUgbGFiZWwgZm9sbG93aW5nCiAgICAgICAgICAgICAgICAjICAgICAgICAgL14ocmVkb3xsYXN0fG5leHR8Z290bykkLwogICAgICAgICAgICAgICAgZWxzaWYgKCggJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAnaycgKQogICAgICAgICAgICAgICAgICAgICYmICggJGlzX3JlZG9fbGFzdF9uZXh0X2dvdG97JGxhc3Rfbm9uYmxhbmtfdG9rZW59ICkgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ2onOwogICAgICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBzb21ldGhpbmcgZWxzZSAtLQogICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgIHNjYW5fYmFyZV9pZGVudGlmaWVyKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkdHlwZSBlcSAndycgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRleHBlY3RpbmcgPT0gT1BFUkFUT1IgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkb24ndCBjb21wbGFpbiBhYm91dCBwb3NzaWJsZSBpbmRpcmVjdCBvYmplY3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm90YXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZvciBleGFtcGxlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIHBhY2thZ2UgbWFpbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBzdWIgbmV3KCQpIHsgLi4uIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAkYiA9IG5ldyBBOjo7ICAjIGNhbGxzIEE6Om5ldwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICRjID0gbmV3IEE7ICAgICMgc2FtZSB0aGluZyBidXQgc3VzcGljaW91cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIHdpbGwgY2FsbCBBOjpuZXcgYnV0IHdlIGhhdmUgYSAnbmV3JyBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtYWluOjogd2hpY2ggbG9va3MgbGlrZSBhIGNvbnN0YW50LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkbGFzdF9ub25ibGFua190eXBlIGVxICdDJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICR0b2sgIX4gLzo6JC8gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsYWluKDw8RU9NKTsKRXhwZWN0aW5nIG9wZXJhdG9yIGFmdGVyICckbGFzdF9ub25ibGFua190b2tlbicgYnV0IGZvdW5kIGJhcmUgd29yZCAnJHRvaycKICAgICAgIE1heWJlIGluZGlyZWN0ZXQgb2JqZWN0IG5vdGF0aW9uPwpFT00KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9pZl9leHBlY3RpbmdfT1BFUkFUT1IoImJhcmV3b3JkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgbWFyayBiYXJlIHdvcmRzIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5IGEgcGFyZW4gYXMKICAgICAgICAgICAgICAgICAgICAgICAgIyBmdW5jdGlvbnMKICAgICAgICAgICAgICAgICAgICAgICAgJG5leHRfdG9rID0gJHJ0b2tlbnMtPlsgJGkgKyAxIF07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJG5leHRfdG9rIGVxICcoJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ1UnOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIHVuZGVyc2NvcmUgYWZ0ZXIgZmlsZSB0ZXN0IG9wZXJhdG9yIGlzIGZpbGUgaGFuZGxlCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJHRvayBlcSAnXycgJiYgJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAnRicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICdaJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgIyBwYXRjaCBmb3IgU1dJVENIL0NBU0UgaWYgJ2Nhc2UnIGFuZCAnd2hlbiBhcmUKICAgICAgICAgICAgICAgICAgICAgICAgIyBub3QgdHJlYXRlZCBhcyBrZXl3b3JkczoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0b2sgZXEgJ2Nhc2UnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGJyYWNlX3R5cGVbJGJyYWNlX2RlcHRoXSBlcSAnc3dpdGNoJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKCAgICR0b2sgZXEgJ3doZW4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGJyYWNlX3R5cGVbJGJyYWNlX2RlcHRoXSBlcSAnZ2l2ZW4nICkKICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdGF0ZW1lbnRfdHlwZSA9ICR0b2s7ICAgICMgbmV4dCAneycgaXMgYmxvY2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ2snOyAgICAjIGZvciBrZXl3b3JkIHN5bnRheCBjb2xvcmluZwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIHBhdGNoIGZvciBTV0lUQ0gvQ0FTRSBpZiBzd2l0Y2ggYW5kIGdpdmVuIG5vdCBrZXl3b3JkcwogICAgICAgICAgICAgICAgICAgICAgICAjIFN3aXRjaCBpcyBub3QgYSBwZXJsIDUga2V5d29yZCwgYnV0IHdlIHdpbGwgZ2FtYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICMgYW5kIG1hcmsgc3dpdGNoIGZvbGxvd2VkIGJ5IHBhcmVuIGFzIGEga2V5d29yZC4gIFRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgIyBpcyBvbmx5IG5lY2Vzc2FyeSB0byBnZXQgaHRtbCBzeW50YXggY29sb3JpbmcgbmljZSwKICAgICAgICAgICAgICAgICAgICAgICAgIyBhbmQgZG9lcyBub3QgY29tbWl0IHRoaXMgYXMgYmVpbmcgYSBzd2l0Y2gvY2FzZS4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkbmV4dF9ub25ibGFua190b2tlbiBlcSAnKCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICggJHRvayBlcSAnc3dpdGNoJyB8fCAkdG9rIGVxICdnaXZlbicgKSApCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ2snOyAgICAjIGZvciBrZXl3b3JkIHN5bnRheCBjb2xvcmluZwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAgICAgIyBzZWN0aW9uIDI6IHN0cmluZ3Mgb2YgZGlnaXRzCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICAgICBlbHNpZiAoICRwcmVfdHlwZSBlcSAnZCcgKSB7CiAgICAgICAgICAgICAgICAkZXhwZWN0aW5nID0gb3BlcmF0b3JfZXhwZWN0ZWQoICRwcmV2X3R5cGUsICR0b2ssICRuZXh0X3R5cGUgKTsKICAgICAgICAgICAgICAgIGVycm9yX2lmX2V4cGVjdGluZ19PUEVSQVRPUigiTnVtYmVyIikKICAgICAgICAgICAgICAgICAgaWYgKCAkZXhwZWN0aW5nID09IE9QRVJBVE9SICk7CiAgICAgICAgICAgICAgICBteSAkbnVtYmVyID0gc2Nhbl9udW1iZXIoKTsKICAgICAgICAgICAgICAgIGlmICggIWRlZmluZWQoJG51bWJlcikgKSB7CgogICAgICAgICAgICAgICAgICAgICMgc2hvdWxkbid0IGhhcHBlbiAtIHdlIHNob3VsZCBhbHdheXMgZ2V0IGEgbnVtYmVyCiAgICAgICAgICAgICAgICAgICAgd2FybmluZygibm9uLW51bWJlciBiZWdpbm5pbmcgd2l0aCBkaWdpdC0tcHJvZ3JhbSBidWdcbiIpOwogICAgICAgICAgICAgICAgICAgIHJlcG9ydF9kZWZpbml0ZV9idWcoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgICAgICMgc2VjdGlvbiAzOiBhbGwgb3RoZXIgdG9rZW5zCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBsYXN0IGlmICggJHRvayBlcSAnIycgKTsKICAgICAgICAgICAgICAgIG15ICRjb2RlID0gJHRva2VuaXphdGlvbl9jb2RlLT57JHRva307CiAgICAgICAgICAgICAgICBpZiAoJGNvZGUpIHsKICAgICAgICAgICAgICAgICAgICAkZXhwZWN0aW5nID0KICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yX2V4cGVjdGVkKCAkcHJldl90eXBlLCAkdG9rLCAkbmV4dF90eXBlICk7CiAgICAgICAgICAgICAgICAgICAgJGNvZGUtPigpOwogICAgICAgICAgICAgICAgICAgIHJlZG8gaWYgJGluX3F1b3RlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBlbmQgb2YgbWFpbiB0b2tlbml6YXRpb24gbG9vcAogICAgICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgICAgaWYgKCAkaV90b2sgPj0gMCApIHsKICAgICAgICAgICAgJHJvdXRwdXRfdG9rZW5fdHlwZS0+WyRpX3Rva10gICAgID0gJHR5cGU7CiAgICAgICAgICAgICRyb3V0cHV0X2Jsb2NrX3R5cGUtPlskaV90b2tdICAgICA9ICRibG9ja190eXBlOwogICAgICAgICAgICAkcm91dHB1dF9jb250YWluZXJfdHlwZS0+WyRpX3Rva10gPSAkY29udGFpbmVyX3R5cGU7CiAgICAgICAgICAgICRyb3V0cHV0X3R5cGVfc2VxdWVuY2UtPlskaV90b2tdICA9ICR0eXBlX3NlcXVlbmNlOwogICAgICAgICAgICAkcm91dHB1dF9pbmRlbnRfZmxhZy0+WyRpX3Rva10gICAgPSAkaW5kZW50X2ZsYWc7CiAgICAgICAgfQoKICAgICAgICB1bmxlc3MgKCAoICR0eXBlIGVxICdiJyApIHx8ICggJHR5cGUgZXEgJyMnICkgKSB7CiAgICAgICAgICAgICRsYXN0X2xhc3Rfbm9uYmxhbmtfdG9rZW4gICAgICAgICAgPSAkbGFzdF9ub25ibGFua190b2tlbjsKICAgICAgICAgICAgJGxhc3RfbGFzdF9ub25ibGFua190eXBlICAgICAgICAgICA9ICRsYXN0X25vbmJsYW5rX3R5cGU7CiAgICAgICAgICAgICRsYXN0X2xhc3Rfbm9uYmxhbmtfYmxvY2tfdHlwZSAgICAgPSAkbGFzdF9ub25ibGFua19ibG9ja190eXBlOwogICAgICAgICAgICAkbGFzdF9sYXN0X25vbmJsYW5rX2NvbnRhaW5lcl90eXBlID0gJGxhc3Rfbm9uYmxhbmtfY29udGFpbmVyX3R5cGU7CiAgICAgICAgICAgICRsYXN0X2xhc3Rfbm9uYmxhbmtfdHlwZV9zZXF1ZW5jZSAgPSAkbGFzdF9ub25ibGFua190eXBlX3NlcXVlbmNlOwogICAgICAgICAgICAkbGFzdF9ub25ibGFua190b2tlbiAgICAgICAgICAgICAgID0gJHRvazsKICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfdHlwZSAgICAgICAgICAgICAgICA9ICR0eXBlOwogICAgICAgICAgICAkbGFzdF9ub25ibGFua19ibG9ja190eXBlICAgICAgICAgID0gJGJsb2NrX3R5cGU7CiAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX2NvbnRhaW5lcl90eXBlICAgICAgPSAkY29udGFpbmVyX3R5cGU7CiAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3R5cGVfc2VxdWVuY2UgICAgICAgPSAkdHlwZV9zZXF1ZW5jZTsKICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfcHJvdG90eXBlICAgICAgICAgICA9ICRwcm90b3R5cGU7CiAgICAgICAgfQoKICAgICAgICAjIHJlc2V0IGluZGVudGF0aW9uIGxldmVsIGlmIG5lY2Vzc2FyeSBhdCBhIHN1YiBvciBwYWNrYWdlCiAgICAgICAgIyBpbiBhbiBhdHRlbXB0IHRvIHJlY292ZXIgZnJvbSBhIG5lc3RpbmcgZXJyb3IKICAgICAgICBpZiAoICRsZXZlbF9pbl90b2tlbml6ZXIgPCAwICkgewogICAgICAgICAgICBpZiAoICRpbnB1dF9saW5lID1+IC9eXHMqKHN1YnxwYWNrYWdlKVxzKyhcdyspLyApIHsKICAgICAgICAgICAgICAgIHJlc2V0X2luZGVudGF0aW9uX2xldmVsKDApOwogICAgICAgICAgICAgICAgYnJhY2Vfd2FybmluZygicmVzZXR0aW5nIGxldmVsIHRvIDAgYXQgJDEgJDJcbiIpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGFsbCBkb25lIHRva2VuaXppbmcgdGhpcyBsaW5lIC4uLgogICAgICAgICMgbm93IHByZXBhcmUgdGhlIGZpbmFsIGxpc3Qgb2YgdG9rZW5zIGFuZCB0eXBlcwoKICAgICAgICBteSBAdG9rZW5fdHlwZSAgICAgPSAoKTsgICAjIHN0YWNrIG9mIG91dHB1dCB0b2tlbiB0eXBlcwogICAgICAgIG15IEBibG9ja190eXBlICAgICA9ICgpOyAgICMgc3RhY2sgb2Ygb3V0cHV0IGNvZGUgYmxvY2sgdHlwZXMKICAgICAgICBteSBAY29udGFpbmVyX3R5cGUgPSAoKTsgICAjIHN0YWNrIG9mIG91dHB1dCBjb2RlIGNvbnRhaW5lciB0eXBlcwogICAgICAgIG15IEB0eXBlX3NlcXVlbmNlICA9ICgpOyAgICMgc3RhY2sgb2Ygb3V0cHV0IHR5cGUgc2VxdWVuY2UgbnVtYmVycwogICAgICAgIG15IEB0b2tlbnMgICAgICAgICA9ICgpOyAgICMgb3V0cHV0IHRva2VucwogICAgICAgIG15IEBsZXZlbHMgICAgICAgICA9ICgpOyAgICMgc3RydWN0dXJhbCBicmFjZSBsZXZlbHMgb2Ygb3V0cHV0IHRva2VucwogICAgICAgIG15IEBzbGV2ZWxzICAgICAgICA9ICgpOyAgICMgc2Vjb25kYXJ5IG5lc3RpbmcgbGV2ZWxzIG9mIG91dHB1dCB0b2tlbnMKICAgICAgICBteSBAbmVzdGluZ190b2tlbnMgPSAoKTsgICAjIHN0cmluZyBvZiB0b2tlbnMgbGVhZGluZyB0byB0aGlzIGRlcHRoCiAgICAgICAgbXkgQG5lc3RpbmdfdHlwZXMgID0gKCk7ICAgIyBzdHJpbmcgb2YgdG9rZW4gdHlwZXMgbGVhZGluZyB0byB0aGlzIGRlcHRoCiAgICAgICAgbXkgQG5lc3RpbmdfYmxvY2tzID0gKCk7ICAgIyBzdHJpbmcgb2YgYmxvY2sgdHlwZXMgbGVhZGluZyB0byB0aGlzIGRlcHRoCiAgICAgICAgbXkgQG5lc3RpbmdfbGlzdHMgID0gKCk7ICAgIyBzdHJpbmcgb2YgbGlzdCB0eXBlcyBsZWFkaW5nIHRvIHRoaXMgZGVwdGgKICAgICAgICBteSBAY2lfc3RyaW5nID0gKCk7ICAjIHN0cmluZyBuZWVkZWQgdG8gY29tcHV0ZSBjb250aW51YXRpb24gaW5kZW50YXRpb24KICAgICAgICBteSBAY29udGFpbmVyX2Vudmlyb25tZW50ID0gKCk7ICAgICMgQkxPQ0sgb3IgTElTVAogICAgICAgIG15ICRjb250YWluZXJfZW52aXJvbm1lbnQgPSAnJzsKICAgICAgICBteSAkaW0gICAgICAgICAgICAgICAgICAgID0gLTE7ICAgICMgcHJldmlvdXMgJGkgdmFsdWUKICAgICAgICBteSAkbnVtOwogICAgICAgIG15ICRjaV9zdHJpbmdfc3VtID0gb25lc19jb3VudCgkY2lfc3RyaW5nX2luX3Rva2VuaXplcik7CgojIENvbXB1dGluZyBUb2tlbiBJbmRlbnRhdGlvbgojCiMgICAgIFRoZSBmaW5hbCBzZWN0aW9uIG9mIHRoZSB0b2tlbml6ZXIgZm9ybXMgdG9rZW5zIGFuZCBhbHNvIGNvbXB1dGVzCiMgICAgIHBhcmFtZXRlcnMgbmVlZGVkIHRvIGZpbmQgaW5kZW50YXRpb24uICBJdCBpcyBtdWNoIGVhc2llciB0byBkbyBpdAojICAgICBpbiB0aGUgdG9rZW5pemVyIHRoYW4gZWxzZXdoZXJlLiAgSGVyZSBpcyBhIGJyaWVmIGRlc2NyaXB0aW9uIG9mIGhvdwojICAgICBpbmRlbnRhdGlvbiBpcyBjb21wdXRlZC4gIFBlcmw6OlRpZHkgY29tcHV0ZXMgaW5kZW50YXRpb24gYXMgdGhlIHN1bQojICAgICBvZiAyIHRlcm1zOgojCiMgICAgICgxKSBzdHJ1Y3R1cmFsIGluZGVudGF0aW9uLCBzdWNoIGFzIGlmL2Vsc2UvZWxzaWYgYmxvY2tzCiMgICAgICgyKSBjb250aW51YXRpb24gaW5kZW50YXRpb24sIHN1Y2ggYXMgbG9uZyBwYXJhbWV0ZXIgY2FsbCBsaXN0cy4KIwojICAgICBUaGVzZSBhcmUgb2NjYXNpb25hbGx5IGNhbGxlZCBwcmltYXJ5IGFuZCBzZWNvbmRhcnkgaW5kZW50YXRpb24uCiMKIyAgICAgU3RydWN0dXJhbCBpbmRlbnRhdGlvbiBpcyBpbnRyb2R1Y2VkIGJ5IHRva2VucyBvZiB0eXBlICd7JywgYWx0aG91Z2gKIyAgICAgdGhlIGFjdHVhbCB0b2tlbnMgbWlnaHQgYmUgJ3snLCAnKCcsIG9yICdbJy4gIFN0cnVjdHVyYWwgaW5kZW50YXRpb24KIyAgICAgaXMgb2YgdHdvIHR5cGVzOiBCTE9DSyBhbmQgbm9uLUJMT0NLLiAgRGVmYXVsdCBzdHJ1Y3R1cmFsIGluZGVudGF0aW9uCiMgICAgIGlzIDQgY2hhcmFjdGVycyBpZiB0aGUgc3RhbmRhcmQgaW5kZW50YXRpb24gc2NoZW1lIGlzIHVzZWQuCiMKIyAgICAgQ29udGludWF0aW9uIGluZGVudGF0aW9uIGlzIGludHJvZHVjZWQgd2hlbmV2ZXIgYSBsaW5lIGF0IEJMT0NLIGxldmVsCiMgICAgIGlzIGJyb2tlbiBiZWZvcmUgaXRzIHRlcm1pbmF0aW9uLiAgRGVmYXVsdCBjb250aW51YXRpb24gaW5kZW50YXRpb24KIyAgICAgaXMgMiBjaGFyYWN0ZXJzIGluIHRoZSBzdGFuZGFyZCBpbmRlbnRhdGlvbiBzY2hlbWUuCiMKIyAgICAgQm90aCB0eXBlcyBvZiBpbmRlbnRhdGlvbiBtYXkgYmUgbmVzdGVkIGFyYml0cmFyaWx5IGRlZXAgYW5kCiMgICAgIGludGVybGFjZWQuICBUaGUgZGlzdGluY3Rpb24gYmV0d2VlbiB0aGUgdHdvIGlzIHNvbWV3aGF0IGFyYml0cmFyeS4KIwojICAgICBGb3IgZWFjaCB0b2tlbiwgd2Ugd2lsbCBkZWZpbmUgdHdvIHZhcmlhYmxlcyB3aGljaCB3b3VsZCBhcHBseSBpZgojICAgICB0aGUgY3VycmVudCBzdGF0ZW1lbnQgd2VyZSBicm9rZW4ganVzdCBiZWZvcmUgdGhhdCB0b2tlbiwgc28gdGhhdAojICAgICB0aGF0IHRva2VuIHN0YXJ0ZWQgYSBuZXcgbGluZToKIwojICAgICAkbGV2ZWwgPSB0aGUgc3RydWN0dXJhbCBpbmRlbnRhdGlvbiBsZXZlbCwKIyAgICAgJGNpX2xldmVsID0gdGhlIGNvbnRpbnVhdGlvbiBpbmRlbnRhdGlvbiBsZXZlbAojCiMgICAgIFRoZSB0b3RhbCBpbmRlbnRhdGlvbiB3aWxsIGJlICRsZXZlbCAqICg0IHNwYWNlcykgKyAkY2lfbGV2ZWwgKiAoMiBzcGFjZXMpLAojICAgICBhc3N1bWluZyBkZWZhdWx0cy4gIEhvd2V2ZXIsIGluIHNvbWUgc3BlY2lhbCBjYXNlcyBpdCBpcyBjdXN0b21hcnkKIyAgICAgdG8gbW9kaWZ5ICRjaV9sZXZlbCBmcm9tIHRoaXMgc3RyaWN0IHZhbHVlLgojCiMgICAgIFRoZSB0b3RhbCBzdHJ1Y3R1cmFsIGluZGVudGF0aW9uIGlzIGVhc3kgdG8gY29tcHV0ZSBieSBhZGRpbmcgYW5kCiMgICAgIHN1YnRyYWN0aW5nIDEgZnJvbSBhIHNhdmVkIHZhbHVlIGFzIHR5cGVzICd7JyBhbmQgJ30nIGFyZSBzZWVuLiAgVGhlCiMgICAgIHJ1bm5pbmcgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSBpcyAkbGV2ZWxfaW5fdG9rZW5pemVyLgojCiMgICAgIFRoZSB0b3RhbCBjb250aW51YXRpb24gaXMgbXVjaCBtb3JlIGRpZmZpY3VsdCB0byBjb21wdXRlLCBhbmQgcmVxdWlyZXMKIyAgICAgc2V2ZXJhbCB2YXJpYWJsZXMuICBUaGVzZSB2YXJpYWJsZXMgYXJlOgojCiMgICAgICRjaV9zdHJpbmdfaW5fdG9rZW5pemVyID0gYSBzdHJpbmcgb2YgMSdzIGFuZCAwJ3MgaW5kaWNhdGluZywgZm9yCiMgICAgICAgZWFjaCBpbmRlbnRhdGlvbiBsZXZlbCwgaWYgdGhlcmUgYXJlIGludGVydmVuaW5nIG9wZW4gc2Vjb25kYXJ5CiMgICAgICAgc3RydWN0dXJlcyBqdXN0IHByaW9yIHRvIHRoYXQgbGV2ZWwuCiMgICAgICRjb250aW51YXRpb25fc3RyaW5nX2luX3Rva2VuaXplciA9IGEgc3RyaW5nIG9mIDEncyBhbmQgMCdzIGluZGljYXRpbmcKIyAgICAgICBpZiB0aGUgbGFzdCB0b2tlbiBhdCB0aGF0IGxldmVsIGlzICJjb250aW51ZWQiLCBtZWFuaW5nIHRoYXQgaXQKIyAgICAgICBpcyBub3QgdGhlIGZpcnN0IHRva2VuIG9mIGFuIGV4cHJlc3Npb24uCiMgICAgICRuZXN0aW5nX2Jsb2NrX3N0cmluZyA9IGEgc3RyaW5nIG9mIDEncyBhbmQgMCdzIGluZGljYXRpbmcsIGZvciBlYWNoCiMgICAgICAgaW5kZW50YXRpb24gbGV2ZWwsIGlmIHRoZSBsZXZlbCBpcyBvZiB0eXBlIEJMT0NLIG9yIG5vdC4KIyAgICAgJG5lc3RpbmdfYmxvY2tfZmxhZyA9IHRoZSBtb3N0IHJlY2VudCAxIG9yIDAgb2YgJG5lc3RpbmdfYmxvY2tfc3RyaW5nCiMgICAgICRuZXN0aW5nX2xpc3Rfc3RyaW5nID0gYSBzdHJpbmcgb2YgMSdzIGFuZCAwJ3MgaW5kaWNhdGluZywgZm9yIGVhY2gKIyAgICAgICBpbmRlbnRhdGlvbiBsZXZlbCwgaWYgaXQgaXMgYXBwcm9wcmlhdGUgZm9yIGxpc3QgZm9ybWF0dGluZy4KIyAgICAgICBJZiBzbywgY29udGludWF0aW9uIGluZGVudGF0aW9uIGlzIHVzZWQgdG8gaW5kZW50IGxvbmcgbGlzdCBpdGVtcy4KIyAgICAgJG5lc3RpbmdfbGlzdF9mbGFnID0gdGhlIG1vc3QgcmVjZW50IDEgb3IgMCBvZiAkbmVzdGluZ19saXN0X3N0cmluZwojICAgICBAeyRyc2xldmVsX3N0YWNrfSA9IGEgc3RhY2sgb2YgdG90YWwgbmVzdGluZyBkZXB0aHMgYXQgZWFjaAojICAgICAgIHN0cnVjdHVyYWwgaW5kZW50YXRpb24gbGV2ZWwsIHdoZXJlICJ0b3RhbCBuZXN0aW5nIGRlcHRoIiBtZWFucwojICAgICAgIHRoZSBuZXN0aW5nIGRlcHRoIHRoYXQgd291bGQgb2NjdXIgaWYgZXZlcnkgbmVzdGluZyB0b2tlbiAtLSAneycsICdbJywKIyAgICAgICBhbmQgJygnIC0tICwgcmVnYXJkbGVzcyBvZiBjb250ZXh0LCBpcyB1c2VkIHRvIGNvbXB1dGUgYSBuZXN0aW5nCiMgICAgICAgZGVwdGguCgogICAgICAgICNteSAkbmVzdGluZ19ibG9ja19mbGFnID0gKCRuZXN0aW5nX2Jsb2NrX3N0cmluZyA9fiAvMSQvKTsKICAgICAgICAjbXkgJG5lc3RpbmdfbGlzdF9mbGFnID0gKCRuZXN0aW5nX2xpc3Rfc3RyaW5nID1+IC8xJC8pOwoKICAgICAgICBteSAoICRjaV9zdHJpbmdfaSwgJGxldmVsX2ksICRuZXN0aW5nX2Jsb2NrX3N0cmluZ19pLAogICAgICAgICAgICAkbmVzdGluZ19saXN0X3N0cmluZ19pLCAkbmVzdGluZ190b2tlbl9zdHJpbmdfaSwKICAgICAgICAgICAgJG5lc3RpbmdfdHlwZV9zdHJpbmdfaSwgKTsKCiAgICAgICAgZm9yZWFjaCBteSAkaSAoIEB7JHJvdXRwdXRfdG9rZW5fbGlzdH0gKQogICAgICAgIHsgICAgIyBzY2FuIHRoZSBsaXN0IG9mIHByZS10b2tlbnMgaW5kZXhlcwoKICAgICAgICAgICAgIyBzZWxmLWNoZWNraW5nIGZvciB2YWxpZCB0b2tlbiB0eXBlcwogICAgICAgICAgICBteSAkdHlwZSAgICAgICAgICAgICAgICAgICAgPSAkcm91dHB1dF90b2tlbl90eXBlLT5bJGldOwogICAgICAgICAgICBteSAkZm9yY2VkX2luZGVudGF0aW9uX2ZsYWcgPSAkcm91dHB1dF9pbmRlbnRfZmxhZy0+WyRpXTsKCiAgICAgICAgICAgICMgU2VlIGlmIHdlIHNob3VsZCB1bmRvIHRoZSAkZm9yY2VkX2luZGVudGF0aW9uX2ZsYWcuCiAgICAgICAgICAgICMgRm9yY2VkIGluZGVudGF0aW9uIGFmdGVyICdpZicsICd1bmxlc3MnLCAnd2hpbGUnIGFuZCAndW50aWwnCiAgICAgICAgICAgICMgZXhwcmVzc2lvbnMgd2l0aG91dCB0cmFpbGluZyBwYXJlbnMgaXMgb3B0aW9uYWwgYW5kIGRvZXNuJ3QKICAgICAgICAgICAgIyBhbHdheXMgbG9vayBnb29kLiAgSXQgaXMgdXN1YWxseSBva2F5IGZvciBhIHRyYWlsaW5nIGxvZ2ljYWwKICAgICAgICAgICAgIyBleHByZXNzaW9uLCBidXQgaWYgdGhlIGV4cHJlc3Npb24gaXMgYSBmdW5jdGlvbiBjYWxsLCBjb2RlIGJsb2NrLAogICAgICAgICAgICAjIG9yIHNvbWUga2luZCBvZiBsaXN0IGl0IHB1dHMgaW4gYW4gdW53YW50ZWQgZXh0cmEgaW5kZW50YXRpb24KICAgICAgICAgICAgIyBsZXZlbCB3aGljaCBpcyBoYXJkIHRvIHJlbW92ZS4KICAgICAgICAgICAgIwogICAgICAgICAgICAjIEV4YW1wbGUgd2hlcmUgZXh0cmEgaW5kZW50YXRpb24gbG9va3Mgb2s6CiAgICAgICAgICAgICMgcmV0dXJuIDEKICAgICAgICAgICAgIyAgIGlmICRkZXRfYSA8IDAgYW5kICRkZXRfYiA+IDAKICAgICAgICAgICAgIyAgICAgICBvciAkZGV0X2EgPiAwIGFuZCAkZGV0X2IgPCAwOwogICAgICAgICAgICAjCiAgICAgICAgICAgICMgRXhhbXBsZSB3aGVyZSBleHRyYSBpbmRlbnRhdGlvbiBpcyBub3QgbmVlZGVkIGJlY2F1c2UKICAgICAgICAgICAgIyB0aGUgZXZhbCBicmFjZSBhbHNvIHByb3ZpZGVzIGluZGVudGF0aW9uOgogICAgICAgICAgICAjIHByaW50ICJub3QgIiBpZiBkZWZpbmVkIGV2YWwgewogICAgICAgICAgICAjICAgICByZWR1Y2UgeyBkaWUgaWYgJGIgPiAyOyAkYSArICRiIH0gMCwgMSwgMiwgMywgNDsKICAgICAgICAgICAgIyB9OwogICAgICAgICAgICAjCiAgICAgICAgICAgICMgVGhlIGZvbGxvd2luZyBydWxlIHdvcmtzIGZhaXJseSB3ZWxsOgogICAgICAgICAgICAjICAgVW5kbyB0aGUgZmxhZyBpZiB0aGUgZW5kIG9mIHRoaXMgbGluZSwgb3Igc3RhcnQgb2YgdGhlIG5leHQKICAgICAgICAgICAgIyAgIGxpbmUsIGlzIGFuIG9wZW5pbmcgY29udGFpbmVyIHRva2VuIG9yIGEgY29tbWEuCiAgICAgICAgICAgICMgVGhpcyBhbG1vc3QgYWx3YXlzIHdvcmtzLCBidXQgaWYgbm90IGFmdGVyIGFub3RoZXIgcGFzcyBpdCB3aWxsCiAgICAgICAgICAgICMgYmUgc3RhYmxlLgogICAgICAgICAgICBpZiAoICRmb3JjZWRfaW5kZW50YXRpb25fZmxhZyAmJiAkdHlwZSBlcSAnaycgKSB7CiAgICAgICAgICAgICAgICBteSAkaXhsYXN0ICA9IC0xOwogICAgICAgICAgICAgICAgbXkgJGlsYXN0ICAgPSAkcm91dHB1dF90b2tlbl9saXN0LT5bJGl4bGFzdF07CiAgICAgICAgICAgICAgICBteSAkdG9rbGFzdCA9ICRyb3V0cHV0X3Rva2VuX3R5cGUtPlskaWxhc3RdOwogICAgICAgICAgICAgICAgaWYgKCAkdG9rbGFzdCBlcSAnIycgKSB7CiAgICAgICAgICAgICAgICAgICAgJGl4bGFzdC0tOwogICAgICAgICAgICAgICAgICAgICRpbGFzdCAgID0gJHJvdXRwdXRfdG9rZW5fbGlzdC0+WyRpeGxhc3RdOwogICAgICAgICAgICAgICAgICAgICR0b2tsYXN0ID0gJHJvdXRwdXRfdG9rZW5fdHlwZS0+WyRpbGFzdF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoICR0b2tsYXN0IGVxICdiJyApIHsKICAgICAgICAgICAgICAgICAgICAkaXhsYXN0LS07CiAgICAgICAgICAgICAgICAgICAgJGlsYXN0ICAgPSAkcm91dHB1dF90b2tlbl9saXN0LT5bJGl4bGFzdF07CiAgICAgICAgICAgICAgICAgICAgJHRva2xhc3QgPSAkcm91dHB1dF90b2tlbl90eXBlLT5bJGlsYXN0XTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICggJHRva2xhc3QgPX4gL15bXHssXSQvICkgewogICAgICAgICAgICAgICAgICAgICRmb3JjZWRfaW5kZW50YXRpb25fZmxhZyA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAoICR0b2tsYXN0LCBteSAkaV9uZXh0ICkgPQogICAgICAgICAgICAgICAgICAgICAgZmluZF9uZXh0X25vbmJsYW5rX3Rva2VuKCAkbWF4X3Rva2VuX2luZGV4LCAkcnRva2VucywKICAgICAgICAgICAgICAgICAgICAgICAgJG1heF90b2tlbl9pbmRleCApOwogICAgICAgICAgICAgICAgICAgIGlmICggJHRva2xhc3QgPX4gL15bXHssXSQvICkgewogICAgICAgICAgICAgICAgICAgICAgICAkZm9yY2VkX2luZGVudGF0aW9uX2ZsYWcgPSAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBpZiB3ZSBhcmUgYWxyZWFkeSBpbiBhbiBpbmRlbnRlZCBpZiwgc2VlIGlmIHdlIHNob3VsZCBvdXRkZW50CiAgICAgICAgICAgIGlmICgkaW5kZW50ZWRfaWZfbGV2ZWwpIHsKCiAgICAgICAgICAgICAgICAjIGRvbid0IHRyeSB0byBuZXN0IHRyYWlsaW5nIGlmJ3MgLSBzaG91bGRuJ3QgaGFwcGVuCiAgICAgICAgICAgICAgICBpZiAoICR0eXBlIGVxICdrJyApIHsKICAgICAgICAgICAgICAgICAgICAkZm9yY2VkX2luZGVudGF0aW9uX2ZsYWcgPSAwOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgY2hlY2sgZm9yIHRoZSBub3JtYWwgY2FzZSAtIG91dGRlbnRpbmcgYXQgbmV4dCAnOycKICAgICAgICAgICAgICAgIGVsc2lmICggJHR5cGUgZXEgJzsnICkgewogICAgICAgICAgICAgICAgICAgIGlmICggJGxldmVsX2luX3Rva2VuaXplciA9PSAkaW5kZW50ZWRfaWZfbGV2ZWwgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRmb3JjZWRfaW5kZW50YXRpb25fZmxhZyA9IC0xOwogICAgICAgICAgICAgICAgICAgICAgICAkaW5kZW50ZWRfaWZfbGV2ZWwgICAgICAgPSAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGhhbmRsZSBjYXNlIG9mIG1pc3Npbmcgc2VtaWNvbG9uCiAgICAgICAgICAgICAgICBlbHNpZiAoICR0eXBlIGVxICd9JyApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRsZXZlbF9pbl90b2tlbml6ZXIgPT0gJGluZGVudGVkX2lmX2xldmVsICkgewogICAgICAgICAgICAgICAgICAgICAgICAkaW5kZW50ZWRfaWZfbGV2ZWwgPSAwOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBUQkQ6IFRoaXMgY291bGQgYmUgYSBzdWJyb3V0aW5lIGNhbGwKICAgICAgICAgICAgICAgICAgICAgICAgJGxldmVsX2luX3Rva2VuaXplci0tOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIEB7JHJzbGV2ZWxfc3RhY2t9ID4gMSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcCggQHskcnNsZXZlbF9zdGFja30gKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGxlbmd0aCgkbmVzdGluZ19ibG9ja19zdHJpbmcpID4gMSApCiAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgIyB0cnVlIGZvciB2YWxpZCBzY3JpcHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNob3AgJG5lc3RpbmdfYmxvY2tfc3RyaW5nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hvcCAkbmVzdGluZ19saXN0X3N0cmluZzsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICR0b2sgPSAkcnRva2Vucy0+WyRpXTsgICMgdGhlIHRva2VuLCBidXQgT05MWSBpZiBzYW1lIGFzIHByZXRva2VuCiAgICAgICAgICAgICRsZXZlbF9pID0gJGxldmVsX2luX3Rva2VuaXplcjsKCiAgICAgICAgICAgICMgVGhpcyBjYW4gaGFwcGVuIGJ5IHJ1bm5pbmcgcGVybHRpZHkgb24gbm9uLXNjcmlwdHMKICAgICAgICAgICAgIyBhbHRob3VnaCBpdCBjb3VsZCBhbHNvIGJlIGJ1ZyBpbnRyb2R1Y2VkIGJ5IHByb2dyYW1taW5nIGNoYW5nZS4KICAgICAgICAgICAgIyBQZXJsIHNpbGVudGx5IGFjY2VwdHMgYSAwMzIgKF5aKSBhbmQgdGFrZXMgaXQgYXMgdGhlIGVuZAogICAgICAgICAgICBpZiAoICEkaXNfdmFsaWRfdG9rZW5fdHlwZXskdHlwZX0gKSB7CiAgICAgICAgICAgICAgICBteSAkdmFsID0gb3JkKCR0eXBlKTsKICAgICAgICAgICAgICAgIHdhcm5pbmcoCiAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgY2hhcmFjdGVyIGRlY2ltYWwgJHZhbCAoJHR5cGUpIGluIHNjcmlwdFxuIik7CiAgICAgICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPntfaW5fZXJyb3J9ID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICMgVE9LRU4gVFlQRSBQQVRDSEVTCiAgICAgICAgICAgICMgIG91dHB1dCBfX0VORF9fLCBfX0RBVEFfXywgYW5kIGZvcm1hdCBhcyB0eXBlICdrJyBpbnN0ZWFkIG9mICc7JwogICAgICAgICAgICAjIHRvIG1ha2UgaHRtbCBjb2xvcnMgY29ycmVjdCwgZXRjLgogICAgICAgICAgICBteSAkZml4X3R5cGUgPSAkdHlwZTsKICAgICAgICAgICAgaWYgKCAkdHlwZSBlcSAnOycgJiYgJHRvayA9fiAvXHcvICkgeyAkZml4X3R5cGUgPSAnaycgfQoKICAgICAgICAgICAgIyBvdXRwdXQgYW5vbnltb3VzICdzdWInIGFzIGtleXdvcmQKICAgICAgICAgICAgaWYgKCAkdHlwZSBlcSAndCcgJiYgJGlzX3N1YnskdG9rfSApIHsgJGZpeF90eXBlID0gJ2snIH0KCiAgICAgICAgICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgICAgICAgICRuZXN0aW5nX3Rva2VuX3N0cmluZ19pID0gJG5lc3RpbmdfdG9rZW5fc3RyaW5nOwogICAgICAgICAgICAkbmVzdGluZ190eXBlX3N0cmluZ19pICA9ICRuZXN0aW5nX3R5cGVfc3RyaW5nOwogICAgICAgICAgICAkbmVzdGluZ19ibG9ja19zdHJpbmdfaSA9ICRuZXN0aW5nX2Jsb2NrX3N0cmluZzsKICAgICAgICAgICAgJG5lc3RpbmdfbGlzdF9zdHJpbmdfaSAgPSAkbmVzdGluZ19saXN0X3N0cmluZzsKCiAgICAgICAgICAgICMgc2V0IHByaW1hcnkgaW5kZW50YXRpb24gbGV2ZWxzIGJhc2VkIG9uIHN0cnVjdHVyYWwgYnJhY2VzCiAgICAgICAgICAgICMgTm90ZTogdGhlc2UgYXJlIHNldCBzbyB0aGF0IHRoZSBsZWFkaW5nIGJyYWNlcyBoYXZlIGEgSElHSEVSCiAgICAgICAgICAgICMgbGV2ZWwgdGhhbiB0aGVpciBDT05URU5UUywgd2hpY2ggaXMgY29udmVuaWVudCBmb3IgaW5kZW50YXRpb24KICAgICAgICAgICAgIyBBbHNvLCBkZWZpbmUgY29udGludWF0aW9uIGluZGVudGF0aW9uIGZvciBlYWNoIHRva2VuLgogICAgICAgICAgICBpZiAoICR0eXBlIGVxICd7JyB8fCAkdHlwZSBlcSAnTCcgfHwgJGZvcmNlZF9pbmRlbnRhdGlvbl9mbGFnID4gMCApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAjIHVzZSBlbnZpcm9ubWVudCBiZWZvcmUgdXBkYXRpbmcKICAgICAgICAgICAgICAgICRjb250YWluZXJfZW52aXJvbm1lbnQgPQogICAgICAgICAgICAgICAgICAgICRuZXN0aW5nX2Jsb2NrX2ZsYWcgPyAnQkxPQ0snCiAgICAgICAgICAgICAgICAgIDogJG5lc3RpbmdfbGlzdF9mbGFnICA/ICdMSVNUJwogICAgICAgICAgICAgICAgICA6ICAgICAgICAgICAgICAgICAgICAgICAiIjsKCiAgICAgICAgICAgICAgICAjIGlmIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdG90YWwgbmVzdGluZyBsZXZlbHMgaXMgbm90IDEsCiAgICAgICAgICAgICAgICAjIHRoZXJlIGFyZSBpbnRlcnZlbmluZyBub24tc3RydWN0dXJhbCBuZXN0aW5nIHR5cGVzIGJldHdlZW4KICAgICAgICAgICAgICAgICMgdGhpcyAneycgYW5kIHRoZSBwcmV2aW91cyB1bmNsb3NlZCAneycKICAgICAgICAgICAgICAgIG15ICRpbnRlcnZlbmluZ19zZWNvbmRhcnlfc3RydWN0dXJlID0gMDsKICAgICAgICAgICAgICAgIGlmICggQHskcnNsZXZlbF9zdGFja30gKSB7CiAgICAgICAgICAgICAgICAgICAgJGludGVydmVuaW5nX3NlY29uZGFyeV9zdHJ1Y3R1cmUgPQogICAgICAgICAgICAgICAgICAgICAgJHNsZXZlbF9pbl90b2tlbml6ZXIgLSAkcnNsZXZlbF9zdGFjay0+Wy0xXTsKICAgICAgICAgICAgICAgIH0KCiAgICAgIyBDb250aW51YXRpb24gSW5kZW50YXRpb24KICAgICAjCiAgICAgIyBIYXZpbmcgdHJpZWQgc2V0dGluZyBjb250aW51YXRpb24gaW5kZW50YXRpb24gYm90aCBpbiB0aGUgZm9ybWF0dGVyIGFuZAogICAgICMgaW4gdGhlIHRva2VuaXplciwgSSBjYW4gc2F5IHRoYXQgc2V0dGluZyBpdCBpbiB0aGUgdG9rZW5pemVyIGlzIG11Y2gsCiAgICAgIyBtdWNoIGVhc2llci4gIFRoZSBmb3JtYXR0ZXIgYWxyZWFkeSBoYXMgdG9vIG11Y2ggdG8gZG8sIGFuZCBjYW4ndAogICAgICMgbWFrZSBkZWNpc2lvbnMgb24gbGluZSBicmVha3Mgd2l0aG91dCBrbm93aW5nIHdoYXQgJ2NpJyB3aWxsIGJlIGF0CiAgICAgIyBhcmJpdHJhcnkgbG9jYXRpb25zLgogICAgICMKICAgICAjIEJ1dCBhIHByb2JsZW0gd2l0aCBzZXR0aW5nIHRoZSBjb250aW51YXRpb24gaW5kZW50YXRpb24gKGNpKSBoZXJlCiAgICAgIyBpbiB0aGUgdG9rZW5pemVyIGlzIHRoYXQgd2UgZG8gbm90IGtub3cgd2hlcmUgbGluZSBicmVha3Mgd2lsbCBhY3R1YWxseQogICAgICMgYmUuICBBcyBhIHJlc3VsdCwgd2UgZG9uJ3Qga25vdyBpZiB3ZSBzaG91bGQgcHJvcGFnYXRlIGNvbnRpbnVhdGlvbgogICAgICMgaW5kZW50YXRpb24gdG8gaGlnaGVyIGxldmVscyBvZiBzdHJ1Y3R1cmUuCiAgICAgIwogICAgICMgRm9yIG5lc3Rpbmcgb2Ygb25seSBzdHJ1Y3R1cmFsIGluZGVudGF0aW9uLCB3ZSBuZXZlciBuZWVkIHRvIGRvIHRoaXMuCiAgICAgIyBGb3IgZXhhbXBsZSwgaW4gYSBsb25nIGlmIHN0YXRlbWVudCwgbGlrZSB0aGlzCiAgICAgIwogICAgICMgICBpZiAoICEkb3V0cHV0X2Jsb2NrX3R5cGVbJGldCiAgICAgIyAgICAgJiYgKCRpbl9zdGF0ZW1lbnRfY29udGludWF0aW9uKSApCiAgICAgIyAgIHsgICAgICAgICAgIDwtLW91dGRlbnRlZAogICAgICMgICAgICAgZG9fc29tZXRoaW5nKCk7CiAgICAgIyAgIH0KICAgICAjCiAgICAgIyB0aGUgc2Vjb25kIGxpbmUgaGFzIGNpIGJ1dCB3ZSBkbyBub3JtYWxseSBnaXZlIHRoZSBsaW5lcyB3aXRoaW4gdGhlIEJMT0NLCiAgICAgIyBhbnkgY2kuICBUaGlzIHdvdWxkIGJlIHRydWUgaWYgd2UgaGFkIGJsb2NrcyBuZXN0ZWQgYXJiaXRyYXJpbHkgZGVlcGx5LgogICAgICMKICAgICAjIEJ1dCBjb25zaWRlciBzb21ldGhpbmcgbGlrZSB0aGlzLCB3aGVyZSB3ZSBoYXZlIGNyZWF0ZWQgYSBicmVhayBhZnRlcgogICAgICMgYW4gb3BlbmluZyBwYXJlbiBvbiBsaW5lIDEsIGFuZCB0aGUgcGFyZW4gaXMgbm90IChjdXJyZW50bHkpIGEKICAgICAjIHN0cnVjdHVyYWwgaW5kZW50YXRpb24gdG9rZW46CiAgICAgIwogICAgICMgbXkgJGZpbGUgPSAkbWVudWJhci0+TWVudWJ1dHRvbigKICAgICAjICAgcXcvLXRleHQgRmlsZSAtdW5kZXJsaW5lIDAgLW1lbnVpdGVtcy8gPT4gWwogICAgICMgICAgICAgWwogICAgICMgICAgICAgICAgIENhc2NhZGUgICAgPT4gJ35WaWV3JywKICAgICAjICAgICAgICAgICAtbWVudWl0ZW1zID0+IFsKICAgICAjICAgICAgICAgICAuLi4KICAgICAjCiAgICAgIyBUaGUgc2Vjb25kIGxpbmUgaGFzIGNpLCBzbyBpdCB3b3VsZCBzZWVtIHJlYXNvbmFibGUgdG8gcHJvcGFnYXRlIGl0CiAgICAgIyBkb3duLCBnaXZpbmcgdGhlIHRoaXJkIGxpbmUgMSBjaSArIDEgaW5kZW50YXRpb24uICBUaGlzIHN1Z2dlc3RzIHRoZQogICAgICMgZm9sbG93aW5nIHJ1bGUsIHdoaWNoIGlzIGN1cnJlbnRseSB1c2VkIHRvIHByb3BhZ2F0aW5nIGNpIGRvd246IGlmIHRoZXJlCiAgICAgIyBhcmUgYW55IG5vbi1zdHJ1Y3R1cmFsIG9wZW5pbmcgcGFyZW5zIChvciBicmFja2V0cywgb3IgYnJhY2VzKSwgYmVmb3JlCiAgICAgIyBhbiBvcGVuaW5nIHN0cnVjdHVyYWwgYnJhY2UsIHRoZW4gY2kgaXMgcHJvcGFnYXRlZCBkb3duLCBhbmQgb3RoZXJ3aXNlCiAgICAgIyBub3QuICBUaGUgdmFyaWFibGUgJGludGVydmVuaW5nX3NlY29uZGFyeV9zdHJ1Y3R1cmUgY29udGFpbnMgdGhpcwogICAgICMgaW5mb3JtYXRpb24gZm9yIHRoZSBjdXJyZW50IHRva2VuLCBhbmQgdGhlIHN0cmluZwogICAgICMgIiRjaV9zdHJpbmdfaW5fdG9rZW5pemVyIiBpcyBhIHN0YWNrIG9mIHByZXZpb3VzIHZhbHVlcyBvZiB0aGlzCiAgICAgIyB2YXJpYWJsZS4KCiAgICAgICAgICAgICAgICAjIHNhdmUgdGhlIGN1cnJlbnQgc3RhdGVzCiAgICAgICAgICAgICAgICBwdXNoKCBAeyRyc2xldmVsX3N0YWNrfSwgMSArICRzbGV2ZWxfaW5fdG9rZW5pemVyICk7CiAgICAgICAgICAgICAgICAkbGV2ZWxfaW5fdG9rZW5pemVyKys7CgogICAgICAgICAgICAgICAgaWYgKCRmb3JjZWRfaW5kZW50YXRpb25fZmxhZykgewoKICAgICAgICAgICAgICAgICAgICAjIGJyZWFrIEJFRk9SRSAnPycgd2hlbiB0aGVyZSBpcyBmb3JjZWQgaW5kZW50YXRpb24KICAgICAgICAgICAgICAgICAgICBpZiAoICR0eXBlIGVxICc/JyApIHsgJGxldmVsX2kgPSAkbGV2ZWxfaW5fdG9rZW5pemVyOyB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkdHlwZSBlcSAnaycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRpbmRlbnRlZF9pZl9sZXZlbCA9ICRsZXZlbF9pbl90b2tlbml6ZXI7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGRvIG5vdCBjaGFuZ2UgY29udGFpbmVyIGVudmlyb25tZW50IGhlcmUgaWYgd2UgYXJlIG5vdAogICAgICAgICAgICAgICAgICAgICMgYXQgYSByZWFsIGxpc3QuIEFkZGluZyB0aGlzIGNoZWNrIHByZXZlbnRzICJibGlua2VycyIKICAgICAgICAgICAgICAgICAgICAjIG9mdGVuIG5lYXIgJ3VubGVzcyIgY2xhdXNlcywgc3VjaCBhcyBpbiB0aGUgZm9sbG93aW5nCiAgICAgICAgICAgICAgICAgICAgIyBjb2RlOgojIyAgICAgICAgICBuZXh0CiMjICAgICAgICAgICAgdW5sZXNzIC1lICgKIyMgICAgICAgICAgICAgICAgICAgICRhcmNoaXZlID0KIyMgICAgICAgICAgICAgICAgICAgICAgRmlsZTo6U3BlYy0+Y2F0ZGlyKCAkXywgImF1dG8iLCAkcm9vdCwgIiRzdWIkbGliX2V4dCIgKQojIyAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRuZXN0aW5nX2Jsb2NrX3N0cmluZyAuPSAiJG5lc3RpbmdfYmxvY2tfZmxhZyI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkcm91dHB1dF9ibG9ja190eXBlLT5bJGldICkgewogICAgICAgICAgICAgICAgICAgICAgICAkbmVzdGluZ19ibG9ja19mbGFnID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgJG5lc3RpbmdfYmxvY2tfc3RyaW5nIC49ICcxJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRuZXN0aW5nX2Jsb2NrX2ZsYWcgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAkbmVzdGluZ19ibG9ja19zdHJpbmcgLj0gJzAnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHdlIHdpbGwgdXNlIGNvbnRpbnVhdGlvbiBpbmRlbnRhdGlvbiB3aXRoaW4gY29udGFpbmVycwogICAgICAgICAgICAgICAgIyB3aGljaCBhcmUgbm90IGJsb2NrcyBhbmQgbm90IGxvZ2ljYWwgZXhwcmVzc2lvbnMKICAgICAgICAgICAgICAgIG15ICRiaXQgPSAwOwogICAgICAgICAgICAgICAgaWYgKCAhJHJvdXRwdXRfYmxvY2tfdHlwZS0+WyRpXSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBwcm9wYWdhdGUgZmxhZyBkb3duIGF0IG5lc3RlZCBvcGVuIHBhcmVucwogICAgICAgICAgICAgICAgICAgIGlmICggJHJvdXRwdXRfY29udGFpbmVyX3R5cGUtPlskaV0gZXEgJygnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkYml0ID0gMSBpZiAkbmVzdGluZ19saXN0X2ZsYWc7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgIyB1c2UgbGlzdCBjb250aW51YXRpb24gaWYgbm90IGEgbG9naWNhbCBncm91cGluZwogICAgICAgICAgICAgICAgICAjIC9eKGlmfGVsc2lmfHVubGVzc3x3aGlsZXxhbmR8b3J8bm90fCYmfCF8XHxcfHxmb3J8Zm9yZWFjaCkkLwogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkYml0ID0gMQogICAgICAgICAgICAgICAgICAgICAgICAgIHVubGVzcwogICAgICAgICAgICAgICAgICAgICAgICAgICRpc19sb2dpY2FsX2NvbnRhaW5lcnsgJHJvdXRwdXRfY29udGFpbmVyX3R5cGUtPlskaV0KICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRuZXN0aW5nX2xpc3Rfc3RyaW5nIC49ICRiaXQ7CiAgICAgICAgICAgICAgICAkbmVzdGluZ19saXN0X2ZsYWcgPSAkYml0OwoKICAgICAgICAgICAgICAgICRjaV9zdHJpbmdfaW5fdG9rZW5pemVyIC49CiAgICAgICAgICAgICAgICAgICggJGludGVydmVuaW5nX3NlY29uZGFyeV9zdHJ1Y3R1cmUgIT0gMCApID8gJzEnIDogJzAnOwogICAgICAgICAgICAgICAgJGNpX3N0cmluZ19zdW0gPSBvbmVzX2NvdW50KCRjaV9zdHJpbmdfaW5fdG9rZW5pemVyKTsKICAgICAgICAgICAgICAgICRjb250aW51YXRpb25fc3RyaW5nX2luX3Rva2VuaXplciAuPQogICAgICAgICAgICAgICAgICAoICRpbl9zdGF0ZW1lbnRfY29udGludWF0aW9uID4gMCApID8gJzEnIDogJzAnOwoKICAgIyAgU29tZXRpbWVzIHdlIHdhbnQgdG8gZ2l2ZSBhbiBvcGVuaW5nIGJyYWNlIGNvbnRpbnVhdGlvbiBpbmRlbnRhdGlvbiwKICAgIyAgYW5kIHNvbWV0aW1lcyBub3QuICBGb3IgY29kZSBibG9ja3MsIHdlIGRvbid0IGRvIGl0LCBzbyB0aGF0IHRoZSBsZWFkaW5nCiAgICMgICd7JyBnZXRzIG91dGRlbnRlZCwgbGlrZSB0aGlzOgogICAjCiAgICMgICBpZiAoICEkb3V0cHV0X2Jsb2NrX3R5cGVbJGldCiAgICMgICAgICYmICgkaW5fc3RhdGVtZW50X2NvbnRpbnVhdGlvbikgKQogICAjICAgeyAgICAgICAgICAgPC0tb3V0ZGVudGVkCiAgICMKICAgIyAgRm9yIG90aGVyIHR5cGVzLCB3ZSB3aWxsIGdpdmUgdGhlbSBjb250aW51YXRpb24gaW5kZW50YXRpb24uICBGb3IgZXhhbXBsZSwKICAgIyAgaGVyZSBpcyBob3cgYSBsaXN0IGxvb2tzIHdpdGggdGhlIG9wZW5pbmcgcGFyZW4gaW5kZW50ZWQ6CiAgICMKICAgIyAgICAgQExvTCA9CiAgICMgICAgICAgKCBbICJmcmVkIiwgImJhcm5leSIgXSwgWyAiZ2VvcmdlIiwgImphbmUiLCAiZWxyb3kiIF0sCiAgICMgICAgICAgICBbICJob21lciIsICJtYXJnZSIsICJiYXJ0IiBdLCApOwogICAjCiAgICMgIFRoaXMgbG9va3MgYmVzdCB3aGVuICdjaScgaXMgb25lLWhhbGYgb2YgdGhlIGluZGVudGF0aW9uICAoaS5lLiwgMiBhbmQgNCkKCiAgICAgICAgICAgICAgICBteSAkdG90YWxfY2kgPSAkY2lfc3RyaW5nX3N1bTsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAhJHJvdXRwdXRfYmxvY2tfdHlwZS0+WyRpXSAgICAjIHBhdGNoOiBza2lwIGZvciBCTE9DSwogICAgICAgICAgICAgICAgICAgICYmICgkaW5fc3RhdGVtZW50X2NvbnRpbnVhdGlvbikKICAgICAgICAgICAgICAgICAgICAmJiAhKCAkZm9yY2VkX2luZGVudGF0aW9uX2ZsYWcgJiYgJHR5cGUgZXEgJzonICkKICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICR0b3RhbF9jaSArPSAkaW5fc3RhdGVtZW50X2NvbnRpbnVhdGlvbgogICAgICAgICAgICAgICAgICAgICAgdW5sZXNzICggJGNpX3N0cmluZ19pbl90b2tlbml6ZXIgPX4gLzEkLyApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRjaV9zdHJpbmdfaSAgICAgICAgICAgICAgID0gJHRvdGFsX2NpOwogICAgICAgICAgICAgICAgJGluX3N0YXRlbWVudF9jb250aW51YXRpb24gPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICBlbHNpZiAoJHR5cGUgZXEgJ30nCiAgICAgICAgICAgICAgICB8fCAkdHlwZSBlcSAnUicKICAgICAgICAgICAgICAgIHx8ICRmb3JjZWRfaW5kZW50YXRpb25fZmxhZyA8IDAgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgIyBvbmx5IGEgbmVzdGluZyBlcnJvciBpbiB0aGUgc2NyaXB0IHdvdWxkIHByZXZlbnQgcG9wcGluZyBoZXJlCiAgICAgICAgICAgICAgICBpZiAoIEB7JHJzbGV2ZWxfc3RhY2t9ID4gMSApIHsgcG9wKCBAeyRyc2xldmVsX3N0YWNrfSApOyB9CgogICAgICAgICAgICAgICAgJGxldmVsX2kgPSAtLSRsZXZlbF9pbl90b2tlbml6ZXI7CgogICAgICAgICAgICAgICAgIyByZXN0b3JlIHByZXZpb3VzIGxldmVsIHZhbHVlcwogICAgICAgICAgICAgICAgaWYgKCBsZW5ndGgoJG5lc3RpbmdfYmxvY2tfc3RyaW5nKSA+IDEgKQogICAgICAgICAgICAgICAgeyAgICAjIHRydWUgZm9yIHZhbGlkIHNjcmlwdAogICAgICAgICAgICAgICAgICAgIGNob3AgJG5lc3RpbmdfYmxvY2tfc3RyaW5nOwogICAgICAgICAgICAgICAgICAgICRuZXN0aW5nX2Jsb2NrX2ZsYWcgPSAoICRuZXN0aW5nX2Jsb2NrX3N0cmluZyA9fiAvMSQvICk7CiAgICAgICAgICAgICAgICAgICAgY2hvcCAkbmVzdGluZ19saXN0X3N0cmluZzsKICAgICAgICAgICAgICAgICAgICAkbmVzdGluZ19saXN0X2ZsYWcgPSAoICRuZXN0aW5nX2xpc3Rfc3RyaW5nID1+IC8xJC8gKTsKCiAgICAgICAgICAgICAgICAgICAgY2hvcCAkY2lfc3RyaW5nX2luX3Rva2VuaXplcjsKICAgICAgICAgICAgICAgICAgICAkY2lfc3RyaW5nX3N1bSA9IG9uZXNfY291bnQoJGNpX3N0cmluZ19pbl90b2tlbml6ZXIpOwoKICAgICAgICAgICAgICAgICAgICAkaW5fc3RhdGVtZW50X2NvbnRpbnVhdGlvbiA9CiAgICAgICAgICAgICAgICAgICAgICBjaG9wICRjb250aW51YXRpb25fc3RyaW5nX2luX3Rva2VuaXplcjsKCiAgICAgICAgICAgICAgICAgICAgIyB6ZXJvIGNvbnRpbnVhdGlvbiBmbGFnIGF0IHRlcm1pbmFsIEJMT0NLICd9JyB3aGljaAogICAgICAgICAgICAgICAgICAgICMgZW5kcyBhIHN0YXRlbWVudC4KICAgICAgICAgICAgICAgICAgICBpZiAoICRyb3V0cHV0X2Jsb2NrX3R5cGUtPlskaV0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIC4uLlRoZXNlIGluY2x1ZGUgbm9uLWFub255bW91cyBzdWJzCiAgICAgICAgICAgICAgICAgICAgICAgICMgbm90ZTogY291bGQgYmUgc3ViIDo6YWJjIHsgb3Igc3ViICdhYmMKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkcm91dHB1dF9ibG9ja190eXBlLT5bJGldID1+IG0vXnN1YlxzKi9nYyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vdGU6IG9sZGVyIHZlcnNpb25zIG9mIHBlcmwgcmVxdWlyZSB0aGUgL2djIG1vZGlmaWVyCiAgICAgICAgICAgICAgICAgICAgICAgICAjIGhlcmUgb3IgZWxzZSB0aGUgXEcgZG9lcyBub3Qgd29yay4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJHJvdXRwdXRfYmxvY2tfdHlwZS0+WyRpXSA9fiAvXEcoJ3w6OnxcdykvZ2MgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbl9zdGF0ZW1lbnRfY29udGludWF0aW9uID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKIyAuLi5hbmQgaW5jbHVkZSBhbGwgYmxvY2sgdHlwZXMgZXhjZXB0IHVzZXIgc3VicyB3aXRoCiMgYmxvY2sgcHJvdG90eXBlcyBhbmQgdGhlc2U6IChzb3J0fGdyZXB8bWFwfGRvfGV2YWwpCiMgL14oXH18XHt8QkVHSU58RU5EfENIRUNLfElOSVR8QVVUT0xPQUR8REVTVFJPWXxVTklUQ0hFQ0t8Y29udGludWV8O3xpZnxlbHNpZnxlbHNlfHVubGVzc3x3aGlsZXx1bnRpbHxmb3J8Zm9yZWFjaCkkLwogICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXNfemVyb19jb250aW51YXRpb25fYmxvY2tfdHlwZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm91dHB1dF9ibG9ja190eXBlLT5bJGldCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluX3N0YXRlbWVudF9jb250aW51YXRpb24gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIC4uYnV0IHRoZXNlIGFyZSBub3QgdGVybWluYWwgdHlwZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICMgICAgIC9eKHNvcnR8Z3JlcHxtYXB8ZG98ZXZhbCkkLyApCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpc19ub3RfemVyb19jb250aW51YXRpb25fYmxvY2tfdHlwZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm91dHB1dF9ibG9ja190eXBlLT5bJGldCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIC4uYW5kIGEgYmxvY2sgaW50cm9kdWNlZCBieSBhIGxhYmVsCiAgICAgICAgICAgICAgICAgICAgICAgICMgL15cdytccyo6JC9nYyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkcm91dHB1dF9ibG9ja190eXBlLT5bJGldID1+IC86JC8gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW5fc3RhdGVtZW50X2NvbnRpbnVhdGlvbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgdXNlciBmdW5jdGlvbiB3aXRoIGJsb2NrIHByb3RvdHlwZQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbl9zdGF0ZW1lbnRfY29udGludWF0aW9uID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBJZiB3ZSBhcmUgaW4gYSBsaXN0LCB0aGVuCiAgICAgICAgICAgICAgICAgICAgIyB3ZSBtdXN0IHNldCBjb250aW51YXRpb24gaW5kZW50YXRpb24gYXQgdGhlIGNsb3NpbmcKICAgICAgICAgICAgICAgICAgICAjIHBhcmVuIG9mIHNvbWV0aGluZyBsaWtlIHRoaXMgKHBhcmVuIGFmdGVyICRjaGVjayk6CiAgICAgICAgICAgICAgICAgICAgIyAgICAgYXNzZXJ0KAogICAgICAgICAgICAgICAgICAgICMgICAgICAgICBfX0xJTkVfXywKICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgKCBub3QgZGVmaW5lZCAkY2hlY2sgKQogICAgICAgICAgICAgICAgICAgICMgICAgICAgICAgIG9yIHJlZiAkY2hlY2sKICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICBvciAkY2hlY2sgZXEgIm5ldyIKICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICBvciAkY2hlY2sgZXEgIm9sZCIsCiAgICAgICAgICAgICAgICAgICAgIyAgICAgKTsKICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICR0b2sgZXEgJyknICkgewogICAgICAgICAgICAgICAgICAgICAgICAkaW5fc3RhdGVtZW50X2NvbnRpbnVhdGlvbiA9IDEKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAkcm91dHB1dF9jb250YWluZXJfdHlwZS0+WyRpXSA9fiAvXls7LFx7XH1dJC87CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICR0b2sgZXEgJzsnICkgeyAkaW5fc3RhdGVtZW50X2NvbnRpbnVhdGlvbiA9IDAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgdXNlIGVudmlyb25tZW50IGFmdGVyIHVwZGF0aW5nCiAgICAgICAgICAgICAgICAkY29udGFpbmVyX2Vudmlyb25tZW50ID0KICAgICAgICAgICAgICAgICAgICAkbmVzdGluZ19ibG9ja19mbGFnID8gJ0JMT0NLJwogICAgICAgICAgICAgICAgICA6ICRuZXN0aW5nX2xpc3RfZmxhZyAgPyAnTElTVCcKICAgICAgICAgICAgICAgICAgOiAgICAgICAgICAgICAgICAgICAgICAgIiI7CiAgICAgICAgICAgICAgICAkY2lfc3RyaW5nX2kgPSAkY2lfc3RyaW5nX3N1bSArICRpbl9zdGF0ZW1lbnRfY29udGludWF0aW9uOwogICAgICAgICAgICAgICAgJG5lc3RpbmdfYmxvY2tfc3RyaW5nX2kgPSAkbmVzdGluZ19ibG9ja19zdHJpbmc7CiAgICAgICAgICAgICAgICAkbmVzdGluZ19saXN0X3N0cmluZ19pICA9ICRuZXN0aW5nX2xpc3Rfc3RyaW5nOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIG5vdCBhIHN0cnVjdHVyYWwgaW5kZW50YXRpb24gdHlwZS4uCiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICRjb250YWluZXJfZW52aXJvbm1lbnQgPQogICAgICAgICAgICAgICAgICAgICRuZXN0aW5nX2Jsb2NrX2ZsYWcgPyAnQkxPQ0snCiAgICAgICAgICAgICAgICAgIDogJG5lc3RpbmdfbGlzdF9mbGFnICA/ICdMSVNUJwogICAgICAgICAgICAgICAgICA6ICAgICAgICAgICAgICAgICAgICAgICAiIjsKCiAgICAgICAgICAgICAgICAjIHplcm8gdGhlIGNvbnRpbnVhdGlvbiBpbmRlbnRhdGlvbiBhdCBjZXJ0YWluIHRva2VucyBzbwogICAgICAgICAgICAgICAgIyB0aGF0IHRoZXkgd2lsbCBiZSBhdCB0aGUgc2FtZSBsZXZlbCBhcyBpdHMgY29udGFpbmVyLiAgRm9yCiAgICAgICAgICAgICAgICAjIGNvbW1hcywgdGhpcyBzaW1wbGlmaWVzIHRoZSAtbHAgaW5kZW50YXRpb24gbG9naWMsIHdoaWNoCiAgICAgICAgICAgICAgICAjIGNvdW50cyBjb21tYXMuICBGb3IgPzogaXQgbWFrZXMgdGhlbSBzdGFuZCBvdXQuCiAgICAgICAgICAgICAgICBpZiAoJG5lc3RpbmdfbGlzdF9mbGFnKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkdHlwZSA9fiAvXlssXD9cOl0kLyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGluX3N0YXRlbWVudF9jb250aW51YXRpb24gPSAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGJlIHN1cmUgYmluYXJ5IG9wZXJhdG9ycyBnZXQgY29udGludWF0aW9uIGluZGVudGF0aW9uCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lcl9lbnZpcm9ubWVudAogICAgICAgICAgICAgICAgICAgICYmICggICAkdHlwZSBlcSAnaycgJiYgJGlzX2JpbmFyeV9rZXl3b3JkeyR0b2t9CiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRpc19iaW5hcnlfdHlwZXskdHlwZX0gKQogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJGluX3N0YXRlbWVudF9jb250aW51YXRpb24gPSAxOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgY29udGludWF0aW9uIGluZGVudGF0aW9uIGlzIHN1bSBvZiBhbnkgb3BlbiBjaSBmcm9tIHByZXZpb3VzCiAgICAgICAgICAgICAgICAjIGxldmVscyBwbHVzIHRoZSBjdXJyZW50IGxldmVsCiAgICAgICAgICAgICAgICAkY2lfc3RyaW5nX2kgPSAkY2lfc3RyaW5nX3N1bSArICRpbl9zdGF0ZW1lbnRfY29udGludWF0aW9uOwoKICAgICAgICAgICAgICAgICMgdXBkYXRlIGNvbnRpbnVhdGlvbiBmbGFnIC4uLgogICAgICAgICAgICAgICAgIyBpZiB0aGlzIGlzbid0IGEgYmxhbmsgb3IgY29tbWVudC4uCiAgICAgICAgICAgICAgICBpZiAoICR0eXBlIG5lICdiJyAmJiAkdHlwZSBuZSAnIycgKSB7CgogICAgICAgICAgICAgICAgICAgICMgYW5kIHdlIGFyZSBpbiBhIEJMT0NLCiAgICAgICAgICAgICAgICAgICAgaWYgKCRuZXN0aW5nX2Jsb2NrX2ZsYWcpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIG5leHQgdG9rZW4gYWZ0ZXIgYSAnOycgYW5kIGxhYmVsIHN0YXJ0cyBhIG5ldyBzdG10CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJHR5cGUgZXEgJzsnIHx8ICR0eXBlIGVxICdKJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbl9zdGF0ZW1lbnRfY29udGludWF0aW9uID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgIyBvdGhlcndpc2UsIHdlIGFyZSBjb250aW51aW5nIHRoZSBjdXJyZW50IHN0YXRlbWVudAogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbl9zdGF0ZW1lbnRfY29udGludWF0aW9uID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBpZiB3ZSBhcmUgbm90IGluIGEgQkxPQ0suLgogICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBkbyBub3QgdXNlIGNvbnRpbnVhdGlvbiBpbmRlbnRhdGlvbiBpZiBub3QgbGlzdAogICAgICAgICAgICAgICAgICAgICAgICAjIGVudmlyb25tZW50IChjb3VsZCBiZSB3aXRoaW4gaWYvZWxzaWYgY2xhdXNlKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEkbmVzdGluZ19saXN0X2ZsYWcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW5fc3RhdGVtZW50X2NvbnRpbnVhdGlvbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlLCB0aGUgdG9rZW4gYWZ0ZXIgYSAnLCcgc3RhcnRzIGEgbmV3IHRlcm0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgUGF0Y2ggRk9SIFJUIzk5OTYxOyBubyBjb250aW51YXRpb24gYWZ0ZXIgYSAnOycKICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHBlcmx0aWR5IGN1cnJlbnRseSBtYXJrcwogICAgICAgICAgICAgICAgICAgICAgICAjIGEgYmxvY2sgcHJlY2VkZWQgYnkgYSB0eXBlIGNoYXJhY3RlciBsaWtlICUgb3IgQAogICAgICAgICAgICAgICAgICAgICAgICAjIGFzIGEgbm9uIGJsb2NrLCB0byBzaW1wbGlmeSBmb3JtYXR0aW5nLiBCdXQgdGhlc2UKICAgICAgICAgICAgICAgICAgICAgICAgIyBhcmUgYWN0dWFsbHkgYmxvY2tzIGFuZCBjYW4gaGF2ZSBzZW1pY29sb25zLgogICAgICAgICAgICAgICAgICAgICAgICAjIFNlZSBjb2RlX2Jsb2NrX3R5cGUoKSBhbmQgaXNfbm9uX3N0cnVjdHVyYWxfYnJhY2UoKS4KICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkdHlwZSBlcSAnLCcgfHwgJHR5cGUgZXEgJzsnICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluX3N0YXRlbWVudF9jb250aW51YXRpb24gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIG90aGVyd2lzZSwgd2UgYXJlIGNvbnRpbnVpbmcgdGhlIGN1cnJlbnQgdGVybQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbl9zdGF0ZW1lbnRfY29udGludWF0aW9uID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkbGV2ZWxfaW5fdG9rZW5pemVyIDwgMCApIHsKICAgICAgICAgICAgICAgIHVubGVzcyAoICR0b2tlbml6ZXJfc2VsZi0+e19zYXdfbmVnYXRpdmVfaW5kZW50YXRpb259ICkgewogICAgICAgICAgICAgICAgICAgICR0b2tlbml6ZXJfc2VsZi0+e19zYXdfbmVnYXRpdmVfaW5kZW50YXRpb259ID0gMTsKICAgICAgICAgICAgICAgICAgICB3YXJuaW5nKCJTdGFydGluZyBuZWdhdGl2ZSBpbmRlbnRhdGlvblxuIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2V0IHNlY29uZGFyeSBuZXN0aW5nIGxldmVscyBiYXNlZCBvbiBhbGwgY29udGFpbm1lbnQgdG9rZW4gdHlwZXMKICAgICAgICAgICAgIyBOb3RlOiB0aGVzZSBhcmUgc2V0IHNvIHRoYXQgdGhlIG5lc3RpbmcgZGVwdGggaXMgdGhlIGRlcHRoCiAgICAgICAgICAgICMgb2YgdGhlIFBSRVZJT1VTIFRPS0VOLCB3aGljaCBpcyBjb252ZW5pZW50IGZvciBzZXR0aW5nCiAgICAgICAgICAgICMgdGhlIHN0cmVuZ3RoIG9mIHRva2VuIGJvbmRzCiAgICAgICAgICAgIG15ICRzbGV2ZWxfaSA9ICRzbGV2ZWxfaW5fdG9rZW5pemVyOwoKICAgICAgICAgICAgIyAgICAvXltMXHtcKFxbXSQvCiAgICAgICAgICAgIGlmICggJGlzX29wZW5pbmdfdHlwZXskdHlwZX0gKSB7CiAgICAgICAgICAgICAgICAkc2xldmVsX2luX3Rva2VuaXplcisrOwogICAgICAgICAgICAgICAgJG5lc3RpbmdfdG9rZW5fc3RyaW5nIC49ICR0b2s7CiAgICAgICAgICAgICAgICAkbmVzdGluZ190eXBlX3N0cmluZyAgLj0gJHR5cGU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgICAgICAgL15bUlx9XClcXV0kLwogICAgICAgICAgICBlbHNpZiAoICRpc19jbG9zaW5nX3R5cGV7JHR5cGV9ICkgewogICAgICAgICAgICAgICAgJHNsZXZlbF9pbl90b2tlbml6ZXItLTsKICAgICAgICAgICAgICAgIG15ICRjaGFyID0gY2hvcCAkbmVzdGluZ190b2tlbl9zdHJpbmc7CgogICAgICAgICAgICAgICAgaWYgKCAkY2hhciBuZSAkbWF0Y2hpbmdfc3RhcnRfdG9rZW57JHRva30gKSB7CiAgICAgICAgICAgICAgICAgICAgJG5lc3RpbmdfdG9rZW5fc3RyaW5nIC49ICRjaGFyIC4gJHRvazsKICAgICAgICAgICAgICAgICAgICAkbmVzdGluZ190eXBlX3N0cmluZyAgLj0gJHR5cGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBjaG9wICRuZXN0aW5nX3R5cGVfc3RyaW5nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoKCBAYmxvY2tfdHlwZSwgICAgICAgICAgICAkcm91dHB1dF9ibG9ja190eXBlLT5bJGldICk7CiAgICAgICAgICAgIHB1c2goIEBjaV9zdHJpbmcsICAgICAgICAgICAgICRjaV9zdHJpbmdfaSApOwogICAgICAgICAgICBwdXNoKCBAY29udGFpbmVyX2Vudmlyb25tZW50LCAkY29udGFpbmVyX2Vudmlyb25tZW50ICk7CiAgICAgICAgICAgIHB1c2goIEBjb250YWluZXJfdHlwZSwgICAgICAgICRyb3V0cHV0X2NvbnRhaW5lcl90eXBlLT5bJGldICk7CiAgICAgICAgICAgIHB1c2goIEBsZXZlbHMsICAgICAgICAgICAgICAgICRsZXZlbF9pICk7CiAgICAgICAgICAgIHB1c2goIEBuZXN0aW5nX3Rva2VucywgICAgICAgICRuZXN0aW5nX3Rva2VuX3N0cmluZ19pICk7CiAgICAgICAgICAgIHB1c2goIEBuZXN0aW5nX3R5cGVzLCAgICAgICAgICRuZXN0aW5nX3R5cGVfc3RyaW5nX2kgKTsKICAgICAgICAgICAgcHVzaCggQHNsZXZlbHMsICAgICAgICAgICAgICAgJHNsZXZlbF9pICk7CiAgICAgICAgICAgIHB1c2goIEB0b2tlbl90eXBlLCAgICAgICAgICAgICRmaXhfdHlwZSApOwogICAgICAgICAgICBwdXNoKCBAdHlwZV9zZXF1ZW5jZSwgICAgICAgICAkcm91dHB1dF90eXBlX3NlcXVlbmNlLT5bJGldICk7CiAgICAgICAgICAgIHB1c2goIEBuZXN0aW5nX2Jsb2NrcywgICAgICAgICRuZXN0aW5nX2Jsb2NrX3N0cmluZyApOwogICAgICAgICAgICBwdXNoKCBAbmVzdGluZ19saXN0cywgICAgICAgICAkbmVzdGluZ19saXN0X3N0cmluZyApOwoKICAgICAgICAgICAgIyBub3cgZm9ybSB0aGUgcHJldmlvdXMgdG9rZW4KICAgICAgICAgICAgaWYgKCAkaW0gPj0gMCApIHsKICAgICAgICAgICAgICAgICRudW0gPQogICAgICAgICAgICAgICAgICAkcnRva2VuX21hcC0+WyRpXSAtICRydG9rZW5fbWFwLT5bJGltXTsgICMgaG93IG1hbnkgY2hhcmFjdGVycwoKICAgICAgICAgICAgICAgIGlmICggJG51bSA+IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCggQHRva2VucywKICAgICAgICAgICAgICAgICAgICAgICAgc3Vic3RyKCAkaW5wdXRfbGluZSwgJHJ0b2tlbl9tYXAtPlskaW1dLCAkbnVtICkgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkaW0gPSAkaTsKICAgICAgICB9CgogICAgICAgICRudW0gPSBsZW5ndGgoJGlucHV0X2xpbmUpIC0gJHJ0b2tlbl9tYXAtPlskaW1dOyAgICMgbWFrZSB0aGUgbGFzdCB0b2tlbgogICAgICAgIGlmICggJG51bSA+IDAgKSB7CiAgICAgICAgICAgIHB1c2goIEB0b2tlbnMsIHN1YnN0ciggJGlucHV0X2xpbmUsICRydG9rZW5fbWFwLT5bJGltXSwgJG51bSApICk7CiAgICAgICAgfQoKICAgICAgICAkdG9rZW5pemVyX3NlbGYtPntfaW5fYXR0cmlidXRlX2xpc3R9ID0gJGluX2F0dHJpYnV0ZV9saXN0OwogICAgICAgICR0b2tlbml6ZXJfc2VsZi0+e19pbl9xdW90ZX0gICAgICAgICAgPSAkaW5fcXVvdGU7CiAgICAgICAgJHRva2VuaXplcl9zZWxmLT57X3F1b3RlX3RhcmdldH0gPQogICAgICAgICAgJGluX3F1b3RlID8gbWF0Y2hpbmdfZW5kX3Rva2VuKCRxdW90ZV9jaGFyYWN0ZXIpIDogIiI7CiAgICAgICAgJHRva2VuaXplcl9zZWxmLT57X3JoZXJlX3RhcmdldF9saXN0fSA9ICRyaGVyZV90YXJnZXRfbGlzdDsKCiAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X3J0b2tlbl90eXBlfSAgICAgICAgICAgID0gXEB0b2tlbl90eXBlOwogICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19ydG9rZW5zfSAgICAgICAgICAgICAgICA9IFxAdG9rZW5zOwogICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19yYmxvY2tfdHlwZX0gICAgICAgICAgICA9IFxAYmxvY2tfdHlwZTsKICAgICAgICAkbGluZV9vZl90b2tlbnMtPntfcmNvbnRhaW5lcl90eXBlfSAgICAgICAgPSBcQGNvbnRhaW5lcl90eXBlOwogICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19yY29udGFpbmVyX2Vudmlyb25tZW50fSA9IFxAY29udGFpbmVyX2Vudmlyb25tZW50OwogICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19ydHlwZV9zZXF1ZW5jZX0gICAgICAgICA9IFxAdHlwZV9zZXF1ZW5jZTsKICAgICAgICAkbGluZV9vZl90b2tlbnMtPntfcmxldmVsc30gICAgICAgICAgICAgICAgPSBcQGxldmVsczsKICAgICAgICAkbGluZV9vZl90b2tlbnMtPntfcnNsZXZlbHN9ICAgICAgICAgICAgICAgPSBcQHNsZXZlbHM7CiAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X3JuZXN0aW5nX3Rva2Vuc30gICAgICAgID0gXEBuZXN0aW5nX3Rva2VuczsKICAgICAgICAkbGluZV9vZl90b2tlbnMtPntfcmNpX2xldmVsc30gICAgICAgICAgICAgPSBcQGNpX3N0cmluZzsKICAgICAgICAkbGluZV9vZl90b2tlbnMtPntfcm5lc3RpbmdfYmxvY2tzfSAgICAgICAgPSBcQG5lc3RpbmdfYmxvY2tzOwoKICAgICAgICByZXR1cm47CiAgICB9Cn0gICAgIyBlbmQgdG9rZW5pemVfdGhpc19saW5lCgojIyMjIyMjIyNpIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFRva2VuaXplciByb3V0aW5lcyB3aGljaCBhc3Npc3QgaW4gaWRlbnRpZnlpbmcgdG9rZW4gdHlwZXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnN1YiBvcGVyYXRvcl9leHBlY3RlZCB7CgogICAgIyBNYW55IHBlcmwgc3ltYm9scyBoYXZlIHR3byBvciBtb3JlIG1lYW5pbmdzLiAgRm9yIGV4YW1wbGUsICc8PCcKICAgICMgY2FuIGJlIGEgc2hpZnQgb3BlcmF0b3Igb3IgYSBoZXJlLWRvYyBvcGVyYXRvci4gIFRoZQogICAgIyBpbnRlcnByZXRhdGlvbiBvZiB0aGVzZSBzeW1ib2xzIGRlcGVuZHMgb24gdGhlIGN1cnJlbnQgc3RhdGUgb2YKICAgICMgdGhlIHRva2VuaXplciwgd2hpY2ggbWF5IGVpdGhlciBiZSBleHBlY3RpbmcgYSB0ZXJtIG9yIGFuCiAgICAjIG9wZXJhdG9yLiAgRm9yIHRoaXMgZXhhbXBsZSwgYSA8PCB3b3VsZCBiZSBhIHNoaWZ0IGlmIGFuIG9wZXJhdG9yCiAgICAjIGlzIGV4cGVjdGVkLCBhbmQgYSBoZXJlLWRvYyBpZiBhIHRlcm0gaXMgZXhwZWN0ZWQuICBUaGlzIHJvdXRpbmUKICAgICMgaXMgY2FsbGVkIHRvIG1ha2UgdGhpcyBkZWNpc2lvbiBmb3IgYW55IGN1cnJlbnQgdG9rZW4uICBJdCByZXR1cm5zCiAgICAjIG9uZSBvZiB0aHJlZSBwb3NzaWJsZSB2YWx1ZXM6CiAgICAjCiAgICAjICAgICBPUEVSQVRPUiAtIG9wZXJhdG9yIGV4cGVjdGVkIChvciBhdCBsZWFzdCwgbm90IGEgdGVybSkKICAgICMgICAgIFVOS05PV04gIC0gY2FuJ3QgdGVsbAogICAgIyAgICAgVEVSTSAgICAgLSBhIHRlcm0gaXMgZXhwZWN0ZWQgKG9yIGF0IGxlYXN0LCBub3QgYW4gb3BlcmF0b3IpCiAgICAjCiAgICAjIFRoZSBkZWNpc2lvbiBpcyBiYXNlZCBvbiB3aGF0IGhhcyBiZWVuIHNlZW4gc28gZmFyLiAgVGhpcwogICAgIyBpbmZvcm1hdGlvbiBpcyBzdG9yZWQgaW4gdGhlICIkbGFzdF9ub25ibGFua190eXBlIiBhbmQKICAgICMgIiRsYXN0X25vbmJsYW5rX3Rva2VuIiB2YXJpYWJsZXMuICBGb3IgZXhhbXBsZSwgaWYgdGhlCiAgICAjICRsYXN0X25vbmJsYW5rX3R5cGUgaXMgJz1+JywgdGhlbiB3ZSBhcmUgZXhwZWN0aW5nIGEgVEVSTSwgd2hlcmVhcwogICAgIyBpZiAkbGFzdF9ub25ibGFua190eXBlIGlzICduJyAobnVtZXJpYyksIHdlIGFyZSBleHBlY3RpbmcgYW4KICAgICMgT1BFUkFUT1IuCiAgICAjCiAgICAjIElmIGEgVU5LTk9XTiBpcyByZXR1cm5lZCwgdGhlIGNhbGxpbmcgcm91dGluZSBtdXN0IGd1ZXNzLiBBIG1ham9yCiAgICAjIGdvYWwgb2YgdGhpcyB0b2tlbml6ZXIgaXMgdG8gbWluaW1pemUgdGhlIHBvc3NpYmlsaXR5IG9mIHJldHVybmluZwogICAgIyBVTktOT1dOLCBiZWNhdXNlIGEgd3JvbmcgZ3Vlc3MgY2FuIHNwb2lsIHRoZSBmb3JtYXR0aW5nIG9mIGEKICAgICMgc2NyaXB0LgogICAgIwogICAgIyBhZGRpbmcgTkVXX1RPS0VOUzogaXQgaXMgY3JpdGljYWxseSBpbXBvcnRhbnQgdGhhdCB0aGlzIHJvdXRpbmUgYmUKICAgICMgdXBkYXRlZCB0byBhbGxvdyBpdCB0byBkZXRlcm1pbmUgaWYgYW4gb3BlcmF0b3Igb3IgdGVybSBpcyB0byBiZQogICAgIyBleHBlY3RlZCBhZnRlciB0aGUgbmV3IHRva2VuLiAgRG9pbmcgdGhpcyBzaW1wbHkgaW52b2x2ZXMgYWRkaW5nCiAgICAjIHRoZSBuZXcgdG9rZW4gY2hhcmFjdGVyIHRvIG9uZSBvZiB0aGUgcmVnZXhlcyBpbiB0aGlzIHJvdXRpbmUgb3IKICAgICMgdG8gb25lIG9mIHRoZSBoYXNoIGxpc3RzCiAgICAjIHRoYXQgaXQgdXNlcywgd2hpY2ggYXJlIGluaXRpYWxpemVkIGluIHRoZSBCRUdJTiBzZWN0aW9uLgogICAgIyBVU0VTIEdMT0JBTCBWQVJJQUJMRVM6ICRsYXN0X25vbmJsYW5rX3R5cGUsICRsYXN0X25vbmJsYW5rX3Rva2VuLAogICAgIyAkc3RhdGVtZW50X3R5cGUKCiAgICBteSAoICRwcmV2X3R5cGUsICR0b2ssICRuZXh0X3R5cGUgKSA9IEBfOwoKICAgIG15ICRvcF9leHBlY3RlZCA9IFVOS05PV047CgojI3ByaW50ICJ0b2s9JHRvayBsYXN0IHR5cGU9JGxhc3Rfbm9uYmxhbmtfdHlwZSBsYXN0IHRvaz0kbGFzdF9ub25ibGFua190b2tlblxuIjsKCiMgTm90ZTogZnVuY3Rpb24gcHJvdG90eXBlIGlzIGF2YWlsYWJsZSBmb3IgdG9rZW4gdHlwZSAnVScgZm9yIGZ1dHVyZQojIHByb2dyYW0gZGV2ZWxvcG1lbnQuICBJdCBjb250YWlucyB0aGUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGFyZW5zLAojIGFuZCBubyBibGFua3MuICBJdCBtaWdodCBiZSB1c2VkIHRvIGVsaW1pbmF0ZSB0b2tlbiB0eXBlICdDJywgZm9yCiMgZXhhbXBsZSAocHJvdG90eXBlID0gJygpJykuIFRodXM6CiMgaWYgKCRsYXN0X25vbmJsYW5rX3R5cGUgZXEgJ1UnKSB7CiMgICAgIHByaW50ICJwcmV2aW91cyB0b2tlbj0kbGFzdF9ub25ibGFua190b2tlbiAgdHlwZT0kbGFzdF9ub25ibGFua190eXBlIHByb3RvdHlwZT0kbGFzdF9ub25ibGFua19wcm90b3R5cGVcbiI7CiMgfQoKICAgICMgQSBwb3NzaWJsZSBmaWxlaGFuZGxlIChvciBvYmplY3QpIHJlcXVpcmVzIHNvbWUgY2FyZS4uLgogICAgaWYgKCAkbGFzdF9ub25ibGFua190eXBlIGVxICdaJyApIHsKCiAgICAgICAgIyBhbmdsZS50CiAgICAgICAgaWYgKCAkbGFzdF9ub25ibGFua190b2tlbiA9fiAvXltBLVphLXpfXS8gKSB7CiAgICAgICAgICAgICRvcF9leHBlY3RlZCA9IFVOS05PV047CiAgICAgICAgfQoKICAgICAgICAjIEZvciBwb3NzaWJsZSBmaWxlIGhhbmRsZSBsaWtlICIkYSIsIFBlcmwgdXNlcyB3ZWlyZCBwYXJzaW5nIHJ1bGVzLgogICAgICAgICMgRm9yIGV4YW1wbGU6CiAgICAgICAgIyBwcmludCAkYS8yLCIvaGkiOyAgIC0gZGl2aXNpb24KICAgICAgICAjIHByaW50ICRhIC8gMiwiL2hpIjsgLSBkaXZpc2lvbgogICAgICAgICMgcHJpbnQgJGEvIDIsIi9oaSI7ICAtIGRpdmlzaW9uCiAgICAgICAgIyBwcmludCAkYSAvMiwiL2hpIjsgIC0gcGF0dGVybiAoYW5kIGVycm9yKSEKICAgICAgICBlbHNpZiAoICggJHByZXZfdHlwZSBlcSAnYicgKSAmJiAoICRuZXh0X3R5cGUgbmUgJ2InICkgKSB7CiAgICAgICAgICAgICRvcF9leHBlY3RlZCA9IFRFUk07CiAgICAgICAgfQoKICAgICAgICAjIE5vdGUgd2hlbiBhbiBvcGVyYXRpb24gaXMgYmVpbmcgZG9uZSB3aGVyZSBhCiAgICAgICAgIyBmaWxlaGFuZGxlIG1pZ2h0IGJlIGV4cGVjdGVkLCBzaW5jZSBhIGNoYW5nZSBpbiB3aGl0ZXNwYWNlCiAgICAgICAgIyBjb3VsZCBjaGFuZ2UgdGhlIGludGVycHJldGF0aW9uIG9mIHRoZSBzdGF0ZW1lbnQuCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGlmICggJHRvayA9fiAvXihbeFwvXCtcLVwqXCVcJlwuXD9cPF18XD5cPikkLyApIHsKCiAgICAgICAgICAgICAgICMgRG8gbm90IGNvbXBsYWluIGluICd1c2UnIHN0YXRlbWVudHMsIHdoaWNoIGhhdmUgc3BlY2lhbCBzeW50YXguCiAgICAgICAgICAgICAgICMgRm9yIGV4YW1wbGUsIGZyb20gUlQjMTMwMzQ0OgogICAgICAgICAgICAgICAjICAgdXNlIGxpYiAkRmluZEJpbjo6QmluIC4gJy9saWInOwogICAgICAgICAgICAgICAgaWYgKCAkc3RhdGVtZW50X3R5cGUgbmUgJ3VzZScgKSB7CiAgICAgICAgICAgICAgICAgICAgY29tcGxhaW4oIm9wZXJhdG9yIGluIHByaW50IHN0YXRlbWVudCBub3QgcmVjb21tZW5kZWRcbiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJG9wX2V4cGVjdGVkID0gT1BFUkFUT1I7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBDaGVjayBmb3Igc21hcnRtYXRjaCBvcGVyYXRvciBiZWZvcmUgcHJlY2VkaW5nIGJyYWNlIG9yIHNxdWFyZSBicmFja2V0LgogICAgIyBGb3IgZXhhbXBsZSwgYXQgdGhlID8gYWZ0ZXIgdGhlIF0gaW4gdGhlIGZvbGxvd2luZyBleHByZXNzaW9ucyB3ZSBhcmUKICAgICMgZXhwZWN0aW5nIGFuIG9wZXJhdG9yOgogICAgIwogICAgIyBxci8zLyB+fiBbJzEyMzQnXSA/IDEgOiAwOwogICAgIyBtYXAgeyAkXyB+fiBbICcwJywgJzEnIF0gPyAneCcgOiAnbycgfSBAYTsKICAgIGVsc2lmICggJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAnfScgJiYgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gZXEgJ35+JyApIHsKICAgICAgICAkb3BfZXhwZWN0ZWQgPSBPUEVSQVRPUjsKICAgIH0KCiAgICAjIGhhbmRsZSBzb21ldGhpbmcgYWZ0ZXIgJ2RvJyBhbmQgJ2V2YWwnCiAgICBlbHNpZiAoICRpc19ibG9ja19vcGVyYXRvcnskbGFzdF9ub25ibGFua190b2tlbn0gKSB7CgogICAgICAgICMgc29tZXRoaW5nIGxpa2UgJGEgPSBldmFsICJleHByZXNzaW9uIjsKICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICBeCiAgICAgICAgaWYgKCAkbGFzdF9ub25ibGFua190eXBlIGVxICdrJyApIHsKICAgICAgICAgICAgJG9wX2V4cGVjdGVkID0gVEVSTTsgICAgIyBleHByZXNzaW9uIG9yIGxpc3QgbW9kZSBmb2xsb3dpbmcga2V5d29yZAogICAgICAgIH0KCiAgICAgICAgIyBzb21ldGhpbmcgbGlrZSAkYSA9IGRvIHsgQkxPQ0sgfSAvIDI7CiAgICAgICAgIyBvciB0aGlzID8gYWZ0ZXIgYSBzbWFydG1hdGNoIGFub255bm1vdXMgaGFzaCBvciBhcnJheSByZWZlcmVuY2U6CiAgICAgICAgIyAgIHFyLzMvIH5+IFsnMTIzNCddID8gMSA6IDA7CiAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRvcF9leHBlY3RlZCA9IE9QRVJBVE9SOyAgICAjIGJsb2NrIG1vZGUgZm9sbG93aW5nIH0KICAgICAgICB9CiAgICB9CgogICAgIyBoYW5kbGUgYmFyZSB3b3JkLi4KICAgIGVsc2lmICggJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAndycgKSB7CgogICAgICAgICMgdW5mb3J0dW5hdGVseSwgd2UgY2FuJ3QgdGVsbCB3aGF0IHR5cGUgb2YgdG9rZW4gdG8gZXhwZWN0IG5leHQKICAgICAgICAjIGFmdGVyIG1vc3QgYmFyZSB3b3JkcwogICAgICAgICRvcF9leHBlY3RlZCA9IFVOS05PV047CiAgICB9CgogICAgIyBvcGVyYXRvciwgYnV0IG5vdCB0ZXJtIHBvc3NpYmxlIGFmdGVyIHRoZXNlIHR5cGVzCiAgICAjIE5vdGU6IG1vdmVkICcpJyBmcm9tIHR5cGUgdG8gdG9rZW4gYmVjYXVzZSBwYXJlbnMgaW4gbGlzdCBjb250ZXh0CiAgICAjIGdldCBtYXJrZWQgYXMgJ3snICd9JyBub3cuICBUaGlzIGlzIGEgbWlub3IgZ2xpdGNoIGluIHRoZSBmb2xsb3dpbmc6CiAgICAjICAgIG15ICVvcHRzID0gKHJlZiAkX1swXSBlcSAnSEFTSCcpID8gJXtzaGlmdCgpfSA6ICgpOwogICAgIwogICAgZWxzaWYgKCggJGxhc3Rfbm9uYmxhbmtfdHlwZSA9fiAvXltcXVJudmlRaF0kLyApCiAgICAgICAgfHwgKCAkbGFzdF9ub25ibGFua190b2tlbiA9fiAvXihcKXxcJHxcLVw+KS8gKSApCiAgICB7CiAgICAgICAgJG9wX2V4cGVjdGVkID0gT1BFUkFUT1I7CgogICAgICAgICMgaW4gYSAndXNlJyBzdGF0ZW1lbnQsIG51bWJlcnMgYW5kIHYtc3RyaW5ncyBhcmUgbm90IHRydWUKICAgICAgICAjIG51bWJlcnMsIHNvIHRvIGF2b2lkIGluY29ycmVjdCBlcnJvciBtZXNzYWdlcywgd2Ugd2lsbAogICAgICAgICMgbWFyayB0aGVtIGFzIHVua25vd24gZm9yIG5vdyAodXNlLnQpCiAgICAgICAgIyBUT0RPOiBpdCB3b3VsZCBiZSBtdWNoIG5pY2VyIHRvIGNyZWF0ZSBhIG5ldyB0b2tlbiBWIGZvciBWRVJTSU9OCiAgICAgICAgIyBudW1iZXIgaW4gYSB1c2Ugc3RhdGVtZW50LiAgVGhlbiB0aGlzIGNvdWxkIGJlIGEgY2hlY2sgb24gdHlwZSBWCiAgICAgICAgIyBhbmQgcmVsYXRlZCBwYXRjaGVzIHdoaWNoIGNoYW5nZSAkc3RhdGVtZW50X3R5cGUgZm9yICc9PicKICAgICAgICAjIGFuZCAnLCcgY291bGQgYmUgcmVtb3ZlZC4gIEZ1cnRoZXIsIGl0IHdvdWxkIGNsZWFuIHRoaW5ncyB1cCB0bwogICAgICAgICMgc2NhbiB0aGUgJ3VzZScgc3RhdGVtZW50IHdpdGggYSBzZXBhcmF0ZSBzdWJyb3V0aW5lLgogICAgICAgIGlmICggICAoICRzdGF0ZW1lbnRfdHlwZSBlcSAndXNlJyApCiAgICAgICAgICAgICYmICggJGxhc3Rfbm9uYmxhbmtfdHlwZSA9fiAvXltudl0kLyApICkKICAgICAgICB7CiAgICAgICAgICAgICRvcF9leHBlY3RlZCA9IFVOS05PV047CiAgICAgICAgfQoKICAgICAgICAjIGV4cGVjdGluZyBWRVJTSU9OIG9yIHt9IGFmdGVyIHBhY2thZ2UgTkFNRVNQQUNFCiAgICAgICAgZWxzaWYgKCRzdGF0ZW1lbnRfdHlwZSA9fiAvXnBhY2thZ2VcYi8KICAgICAgICAgICAgJiYgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gPX4gL15wYWNrYWdlXGIvICkKICAgICAgICB7CiAgICAgICAgICAgICRvcF9leHBlY3RlZCA9IFRFUk07CiAgICAgICAgfQogICAgfQoKICAgICMgbm8gb3BlcmF0b3IgYWZ0ZXIgbWFueSBrZXl3b3Jkcywgc3VjaCBhcyAiZGllIiwgIndhcm4iLCBldGMKICAgIGVsc2lmICggJGV4cGVjdGluZ190ZXJtX3Rva2VueyRsYXN0X25vbmJsYW5rX3Rva2VufSApIHsKCiAgICAgICAgIyAvLyBtYXkgZm9sbG93IHBlcmwgZnVuY3Rpb25zIHdoaWNoIG1heSBiZSB1bmFyeSBvcGVyYXRvcnMKICAgICAgICAjIHNlZSB0ZXN0IGZpbGUgZG9yLnQgKGRlZmluZWQgb3IpOwogICAgICAgIGlmICggICAkdG9rIGVxICcvJwogICAgICAgICAgICAmJiAkbmV4dF90eXBlIGVxICcvJwogICAgICAgICAgICAmJiAkbGFzdF9ub25ibGFua190eXBlIGVxICdrJwogICAgICAgICAgICAmJiAkaXNfa2V5d29yZF90YWtpbmdfb3B0aW9uYWxfYXJnc3skbGFzdF9ub25ibGFua190b2tlbn0gKQogICAgICAgIHsKICAgICAgICAgICAgJG9wX2V4cGVjdGVkID0gT1BFUkFUT1I7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkb3BfZXhwZWN0ZWQgPSBURVJNOwogICAgICAgIH0KICAgIH0KCiAgICAjIG5vIG9wZXJhdG9yIGFmdGVyIHRoaW5ncyBsaWtlICsgLSAqKiAgKGkuZS4sIG90aGVyIG9wZXJhdG9ycykKICAgIGVsc2lmICggJGV4cGVjdGluZ190ZXJtX3R5cGVzeyRsYXN0X25vbmJsYW5rX3R5cGV9ICkgewogICAgICAgICRvcF9leHBlY3RlZCA9IFRFUk07CiAgICB9CgogICAgIyBhIGZldyBvcGVyYXRvcnMsIGxpa2UgInRpbWUiLCBoYXZlIGFuIGVtcHR5IHByb3RvdHlwZSAoKSBhbmQgc28KICAgICMgdGFrZSBubyBwYXJhbWV0ZXJzIGJ1dCBwcm9kdWNlIGEgdmFsdWUgdG8gb3BlcmF0ZSBvbgogICAgZWxzaWYgKCAkZXhwZWN0aW5nX29wZXJhdG9yX3Rva2VueyRsYXN0X25vbmJsYW5rX3Rva2VufSApIHsKICAgICAgICAkb3BfZXhwZWN0ZWQgPSBPUEVSQVRPUjsKICAgIH0KCiAgICAjIHBvc3QtaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgcHJvZHVjZSB2YWx1ZXMgdG8gYmUgb3BlcmF0ZWQgb24KICAgIGVsc2lmICggJGV4cGVjdGluZ19vcGVyYXRvcl90eXBlc3skbGFzdF9ub25ibGFua190eXBlfSApIHsKICAgICAgICAkb3BfZXhwZWN0ZWQgPSBPUEVSQVRPUjsKICAgIH0KCiAgICAjIG5vIHZhbHVlIHRvIG9wZXJhdGUgb24gYWZ0ZXIgc3ViIGJsb2NrCiAgICBlbHNpZiAoICRsYXN0X25vbmJsYW5rX3Rva2VuID1+IC9ec3ViXHMvICkgeyAkb3BfZXhwZWN0ZWQgPSBURVJNOyB9CgogICAgIyBhIHJpZ2h0IGJyYWNlIGhlcmUgaW5kaWNhdGVzIHRoZSBlbmQgb2YgYSBzaW1wbGUgYmxvY2suCiAgICAjIGFsbCBub24tc3RydWN0dXJhbCByaWdodCBicmFjZXMgaGF2ZSB0eXBlICdSJwogICAgIyBhbGwgYnJhY2VzIGFzc29jaWF0ZWQgd2l0aCBibG9jayBvcGVyYXRvciBrZXl3b3JkcyBoYXZlIGJlZW4gZ2l2ZW4gdGhvc2UKICAgICMga2V5d29yZHMgYXMgImxhc3Rfbm9uYmxhbmtfdG9rZW4iIGFuZCBjYXVnaHQgYWJvdmUuCiAgICAjIChUaGlzIHN0YXRlbWVudCBpcyBvcmRlciBkZXBlbmRlbnQsIGFuZCBtdXN0IGNvbWUgYWZ0ZXIgY2hlY2tpbmcKICAgICMgJGxhc3Rfbm9uYmxhbmtfdG9rZW4pLgogICAgZWxzaWYgKCAkbGFzdF9ub25ibGFua190eXBlIGVxICd9JyApIHsKCiAgICAgICAgIyBwYXRjaCBmb3IgZG9yLnQgKGRlZmluZWQgb3IpLgogICAgICAgIGlmICggICAkdG9rIGVxICcvJwogICAgICAgICAgICAmJiAkbmV4dF90eXBlIGVxICcvJwogICAgICAgICAgICAmJiAkbGFzdF9ub25ibGFua190b2tlbiBlcSAnXScgKQogICAgICAgIHsKICAgICAgICAgICAgJG9wX2V4cGVjdGVkID0gT1BFUkFUT1I7CiAgICAgICAgfQoKICAgICAgICAjIFBhdGNoIGZvciBSVCAjMTE2MzQ0OiBtaXNwYXJzZSBhIHRlcm5hcnkgb3BlcmF0b3IgYWZ0ZXIgYW4gYW5vbnltb3VzCiAgICAgICAgIyBoYXNoLCBsaWtlIHRoaXM6CiAgICAgICAgIyAgIHJldHVybiByZWYge30gPyAxIDogMDsKICAgICAgICAjIFRoZSByaWdodCBicmFjZSBzaG91bGQgcmVhbGx5IGJlIG1hcmtlZCB0eXBlICdSJyBpbiB0aGlzIGNhc2UsIGFuZAogICAgICAgICMgaXQgaXMgc2FmZXN0IHRvIHJldHVybiBhbiBVTktOT1dOIGhlcmUuIEV4cGVjdGluZyBhIFRFUk0gd2lsbAogICAgICAgICMgY2F1c2UgdGhlICc/JyB0byBhbHdheXMgYmUgaW50ZXJwcmV0ZWQgYXMgYSBwYXR0ZXJuIGRlbGltaXRlcgogICAgICAgICMgcmF0aGVyIHRoYW4gaW50cm9kdWNpbmcgYSB0ZXJuYXJ5IG9wZXJhdG9yLgogICAgICAgIGVsc2lmICggJHRvayBlcSAnPycgKSB7CiAgICAgICAgICAgICRvcF9leHBlY3RlZCA9IFVOS05PV047CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkb3BfZXhwZWN0ZWQgPSBURVJNOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNvbWV0aGluZyBlbHNlLi53aGF0IGRpZCBJIGZvcmdldD8KICAgIGVsc2UgewoKICAgICAgICAjIGNvbGxlY3RpbmcgZGlhZ25vc3RpY3Mgb24gdW5rbm93biBvcGVyYXRvciB0eXBlcy4uc2VlIHdoYXQgd2FzIG1pc3NlZAogICAgICAgICRvcF9leHBlY3RlZCA9IFVOS05PV047CiAgICAgICAgd3JpdGVfZGlhZ25vc3RpY3MoCiJPUDogdW5rbm93biBhZnRlciB0eXBlPSRsYXN0X25vbmJsYW5rX3R5cGUgIHRva2VuPSRsYXN0X25vbmJsYW5rX3Rva2VuXG4iCiAgICAgICAgKTsKICAgIH0KCiAgICBUT0tFTklaRVJfREVCVUdfRkxBR19FWFBFQ1QgJiYgZG8gewogICAgICAgIHByaW50IFNURE9VVAoiRVhQRUNUOiByZXR1cm5zICRvcF9leHBlY3RlZCBmb3IgbGFzdCB0eXBlICRsYXN0X25vbmJsYW5rX3R5cGUgdG9rZW4gJGxhc3Rfbm9uYmxhbmtfdG9rZW5cbiI7CiAgICB9OwogICAgcmV0dXJuICRvcF9leHBlY3RlZDsKfQoKc3ViIG5ld19zdGF0ZW1lbnRfb2sgewoKICAgICMgcmV0dXJuIHRydWUgaWYgdGhlIGN1cnJlbnQgdG9rZW4gY2FuIHN0YXJ0IGEgbmV3IHN0YXRlbWVudAogICAgIyBVU0VTIEdMT0JBTCBWQVJJQUJMRVM6ICRsYXN0X25vbmJsYW5rX3R5cGUKCiAgICByZXR1cm4gbGFiZWxfb2soKSAgICAjIGEgbGFiZWwgd291bGQgYmUgb2sgaGVyZQoKICAgICAgfHwgJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAnSic7ICAgICMgb3Igd2UgZm9sbG93IGEgbGFiZWwKCn0KCnN1YiBsYWJlbF9vayB7CgogICAgIyBEZWNpZGUgaWYgYSBiYXJlIHdvcmQgZm9sbG93ZWQgYnkgYSBjb2xvbiBoZXJlIGlzIGEgbGFiZWwKICAgICMgVVNFUyBHTE9CQUwgVkFSSUFCTEVTOiAkbGFzdF9ub25ibGFua190b2tlbiwgJGxhc3Rfbm9uYmxhbmtfdHlwZSwKICAgICMgJGJyYWNlX2RlcHRoLCBAYnJhY2VfdHlwZQoKICAgICMgaWYgaXQgZm9sbG93cyBhbiBvcGVuaW5nIG9yIGNsb3NpbmcgY29kZSBibG9jayBjdXJseSBicmFjZS4uCiAgICBpZiAoICggJGxhc3Rfbm9uYmxhbmtfdG9rZW4gZXEgJ3snIHx8ICRsYXN0X25vbmJsYW5rX3Rva2VuIGVxICd9JyApCiAgICAgICAgJiYgJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAkbGFzdF9ub25ibGFua190b2tlbiApCiAgICB7CgogICAgICAgICMgaXQgaXMgYSBsYWJlbCBpZiBhbmQgb25seSBpZiB0aGUgY3VybHkgZW5jbG9zZXMgYSBjb2RlIGJsb2NrCiAgICAgICAgcmV0dXJuICRicmFjZV90eXBlWyRicmFjZV9kZXB0aF07CiAgICB9CgogICAgIyBvdGhlcndpc2UsIGl0IGlzIGEgbGFiZWwgaWYgYW5kIG9ubHkgaWYgaXQgZm9sbG93cyBhICc7JyAocmVhbCBvciBmYWtlKQogICAgIyBvciBhbm90aGVyIGxhYmVsCiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gKCAkbGFzdF9ub25ibGFua190eXBlIGVxICc7JyB8fCAkbGFzdF9ub25ibGFua190eXBlIGVxICdKJyApOwogICAgfQp9CgpzdWIgY29kZV9ibG9ja190eXBlIHsKCiAgICAjIERlY2lkZSBpZiB0aGlzIGlzIGEgYmxvY2sgb2YgY29kZSwgYW5kIGl0cyB0eXBlLgogICAgIyBNdXN0IGJlIGNhbGxlZCBvbmx5IHdoZW4gJHR5cGUgPSAkdG9rZW4gPSAneycKICAgICMgVGhlIHByb2JsZW0gaXMgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUgc3RhcnQgb2YgYSBibG9jayBvZiBjb2RlCiAgICAjIGFuZCB0aGUgc3RhcnQgb2YgYW4gYW5vbnltb3VzIGhhc2ggcmVmZXJlbmNlCiAgICAjIFJldHVybnMgIiIgaWYgbm90IGNvZGUgYmxvY2ssIG90aGVyd2lzZSByZXR1cm5zICdsYXN0X25vbmJsYW5rX3Rva2VuJwogICAgIyB0byBpbmRpY2F0ZSB0aGUgdHlwZSBvZiBjb2RlIGJsb2NrLiAgKEZvciBleGFtcGxlLCAnbGFzdF9ub25ibGFua190b2tlbicKICAgICMgbWlnaHQgYmUgJ2lmJyBmb3IgYW4gaWYgYmxvY2ssICdlbHNlJyBmb3IgYW4gZWxzZSBibG9jaywgZXRjKS4KICAgICMgVVNFUyBHTE9CQUwgVkFSSUFCTEVTOiAkbGFzdF9ub25ibGFua190b2tlbiwgJGxhc3Rfbm9uYmxhbmtfdHlwZSwKICAgICMgJGxhc3Rfbm9uYmxhbmtfYmxvY2tfdHlwZSwgJGJyYWNlX2RlcHRoLCBAYnJhY2VfdHlwZQoKICAgICMgaGFuZGxlIGNhc2Ugb2YgbXVsdGlwbGUgJ3sncwoKIyBwcmludCAiQkxPQ0tfVFlQRSBFWEFNSU5JTkc6IHR5cGU9JGxhc3Rfbm9uYmxhbmtfdHlwZSB0b2s9JGxhc3Rfbm9uYmxhbmtfdG9rZW5cbiI7CgogICAgbXkgKCAkaSwgJHJ0b2tlbnMsICRydG9rZW5fdHlwZSwgJG1heF90b2tlbl9pbmRleCApID0gQF87CiAgICBpZiAoICAgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gZXEgJ3snCiAgICAgICAgJiYgJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAkbGFzdF9ub25ibGFua190b2tlbiApCiAgICB7CgogICAgICAgICMgb3BlbmluZyBicmFjZSB3aGVyZSBhIHN0YXRlbWVudCBtYXkgYXBwZWFyIGlzIHByb2JhYmx5CiAgICAgICAgIyBhIGNvZGUgYmxvY2sgYnV0IG1pZ2h0IGJlIGFuZCBhbm9ueW1vdXMgaGFzaCByZWZlcmVuY2UKICAgICAgICBpZiAoICRicmFjZV90eXBlWyRicmFjZV9kZXB0aF0gKSB7CiAgICAgICAgICAgIHJldHVybiBkZWNpZGVfaWZfY29kZV9ibG9jayggJGksICRydG9rZW5zLCAkcnRva2VuX3R5cGUsCiAgICAgICAgICAgICAgICAkbWF4X3Rva2VuX2luZGV4ICk7CiAgICAgICAgfQoKICAgICAgICAjIGNhbm5vdCBzdGFydCBhIGNvZGUgYmxvY2sgd2l0aGluIGFuIGFub255bW91cyBoYXNoCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAiIjsKICAgICAgICB9CiAgICB9CgogICAgZWxzaWYgKCAkbGFzdF9ub25ibGFua190b2tlbiBlcSAnOycgKSB7CgogICAgICAgICMgYW4gb3BlbmluZyBicmFjZSB3aGVyZSBhIHN0YXRlbWVudCBtYXkgYXBwZWFyIGlzIHByb2JhYmx5CiAgICAgICAgIyBhIGNvZGUgYmxvY2sgYnV0IG1pZ2h0IGJlIGFuZCBhbm9ueW1vdXMgaGFzaCByZWZlcmVuY2UKICAgICAgICByZXR1cm4gZGVjaWRlX2lmX2NvZGVfYmxvY2soICRpLCAkcnRva2VucywgJHJ0b2tlbl90eXBlLAogICAgICAgICAgICAkbWF4X3Rva2VuX2luZGV4ICk7CiAgICB9CgogICAgIyBoYW5kbGUgY2FzZSBvZiAnfXsnCiAgICBlbHNpZiAoJGxhc3Rfbm9uYmxhbmtfdG9rZW4gZXEgJ30nCiAgICAgICAgJiYgJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAkbGFzdF9ub25ibGFua190b2tlbiApCiAgICB7CgogICAgICAgICMgYSB9IHsgc2l0dWF0aW9uIC4uLgogICAgICAgICMgY291bGQgYmUgaGFzaCByZWZlcmVuY2UgYWZ0ZXIgY29kZSBibG9jay4uKGJsa3R5cGUxLnQpCiAgICAgICAgaWYgKCRsYXN0X25vbmJsYW5rX2Jsb2NrX3R5cGUpIHsKICAgICAgICAgICAgcmV0dXJuIGRlY2lkZV9pZl9jb2RlX2Jsb2NrKCAkaSwgJHJ0b2tlbnMsICRydG9rZW5fdHlwZSwKICAgICAgICAgICAgICAgICRtYXhfdG9rZW5faW5kZXggKTsKICAgICAgICB9CgogICAgICAgICMgbXVzdCBiZSBhIGJsb2NrIGlmIGl0IGZvbGxvd3MgYSBjbG9zaW5nIGhhc2ggcmVmZXJlbmNlCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAkbGFzdF9ub25ibGFua190b2tlbjsKICAgICAgICB9CiAgICB9CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBOT1RFOiBicmFjZXMgYWZ0ZXIgdHlwZSBjaGFyYWN0ZXJzIHN0YXJ0IGNvZGUgYmxvY2tzLCBidXQgZm9yCiAgICAjIHNpbXBsaWNpdHkgdGhlc2UgYXJlIG5vdCBpZGVudGlmaWVkIGFzIHN1Y2guICBTZWUgYWxzbwogICAgIyBzdWIgaXNfbm9uX3N0cnVjdHVyYWxfYnJhY2UuCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIyAgICBlbHNpZiAoICRsYXN0X25vbmJsYW5rX3R5cGUgZXEgJ3QnICkgewojIyAgICAgICByZXR1cm4gJGxhc3Rfbm9uYmxhbmtfdG9rZW47CiMjICAgIH0KCiAgICAjIGJyYWNlIGFmdGVyIGxhYmVsOgogICAgZWxzaWYgKCAkbGFzdF9ub25ibGFua190eXBlIGVxICdKJyApIHsKICAgICAgICByZXR1cm4gJGxhc3Rfbm9uYmxhbmtfdG9rZW47CiAgICB9CgojIG90aGVyd2lzZSwgbG9vayBhdCBwcmV2aW91cyB0b2tlbi4gIFRoaXMgbXVzdCBiZSBhIGNvZGUgYmxvY2sgaWYKIyBpdCBmb2xsb3dzIGFueSBvZiB0aGVzZToKIyAvXihCRUdJTnxFTkR8Q0hFQ0t8SU5JVHxBVVRPTE9BRHxERVNUUk9ZfFVOSVRDSEVDS3xjb250aW51ZXxpZnxlbHNpZnxlbHNlfHVubGVzc3xkb3x3aGlsZXx1bnRpbHxldmFsfGZvcnxmb3JlYWNofG1hcHxncmVwfHNvcnQpJC8KICAgIGVsc2lmICggJGlzX2NvZGVfYmxvY2tfdG9rZW57JGxhc3Rfbm9uYmxhbmtfdG9rZW59ICkgewoKICAgICAgICAjIEJ1ZyBQYXRjaDogTm90ZSB0aGF0IHRoZSBvcGVuaW5nIGJyYWNlIGFmdGVyIHRoZSAnaWYnIGluIHRoZSBmb2xsb3dpbmcKICAgICAgICAjIHNuaXBwZXQgaXMgYW4gYW5vbnltb3VzIGhhc2ggcmVmIGFuZCBub3QgYSBjb2RlIGJsb2NrIQogICAgICAgICMgICBwcmludCAnaGknIGlmIHsgeCA9PiAxLCB9LT57eH07CiAgICAgICAgIyBXZSBjYW4gaWRlbnRpZnkgdGhpcyBzaXR1YXRpb24gYmVjYXVzZSB0aGUgbGFzdCBub25ibGFuayB0eXBlCiAgICAgICAgIyB3aWxsIGJlIGEga2V5d29yZCAoaW5zdGVhZCBvZiBhIGNsb3NpbmcgcGVyZW4pCiAgICAgICAgaWYgKCAgICRsYXN0X25vbmJsYW5rX3Rva2VuID1+IC9eKGlmfHVubGVzcykkLwogICAgICAgICAgICAmJiAkbGFzdF9ub25ibGFua190eXBlIGVxICdrJyApCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gIiI7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICByZXR1cm4gJGxhc3Rfbm9uYmxhbmtfdG9rZW47CiAgICAgICAgfQogICAgfQoKICAgICMgb3IgYSBzdWIgb3IgcGFja2FnZSBCTE9DSwogICAgZWxzaWYgKCAoICRsYXN0X25vbmJsYW5rX3R5cGUgZXEgJ2knIHx8ICRsYXN0X25vbmJsYW5rX3R5cGUgZXEgJ3QnICkKICAgICAgICAmJiAkbGFzdF9ub25ibGFua190b2tlbiA9fiAvXihzdWJ8cGFja2FnZSlcYi8gKQogICAgewogICAgICAgIHJldHVybiAkbGFzdF9ub25ibGFua190b2tlbjsKICAgIH0KCiAgICAjIG9yIGEgc3ViIGFsaWFzCiAgICBlbHNpZiAoKCAkbGFzdF9ub25ibGFua190eXBlIGVxICdpJyB8fCAkbGFzdF9ub25ibGFua190eXBlIGVxICd0JyApCiAgICAgICAgJiYgKCAkaXNfc3VieyRsYXN0X25vbmJsYW5rX3Rva2VufSApICkKICAgIHsKICAgICAgICByZXR1cm4gJ3N1Yic7CiAgICB9CgogICAgZWxzaWYgKCAkc3RhdGVtZW50X3R5cGUgPX4gL14oc3VifHBhY2thZ2UpXGIvICkgewogICAgICAgIHJldHVybiAkc3RhdGVtZW50X3R5cGU7CiAgICB9CgogICAgIyB1c2VyLWRlZmluZWQgc3VicyB3aXRoIGJsb2NrIHBhcmFtZXRlcnMgKGxpa2UgZ3JlcC9tYXAvZXZhbCkKICAgIGVsc2lmICggJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAnRycgKSB7CiAgICAgICAgcmV0dXJuICRsYXN0X25vbmJsYW5rX3Rva2VuOwogICAgfQoKICAgICMgY2hlY2sgYmFyZXdvcmQKICAgIGVsc2lmICggJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAndycgKSB7CiAgICAgICAgcmV0dXJuIGRlY2lkZV9pZl9jb2RlX2Jsb2NrKCAkaSwgJHJ0b2tlbnMsICRydG9rZW5fdHlwZSwKICAgICAgICAgICAgJG1heF90b2tlbl9pbmRleCApOwogICAgfQoKICAgICMgUGF0Y2ggZm9yIGJ1ZyAjIFJUICM5NDMzOCByZXBvcnRlZCBieSBEYW5pZWwgVHJpemVuCiAgICAjIGZvci1sb29wIGluIGEgcGFyZW50aGVzaXplZCBibG9jay1tYXAgdHJpZ2dlcmluZyBhbiBlcnJvciBtZXNzYWdlOgogICAgIyAgICBtYXAoIHsgZm9yZWFjaCBteSAkaXRlbSAoICcwJywgJzEnICkgeyBwcmludCAkaXRlbX0gfSBxdyhhIGIgYykgKTsKICAgICMgQ2hlY2sgZm9yIGEgY29kZSBibG9jayB3aXRoaW4gYSBwYXJlbnRoZXNpemVkIGZ1bmN0aW9uIGNhbGwKICAgIGVsc2lmICggJGxhc3Rfbm9uYmxhbmtfdG9rZW4gZXEgJygnICkgewogICAgICAgIG15ICRwYXJlbl90eXBlID0gJHBhcmVuX3R5cGVbJHBhcmVuX2RlcHRoXTsKICAgICAgICBpZiAoICRwYXJlbl90eXBlICYmICRwYXJlbl90eXBlID1+IC9eKG1hcHxncmVwfHNvcnQpJC8gKSB7CgogICAgICAgICAgICAjIFdlIHdpbGwgbWFyayB0aGlzIGFzIGEgY29kZSBibG9jayBidXQgdXNlIHR5cGUgJ3QnIGluc3RlYWQKICAgICAgICAgICAgIyBvZiB0aGUgbmFtZSBvZiB0aGUgY29udGluaW5nIGZ1bmN0aW9uLiAgVGhpcyB3aWxsIGFsbG93IGZvcgogICAgICAgICAgICAjIGNvcnJlY3QgcGFyc2luZyBidXQgd2lsbCB1c3VhbGx5IHByb2R1Y2UgYmV0dGVyIGZvcm1hdHRpbmcuCiAgICAgICAgICAgICMgQnJhY2VzIHdpdGggYmxvY2sgdHlwZSAndCcgYXJlIG5vdCBicm9rZW4gb3BlbiBhdXRvbWF0aWNhbGx5CiAgICAgICAgICAgICMgaW4gdGhlIGZvcm1hdHRlciBhcyBhcmUgb3RoZXIgY29kZSBibG9jayB0eXBlcywgYW5kIHRoaXMgdXN1YWxseQogICAgICAgICAgICAjIHdvcmtzIGJlc3QuCiAgICAgICAgICAgIHJldHVybiAndCc7ICAgICMgKE5vdCAkcGFyZW5fdHlwZSkKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAiIjsKICAgICAgICB9CiAgICB9CgogICAgIyBoYW5kbGUgdW5rbm93biBzeW50YXggJykgeycKICAgICMgd2UgcHJldmlvdXNseSBhcHBlbmRlZCBhICcoKScgdG8gbWFyayB0aGlzIGNhc2UKICAgIGVsc2lmICggJGxhc3Rfbm9uYmxhbmtfdG9rZW4gPX4gL1woXCkkLyApIHsKICAgICAgICByZXR1cm4gJGxhc3Rfbm9uYmxhbmtfdG9rZW47CiAgICB9CgogICAgIyBhbnl0aGluZyBlbHNlIG11c3QgYmUgYW5vbnltb3VzIGhhc2ggcmVmZXJlbmNlCiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gIiI7CiAgICB9Cn0KCnN1YiBkZWNpZGVfaWZfY29kZV9ibG9jayB7CgogICAgIyBVU0VTIEdMT0JBTCBWQVJJQUJMRVM6ICRsYXN0X25vbmJsYW5rX3Rva2VuCiAgICBteSAoICRpLCAkcnRva2VucywgJHJ0b2tlbl90eXBlLCAkbWF4X3Rva2VuX2luZGV4ICkgPSBAXzsKCiAgICBteSAoICRuZXh0X25vbmJsYW5rX3Rva2VuLCAkaV9uZXh0ICkgPQogICAgICBmaW5kX25leHRfbm9uYmxhbmtfdG9rZW4oICRpLCAkcnRva2VucywgJG1heF90b2tlbl9pbmRleCApOwoKICAgICMgd2UgYXJlIGF0IGEgJ3snIHdoZXJlIGEgc3RhdGVtZW50IG1heSBhcHBlYXIuCiAgICAjIFdlIG11c3QgZGVjaWRlIGlmIHRoaXMgYnJhY2Ugc3RhcnRzIGFuIGFub255bW91cyBoYXNoIG9yIGEgY29kZQogICAgIyBibG9jay4KICAgICMgcmV0dXJuICIiIGlmIGFub255bW91cyBoYXNoLCBhbmQgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gb3RoZXJ3aXNlCgogICAgIyBpbml0aWFsaXplIHRvIGJlIGNvZGUgQkxPQ0sKICAgIG15ICRjb2RlX2Jsb2NrX3R5cGUgPSAkbGFzdF9ub25ibGFua190b2tlbjsKCiAgICAjIENoZWNrIGZvciB0aGUgY29tbW9uIGNhc2Ugb2YgYW4gZW1wdHkgYW5vbnltb3VzIGhhc2ggcmVmZXJlbmNlOgogICAgIyBNYXliZSBzb21ldGhpbmcgbGlrZSBzdWIgeyB7IH0gfQogICAgaWYgKCAkbmV4dF9ub25ibGFua190b2tlbiBlcSAnfScgKSB7CiAgICAgICAgJGNvZGVfYmxvY2tfdHlwZSA9ICIiOwogICAgfQoKICAgIGVsc2UgewoKICAgICAgICAjIFRvIGd1ZXNzIGlmIHRoaXMgJ3snIGlzIGFuIGFub255bW91cyBoYXNoIHJlZmVyZW5jZSwgbG9vayBhaGVhZAogICAgICAgICMgYW5kIHRlc3QgYXMgZm9sbG93czoKICAgICAgICAjCiAgICAgICAgIyBpdCBpcyBhIGhhc2ggcmVmZXJlbmNlIGlmIG5leHQgY29tZToKICAgICAgICAjICAgLSBhIHN0cmluZyBvciBkaWdpdCBmb2xsb3dlZCBieSBhIGNvbW1hIG9yID0+CiAgICAgICAgIyAgIC0gYmFyZXdvcmQgZm9sbG93ZWQgYnkgPT4KICAgICAgICAjIG90aGVyd2lzZSBpdCBpcyBhIGNvZGUgYmxvY2sKICAgICAgICAjCiAgICAgICAgIyBFeGFtcGxlcyBvZiBhbm9ueW1vdXMgaGFzaCByZWY6CiAgICAgICAgIyB7J2FhJyx9OwogICAgICAgICMgezEsMn0KICAgICAgICAjCiAgICAgICAgIyBFeGFtcGxlcyBvZiBjb2RlIGJsb2NrczoKICAgICAgICAjIHsxOyBwcmludCAiaGVsbG9cbiIsIDE7fQogICAgICAgICMgeyRhLDF9OwoKICAgICAgICAjIFdlIGFyZSBvbmx5IGdvaW5nIHRvIGxvb2sgYWhlYWQgb25lIG1vcmUgKG5vbmJsYW5rL2NvbW1lbnQpIGxpbmUuCiAgICAgICAgIyBTdHJhbmdlIGZvcm1hdHRpbmcgY291bGQgY2F1c2UgYSBiYWQgZ3Vlc3MsIGJ1dCB0aGF0J3MgdW5saWtlbHkuCiAgICAgICAgbXkgQHByZV90eXBlczsKICAgICAgICBteSBAcHJlX3Rva2VuczsKCiAgICAgICAgIyBJZ25vcmUgdGhlIHJlc3Qgb2YgdGhpcyBsaW5lIGlmIGl0IGlzIGEgc2lkZSBjb21tZW50CiAgICAgICAgaWYgKCAkbmV4dF9ub25ibGFua190b2tlbiBuZSAnIycgKSB7CiAgICAgICAgICAgIEBwcmVfdHlwZXMgID0gQHskcnRva2VuX3R5cGV9WyAkaSArIDEgLi4gJG1heF90b2tlbl9pbmRleCBdOwogICAgICAgICAgICBAcHJlX3Rva2VucyA9IEB7JHJ0b2tlbnN9WyAkaSArIDEgLi4gJG1heF90b2tlbl9pbmRleCBdOwogICAgICAgIH0KICAgICAgICBteSAoICRycHJlX3Rva2VucywgJHJwcmVfdHlwZXMgKSA9CiAgICAgICAgICBwZWVrX2FoZWFkX2Zvcl9uX25vbmJsYW5rX3ByZV90b2tlbnMoMjApOyAgICAjIDIwIGlzIGFyYml0cmFyeSBidXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZ2VuZXJvdXMsIGFuZCBwcmV2ZW50cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3YXN0aW5nIGxvdHMgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGltZSBpbiBtYW5nbGVkIGZpbGVzCiAgICAgICAgaWYgKCBkZWZpbmVkKCRycHJlX3R5cGVzKSAmJiBAeyRycHJlX3R5cGVzfSApIHsKICAgICAgICAgICAgcHVzaCBAcHJlX3R5cGVzLCAgQHskcnByZV90eXBlc307CiAgICAgICAgICAgIHB1c2ggQHByZV90b2tlbnMsIEB7JHJwcmVfdG9rZW5zfTsKICAgICAgICB9CgogICAgICAgICMgcHV0IGEgc2VudGluZWwgdG9rZW4gdG8gc2ltcGxpZnkgc3RvcHBpbmcgdGhlIHNlYXJjaAogICAgICAgIHB1c2ggQHByZV90eXBlcywgJ30nOwogICAgICAgIHB1c2ggQHByZV90eXBlcywgJ30nOwoKICAgICAgICBteSAkamJlZyA9IDA7CiAgICAgICAgJGpiZWcgPSAxIGlmICRwcmVfdHlwZXNbMF0gZXEgJ2InOwoKICAgICAgICAjIGZpcnN0IGxvb2sgZm9yIG9uZSBvZiB0aGVzZQogICAgICAgICMgIC0gYmFyZXdvcmQKICAgICAgICAjICAtIGJhcmV3b3JkIHdpdGggbGVhZGluZyAtCiAgICAgICAgIyAgLSBkaWdpdAogICAgICAgICMgIC0gcXVvdGVkIHN0cmluZwogICAgICAgIG15ICRqID0gJGpiZWc7CiAgICAgICAgaWYgKCAkcHJlX3R5cGVzWyRqXSA9fiAvXltcJ1wiXS8gKSB7CgogICAgICAgICAgICAjIGZpbmQgdGhlIGNsb3NpbmcgcXVvdGU7IGRvbid0IHdvcnJ5IGFib3V0IGVzY2FwZXMKICAgICAgICAgICAgbXkgJHF1b3RlX21hcmsgPSAkcHJlX3R5cGVzWyRqXTsKICAgICAgICAgICAgZm9yZWFjaCBteSAkayAoICRqICsgMSAuLiBAcHJlX3R5cGVzIC0gMiApIHsKICAgICAgICAgICAgICAgIGlmICggJHByZV90eXBlc1ska10gZXEgJHF1b3RlX21hcmsgKSB7CiAgICAgICAgICAgICAgICAgICAgJGogPSAkayArIDE7CiAgICAgICAgICAgICAgICAgICAgbXkgJG5leHQgPSAkcHJlX3R5cGVzWyRqXTsKICAgICAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJHByZV90eXBlc1skal0gZXEgJ2QnICkgewogICAgICAgICAgICAkaisrOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRwcmVfdHlwZXNbJGpdIGVxICd3JyApIHsKICAgICAgICAgICAgJGorKzsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkcHJlX3R5cGVzWyRqXSBlcSAnLScgJiYgJHByZV90eXBlc1sgKyskaiBdIGVxICd3JyApIHsKICAgICAgICAgICAgJGorKzsKICAgICAgICB9CiAgICAgICAgaWYgKCAkaiA+ICRqYmVnICkgewoKICAgICAgICAgICAgJGorKyBpZiAkcHJlX3R5cGVzWyRqXSBlcSAnYic7CgogICAgICAgICAgICAjIFBhdGNoZWQgZm9yIFJUICM5NTcwOAogICAgICAgICAgICBpZiAoCgogICAgICAgICAgICAgICAgIyBpdCBpcyBhIGNvbW1hIHdoaWNoIGlzIG5vdCBhIHBhdHRlcm4gZGVsaW1ldGVyIGV4Y2VwdCBmb3IgcXcKICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAkcHJlX3R5cGVzWyRqXSBlcSAnLCcKICAgICAgICAgICAgICAgICAgICAmJiAkcHJlX3Rva2Vuc1skamJlZ10gIX4gL14oc3xtfHl8dHJ8cXJ8cXxxcXxxeCkkLwogICAgICAgICAgICAgICAgKQoKICAgICAgICAgICAgICAgICMgb3IgYSA9PgogICAgICAgICAgICAgICAgfHwgKCAkcHJlX3R5cGVzWyRqXSBlcSAnPScgJiYgJHByZV90eXBlc1sgKyskaiBdIGVxICc+JyApCiAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkY29kZV9ibG9ja190eXBlID0gIiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRjb2RlX2Jsb2NrX3R5cGU7Cn0KCnN1YiByZXBvcnRfdW5leHBlY3RlZCB7CgogICAgIyByZXBvcnQgdW5leHBlY3RlZCB0b2tlbiB0eXBlIGFuZCBzaG93IHdoZXJlIGl0IGlzCiAgICAjIFVTRVMgR0xPQkFMIFZBUklBQkxFUzogJHRva2VuaXplcl9zZWxmCiAgICBteSAoICRmb3VuZCwgJGV4cGVjdGluZywgJGlfdG9rLCAkbGFzdF9ub25ibGFua19pLCAkcnByZXRva2VuX21hcCwKICAgICAgICAkcnByZXRva2VuX3R5cGUsICRpbnB1dF9saW5lICkKICAgICAgPSBAXzsKCiAgICBpZiAoICsrJHRva2VuaXplcl9zZWxmLT57X3VuZXhwZWN0ZWRfZXJyb3JfY291bnR9IDw9IE1BWF9OQUdfTUVTU0FHRVMgKSB7CiAgICAgICAgbXkgJG1zZyA9ICJmb3VuZCAkZm91bmQgd2hlcmUgJGV4cGVjdGluZyBleHBlY3RlZCI7CiAgICAgICAgbXkgJHBvcyA9ICRycHJldG9rZW5fbWFwLT5bJGlfdG9rXTsKICAgICAgICBpbnRlcnJ1cHRfbG9nZmlsZSgpOwogICAgICAgIG15ICRpbnB1dF9saW5lX251bWJlciA9ICR0b2tlbml6ZXJfc2VsZi0+e19sYXN0X2xpbmVfbnVtYmVyfTsKICAgICAgICBteSAoICRvZmZzZXQsICRudW1iZXJlZF9saW5lLCAkdW5kZXJsaW5lICkgPQogICAgICAgICAgbWFrZV9udW1iZXJlZF9saW5lKCAkaW5wdXRfbGluZV9udW1iZXIsICRpbnB1dF9saW5lLCAkcG9zICk7CiAgICAgICAgJHVuZGVybGluZSA9IHdyaXRlX29uX3VuZGVybGluZSggJHVuZGVybGluZSwgJHBvcyAtICRvZmZzZXQsICdeJyApOwoKICAgICAgICBteSAkdHJhaWxlciA9ICIiOwogICAgICAgIGlmICggKCAkaV90b2sgPiAwICkgJiYgKCAkbGFzdF9ub25ibGFua19pID49IDAgKSApIHsKICAgICAgICAgICAgbXkgJHBvc19wcmV2ID0gJHJwcmV0b2tlbl9tYXAtPlskbGFzdF9ub25ibGFua19pXTsKICAgICAgICAgICAgbXkgJG51bTsKICAgICAgICAgICAgaWYgKCAkcnByZXRva2VuX3R5cGUtPlsgJGlfdG9rIC0gMSBdIGVxICdiJyApIHsKICAgICAgICAgICAgICAgICRudW0gPSAkcnByZXRva2VuX21hcC0+WyAkaV90b2sgLSAxIF0gLSAkcG9zX3ByZXY7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkbnVtID0gJHBvcyAtICRwb3NfcHJldjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoICRudW0gPiA0MCApIHsgJG51bSA9IDQwOyAkcG9zX3ByZXYgPSAkcG9zIC0gNDA7IH0KCiAgICAgICAgICAgICR1bmRlcmxpbmUgPQogICAgICAgICAgICAgIHdyaXRlX29uX3VuZGVybGluZSggJHVuZGVybGluZSwgJHBvc19wcmV2IC0gJG9mZnNldCwgJy0nIHggJG51bSApOwogICAgICAgICAgICAkdHJhaWxlciA9ICIgKHByZXZpb3VzIHRva2VuIHVuZGVybGluZWQpIjsKICAgICAgICB9CiAgICAgICAgJHVuZGVybGluZSA9fiBzL1xzKyQvLzsKICAgICAgICB3YXJuaW5nKCAkbnVtYmVyZWRfbGluZSAuICJcbiIgKTsKICAgICAgICB3YXJuaW5nKCAkdW5kZXJsaW5lIC4gIlxuIiApOwogICAgICAgIHdhcm5pbmcoICRtc2cgLiAkdHJhaWxlciAuICJcbiIgKTsKICAgICAgICByZXN1bWVfbG9nZmlsZSgpOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgaXNfbm9uX3N0cnVjdHVyYWxfYnJhY2UgewoKICAgICMgRGVjaWRlIGlmIGEgYnJhY2Ugb3IgYnJhY2tldCBpcyBzdHJ1Y3R1cmFsIG9yIG5vbi1zdHJ1Y3R1cmFsCiAgICAjIGJ5IGxvb2tpbmcgYXQgdGhlIHByZXZpb3VzIHRva2VuIGFuZCB0eXBlCiAgICAjIFVTRVMgR0xPQkFMIFZBUklBQkxFUzogJGxhc3Rfbm9uYmxhbmtfdHlwZSwgJGxhc3Rfbm9uYmxhbmtfdG9rZW4KCiAgICAjIEVYUEVSSU1FTlRBTDogTWFyayBzbGljZXMgYXMgc3RydWN0dXJhbDsgaWRlYSB3YXMgdG8gaW1wcm92ZSBmb3JtYXR0aW5nLgogICAgIyBUZW50YXRpdmVseSBkZWFjdGl2YXRlZCBiZWNhdXNlIGl0IGNhdXNlZCB0aGUgd3Jvbmcgb3BlcmF0b3IgZXhwZWN0YXRpb24KICAgICMgZm9yIHRoaXMgY29kZToKICAgICMgICAgICAkdXNlciA9IEB2YXJzWzFdIC8gMTAwOwogICAgIyBNdXN0IHVwZGF0ZSBzdWIgb3BlcmF0b3JfZXhwZWN0ZWQgYmVmb3JlIHJlLWltcGxlbWVudGluZy4KICAgICMgaWYgKCAkbGFzdF9ub25ibGFua190eXBlIGVxICdpJyAmJiAkbGFzdF9ub25ibGFua190b2tlbiA9fiAvXkAvICkgewogICAgIyAgICByZXR1cm4gMDsKICAgICMgfQoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMgTk9URTogYnJhY2VzIGFmdGVyIHR5cGUgY2hhcmFjdGVycyBzdGFydCBjb2RlIGJsb2NrcywgYnV0IGZvcgogICAgIyBzaW1wbGljaXR5IHRoZXNlIGFyZSBub3QgaWRlbnRpZmllZCBhcyBzdWNoLiAgU2VlIGFsc28KICAgICMgc3ViIGNvZGVfYmxvY2tfdHlwZQogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICMjaWYgKCRsYXN0X25vbmJsYW5rX3R5cGUgZXEgJ3QnKSB7cmV0dXJuIDB9CgogICAgIyBvdGhlcndpc2UsIGl0IGlzIG5vbi1zdHJ1Y3R1cmFsIGlmIGl0IGlzIGRlY29yYXRlZAogICAgIyBieSB0eXBlIGluZm9ybWF0aW9uLgogICAgIyBGb3IgZXhhbXBsZSwgdGhlICd7JyBoZXJlIGlzIG5vbi1zdHJ1Y3R1cmFsOiAgICR7eHh4fQogICAgcmV0dXJuICgKICAgICAgICAkbGFzdF9ub25ibGFua190b2tlbiA9fiAvXihbXCRcQFwqXCZcJVwpXXwtPnw6OikvCgogICAgICAgICAgIyBvciBpZiB3ZSBmb2xsb3cgYSBoYXNoIG9yIGFycmF5IGNsb3NpbmcgY3VybHkgYnJhY2Ugb3IgYnJhY2tldAogICAgICAgICAgIyBGb3IgZXhhbXBsZSwgdGhlIHNlY29uZCAneycgaW4gdGhpcyBpcyBub24tc3RydWN0dXJhbDogJGF7J3gnfXsneSd9CiAgICAgICAgICAjIGJlY2F1c2UgdGhlIGZpcnN0ICd9JyB3b3VsZCBoYXZlIGJlZW4gZ2l2ZW4gdHlwZSAnUicKICAgICAgICAgIHx8ICRsYXN0X25vbmJsYW5rX3R5cGUgPX4gL14oW1JcXV0pJC8KICAgICk7Cn0KCiMjIyMjIyMjI2kjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgVG9rZW5pemVyIHJvdXRpbmVzIGZvciB0cmFja2luZyBjb250YWluZXIgbmVzdGluZyBkZXB0aHMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgVGhlIGZvbGxvd2luZyByb3V0aW5lcyBrZWVwIHRyYWNrIG9mIG5lc3RpbmcgZGVwdGhzIG9mIHRoZSBuZXN0aW5nCiMgdHlwZXMsICggWyB7IGFuZCA/LiAgVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGRldGVybWluaW5nIHRoZSBpbmRlbnRhdGlvbgojIGxldmVsLCBhbmQgYWxzbyBmb3IgZGVidWdnaW5nIHByb2dyYW1zLiAgTm90IG9ubHkgZG8gdGhleSBrZWVwIHRyYWNrIG9mCiMgbmVzdGluZyBkZXB0aHMgb2YgdGhlIGluZGl2aWR1YWwgYnJhY2UgdHlwZXMsIGJ1dCB0aGV5IGNoZWNrIHRoYXQgZWFjaAojIG9mIHRoZSBvdGhlciBicmFjZSB0eXBlcyBpcyBiYWxhbmNlZCB3aXRoaW4gbWF0Y2hpbmcgcGFpcnMuICBGb3IKIyBleGFtcGxlLCBpZiB0aGUgcHJvZ3JhbSBzZWVzIHRoaXMgc2VxdWVuY2U6CiMKIyAgICAgICAgIHsgICggKCApIH0KIwojIHRoZW4gaXQgY2FuIGRldGVybWluZSB0aGF0IHRoZXJlIGlzIGFuIGV4dHJhIGxlZnQgcGFyZW4gc29tZXdoZXJlCiMgYmV0d2VlbiB0aGUgeyBhbmQgdGhlIH0uICBBbmQgc28gb24gd2l0aCBldmVyeSBvdGhlciBwb3NzaWJsZQojIGNvbWJpbmF0aW9uIG9mIG91dGVyIGFuZCBpbm5lciBicmFjZSB0eXBlcy4gIEZvciBhbm90aGVyCiMgZXhhbXBsZToKIwojICAgICAgICAgKCBbIC4uLi4uIF0gIF0gKQojCiMgd2hpY2ggaGFzIGFuIGV4dHJhIF0gd2l0aGluIHRoZSBwYXJlbnMuCiMKIyBUaGUgYnJhY2UgdHlwZXMgaGF2ZSBpbmRleGVzIDAgLi4gMyB3aGljaCBhcmUgaW5kZXhlcyBpbnRvCiMgdGhlIG1hdHJpY2VzLgojCiMgVGhlIHBhaXIgPyA6IGFyZSB0cmVhdGVkIGFzIGp1c3QgYW5vdGhlciBuZXN0aW5nIHR5cGUsIHdpdGggPyBhY3RpbmcKIyBhcyB0aGUgb3BlbmluZyBicmFjZSBhbmQgOiBhY3RpbmcgYXMgdGhlIGNsb3NpbmcgYnJhY2UuCiMKIyBUaGUgbWF0cml4CiMKIyAgICAgICAgICRkZXB0aF9hcnJheVskYV1bJGJdWyAkY3VycmVudF9kZXB0aFskYV0gXSA9ICRjdXJyZW50X2RlcHRoWyRiXTsKIwojIHNhdmVzIHRoZSBuZXN0aW5nIGRlcHRoIG9mIGJyYWNlIHR5cGUgJGIgKHdoZXJlICRiIGlzIGVpdGhlciBvZiB0aGUgb3RoZXIKIyBuZXN0aW5nIHR5cGVzKSB3aGVuIGJyYWNlIHR5cGUgJGEgZW50ZXJzIGEgbmV3IGRlcHRoLiAgV2hlbiB0aGlzIGRlcHRoCiMgZGVjcmVhc2VzLCBhIGNoZWNrIGlzIG1hZGUgdGhhdCB0aGUgY3VycmVudCBkZXB0aCBvZiBicmFjZSB0eXBlcyAkYiBpcwojIHVuY2hhbmdlZCwgb3Igb3RoZXJ3aXNlIHRoZXJlIG11c3QgaGF2ZSBiZWVuIGFuIGVycm9yLiAgVGhpcyBjYW4KIyBiZSB2ZXJ5IHVzZWZ1bCBmb3IgbG9jYWxpemluZyBlcnJvcnMsIHBhcnRpY3VsYXJseSB3aGVuIHBlcmwgcnVucyB0bwojIHRoZSBlbmQgb2YgYSBsYXJnZSBmaWxlIChzdWNoIGFzIHRoaXMgb25lKSBhbmQgYW5ub3VuY2VzIHRoYXQgdGhlcmUKIyBpcyBhIHByb2JsZW0gc29tZXdoZXJlLgojCiMgQSBudW1lcmljYWwgc2VxdWVuY2UgbnVtYmVyIGlzIG1haW50YWluZWQgZm9yIGV2ZXJ5IG5lc3RpbmcgdHlwZSwKIyBzbyB0aGF0IGVhY2ggbWF0Y2hpbmcgcGFpciBjYW4gYmUgdW5pcXVlbHkgaWRlbnRpZmllZCBpbiBhIHNpbXBsZQojIHdheS4KCnN1YiBpbmNyZWFzZV9uZXN0aW5nX2RlcHRoIHsKICAgIG15ICggJGFhLCAkcG9zICkgPSBAXzsKCiAgICAjIFVTRVMgR0xPQkFMIFZBUklBQkxFUzogJHRva2VuaXplcl9zZWxmLCBAY3VycmVudF9kZXB0aCwKICAgICMgQGN1cnJlbnRfc2VxdWVuY2VfbnVtYmVyLCBAZGVwdGhfYXJyYXksIEBzdGFydGluZ19saW5lX29mX2N1cnJlbnRfZGVwdGgsCiAgICAjICRzdGF0ZW1lbnRfdHlwZQogICAgJGN1cnJlbnRfZGVwdGhbJGFhXSsrOwogICAgJHRvdGFsX2RlcHRoKys7CiAgICAkdG90YWxfZGVwdGhbJGFhXVsgJGN1cnJlbnRfZGVwdGhbJGFhXSBdID0gJHRvdGFsX2RlcHRoOwogICAgbXkgJGlucHV0X2xpbmVfbnVtYmVyID0gJHRva2VuaXplcl9zZWxmLT57X2xhc3RfbGluZV9udW1iZXJ9OwogICAgbXkgJGlucHV0X2xpbmUgICAgICAgID0gJHRva2VuaXplcl9zZWxmLT57X2xpbmVfdGV4dH07CgogICAgIyBTZXF1ZW5jZSBudW1iZXJzIGluY3JlbWVudCBieSBudW1iZXIgb2YgaXRlbXMuICBUaGlzIGtlZXBzCiAgICAjIGEgdW5pcXVlIHNldCBvZiBudW1iZXJzIGJ1dCBzdGlsbCBhbGxvd3MgdGhlIHJlbGF0aXZlIGxvY2F0aW9uCiAgICAjIG9mIGFueSB0eXBlIHRvIGJlIGRldGVybWluZWQuCiAgICAkbmVzdGluZ19zZXF1ZW5jZV9udW1iZXJbJGFhXSArPSBzY2FsYXIoQGNsb3NpbmdfYnJhY2VfbmFtZXMpOwogICAgbXkgJHNlcW5vID0gJG5lc3Rpbmdfc2VxdWVuY2VfbnVtYmVyWyRhYV07CiAgICAkY3VycmVudF9zZXF1ZW5jZV9udW1iZXJbJGFhXVsgJGN1cnJlbnRfZGVwdGhbJGFhXSBdID0gJHNlcW5vOwoKICAgICRzdGFydGluZ19saW5lX29mX2N1cnJlbnRfZGVwdGhbJGFhXVsgJGN1cnJlbnRfZGVwdGhbJGFhXSBdID0KICAgICAgWyAkaW5wdXRfbGluZV9udW1iZXIsICRpbnB1dF9saW5lLCAkcG9zIF07CgogICAgZm9yIG15ICRiYiAoIDAgLi4gQGNsb3NpbmdfYnJhY2VfbmFtZXMgLSAxICkgewogICAgICAgIG5leHQgaWYgKCAkYmIgPT0gJGFhICk7CiAgICAgICAgJGRlcHRoX2FycmF5WyRhYV1bJGJiXVsgJGN1cnJlbnRfZGVwdGhbJGFhXSBdID0gJGN1cnJlbnRfZGVwdGhbJGJiXTsKICAgIH0KCiAgICAjIHNldCBhIGZsYWcgZm9yIGluZGVudGluZyBhIG5lc3RlZCB0ZXJuYXJ5IHN0YXRlbWVudAogICAgbXkgJGluZGVudCA9IDA7CiAgICBpZiAoICRhYSA9PSBRVUVTVElPTl9DT0xPTiApIHsKICAgICAgICAkbmVzdGVkX3Rlcm5hcnlfZmxhZ1sgJGN1cnJlbnRfZGVwdGhbJGFhXSBdID0gMDsKICAgICAgICBpZiAoICRjdXJyZW50X2RlcHRoWyRhYV0gPiAxICkgewogICAgICAgICAgICBpZiAoICRuZXN0ZWRfdGVybmFyeV9mbGFnWyAkY3VycmVudF9kZXB0aFskYWFdIC0gMSBdID09IDAgKSB7CiAgICAgICAgICAgICAgICBteSAkcGRlcHRoID0gJHRvdGFsX2RlcHRoWyRhYV1bICRjdXJyZW50X2RlcHRoWyRhYV0gLSAxIF07CiAgICAgICAgICAgICAgICBpZiAoICRwZGVwdGggPT0gJHRvdGFsX2RlcHRoIC0gMSApIHsKICAgICAgICAgICAgICAgICAgICAkaW5kZW50ID0gMTsKICAgICAgICAgICAgICAgICAgICAkbmVzdGVkX3Rlcm5hcnlfZmxhZ1sgJGN1cnJlbnRfZGVwdGhbJGFhXSAtIDEgXSA9IC0xOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgJG5lc3RlZF9zdGF0ZW1lbnRfdHlwZVskYWFdWyAkY3VycmVudF9kZXB0aFskYWFdIF0gPSAkc3RhdGVtZW50X3R5cGU7CiAgICAkc3RhdGVtZW50X3R5cGUgPSAiIjsKICAgIHJldHVybiAoICRzZXFubywgJGluZGVudCApOwp9CgpzdWIgZGVjcmVhc2VfbmVzdGluZ19kZXB0aCB7CgogICAgbXkgKCAkYWEsICRwb3MgKSA9IEBfOwoKICAgICMgVVNFUyBHTE9CQUwgVkFSSUFCTEVTOiAkdG9rZW5pemVyX3NlbGYsIEBjdXJyZW50X2RlcHRoLAogICAgIyBAY3VycmVudF9zZXF1ZW5jZV9udW1iZXIsIEBkZXB0aF9hcnJheSwgQHN0YXJ0aW5nX2xpbmVfb2ZfY3VycmVudF9kZXB0aAogICAgIyAkc3RhdGVtZW50X3R5cGUKICAgIG15ICRzZXFubyAgICAgICAgICAgICA9IDA7CiAgICBteSAkaW5wdXRfbGluZV9udW1iZXIgPSAkdG9rZW5pemVyX3NlbGYtPntfbGFzdF9saW5lX251bWJlcn07CiAgICBteSAkaW5wdXRfbGluZSAgICAgICAgPSAkdG9rZW5pemVyX3NlbGYtPntfbGluZV90ZXh0fTsKCiAgICBteSAkb3V0ZGVudCA9IDA7CiAgICAkdG90YWxfZGVwdGgtLTsKICAgIGlmICggJGN1cnJlbnRfZGVwdGhbJGFhXSA+IDAgKSB7CgogICAgICAgICMgc2V0IGEgZmxhZyBmb3IgdW4taW5kZW50aW5nIGFmdGVyIHNlZWluZyBhIG5lc3RlZCB0ZXJuYXJ5IHN0YXRlbWVudAogICAgICAgICRzZXFubyA9ICRjdXJyZW50X3NlcXVlbmNlX251bWJlclskYWFdWyAkY3VycmVudF9kZXB0aFskYWFdIF07CiAgICAgICAgaWYgKCAkYWEgPT0gUVVFU1RJT05fQ09MT04gKSB7CiAgICAgICAgICAgICRvdXRkZW50ID0gJG5lc3RlZF90ZXJuYXJ5X2ZsYWdbICRjdXJyZW50X2RlcHRoWyRhYV0gXTsKICAgICAgICB9CiAgICAgICAgJHN0YXRlbWVudF90eXBlID0gJG5lc3RlZF9zdGF0ZW1lbnRfdHlwZVskYWFdWyAkY3VycmVudF9kZXB0aFskYWFdIF07CgogICAgICAgICMgY2hlY2sgdGhhdCBhbnkgYnJhY2UgdHlwZXMgJGJiIGNvbnRhaW5lZCB3aXRoaW4gYXJlIGJhbGFuY2VkCiAgICAgICAgZm9yIG15ICRiYiAoIDAgLi4gQGNsb3NpbmdfYnJhY2VfbmFtZXMgLSAxICkgewogICAgICAgICAgICBuZXh0IGlmICggJGJiID09ICRhYSApOwoKICAgICAgICAgICAgdW5sZXNzICggJGRlcHRoX2FycmF5WyRhYV1bJGJiXVsgJGN1cnJlbnRfZGVwdGhbJGFhXSBdID09CiAgICAgICAgICAgICAgICAkY3VycmVudF9kZXB0aFskYmJdICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbXkgJGRpZmYgPQogICAgICAgICAgICAgICAgICAkY3VycmVudF9kZXB0aFskYmJdIC0KICAgICAgICAgICAgICAgICAgJGRlcHRoX2FycmF5WyRhYV1bJGJiXVsgJGN1cnJlbnRfZGVwdGhbJGFhXSBdOwoKICAgICAgICAgICAgICAgICMgZG9uJ3Qgd2hpbmUgdG9vIG1hbnkgdGltZXMKICAgICAgICAgICAgICAgIG15ICRzYXdfYnJhY2VfZXJyb3IgPSBnZXRfc2F3X2JyYWNlX2Vycm9yKCk7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJHNhd19icmFjZV9lcnJvciA8PSBNQVhfTkFHX01FU1NBR0VTCgogICAgICAgICAgICAgICAgICAgICMgaWYgdG9vIG1hbnkgY2xvc2luZyB0eXBlcyBoYXZlIG9jY3VycmVkLCB3ZSBwcm9iYWJseQogICAgICAgICAgICAgICAgICAgICMgYWxyZWFkeSBjYXVnaHQgdGhpcyBlcnJvcgogICAgICAgICAgICAgICAgICAgICYmICggKCAkZGlmZiA+IDAgKSB8fCAoICRzYXdfYnJhY2VfZXJyb3IgPD0gMCApICkKICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGludGVycnVwdF9sb2dmaWxlKCk7CiAgICAgICAgICAgICAgICAgICAgbXkgJHJzbCA9CiAgICAgICAgICAgICAgICAgICAgICAkc3RhcnRpbmdfbGluZV9vZl9jdXJyZW50X2RlcHRoWyRhYV0KICAgICAgICAgICAgICAgICAgICAgIFsgJGN1cnJlbnRfZGVwdGhbJGFhXSBdOwogICAgICAgICAgICAgICAgICAgIG15ICRzbCAgPSAkcnNsLT5bMF07CiAgICAgICAgICAgICAgICAgICAgbXkgJHJlbCA9IFsgJGlucHV0X2xpbmVfbnVtYmVyLCAkaW5wdXRfbGluZSwgJHBvcyBdOwogICAgICAgICAgICAgICAgICAgIG15ICRlbCAgPSAkcmVsLT5bMF07CiAgICAgICAgICAgICAgICAgICAgbXkgKCRlc3MpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRkaWZmID09IDEgfHwgJGRpZmYgPT0gLTEgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRlc3MgPSAnJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRlc3MgPSAncyc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG15ICRibmFtZSA9CiAgICAgICAgICAgICAgICAgICAgICAoICRkaWZmID4gMCApCiAgICAgICAgICAgICAgICAgICAgICA/ICRvcGVuaW5nX2JyYWNlX25hbWVzWyRiYl0KICAgICAgICAgICAgICAgICAgICAgIDogJGNsb3NpbmdfYnJhY2VfbmFtZXNbJGJiXTsKICAgICAgICAgICAgICAgICAgICB3cml0ZV9lcnJvcl9pbmRpY2F0b3JfcGFpciggQHskcnNsfSwgJ14nICk7CiAgICAgICAgICAgICAgICAgICAgbXkgJG1zZyA9IDw8IkVPTSI7CkZvdW5kICRkaWZmIGV4dHJhICRibmFtZSRlc3MgYmV0d2VlbiAkb3BlbmluZ19icmFjZV9uYW1lc1skYWFdIG9uIGxpbmUgJHNsIGFuZCAkY2xvc2luZ19icmFjZV9uYW1lc1skYWFdIG9uIGxpbmUgJGVsCkVPTQoKICAgICAgICAgICAgICAgICAgICBpZiAoICRkaWZmID4gMCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHJtbCA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXJ0aW5nX2xpbmVfb2ZfY3VycmVudF9kZXB0aFskYmJdCiAgICAgICAgICAgICAgICAgICAgICAgICAgWyAkY3VycmVudF9kZXB0aFskYmJdIF07CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRtbCA9ICRybWwtPlswXTsKICAgICAgICAgICAgICAgICAgICAgICAgJG1zZyAuPQoiICAgIFRoZSBtb3N0IHJlY2VudCB1bi1tYXRjaGVkICRibmFtZSBpcyBvbiBsaW5lICRtbFxuIjsKICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVfZXJyb3JfaW5kaWNhdG9yX3BhaXIoIEB7JHJtbH0sICdeJyApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB3cml0ZV9lcnJvcl9pbmRpY2F0b3JfcGFpciggQHskcmVsfSwgJ14nICk7CiAgICAgICAgICAgICAgICAgICAgd2FybmluZygkbXNnKTsKICAgICAgICAgICAgICAgICAgICByZXN1bWVfbG9nZmlsZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaW5jcmVtZW50X2JyYWNlX2Vycm9yKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJGN1cnJlbnRfZGVwdGhbJGFhXS0tOwogICAgfQogICAgZWxzZSB7CgogICAgICAgIG15ICRzYXdfYnJhY2VfZXJyb3IgPSBnZXRfc2F3X2JyYWNlX2Vycm9yKCk7CiAgICAgICAgaWYgKCAkc2F3X2JyYWNlX2Vycm9yIDw9IE1BWF9OQUdfTUVTU0FHRVMgKSB7CiAgICAgICAgICAgIG15ICRtc2cgPSA8PCJFT00iOwpUaGVyZSBpcyBubyBwcmV2aW91cyAkb3BlbmluZ19icmFjZV9uYW1lc1skYWFdIHRvIG1hdGNoIGEgJGNsb3NpbmdfYnJhY2VfbmFtZXNbJGFhXSBvbiBsaW5lICRpbnB1dF9saW5lX251bWJlcgpFT00KICAgICAgICAgICAgaW5kaWNhdGVfZXJyb3IoICRtc2csICRpbnB1dF9saW5lX251bWJlciwgJGlucHV0X2xpbmUsICRwb3MsICdeJyApOwogICAgICAgIH0KICAgICAgICBpbmNyZW1lbnRfYnJhY2VfZXJyb3IoKTsKICAgIH0KICAgIHJldHVybiAoICRzZXFubywgJG91dGRlbnQgKTsKfQoKc3ViIGNoZWNrX2ZpbmFsX25lc3RpbmdfZGVwdGhzIHsKCiAgICAjIFVTRVMgR0xPQkFMIFZBUklBQkxFUzogQGN1cnJlbnRfZGVwdGgsIEBzdGFydGluZ19saW5lX29mX2N1cnJlbnRfZGVwdGgKCiAgICBmb3IgbXkgJGFhICggMCAuLiBAY2xvc2luZ19icmFjZV9uYW1lcyAtIDEgKSB7CgogICAgICAgIGlmICggJGN1cnJlbnRfZGVwdGhbJGFhXSApIHsKICAgICAgICAgICAgbXkgJHJzbCA9CiAgICAgICAgICAgICAgJHN0YXJ0aW5nX2xpbmVfb2ZfY3VycmVudF9kZXB0aFskYWFdWyAkY3VycmVudF9kZXB0aFskYWFdIF07CiAgICAgICAgICAgIG15ICRzbCAgPSAkcnNsLT5bMF07CiAgICAgICAgICAgIG15ICRtc2cgPSA8PCJFT00iOwpGaW5hbCBuZXN0aW5nIGRlcHRoIG9mICRvcGVuaW5nX2JyYWNlX25hbWVzWyRhYV1zIGlzICRjdXJyZW50X2RlcHRoWyRhYV0KVGhlIG1vc3QgcmVjZW50IHVuLW1hdGNoZWQgJG9wZW5pbmdfYnJhY2VfbmFtZXNbJGFhXSBpcyBvbiBsaW5lICRzbApFT00KICAgICAgICAgICAgaW5kaWNhdGVfZXJyb3IoICRtc2csIEB7JHJzbH0sICdeJyApOwogICAgICAgICAgICBpbmNyZW1lbnRfYnJhY2VfZXJyb3IoKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm47Cn0KCiMjIyMjIyMjI2kjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgVG9rZW5pemVyIHJvdXRpbmVzIGZvciBsb29raW5nIGFoZWFkIGluIGlucHV0IHN0cmVhbQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKc3ViIHBlZWtfYWhlYWRfZm9yX25fbm9uYmxhbmtfcHJlX3Rva2VucyB7CgogICAgIyByZXR1cm5zIG5leHQgbiBwcmV0b2tlbnMgaWYgdGhleSBleGlzdAogICAgIyByZXR1cm5zIHVuZGVmJ3MgaWYgaGl0cyBlb2Ygd2l0aG91dCBzZWVpbmcgYW55IHByZXRva2VucwogICAgIyBVU0VTIEdMT0JBTCBWQVJJQUJMRVM6ICR0b2tlbml6ZXJfc2VsZgogICAgbXkgJG1heF9wcmV0b2tlbnMgPSBzaGlmdDsKICAgIG15ICRsaW5lOwogICAgbXkgJGkgPSAwOwogICAgbXkgKCAkcnByZV90b2tlbnMsICRybWFwLCAkcnByZV90eXBlcyApOwoKICAgIHdoaWxlICggJGxpbmUgPSAkdG9rZW5pemVyX3NlbGYtPntfbGluZV9idWZmZXJfb2JqZWN0fS0+cGVla19haGVhZCggJGkrKyApICkKICAgIHsKICAgICAgICAkbGluZSA9fiBzL15ccyovLzsgICAgIyB0cmltIGxlYWRpbmcgYmxhbmtzCiAgICAgICAgbmV4dCBpZiAoIGxlbmd0aCgkbGluZSkgPD0gMCApOyAgICAjIHNraXAgYmxhbmsKICAgICAgICBuZXh0IGlmICggJGxpbmUgPX4gL14jLyApOyAgICAgICAgICMgc2tpcCBjb21tZW50CiAgICAgICAgKCAkcnByZV90b2tlbnMsICRybWFwLCAkcnByZV90eXBlcyApID0KICAgICAgICAgIHByZV90b2tlbml6ZSggJGxpbmUsICRtYXhfcHJldG9rZW5zICk7CiAgICAgICAgbGFzdDsKICAgIH0KICAgIHJldHVybiAoICRycHJlX3Rva2VucywgJHJwcmVfdHlwZXMgKTsKfQoKIyBsb29rIGFoZWFkIGZvciBuZXh0IG5vbi1ibGFuaywgbm9uLWNvbW1lbnQgbGluZSBvZiBjb2RlCnN1YiBwZWVrX2FoZWFkX2Zvcl9ub25ibGFua190b2tlbiB7CgogICAgIyBVU0VTIEdMT0JBTCBWQVJJQUJMRVM6ICR0b2tlbml6ZXJfc2VsZgogICAgbXkgKCAkcnRva2VucywgJG1heF90b2tlbl9pbmRleCApID0gQF87CiAgICBteSAkbGluZTsKICAgIG15ICRpID0gMDsKCiAgICB3aGlsZSAoICRsaW5lID0gJHRva2VuaXplcl9zZWxmLT57X2xpbmVfYnVmZmVyX29iamVjdH0tPnBlZWtfYWhlYWQoICRpKysgKSApCiAgICB7CiAgICAgICAgJGxpbmUgPX4gcy9eXHMqLy87ICAgICMgdHJpbSBsZWFkaW5nIGJsYW5rcwogICAgICAgIG5leHQgaWYgKCBsZW5ndGgoJGxpbmUpIDw9IDAgKTsgICAgIyBza2lwIGJsYW5rCiAgICAgICAgbmV4dCBpZiAoICRsaW5lID1+IC9eIy8gKTsgICAgICAgICAjIHNraXAgY29tbWVudAogICAgICAgIG15ICggJHJ0b2ssICRybWFwLCAkcnR5cGUgKSA9CiAgICAgICAgICBwcmVfdG9rZW5pemUoICRsaW5lLCAyICk7ICAgICAgICAjIG9ubHkgbmVlZCAyIHByZS10b2tlbnMKICAgICAgICBteSAkaiA9ICRtYXhfdG9rZW5faW5kZXggKyAxOwoKICAgICAgICBmb3JlYWNoIG15ICR0b2sgKCBAeyRydG9rfSApIHsKICAgICAgICAgICAgbGFzdCBpZiAoICR0b2sgPX4gIlxuIiApOwogICAgICAgICAgICAkcnRva2Vucy0+WyArKyRqIF0gPSAkdG9rOwogICAgICAgIH0KICAgICAgICBsYXN0OwogICAgfQogICAgcmV0dXJuICRydG9rZW5zOwp9CgojIyMjIyMjIyNpIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFRva2VuaXplciBndWVzc2luZyByb3V0aW5lcyBmb3IgYW1iaWd1b3VzIHNpdHVhdGlvbnMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnN1YiBndWVzc19pZl9wYXR0ZXJuX29yX2NvbmRpdGlvbmFsIHsKCiAgICAjIHRoaXMgcm91dGluZSBpcyBjYWxsZWQgd2hlbiB3ZSBoYXZlIGVuY291bnRlcmVkIGEgPyBmb2xsb3dpbmcgYW4KICAgICMgdW5rbm93biBiYXJld29yZCwgYW5kIHdlIG11c3QgZGVjaWRlIGlmIGl0IHN0YXJ0cyBhIHBhdHRlcm4gb3Igbm90CiAgICAjIGlucHV0IHBhcmFtZXRlcnM6CiAgICAjICAgJGkgLSB0b2tlbiBpbmRleCBvZiB0aGUgPyBzdGFydGluZyBwb3NzaWJsZSBwYXR0ZXJuCiAgICAjIG91dHB1dCBwYXJhbWV0ZXJzOgogICAgIyAgICRpc19wYXR0ZXJuID0gMCBpZiBwcm9iYWJseSBub3QgcGF0dGVybiwgID0xIGlmIHByb2JhYmx5IGEgcGF0dGVybgogICAgIyAgIG1zZyA9IGEgd2FybmluZyBvciBkaWFnbm9zdGljIG1lc3NhZ2UKICAgICMgVVNFUyBHTE9CQUwgVkFSSUFCTEVTOiAkbGFzdF9ub25ibGFua190b2tlbgoKICAgICMgRklYTUU6IHRoaXMgbmVlZHMgdG8gYmUgcmV3cml0dGVuCgogICAgbXkgKCAkaSwgJHJ0b2tlbnMsICRydG9rZW5fbWFwLCAkbWF4X3Rva2VuX2luZGV4ICkgPSBAXzsKICAgIG15ICRpc19wYXR0ZXJuID0gMDsKICAgIG15ICRtc2cgICAgICAgID0gImd1ZXNzaW5nIHRoYXQgPyBhZnRlciAkbGFzdF9ub25ibGFua190b2tlbiBzdGFydHMgYSAiOwoKICAgIGlmICggJGkgPj0gJG1heF90b2tlbl9pbmRleCApIHsKICAgICAgICAkbXNnIC49ICJjb25kaXRpb25hbCAobm8gZW5kIHRvIHBhdHRlcm4gZm91bmQgb24gdGhlIGxpbmUpXG4iOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgbXkgJGliZWcgPSAkaTsKICAgICAgICAkaSA9ICRpYmVnICsgMTsKICAgICAgICBteSAkbmV4dF90b2tlbiA9ICRydG9rZW5zLT5bJGldOyAgICAjIGZpcnN0IHRva2VuIGFmdGVyID8KCiAgICAgICAgIyBsb29rIGZvciBhIHBvc3NpYmxlIGVuZGluZyA/IG9uIHRoaXMgbGluZS4uCiAgICAgICAgbXkgJGluX3F1b3RlICAgICAgICA9IDE7CiAgICAgICAgbXkgJHF1b3RlX2RlcHRoICAgICA9IDA7CiAgICAgICAgbXkgJHF1b3RlX2NoYXJhY3RlciA9ICcnOwogICAgICAgIG15ICRxdW90ZV9wb3MgICAgICAgPSAwOwogICAgICAgIG15ICRxdW90ZWRfc3RyaW5nOwogICAgICAgICgKICAgICAgICAgICAgJGksICRpbl9xdW90ZSwgJHF1b3RlX2NoYXJhY3RlciwgJHF1b3RlX3BvcywgJHF1b3RlX2RlcHRoLAogICAgICAgICAgICAkcXVvdGVkX3N0cmluZwogICAgICAgICAgKQogICAgICAgICAgPSBmb2xsb3dfcXVvdGVkX3N0cmluZyggJGliZWcsICRpbl9xdW90ZSwgJHJ0b2tlbnMsICRxdW90ZV9jaGFyYWN0ZXIsCiAgICAgICAgICAgICRxdW90ZV9wb3MsICRxdW90ZV9kZXB0aCwgJG1heF90b2tlbl9pbmRleCApOwoKICAgICAgICBpZiAoJGluX3F1b3RlKSB7CgogICAgICAgICAgICAjIHdlIGRpZG4ndCBmaW5kIGFuIGVuZGluZyA/IG9uIHRoaXMgbGluZSwKICAgICAgICAgICAgIyBzbyB3ZSBiaWFzIHRvd2FyZHMgY29uZGl0aW9uYWwKICAgICAgICAgICAgJGlzX3BhdHRlcm4gPSAwOwogICAgICAgICAgICAkbXNnIC49ICJjb25kaXRpb25hbCAobm8gZW5kaW5nID8gb24gdGhpcyBsaW5lKVxuIjsKCiAgICAgICAgICAgICMgd2UgZm91bmQgYW4gZW5kaW5nID8sIHNvIHdlIGJpYXMgdG93YXJkcyBhIHBhdHRlcm4KICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIFdhdGNoIG91dCBmb3IgYW4gZW5kaW5nID8gaW4gcXVvdGVzLCBsaWtlIHRoaXMKICAgICAgICAgICAgIyAgICBteSAkY2FzZV9mbGFnID0gRmlsZTo6U3BlYy0+Y2FzZV90b2xlcmFudCA/ICcoP2kpJyA6ICcnOwogICAgICAgICAgICBteSAkc19xdW90ZSA9IDA7CiAgICAgICAgICAgIG15ICRkX3F1b3RlID0gMDsKICAgICAgICAgICAgbXkgJGNvbG9ucyAgPSAwOwogICAgICAgICAgICBmb3JlYWNoIG15ICRpaSAoICRpYmVnICsgMSAuLiAkaSAtIDEgKSB7CiAgICAgICAgICAgICAgICBteSAkdG9rID0gJHJ0b2tlbnMtPlskaWldOwogICAgICAgICAgICAgICAgaWYgKCAkdG9rIGVxICI6IiApIHsgJGNvbG9ucysrIH0KICAgICAgICAgICAgICAgIGlmICggJHRvayBlcSAiJyIgKSB7ICRzX3F1b3RlKysgfQogICAgICAgICAgICAgICAgaWYgKCAkdG9rIGVxICciJyApIHsgJGRfcXVvdGUrKyB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkc19xdW90ZSAlIDIgfHwgJGRfcXVvdGUgJSAyIHx8ICRjb2xvbnMgKSB7CiAgICAgICAgICAgICAgICAkaXNfcGF0dGVybiA9IDA7CiAgICAgICAgICAgICAgICAkbXNnIC49ICJmb3VuZCBlbmRpbmcgPyBidXQgdW5iYWxhbmNlZCBxdW90ZSBjaGFyc1xuIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoIHBhdHRlcm5fZXhwZWN0ZWQoICRpLCAkcnRva2VucywgJG1heF90b2tlbl9pbmRleCApID49IDAgKSB7CiAgICAgICAgICAgICAgICAkaXNfcGF0dGVybiA9IDE7CiAgICAgICAgICAgICAgICAkbXNnIC49ICJwYXR0ZXJuIChmb3VuZCBlbmRpbmcgPyBhbmQgcGF0dGVybiBleHBlY3RlZClcbiI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkbXNnIC49ICJwYXR0ZXJuICh1bmNlcnRhaW4sIGJ1dCBmb3VuZCBlbmRpbmcgPylcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gKCAkaXNfcGF0dGVybiwgJG1zZyApOwp9CgpzdWIgZ3Vlc3NfaWZfcGF0dGVybl9vcl9kaXZpc2lvbiB7CgogICAgIyB0aGlzIHJvdXRpbmUgaXMgY2FsbGVkIHdoZW4gd2UgaGF2ZSBlbmNvdW50ZXJlZCBhIC8gZm9sbG93aW5nIGFuCiAgICAjIHVua25vd24gYmFyZXdvcmQsIGFuZCB3ZSBtdXN0IGRlY2lkZSBpZiBpdCBzdGFydHMgYSBwYXR0ZXJuIG9yIGlzIGEKICAgICMgZGl2aXNpb24KICAgICMgaW5wdXQgcGFyYW1ldGVyczoKICAgICMgICAkaSAtIHRva2VuIGluZGV4IG9mIHRoZSAvIHN0YXJ0aW5nIHBvc3NpYmxlIHBhdHRlcm4KICAgICMgb3V0cHV0IHBhcmFtZXRlcnM6CiAgICAjICAgJGlzX3BhdHRlcm4gPSAwIGlmIHByb2JhYmx5IGRpdmlzaW9uLCAgPTEgaWYgcHJvYmFibHkgYSBwYXR0ZXJuCiAgICAjICAgbXNnID0gYSB3YXJuaW5nIG9yIGRpYWdub3N0aWMgbWVzc2FnZQogICAgIyBVU0VTIEdMT0JBTCBWQVJJQUJMRVM6ICRsYXN0X25vbmJsYW5rX3Rva2VuCiAgICBteSAoICRpLCAkcnRva2VucywgJHJ0b2tlbl9tYXAsICRtYXhfdG9rZW5faW5kZXggKSA9IEBfOwogICAgbXkgJGlzX3BhdHRlcm4gPSAwOwogICAgbXkgJG1zZyAgICAgICAgPSAiZ3Vlc3NpbmcgdGhhdCAvIGFmdGVyICRsYXN0X25vbmJsYW5rX3Rva2VuIHN0YXJ0cyBhICI7CgogICAgaWYgKCAkaSA+PSAkbWF4X3Rva2VuX2luZGV4ICkgewogICAgICAgICRtc2cgLj0gImRpdmlzaW9uIChubyBlbmQgdG8gcGF0dGVybiBmb3VuZCBvbiB0aGUgbGluZSlcbiI7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBteSAkaWJlZyA9ICRpOwogICAgICAgIG15ICRkaXZpZGVfZXhwZWN0ZWQgPQogICAgICAgICAgbnVtZXJhdG9yX2V4cGVjdGVkKCAkaSwgJHJ0b2tlbnMsICRtYXhfdG9rZW5faW5kZXggKTsKICAgICAgICAkaSA9ICRpYmVnICsgMTsKICAgICAgICBteSAkbmV4dF90b2tlbiA9ICRydG9rZW5zLT5bJGldOyAgICAjIGZpcnN0IHRva2VuIGFmdGVyIHNsYXNoCgogICAgICAgICMgbG9vayBmb3IgYSBwb3NzaWJsZSBlbmRpbmcgLyBvbiB0aGlzIGxpbmUuLgogICAgICAgIG15ICRpbl9xdW90ZSAgICAgICAgPSAxOwogICAgICAgIG15ICRxdW90ZV9kZXB0aCAgICAgPSAwOwogICAgICAgIG15ICRxdW90ZV9jaGFyYWN0ZXIgPSAnJzsKICAgICAgICBteSAkcXVvdGVfcG9zICAgICAgID0gMDsKICAgICAgICBteSAkcXVvdGVkX3N0cmluZzsKICAgICAgICAoCiAgICAgICAgICAgICRpLCAkaW5fcXVvdGUsICRxdW90ZV9jaGFyYWN0ZXIsICRxdW90ZV9wb3MsICRxdW90ZV9kZXB0aCwKICAgICAgICAgICAgJHF1b3RlZF9zdHJpbmcKICAgICAgICAgICkKICAgICAgICAgID0gZm9sbG93X3F1b3RlZF9zdHJpbmcoICRpYmVnLCAkaW5fcXVvdGUsICRydG9rZW5zLCAkcXVvdGVfY2hhcmFjdGVyLAogICAgICAgICAgICAkcXVvdGVfcG9zLCAkcXVvdGVfZGVwdGgsICRtYXhfdG9rZW5faW5kZXggKTsKCiAgICAgICAgaWYgKCRpbl9xdW90ZSkgewoKICAgICAgICAgICAgIyB3ZSBkaWRuJ3QgZmluZCBhbiBlbmRpbmcgLyBvbiB0aGlzIGxpbmUsCiAgICAgICAgICAgICMgc28gd2UgYmlhcyB0b3dhcmRzIGRpdmlzaW9uCiAgICAgICAgICAgIGlmICggJGRpdmlkZV9leHBlY3RlZCA+PSAwICkgewogICAgICAgICAgICAgICAgJGlzX3BhdHRlcm4gPSAwOwogICAgICAgICAgICAgICAgJG1zZyAuPSAiZGl2aXNpb24gKG5vIGVuZGluZyAvIG9uIHRoaXMgbGluZSlcbiI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkbXNnICAgICAgICA9ICJtdWx0aS1saW5lIHBhdHRlcm4gKGRpdmlzaW9uIG5vdCBwb3NzaWJsZSlcbiI7CiAgICAgICAgICAgICAgICAkaXNfcGF0dGVybiA9IDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgICAjIHdlIGZvdW5kIGFuIGVuZGluZyAvLCBzbyB3ZSBiaWFzIHRvd2FyZHMgYSBwYXR0ZXJuCiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICBpZiAoIHBhdHRlcm5fZXhwZWN0ZWQoICRpLCAkcnRva2VucywgJG1heF90b2tlbl9pbmRleCApID49IDAgKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkZGl2aWRlX2V4cGVjdGVkID49IDAgKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICggJGkgLSAkaWJlZyA+IDYwICkgewogICAgICAgICAgICAgICAgICAgICAgICAkbXNnIC49ICJkaXZpc2lvbiAobWF0Y2hpbmcgLyB0b28gZGlzdGFudClcbiI7CiAgICAgICAgICAgICAgICAgICAgICAgICRpc19wYXR0ZXJuID0gMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRtc2cgLj0gInBhdHRlcm4gKGJ1dCBkaXZpc2lvbiBwb3NzaWJsZSB0b28pXG4iOwogICAgICAgICAgICAgICAgICAgICAgICAkaXNfcGF0dGVybiA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGlzX3BhdHRlcm4gPSAxOwogICAgICAgICAgICAgICAgICAgICRtc2cgLj0gInBhdHRlcm4gKGRpdmlzaW9uIG5vdCBwb3NzaWJsZSlcbiI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgaWYgKCAkZGl2aWRlX2V4cGVjdGVkID49IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgJGlzX3BhdHRlcm4gPSAwOwogICAgICAgICAgICAgICAgICAgICRtc2cgLj0gImRpdmlzaW9uIChwYXR0ZXJuIG5vdCBwb3NzaWJsZSlcbiI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkaXNfcGF0dGVybiA9IDE7CiAgICAgICAgICAgICAgICAgICAgJG1zZyAuPQogICAgICAgICAgICAgICAgICAgICAgInBhdHRlcm4gKHVuY2VydGFpbiwgYnV0IGRpdmlzaW9uIHdvdWxkIG5vdCB3b3JrIGhlcmUpXG4iOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuICggJGlzX3BhdHRlcm4sICRtc2cgKTsKfQoKIyB0cnkgdG8gcmVzb2x2ZSBoZXJlLWRvYyB2cy4gc2hpZnQgYnkgbG9va2luZyBhaGVhZCBmb3IKIyBub24tY29kZSBvciB0aGUgZW5kIHRva2VuIChjdXJyZW50bHkgb25seSBsb29rcyBmb3IgZW5kIHRva2VuKQojIHJldHVybnMgMSBpZiBpdCBpcyBwcm9iYWJseSBhIGhlcmUgZG9jLCAwIGlmIG5vdApzdWIgZ3Vlc3NfaWZfaGVyZV9kb2MgewoKICAgICMgVGhpcyBpcyBob3cgbWFueSBsaW5lcyB3ZSB3aWxsIHNlYXJjaCBmb3IgYSB0YXJnZXQgYXMgcGFydCBvZiB0aGUKICAgICMgZ3Vlc3Npbmcgc3RyYXRlZ3kuICBJdCBpcyBhIGNvbnN0YW50IGJlY2F1c2UgdGhlcmUgaXMgcHJvYmFibHkKICAgICMgbGl0dGxlIHJlYXNvbiB0byBjaGFuZ2UgaXQuCiAgICAjIFVTRVMgR0xPQkFMIFZBUklBQkxFUzogJHRva2VuaXplcl9zZWxmLCAkY3VycmVudF9wYWNrYWdlCiAgICAjICVpc19jb25zdGFudCwKICAgIG15ICRIRVJFX0RPQ19XSU5ET1cgPSA0MDsKCiAgICBteSAkbmV4dF90b2tlbiAgICAgICAgPSBzaGlmdDsKICAgIG15ICRoZXJlX2RvY19leHBlY3RlZCA9IDA7CiAgICBteSAkbGluZTsKICAgIG15ICRrICAgPSAwOwogICAgbXkgJG1zZyA9ICJjaGVja2luZyA8PCI7CgogICAgd2hpbGUgKCAkbGluZSA9ICR0b2tlbml6ZXJfc2VsZi0+e19saW5lX2J1ZmZlcl9vYmplY3R9LT5wZWVrX2FoZWFkKCAkaysrICkgKQogICAgewogICAgICAgIGNob21wICRsaW5lOwoKICAgICAgICBpZiAoICRsaW5lID1+IC9eJG5leHRfdG9rZW4kLyApIHsKICAgICAgICAgICAgJG1zZyAuPSAiIC0tIGZvdW5kIHRhcmdldCAkbmV4dF90b2tlbiBhaGVhZCAkayBsaW5lc1xuIjsKICAgICAgICAgICAgJGhlcmVfZG9jX2V4cGVjdGVkID0gMTsgICAgIyBnb3QgaXQKICAgICAgICAgICAgbGFzdDsKICAgICAgICB9CiAgICAgICAgbGFzdCBpZiAoICRrID49ICRIRVJFX0RPQ19XSU5ET1cgKTsKICAgIH0KCiAgICB1bmxlc3MgKCRoZXJlX2RvY19leHBlY3RlZCkgewoKICAgICAgICBpZiAoICFkZWZpbmVkKCRsaW5lKSApIHsKICAgICAgICAgICAgJGhlcmVfZG9jX2V4cGVjdGVkID0gLTE7ICAgICMgaGl0IGVvZiB3aXRob3V0IHNlZWluZyB0YXJnZXQKICAgICAgICAgICAgJG1zZyAuPSAiIC0tIG11c3QgYmUgc2hpZnQ7IHRhcmdldCAkbmV4dF90b2tlbiBub3QgaW4gZmlsZVxuIjsKCiAgICAgICAgfQogICAgICAgIGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzdGlsbCB1bnN1cmUuLnRha2luZyBhIHdpbGQgZ3Vlc3MKCiAgICAgICAgICAgIGlmICggISRpc19jb25zdGFudHskY3VycmVudF9wYWNrYWdlfXskbmV4dF90b2tlbn0gKSB7CiAgICAgICAgICAgICAgICAkaGVyZV9kb2NfZXhwZWN0ZWQgPSAxOwogICAgICAgICAgICAgICAgJG1zZyAuPQogICAgICAgICAgICAgICAgICAiIC0tIGd1ZXNzaW5nIGl0J3MgYSBoZXJlLWRvYyAoJG5leHRfdG9rZW4gbm90IGEgY29uc3RhbnQpXG4iOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJG1zZyAuPQogICAgICAgICAgICAgICAgICAiIC0tIGd1ZXNzaW5nIGl0J3MgYSBzaGlmdCAoJG5leHRfdG9rZW4gaXMgYSBjb25zdGFudClcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCRtc2cpOwogICAgcmV0dXJuICRoZXJlX2RvY19leHBlY3RlZDsKfQoKIyMjIyMjIyMjaSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBUb2tlbml6ZXIgUm91dGluZXMgZm9yIHNjYW5uaW5nIGlkZW50aWZpZXJzIGFuZCByZWxhdGVkIGl0ZW1zCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpzdWIgc2Nhbl9iYXJlX2lkZW50aWZpZXJfZG8gewoKICAgICMgdGhpcyByb3V0aW5lIGlzIGNhbGxlZCB0byBzY2FuIGEgdG9rZW4gc3RhcnRpbmcgd2l0aCBhbiBhbHBoYW51bWVyaWMKICAgICMgdmFyaWFibGUgb3IgcGFja2FnZSBzZXBhcmF0b3IsIDo6IG9yICcuCiAgICAjIFVTRVMgR0xPQkFMIFZBUklBQkxFUzogJGN1cnJlbnRfcGFja2FnZSwgJGxhc3Rfbm9uYmxhbmtfdG9rZW4sCiAgICAjICRsYXN0X25vbmJsYW5rX3R5cGUsQHBhcmVuX3R5cGUsICRwYXJlbl9kZXB0aAoKICAgIG15ICggJGlucHV0X2xpbmUsICRpLCAkdG9rLCAkdHlwZSwgJHByb3RvdHlwZSwgJHJ0b2tlbl9tYXAsCiAgICAgICAgJG1heF90b2tlbl9pbmRleCApCiAgICAgID0gQF87CiAgICBteSAkaV9iZWdpbiA9ICRpOwogICAgbXkgJHBhY2thZ2UgPSB1bmRlZjsKCiAgICBteSAkaV9iZWcgPSAkaTsKCiAgICAjIHdlIGhhdmUgdG8gYmFjayB1cCBvbmUgcHJldG9rZW4gYXQgYSA6OiBzaW5jZSBlYWNoIDogaXMgb25lIHByZXRva2VuCiAgICBpZiAoICR0b2sgZXEgJzo6JyApIHsgJGlfYmVnLS0gfQogICAgaWYgKCAkdG9rIGVxICctPicgKSB7ICRpX2JlZy0tIH0KICAgIG15ICRwb3NfYmVnID0gJHJ0b2tlbl9tYXAtPlskaV9iZWddOwogICAgcG9zKCRpbnB1dF9saW5lKSA9ICRwb3NfYmVnOwoKICAgICMgIEV4YW1wbGVzOgogICAgIyAgIEE6OkI6OkMKICAgICMgICBBOjoKICAgICMgICA6OkEKICAgICMgICBBJ0IKICAgIGlmICggJGlucHV0X2xpbmUgPX4gbS9cR1xzKigoPzpcdyooPzonfDo6KSkpKig/Oig/Oi0+KT8oXHcrKSk/L2djICkgewoKICAgICAgICBteSAkcG9zICA9IHBvcygkaW5wdXRfbGluZSk7CiAgICAgICAgbXkgJG51bWMgPSAkcG9zIC0gJHBvc19iZWc7CiAgICAgICAgJHRvayA9IHN1YnN0ciggJGlucHV0X2xpbmUsICRwb3NfYmVnLCAkbnVtYyApOwoKICAgICAgICAjIHR5cGUgJ3cnIGluY2x1ZGVzIGFueXRoaW5nIHdpdGhvdXQgbGVhZGluZyB0eXBlIGluZm8KICAgICAgICAjICgkLCUsQCwqKSBpbmNsdWRpbmcgc29tZXRoaW5nIGxpa2UgYWJjOjpkZWY6OmdoaQogICAgICAgICR0eXBlID0gJ3cnOwoKICAgICAgICBteSAkc3ViX25hbWUgPSAiIjsKICAgICAgICBpZiAoIGRlZmluZWQoJDIpICkgeyAkc3ViX25hbWUgPSAkMjsgfQogICAgICAgIGlmICggZGVmaW5lZCgkMSkgKSB7CiAgICAgICAgICAgICRwYWNrYWdlID0gJDE7CgogICAgICAgICAgICAjIHBhdGNoOiBkb24ndCBhbGxvdyBpc29sYXRlZCBwYWNrYWdlIG5hbWUgd2hpY2gganVzdCBlbmRzCiAgICAgICAgICAgICMgaW4gdGhlIG9sZCBzdHlsZSBwYWNrYWdlIHNlcGFyYXRvciAoc2luZ2xlIHF1b3RlKS4gIEV4YW1wbGU6CiAgICAgICAgICAgICMgICB1c2UgQ0dJJzphbGwnOwogICAgICAgICAgICBpZiAoICEoJHN1Yl9uYW1lKSAmJiBzdWJzdHIoICRwYWNrYWdlLCAtMSwgMSApIGVxICdcJycgKSB7CiAgICAgICAgICAgICAgICAkcG9zLS07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRwYWNrYWdlID1+IHMvXCcvOjovZzsKICAgICAgICAgICAgaWYgKCAkcGFja2FnZSA9fiAvXlw6LyApIHsgJHBhY2thZ2UgPSAnbWFpbicgLiAkcGFja2FnZSB9CiAgICAgICAgICAgICRwYWNrYWdlID1+IHMvOjokLy87CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkcGFja2FnZSA9ICRjdXJyZW50X3BhY2thZ2U7CgogICAgICAgICAgICBpZiAoICRpc19rZXl3b3JkeyR0b2t9ICkgewogICAgICAgICAgICAgICAgJHR5cGUgPSAnayc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgaWYgaXQgaXMgYSBiYXJld29yZC4uCiAgICAgICAgaWYgKCAkdHlwZSBlcSAndycgKSB7CgogICAgICAgICAgICAjIGNoZWNrIGZvciB2LXN0cmluZyB3aXRoIGxlYWRpbmcgJ3YnIHR5cGUgY2hhcmFjdGVyCiAgICAgICAgICAgICMgKFRoaXMgc2VlbXMgdG8gaGF2ZSBwcmVjZWRlbmNlIG92ZXIgZmlsZWhhbmRsZSwgdHlwZSAnWScpCiAgICAgICAgICAgIGlmICggJHRvayA9fiAvXnZcZFtfXGRdKiQvICkgewoKICAgICAgICAgICAgICAgICMgd2Ugb25seSBoYXZlIHRoZSBmaXJzdCBwYXJ0IC0gc29tZXRoaW5nIGxpa2UgJ3YxMDEnIC0KICAgICAgICAgICAgICAgICMgbG9vayBmb3IgbW9yZQogICAgICAgICAgICAgICAgaWYgKCAkaW5wdXRfbGluZSA9fiBtL1xHKFwuXGRbX1xkXSopKy9nYyApIHsKICAgICAgICAgICAgICAgICAgICAkcG9zICA9IHBvcygkaW5wdXRfbGluZSk7CiAgICAgICAgICAgICAgICAgICAgJG51bWMgPSAkcG9zIC0gJHBvc19iZWc7CiAgICAgICAgICAgICAgICAgICAgJHRvayAgPSBzdWJzdHIoICRpbnB1dF9saW5lLCAkcG9zX2JlZywgJG51bWMgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICR0eXBlID0gJ3YnOwoKICAgICAgICAgICAgICAgICMgd2FybiBpZiB0aGlzIHZlcnNpb24gY2FuJ3QgaGFuZGxlIHYtc3RyaW5ncwogICAgICAgICAgICAgICAgcmVwb3J0X3Zfc3RyaW5nKCR0b2spOwogICAgICAgICAgICB9CgogICAgICAgICAgICBlbHNpZiAoICRpc19jb25zdGFudHskcGFja2FnZX17JHN1Yl9uYW1lfSApIHsKICAgICAgICAgICAgICAgICR0eXBlID0gJ0MnOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGJhcmV3b3JkIGFmdGVyIHNvcnQgaGFzIGltcGxpZWQgZW1wdHkgcHJvdG90eXBlOyBmb3IgZXhhbXBsZToKICAgICAgICAgICAgIyBAc29ydGVkID0gc29ydCBudW1lcmljYWxseSAoIDUzLCAyOSwgMTEsIDMyLCA3ICk7CiAgICAgICAgICAgICMgVGhpcyBoYXMgcHJpb3JpdHkgb3ZlciB3aGF0ZXZlciB0aGUgdXNlciBoYXMgc3BlY2lmaWVkLgogICAgICAgICAgICBlbHNpZiAoJGxhc3Rfbm9uYmxhbmtfdG9rZW4gZXEgJ3NvcnQnCiAgICAgICAgICAgICAgICAmJiAkbGFzdF9ub25ibGFua190eXBlIGVxICdrJyApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICR0eXBlID0gJ1onOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIE5vdGU6IHN0cmFuZ2VseSwgcGVybCBkb2VzIG5vdCBzZWVtIHRvIHJlYWxseSBsZXQgeW91IGNyZWF0ZQogICAgICAgICAgICAjIGZ1bmN0aW9ucyB3aGljaCBhY3QgbGlrZSBldmFsIGFuZCBkbywgaW4gdGhlIHNlbnNlIHRoYXQgZXZhbAogICAgICAgICAgICAjIGFuZCBkbyBtYXkgaGF2ZSBvcGVyYXRvcnMgZm9sbG93aW5nIHRoZSBmaW5hbCB9LCBidXQgYW55IG9wZXJhdG9ycwogICAgICAgICAgICAjIHRoYXQgeW91IGNyZWF0ZSB3aXRoIHByb3RvdHlwZSAoJikgYXBwYXJlbnRseSBkbyBub3QgYWxsb3cKICAgICAgICAgICAgIyB0cmFpbGluZyBvcGVyYXRvcnMsIG9ubHkgdGVybXMuICBUaGlzIHNlZW1zIHN0cmFuZ2UuCiAgICAgICAgICAgICMgSWYgdGhpcyBldmVyIGNoYW5nZXMsIGhlcmUgaXMgdGhlIHVwZGF0ZQogICAgICAgICAgICAjIHRvIG1ha2UgcGVybHRpZHkgYmVoYXZlIGFjY29yZGluZ2x5OgoKICAgICAgICAgICAgIyBlbHNpZiAoICRpc19ibG9ja19mdW5jdGlvbnskcGFja2FnZX17JHRva30gKSB7CiAgICAgICAgICAgICMgICAgJHRvaz0nZXZhbCc7ICMgcGF0Y2ggdG8gZG8gYnJhY2VzIGxpa2UgZXZhbCAgLSBkb2Vzbid0IHdvcmsKICAgICAgICAgICAgIyAgICAkdHlwZSA9ICdrJzsKICAgICAgICAgICAgI30KICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBjb3VsZCBiZWNvbWUgYSBzZXBhcmF0ZSB0eXBlIHRvIGFsbG93IGZvciBkaWZmZXJlbnQKICAgICAgICAgICAgIyBmdXR1cmUgYmVoYXZpb3I6CiAgICAgICAgICAgIGVsc2lmICggJGlzX2Jsb2NrX2Z1bmN0aW9ueyRwYWNrYWdlfXskc3ViX25hbWV9ICkgewogICAgICAgICAgICAgICAgJHR5cGUgPSAnRyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVsc2lmICggJGlzX2Jsb2NrX2xpc3RfZnVuY3Rpb257JHBhY2thZ2V9eyRzdWJfbmFtZX0gKSB7CiAgICAgICAgICAgICAgICAkdHlwZSA9ICdHJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRpc191c2VyX2Z1bmN0aW9ueyRwYWNrYWdlfXskc3ViX25hbWV9ICkgewogICAgICAgICAgICAgICAgJHR5cGUgICAgICA9ICdVJzsKICAgICAgICAgICAgICAgICRwcm90b3R5cGUgPSAkdXNlcl9mdW5jdGlvbl9wcm90b3R5cGV7JHBhY2thZ2V9eyRzdWJfbmFtZX07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgZm9yIGluZGlyZWN0IG9iamVjdAogICAgICAgICAgICBlbHNpZiAoCgogICAgICAgICAgICAgICAgIyBhZGRlZCAyMDAxLTAzLTI3OiBtdXN0IG5vdCBiZSBmb2xsb3dlZCBpbW1lZGlhdGVseSBieSAnKCcKICAgICAgICAgICAgICAgICMgc2VlIGZoYW5kbGUudAogICAgICAgICAgICAgICAgKCAkaW5wdXRfbGluZSAhfiBtL1xHXCgvZ2MgKQoKICAgICAgICAgICAgICAgICMgYW5kCiAgICAgICAgICAgICAgICAmJiAoCgogICAgICAgICAgICAgICAgICAgICMgcHJlY2VkZWQgYnkga2V5d29yZCBsaWtlICdwcmludCcsICdwcmludGYnIGFuZCBmcmllbmRzCiAgICAgICAgICAgICAgICAgICAgJGlzX2luZGlyZWN0X29iamVjdF90YWtlcnskbGFzdF9ub25ibGFua190b2tlbn0KCiAgICAgICAgICAgICAgICAgICAgIyBvciBwcmVjZWRlZCBieSBzb21ldGhpbmcgbGlrZSAncHJpbnQoJyBvciAncHJpbnRmKCcKICAgICAgICAgICAgICAgICAgICB8fCAoCiAgICAgICAgICAgICAgICAgICAgICAgICggJGxhc3Rfbm9uYmxhbmtfdG9rZW4gZXEgJygnICkKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGlzX2luZGlyZWN0X29iamVjdF90YWtlcnsgJHBhcmVuX3R5cGVbJHBhcmVuX2RlcHRoXQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAjIG1heSBub3QgYmUgaW5kaXJlY3Qgb2JqZWN0IHVubGVzcyBmb2xsb3dlZCBieSBhIHNwYWNlCiAgICAgICAgICAgICAgICBpZiAoICRpbnB1dF9saW5lID1+IG0vXEdccysvZ2MgKSB7CiAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAnWSc7CgogICAgICAgICAgICAgICAgICAgICMgQWJhbmRvbiBIb3BlIC4uLgogICAgICAgICAgICAgICAgICAgICMgUGVybCdzIGluZGlyZWN0IG9iamVjdCBub3RhdGlvbiBpcyBhIHZlcnkgYmFkCiAgICAgICAgICAgICAgICAgICAgIyB0aGluZyBhbmQgY2FuIGNhdXNlIHN1YnRsZSBidWdzLCBlc3BlY2lhbGx5IGZvcgogICAgICAgICAgICAgICAgICAgICMgYmVnaW5uaW5nIHByb2dyYW1tZXJzLiAgQW5kIEkgaGF2ZW4ndCBldmVuIGJlZW4KICAgICAgICAgICAgICAgICAgICAjIGFibGUgdG8gZmlndXJlIG91dCBhIHNhbmUgd2FybmluZyBzY2hlbWUgd2hpY2gKICAgICAgICAgICAgICAgICAgICAjIGRvZXNuJ3QgZ2V0IGluIHRoZSB3YXkgb2YgZ29vZCBzY3JpcHRzLgoKICAgICAgICAgICAgICAgICAgICAjIENvbXBsYWluIGlmIGEgZmlsZWhhbmRsZSBoYXMgYW55IGxvd2VyIGNhc2UKICAgICAgICAgICAgICAgICAgICAjIGxldHRlcnMuICBUaGlzIGlzIHN1Z2dlc3RlZCBnb29kIHByYWN0aWNlLgogICAgICAgICAgICAgICAgICAgICMgVXNlICdzdWJfbmFtZScgYmVjYXVzZSBzb21ldGhpbmcgbGlrZQogICAgICAgICAgICAgICAgICAgICMgbWFpbjo6TVlIQU5ETEUgaXMgb2sgZm9yIGZpbGVoYW5kbGUKICAgICAgICAgICAgICAgICAgICBpZiAoICRzdWJfbmFtZSA9fiAvW2Etel0vICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjb3VsZCBiZSBidWcgY2F1c2VkIGJ5IG9sZGVyIHBlcmx0aWR5IGlmCiAgICAgICAgICAgICAgICAgICAgICAgICMgZm9sbG93ZWQgYnkgJygnCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJGlucHV0X2xpbmUgPX4gbS9cR1xzKlwoL2djICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxhaW4oCiJDYXV0aW9uOiB1bmtub3duIHdvcmQgJyR0b2snIGluIGluZGlyZWN0IG9iamVjdCBzbG90XG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgYmFyZXdvcmQgbm90IGZvbGxvd2VkIGJ5IGEgc3BhY2UgLS0gbWF5IG5vdCBiZSBmaWxlaGFuZGxlCiAgICAgICAgICAgICAgICAjIChtYXkgYmUgZnVuY3Rpb24gY2FsbCBkZWZpbmVkIGluIGEgJ3VzZScgc3RhdGVtZW50KQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAnWic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgTm93IHdlIG11c3QgY29udmVydCBiYWNrIGZyb20gY2hhcmFjdGVyIHBvc2l0aW9uCiAgICAgICAgIyB0byBwcmVfdG9rZW4gaW5kZXguCiAgICAgICAgIyBJIGRvbid0IHRoaW5rIGFuIGVycm9yIGZsYWcgY2FuIG9jY3VyIGhlcmUgLi5idXQgd2hvIGtub3dzCiAgICAgICAgbXkgJGVycm9yOwogICAgICAgICggJGksICRlcnJvciApID0KICAgICAgICAgIGludmVyc2VfcHJldG9rZW5fbWFwKCAkaSwgJHBvcywgJHJ0b2tlbl9tYXAsICRtYXhfdG9rZW5faW5kZXggKTsKICAgICAgICBpZiAoJGVycm9yKSB7CiAgICAgICAgICAgIHdhcm5pbmcoInNjYW5fYmFyZV9pZGVudGlmaWVyOiBQb3NzaWJseSBpbnZhbGlkIHRva2VuaXphdGlvblxuIik7CiAgICAgICAgfQogICAgfQoKICAgICMgbm8gbWF0Y2ggYnV0IGxpbmUgbm90IGJsYW5rIC0gY291bGQgYmUgc3ludGF4IGVycm9yCiAgICAjIHBlcmwgd2lsbCB0YWtlICc6OicgYWxvbmUgd2l0aG91dCBjb21wbGFpbnQKICAgIGVsc2UgewogICAgICAgICR0eXBlID0gJ3cnOwoKICAgICAgICAjIGNoYW5nZSB0aGlzIHdhcm5pbmcgdG8gbG9nIG1lc3NhZ2UgaWYgaXQgYmVjb21lcyBhbm5veWluZwogICAgICAgIHdhcm5pbmcoImRpZG4ndCBmaW5kIGlkZW50aWZpZXIgYWZ0ZXIgbGVhZGluZyA6OlxuIik7CiAgICB9CiAgICByZXR1cm4gKCAkaSwgJHRvaywgJHR5cGUsICRwcm90b3R5cGUgKTsKfQoKc3ViIHNjYW5faWRfZG8gewoKIyBUaGlzIGlzIHRoZSBuZXcgc2Nhbm5lciBhbmQgd2lsbCBldmVudHVhbGx5IHJlcGxhY2Ugc2Nhbl9pZGVudGlmaWVyLgojIE9ubHkgdHlwZSAnc3ViJyBhbmQgJ3BhY2thZ2UnIGFyZSBpbXBsZW1lbnRlZC4KIyBUb2tlbiB0eXBlcyAkICogJSBAICYgLT4gYXJlIG5vdCB5ZXQgaW1wbGVtZW50ZWQuCiMKIyBTY2FuIGlkZW50aWZpZXIgZm9sbG93aW5nIGEgdHlwZSB0b2tlbi4KIyBUaGUgdHlwZSBvZiBjYWxsIGRlcGVuZHMgb24gJGlkX3NjYW5fc3RhdGU6ICRpZF9zY2FuX3N0YXRlID0gJycKIyBmb3Igc3RhcnRpbmcgY2FsbCwgaW4gd2hpY2ggY2FzZSAkdG9rIG11c3QgYmUgdGhlIHRva2VuIGRlZmluaW5nCiMgdGhlIHR5cGUuCiMKIyBJZiB0aGUgdHlwZSB0b2tlbiBpcyB0aGUgbGFzdCBub25ibGFuayB0b2tlbiBvbiB0aGUgbGluZSwgYSB2YWx1ZQojIG9mICRpZF9zY2FuX3N0YXRlID0gJHRvayBpcyByZXR1cm5lZCwgaW5kaWNhdGluZyB0aGF0IGZ1cnRoZXIKIyBjYWxscyBtdXN0IGJlIG1hZGUgdG8gZ2V0IHRoZSBpZGVudGlmaWVyLiAgSWYgdGhlIHR5cGUgdG9rZW4gaXMKIyBub3QgdGhlIGxhc3Qgbm9uYmxhbmsgdG9rZW4gb24gdGhlIGxpbmUsIHRoZSBpZGVudGlmaWVyIGlzCiMgc2Nhbm5lZCBhbmQgaGFuZGxlZCBhbmQgYSB2YWx1ZSBvZiAnJyBpcyByZXR1cm5lZC4KIyBVU0VTIEdMT0JBTCBWQVJJQUJMRVM6ICRjdXJyZW50X3BhY2thZ2UsICRsYXN0X25vbmJsYW5rX3Rva2VuLCAkaW5fYXR0cmlidXRlX2xpc3QsCiMgJHN0YXRlbWVudF90eXBlLCAkdG9rZW5pemVyX3NlbGYKCiAgICBteSAoICRpbnB1dF9saW5lLCAkaSwgJHRvaywgJHJ0b2tlbnMsICRydG9rZW5fbWFwLCAkaWRfc2Nhbl9zdGF0ZSwKICAgICAgICAkbWF4X3Rva2VuX2luZGV4ICkKICAgICAgPSBAXzsKICAgIG15ICR0eXBlID0gJyc7CiAgICBteSAoICRpX2JlZywgJHBvc19iZWcgKTsKCiAgICAjcHJpbnQgIk5TQ0FOOmVudGVyaW5nIGk9JGksIHRvaz0kdG9rLCB0eXBlPSR0eXBlLCBzdGF0ZT0kaWRfc2Nhbl9zdGF0ZVxuIjsKICAgICNteSAoJGEsJGIsJGMpID0gY2FsbGVyOwogICAgI3ByaW50ICJOU0NBTjogc2Nhbl9pZCBjYWxsZWQgd2l0aCB0b2s9JHRvayAkYSAkYiAkY1xuIjsKCiAgICAjIG9uIHJlLWVudHJ5LCBzdGFydCBzY2FubmluZyBhdCBmaXJzdCB0b2tlbiBvbiB0aGUgbGluZQogICAgaWYgKCRpZF9zY2FuX3N0YXRlKSB7CiAgICAgICAgJGlfYmVnID0gJGk7CiAgICAgICAgJHR5cGUgID0gJyc7CiAgICB9CgogICAgIyBvbiBpbml0aWFsIGVudHJ5LCBzdGFydCBzY2FubmluZyBqdXN0IGFmdGVyIHR5cGUgdG9rZW4KICAgIGVsc2UgewogICAgICAgICRpX2JlZyAgICAgICAgID0gJGkgKyAxOwogICAgICAgICRpZF9zY2FuX3N0YXRlID0gJHRvazsKICAgICAgICAkdHlwZSAgICAgICAgICA9ICd0JzsKICAgIH0KCiAgICAjIGZpbmQgJGlfYmVnID0gaW5kZXggb2YgbmV4dCBub25ibGFuayB0b2tlbiwKICAgICMgYW5kIGhhbmRsZSBlbXB0eSBsaW5lcwogICAgbXkgJGJsYW5rX2xpbmUgICAgICAgICAgPSAwOwogICAgbXkgJG5leHRfbm9uYmxhbmtfdG9rZW4gPSAkcnRva2Vucy0+WyRpX2JlZ107CiAgICBpZiAoICRpX2JlZyA+ICRtYXhfdG9rZW5faW5kZXggKSB7CiAgICAgICAgJGJsYW5rX2xpbmUgPSAxOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgb25seSBhICcjJyBpbW1lZGlhdGVseSBhZnRlciBhICckJyBpcyBub3QgYSBjb21tZW50CiAgICAgICAgaWYgKCAkbmV4dF9ub25ibGFua190b2tlbiBlcSAnIycgKSB7CiAgICAgICAgICAgIHVubGVzcyAoICR0b2sgZXEgJyQnICkgewogICAgICAgICAgICAgICAgJGJsYW5rX2xpbmUgPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICRuZXh0X25vbmJsYW5rX3Rva2VuID1+IC9eXHMvICkgewogICAgICAgICAgICAoICRuZXh0X25vbmJsYW5rX3Rva2VuLCAkaV9iZWcgKSA9CiAgICAgICAgICAgICAgZmluZF9uZXh0X25vbmJsYW5rX3Rva2VuX29uX3RoaXNfbGluZSggJGlfYmVnLCAkcnRva2VucywKICAgICAgICAgICAgICAgICRtYXhfdG9rZW5faW5kZXggKTsKICAgICAgICAgICAgaWYgKCAkbmV4dF9ub25ibGFua190b2tlbiA9fiAvKF4jfF5ccyokKS8gKSB7CiAgICAgICAgICAgICAgICAkYmxhbmtfbGluZSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBoYW5kbGUgbm9uLWJsYW5rIGxpbmU7IGlkZW50aWZpZXIsIGlmIGFueSwgbXVzdCBmb2xsb3cKICAgIHVubGVzcyAoJGJsYW5rX2xpbmUpIHsKCiAgICAgICAgaWYgKCAkaXNfc3VieyRpZF9zY2FuX3N0YXRlfSApIHsKICAgICAgICAgICAgKCAkaSwgJHRvaywgJHR5cGUsICRpZF9zY2FuX3N0YXRlICkgPSBkb19zY2FuX3N1YigKICAgICAgICAgICAgICAgICRpbnB1dF9saW5lLCAkaSwgICAgICAgICAgICAgJGlfYmVnLAogICAgICAgICAgICAgICAgJHRvaywgICAgICAgICR0eXBlLCAgICAgICAgICAkcnRva2VucywKICAgICAgICAgICAgICAgICRydG9rZW5fbWFwLCAkaWRfc2Nhbl9zdGF0ZSwgJG1heF90b2tlbl9pbmRleAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgZWxzaWYgKCAkaXNfcGFja2FnZXskaWRfc2Nhbl9zdGF0ZX0gKSB7CiAgICAgICAgICAgICggJGksICR0b2ssICR0eXBlICkgPQogICAgICAgICAgICAgIGRvX3NjYW5fcGFja2FnZSggJGlucHV0X2xpbmUsICRpLCAkaV9iZWcsICR0b2ssICR0eXBlLCAkcnRva2VucywKICAgICAgICAgICAgICAgICRydG9rZW5fbWFwLCAkbWF4X3Rva2VuX2luZGV4ICk7CiAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJyc7CiAgICAgICAgfQoKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgd2FybmluZygiaW52YWxpZCB0b2tlbiBpbiBzY2FuX2lkOiAkdG9rXG4iKTsKICAgICAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAnJzsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkaWRfc2Nhbl9zdGF0ZSAmJiAoICFkZWZpbmVkKCR0eXBlKSB8fCAhJHR5cGUgKSApIHsKCiAgICAgICAgIyBzaG91bGRuJ3QgaGFwcGVuOgogICAgICAgIHdhcm5pbmcoCiJQcm9ncmFtIGJ1ZyBpbiBzY2FuX2lkOiB1bmRlZmluZWQgdHlwZSBidXQgc2Nhbl9zdGF0ZT0kaWRfc2Nhbl9zdGF0ZVxuIgogICAgICAgICk7CiAgICAgICAgcmVwb3J0X2RlZmluaXRlX2J1ZygpOwogICAgfQoKICAgIFRPS0VOSVpFUl9ERUJVR19GTEFHX05TQ0FOICYmIGRvIHsKICAgICAgICBwcmludCBTVERPVVQKICAgICAgICAgICJOU0NBTjogcmV0dXJucyBpPSRpLCB0b2s9JHRvaywgdHlwZT0kdHlwZSwgc3RhdGU9JGlkX3NjYW5fc3RhdGVcbiI7CiAgICB9OwogICAgcmV0dXJuICggJGksICR0b2ssICR0eXBlLCAkaWRfc2Nhbl9zdGF0ZSApOwp9CgpzdWIgY2hlY2tfcHJvdG90eXBlIHsKICAgIG15ICggJHByb3RvLCAkcGFja2FnZSwgJHN1Ym5hbWUgKSA9IEBfOwogICAgcmV0dXJuIHVubGVzcyAoIGRlZmluZWQoJHBhY2thZ2UpICYmIGRlZmluZWQoJHN1Ym5hbWUpICk7CiAgICBpZiAoIGRlZmluZWQoJHByb3RvKSApIHsKICAgICAgICAkcHJvdG8gPX4gcy9eXHMqXChccyovLzsKICAgICAgICAkcHJvdG8gPX4gcy9ccypcKSQvLzsKICAgICAgICBpZiAoJHByb3RvKSB7CiAgICAgICAgICAgICRpc191c2VyX2Z1bmN0aW9ueyRwYWNrYWdlfXskc3VibmFtZX0gICAgICAgID0gMTsKICAgICAgICAgICAgJHVzZXJfZnVuY3Rpb25fcHJvdG90eXBleyRwYWNrYWdlfXskc3VibmFtZX0gPSAiKCRwcm90bykiOwoKICAgICAgICAgICAgIyBwcm90b3R5cGVzIGNvbnRhaW5pbmcgJyYnIG11c3QgYmUgdHJlYXRlZCBzcGVjaWFsbHkuLgogICAgICAgICAgICBpZiAoICRwcm90byA9fiAvXCYvICkgewoKICAgICAgICAgICAgICAgICMgcmlnaHQgY3VybHkgYnJhY2VzIG9mIHByb3RvdHlwZXMgZW5kaW5nIGluCiAgICAgICAgICAgICAgICAjICcmJyBtYXkgYmUgZm9sbG93ZWQgYnkgYW4gb3BlcmF0b3IKICAgICAgICAgICAgICAgIGlmICggJHByb3RvID1+IC9cJiQvICkgewogICAgICAgICAgICAgICAgICAgICRpc19ibG9ja19mdW5jdGlvbnskcGFja2FnZX17JHN1Ym5hbWV9ID0gMTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHJpZ2h0IGN1cmx5IGJyYWNlcyBvZiBwcm90b3R5cGVzIE5PVCBlbmRpbmcgaW4KICAgICAgICAgICAgICAgICMgJyYnIG1heSBOT1QgYmUgZm9sbG93ZWQgYnkgYW4gb3BlcmF0b3IKICAgICAgICAgICAgICAgIGVsc2lmICggJHByb3RvICF+IC9cJiQvICkgewogICAgICAgICAgICAgICAgICAgICRpc19ibG9ja19saXN0X2Z1bmN0aW9ueyRwYWNrYWdlfXskc3VibmFtZX0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkaXNfY29uc3RhbnR7JHBhY2thZ2V9eyRzdWJuYW1lfSA9IDE7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJGlzX3VzZXJfZnVuY3Rpb257JHBhY2thZ2V9eyRzdWJuYW1lfSA9IDE7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBkb19zY2FuX3BhY2thZ2UgewoKICAgICMgZG9fc2Nhbl9wYWNrYWdlIHBhcnNlcyBhIHBhY2thZ2UgbmFtZQogICAgIyBpdCBpcyBjYWxsZWQgd2l0aCAkaV9iZWcgZXF1YWwgdG8gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBub25ibGFuawogICAgIyB0b2tlbiBmb2xsb3dpbmcgYSAncGFja2FnZScgdG9rZW4uCiAgICAjIFVTRVMgR0xPQkFMIFZBUklBQkxFUzogJGN1cnJlbnRfcGFja2FnZSwKCiAgICAjIHBhY2thZ2UgTkFNRVNQQUNFCiAgICAjIHBhY2thZ2UgTkFNRVNQQUNFIFZFUlNJT04KICAgICMgcGFja2FnZSBOQU1FU1BBQ0UgQkxPQ0sKICAgICMgcGFja2FnZSBOQU1FU1BBQ0UgVkVSU0lPTiBCTE9DSwogICAgIwogICAgIyBJZiBWRVJTSU9OIGlzIHByb3ZpZGVkLCBwYWNrYWdlIHNldHMgdGhlICRWRVJTSU9OIHZhcmlhYmxlIGluIHRoZSBnaXZlbgogICAgIyBuYW1lc3BhY2UgdG8gYSB2ZXJzaW9uIG9iamVjdCB3aXRoIHRoZSBWRVJTSU9OIHByb3ZpZGVkLiBWRVJTSU9OIG11c3QgYmUKICAgICMgYSAic3RyaWN0IiBzdHlsZSB2ZXJzaW9uIG51bWJlciBhcyBkZWZpbmVkIGJ5IHRoZSB2ZXJzaW9uIG1vZHVsZTogYQogICAgIyBwb3NpdGl2ZSBkZWNpbWFsIG51bWJlciAoaW50ZWdlciBvciBkZWNpbWFsLWZyYWN0aW9uKSB3aXRob3V0CiAgICAjIGV4cG9uZW50aWF0aW9uIG9yIGVsc2UgYSBkb3R0ZWQtZGVjaW1hbCB2LXN0cmluZyB3aXRoIGEgbGVhZGluZyAndicKICAgICMgY2hhcmFjdGVyIGFuZCBhdCBsZWFzdCB0aHJlZSBjb21wb25lbnRzLgogICAgIyByZWZlcmVuY2UgaHR0cDovL3Blcmxkb2MucGVybC5vcmcvZnVuY3Rpb25zL3BhY2thZ2UuaHRtbAoKICAgIG15ICggJGlucHV0X2xpbmUsICRpLCAkaV9iZWcsICR0b2ssICR0eXBlLCAkcnRva2VucywgJHJ0b2tlbl9tYXAsCiAgICAgICAgJG1heF90b2tlbl9pbmRleCApCiAgICAgID0gQF87CiAgICBteSAkcGFja2FnZSA9IHVuZGVmOwogICAgbXkgJHBvc19iZWcgPSAkcnRva2VuX21hcC0+WyRpX2JlZ107CiAgICBwb3MoJGlucHV0X2xpbmUpID0gJHBvc19iZWc7CgogICAgIyBoYW5kbGUgbm9uLWJsYW5rIGxpbmU7IHBhY2thZ2UgbmFtZSwgaWYgYW55LCBtdXN0IGZvbGxvdwogICAgaWYgKCAkaW5wdXRfbGluZSA9fiBtL1xHXHMqKCg/Olx3Kig/Oid8OjopKSpcdyspL2djICkgewogICAgICAgICRwYWNrYWdlID0gJDE7CiAgICAgICAgJHBhY2thZ2UgPSAoIGRlZmluZWQoJDEpICYmICQxICkgPyAkMSA6ICdtYWluJzsKICAgICAgICAkcGFja2FnZSA9fiBzL1wnLzo6L2c7CiAgICAgICAgaWYgKCAkcGFja2FnZSA9fiAvXlw6LyApIHsgJHBhY2thZ2UgPSAnbWFpbicgLiAkcGFja2FnZSB9CiAgICAgICAgJHBhY2thZ2UgPX4gcy86OiQvLzsKICAgICAgICBteSAkcG9zICA9IHBvcygkaW5wdXRfbGluZSk7CiAgICAgICAgbXkgJG51bWMgPSAkcG9zIC0gJHBvc19iZWc7CiAgICAgICAgJHRvayAgPSAncGFja2FnZSAnIC4gc3Vic3RyKCAkaW5wdXRfbGluZSwgJHBvc19iZWcsICRudW1jICk7CiAgICAgICAgJHR5cGUgPSAnaSc7CgogICAgICAgICMgTm93IHdlIG11c3QgY29udmVydCBiYWNrIGZyb20gY2hhcmFjdGVyIHBvc2l0aW9uCiAgICAgICAgIyB0byBwcmVfdG9rZW4gaW5kZXguCiAgICAgICAgIyBJIGRvbid0IHRoaW5rIGFuIGVycm9yIGZsYWcgY2FuIG9jY3VyIGhlcmUgLi5idXQgPwogICAgICAgIG15ICRlcnJvcjsKICAgICAgICAoICRpLCAkZXJyb3IgKSA9CiAgICAgICAgICBpbnZlcnNlX3ByZXRva2VuX21hcCggJGksICRwb3MsICRydG9rZW5fbWFwLCAkbWF4X3Rva2VuX2luZGV4ICk7CiAgICAgICAgaWYgKCRlcnJvcikgeyB3YXJuaW5nKCJQb3NzaWJseSBpbnZhbGlkIHBhY2thZ2VcbiIpIH0KICAgICAgICAkY3VycmVudF9wYWNrYWdlID0gJHBhY2thZ2U7CgogICAgICAgICMgd2Ugc2hvdWxkIG5vdyBoYXZlIHBhY2thZ2UgTkFNRVNQQUNFCiAgICAgICAgIyBub3cgZXhwZWN0aW5nIFZFUlNJT04sIEJMT0NLLCBvciA7IHRvIGZvbGxvdyAuLi4KICAgICAgICAjIHBhY2thZ2UgTkFNRVNQQUNFIFZFUlNJT04KICAgICAgICAjIHBhY2thZ2UgTkFNRVNQQUNFIEJMT0NLCiAgICAgICAgIyBwYWNrYWdlIE5BTUVTUEFDRSBWRVJTSU9OIEJMT0NLCiAgICAgICAgbXkgKCAkbmV4dF9ub25ibGFua190b2tlbiwgJGlfbmV4dCApID0KICAgICAgICAgIGZpbmRfbmV4dF9ub25ibGFua190b2tlbiggJGksICRydG9rZW5zLCAkbWF4X3Rva2VuX2luZGV4ICk7CgogICAgICAgICMgY2hlY2sgdGhhdCBzb21ldGhpbmcgcmVjb2duaXphYmxlIGZvbGxvd3MsIGJ1dCBkbyBub3QgcGFyc2UuCiAgICAgICAgIyBBIFZFUlNJT04gbnVtYmVyIHdpbGwgYmUgcGFyc2VkIGxhdGVyIGFzIGEgbnVtYmVyIG9yIHYtc3RyaW5nIGluIHRoZQogICAgICAgICMgbm9ybWFsIHdheS4gIFdoYXQgaXMgaW1wb3J0YW50IGlzIHRvIHNldCB0aGUgc3RhdGVtZW50IHR5cGUgaWYKICAgICAgICAjIGV2ZXJ5dGhpbmcgbG9va3Mgb2theSBzbyB0aGF0IHRoZSBvcGVyYXRvcl9leHBlY3RlZCgpIHJvdXRpbmUKICAgICAgICAjIGtub3dzIHRoYXQgdGhlIG51bWJlciBpcyBpbiBhIHBhY2thZ2Ugc3RhdGVtZW50LgogICAgICAgICMgRXhhbXBsZXMgb2YgdmFsaWQgcHJpbWl0aXZlIHRva2VucyB0aGF0IG1pZ2h0IGZvbGxvdyBhcmU6CiAgICAgICAgIyAgMTIzNSAgLiA7IHsgfSB2MyAgdgogICAgICAgIGlmICggJG5leHRfbm9uYmxhbmtfdG9rZW4gPX4gL14oW3ZcLlxkO1x7XH1dKXx2XGR8XGQrJC8gKSB7CiAgICAgICAgICAgICRzdGF0ZW1lbnRfdHlwZSA9ICR0b2s7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICB3YXJuaW5nKAogICAgICAgICAgICAgICAgIlVuZXhwZWN0ZWQgJyRuZXh0X25vbmJsYW5rX3Rva2VuJyBhZnRlciBwYWNrYWdlIG5hbWUgJyR0b2snXG4iCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgbm8gbWF0Y2ggYnV0IGxpbmUgbm90IGJsYW5rIC0tCiAgICAjIGNvdWxkIGJlIGEgbGFiZWwgd2l0aCBuYW1lIHBhY2thZ2UsIGxpa2UgcGFja2FnZTogICwgZm9yIGV4YW1wbGUuCiAgICBlbHNlIHsKICAgICAgICAkdHlwZSA9ICdrJzsKICAgIH0KCiAgICByZXR1cm4gKCAkaSwgJHRvaywgJHR5cGUgKTsKfQoKc3ViIHNjYW5faWRlbnRpZmllcl9kbyB7CgogICAgIyBUaGlzIHJvdXRpbmUgYXNzZW1ibGVzIHRva2VucyBpbnRvIGlkZW50aWZpZXJzLiAgSXQgbWFpbnRhaW5zIGEKICAgICMgc2NhbiBzdGF0ZSwgaWRfc2Nhbl9zdGF0ZS4gIEl0IHVwZGF0ZXMgaWRfc2Nhbl9zdGF0ZSBiYXNlZCB1cG9uCiAgICAjIGN1cnJlbnQgaWRfc2Nhbl9zdGF0ZSBhbmQgdG9rZW4sIGFuZCByZXR1cm5zIGFuIHVwZGF0ZWQKICAgICMgaWRfc2Nhbl9zdGF0ZSBhbmQgdGhlIG5leHQgaW5kZXggYWZ0ZXIgdGhlIGlkZW50aWZpZXIuCiAgICAjIFVTRVMgR0xPQkFMIFZBUklBQkxFUzogJGNvbnRleHQsICRsYXN0X25vbmJsYW5rX3Rva2VuLAogICAgIyAkbGFzdF9ub25ibGFua190eXBlCgogICAgbXkgKCAkaSwgJGlkX3NjYW5fc3RhdGUsICRpZGVudGlmaWVyLCAkcnRva2VucywgJG1heF90b2tlbl9pbmRleCwKICAgICAgICAkZXhwZWN0aW5nLCAkY29udGFpbmVyX3R5cGUgKQogICAgICA9IEBfOwogICAgbXkgJGlfYmVnaW4gICA9ICRpOwogICAgbXkgJHR5cGUgICAgICA9ICcnOwogICAgbXkgJHRva19iZWdpbiA9ICRydG9rZW5zLT5bJGlfYmVnaW5dOwogICAgaWYgKCAkdG9rX2JlZ2luIGVxICc6JyApIHsgJHRva19iZWdpbiA9ICc6OicgfQogICAgbXkgJGlkX3NjYW5fc3RhdGVfYmVnaW4gPSAkaWRfc2Nhbl9zdGF0ZTsKICAgIG15ICRpZGVudGlmaWVyX2JlZ2luICAgID0gJGlkZW50aWZpZXI7CiAgICBteSAkdG9rICAgICAgICAgICAgICAgICA9ICR0b2tfYmVnaW47CiAgICBteSAkbWVzc2FnZSAgICAgICAgICAgICA9ICIiOwoKICAgIG15ICRpbl9wcm90b3R5cGVfb3Jfc2lnbmF0dXJlID0gJGNvbnRhaW5lcl90eXBlID1+IC9ec3ViLzsKCiAgICAjIHRoZXNlIGZsYWdzIHdpbGwgYmUgdXNlZCB0byBoZWxwIGZpZ3VyZSBvdXQgdGhlIHR5cGU6CiAgICBteSAkc2F3X2FscGhhID0gKCAkdG9rID1+IC9eW0EtWmEtel9dLyApOwogICAgbXkgJHNhd190eXBlOwoKICAgICMgYWxsb3cgb2xkIHBhY2thZ2Ugc2VwYXJhdG9yICgnKSBleGNlcHQgaW4gJ3VzZScgc3RhdGVtZW50CiAgICBteSAkYWxsb3dfdGljayA9ICggJGxhc3Rfbm9uYmxhbmtfdG9rZW4gbmUgJ3VzZScgKTsKCiAgICAjIGdldCBzdGFydGVkIGJ5IGRlZmluaW5nIGEgdHlwZSBhbmQgYSBzdGF0ZSBpZiBuZWNlc3NhcnkKICAgIHVubGVzcyAoJGlkX3NjYW5fc3RhdGUpIHsKICAgICAgICAkY29udGV4dCA9IFVOS05PV05fQ09OVEVYVDsKCiAgICAgICAgIyBmaXh1cCBmb3IgZGlncmFwaAogICAgICAgIGlmICggJHRvayBlcSAnPicgKSB7CiAgICAgICAgICAgICR0b2sgICAgICAgPSAnLT4nOwogICAgICAgICAgICAkdG9rX2JlZ2luID0gJHRvazsKICAgICAgICB9CiAgICAgICAgJGlkZW50aWZpZXIgPSAkdG9rOwoKICAgICAgICBpZiAoICR0b2sgZXEgJyQnIHx8ICR0b2sgZXEgJyonICkgewogICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICckJzsKICAgICAgICAgICAgJGNvbnRleHQgICAgICAgPSBTQ0FMQVJfQ09OVEVYVDsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkdG9rIGVxICclJyB8fCAkdG9rIGVxICdAJyApIHsKICAgICAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAnJCc7CiAgICAgICAgICAgICRjb250ZXh0ICAgICAgID0gTElTVF9DT05URVhUOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICR0b2sgZXEgJyYnICkgewogICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICcmJzsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkdG9rIGVxICdzdWInIG9yICR0b2sgZXEgJ3BhY2thZ2UnICkgewogICAgICAgICAgICAkc2F3X2FscGhhICAgICA9IDA7ICAgICAjICdzdWInIGlzIGNvbnNpZGVyZWQgdHlwZSBpbmZvIGhlcmUKICAgICAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAnJCc7CiAgICAgICAgICAgICRpZGVudGlmaWVyIC49ICcgJzsgICAgICMgbmVlZCBhIHNwYWNlIHRvIHNlcGFyYXRlIHN1YiBmcm9tIHN1YiBuYW1lCiAgICAgICAgfQogICAgICAgIGVsc2lmICggJHRvayBlcSAnOjonICkgewogICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICdBJzsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkdG9rID1+IC9eW0EtWmEtel9dLyApIHsKICAgICAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAnOic7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJHRvayBlcSAnLT4nICkgewogICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICckJzsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIHNob3VsZG4ndCBoYXBwZW4KICAgICAgICAgICAgbXkgKCAkYSwgJGIsICRjICkgPSBjYWxsZXI7CiAgICAgICAgICAgIHdhcm5pbmcoIlByb2dyYW0gQnVnOiBzY2FuX2lkZW50aWZpZXIgZ2l2ZW4gYmFkIHRva2VuID0gJHRvayBcbiIpOwogICAgICAgICAgICB3YXJuaW5nKCIgICBjYWxsZWQgZnJvbSBzdWIgJGEgIGxpbmU6ICRjXG4iKTsKICAgICAgICAgICAgcmVwb3J0X2RlZmluaXRlX2J1ZygpOwogICAgICAgIH0KICAgICAgICAkc2F3X3R5cGUgPSAhJHNhd19hbHBoYTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRpLS07CiAgICAgICAgJHNhd190eXBlID0gKCAkdG9rID1+IC8oW1wkXCVcQFwqXCZdKS8gKTsKICAgIH0KCiAgICAjIG5vdyBsb29wIHRvIGdhdGhlciB0aGUgaWRlbnRpZmllcgogICAgbXkgJGlfc2F2ZSA9ICRpOwoKICAgIHdoaWxlICggJGkgPCAkbWF4X3Rva2VuX2luZGV4ICkgewogICAgICAgICRpX3NhdmUgPSAkaSB1bmxlc3MgKCAkdG9rID1+IC9eXHMqJC8gKTsKICAgICAgICAkdG9rICAgID0gJHJ0b2tlbnMtPlsgKyskaSBdOwoKICAgICAgICBpZiAoICggJHRvayBlcSAnOicgKSAmJiAoICRydG9rZW5zLT5bICRpICsgMSBdIGVxICc6JyApICkgewogICAgICAgICAgICAkdG9rID0gJzo6JzsKICAgICAgICAgICAgJGkrKzsKICAgICAgICB9CgogICAgICAgIGlmICggJGlkX3NjYW5fc3RhdGUgZXEgJyQnICkgeyAgICAjIHN0YXJ0aW5nIHZhcmlhYmxlIG5hbWUKCiAgICAgICAgICAgIGlmICggJHRvayBlcSAnJCcgKSB7CgogICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKCiAgICAgICAgICAgICAgICAjIHdlJ3ZlIGdvdCBhIHB1bmN0dWF0aW9uIHZhcmlhYmxlIGlmIGVuZCBvZiBsaW5lIChwdW5jdC50KQogICAgICAgICAgICAgICAgaWYgKCAkaSA9PSAkbWF4X3Rva2VuX2luZGV4ICkgewogICAgICAgICAgICAgICAgICAgICR0eXBlICAgICAgICAgID0gJ2knOwogICAgICAgICAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJyc7CiAgICAgICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBQT1NUREVGUkVGIC0+QCAtPiUgLT4mIC0+KgogICAgICAgICAgICBlbHNpZiAoICggJHRvayA9fiAvXltcQFwlXCZcKl0kLyApICYmICRpZGVudGlmaWVyID1+IC9cLVw+JC8gKSB7CiAgICAgICAgICAgICAgICAkaWRlbnRpZmllciAuPSAkdG9rOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJHRvayA9fiAvXltBLVphLXpfXS8gKSB7ICAgICMgYWxwaGFudW1lcmljIC4uCiAgICAgICAgICAgICAgICAkc2F3X2FscGhhICAgICA9IDE7CiAgICAgICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICc6JzsgICAgICAgICAgICMgbm93IG5lZWQgOjoKICAgICAgICAgICAgICAgICRpZGVudGlmaWVyIC49ICR0b2s7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkdG9rIGVxICInIiAmJiAkYWxsb3dfdGljayApIHsgICAgIyBhbHBoYW51bWVyaWMgLi4KICAgICAgICAgICAgICAgICRzYXdfYWxwaGEgICAgID0gMTsKICAgICAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJzonOyAgICAgICAgICAgICAgICAgIyBub3cgbmVlZCA6OgogICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKCiAgICAgICAgICAgICAgICAjIFBlcmwgd2lsbCBhY2NlcHQgbGVhZGluZyBkaWdpdHMgaW4gaWRlbnRpZmllcnMsCiAgICAgICAgICAgICAgICAjIGFsdGhvdWdoIHRoZXkgbWF5IG5vdCBhbHdheXMgcHJvZHVjZSB1c2VmdWwgcmVzdWx0cy4KICAgICAgICAgICAgICAgICMgU29tZXRoaW5nIGxpa2UgJG1haW46OjAgaXMgb2suICBCdXQgdGhpcyBhbHNvIHdvcmtzOgogICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgIyAgc3ViIGhvd2R5OjoxMjM6OmJ1YmJheyBwcmludCAiYnViYmEgJDU0MzIxIVxuIiB9CiAgICAgICAgICAgICAgICAjICBob3dkeTo6MTIzOjpidWJiYSgpOwogICAgICAgICAgICAgICAgIwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJHRvayA9fiAvXlswLTldLyApIHsgICAgIyBudW1lcmljCiAgICAgICAgICAgICAgICAkc2F3X2FscGhhICAgICA9IDE7CiAgICAgICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICc6JzsgICAgICAgIyBub3cgbmVlZCA6OgogICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICR0b2sgZXEgJzo6JyApIHsKICAgICAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJ0EnOwogICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyAkIyBhbmQgUE9TVERFRlJFRiAtPiQjCiAgICAgICAgICAgIGVsc2lmICggKCAkdG9rIGVxICcjJyApICYmICggJGlkZW50aWZpZXIgPX4gL1wkJC8gKSApIHsgICAgIyAkI2FycmF5CiAgICAgICAgICAgICAgICAkaWRlbnRpZmllciAuPSAkdG9rOyAgICAjIGtlZXAgc2FtZSBzdGF0ZSwgYSAkIGNvdWxkIGZvbGxvdwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJHRvayBlcSAneycgKSB7CgogICAgICAgICAgICAgICAgIyBjaGVjayBmb3Igc29tZXRoaW5nIGxpa2UgJHsjfSBvciAke6l9CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAkaWRlbnRpZmllciBlcSAnJCcKICAgICAgICAgICAgICAgICAgICAgICAgfHwgJGlkZW50aWZpZXIgZXEgJ0AnCiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRpZGVudGlmaWVyIGVxICckIycKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgJiYgJGkgKyAyIDw9ICRtYXhfdG9rZW5faW5kZXgKICAgICAgICAgICAgICAgICAgICAmJiAkcnRva2Vucy0+WyAkaSArIDIgXSBlcSAnfScKICAgICAgICAgICAgICAgICAgICAmJiAkcnRva2Vucy0+WyAkaSArIDEgXSAhfiAvW1xzXHddLwogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbXkgJG5leHQyID0gJHJ0b2tlbnMtPlsgJGkgKyAyIF07CiAgICAgICAgICAgICAgICAgICAgbXkgJG5leHQxID0gJHJ0b2tlbnMtPlsgJGkgKyAxIF07CiAgICAgICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvayAuICRuZXh0MSAuICRuZXh0MjsKICAgICAgICAgICAgICAgICAgICAkaSArPSAyOwogICAgICAgICAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJyc7CiAgICAgICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHNraXAgc29tZXRoaW5nIGxpa2UgJHt4eHh9IG9yIC0+ewogICAgICAgICAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAnJzsKCiAgICAgICAgICAgICAgICAjIGlmIHRoaXMgaXMgdGhlIGZpcnN0IHRva2VuIG9mIGEgbGluZSwgYW55IHRva2VucyBmb3IgdGhpcwogICAgICAgICAgICAgICAgIyBpZGVudGlmaWVyIGhhdmUgYWxyZWFkeSBiZWVuIGFjY3VtdWxhdGVkCiAgICAgICAgICAgICAgICBpZiAoICRpZGVudGlmaWVyIGVxICckJyB8fCAkaSA9PSAwICkgeyAkaWRlbnRpZmllciA9ICcnOyB9CiAgICAgICAgICAgICAgICAkaSA9ICRpX3NhdmU7CiAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNwYWNlIG9rIGFmdGVyIGxlYWRpbmcgJCAlICogJiBACiAgICAgICAgICAgIGVsc2lmICggJHRvayA9fiAvXlxzKiQvICkgewoKICAgICAgICAgICAgICAgIGlmICggJGlkZW50aWZpZXIgPX4gL15bXCRcJVwqXCZcQF0vICkgewoKICAgICAgICAgICAgICAgICAgICBpZiAoIGxlbmd0aCgkaWRlbnRpZmllcikgPiAxICkgewogICAgICAgICAgICAgICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICcnOwogICAgICAgICAgICAgICAgICAgICAgICAkaSAgICAgICAgICAgICA9ICRpX3NhdmU7CiAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlICAgICAgICAgID0gJ2knOyAgICAjIHByb2JhYmx5IHB1bmN0dWF0aW9uIHZhcmlhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBzcGFjZXMgYWZ0ZXIgJCdzIGFyZSBjb21tb24sIGFuZCBzcGFjZSBhZnRlciBACiAgICAgICAgICAgICAgICAgICAgICAgICMgaXMgaGFybWxlc3MsIHNvIG9ubHkgY29tcGxhaW4gYWJvdXQgc3BhY2UKICAgICAgICAgICAgICAgICAgICAgICAgIyBhZnRlciBvdGhlciB0eXBlIGNoYXJhY3RlcnMuIFNwYWNlIGFmdGVyICQgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICMgQCB3aWxsIGJlIHJlbW92ZWQgaW4gZm9ybWF0dGluZy4gIFJlcG9ydCBzcGFjZQogICAgICAgICAgICAgICAgICAgICAgICAjIGFmdGVyICUgYW5kICogYmVjYXVzZSB0aGV5IG1pZ2h0IGluZGljYXRlIGEKICAgICAgICAgICAgICAgICAgICAgICAgIyBwYXJzaW5nIGVycm9yLiAgSW4gb3RoZXIgd29yZHMgJyUgJyBtaWdodCBiZSBhCiAgICAgICAgICAgICAgICAgICAgICAgICMgbW9kdWxvIG9wZXJhdG9yLiAgRGVsZXRlIHRoaXMgd2FybmluZyBpZiBpdAogICAgICAgICAgICAgICAgICAgICAgICAjIGdldHMgYW5ub3lpbmcuCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJGlkZW50aWZpZXIgIX4gL15bXEBcJF0kLyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRtZXNzYWdlID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNwYWNlIGluIGlkZW50aWZpZXIsIGZvbGxvd2luZyAkaWRlbnRpZmllclxuIjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGVsc2U6CiAgICAgICAgICAgICAgICAjIHNwYWNlIGFmdGVyICctPicgaXMgb2sKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICR0b2sgZXEgJ14nICkgewoKICAgICAgICAgICAgICAgICMgY2hlY2sgZm9yIHNvbWUgc3BlY2lhbCB2YXJpYWJsZXMgbGlrZSAkXlcKICAgICAgICAgICAgICAgIGlmICggJGlkZW50aWZpZXIgPX4gL15bXCRcKlxAXCVdJC8gKSB7CiAgICAgICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKICAgICAgICAgICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICdBJzsKCiAgICAgICAgICAgICAgICAgICAgIyBQZXJsIGFjY2VwdHMgJyReXScgb3IgJ0BeXScsIGJ1dAogICAgICAgICAgICAgICAgICAgICMgdGhlcmUgbXVzdCBub3QgYmUgYSBzcGFjZSBiZWZvcmUgdGhlICddJy4KICAgICAgICAgICAgICAgICAgICBteSAkbmV4dDEgPSAkcnRva2Vucy0+WyAkaSArIDEgXTsKICAgICAgICAgICAgICAgICAgICBpZiAoICRuZXh0MSBlcSAnXScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRpKys7CiAgICAgICAgICAgICAgICAgICAgICAgICRpZGVudGlmaWVyIC49ICRuZXh0MTsKICAgICAgICAgICAgICAgICAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICcnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgeyAgICAjIHNvbWV0aGluZyBlbHNlCgogICAgICAgICAgICAgICAgaWYgKCAkaW5fcHJvdG90eXBlX29yX3NpZ25hdHVyZSAmJiAkdG9rID1+IC9eW1wpLD1dLyApIHsKICAgICAgICAgICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICcnOwogICAgICAgICAgICAgICAgICAgICRpICAgICAgICAgICAgID0gJGlfc2F2ZTsKICAgICAgICAgICAgICAgICAgICAkdHlwZSAgICAgICAgICA9ICdpJzsgICAgICAgIyBwcm9iYWJseSBwdW5jdHVhdGlvbiB2YXJpYWJsZQogICAgICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBjaGVjayBmb3IgdmFyaW91cyBwdW5jdHVhdGlvbiB2YXJpYWJsZXMKICAgICAgICAgICAgICAgIGlmICggJGlkZW50aWZpZXIgPX4gL15bXCRcKlxAXCVdJC8gKSB7CiAgICAgICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIFBPU1RERUZSRUY6IFBvc3RmaXggcmVmZXJlbmNlIC0+JCogLT4lKiAgLT5AKiAtPioqIC0+JiogLT4kIyoKICAgICAgICAgICAgICAgIGVsc2lmICggJHRvayBlcSAnKicgJiYgJGlkZW50aWZpZXIgPX4gLyhbXEBcJVwkXCpcJl18XCRcIykkLyApIHsKICAgICAgICAgICAgICAgICAgICAkaWRlbnRpZmllciAuPSAkdG9rOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVsc2lmICggJGlkZW50aWZpZXIgZXEgJyQjJyApIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkdG9rIGVxICd7JyApIHsgJHR5cGUgPSAnaSc7ICRpID0gJGlfc2F2ZSB9CgogICAgICAgICAgICAgICAgICAgICMgcGVybCBzZWVtcyB0byBhbGxvdyBqdXN0IHRoZXNlOiAkIzogJCMtICQjKwogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJHRvayA9fiAvXltcOlwtXCtdJC8gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ2knOwogICAgICAgICAgICAgICAgICAgICAgICAkaWRlbnRpZmllciAuPSAkdG9rOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGkgPSAkaV9zYXZlOwogICAgICAgICAgICAgICAgICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCAnVXNlIG9mICQjIGlzIGRlcHJlY2F0ZWQnIC4gIlxuIiApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJGlkZW50aWZpZXIgZXEgJyQkJyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBwZXJsIGRvZXMgbm90IGFsbG93IHJlZmVyZW5jZXMgdG8gcHVuY3R1YXRpb24KICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlcyB3aXRob3V0IGJyYWNlcy4gIEZvciBleGFtcGxlLCB0aGlzCiAgICAgICAgICAgICAgICAgICAgIyB3b24ndCB3b3JrOgogICAgICAgICAgICAgICAgICAgICMgICQ6PVw0OwogICAgICAgICAgICAgICAgICAgICMgICRhID0gJCQ6OwogICAgICAgICAgICAgICAgICAgICMgWW91IHdvdWxkIGhhdmUgdG8gdXNlCiAgICAgICAgICAgICAgICAgICAgIyAgJGEgPSAkeyQ6fTsKCiAgICAgICAgICAgICAgICAgICAgJGkgPSAkaV9zYXZlOwogICAgICAgICAgICAgICAgICAgIGlmICAgKCAkdG9rIGVxICd7JyApIHsgJHR5cGUgPSAndCcgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgIHsgJHR5cGUgPSAnaScgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkaWRlbnRpZmllciBlcSAnLT4nICkgewogICAgICAgICAgICAgICAgICAgICRpID0gJGlfc2F2ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRpID0gJGlfc2F2ZTsKICAgICAgICAgICAgICAgICAgICBpZiAoIGxlbmd0aCgkaWRlbnRpZmllcikgPT0gMSApIHsgJGlkZW50aWZpZXIgPSAnJzsgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAnJzsKICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkaWRfc2Nhbl9zdGF0ZSBlcSAnJicgKSB7ICAgICMgc3RhcnRpbmcgc3ViIGNhbGw/CgogICAgICAgICAgICBpZiAoICR0b2sgPX4gL15bXCRBLVphLXpfXS8gKSB7ICAgICMgYWxwaGFudW1lcmljIC4uCiAgICAgICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICc6JzsgICAgICAgICAgIyBub3cgbmVlZCA6OgogICAgICAgICAgICAgICAgJHNhd19hbHBoYSAgICAgPSAxOwogICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICR0b2sgZXEgIiciICYmICRhbGxvd190aWNrICkgeyAgICAjIGFscGhhbnVtZXJpYyAuLgogICAgICAgICAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAnOic7ICAgICAgICAgICAgICAgICAjIG5vdyBuZWVkIDo6CiAgICAgICAgICAgICAgICAkc2F3X2FscGhhICAgICA9IDE7CiAgICAgICAgICAgICAgICAkaWRlbnRpZmllciAuPSAkdG9rOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJHRvayA9fiAvXlswLTldLyApIHsgICAgIyBudW1lcmljLi5zZWUgY29tbWVudHMgYWJvdmUKICAgICAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJzonOyAgICAgICAjIG5vdyBuZWVkIDo6CiAgICAgICAgICAgICAgICAkc2F3X2FscGhhICAgICA9IDE7CiAgICAgICAgICAgICAgICAkaWRlbnRpZmllciAuPSAkdG9rOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJHRvayA9fiAvXlxzKiQvICkgeyAgICAgIyBhbGxvdyBzcGFjZQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJHRvayBlcSAnOjonICkgeyAgICAgICAgIyBsZWFkaW5nIDo6CiAgICAgICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICdBJzsgICAgICAgIyBhY2NlcHQgYWxwaGEgbmV4dAogICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICR0b2sgZXEgJ3snICkgewogICAgICAgICAgICAgICAgaWYgKCAkaWRlbnRpZmllciBlcSAnJicgfHwgJGkgPT0gMCApIHsgJGlkZW50aWZpZXIgPSAnJzsgfQogICAgICAgICAgICAgICAgJGkgICAgICAgICAgICAgPSAkaV9zYXZlOwogICAgICAgICAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAnJzsKICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBwdW5jdHVhdGlvbiB2YXJpYWJsZT8KICAgICAgICAgICAgICAgICMgdGVzdGZpbGU6IGN1bm5pbmdoYW00LnBsCiAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAjIFdlIGhhdmUgdG8gYmUgY2FyZWZ1bCBoZXJlLiAgSWYgd2UgYXJlIGluIGFuIHVua25vd24gc3RhdGUsCiAgICAgICAgICAgICAgICAjIHdlIHdpbGwgcmVqZWN0IHRoZSBwdW5jdHVhdGlvbiB2YXJpYWJsZS4gIEluIHRoZSBmb2xsb3dpbmcKICAgICAgICAgICAgICAgICMgZXhhbXBsZSB0aGUgJyYnIGlzIGEgYmluYXJ5IG9wZXJhdG9yIGJ1dCB3ZSBhcmUgaW4gYW4gdW5rbm93bgogICAgICAgICAgICAgICAgIyBzdGF0ZSBiZWNhdXNlIHRoZXJlIGlzIG5vIHNpZ2lsIG9uICdQcmltYScsIHNvIHdlIGRvbid0CiAgICAgICAgICAgICAgICAjIGtub3cgd2hhdCBpdCBpcy4gIEJ1dCBpdCBpcyBhIGJhZCBndWVzcyB0aGF0CiAgICAgICAgICAgICAgICAjICcmficgaXMgYSBmdW5jdGlvbiB2YXJpYWJsZS4KICAgICAgICAgICAgICAgICMgJHNlbGYtPnt0ZXh0fS0+e2NvbG9yTWFwfS0+WwogICAgICAgICAgICAgICAgIyAgIFByaW1hOjpQb2RWaWV3OjpDT0xPUl9DT0RFX0ZPUkVHUk9VTkQKICAgICAgICAgICAgICAgICMgICAmIH50Yjo6Q09MT1JfSU5ERVggXSA9CiAgICAgICAgICAgICAgICAjICAgJHNlYy0+e0NvbG9yQ29kZX0KICAgICAgICAgICAgICAgIGlmICggJGlkZW50aWZpZXIgZXEgJyYnICYmICRleHBlY3RpbmcgKSB7CiAgICAgICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRpZGVudGlmaWVyID0gJyc7CiAgICAgICAgICAgICAgICAgICAgJGkgICAgICAgICAgPSAkaV9zYXZlOwogICAgICAgICAgICAgICAgICAgICR0eXBlICAgICAgID0gJyYnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAnJzsKICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkaWRfc2Nhbl9zdGF0ZSBlcSAnQScgKSB7ICAgICMgbG9va2luZyBmb3IgYWxwaGEgKGFmdGVyIDo6KQoKICAgICAgICAgICAgaWYgKCAkdG9rID1+IC9eW0EtWmEtel9dLyApIHsgICAgIyBmb3VuZCBpdAogICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKICAgICAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJzonOyAgICAgICAgIyBub3cgbmVlZCA6OgogICAgICAgICAgICAgICAgJHNhd19hbHBoYSAgICAgPSAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJHRvayBlcSAiJyIgJiYgJGFsbG93X3RpY2sgKSB7CiAgICAgICAgICAgICAgICAkaWRlbnRpZmllciAuPSAkdG9rOwogICAgICAgICAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAnOic7ICAgICAgICAjIG5vdyBuZWVkIDo6CiAgICAgICAgICAgICAgICAkc2F3X2FscGhhICAgICA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkdG9rID1+IC9eWzAtOV0vICkgeyAgICAgIyBudW1lcmljLi5zZWUgY29tbWVudHMgYWJvdmUKICAgICAgICAgICAgICAgICRpZGVudGlmaWVyIC49ICR0b2s7CiAgICAgICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICc6JzsgICAgICAgICMgbm93IG5lZWQgOjoKICAgICAgICAgICAgICAgICRzYXdfYWxwaGEgICAgID0gMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICggJGlkZW50aWZpZXIgPX4gL15zdWIgLyApICYmICggJHRvayA9fiAvXlxzKiQvICkgKSB7CiAgICAgICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICcoJzsKICAgICAgICAgICAgICAgICRpZGVudGlmaWVyIC49ICR0b2s7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAoICRpZGVudGlmaWVyID1+IC9ec3ViIC8gKSAmJiAoICR0b2sgZXEgJygnICkgKSB7CiAgICAgICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICcpJzsKICAgICAgICAgICAgICAgICRpZGVudGlmaWVyIC49ICR0b2s7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICcnOwogICAgICAgICAgICAgICAgJGkgICAgICAgICAgICAgPSAkaV9zYXZlOwogICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRpZF9zY2FuX3N0YXRlIGVxICc6JyApIHsgICAgIyBsb29raW5nIGZvciA6OiBhZnRlciBhbHBoYQoKICAgICAgICAgICAgaWYgKCAkdG9rIGVxICc6OicgKSB7ICAgICAgICAgICAgIyBnb3QgaXQKICAgICAgICAgICAgICAgICRpZGVudGlmaWVyIC49ICR0b2s7CiAgICAgICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICdBJzsgICAgICAgICMgbm93IHJlcXVpcmUgYWxwaGEKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICR0b2sgPX4gL15bQS1aYS16X10vICkgeyAgICAjIG1vcmUgYWxwaGFudW1lcmljIGlzIG9rIGhlcmUKICAgICAgICAgICAgICAgICRpZGVudGlmaWVyIC49ICR0b2s7CiAgICAgICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICc6JzsgICAgICAgICAgICMgbm93IG5lZWQgOjoKICAgICAgICAgICAgICAgICRzYXdfYWxwaGEgICAgID0gMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICR0b2sgPX4gL15bMC05XS8gKSB7ICAgICAgICAjIG51bWVyaWMuLnNlZSBjb21tZW50cyBhYm92ZQogICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKICAgICAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJzonOyAgICAgICAgICAgIyBub3cgbmVlZCA6OgogICAgICAgICAgICAgICAgJHNhd19hbHBoYSAgICAgPSAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJHRvayBlcSAiJyIgJiYgJGFsbG93X3RpY2sgKSB7ICAgICMgdGljawoKICAgICAgICAgICAgICAgIGlmICggJGlzX2tleXdvcmR7JGlkZW50aWZpZXJ9ICkgewogICAgICAgICAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJyc7ICAgICAgICAgICAgICAjIHRoYXQncyBhbGwKICAgICAgICAgICAgICAgICAgICAkaSAgICAgICAgICAgICA9ICRpX3NhdmU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkaWRlbnRpZmllciAuPSAkdG9rOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggKCAkaWRlbnRpZmllciA9fiAvXnN1YiAvICkgJiYgKCAkdG9rID1+IC9eXHMqJC8gKSApIHsKICAgICAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJygnOwogICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICggJGlkZW50aWZpZXIgPX4gL15zdWIgLyApICYmICggJHRvayBlcSAnKCcgKSApIHsKICAgICAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJyknOwogICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJyc7ICAgICAgICAjIHRoYXQncyBhbGwKICAgICAgICAgICAgICAgICRpICAgICAgICAgICAgID0gJGlfc2F2ZTsKICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkaWRfc2Nhbl9zdGF0ZSBlcSAnKCcgKSB7ICAgICMgbG9va2luZyBmb3IgKCBvZiBwcm90b3R5cGUKCiAgICAgICAgICAgIGlmICggJHRvayBlcSAnKCcgKSB7ICAgICAgICAgICAgICMgZ290IGl0CiAgICAgICAgICAgICAgICAkaWRlbnRpZmllciAuPSAkdG9rOwogICAgICAgICAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAnKSc7ICAgICAgICAjIG5vdyBmaW5kIHRoZSBlbmQgb2YgaXQKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICR0b2sgPX4gL15ccyokLyApIHsgICAgICAjIGJsYW5rIC0ga2VlcCBnb2luZwogICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJyc7ICAgICAgICAgIyB0aGF0J3MgYWxsIC0gbm8gcHJvdG90eXBlCiAgICAgICAgICAgICAgICAkaSAgICAgICAgICAgICA9ICRpX3NhdmU7CiAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJGlkX3NjYW5fc3RhdGUgZXEgJyknICkgeyAgICAjIGxvb2tpbmcgZm9yICkgdG8gZW5kCgogICAgICAgICAgICBpZiAoICR0b2sgZXEgJyknICkgeyAgICAgICAgICAgICAjIGdvdCBpdAogICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKICAgICAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJyc7ICAgICAgICAgIyBhbGwgZG9uZQogICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICR0b2sgPX4gL15bXHNcJFwlXFxcKlxAXCZcO10vICkgewogICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsgICAgIyBwcm9iYWJsZSBlcnJvciBpbiBzY3JpcHQsIGJ1dCBrZWVwIGdvaW5nCiAgICAgICAgICAgICAgICB3YXJuaW5nKCJVbmV4cGVjdGVkICckdG9rJyB3aGlsZSBzZWVraW5nIGVuZCBvZiBwcm90b3R5cGVcbiIpOwogICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsgICAgICAgICMgY2FuIGdldCBoZXJlIGR1ZSB0byBlcnJvciBpbiBpbml0aWFsaXphdGlvbgogICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICcnOwogICAgICAgICAgICAkaSAgICAgICAgICAgICA9ICRpX3NhdmU7CiAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJGlkX3NjYW5fc3RhdGUgZXEgJyknICkgewogICAgICAgIHdhcm5pbmcoIkhpdCBlbmQgb2YgbGluZSB3aGlsZSBzZWVraW5nICkgdG8gZW5kIHByb3RvdHlwZVxuIik7CiAgICB9CgogICAgIyBvbmNlIHdlIGVudGVyIHRoZSBhY3R1YWwgaWRlbnRpZmllciwgaXQgbWF5IG5vdCBleHRlbmQgYmV5b25kCiAgICAjIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgbGluZQogICAgaWYgKCAkaWRfc2Nhbl9zdGF0ZSA9fiAvXltBXDpcKFwpXS8gKSB7CiAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAnJzsKICAgIH0KICAgIGlmICggJGkgPCAwICkgeyAkaSA9IDAgfQoKICAgIHVubGVzcyAoJHR5cGUpIHsKCiAgICAgICAgaWYgKCRzYXdfdHlwZSkgewoKICAgICAgICAgICAgaWYgKCRzYXdfYWxwaGEpIHsKICAgICAgICAgICAgICAgIGlmICggJGlkZW50aWZpZXIgPX4gL14tPi8gJiYgJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAndycgKSB7CiAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAndyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsgJHR5cGUgPSAnaScgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJGlkZW50aWZpZXIgZXEgJy0+JyApIHsKICAgICAgICAgICAgICAgICR0eXBlID0gJy0+JzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoCiAgICAgICAgICAgICAgICAoIGxlbmd0aCgkaWRlbnRpZmllcikgPiAxICkKCiAgICAgICAgICAgICAgICAjIEluIHNvbWV0aGluZyBsaWtlICdAJD0nIHdlIGhhdmUgYW4gaWRlbnRpZmllciAnQCQnCiAgICAgICAgICAgICAgICAjIEluIHNvbWV0aGluZyBsaWtlICckJHsnIHdlIGhhdmUgdHlwZSAnJCQnIChhbmQgb25seQogICAgICAgICAgICAgICAgIyBwYXJ0IG9mIGFuIGlkZW50aWZpZXIpCiAgICAgICAgICAgICAgICAmJiAhKCAkaWRlbnRpZmllciA9fiAvXCQkLyAmJiAkdG9rIGVxICd7JyApCiAgICAgICAgICAgICAgICAmJiAoICRpZGVudGlmaWVyICF+IC9eKHN1YiB8cGFja2FnZSApJC8gKQogICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHR5cGUgPSAnaSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7ICR0eXBlID0gJ3QnIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCRzYXdfYWxwaGEpIHsKCiAgICAgICAgICAgICMgdHlwZSAndycgaW5jbHVkZXMgYW55dGhpbmcgd2l0aG91dCBsZWFkaW5nIHR5cGUgaW5mbwogICAgICAgICAgICAjICgkLCUsQCwqKSBpbmNsdWRpbmcgc29tZXRoaW5nIGxpa2UgYWJjOjpkZWY6OmdoaQogICAgICAgICAgICAkdHlwZSA9ICd3JzsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICR0eXBlID0gJyc7CiAgICAgICAgfSAgICAjIHRoaXMgY2FuIGhhcHBlbiBvbiBhIHJlc3RhcnQKICAgIH0KCiAgICBpZiAoJGlkZW50aWZpZXIpIHsKICAgICAgICAkdG9rID0gJGlkZW50aWZpZXI7CiAgICAgICAgaWYgKCRtZXNzYWdlKSB7IHdyaXRlX2xvZ2ZpbGVfZW50cnkoJG1lc3NhZ2UpIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICR0b2sgPSAkdG9rX2JlZ2luOwogICAgICAgICRpICAgPSAkaV9iZWdpbjsKICAgIH0KCiAgICBUT0tFTklaRVJfREVCVUdfRkxBR19TQ0FOX0lEICYmIGRvIHsKICAgICAgICBteSAoICRhLCAkYiwgJGMgKSA9IGNhbGxlcjsKICAgICAgICBwcmludCBTVERPVVQKIlNDQU5JRDogY2FsbGVkIGZyb20gJGEgJGIgJGMgd2l0aCB0b2ssIGksIHN0YXRlLCBpZGVudGlmaWVyID0kdG9rX2JlZ2luLCAkaV9iZWdpbiwgJGlkX3NjYW5fc3RhdGVfYmVnaW4sICRpZGVudGlmaWVyX2JlZ2luXG4iOwogICAgICAgIHByaW50IFNURE9VVAoiU0NBTklEOiByZXR1cm5lZCB3aXRoIHRvaywgaSwgc3RhdGUsIGlkZW50aWZpZXIgPSR0b2ssICRpLCAkaWRfc2Nhbl9zdGF0ZSwgJGlkZW50aWZpZXJcbiI7CiAgICB9OwogICAgcmV0dXJuICggJGksICR0b2ssICR0eXBlLCAkaWRfc2Nhbl9zdGF0ZSwgJGlkZW50aWZpZXIgKTsKfQoKewoKICAgICMgc2F2ZWQgcGFja2FnZSBhbmQgc3VibmFtZXMgaW4gY2FzZSBwcm90b3R5cGUgaXMgb24gc2VwYXJhdGUgbGluZQogICAgbXkgKCAkcGFja2FnZV9zYXZlZCwgJHN1Ym5hbWVfc2F2ZWQgKTsKCiAgICBzdWIgZG9fc2Nhbl9zdWIgewoKICAgICAgICAjIGRvX3NjYW5fc3ViIHBhcnNlcyBhIHN1YiBuYW1lIGFuZCBwcm90b3R5cGUKICAgICAgICAjIGl0IGlzIGNhbGxlZCB3aXRoICRpX2JlZyBlcXVhbCB0byB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG5vbmJsYW5rCiAgICAgICAgIyB0b2tlbiBmb2xsb3dpbmcgYSAnc3ViJyB0b2tlbi4KCiAgICAgICAgIyBUT0RPOiBhZGQgZnV0dXJlIGVycm9yIGNoZWNrcyB0byBiZSBzdXJlIHdlIGhhdmUgYSB2YWxpZAogICAgICAgICMgc3ViIG5hbWUuICBGb3IgZXhhbXBsZSwgJ3N1YiAmZG9pdCcgaXMgd3JvbmcuICBBbHNvLCBiZSBzdXJlCiAgICAgICAgIyBhIG5hbWUgaXMgZ2l2ZW4gaWYgYW5kIG9ubHkgaWYgYSBub24tYW5vbnltb3VzIHN1YiBpcwogICAgICAgICMgYXBwcm9wcmlhdGUuCiAgICAgICAgIyBVU0VTIEdMT0JBTCBWQVJTOiAkY3VycmVudF9wYWNrYWdlLCAkbGFzdF9ub25ibGFua190b2tlbiwKICAgICAgICAjICRpbl9hdHRyaWJ1dGVfbGlzdCwgJXNhd19mdW5jdGlvbl9kZWZpbml0aW9uLAogICAgICAgICMgJHN0YXRlbWVudF90eXBlCgogICAgICAgIG15ICgKICAgICAgICAgICAgJGlucHV0X2xpbmUsICRpLCAgICAgICAgICAgICAkaV9iZWcsCiAgICAgICAgICAgICR0b2ssICAgICAgICAkdHlwZSwgICAgICAgICAgJHJ0b2tlbnMsCiAgICAgICAgICAgICRydG9rZW5fbWFwLCAkaWRfc2Nhbl9zdGF0ZSwgJG1heF90b2tlbl9pbmRleAogICAgICAgICkgPSBAXzsKICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICIiOyAgICAjIG5vcm1hbGx5IHdlIGdldCBldmVyeXRoaW5nIGluIG9uZSBjYWxsCiAgICAgICAgbXkgJHN1Ym5hbWUgPSB1bmRlZjsKICAgICAgICBteSAkcGFja2FnZSA9IHVuZGVmOwogICAgICAgIG15ICRwcm90byAgID0gdW5kZWY7CiAgICAgICAgbXkgJGF0dHJzICAgPSB1bmRlZjsKICAgICAgICBteSAkbWF0Y2g7CgogICAgICAgIG15ICRwb3NfYmVnID0gJHJ0b2tlbl9tYXAtPlskaV9iZWddOwogICAgICAgIHBvcygkaW5wdXRfbGluZSkgPSAkcG9zX2JlZzsKCiAgICAgICAgIyBMb29rIGZvciB0aGUgc3ViIE5BTUUKICAgICAgICBpZiAoCiAgICAgICAgICAgICRpbnB1dF9saW5lID1+IG0vXEdccyoKICAgICAgICAoKD86XHcqKD86J3w6OikpKikgICMgcGFja2FnZSAtIHNvbWV0aGluZyB0aGF0IGVuZHMgaW4gOjogb3IgJwogICAgICAgIChcdyspICAgICAgICAgICAgICAgIyBOQU1FICAgIC0gcmVxdWlyZWQKICAgICAgICAvZ2N4CiAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkbWF0Y2ggICA9IDE7CiAgICAgICAgICAgICRzdWJuYW1lID0gJDI7CgogICAgICAgICAgICAkcGFja2FnZSA9ICggZGVmaW5lZCgkMSkgJiYgJDEgKSA/ICQxIDogJGN1cnJlbnRfcGFja2FnZTsKICAgICAgICAgICAgJHBhY2thZ2UgPX4gcy9cJy86Oi9nOwogICAgICAgICAgICBpZiAoICRwYWNrYWdlID1+IC9eXDovICkgeyAkcGFja2FnZSA9ICdtYWluJyAuICRwYWNrYWdlIH0KICAgICAgICAgICAgJHBhY2thZ2UgPX4gcy86OiQvLzsKICAgICAgICAgICAgbXkgJHBvcyAgPSBwb3MoJGlucHV0X2xpbmUpOwogICAgICAgICAgICBteSAkbnVtYyA9ICRwb3MgLSAkcG9zX2JlZzsKICAgICAgICAgICAgJHRvayAgPSAnc3ViICcgLiBzdWJzdHIoICRpbnB1dF9saW5lLCAkcG9zX2JlZywgJG51bWMgKTsKICAgICAgICAgICAgJHR5cGUgPSAnaSc7CiAgICAgICAgfQoKICAgICAgICAjIE5vdyBsb29rIGZvciBQUk9UTyBBVFRSUwogICAgICAgICMgTG9vayBmb3IgcHJvdG90eXBlL2F0dHJpYnV0ZXMgd2hpY2ggYXJlIHVzdWFsbHkgb24gdGhlIHNhbWUKICAgICAgICAjIGxpbmUgYXMgdGhlIHN1YiBuYW1lIGJ1dCB3aGljaCBtaWdodCBiZSBvbiBhIHNlcGFyYXRlIGxpbmUuCiAgICAgICAgIyBGb3IgZXhhbXBsZSwgd2UgbWlnaHQgaGF2ZSBhbiBhbm9ueW1vdXMgc3ViIHdpdGggYXR0cmlidXRlcywKICAgICAgICAjIG9yIGEgcHJvdG90eXBlIG9uIGEgc2VwYXJhdGUgbGluZSBmcm9tIGl0cyBzdWIgbmFtZQoKICAgICAgICAjIE5PVEU6IFdlIG9ubHkgd2FudCB0byBwYXJzZSBQUk9UT1RZUEVTIGhlcmUuIElmIHdlIHNlZSBhbnl0aGluZyB0aGF0CiAgICAgICAgIyBkb2VzIG5vdCBsb29rIGxpa2UgYSBwcm90b3R5cGUsIHdlIGFzc3VtZSBpdCBpcyBhIFNJR05BVFVSRSBhbmQgd2UKICAgICAgICAjIHdpbGwgc3RvcCBhbmQgbGV0IHRoZSB0aGUgc3RhbmRhcmQgdG9rZW5pemVyIGhhbmRsZSBpdC4gIEluCiAgICAgICAgIyBwYXJ0aWN1bGFyLCB3ZSBzdG9wIGlmIHdlIHNlZSBhbnkgbmVzdGVkIHBhcmVucywgYnJhY2VzLCBvciBjb21tYXMuCiAgICAgICAgbXkgJHNhd19vcGVuaW5nX3BhcmVuID0gJGlucHV0X2xpbmUgPX4gL1xHXHMqXCgvOwogICAgICAgIGlmICgKICAgICAgICAgICAgJGlucHV0X2xpbmUgPX4gbS9cRyhccypcKFteXClcKFx9XHtcLF0qXCkpPyAgIyBQUk9UTwogICAgICAgICAgICAoXHMqOik/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBVFRSUyBsZWFkaW5nICc6JwogICAgICAgICAgICAvZ2N4CiAgICAgICAgICAgICYmICggJDEgfHwgJDIgKQogICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJHByb3RvID0gJDE7CiAgICAgICAgICAgICRhdHRycyA9ICQyOwoKICAgICAgICAgICAgIyBJZiB3ZSBhbHNvIGZvdW5kIHRoZSBzdWIgbmFtZSBvbiB0aGlzIGNhbGwgdGhlbiBhcHBlbmQgUFJPVE8uCiAgICAgICAgICAgICMgVGhpcyBpcyBub3QgbmVjZXNzYXJ5IGJ1dCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzCiAgICAgICAgICAgICMgdmVyc2lvbnMgd2hlbiB0aGUgLWNzYyBmbGFnIGlzIHVzZWQ6CiAgICAgICAgICAgIGlmICggJG1hdGNoICYmICRwcm90byApIHsKICAgICAgICAgICAgICAgICR0b2sgLj0gJHByb3RvOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRtYXRjaCB8fD0gMTsKCiAgICAgICAgICAgICMgSGFuZGxlIHByb3RvdHlwZSBvbiBzZXBhcmF0ZSBsaW5lIGZyb20gc3VibmFtZQogICAgICAgICAgICBpZiAoJHN1Ym5hbWVfc2F2ZWQpIHsKICAgICAgICAgICAgICAgICRwYWNrYWdlID0gJHBhY2thZ2Vfc2F2ZWQ7CiAgICAgICAgICAgICAgICAkc3VibmFtZSA9ICRzdWJuYW1lX3NhdmVkOwogICAgICAgICAgICAgICAgJHRvayAgICAgPSAkbGFzdF9ub25ibGFua190b2tlbjsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdHlwZSA9ICdpJzsKICAgICAgICB9CgogICAgICAgIGlmICgkbWF0Y2gpIHsKCiAgICAgICAgICAgICMgQVRUUlM6IGlmIHRoZXJlIGFyZSBhdHRyaWJ1dGVzLCBiYWNrIHVwIGFuZCBsZXQgdGhlICc6JyBiZQogICAgICAgICAgICAjIGZvdW5kIGxhdGVyIGJ5IHRoZSBzY2FubmVyLgogICAgICAgICAgICBteSAkcG9zID0gcG9zKCRpbnB1dF9saW5lKTsKICAgICAgICAgICAgaWYgKCRhdHRycykgewogICAgICAgICAgICAgICAgJHBvcyAtPSBsZW5ndGgoJGF0dHJzKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJG5leHRfbm9uYmxhbmtfdG9rZW4gPSAkdG9rOwoKICAgICAgICAgICAgIyBjYXRjaCBjYXNlIG9mIGxpbmUgd2l0aCBsZWFkaW5nIEFUVFIgJzonIGFmdGVyIGFub255bW91cyBzdWIKICAgICAgICAgICAgaWYgKCAkcG9zID09ICRwb3NfYmVnICYmICR0b2sgZXEgJzonICkgewogICAgICAgICAgICAgICAgJHR5cGUgICAgICAgICAgICAgID0gJ0EnOwogICAgICAgICAgICAgICAgJGluX2F0dHJpYnV0ZV9saXN0ID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBPdGhlcndpc2UsIGlmIHdlIGZvdW5kIGEgbWF0Y2ggd2UgbXVzdCBjb252ZXJ0IGJhY2sgZnJvbQogICAgICAgICAgICAjIHN0cmluZyBwb3NpdGlvbiB0byB0aGUgcHJlX3Rva2VuIGluZGV4IGZvciBjb250aW51ZWQgcGFyc2luZy4KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBJIGRvbid0IHRoaW5rIGFuIGVycm9yIGZsYWcgY2FuIG9jY3VyIGhlcmUgLi5idXQgPwogICAgICAgICAgICAgICAgbXkgJGVycm9yOwogICAgICAgICAgICAgICAgKCAkaSwgJGVycm9yICkgPSBpbnZlcnNlX3ByZXRva2VuX21hcCggJGksICRwb3MsICRydG9rZW5fbWFwLAogICAgICAgICAgICAgICAgICAgICRtYXhfdG9rZW5faW5kZXggKTsKICAgICAgICAgICAgICAgIGlmICgkZXJyb3IpIHsgd2FybmluZygiUG9zc2libHkgaW52YWxpZCBzdWJcbiIpIH0KCiAgICAgICAgICAgICAgICAjIGNoZWNrIGZvciBtdWx0aXBsZSBkZWZpbml0aW9ucyBvZiBhIHN1YgogICAgICAgICAgICAgICAgKCAkbmV4dF9ub25ibGFua190b2tlbiwgbXkgJGlfbmV4dCApID0KICAgICAgICAgICAgICAgICAgZmluZF9uZXh0X25vbmJsYW5rX3Rva2VuX29uX3RoaXNfbGluZSggJGksICRydG9rZW5zLAogICAgICAgICAgICAgICAgICAgICRtYXhfdG9rZW5faW5kZXggKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkbmV4dF9ub25ibGFua190b2tlbiA9fiAvXihccyp8IykkLyApCiAgICAgICAgICAgIHsgICAgIyBza2lwIGJsYW5rIG9yIHNpZGUgY29tbWVudAogICAgICAgICAgICAgICAgbXkgKCAkcnByZV90b2tlbnMsICRycHJlX3R5cGVzICkgPQogICAgICAgICAgICAgICAgICBwZWVrX2FoZWFkX2Zvcl9uX25vbmJsYW5rX3ByZV90b2tlbnMoMSk7CiAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQoJHJwcmVfdG9rZW5zKSAmJiBAeyRycHJlX3Rva2Vuc30gKSB7CiAgICAgICAgICAgICAgICAgICAgJG5leHRfbm9uYmxhbmtfdG9rZW4gPSAkcnByZV90b2tlbnMtPlswXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRuZXh0X25vbmJsYW5rX3Rva2VuID0gJ30nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRwYWNrYWdlX3NhdmVkID0gIiI7CiAgICAgICAgICAgICRzdWJuYW1lX3NhdmVkID0gIiI7CgogICAgICAgICAgICAjIFNlZSB3aGF0J3MgbmV4dC4uLgogICAgICAgICAgICBpZiAoICRuZXh0X25vbmJsYW5rX3Rva2VuIGVxICd7JyApIHsKICAgICAgICAgICAgICAgIGlmICgkc3VibmFtZSkgewoKICAgICAgICAgICAgICAgICAgICAjIENoZWNrIGZvciBtdWx0aXBsZSBkZWZpbml0aW9ucyBvZiBhIHN1YiwgYnV0CiAgICAgICAgICAgICAgICAgICAgIyBpdCBpcyBvayB0byBoYXZlIG11bHRpcGxlIHN1YiBCRUdJTiwgZXRjLAogICAgICAgICAgICAgICAgICAgICMgc28gd2UgZG8gbm90IGNvbXBsYWluIGlmIG5hbWUgaXMgYWxsIGNhcHMKICAgICAgICAgICAgICAgICAgICBpZiAoICAgJHNhd19mdW5jdGlvbl9kZWZpbml0aW9ueyRwYWNrYWdlfXskc3VibmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHN1Ym5hbWUgIX4gL15bQS1aXSskLyApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkbG5vID0gJHNhd19mdW5jdGlvbl9kZWZpbml0aW9ueyRwYWNrYWdlfXskc3VibmFtZX07CiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcoCiJhbHJlYWR5IHNhdyBkZWZpbml0aW9uIG9mICdzdWIgJHN1Ym5hbWUnIGluIHBhY2thZ2UgJyRwYWNrYWdlJyBhdCBsaW5lICRsbm9cbiIKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJHNhd19mdW5jdGlvbl9kZWZpbml0aW9ueyRwYWNrYWdlfXskc3VibmFtZX0gPQogICAgICAgICAgICAgICAgICAgICAgJHRva2VuaXplcl9zZWxmLT57X2xhc3RfbGluZV9udW1iZXJ9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJG5leHRfbm9uYmxhbmtfdG9rZW4gZXEgJzsnICkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJG5leHRfbm9uYmxhbmtfdG9rZW4gZXEgJ30nICkgewogICAgICAgICAgICB9CgogICAgICAgICAgICAjIEFUVFJTIC0gaWYgYW4gYXR0cmlidXRlIGxpc3QgZm9sbG93cywgcmVtZW1iZXIgdGhlIG5hbWUKICAgICAgICAgICAgIyBvZiB0aGUgc3ViIHNvIHRoZSBuZXh0IG9wZW5pbmcgYnJhY2UgY2FuIGJlIGxhYmVsZWQuCiAgICAgICAgICAgICMgU2V0dGluZyAnc3RhdGVtZW50X3R5cGUnIGNhdXNlcyBhbnkgJzoncyB0byBpbnRyb2R1Y2UKICAgICAgICAgICAgIyBhdHRyaWJ1dGVzLgogICAgICAgICAgICBlbHNpZiAoICRuZXh0X25vbmJsYW5rX3Rva2VuIGVxICc6JyApIHsKICAgICAgICAgICAgICAgICRzdGF0ZW1lbnRfdHlwZSA9ICR0b2s7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaWYgd2Ugc3RvcHBlZCBiZWZvcmUgYW4gb3BlbiBwYXJlbiAuLi4KICAgICAgICAgICAgZWxzaWYgKCAkbmV4dF9ub25ibGFua190b2tlbiBlcSAnKCcgKSB7CgogICAgICAgICAgICAgICAgIyBJZiB3ZSBESUQgTk9UIHNlZSB0aGlzIHBhcmVuIGFib3ZlIHRoZW4gaXQgbXVzdCBiZSBvbiB0aGUKICAgICAgICAgICAgICAgICMgbmV4dCBsaW5lIHNvIHdlIHdpbGwgc2V0IGEgZmxhZyB0byBjb21lIGJhY2sgaGVyZSBhbmQgc2VlIGlmCiAgICAgICAgICAgICAgICAjIGl0IGlzIGEgUFJPVE9UWVBFCgogICAgICAgICAgICAgICAgIyBPdGhlcndpc2UsIHdlIGFzc3VtZSBpdCBpcyBhIFNJR05BVFVSRSByYXRoZXIgdGhhbiBhCiAgICAgICAgICAgICAgICAjIFBST1RPVFlQRSBhbmQgbGV0IHRoZSBub3JtYWwgdG9rZW5pemVyIGhhbmRsZSBpdCBhcyBhIGxpc3QKICAgICAgICAgICAgICAgIGlmICggISRzYXdfb3BlbmluZ19wYXJlbiApIHsKICAgICAgICAgICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICdzdWInOyAgICAgIyB3ZSBtdXN0IGNvbWUgYmFjayB0byBnZXQgcHJvdG8KICAgICAgICAgICAgICAgICAgICAkcGFja2FnZV9zYXZlZCA9ICRwYWNrYWdlOwogICAgICAgICAgICAgICAgICAgICRzdWJuYW1lX3NhdmVkID0gJHN1Ym5hbWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkc3RhdGVtZW50X3R5cGUgPSAkdG9rOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICgkbmV4dF9ub25ibGFua190b2tlbikgeyAgICAgICMgRU9GIHRlY2huaWNhbGx5IG9rCiAgICAgICAgICAgICAgICB3YXJuaW5nKAoiZXhwZWN0aW5nICc6JyBvciAnOycgb3IgJ3snIGFmdGVyIGRlZmluaXRpb24gb3IgZGVjbGFyYXRpb24gb2Ygc3ViICckc3VibmFtZScgYnV0IHNhdyAnJG5leHRfbm9uYmxhbmtfdG9rZW4nXG4iCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNoZWNrX3Byb3RvdHlwZSggJHByb3RvLCAkcGFja2FnZSwgJHN1Ym5hbWUgKTsKICAgICAgICB9CgogICAgICAgICMgbm8gbWF0Y2ggYnV0IGxpbmUgbm90IGJsYW5rCiAgICAgICAgZWxzZSB7CiAgICAgICAgfQogICAgICAgIHJldHVybiAoICRpLCAkdG9rLCAkdHlwZSwgJGlkX3NjYW5fc3RhdGUgKTsKICAgIH0KfQoKIyMjIyMjIyMjaSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFRva2VuaXplciB1dGlsaXR5IHJvdXRpbmVzIHdoaWNoIG1heSB1c2UgQ09OU1RBTlRTIGJ1dCBubyBvdGhlciBHTE9CQUxTCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnN1YiBmaW5kX25leHRfbm9uYmxhbmtfdG9rZW4gewogICAgbXkgKCAkaSwgJHJ0b2tlbnMsICRtYXhfdG9rZW5faW5kZXggKSA9IEBfOwoKICAgIGlmICggJGkgPj0gJG1heF90b2tlbl9pbmRleCApIHsKICAgICAgICBpZiAoICFwZWVrZWRfYWhlYWQoKSApIHsKICAgICAgICAgICAgcGVla2VkX2FoZWFkKDEpOwogICAgICAgICAgICAkcnRva2VucyA9CiAgICAgICAgICAgICAgcGVla19haGVhZF9mb3Jfbm9uYmxhbmtfdG9rZW4oICRydG9rZW5zLCAkbWF4X3Rva2VuX2luZGV4ICk7CiAgICAgICAgfQogICAgfQogICAgbXkgJG5leHRfbm9uYmxhbmtfdG9rZW4gPSAkcnRva2Vucy0+WyArKyRpIF07CgogICAgaWYgKCAkbmV4dF9ub25ibGFua190b2tlbiA9fiAvXlxzKiQvICkgewogICAgICAgICRuZXh0X25vbmJsYW5rX3Rva2VuID0gJHJ0b2tlbnMtPlsgKyskaSBdOwogICAgfQogICAgcmV0dXJuICggJG5leHRfbm9uYmxhbmtfdG9rZW4sICRpICk7Cn0KCnN1YiBudW1lcmF0b3JfZXhwZWN0ZWQgewoKICAgICMgdGhpcyBpcyBhIGZpbHRlciBmb3IgYSBwb3NzaWJsZSBudW1lcmF0b3IsIGluIHN1cHBvcnQgb2YgZ3Vlc3NpbmcKICAgICMgZm9yIHRoZSAvIHBhdHRlcm4gZGVsaW1pdGVyIHRva2VuLgogICAgIyByZXR1cm5zIC0KICAgICMgICAxIC0geWVzCiAgICAjICAgMCAtIGNhbid0IHRlbGwKICAgICMgIC0xIC0gbm8KICAgICMgTm90ZTogSSBhbSB1c2luZyB0aGUgY29udmVudGlvbiB0aGF0IHZhcmlhYmxlcyBlbmRpbmcgaW4KICAgICMgX2V4cGVjdGVkIGhhdmUgdGhlc2UgMyBwb3NzaWJsZSB2YWx1ZXMuCiAgICBteSAoICRpLCAkcnRva2VucywgJG1heF90b2tlbl9pbmRleCApID0gQF87CiAgICBteSAkbnVtZXJhdG9yX2V4cGVjdGVkID0gMDsKCiAgICBteSAkbmV4dF90b2tlbiA9ICRydG9rZW5zLT5bICRpICsgMSBdOwogICAgaWYgKCAkbmV4dF90b2tlbiBlcSAnPScgKSB7ICRpKys7IH0gICAgIyBoYW5kbGUgLz0KICAgIG15ICggJG5leHRfbm9uYmxhbmtfdG9rZW4sICRpX25leHQgKSA9CiAgICAgIGZpbmRfbmV4dF9ub25ibGFua190b2tlbiggJGksICRydG9rZW5zLCAkbWF4X3Rva2VuX2luZGV4ICk7CgogICAgaWYgKCAkbmV4dF9ub25ibGFua190b2tlbiA9fiAvKFwofFwkfFx3fFwufFxAKS8gKSB7CiAgICAgICAgJG51bWVyYXRvcl9leHBlY3RlZCA9IDE7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgaWYgKCAkbmV4dF9ub25ibGFua190b2tlbiA9fiAvXlxzKiQvICkgewogICAgICAgICAgICAkbnVtZXJhdG9yX2V4cGVjdGVkID0gMDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRudW1lcmF0b3JfZXhwZWN0ZWQgPSAtMTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gJG51bWVyYXRvcl9leHBlY3RlZDsKfQoKc3ViIHBhdHRlcm5fZXhwZWN0ZWQgewoKICAgICMgVGhpcyBpcyB0aGUgc3RhcnQgb2YgYSBmaWx0ZXIgZm9yIGEgcG9zc2libGUgcGF0dGVybi4KICAgICMgSXQgbG9va3MgYXQgdGhlIHRva2VuIGFmdGVyIGEgcG9zc2libGUgcGF0dGVybiBhbmQgdHJpZXMgdG8KICAgICMgZGV0ZXJtaW5lIGlmIHRoYXQgdG9rZW4gY291bGQgZW5kIGEgcGF0dGVybi4KICAgICMgcmV0dXJucyAtCiAgICAjICAgMSAtIHllcwogICAgIyAgIDAgLSBjYW4ndCB0ZWxsCiAgICAjICAtMSAtIG5vCiAgICBteSAoICRpLCAkcnRva2VucywgJG1heF90b2tlbl9pbmRleCApID0gQF87CiAgICBteSAkaXNfcGF0dGVybiA9IDA7CgogICAgbXkgJG5leHRfdG9rZW4gPSAkcnRva2Vucy0+WyAkaSArIDEgXTsKICAgIGlmICggJG5leHRfdG9rZW4gPX4gL15bbXNpeHBvZHVhbGdjXS8gKSB7ICRpKys7IH0gICAjIHNraXAgcG9zc2libGUgbW9kaWZpZXIKICAgIG15ICggJG5leHRfbm9uYmxhbmtfdG9rZW4sICRpX25leHQgKSA9CiAgICAgIGZpbmRfbmV4dF9ub25ibGFua190b2tlbiggJGksICRydG9rZW5zLCAkbWF4X3Rva2VuX2luZGV4ICk7CgogICAgIyBsaXN0IG9mIHRva2VucyB3aGljaCBtYXkgZm9sbG93IGEgcGF0dGVybgogICAgIyAoY2FuIHByb2JhYmx5IGJlIGV4cGFuZGVkKQogICAgaWYgKCAkbmV4dF9ub25ibGFua190b2tlbiA9fiAvKFwpfFx9fFw7fFwmXCZ8XHxcfHxhbmR8b3J8d2hpbGV8aWZ8dW5sZXNzKS8gKQogICAgewogICAgICAgICRpc19wYXR0ZXJuID0gMTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICBpZiAoICRuZXh0X25vbmJsYW5rX3Rva2VuID1+IC9eXHMqJC8gKSB7CiAgICAgICAgICAgICRpc19wYXR0ZXJuID0gMDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRpc19wYXR0ZXJuID0gLTE7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuICRpc19wYXR0ZXJuOwp9CgpzdWIgZmluZF9uZXh0X25vbmJsYW5rX3Rva2VuX29uX3RoaXNfbGluZSB7CiAgICBteSAoICRpLCAkcnRva2VucywgJG1heF90b2tlbl9pbmRleCApID0gQF87CiAgICBteSAkbmV4dF9ub25ibGFua190b2tlbjsKCiAgICBpZiAoICRpIDwgJG1heF90b2tlbl9pbmRleCApIHsKICAgICAgICAkbmV4dF9ub25ibGFua190b2tlbiA9ICRydG9rZW5zLT5bICsrJGkgXTsKCiAgICAgICAgaWYgKCAkbmV4dF9ub25ibGFua190b2tlbiA9fiAvXlxzKiQvICkgewoKICAgICAgICAgICAgaWYgKCAkaSA8ICRtYXhfdG9rZW5faW5kZXggKSB7CiAgICAgICAgICAgICAgICAkbmV4dF9ub25ibGFua190b2tlbiA9ICRydG9rZW5zLT5bICsrJGkgXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRuZXh0X25vbmJsYW5rX3Rva2VuID0gIiI7CiAgICB9CiAgICByZXR1cm4gKCAkbmV4dF9ub25ibGFua190b2tlbiwgJGkgKTsKfQoKc3ViIGZpbmRfYW5nbGVfb3BlcmF0b3JfdGVybWluYXRpb24gewoKICAgICMgV2UgYXJlIGxvb2tpbmcgYXQgYSAnPCcgYW5kIHdhbnQgdG8ga25vdyBpZiBpdCBpcyBhbiBhbmdsZSBvcGVyYXRvci4KICAgICMgV2UgYXJlIHRvIHJldHVybjoKICAgICMgICAkaSA9IHByZXRva2VuIGluZGV4IG9mIGVuZGluZyAnPicgaWYgZm91bmQsIGN1cnJlbnQgJGkgb3RoZXJ3aXNlCiAgICAjICAgJHR5cGUgPSAnUScgaWYgZm91bmQsICc+JyBvdGhlcndpc2UKICAgIG15ICggJGlucHV0X2xpbmUsICRpX2JlZywgJHJ0b2tlbl9tYXAsICRleHBlY3RpbmcsICRtYXhfdG9rZW5faW5kZXggKSA9IEBfOwogICAgbXkgJGkgICAgPSAkaV9iZWc7CiAgICBteSAkdHlwZSA9ICc8JzsKICAgIHBvcygkaW5wdXRfbGluZSkgPSAxICsgJHJ0b2tlbl9tYXAtPlskaV07CgogICAgbXkgJGZpbHRlcjsKCiAgICAjIHdlIGp1c3QgaGF2ZSB0byBmaW5kIHRoZSBuZXh0ICc+JyBpZiBhIHRlcm0gaXMgZXhwZWN0ZWQKICAgIGlmICggJGV4cGVjdGluZyA9PSBURVJNICkgeyAkZmlsdGVyID0gJ1tcPl0nIH0KCiAgICAjIHdlIGhhdmUgdG8gZ3Vlc3MgaWYgd2UgZG9uJ3Qga25vdyB3aGF0IGlzIGV4cGVjdGVkCiAgICBlbHNpZiAoICRleHBlY3RpbmcgPT0gVU5LTk9XTiApIHsgJGZpbHRlciA9ICdbXD5cO1w9XCNcfFw8XScgfQoKICAgICMgc2hvdWxkbid0IGhhcHBlbiAtIHdlIHNob3VsZG4ndCBiZSBoZXJlIGlmIG9wZXJhdG9yIGlzIGV4cGVjdGVkCiAgICBlbHNlIHsgd2FybmluZygiUHJvZ3JhbSBCdWcgaW4gZmluZF9hbmdsZV9vcGVyYXRvcl90ZXJtaW5hdGlvblxuIikgfQoKICAgICMgVG8gaWxsdXN0cmF0ZSB3aGF0IHdlIG1pZ2h0IGJlIGxvb2tpbmcgYXQsIGluIGNhc2Ugd2UgYXJlCiAgICAjIGd1ZXNzaW5nLCBoZXJlIGFyZSBzb21lIGV4YW1wbGVzIG9mIHZhbGlkIGFuZ2xlIG9wZXJhdG9ycwogICAgIyAob3IgZmlsZSBnbG9icyk6CiAgICAjICA8dG1wX2ltcC8qPgogICAgIyAgPEZIPgogICAgIyAgPCRmaD4KICAgICMgIDwqLmMgKi5oPgogICAgIyAgPF8+CiAgICAjICA8anNrZGZqc2tkZmoqIG9wLyoganNrZGpmamtvc3ZrKj4gKCBnbG9iLnQpCiAgICAjICA8JHtQUkVGSVh9KmltZyouJElNQUdFX1RZUEU+CiAgICAjICA8aW1nKi4kSU1BR0VfVFlQRT4KICAgICMgIDxUaW1nKi4kSU1BR0VfVFlQRT4KICAgICMgIDwkTEFURVgySFRNTFZFUlNJT05TJHtkZH1odG1sWzEtOV0uWzAtOV0ucGw+CiAgICAjCiAgICAjIEhlcmUgYXJlIHNvbWUgZXhhbXBsZXMgb2YgbGluZXMgd2hpY2ggZG8gbm90IGhhdmUgYW5nbGUgb3BlcmF0b3JzOgogICAgIyAgcmV0dXJuIHVubGVzcyAkc2VsZi0+WzJdKysgPCAkI3skc2VsZi0+WzFdfTsKICAgICMgIDwgMiAgfHwgQCR0ID4KICAgICMKICAgICMgdGhlIGZvbGxvd2luZyBsaW5lIGZyb20gZGxpc3Rlci5wbCBjYXVzZWQgdHJvdWJsZToKICAgICMgIHByaW50J34neDc5LCJcbiIsJEQ8MTAyND8iMC4kRCI6JEQ+PjEwLCJLLCAkQyBmaWxlc1xuXG5cbiI7CiAgICAjCiAgICAjIElmIHRoZSAnPCcgc3RhcnRzIGFuIGFuZ2xlIG9wZXJhdG9yLCBpdCBtdXN0IGVuZCBvbiB0aGlzIGxpbmUgYW5kCiAgICAjIGl0IG11c3Qgbm90IGhhdmUgY2VydGFpbiBjaGFyYWN0ZXJzIGxpa2UgJzsnIGFuZCAnPScgaW4gaXQuICBJIHVzZQogICAgIyB0aGlzIHRvIGxpbWl0IHRoZSB0ZXN0aW5nLiAgVGhpcyBmaWx0ZXIgc2hvdWxkIGJlIGltcHJvdmVkIGlmCiAgICAjIHBvc3NpYmxlLgoKICAgIGlmICggJGlucHV0X2xpbmUgPX4gLygkZmlsdGVyKS9nICkgewoKICAgICAgICBpZiAoICQxIGVxICc+JyApIHsKCiAgICAgICAgICAgICMgV2UgTUFZIGhhdmUgZm91bmQgYW4gYW5nbGUgb3BlcmF0b3IgdGVybWluYXRpb24gaWYgd2UgZ2V0CiAgICAgICAgICAgICMgaGVyZSwgYnV0IHdlIG5lZWQgdG8gZG8gbW9yZSB0byBiZSBzdXJlIHdlIGhhdmVuJ3QgYmVlbgogICAgICAgICAgICAjIGZvb2xlZC4KICAgICAgICAgICAgbXkgJHBvcyA9IHBvcygkaW5wdXRfbGluZSk7CgogICAgICAgICAgICBteSAkcG9zX2JlZyA9ICRydG9rZW5fbWFwLT5bJGldOwogICAgICAgICAgICBteSAkc3RyICAgICA9IHN1YnN0ciggJGlucHV0X2xpbmUsICRwb3NfYmVnLCAoICRwb3MgLSAkcG9zX2JlZyApICk7CgogICAgICAgICAgICAjIFJlamVjdCBpZiB0aGUgY2xvc2luZyAnPicgZm9sbG93cyBhICctJyBhcyBpbjoKICAgICAgICAgICAgIyBpZiAoIFZFUlNJT04gPCA1LjAwOSAmJiAkb3AtPiBuYW1lIGVxICdhc3NpZ24nICkgeyB9CiAgICAgICAgICAgIGlmICggJGV4cGVjdGluZyBlcSBVTktOT1dOICkgewogICAgICAgICAgICAgICAgbXkgJGNoZWNrID0gc3Vic3RyKCAkaW5wdXRfbGluZSwgJHBvcyAtIDIsIDEgKTsKICAgICAgICAgICAgICAgIGlmICggJGNoZWNrIGVxICctJyApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCAkaSwgJHR5cGUgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNkZWJ1ZyMjIyMjCiAgICAgICAgICAgICN3cml0ZV9kaWFnbm9zdGljcyggIkFOR0xFPyA6JHN0clxuIik7CiAgICAgICAgICAgICNwcmludCAiQU5HTEU6IGZvdW5kICQxIGF0IHBvcz0kcG9zIHN0cj0kc3RyIGNoZWNrPSRjaGVja1xuIjsKICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNkZWJ1ZyMjIyMjCiAgICAgICAgICAgICR0eXBlID0gJ1EnOwogICAgICAgICAgICBteSAkZXJyb3I7CiAgICAgICAgICAgICggJGksICRlcnJvciApID0KICAgICAgICAgICAgICBpbnZlcnNlX3ByZXRva2VuX21hcCggJGksICRwb3MsICRydG9rZW5fbWFwLCAkbWF4X3Rva2VuX2luZGV4ICk7CgogICAgICAgICAgICAjIEl0IG1heSBiZSBwb3NzaWJsZSB0aGF0IGEgcXVvdGUgZW5kcyBtaWR3YXkgaW4gYSBwcmV0b2tlbi4KICAgICAgICAgICAgIyBJZiB0aGlzIGhhcHBlbnMsIGl0IG1heSBiZSBuZWNlc3NhcnkgdG8gc3BsaXQgdGhlIHByZXRva2VuLgogICAgICAgICAgICBpZiAoJGVycm9yKSB7CiAgICAgICAgICAgICAgICB3YXJuaW5nKAogICAgICAgICAgICAgICAgICAgICJQb3NzaWJsZSB0b2tpbml6YXRpb24gZXJyb3IuLnBsZWFzZSBjaGVjayB0aGlzIGxpbmVcbiIpOwogICAgICAgICAgICAgICAgcmVwb3J0X3Bvc3NpYmxlX2J1ZygpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIE5vdyBsZXQncyBzZWUgd2hlcmUgd2Ugc3RhbmQuLi4uCiAgICAgICAgICAgICMgT0sgaWYgbWF0aCBvcCBub3QgcG9zc2libGUKICAgICAgICAgICAgaWYgKCAkZXhwZWN0aW5nID09IFRFUk0gKSB7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgT0sgaWYgdGhlcmUgYXJlIG5vIG1vcmUgdGhhbiAyIHByZS10b2tlbnMgaW5zaWRlCiAgICAgICAgICAgICMgKG5vdCBwb3NzaWJsZSB0byB3cml0ZSAyIHRva2VuIG1hdGggYmV0d2VlbiA8IGFuZCA+KQogICAgICAgICAgICAjIFRoaXMgY2F0Y2hlcyBtb3N0IGNvbW1vbiBjYXNlcwogICAgICAgICAgICBlbHNpZiAoICRpIDw9ICRpX2JlZyArIDMgKSB7CiAgICAgICAgICAgICAgICB3cml0ZV9kaWFnbm9zdGljcygiQU5HTEUoMSBvciAyIHRva2Vucyk6ICRzdHJcbiIpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIE5vdCBzdXJlLi4KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBMZXQncyB0cnkgYSBCcmFjZSBUZXN0OiBhbnkgYnJhY2VzIGluc2lkZSBtdXN0IGJhbGFuY2UKICAgICAgICAgICAgICAgIG15ICRiciA9IDA7CiAgICAgICAgICAgICAgICB3aGlsZSAoICRzdHIgPX4gL1x7L2cgKSB7ICRicisrIH0KICAgICAgICAgICAgICAgIHdoaWxlICggJHN0ciA9fiAvXH0vZyApIHsgJGJyLS0gfQogICAgICAgICAgICAgICAgbXkgJHNiID0gMDsKICAgICAgICAgICAgICAgIHdoaWxlICggJHN0ciA9fiAvXFsvZyApIHsgJHNiKysgfQogICAgICAgICAgICAgICAgd2hpbGUgKCAkc3RyID1+IC9cXS9nICkgeyAkc2ItLSB9CiAgICAgICAgICAgICAgICBteSAkcHIgPSAwOwogICAgICAgICAgICAgICAgd2hpbGUgKCAkc3RyID1+IC9cKC9nICkgeyAkcHIrKyB9CiAgICAgICAgICAgICAgICB3aGlsZSAoICRzdHIgPX4gL1wpL2cgKSB7ICRwci0tIH0KCiAgICAgICAgICAgICAgICAjIGlmIGJyYWNlcyBkbyBub3QgYmFsYW5jZSAtIG5vdCBhbmdsZSBvcGVyYXRvcgogICAgICAgICAgICAgICAgaWYgKCAkYnIgfHwgJHNiIHx8ICRwciApIHsKICAgICAgICAgICAgICAgICAgICAkaSAgICA9ICRpX2JlZzsKICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICc8JzsKICAgICAgICAgICAgICAgICAgICB3cml0ZV9kaWFnbm9zdGljcygKICAgICAgICAgICAgICAgICAgICAgICAgIk5PVCBBTkdMRSAoQlJBQ0U9eyRiciAoJHByIFskc2IgKTokc3RyXG4iKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHdlIHNob3VsZCBrZWVwIGRvaW5nIG1vcmUgY2hlY2tzIGhlcmUuLi50byBiZSBjb250aW51ZWQKICAgICAgICAgICAgICAgICMgVGVudGF0aXZlbHkgYWNjZXB0aW5nIHRoaXMgYXMgYSB2YWxpZCBhbmdsZSBvcGVyYXRvci4KICAgICAgICAgICAgICAgICMgVGhlcmUgYXJlIGxvdHMgbW9yZSB0aGluZ3MgdGhhdCBjYW4gYmUgY2hlY2tlZC4KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHdyaXRlX2RpYWdub3N0aWNzKAogICAgICAgICAgICAgICAgICAgICAgICAiQU5HTEUtR3Vlc3NpbmcgeWVzOiAkc3RyIGV4cGVjdGluZz0kZXhwZWN0aW5nXG4iKTsKICAgICAgICAgICAgICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCJHdWVzc2luZyBhbmdsZSBvcGVyYXRvciBoZXJlOiAkc3RyXG4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBkaWRuJ3QgZmluZCBlbmRpbmcgPgogICAgICAgIGVsc2UgewogICAgICAgICAgICBpZiAoICRleHBlY3RpbmcgPT0gVEVSTSApIHsKICAgICAgICAgICAgICAgIHdhcm5pbmcoIk5vIGVuZGluZyA+IGZvciBhbmdsZSBvcGVyYXRvclxuIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gKCAkaSwgJHR5cGUgKTsKfQoKc3ViIHNjYW5fbnVtYmVyX2RvIHsKCiAgICAjICBzY2FuIGEgbnVtYmVyIGluIGFueSBvZiB0aGUgZm9ybWF0cyB0aGF0IFBlcmwgYWNjZXB0cwogICAgIyAgVW5kZXJiYXJzIChfKSBhcmUgYWxsb3dlZCBpbiBkZWNpbWFsIG51bWJlcnMuCiAgICAjICBpbnB1dCBwYXJhbWV0ZXJzIC0KICAgICMgICAgICAkaW5wdXRfbGluZSAgLSB0aGUgc3RyaW5nIHRvIHNjYW4KICAgICMgICAgICAkaSAgICAgICAgICAgLSBwcmVfdG9rZW4gaW5kZXggdG8gc3RhcnQgc2Nhbm5pbmcKICAgICMgICAgJHJ0b2tlbl9tYXAgICAgLSByZWZlcmVuY2UgdG8gdGhlIHByZV90b2tlbiBtYXAgZ2l2aW5nIHN0YXJ0aW5nCiAgICAjICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgcG9zaXRpb24gaW4gJGlucHV0X2xpbmUgb2YgdG9rZW4gJGkKICAgICMgIG91dHB1dCBwYXJhbWV0ZXJzIC0KICAgICMgICAgJGkgICAgICAgICAgICAtIGxhc3QgcHJlX3Rva2VuIGluZGV4IG9mIHRoZSBudW1iZXIganVzdCBzY2FubmVkCiAgICAjICAgIG51bWJlciAgICAgICAgLSB0aGUgbnVtYmVyIChjaGFyYWN0ZXJzKTsgb3IgdW5kZWYgaWYgbm90IGEgbnVtYmVyCgogICAgbXkgKCAkaW5wdXRfbGluZSwgJGksICRydG9rZW5fbWFwLCAkaW5wdXRfdHlwZSwgJG1heF90b2tlbl9pbmRleCApID0gQF87CiAgICBteSAkcG9zX2JlZyA9ICRydG9rZW5fbWFwLT5bJGldOwogICAgbXkgJHBvczsKICAgIG15ICRpX2JlZ2luID0gJGk7CiAgICBteSAkbnVtYmVyICA9IHVuZGVmOwogICAgbXkgJHR5cGUgICAgPSAkaW5wdXRfdHlwZTsKCiAgICBteSAkZmlyc3RfY2hhciA9IHN1YnN0ciggJGlucHV0X2xpbmUsICRwb3NfYmVnLCAxICk7CgogICAgIyBMb29rIGZvciBiYWQgc3RhcnRpbmcgY2hhcmFjdGVyczsgU2hvdWxkbid0IGhhcHBlbi4uCiAgICBpZiAoICRmaXJzdF9jaGFyICF+IC9bXGRcLlwrXC1FZV0vICkgewogICAgICAgIHdhcm5pbmcoIlByb2dyYW0gYnVnIC0gc2Nhbl9udW1iZXIgZ2l2ZW4gY2hhcmFjdGVyICRmaXJzdF9jaGFyXG4iKTsKICAgICAgICByZXBvcnRfZGVmaW5pdGVfYnVnKCk7CiAgICAgICAgcmV0dXJuICggJGksICR0eXBlLCAkbnVtYmVyICk7CiAgICB9CgogICAgIyBoYW5kbGUgdi1zdHJpbmcgd2l0aG91dCBsZWFkaW5nICd2JyBjaGFyYWN0ZXIgKCdUd28gRG90JyBydWxlKQogICAgIyAodnN0cmluZy50KQogICAgIyBUT0RPOiB2LXN0cmluZ3MgbWF5IGNvbnRhaW4gdW5kZXJzY29yZXMKICAgIHBvcygkaW5wdXRfbGluZSkgPSAkcG9zX2JlZzsKICAgIGlmICggJGlucHV0X2xpbmUgPX4gL1xHKChcZCspP1wuXGQrKFwuXGQrKSspL2cgKSB7CiAgICAgICAgJHBvcyA9IHBvcygkaW5wdXRfbGluZSk7CiAgICAgICAgbXkgJG51bWMgPSAkcG9zIC0gJHBvc19iZWc7CiAgICAgICAgJG51bWJlciA9IHN1YnN0ciggJGlucHV0X2xpbmUsICRwb3NfYmVnLCAkbnVtYyApOwogICAgICAgICR0eXBlICAgPSAndic7CiAgICAgICAgcmVwb3J0X3Zfc3RyaW5nKCRudW1iZXIpOwogICAgfQoKICAgICMgaGFuZGxlIG9jdGFsLCBoZXgsIGJpbmFyeQogICAgaWYgKCAhZGVmaW5lZCgkbnVtYmVyKSApIHsKICAgICAgICBwb3MoJGlucHV0X2xpbmUpID0gJHBvc19iZWc7CiAgICAgICAgaWYgKCAkaW5wdXRfbGluZSA9fgogICAgICAgICAgICAvXEdbKy1dPzAoKFt4WF1bMC05YS1mQS1GX10rKXwoWzAtN19dKyl8KFtiQl1bMDFfXSspKS9nICkKICAgICAgICB7CiAgICAgICAgICAgICRwb3MgPSBwb3MoJGlucHV0X2xpbmUpOwogICAgICAgICAgICBteSAkbnVtYyA9ICRwb3MgLSAkcG9zX2JlZzsKICAgICAgICAgICAgJG51bWJlciA9IHN1YnN0ciggJGlucHV0X2xpbmUsICRwb3NfYmVnLCAkbnVtYyApOwogICAgICAgICAgICAkdHlwZSAgID0gJ24nOwogICAgICAgIH0KICAgIH0KCiAgICAjIGhhbmRsZSBkZWNpbWFsCiAgICBpZiAoICFkZWZpbmVkKCRudW1iZXIpICkgewogICAgICAgIHBvcygkaW5wdXRfbGluZSkgPSAkcG9zX2JlZzsKCiAgICAgICAgaWYgKCAkaW5wdXRfbGluZSA9fiAvXEcoWystXT9bXGRfXSooXC5bXGRfXSopPyhbRWVdWystXT8oXGQrKSk/KS9nICkgewogICAgICAgICAgICAkcG9zID0gcG9zKCRpbnB1dF9saW5lKTsKCiAgICAgICAgICAgICMgd2F0Y2ggb3V0IGZvciB0aGluZ3MgbGlrZSAwLi40MCB3aGljaCB3b3VsZCBnaXZlIDAuIGJ5IHRoaXM7CiAgICAgICAgICAgIGlmICggICAoIHN1YnN0ciggJGlucHV0X2xpbmUsICRwb3MgLSAxLCAxICkgZXEgJy4nICkKICAgICAgICAgICAgICAgICYmICggc3Vic3RyKCAkaW5wdXRfbGluZSwgJHBvcywgMSApIGVxICcuJyApICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHBvcy0tOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG15ICRudW1jID0gJHBvcyAtICRwb3NfYmVnOwogICAgICAgICAgICAkbnVtYmVyID0gc3Vic3RyKCAkaW5wdXRfbGluZSwgJHBvc19iZWcsICRudW1jICk7CiAgICAgICAgICAgICR0eXBlICAgPSAnbic7CiAgICAgICAgfQogICAgfQoKICAgICMgZmlsdGVyIG91dCBub24tbnVtYmVycyBsaWtlIGUgKyAtIC4gZTIgIC5lMyArZTYKICAgICMgdGhlIHJ1bGU6IGF0IGxlYXN0IG9uZSBkaWdpdCwgYW5kIGFueSAnZScgbXVzdCBiZSBwcmVjZWRlZCBieSBhIGRpZ2l0CiAgICBpZiAoCiAgICAgICAgJG51bWJlciAhfiAvXGQvICAgICMgbm8gZGlnaXRzCiAgICAgICAgfHwgKCAgICRudW1iZXIgPX4gL14oLiopW2VFXS8KICAgICAgICAgICAgJiYgJDEgIX4gL1xkLyApICAgICMgb3Igbm8gZGlnaXRzIGJlZm9yZSB0aGUgJ2UnCiAgICAgICkKICAgIHsKICAgICAgICAkbnVtYmVyID0gdW5kZWY7CiAgICAgICAgJHR5cGUgICA9ICRpbnB1dF90eXBlOwogICAgICAgIHJldHVybiAoICRpLCAkdHlwZSwgJG51bWJlciApOwogICAgfQoKICAgICMgRm91bmQgYSBudW1iZXI7IG5vdyB3ZSBtdXN0IGNvbnZlcnQgYmFjayBmcm9tIGNoYXJhY3RlciBwb3NpdGlvbgogICAgIyB0byBwcmVfdG9rZW4gaW5kZXguIEFuIGVycm9yIGhlcmUgaW1wbGllcyB1c2VyIHN5bnRheCBlcnJvci4KICAgICMgQW4gZXhhbXBsZSB3b3VsZCBiZSBhbiBpbnZhbGlkIG9jdGFsIG51bWJlciBsaWtlICcwMDknLgogICAgbXkgJGVycm9yOwogICAgKCAkaSwgJGVycm9yICkgPQogICAgICBpbnZlcnNlX3ByZXRva2VuX21hcCggJGksICRwb3MsICRydG9rZW5fbWFwLCAkbWF4X3Rva2VuX2luZGV4ICk7CiAgICBpZiAoJGVycm9yKSB7IHdhcm5pbmcoIlBvc3NpYmx5IGludmFsaWQgbnVtYmVyXG4iKSB9CgogICAgcmV0dXJuICggJGksICR0eXBlLCAkbnVtYmVyICk7Cn0KCnN1YiBpbnZlcnNlX3ByZXRva2VuX21hcCB7CgogICAgIyBTdGFydGluZyB3aXRoIHRoZSBjdXJyZW50IHByZV90b2tlbiBpbmRleCAkaSwgc2NhbiBmb3J3YXJkIHVudGlsCiAgICAjIGZpbmRpbmcgdGhlIGluZGV4IG9mIHRoZSBuZXh0IHByZV90b2tlbiB3aG9zZSBwb3NpdGlvbiBpcyAkcG9zLgogICAgbXkgKCAkaSwgJHBvcywgJHJ0b2tlbl9tYXAsICRtYXhfdG9rZW5faW5kZXggKSA9IEBfOwogICAgbXkgJGVycm9yID0gMDsKCiAgICB3aGlsZSAoICsrJGkgPD0gJG1heF90b2tlbl9pbmRleCApIHsKCiAgICAgICAgaWYgKCAkcG9zIDw9ICRydG9rZW5fbWFwLT5bJGldICkgewoKICAgICAgICAgICAgIyBMZXQgdGhlIGNhbGxpbmcgcm91dGluZSBoYW5kbGUgZXJyb3JzIGluIHdoaWNoIHdlIGRvIG5vdAogICAgICAgICAgICAjIGxhbmQgb24gYSBwcmUtdG9rZW4gYm91bmRhcnkuICBJdCBjYW4gaGFwcGVuIGJ5IHJ1bm5pbmcKICAgICAgICAgICAgIyBwZXJsdGlkeSBvbiBzb21lIG5vbi1wZXJsIHNjcmlwdHMsIGZvciBleGFtcGxlLgogICAgICAgICAgICBpZiAoICRwb3MgPCAkcnRva2VuX21hcC0+WyRpXSApIHsgJGVycm9yID0gMSB9CiAgICAgICAgICAgICRpLS07CiAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuICggJGksICRlcnJvciApOwp9CgpzdWIgZmluZF9oZXJlX2RvYyB7CgogICAgIyBmaW5kIHRoZSB0YXJnZXQgb2YgYSBoZXJlIGRvY3VtZW50LCBpZiBhbnkKICAgICMgaW5wdXQgcGFyYW1ldGVyczoKICAgICMgICAkaSAtIHRva2VuIGluZGV4IG9mIHRoZSBzZWNvbmQgPCBvZiA8PAogICAgIyAgICgkaSBtdXN0IGJlIGxlc3MgdGhhbiB0aGUgbGFzdCB0b2tlbiBpbmRleCBpZiB0aGlzIGlzIGNhbGxlZCkKICAgICMgb3V0cHV0IHBhcmFtZXRlcnM6CiAgICAjICAgJGZvdW5kX3RhcmdldCA9IDAgZGlkbid0IGZpbmQgdGFyZ2V0OyA9MSBmb3VuZCB0YXJnZXQKICAgICMgICBIRVJFX1RBUkdFVCAtIHRoZSB0YXJnZXQgc3RyaW5nIChtYXkgYmUgZW1wdHkgc3RyaW5nKQogICAgIyAgICRpIC0gdW5jaGFuZ2VkIGlmIG5vdCBoZXJlIGRvYywKICAgICMgICAgb3IgaW5kZXggb2YgdGhlIGxhc3QgdG9rZW4gb2YgdGhlIGhlcmUgdGFyZ2V0CiAgICAjICAgJHNhd19lcnJvciAtIGZsYWcgbm90aW5nIHVuYmFsYW5jZWQgcXVvdGUgb24gaGVyZSB0YXJnZXQKICAgIG15ICggJGV4cGVjdGluZywgJGksICRydG9rZW5zLCAkcnRva2VuX21hcCwgJG1heF90b2tlbl9pbmRleCApID0gQF87CiAgICBteSAkaWJlZyAgICAgICAgICAgICAgICAgPSAkaTsKICAgIG15ICRmb3VuZF90YXJnZXQgICAgICAgICA9IDA7CiAgICBteSAkaGVyZV9kb2NfdGFyZ2V0ICAgICAgPSAnJzsKICAgIG15ICRoZXJlX3F1b3RlX2NoYXJhY3RlciA9ICcnOwogICAgbXkgJHNhd19lcnJvciAgICAgICAgICAgID0gMDsKICAgIG15ICggJG5leHRfbm9uYmxhbmtfdG9rZW4sICRpX25leHRfbm9uYmxhbmssICRuZXh0X3Rva2VuICk7CiAgICAkbmV4dF90b2tlbiA9ICRydG9rZW5zLT5bICRpICsgMSBdOwoKICAgICMgcGVybCBhbGxvd3MgYSBiYWNrc2xhc2ggYmVmb3JlIHRoZSB0YXJnZXQgc3RyaW5nIChoZXJlZG9jLnQpCiAgICBteSAkYmFja3NsYXNoID0gMDsKICAgIGlmICggJG5leHRfdG9rZW4gZXEgJ1xcJyApIHsKICAgICAgICAkYmFja3NsYXNoICA9IDE7CiAgICAgICAgJG5leHRfdG9rZW4gPSAkcnRva2Vucy0+WyAkaSArIDIgXTsKICAgIH0KCiAgICAoICRuZXh0X25vbmJsYW5rX3Rva2VuLCAkaV9uZXh0X25vbmJsYW5rICkgPQogICAgICBmaW5kX25leHRfbm9uYmxhbmtfdG9rZW5fb25fdGhpc19saW5lKCAkaSwgJHJ0b2tlbnMsICRtYXhfdG9rZW5faW5kZXggKTsKCiAgICBpZiAoICRuZXh0X25vbmJsYW5rX3Rva2VuID1+IC9bXCdcIlxgXS8gKSB7CgogICAgICAgIG15ICRpbl9xdW90ZSAgICA9IDE7CiAgICAgICAgbXkgJHF1b3RlX2RlcHRoID0gMDsKICAgICAgICBteSAkcXVvdGVfcG9zICAgPSAwOwogICAgICAgIG15ICRxdW90ZWRfc3RyaW5nOwoKICAgICAgICAoCiAgICAgICAgICAgICRpLCAkaW5fcXVvdGUsICRoZXJlX3F1b3RlX2NoYXJhY3RlciwgJHF1b3RlX3BvcywgJHF1b3RlX2RlcHRoLAogICAgICAgICAgICAkcXVvdGVkX3N0cmluZwogICAgICAgICAgKQogICAgICAgICAgPSBmb2xsb3dfcXVvdGVkX3N0cmluZyggJGlfbmV4dF9ub25ibGFuaywgJGluX3F1b3RlLCAkcnRva2VucywKICAgICAgICAgICAgJGhlcmVfcXVvdGVfY2hhcmFjdGVyLCAkcXVvdGVfcG9zLCAkcXVvdGVfZGVwdGgsICRtYXhfdG9rZW5faW5kZXggKTsKCiAgICAgICAgaWYgKCRpbl9xdW90ZSkgeyAgICAjIGRpZG4ndCBmaW5kIGVuZCBvZiBxdW90ZSwgc28gbm8gdGFyZ2V0IGZvdW5kCiAgICAgICAgICAgICRpID0gJGliZWc7CiAgICAgICAgICAgIGlmICggJGV4cGVjdGluZyA9PSBURVJNICkgewogICAgICAgICAgICAgICAgd2FybmluZygKIkRpZCBub3QgZmluZCBoZXJlLWRvYyBzdHJpbmcgdGVybWluYXRvciAoJGhlcmVfcXVvdGVfY2hhcmFjdGVyKSBiZWZvcmUgZW5kIG9mIGxpbmUgXG4iCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJHNhd19lcnJvciA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAjIGZvdW5kIGVuZGluZyBxdW90ZQogICAgICAgICAgICAkZm91bmRfdGFyZ2V0ID0gMTsKCiAgICAgICAgICAgIG15ICR0b2tqOwogICAgICAgICAgICBmb3JlYWNoIG15ICRqICggJGlfbmV4dF9ub25ibGFuayArIDEgLi4gJGkgLSAxICkgewogICAgICAgICAgICAgICAgJHRva2ogPSAkcnRva2Vucy0+WyRqXTsKCiAgICAgICAgICAgICAgICAjIHdlIGhhdmUgdG8gcmVtb3ZlIGFueSBiYWNrc2xhc2ggYmVmb3JlIHRoZSBxdW90ZSBjaGFyYWN0ZXIKICAgICAgICAgICAgICAgICMgc28gdGhhdCB0aGUgaGVyZS1kb2MtdGFyZ2V0IGV4YWN0bHkgbWF0Y2hlcyB0aGlzIHN0cmluZwogICAgICAgICAgICAgICAgbmV4dAogICAgICAgICAgICAgICAgICBpZiAoICR0b2tqIGVxICJcXCIKICAgICAgICAgICAgICAgICAgICAmJiAkaiA8ICRpIC0gMQogICAgICAgICAgICAgICAgICAgICYmICRydG9rZW5zLT5bICRqICsgMSBdIGVxICRoZXJlX3F1b3RlX2NoYXJhY3RlciApOwogICAgICAgICAgICAgICAgJGhlcmVfZG9jX3RhcmdldCAuPSAkdG9rajsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBlbHNpZiAoICggJG5leHRfdG9rZW4gPX4gL15ccyokLyApIGFuZCAoICRleHBlY3RpbmcgPT0gVEVSTSApICkgewogICAgICAgICRmb3VuZF90YXJnZXQgPSAxOwogICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoCiAgICAgICAgICAgICJmb3VuZCBibGFuayBoZXJlLXRhcmdldCBhZnRlciA8PDsgc3VnZ2VzdCB1c2luZyBcIlwiXG4iKTsKICAgICAgICAkaSA9ICRpYmVnOwogICAgfQogICAgZWxzaWYgKCAkbmV4dF90b2tlbiA9fiAvXlx3LyApIHsgICAgIyBzaW1wbGUgYmFyZXdvcmQgb3IgaW50ZWdlciBhZnRlciA8PAoKICAgICAgICBteSAkaGVyZV9kb2NfZXhwZWN0ZWQ7CiAgICAgICAgaWYgKCAkZXhwZWN0aW5nID09IFVOS05PV04gKSB7CiAgICAgICAgICAgICRoZXJlX2RvY19leHBlY3RlZCA9IGd1ZXNzX2lmX2hlcmVfZG9jKCRuZXh0X3Rva2VuKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRoZXJlX2RvY19leHBlY3RlZCA9IDE7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGhlcmVfZG9jX2V4cGVjdGVkKSB7CiAgICAgICAgICAgICRmb3VuZF90YXJnZXQgICAgPSAxOwogICAgICAgICAgICAkaGVyZV9kb2NfdGFyZ2V0ID0gJG5leHRfdG9rZW47CiAgICAgICAgICAgICRpICAgICAgICAgICAgICAgPSAkaWJlZyArIDE7CiAgICAgICAgfQoKICAgIH0KICAgIGVsc2UgewoKICAgICAgICBpZiAoICRleHBlY3RpbmcgPT0gVEVSTSApIHsKICAgICAgICAgICAgJGZvdW5kX3RhcmdldCA9IDE7CiAgICAgICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoIk5vdGU6IGJhcmUgaGVyZS1kb2Mgb3BlcmF0b3IgPDxcbiIpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJGkgPSAkaWJlZzsKICAgICAgICB9CiAgICB9CgogICAgIyBwYXRjaCB0byBuZWdsZWN0IGFueSBwcmVwZW5kZWQgYmFja3NsYXNoCiAgICBpZiAoICRmb3VuZF90YXJnZXQgJiYgJGJhY2tzbGFzaCApIHsgJGkrKyB9CgogICAgcmV0dXJuICggJGZvdW5kX3RhcmdldCwgJGhlcmVfZG9jX3RhcmdldCwgJGhlcmVfcXVvdGVfY2hhcmFjdGVyLCAkaSwKICAgICAgICAkc2F3X2Vycm9yICk7Cn0KCnN1YiBkb19xdW90ZSB7CgogICAgIyBmb2xsb3cgKG9yIGNvbnRpbnVlIGZvbGxvd2luZykgcXVvdGVkIHN0cmluZyhzKQogICAgIyAkaW5fcXVvdGUgcmV0dXJuIGNvZGU6CiAgICAjICAgMCAtIG9rLCBmb3VuZCBlbmQKICAgICMgICAxIC0gc3RpbGwgbXVzdCBmaW5kIGVuZCBvZiBxdW90ZSB3aG9zZSB0YXJnZXQgaXMgJHF1b3RlX2NoYXJhY3RlcgogICAgIyAgIDIgLSBzdGlsbCBsb29raW5nIGZvciBlbmQgb2YgZmlyc3Qgb2YgdHdvIHF1b3RlcwogICAgIwogICAgIyBSZXR1cm5zIHVwZGF0ZWQgc3RyaW5nczoKICAgICMgICRxdW90ZWRfc3RyaW5nXzEgPSBxdW90ZWQgc3RyaW5nIHNlZW4gd2hpbGUgaW5fcXVvdGU9MQogICAgIyAgJHF1b3RlZF9zdHJpbmdfMiA9IHF1b3RlZCBzdHJpbmcgc2VlbiB3aGlsZSBpbl9xdW90ZT0yCiAgICBteSAoCiAgICAgICAgJGksICAgICAgICAgICAgICAgJGluX3F1b3RlLCAgICAkcXVvdGVfY2hhcmFjdGVyLAogICAgICAgICRxdW90ZV9wb3MsICAgICAgICRxdW90ZV9kZXB0aCwgJHF1b3RlZF9zdHJpbmdfMSwKICAgICAgICAkcXVvdGVkX3N0cmluZ18yLCAkcnRva2VucywgICAgICRydG9rZW5fbWFwLAogICAgICAgICRtYXhfdG9rZW5faW5kZXgKICAgICkgPSBAXzsKCiAgICBteSAkaW5fcXVvdGVfc3RhcnRpbmcgPSAkaW5fcXVvdGU7CgogICAgbXkgJHF1b3RlZF9zdHJpbmc7CiAgICBpZiAoICRpbl9xdW90ZSA9PSAyICkgeyAgICAjIHR3byBxdW90ZXMvcXVvdGVkX3N0cmluZ18xcyB0byBmb2xsb3cKICAgICAgICBteSAkaWJlZyA9ICRpOwogICAgICAgICgKICAgICAgICAgICAgJGksICRpbl9xdW90ZSwgJHF1b3RlX2NoYXJhY3RlciwgJHF1b3RlX3BvcywgJHF1b3RlX2RlcHRoLAogICAgICAgICAgICAkcXVvdGVkX3N0cmluZwogICAgICAgICAgKQogICAgICAgICAgPSBmb2xsb3dfcXVvdGVkX3N0cmluZyggJGksICRpbl9xdW90ZSwgJHJ0b2tlbnMsICRxdW90ZV9jaGFyYWN0ZXIsCiAgICAgICAgICAgICRxdW90ZV9wb3MsICRxdW90ZV9kZXB0aCwgJG1heF90b2tlbl9pbmRleCApOwogICAgICAgICRxdW90ZWRfc3RyaW5nXzIgLj0gJHF1b3RlZF9zdHJpbmc7CiAgICAgICAgaWYgKCAkaW5fcXVvdGUgPT0gMSApIHsKICAgICAgICAgICAgaWYgKCAkcXVvdGVfY2hhcmFjdGVyID1+IC9bXHtcW1w8XChdLyApIHsgJGkrKzsgfQogICAgICAgICAgICAkcXVvdGVfY2hhcmFjdGVyID0gJyc7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkcXVvdGVkX3N0cmluZ18yIC49ICJcbiI7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJGluX3F1b3RlID09IDEgKSB7ICAgICMgb25lIChtb3JlKSBxdW90ZSB0byBmb2xsb3cKICAgICAgICBteSAkaWJlZyA9ICRpOwogICAgICAgICgKICAgICAgICAgICAgJGksICRpbl9xdW90ZSwgJHF1b3RlX2NoYXJhY3RlciwgJHF1b3RlX3BvcywgJHF1b3RlX2RlcHRoLAogICAgICAgICAgICAkcXVvdGVkX3N0cmluZwogICAgICAgICAgKQogICAgICAgICAgPSBmb2xsb3dfcXVvdGVkX3N0cmluZyggJGliZWcsICRpbl9xdW90ZSwgJHJ0b2tlbnMsICRxdW90ZV9jaGFyYWN0ZXIsCiAgICAgICAgICAgICRxdW90ZV9wb3MsICRxdW90ZV9kZXB0aCwgJG1heF90b2tlbl9pbmRleCApOwogICAgICAgICRxdW90ZWRfc3RyaW5nXzEgLj0gJHF1b3RlZF9zdHJpbmc7CiAgICAgICAgaWYgKCAkaW5fcXVvdGUgPT0gMSApIHsKICAgICAgICAgICAgJHF1b3RlZF9zdHJpbmdfMSAuPSAiXG4iOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAoICRpLCAkaW5fcXVvdGUsICRxdW90ZV9jaGFyYWN0ZXIsICRxdW90ZV9wb3MsICRxdW90ZV9kZXB0aCwKICAgICAgICAkcXVvdGVkX3N0cmluZ18xLCAkcXVvdGVkX3N0cmluZ18yICk7Cn0KCnN1YiBmb2xsb3dfcXVvdGVkX3N0cmluZyB7CgogICAgIyBzY2FuIGZvciBhIHNwZWNpZmljIHRva2VuLCBza2lwcGluZyBlc2NhcGVkIGNoYXJhY3RlcnMKICAgICMgaWYgdGhlIHF1b3RlIGNoYXJhY3RlciBpcyBibGFuaywgdXNlIHRoZSBmaXJzdCBub24tYmxhbmsgY2hhcmFjdGVyCiAgICAjIGlucHV0IHBhcmFtZXRlcnM6CiAgICAjICAgJHJ0b2tlbnMgPSByZWZlcmVuY2UgdG8gdGhlIGFycmF5IG9mIHRva2VucwogICAgIyAgICRpID0gdGhlIHRva2VuIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgdG8gc2VhcmNoCiAgICAjICAgJGluX3F1b3RlID0gbnVtYmVyIG9mIHF1b3RlZCBzdHJpbmdzIGJlaW5nIGZvbGxvd2VkCiAgICAjICAgJGJlZ2lubmluZ190b2sgPSB0aGUgc3RhcnRpbmcgcXVvdGUgY2hhcmFjdGVyCiAgICAjICAgJHF1b3RlX3BvcyA9IGluZGV4IHRvIGNoZWNrIG5leHQgZm9yIGFscGhhbnVtZXJpYyBkZWxpbWl0ZXIKICAgICMgb3V0cHV0IHBhcmFtZXRlcnM6CiAgICAjICAgJGkgPSB0aGUgdG9rZW4gaW5kZXggb2YgdGhlIGVuZGluZyBxdW90ZSBjaGFyYWN0ZXIKICAgICMgICAkaW5fcXVvdGUgPSBkZWNyZW1lbnRlZCBpZiBmb3VuZCBlbmQsIHVuY2hhbmdlZCBpZiBub3QKICAgICMgICAkYmVnaW5uaW5nX3RvayA9IHRoZSBzdGFydGluZyBxdW90ZSBjaGFyYWN0ZXIKICAgICMgICAkcXVvdGVfcG9zID0gaW5kZXggdG8gY2hlY2sgbmV4dCBmb3IgYWxwaGFudW1lcmljIGRlbGltaXRlcgogICAgIyAgICRxdW90ZV9kZXB0aCA9IG5lc3RpbmcgZGVwdGgsIHNpbmNlIGRlbGltaXRlcnMgJ3sgKCBbIDwnIGNhbiBiZSBuZXN0ZWQuCiAgICAjICAgJHF1b3RlZF9zdHJpbmcgPSB0aGUgdGV4dCBvZiB0aGUgcXVvdGUgKHdpdGhvdXQgcXVvdGF0aW9uIHRva2VucykKICAgIG15ICggJGlfYmVnLCAkaW5fcXVvdGUsICRydG9rZW5zLCAkYmVnaW5uaW5nX3RvaywgJHF1b3RlX3BvcywgJHF1b3RlX2RlcHRoLAogICAgICAgICRtYXhfdG9rZW5faW5kZXggKQogICAgICA9IEBfOwogICAgbXkgKCAkdG9rLCAkZW5kX3RvayApOwogICAgbXkgJGkgICAgICAgICAgICAgPSAkaV9iZWcgLSAxOwogICAgbXkgJHF1b3RlZF9zdHJpbmcgPSAiIjsKCiAgICBUT0tFTklaRVJfREVCVUdfRkxBR19RVU9URSAmJiBkbyB7CiAgICAgICAgcHJpbnQgU1RET1VUCiJRVU9URSBlbnRlcmluZyB3aXRoIHF1b3RlX3BvcyA9ICRxdW90ZV9wb3MgaT0kaSBiZWdpbm5pbmdfdG9rID0kYmVnaW5uaW5nX3Rva1xuIjsKICAgIH07CgogICAgIyBnZXQgdGhlIGNvcnJlc3BvbmRpbmcgZW5kIHRva2VuCiAgICBpZiAoICRiZWdpbm5pbmdfdG9rICF+IC9eXHMqJC8gKSB7CiAgICAgICAgJGVuZF90b2sgPSBtYXRjaGluZ19lbmRfdG9rZW4oJGJlZ2lubmluZ190b2spOwogICAgfQoKICAgICMgYSBibGFuayB0b2tlbiBtZWFucyB3ZSBtdXN0IGZpbmQgYW5kIHVzZSB0aGUgZmlyc3Qgbm9uLWJsYW5rIG9uZQogICAgZWxzZSB7CiAgICAgICAgbXkgJGFsbG93X3F1b3RlX2NvbW1lbnRzID0gKCAkaSA8IDAgKSA/IDEgOiAwOyAjIGk8MCBtZWFucyB3ZSBzYXcgYSA8Y3I+CgogICAgICAgIHdoaWxlICggJGkgPCAkbWF4X3Rva2VuX2luZGV4ICkgewogICAgICAgICAgICAkdG9rID0gJHJ0b2tlbnMtPlsgKyskaSBdOwoKICAgICAgICAgICAgaWYgKCAkdG9rICF+IC9eXHMqJC8gKSB7CgogICAgICAgICAgICAgICAgaWYgKCAoICR0b2sgZXEgJyMnICkgJiYgKCRhbGxvd19xdW90ZV9jb21tZW50cykgKSB7CiAgICAgICAgICAgICAgICAgICAgJGkgPSAkbWF4X3Rva2VuX2luZGV4OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgIGlmICggbGVuZ3RoKCR0b2spID4gMSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkcXVvdGVfcG9zIDw9IDAgKSB7ICRxdW90ZV9wb3MgPSAxIH0KICAgICAgICAgICAgICAgICAgICAgICAgJGJlZ2lubmluZ190b2sgPSBzdWJzdHIoICR0b2ssICRxdW90ZV9wb3MgLSAxLCAxICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkYmVnaW5uaW5nX3RvayA9ICR0b2s7CiAgICAgICAgICAgICAgICAgICAgICAgICRxdW90ZV9wb3MgICAgID0gMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJGVuZF90b2sgICAgID0gbWF0Y2hpbmdfZW5kX3Rva2VuKCRiZWdpbm5pbmdfdG9rKTsKICAgICAgICAgICAgICAgICAgICAkcXVvdGVfZGVwdGggPSAxOwogICAgICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkYWxsb3dfcXVvdGVfY29tbWVudHMgPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgVGhlcmUgYXJlIHR3byBkaWZmZXJlbnQgbG9vcHMgd2hpY2ggc2VhcmNoIGZvciB0aGUgZW5kaW5nIHF1b3RlCiAgICAjIGNoYXJhY3Rlci4gIEluIHRoZSByYXJlIGNhc2Ugb2YgYW4gYWxwaGFudW1lcmljIHF1b3RlIGRlbGltaXRlciwgd2UKICAgICMgaGF2ZSB0byBsb29rIHRocm91Z2ggYWxwaGFudW1lcmljIHRva2VucyBjaGFyYWN0ZXItYnktY2hhcmFjdGVyLCBzaW5jZQogICAgIyB0aGUgcHJlLXRva2VuaXphdGlvbiBwcm9jZXNzIGNvbWJpbmVzIG11bHRpcGxlIGFscGhhbnVtZXJpYwogICAgIyBjaGFyYWN0ZXJzLCB3aGVyZWFzIGZvciBhIG5vbi1hbHBoYW51bWVyaWMgZGVsaW1pdGVyLCBvbmx5IHRva2VucyBvZgogICAgIyBsZW5ndGggMSBjYW4gbWF0Y2guCgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBDYXNlIDEgKHJhcmUpOiBsb29wIGZvciBjYXNlIG9mIGFscGhhbnVtZXJpYyBxdW90ZSBkZWxpbWl0ZXIuLgogICAgIyAicXVvdGVfcG9zIiBpcyB0aGUgcG9zaXRpb24gdGhlIGN1cnJlbnQgd29yZCB0byBiZWdpbiBzZWFyY2hpbmcKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgIGlmICggJGJlZ2lubmluZ190b2sgPX4gL1x3LyApIHsKCiAgICAgICAgIyBOb3RlIHRoaXMgYmVjYXVzZSBpdCBpcyBub3QgcmVjb21tZW5kZWQgcHJhY3RpY2UgZXhjZXB0CiAgICAgICAgIyBmb3Igb2JmdXNjYXRlZCBwZXJsIGNvbnRlc3RzCiAgICAgICAgaWYgKCAkaW5fcXVvdGUgPT0gMSApIHsKICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgKICAgICAgICAgICAgICAgICJOb3RlOiBhbHBoYW51bWVyaWMgcXVvdGUgZGVsaW1pdGVyICgkYmVnaW5uaW5nX3RvaykgXG4iKTsKICAgICAgICB9CgogICAgICAgIHdoaWxlICggJGkgPCAkbWF4X3Rva2VuX2luZGV4ICkgewoKICAgICAgICAgICAgaWYgKCAkcXVvdGVfcG9zID09IDAgfHwgKCAkaSA8IDAgKSApIHsKICAgICAgICAgICAgICAgICR0b2sgPSAkcnRva2Vucy0+WyArKyRpIF07CgogICAgICAgICAgICAgICAgaWYgKCAkdG9rIGVxICdcXCcgKSB7CgogICAgICAgICAgICAgICAgICAgICMgcmV0YWluIGJhY2tzbGFzaCB1bmxlc3MgaXQgaGlkZXMgdGhlIGVuZCB0b2tlbgogICAgICAgICAgICAgICAgICAgICRxdW90ZWRfc3RyaW5nIC49ICR0b2sKICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyAkcnRva2Vucy0+WyAkaSArIDEgXSBlcSAkZW5kX3RvazsKICAgICAgICAgICAgICAgICAgICAkcXVvdGVfcG9zKys7CiAgICAgICAgICAgICAgICAgICAgbGFzdCBpZiAoICRpID49ICRtYXhfdG9rZW5faW5kZXggKTsKICAgICAgICAgICAgICAgICAgICAkdG9rID0gJHJ0b2tlbnMtPlsgKyskaSBdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIG15ICRvbGRfcG9zID0gJHF1b3RlX3BvczsKCiAgICAgICAgICAgIHVubGVzcyAoIGRlZmluZWQoJHRvaykgJiYgZGVmaW5lZCgkZW5kX3RvaykgJiYgZGVmaW5lZCgkcXVvdGVfcG9zKSApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHF1b3RlX3BvcyA9IDEgKyBpbmRleCggJHRvaywgJGVuZF90b2ssICRxdW90ZV9wb3MgKTsKCiAgICAgICAgICAgIGlmICggJHF1b3RlX3BvcyA+IDAgKSB7CgogICAgICAgICAgICAgICAgJHF1b3RlZF9zdHJpbmcgLj0KICAgICAgICAgICAgICAgICAgc3Vic3RyKCAkdG9rLCAkb2xkX3BvcywgJHF1b3RlX3BvcyAtICRvbGRfcG9zIC0gMSApOwoKICAgICAgICAgICAgICAgICRxdW90ZV9kZXB0aC0tOwoKICAgICAgICAgICAgICAgIGlmICggJHF1b3RlX2RlcHRoID09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgJGluX3F1b3RlLS07CiAgICAgICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRxdW90ZWRfc3RyaW5nIC49IHN1YnN0ciggJHRvaywgJG9sZF9wb3MgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMgQ2FzZSAyIChub3JtYWwpOiBsb29wIGZvciBjYXNlIG9mIGEgbm9uLWFscGhhbnVtZXJpYyBxdW90ZSBkZWxpbWl0ZXIuLgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICBlbHNlIHsKCiAgICAgICAgd2hpbGUgKCAkaSA8ICRtYXhfdG9rZW5faW5kZXggKSB7CiAgICAgICAgICAgICR0b2sgPSAkcnRva2Vucy0+WyArKyRpIF07CgogICAgICAgICAgICBpZiAoICR0b2sgZXEgJGVuZF90b2sgKSB7CiAgICAgICAgICAgICAgICAkcXVvdGVfZGVwdGgtLTsKCiAgICAgICAgICAgICAgICBpZiAoICRxdW90ZV9kZXB0aCA9PSAwICkgewogICAgICAgICAgICAgICAgICAgICRpbl9xdW90ZS0tOwogICAgICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkdG9rIGVxICRiZWdpbm5pbmdfdG9rICkgewogICAgICAgICAgICAgICAgJHF1b3RlX2RlcHRoKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkdG9rIGVxICdcXCcgKSB7CgogICAgICAgICAgICAgICAgIyByZXRhaW4gYmFja3NsYXNoIHVubGVzcyBpdCBoaWRlcyB0aGUgYmVnaW5uaW5nIG9yIGVuZCB0b2tlbgogICAgICAgICAgICAgICAgJHRvayA9ICRydG9rZW5zLT5bICsrJGkgXTsKICAgICAgICAgICAgICAgICRxdW90ZWRfc3RyaW5nIC49ICdcXCcKICAgICAgICAgICAgICAgICAgdW5sZXNzICggJHRvayBlcSAkZW5kX3RvayB8fCAkdG9rIGVxICRiZWdpbm5pbmdfdG9rICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHF1b3RlZF9zdHJpbmcgLj0gJHRvazsKICAgICAgICB9CiAgICB9CiAgICBpZiAoICRpID4gJG1heF90b2tlbl9pbmRleCApIHsgJGkgPSAkbWF4X3Rva2VuX2luZGV4IH0KICAgIHJldHVybiAoICRpLCAkaW5fcXVvdGUsICRiZWdpbm5pbmdfdG9rLCAkcXVvdGVfcG9zLCAkcXVvdGVfZGVwdGgsCiAgICAgICAgJHF1b3RlZF9zdHJpbmcgKTsKfQoKc3ViIGluZGljYXRlX2Vycm9yIHsKICAgIG15ICggJG1zZywgJGxpbmVfbnVtYmVyLCAkaW5wdXRfbGluZSwgJHBvcywgJGNhcnJhdCApID0gQF87CiAgICBpbnRlcnJ1cHRfbG9nZmlsZSgpOwogICAgd2FybmluZygkbXNnKTsKICAgIHdyaXRlX2Vycm9yX2luZGljYXRvcl9wYWlyKCAkbGluZV9udW1iZXIsICRpbnB1dF9saW5lLCAkcG9zLCAkY2FycmF0ICk7CiAgICByZXN1bWVfbG9nZmlsZSgpOwogICAgcmV0dXJuOwp9CgpzdWIgd3JpdGVfZXJyb3JfaW5kaWNhdG9yX3BhaXIgewogICAgbXkgKCAkbGluZV9udW1iZXIsICRpbnB1dF9saW5lLCAkcG9zLCAkY2FycmF0ICkgPSBAXzsKICAgIG15ICggJG9mZnNldCwgJG51bWJlcmVkX2xpbmUsICR1bmRlcmxpbmUgKSA9CiAgICAgIG1ha2VfbnVtYmVyZWRfbGluZSggJGxpbmVfbnVtYmVyLCAkaW5wdXRfbGluZSwgJHBvcyApOwogICAgJHVuZGVybGluZSA9IHdyaXRlX29uX3VuZGVybGluZSggJHVuZGVybGluZSwgJHBvcyAtICRvZmZzZXQsICRjYXJyYXQgKTsKICAgIHdhcm5pbmcoICRudW1iZXJlZF9saW5lIC4gIlxuIiApOwogICAgJHVuZGVybGluZSA9fiBzL1xzKiQvLzsKICAgIHdhcm5pbmcoICR1bmRlcmxpbmUgLiAiXG4iICk7CiAgICByZXR1cm47Cn0KCnN1YiBtYWtlX251bWJlcmVkX2xpbmUgewoKICAgICMgIEdpdmVuIGFuIGlucHV0IGxpbmUsIGl0cyBsaW5lIG51bWJlciwgYW5kIGEgY2hhcmFjdGVyIHBvc2l0aW9uIG9mCiAgICAjICBpbnRlcmVzdCwgY3JlYXRlIGEgc3RyaW5nIG5vdCBsb25nZXIgdGhhbiA4MCBjaGFyYWN0ZXJzIG9mIHRoZSBmb3JtCiAgICAjICAgICAkbGluZW5vOiBzdWJfc3RyaW5nCiAgICAjICBzdWNoIHRoYXQgdGhlIHN1Yl9zdHJpbmcgb2YgJHN0ciBjb250YWlucyB0aGUgcG9zaXRpb24gb2YgaW50ZXJlc3QKICAgICMKICAgICMgIEhlcmUgaXMgYW4gZXhhbXBsZSBvZiB3aGF0IHdlIHdhbnQsIGluIHRoaXMgY2FzZSB3ZSBhZGQgdHJhaWxpbmcKICAgICMgICcuLi4nIGJlY2F1c2UgdGhlIGxpbmUgaXMgbG9uZy4KICAgICMKICAgICMgMjogKE9uZSBvZiBRQU1MIDIuMCdzIGF1dGhvcnMgaXMgYSBtZW1iZXIgb2YgdGhlIFdvcmxkIFdpZGUgV2ViIENvbiAuLi4KICAgICMKICAgICMgIEhlcmUgaXMgYW5vdGhlciBleGFtcGxlLCB0aGlzIHRpbWUgaW4gd2hpY2ggd2UgdXNlZCBsZWFkaW5nICcuLi4nCiAgICAjICBiZWNhdXNlIG9mIGV4Y2Vzc2l2ZSBsZW5ndGg6CiAgICAjCiAgICAjIDI6IC4uLiBlciBvZiB0aGUgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSdzCiAgICAjCiAgICAjICBpbnB1dCBwYXJhbWV0ZXJzIGFyZToKICAgICMgICAkbGluZW5vID0gbGluZSBudW1iZXIKICAgICMgICAkc3RyID0gdGhlIHRleHQgb2YgdGhlIGxpbmUKICAgICMgICAkcG9zID0gcG9zaXRpb24gb2YgaW50ZXJlc3QgKHRoZSBlcnJvcikgOiAwID0gZmlyc3QgY2hhcmFjdGVyCiAgICAjCiAgICAjICAgV2UgcmV0dXJuIDoKICAgICMgICAgIC0gJG9mZnNldCA9IGFuIG9mZnNldCB3aGljaCBjb3JyZWN0cyB0aGUgcG9zaXRpb24gaW4gY2FzZSB3ZSBvbmx5CiAgICAjICAgICAgIGRpc3BsYXkgcGFydCBvZiBhIGxpbmUsIHN1Y2ggdGhhdCAkcG9zLSRvZmZzZXQgaXMgdGhlIGVmZmVjdGl2ZQogICAgIyAgICAgICBwb3NpdGlvbiBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZGlzcGxheWVkIGxpbmUuCiAgICAjICAgICAtICRudW1iZXJlZF9saW5lID0gdGhlIG51bWJlcmVkIGxpbmUgYXMgYWJvdmUsCiAgICAjICAgICAtICR1bmRlcmxpbmUgPSBhIGJsYW5rICd1bmRlcmxpbmUnIHdoaWNoIGlzIGFsbCBzcGFjZXMgd2l0aCB0aGUgc2FtZQogICAgIyAgICAgICBudW1iZXIgb2YgY2hhcmFjdGVycyBhcyB0aGUgbnVtYmVyZWQgbGluZS4KCiAgICBteSAoICRsaW5lbm8sICRzdHIsICRwb3MgKSA9IEBfOwogICAgbXkgJG9mZnNldCA9ICggJHBvcyA8IDYwICkgPyAwIDogJHBvcyAtIDQwOwogICAgbXkgJGV4Y2VzcyA9IGxlbmd0aCgkc3RyKSAtICRvZmZzZXQgLSA2ODsKICAgIG15ICRudW1jICAgPSAoICRleGNlc3MgPiAwICkgPyA2OCA6IHVuZGVmOwoKICAgIGlmICggZGVmaW5lZCgkbnVtYykgKSB7CiAgICAgICAgaWYgKCAkb2Zmc2V0ID09IDAgKSB7CiAgICAgICAgICAgICRzdHIgPSBzdWJzdHIoICRzdHIsICRvZmZzZXQsICRudW1jIC0gNCApIC4gIiAuLi4iOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJHN0ciA9ICIuLi4gIiAuIHN1YnN0ciggJHN0ciwgJG9mZnNldCArIDQsICRudW1jIC0gNCApIC4gIiAuLi4iOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewoKICAgICAgICBpZiAoICRvZmZzZXQgPT0gMCApIHsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRzdHIgPSAiLi4uICIgLiBzdWJzdHIoICRzdHIsICRvZmZzZXQgKyA0ICk7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRudW1iZXJlZF9saW5lID0gc3ByaW50ZiggIiVkOiAiLCAkbGluZW5vICk7CiAgICAkb2Zmc2V0IC09IGxlbmd0aCgkbnVtYmVyZWRfbGluZSk7CiAgICAkbnVtYmVyZWRfbGluZSAuPSAkc3RyOwogICAgbXkgJHVuZGVybGluZSA9ICIgIiB4IGxlbmd0aCgkbnVtYmVyZWRfbGluZSk7CiAgICByZXR1cm4gKCAkb2Zmc2V0LCAkbnVtYmVyZWRfbGluZSwgJHVuZGVybGluZSApOwp9CgpzdWIgd3JpdGVfb25fdW5kZXJsaW5lIHsKCiAgICAjIFRoZSAidW5kZXJsaW5lIiBpcyBhIHN0cmluZyB0aGF0IHNob3dzIHdoZXJlIGFuIGVycm9yIGlzOyBpdCBzdGFydHMKICAgICMgb3V0IGFzIGEgc3RyaW5nIG9mIGJsYW5rcyB3aXRoIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgbnVtYmVyZWQgbGluZSBvZgogICAgIyBjb2RlIGFib3ZlIGl0LCBhbmQgd2UgaGF2ZSB0byBhZGQgbWFya2luZyB0byBzaG93IHdoZXJlIGFuIGVycm9yIGlzLgogICAgIyBJbiB0aGUgZXhhbXBsZSBiZWxvdywgd2Ugd2FudCB0byB3cml0ZSB0aGUgc3RyaW5nICctLV4nIGp1c3QgYmVsb3cKICAgICMgdGhlIGxpbmUgb2YgYmFkIGNvZGU6CiAgICAjCiAgICAjIDI6IChPbmUgb2YgUUFNTCAyLjAncyBhdXRob3JzIGlzIGEgbWVtYmVyIG9mIHRoZSBXb3JsZCBXaWRlIFdlYiBDb24gLi4uCiAgICAjICAgICAgICAgICAgICAgICAtLS1eCiAgICAjIFdlIGFyZSBnaXZlbiB0aGUgY3VycmVudCB1bmRlcmxpbmUgc3RyaW5nLCBwbHVzIGEgcG9zaXRpb24gYW5kIGEKICAgICMgc3RyaW5nIHRvIHdyaXRlIG9uIGl0LgogICAgIwogICAgIyBJbiB0aGUgYWJvdmUgZXhhbXBsZSwgdGhlcmUgd2lsbCBiZSAyIGNhbGxzIHRvIGRvIHRoaXM6CiAgICAjIEZpcnN0IGNhbGw6ICAkcG9zPTE5LCBwb3NfY2hyPV4KICAgICMgU2Vjb25kIGNhbGw6ICRwb3M9MTYsIHBvc19jaHI9LS0tCiAgICAjCiAgICAjIFRoaXMgaXMgYSB0cml2aWFsIHRoaW5nIHRvIGRvIHdpdGggc3Vic3RyLCBidXQgdGhlcmUgaXMgc29tZQogICAgIyBjaGVja2luZyB0byBkby4KCiAgICBteSAoICR1bmRlcmxpbmUsICRwb3MsICRwb3NfY2hyICkgPSBAXzsKCiAgICAjIGNoZWNrIGZvciBlcnJvci4uc2hvdWxkbid0IGhhcHBlbgogICAgdW5sZXNzICggKCAkcG9zID49IDAgKSAmJiAoICRwb3MgPD0gbGVuZ3RoKCR1bmRlcmxpbmUpICkgKSB7CiAgICAgICAgcmV0dXJuICR1bmRlcmxpbmU7CiAgICB9CiAgICBteSAkZXhjZXNzID0gbGVuZ3RoKCRwb3NfY2hyKSArICRwb3MgLSBsZW5ndGgoJHVuZGVybGluZSk7CiAgICBpZiAoICRleGNlc3MgPiAwICkgewogICAgICAgICRwb3NfY2hyID0gc3Vic3RyKCAkcG9zX2NociwgMCwgbGVuZ3RoKCRwb3NfY2hyKSAtICRleGNlc3MgKTsKICAgIH0KICAgIHN1YnN0ciggJHVuZGVybGluZSwgJHBvcywgbGVuZ3RoKCRwb3NfY2hyKSApID0gJHBvc19jaHI7CiAgICByZXR1cm4gKCR1bmRlcmxpbmUpOwp9CgpzdWIgcHJlX3Rva2VuaXplIHsKCiAgICAjIEJyZWFrIGEgc3RyaW5nLCAkc3RyLCBpbnRvIGEgc2VxdWVuY2Ugb2YgcHJlbGltaW5hcnkgdG9rZW5zLiAgV2UKICAgICMgYXJlIGludGVyZXN0ZWQgaW4gdGhlc2UgdHlwZXMgb2YgdG9rZW5zOgogICAgIyAgIHdvcmRzICAgICAgICh0eXBlPSd3JyksICAgICAgICAgICAgZXhhbXBsZTogJ21heF90b2tlbnNfd2FudGVkJwogICAgIyAgIGRpZ2l0cyAgICAgICh0eXBlID0gJ2QnKSwgICAgICAgICAgZXhhbXBsZTogJzA3NTUnCiAgICAjICAgd2hpdGVzcGFjZSAgKHR5cGUgPSAnYicpLCAgICAgICAgICBleGFtcGxlOiAnICAgJwogICAgIyAgIGFueSBvdGhlciBzaW5nbGUgY2hhcmFjdGVyIChpLmUuIHB1bmN0OyB0eXBlID0gdGhlIGNoYXJhY3RlciBpdHNlbGYpLgogICAgIyBXZSBjYW5ub3QgZG8gYmV0dGVyIHRoYW4gdGhpcyB5ZXQgYmVjYXVzZSB3ZSBtaWdodCBiZSBpbiBhIHF1b3RlZAogICAgIyBzdHJpbmcgb3IgcGF0dGVybi4gIENhbGxlciBzZXRzICRtYXhfdG9rZW5zX3dhbnRlZCB0byAwIHRvIGdldCBhbGwKICAgICMgdG9rZW5zLgogICAgbXkgKCAkc3RyLCAkbWF4X3Rva2Vuc193YW50ZWQgKSA9IEBfOwoKICAgICMgd2UgcmV0dXJuIHJlZmVyZW5jZXMgdG8gdGhlc2UgMyBhcnJheXM6CiAgICBteSBAdG9rZW5zICAgID0gKCk7ICAgICAjIGFycmF5IG9mIHRoZSB0b2tlbnMgdGhlbXNlbHZlcwogICAgbXkgQHRva2VuX21hcCA9ICgwKTsgICAgIyBzdHJpbmcgcG9zaXRpb24gb2Ygc3RhcnQgb2YgZWFjaCB0b2tlbgogICAgbXkgQHR5cGUgICAgICA9ICgpOyAgICAgIyAnYic9d2hpdGVzcGFjZSwgJ2QnPWRpZ2l0cywgJ3cnPWFscGhhLCBvciBwdW5jdAoKICAgIGRvIHsKCiAgICAgICAgIyB3aGl0ZXNwYWNlCiAgICAgICAgaWYgKCAkc3RyID1+IC9cRyhccyspL2djICkgeyBwdXNoIEB0eXBlLCAnYic7IH0KCiAgICAgICAgIyBudW1iZXJzCiAgICAgICAgIyBub3RlIHRoYXQgdGhpcyBtdXN0IGNvbWUgYmVmb3JlIHdvcmRzIQogICAgICAgIGVsc2lmICggJHN0ciA9fiAvXEcoXGQrKS9nYyApIHsgcHVzaCBAdHlwZSwgJ2QnOyB9CgogICAgICAgICMgd29yZHMKICAgICAgICBlbHNpZiAoICRzdHIgPX4gL1xHKFx3KykvZ2MgKSB7IHB1c2ggQHR5cGUsICd3JzsgfQoKICAgICAgICAjIHNpbmdsZS1jaGFyYWN0ZXIgcHVuY3R1YXRpb24KICAgICAgICBlbHNpZiAoICRzdHIgPX4gL1xHKFxXKS9nYyApIHsgcHVzaCBAdHlwZSwgJDE7IH0KCiAgICAgICAgIyB0aGF0J3MgYWxsLi4KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICggXEB0b2tlbnMsIFxAdG9rZW5fbWFwLCBcQHR5cGUgKTsKICAgICAgICB9CgogICAgICAgIHB1c2ggQHRva2VucywgICAgJDE7CiAgICAgICAgcHVzaCBAdG9rZW5fbWFwLCBwb3MoJHN0cik7CgogICAgfSB3aGlsZSAoIC0tJG1heF90b2tlbnNfd2FudGVkICE9IDAgKTsKCiAgICByZXR1cm4gKCBcQHRva2VucywgXEB0b2tlbl9tYXAsIFxAdHlwZSApOwp9CgpzdWIgc2hvd190b2tlbnMgewoKICAgICMgdGhpcyBpcyBhbiBvbGQgZGVidWcgcm91dGluZQogICAgIyBub3QgY2FsbGVkLCBidXQgc2F2ZWQgZm9yIHJlZmVyZW5jZQogICAgbXkgKCAkcnRva2VucywgJHJ0b2tlbl9tYXAgKSA9IEBfOwogICAgbXkgJG51bSA9IHNjYWxhciggQHskcnRva2Vuc30gKTsKCiAgICBmb3JlYWNoIG15ICRpICggMCAuLiAkbnVtIC0gMSApIHsKICAgICAgICBteSAkbGVuID0gbGVuZ3RoKCAkcnRva2Vucy0+WyRpXSApOwogICAgICAgIHByaW50IFNURE9VVCAiJGk6JGxlbjokcnRva2VuX21hcC0+WyRpXTokcnRva2Vucy0+WyRpXTpcbiI7CiAgICB9CiAgICByZXR1cm47Cn0KCnsKICAgIG15ICVtYXRjaGluZ19lbmRfdG9rZW47CgogICAgQkVHSU4gewogICAgICAgICVtYXRjaGluZ19lbmRfdG9rZW4gPSAoCiAgICAgICAgICAgICd7JyA9PiAnfScsCiAgICAgICAgICAgICcoJyA9PiAnKScsCiAgICAgICAgICAgICdbJyA9PiAnXScsCiAgICAgICAgICAgICc8JyA9PiAnPicsCiAgICAgICAgKTsKICAgIH0KCiAgICBzdWIgbWF0Y2hpbmdfZW5kX3Rva2VuIHsKCiAgICAgICAgIyByZXR1cm4gY2xvc2luZyBjaGFyYWN0ZXIgZm9yIGEgcGF0dGVybgogICAgICAgIG15ICRiZWdpbm5pbmdfdG9rZW4gPSBzaGlmdDsKICAgICAgICBpZiAoICRtYXRjaGluZ19lbmRfdG9rZW57JGJlZ2lubmluZ190b2tlbn0gKSB7CiAgICAgICAgICAgIHJldHVybiAkbWF0Y2hpbmdfZW5kX3Rva2VueyRiZWdpbm5pbmdfdG9rZW59OwogICAgICAgIH0KICAgICAgICByZXR1cm4gKCRiZWdpbm5pbmdfdG9rZW4pOwogICAgfQp9CgpzdWIgZHVtcF90b2tlbl90eXBlcyB7CiAgICBteSAoICRjbGFzcywgJGZoICkgPSBAXzsKCiAgICAjIFRoaXMgc2hvdWxkIGJlIHRoZSBsYXRlc3QgbGlzdCBvZiB0b2tlbiB0eXBlcyBpbiB1c2UKICAgICMgYWRkaW5nIE5FV19UT0tFTlM6IGFkZCBhIGNvbW1lbnQgaGVyZQogICAgcHJpbnQgJGZoIDw8J0VORF9PRl9MSVNUJzsKCkhlcmUgaXMgYSBsaXN0IG9mIHRoZSB0b2tlbiB0eXBlcyBjdXJyZW50bHkgdXNlZCBmb3IgbGluZXMgb2YgdHlwZSAnQ09ERScuICAKRm9yIHRoZSBmb2xsb3dpbmcgdG9rZW5zLCB0aGUgInR5cGUiIG9mIGEgdG9rZW4gaXMganVzdCB0aGUgdG9rZW4gaXRzZWxmLiAgCgouLiA6OiA8PCA+PiAqKiAmJiAuLiB8fCAvLyAtPiA9PiArPSAtPSAuPSAlPSAmPSB8PSBePSAqPSA8PgooICkgPD0gPj0gPT0gPX4gIX4gIT0gKysgLS0gLz0geD0KLi4uICoqPSA8PD0gPj49ICYmPSB8fD0gLy89IDw9PiAKLCArIC0gLyAqIHwgJSAhIHggfiA9IFwgPyA6IC4gPCA+IF4gJgoKVGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIHRva2VuIHR5cGVzIGFyZSBkZWZpbmVkOgoKIHR5cGUgICAgbWVhbmluZwogICAgYiAgICBibGFuayAod2hpdGUgc3BhY2UpIAogICAgeyAgICBpbmRlbnQ6IG9wZW5pbmcgc3RydWN0dXJhbCBjdXJseSBicmFjZSBvciBzcXVhcmUgYnJhY2tldCBvciBwYXJlbgogICAgICAgICAoY29kZSBibG9jaywgYW5vbnltb3VzIGhhc2ggcmVmZXJlbmNlLCBvciBhbm9ueW1vdXMgYXJyYXkgcmVmZXJlbmNlKQogICAgfSAgICBvdXRkZW50OiByaWdodCBzdHJ1Y3R1cmFsIGN1cmx5IGJyYWNlIG9yIHNxdWFyZSBicmFja2V0IG9yIHBhcmVuCiAgICBbICAgIGxlZnQgbm9uLXN0cnVjdHVyYWwgc3F1YXJlIGJyYWNrZXQgKGVuY2xvc2luZyBhbiBhcnJheSBpbmRleCkKICAgIF0gICAgcmlnaHQgbm9uLXN0cnVjdHVyYWwgc3F1YXJlIGJyYWNrZXQKICAgICggICAgbGVmdCBub24tc3RydWN0dXJhbCBwYXJlbiAoYWxsIGJ1dCBhIGxpc3QgcmlnaHQgb2YgYW4gPSkKICAgICkgICAgcmlnaHQgbm9uLXN0cnVjdHVyYWwgcGFyZW4KICAgIEwgICAgbGVmdCBub24tc3RydWN0dXJhbCBjdXJseSBicmFjZSAoZW5jbG9zaW5nIGEga2V5KQogICAgUiAgICByaWdodCBub24tc3RydWN0dXJhbCBjdXJseSBicmFjZSAKICAgIDsgICAgdGVybWluYWwgc2VtaWNvbG9uCiAgICBmICAgIGluZGljYXRlcyBhIHNlbWljb2xvbiBpbiBhICJmb3IiIHN0YXRlbWVudAogICAgaCAgICBoZXJlX2RvYyBvcGVyYXRvciA8PAogICAgIyAgICBhIGNvbW1lbnQKICAgIFEgICAgaW5kaWNhdGVzIGEgcXVvdGUgb3IgcGF0dGVybgogICAgcSAgICBpbmRpY2F0ZXMgYSBxdyBxdW90ZSBibG9jawogICAgayAgICBhIHBlcmwga2V5d29yZAogICAgQyAgICB1c2VyLWRlZmluZWQgY29uc3RhbnQgb3IgY29uc3RhbnQgZnVuY3Rpb24gKHdpdGggdm9pZCBwcm90b3R5cGUgPSAoKSkKICAgIFUgICAgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIHRha2luZyBwYXJhbWV0ZXJzCiAgICBHICAgIHVzZXItZGVmaW5lZCBmdW5jdGlvbiB0YWtpbmcgYmxvY2sgcGFyYW1ldGVyIChsaWtlIGdyZXAvbWFwL2V2YWwpCiAgICBNICAgICh1bnVzZWQsIGJ1dCByZXNlcnZlZCBmb3Igc3Vicm91dGluZSBkZWZpbml0aW9uIG5hbWUpCiAgICBQICAgICh1bnVzZWQsIGJ1dCAtaHRtbCB1c2VzIGl0IHRvIGxhYmVsIHBvZCB0ZXh0KQogICAgdCAgICB0eXBlIGluZGljYXRlciBzdWNoIGFzICUsJCxALCosJixzdWIKICAgIHcgICAgYmFyZSB3b3JkIChwZXJoYXBzIGEgc3Vicm91dGluZSBjYWxsKQogICAgaSAgICBpZGVudGlmaWVyIG9mIHNvbWUgdHlwZSAod2l0aCBsZWFkaW5nICUsICQsIEAsICosICYsIHN1YiwgLT4gKQogICAgbiAgICBhIG51bWJlcgogICAgdiAgICBhIHYtc3RyaW5nCiAgICBGICAgIGEgZmlsZSB0ZXN0IG9wZXJhdG9yIChsaWtlIC1lKQogICAgWSAgICBGaWxlIGhhbmRsZQogICAgWiAgICBpZGVudGlmaWVyIGluIGluZGlyZWN0IG9iamVjdCBzbG90OiBtYXkgYmUgZmlsZSBoYW5kbGUsIG9iamVjdAogICAgSiAgICBMQUJFTDogIGNvZGUgYmxvY2sgbGFiZWwKICAgIGogICAgTEFCRUwgYWZ0ZXIgbmV4dCwgbGFzdCwgcmVkbywgZ290bwogICAgcCAgICB1bmFyeSArCiAgICBtICAgIHVuYXJ5IC0KICAgIHBwICAgcHJlLWluY3JlbWVudCBvcGVyYXRvciArKwogICAgbW0gICBwcmUtZGVjcmVtZW50IG9wZXJhdG9yIC0tIAogICAgQSAgICA6IHVzZWQgYXMgYXR0cmlidXRlIHNlcGFyYXRvcgogICAgCiAgICBIZXJlIGFyZSB0aGUgJ19saW5lX3R5cGUnIGNvZGVzIHVzZWQgaW50ZXJuYWxseToKICAgIFNZU1RFTSAgICAgICAgIC0gc3lzdGVtLXNwZWNpZmljIGNvZGUgYmVmb3JlIGhhc2gtYmFuZyBsaW5lCiAgICBDT0RFICAgICAgICAgICAtIGxpbmUgb2YgcGVybCBjb2RlIChpbmNsdWRpbmcgY29tbWVudHMpCiAgICBQT0RfU1RBUlQgICAgICAtIGxpbmUgc3RhcnRpbmcgcG9kLCBzdWNoIGFzICc9aGVhZCcKICAgIFBPRCAgICAgICAgICAgIC0gcG9kIGRvY3VtZW50YXRpb24gdGV4dAogICAgUE9EX0VORCAgICAgICAgLSBsYXN0IGxpbmUgb2YgcG9kIHNlY3Rpb24sICc9Y3V0JwogICAgSEVSRSAgICAgICAgICAgLSB0ZXh0IG9mIGhlcmUtZG9jdW1lbnQKICAgIEhFUkVfRU5EICAgICAgIC0gbGFzdCBsaW5lIG9mIGhlcmUtZG9jICh0YXJnZXQgd29yZCkKICAgIEZPUk1BVCAgICAgICAgIC0gZm9ybWF0IHNlY3Rpb24KICAgIEZPUk1BVF9FTkQgICAgIC0gbGFzdCBsaW5lIG9mIGZvcm1hdCBzZWN0aW9uLCAnLicKICAgIERBVEFfU1RBUlQgICAgIC0gX19EQVRBX18gbGluZQogICAgREFUQSAgICAgICAgICAgLSB1bmlkZW50aWZpZWQgdGV4dCBmb2xsb3dpbmcgX19EQVRBX18KICAgIEVORF9TVEFSVCAgICAgIC0gX19FTkRfXyBsaW5lCiAgICBFTkQgICAgICAgICAgICAtIHVuaWRlbnRpZmllZCB0ZXh0IGZvbGxvd2luZyBfX0VORF9fCiAgICBFUlJPUiAgICAgICAgICAtIHdlIGFyZSBpbiBiaWcgdHJvdWJsZSwgcHJvYmFibHkgbm90IGEgcGVybCBzY3JpcHQKRU5EX09GX0xJU1QKCiAgICByZXR1cm47Cn0KCkJFR0lOIHsKCiAgICAjIFRoZXNlIG5hbWVzIGFyZSB1c2VkIGluIGVycm9yIG1lc3NhZ2VzCiAgICBAb3BlbmluZ19icmFjZV9uYW1lcyA9IHF3IyAneycgJ1snICcoJyAnPycgIzsKICAgIEBjbG9zaW5nX2JyYWNlX25hbWVzID0gcXcjICd9JyAnXScgJyknICc6JyAjOwoKICAgIG15IEBxOwoKICAgIG15IEBkaWdyYXBocyA9IHF3KAogICAgICAuLiA6OiA8PCA+PiAqKiAmJiAuLiB8fCAvLyAtPiA9PiArPSAtPSAuPSAlPSAmPSB8PSBePSAqPSA8PgogICAgICA8PSA+PSA9PSA9fiAhfiAhPSArKyAtLSAvPSB4PSB+fiB+LiB8LiAmLiBeLgogICAgKTsKICAgIEBpc19kaWdyYXBoe0BkaWdyYXBoc30gPSAoMSkgeCBzY2FsYXIoQGRpZ3JhcGhzKTsKCiAgICBteSBAdHJpZ3JhcGhzID0gcXcoIC4uLiAqKj0gPDw9ID4+PSAmJj0gfHw9IC8vPSA8PT4gIX5+ICYuPSB8Lj0gXi49IDw8fik7CiAgICBAaXNfdHJpZ3JhcGh7QHRyaWdyYXBoc30gPSAoMSkgeCBzY2FsYXIoQHRyaWdyYXBocyk7CgogICAgbXkgQHRldHJhZ3JhcGhzID0gcXcoIDw8Pj4gKTsKICAgIEBpc190ZXRyYWdyYXBoe0B0ZXRyYWdyYXBoc30gPSAoMSkgeCBzY2FsYXIoQHRldHJhZ3JhcGhzKTsKCiAgICAjIG1ha2UgYSBoYXNoIG9mIGFsbCB2YWxpZCB0b2tlbiB0eXBlcyBmb3Igc2VsZi1jaGVja2luZyB0aGUgdG9rZW5pemVyCiAgICAjIChhZGRpbmcgTkVXX1RPS0VOUyA6IHNlbGVjdCBhIG5ldyBjaGFyYWN0ZXIgYW5kIGFkZCB0byB0aGlzIGxpc3QpCiAgICBteSBAdmFsaWRfdG9rZW5fdHlwZXMgPSBxdyMKICAgICAgQSBiIEMgRyBMIFIgZiBoIFEgayB0IHcgaSBxIG4gcCBtIEYgcHAgbW0gVSBqIEogWSBaIHYKICAgICAgeyB9ICggKSBbIF0gOyArIC0gLyAqIHwgJSAhIHggfiA9IFwgPyA6IC4gPCA+IF4gJgogICAgICAjOwogICAgcHVzaCggQHZhbGlkX3Rva2VuX3R5cGVzLCBAZGlncmFwaHMgKTsKICAgIHB1c2goIEB2YWxpZF90b2tlbl90eXBlcywgQHRyaWdyYXBocyApOwogICAgcHVzaCggQHZhbGlkX3Rva2VuX3R5cGVzLCBAdGV0cmFncmFwaHMgKTsKICAgIHB1c2goIEB2YWxpZF90b2tlbl90eXBlcywgKCAnIycsICcsJywgJ0NPUkU6OicgKSApOwogICAgQGlzX3ZhbGlkX3Rva2VuX3R5cGV7QHZhbGlkX3Rva2VuX3R5cGVzfSA9ICgxKSB4IHNjYWxhcihAdmFsaWRfdG9rZW5fdHlwZXMpOwoKICAgICMgYSBsaXN0IG9mIGZpbGUgdGVzdCBsZXR0ZXJzLCBhcyBpbiAtZSAoVGFibGUgMy00IG9mICdjYW1lbCAzJykKICAgIG15IEBmaWxlX3Rlc3Rfb3BlcmF0b3JzID0KICAgICAgcXcoIEEgQiBDIE0gTyBSIFMgVCBXIFggYiBjIGQgZSBmIGcgayBsIG8gcCByIHMgdCB1IHcgeCB6KTsKICAgIEBpc19maWxlX3Rlc3Rfb3BlcmF0b3J7QGZpbGVfdGVzdF9vcGVyYXRvcnN9ID0KICAgICAgKDEpIHggc2NhbGFyKEBmaWxlX3Rlc3Rfb3BlcmF0b3JzKTsKCiAgICAjIHRoZXNlIGZ1bmN0aW9ucyBoYXZlIHByb3RvdHlwZXMgb2YgdGhlIGZvcm0gKCYpLCBzbyB3aGVuIHRoZXkgYXJlCiAgICAjIGZvbGxvd2VkIGJ5IGEgYmxvY2ssIHRoYXQgYmxvY2sgTUFZIEJFIGZvbGxvd2VkIGJ5IGFuIG9wZXJhdG9yLgogICAgIyBTbWFydG1hdGNoIG9wZXJhdG9yIH5+IG1heSBiZSBmb2xsb3dlZCBieSBhbm9ueW1vdXMgaGFzaCBvciBhcnJheSByZWYKICAgIEBxID0gcXcoIGRvIGV2YWwgKTsKICAgIEBpc19ibG9ja19vcGVyYXRvcntAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgICMgdGhlc2UgZnVuY3Rpb25zIGFsbG93IGFuIGlkZW50aWZpZXIgaW4gdGhlIGluZGlyZWN0IG9iamVjdCBzbG90CiAgICBAcSA9IHF3KCBwcmludCBwcmludGYgc29ydCBleGVjIHN5c3RlbSBzYXkpOwogICAgQGlzX2luZGlyZWN0X29iamVjdF90YWtlcntAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgICMgVGhlc2UgdG9rZW5zIG1heSBwcmVjZWRlIGEgY29kZSBibG9jawogICAgIyBwYXRjaGVkIGZvciBTV0lUQ0gvQ0FTRS9DQVRDSC4gIEFjdHVhbGx5IHRoZXNlIGNvdWxkIGJlIHJlbW92ZWQKICAgICMgbm93IGFuZCB3ZSBjb3VsZCBsZXQgdGhlIGV4dGVuZGVkLXN5bnRheCBjb2RpbmcgaGFuZGxlIHRoZW0KICAgIEBxID0KICAgICAgcXcoIEJFR0lOIEVORCBDSEVDSyBJTklUIEFVVE9MT0FEIERFU1RST1kgVU5JVENIRUNLIGNvbnRpbnVlIGlmIGVsc2lmIGVsc2UKICAgICAgdW5sZXNzIGRvIHdoaWxlIHVudGlsIGV2YWwgZm9yIGZvcmVhY2ggbWFwIGdyZXAgc29ydAogICAgICBzd2l0Y2ggY2FzZSBnaXZlbiB3aGVuIGNhdGNoIHRyeSBmaW5hbGx5KTsKICAgIEBpc19jb2RlX2Jsb2NrX3Rva2Vue0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CgogICAgIyBJJ2xsIGJ1aWxkIHRoZSBsaXN0IG9mIGtleXdvcmRzIGluY3JlbWVudGFsbHkKICAgIG15IEBLZXl3b3JkcyA9ICgpOwoKICAgICMga2V5d29yZHMgYW5kIHRva2VucyBhZnRlciB3aGljaCBhIHZhbHVlIG9yIHBhdHRlcm4gaXMgZXhwZWN0ZWQsCiAgICAjIGJ1dCBub3QgYW4gb3BlcmF0b3IuICBJbiBvdGhlciB3b3JkcywgdGhlc2Ugc2hvdWxkIGNvbnN1bWUgdGVybXMKICAgICMgdG8gdGhlaXIgcmlnaHQsIG9yIGF0IGxlYXN0IHRoZXkgYXJlIG5vdCBleHBlY3RlZCB0byBiZSBmb2xsb3dlZAogICAgIyBpbW1lZGlhdGVseSBieSBvcGVyYXRvcnMuCiAgICBteSBAdmFsdWVfcmVxdWVzdG9yID0gcXcoCiAgICAgIEFVVE9MT0FECiAgICAgIEJFR0lOCiAgICAgIENIRUNLCiAgICAgIERFU1RST1kKICAgICAgRU5ECiAgICAgIEVRCiAgICAgIEdFCiAgICAgIEdUCiAgICAgIElOSVQKICAgICAgTEUKICAgICAgTFQKICAgICAgTkUKICAgICAgVU5JVENIRUNLCiAgICAgIGFicwogICAgICBhY2NlcHQKICAgICAgYWxhcm0KICAgICAgYW5kCiAgICAgIGF0YW4yCiAgICAgIGJpbmQKICAgICAgYmlubW9kZQogICAgICBibGVzcwogICAgICBicmVhawogICAgICBjYWxsZXIKICAgICAgY2hkaXIKICAgICAgY2htb2QKICAgICAgY2hvbXAKICAgICAgY2hvcAogICAgICBjaG93bgogICAgICBjaHIKICAgICAgY2hyb290CiAgICAgIGNsb3NlCiAgICAgIGNsb3NlZGlyCiAgICAgIGNtcAogICAgICBjb25uZWN0CiAgICAgIGNvbnRpbnVlCiAgICAgIGNvcwogICAgICBjcnlwdAogICAgICBkYm1jbG9zZQogICAgICBkYm1vcGVuCiAgICAgIGRlZmluZWQKICAgICAgZGVsZXRlCiAgICAgIGRpZQogICAgICBkdW1wCiAgICAgIGVhY2gKICAgICAgZWxzZQogICAgICBlbHNpZgogICAgICBlb2YKICAgICAgZXEKICAgICAgZXhlYwogICAgICBleGlzdHMKICAgICAgZXhpdAogICAgICBleHAKICAgICAgZmNudGwKICAgICAgZmlsZW5vCiAgICAgIGZsb2NrCiAgICAgIGZvcgogICAgICBmb3JlYWNoCiAgICAgIGZvcm1saW5lCiAgICAgIGdlCiAgICAgIGdldGMKICAgICAgZ2V0Z3JnaWQKICAgICAgZ2V0Z3JuYW0KICAgICAgZ2V0aG9zdGJ5YWRkcgogICAgICBnZXRob3N0YnluYW1lCiAgICAgIGdldG5ldGJ5YWRkcgogICAgICBnZXRuZXRieW5hbWUKICAgICAgZ2V0cGVlcm5hbWUKICAgICAgZ2V0cGdycAogICAgICBnZXRwcmlvcml0eQogICAgICBnZXRwcm90b2J5bmFtZQogICAgICBnZXRwcm90b2J5bnVtYmVyCiAgICAgIGdldHB3bmFtCiAgICAgIGdldHB3dWlkCiAgICAgIGdldHNlcnZieW5hbWUKICAgICAgZ2V0c2VydmJ5cG9ydAogICAgICBnZXRzb2NrbmFtZQogICAgICBnZXRzb2Nrb3B0CiAgICAgIGdsb2IKICAgICAgZ210aW1lCiAgICAgIGdvdG8KICAgICAgZ3JlcAogICAgICBndAogICAgICBoZXgKICAgICAgaWYKICAgICAgaW5kZXgKICAgICAgaW50CiAgICAgIGlvY3RsCiAgICAgIGpvaW4KICAgICAga2V5cwogICAgICBraWxsCiAgICAgIGxhc3QKICAgICAgbGMKICAgICAgbGNmaXJzdAogICAgICBsZQogICAgICBsZW5ndGgKICAgICAgbGluawogICAgICBsaXN0ZW4KICAgICAgbG9jYWwKICAgICAgbG9jYWx0aW1lCiAgICAgIGxvY2sKICAgICAgbG9nCiAgICAgIGxzdGF0CiAgICAgIGx0CiAgICAgIG1hcAogICAgICBta2RpcgogICAgICBtc2djdGwKICAgICAgbXNnZ2V0CiAgICAgIG1zZ3JjdgogICAgICBtc2dzbmQKICAgICAgbXkKICAgICAgbmUKICAgICAgbmV4dAogICAgICBubwogICAgICBub3QKICAgICAgb2N0CiAgICAgIG9wZW4KICAgICAgb3BlbmRpcgogICAgICBvcgogICAgICBvcmQKICAgICAgb3VyCiAgICAgIHBhY2sKICAgICAgcGlwZQogICAgICBwb3AKICAgICAgcG9zCiAgICAgIHByaW50CiAgICAgIHByaW50ZgogICAgICBwcm90b3R5cGUKICAgICAgcHVzaAogICAgICBxdW90ZW1ldGEKICAgICAgcmFuZAogICAgICByZWFkCiAgICAgIHJlYWRkaXIKICAgICAgcmVhZGxpbmsKICAgICAgcmVhZGxpbmUKICAgICAgcmVhZHBpcGUKICAgICAgcmVjdgogICAgICByZWRvCiAgICAgIHJlZgogICAgICByZW5hbWUKICAgICAgcmVxdWlyZQogICAgICByZXNldAogICAgICByZXR1cm4KICAgICAgcmV2ZXJzZQogICAgICByZXdpbmRkaXIKICAgICAgcmluZGV4CiAgICAgIHJtZGlyCiAgICAgIHNjYWxhcgogICAgICBzZWVrCiAgICAgIHNlZWtkaXIKICAgICAgc2VsZWN0CiAgICAgIHNlbWN0bAogICAgICBzZW1nZXQKICAgICAgc2Vtb3AKICAgICAgc2VuZAogICAgICBzZXRob3N0ZW50CiAgICAgIHNldG5ldGVudAogICAgICBzZXRwZ3JwCiAgICAgIHNldHByaW9yaXR5CiAgICAgIHNldHByb3RvZW50CiAgICAgIHNldHNlcnZlbnQKICAgICAgc2V0c29ja29wdAogICAgICBzaGlmdAogICAgICBzaG1jdGwKICAgICAgc2htZ2V0CiAgICAgIHNobXJlYWQKICAgICAgc2htd3JpdGUKICAgICAgc2h1dGRvd24KICAgICAgc2luCiAgICAgIHNsZWVwCiAgICAgIHNvY2tldAogICAgICBzb2NrZXRwYWlyCiAgICAgIHNvcnQKICAgICAgc3BsaWNlCiAgICAgIHNwbGl0CiAgICAgIHNwcmludGYKICAgICAgc3FydAogICAgICBzcmFuZAogICAgICBzdGF0CiAgICAgIHN0dWR5CiAgICAgIHN1YnN0cgogICAgICBzeW1saW5rCiAgICAgIHN5c2NhbGwKICAgICAgc3lzb3BlbgogICAgICBzeXNyZWFkCiAgICAgIHN5c3NlZWsKICAgICAgc3lzdGVtCiAgICAgIHN5c3dyaXRlCiAgICAgIHRlbGwKICAgICAgdGVsbGRpcgogICAgICB0aWUKICAgICAgdGllZAogICAgICB0cnVuY2F0ZQogICAgICB1YwogICAgICB1Y2ZpcnN0CiAgICAgIHVtYXNrCiAgICAgIHVuZGVmCiAgICAgIHVubGVzcwogICAgICB1bmxpbmsKICAgICAgdW5wYWNrCiAgICAgIHVuc2hpZnQKICAgICAgdW50aWUKICAgICAgdW50aWwKICAgICAgdXNlCiAgICAgIHV0aW1lCiAgICAgIHZhbHVlcwogICAgICB2ZWMKICAgICAgd2FpdHBpZAogICAgICB3YXJuCiAgICAgIHdoaWxlCiAgICAgIHdyaXRlCiAgICAgIHhvcgoKICAgICAgc3dpdGNoCiAgICAgIGNhc2UKICAgICAgZ2l2ZW4KICAgICAgd2hlbgogICAgICBlcnIKICAgICAgc2F5CgogICAgICBjYXRjaAogICAgKTsKCiAgICAjIHBhdGNoZWQgYWJvdmUgZm9yIFNXSVRDSC9DQVNFIGdpdmVuL3doZW4gZXJyIHNheQogICAgIyAnZXJyJyBpcyBhIGZhaXJseSBzYWZlIGFkZGl0aW9uLgogICAgIyBUT0RPOiAnZGVmYXVsdCcgc3RpbGwgbmVlZGVkIGlmIGFwcHJvcHJpYXRlCiAgICAjICd1c2UgZmVhdHVyZScgc2VlbiwgYnV0IHBlcmx0aWR5IHdvcmtzIG9rIHdpdGhvdXQgaXQuCiAgICAjIENvbmNlcm5lZCB0aGF0ICdkZWZhdWx0JyBjb3VsZCBicmVhayBjb2RlLgogICAgcHVzaCggQEtleXdvcmRzLCBAdmFsdWVfcmVxdWVzdG9yICk7CgogICAgIyBUaGVzZSBhcmUgdHJlYXRlZCB0aGUgc2FtZSBidXQgYXJlIG5vdCBrZXl3b3JkczoKICAgIG15IEBleHRyYV92ciA9IHF3KAogICAgICBjb25zdGFudAogICAgICB2YXJzCiAgICApOwogICAgcHVzaCggQHZhbHVlX3JlcXVlc3RvciwgQGV4dHJhX3ZyICk7CgogICAgQGV4cGVjdGluZ190ZXJtX3Rva2Vue0B2YWx1ZV9yZXF1ZXN0b3J9ID0gKDEpIHggc2NhbGFyKEB2YWx1ZV9yZXF1ZXN0b3IpOwoKICAgICMgdGhpcyBsaXN0IGNvbnRhaW5zIGtleXdvcmRzIHdoaWNoIGRvIG5vdCBsb29rIGZvciBhcmd1bWVudHMsCiAgICAjIHNvIHRoYXQgdGhleSBtaWdodCBiZSBmb2xsb3dlZCBieSBhbiBvcGVyYXRvciwgb3IgYXQgbGVhc3QKICAgICMgbm90IGEgdGVybS4KICAgIG15IEBvcGVyYXRvcl9yZXF1ZXN0b3IgPSBxdygKICAgICAgZW5kZ3JlbnQKICAgICAgZW5kaG9zdGVudAogICAgICBlbmRuZXRlbnQKICAgICAgZW5kcHJvdG9lbnQKICAgICAgZW5kcHdlbnQKICAgICAgZW5kc2VydmVudAogICAgICBmb3JrCiAgICAgIGdldGdyZW50CiAgICAgIGdldGhvc3RlbnQKICAgICAgZ2V0bG9naW4KICAgICAgZ2V0bmV0ZW50CiAgICAgIGdldHBwaWQKICAgICAgZ2V0cHJvdG9lbnQKICAgICAgZ2V0cHdlbnQKICAgICAgZ2V0c2VydmVudAogICAgICBzZXRncmVudAogICAgICBzZXRwd2VudAogICAgICB0aW1lCiAgICAgIHRpbWVzCiAgICAgIHdhaXQKICAgICAgd2FudGFycmF5CiAgICApOwoKICAgIHB1c2goIEBLZXl3b3JkcywgQG9wZXJhdG9yX3JlcXVlc3RvciApOwoKICAgICMgVGhlc2UgYXJlIHRyZWF0ZWQgdGhlIHNhbWUgYnV0IGFyZSBub3QgY29uc2lkZXJlZCBrZXl3b3JkczoKICAgIG15IEBleHRyYV9vciA9IHF3KAogICAgICBTVERFUlIKICAgICAgU1RESU4KICAgICAgU1RET1VUCiAgICApOwoKICAgIHB1c2goIEBvcGVyYXRvcl9yZXF1ZXN0b3IsIEBleHRyYV9vciApOwoKICAgIEBleHBlY3Rpbmdfb3BlcmF0b3JfdG9rZW57QG9wZXJhdG9yX3JlcXVlc3Rvcn0gPQogICAgICAoMSkgeCBzY2FsYXIoQG9wZXJhdG9yX3JlcXVlc3Rvcik7CgogICAgIyB0aGVzZSB0b2tlbiBUWVBFUyBleHBlY3QgdHJhaWxpbmcgb3BlcmF0b3IgYnV0IG5vdCBhIHRlcm0KICAgICMgbm90ZTogKysgYW5kIC0tIGFyZSBwb3N0LWluY3JlbWVudCBhbmQgZGVjcmVtZW50LCAnQycgPSBjb25zdGFudAogICAgbXkgQG9wZXJhdG9yX3JlcXVlc3Rvcl90eXBlcyA9IHF3KCArKyAtLSBDIDw+IHEgKTsKICAgIEBleHBlY3Rpbmdfb3BlcmF0b3JfdHlwZXN7QG9wZXJhdG9yX3JlcXVlc3Rvcl90eXBlc30gPQogICAgICAoMSkgeCBzY2FsYXIoQG9wZXJhdG9yX3JlcXVlc3Rvcl90eXBlcyk7CgogICAgIyB0aGVzZSB0b2tlbiBUWVBFUyBjb25zdW1lIHZhbHVlcyAodGVybXMpCiAgICAjIG5vdGU6IHBwIGFuZCBtbSBhcmUgcHJlLWluY3JlbWVudCBhbmQgZGVjcmVtZW50CiAgICAjIGY9c2VtaWNvbG9uIGluIGZvciwgIEY9ZmlsZSB0ZXN0IG9wZXJhdG9yCiAgICBteSBAdmFsdWVfcmVxdWVzdG9yX3R5cGUgPSBxdyMKICAgICAgTCB7ICggWyB+ICF+ID1+IDsgLiAuLiAuLi4gQSA6ICYmICEgfHwgLy8gPSArIC0geAogICAgICAqKj0gKz0gLT0gLj0gLz0gKj0gJT0geD0gJj0gfD0gXj0gPDw9ID4+PSAmJj0gfHw9IC8vPQogICAgICA8PSA+PSA9PSAhPSA9PiBcID4gPCAlICogLyA/ICYgfCAqKiA8PT4gfn4gIX5+CiAgICAgIGYgRiBwcCBtbSBZIHAgbSBVIEogRyBqID4+IDw8IF4gdAogICAgICB+LiBeLiB8LiAmLiBeLj0gfC49ICYuPQogICAgICAjOwogICAgcHVzaCggQHZhbHVlX3JlcXVlc3Rvcl90eXBlLCAnLCcgKQogICAgICA7ICAgICMgKHBlcmwgZG9lc24ndCBsaWtlIGEgJywnIGluIGEgcXcgYmxvY2spCiAgICBAZXhwZWN0aW5nX3Rlcm1fdHlwZXN7QHZhbHVlX3JlcXVlc3Rvcl90eXBlfSA9CiAgICAgICgxKSB4IHNjYWxhcihAdmFsdWVfcmVxdWVzdG9yX3R5cGUpOwoKICAgICMgTm90ZTogdGhlIGZvbGxvd2luZyB2YWxpZCB0b2tlbiB0eXBlcyBhcmUgbm90IGFzc2lnbmVkIGhlcmUgdG8KICAgICMgaGFzaGVzIHJlcXVlc3RpbmcgdG8gYmUgZm9sbG93ZWQgYnkgdmFsdWVzIG9yIHRlcm1zLCBidXQgYXJlCiAgICAjIGluc3RlYWQgY3VycmVudGx5IGhhcmQtY29kZWQgaW50byBzdWIgb3BlcmF0b3JfZXhwZWN0ZWQ6CiAgICAjICkgLT4gOjogUSBSIFogXSBiIGggaSBrIG4gdiB3IH0gIwoKICAgICMgRm9yIHNpbXBsZSBzeW50YXggY2hlY2tpbmcsIGl0IGlzIG5pY2UgdG8gaGF2ZSBhIGxpc3Qgb2Ygb3BlcmF0b3JzIHdoaWNoCiAgICAjIHdpbGwgcmVhbGx5IGJlIHVuaGFwcHkgaWYgbm90IGZvbGxvd2VkIGJ5IGEgdGVybS4gIFRoaXMgaW5jbHVkZXMgbW9zdAogICAgIyBvZiB0aGUgYWJvdmUuLi4KICAgICVyZWFsbHlfd2FudF90ZXJtID0gJWV4cGVjdGluZ190ZXJtX3R5cGVzOwoKICAgICMgd2l0aCB0aGVzZSBleGNlcHRpb25zLi4uCiAgICBkZWxldGUgJHJlYWxseV93YW50X3Rlcm17J1UnfTsgIyB1c2VyIHN1YiwgZGVwZW5kcyBvbiBwcm90b3R5cGUKICAgIGRlbGV0ZSAkcmVhbGx5X3dhbnRfdGVybXsnRid9OyAjIGZpbGUgdGVzdCB3b3JrcyBvbiAkXyBpZiBubyBmb2xsb3dpbmcgdGVybQogICAgZGVsZXRlICRyZWFsbHlfd2FudF90ZXJteydZJ307ICMgaW5kaXJlY3Qgb2JqZWN0LCB0b28gcmlza3kgdG8gY2hlY2sgc3ludGF4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbGV0IHBlcmwgZG8gaXQKCiAgICBAcSA9IHF3KHEgcXEgcXcgcXggcXIgcyB5IHRyIG0pOwogICAgQGlzX3FfcXFfcXdfcXhfcXJfc195X3RyX217QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICBAcSA9IHF3KHN1Yik7CiAgICBAaXNfc3Vie0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CgogICAgQHEgPSBxdyhwYWNrYWdlKTsKICAgIEBpc19wYWNrYWdle0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CgogICAgIyBUaGVzZSBrZXl3b3JkcyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgaW4gdGhlIHRva2VuaXplciBjb2RlOgogICAgbXkgQHNwZWNpYWxfa2V5d29yZHMgPSBxdygKICAgICAgZG8KICAgICAgZXZhbAogICAgICBmb3JtYXQKICAgICAgbQogICAgICBwYWNrYWdlCiAgICAgIHEKICAgICAgcXEKICAgICAgcXIKICAgICAgcXcKICAgICAgcXgKICAgICAgcwogICAgICBzdWIKICAgICAgdHIKICAgICAgeQogICAgKTsKICAgIHB1c2goIEBLZXl3b3JkcywgQHNwZWNpYWxfa2V5d29yZHMgKTsKCiAgICAjIEtleXdvcmRzIGFmdGVyIHdoaWNoIGxpc3QgZm9ybWF0dGluZyBtYXkgYmUgdXNlZAogICAgIyBXQVJOSU5HOiBkbyBub3QgaW5jbHVkZSB8bWFwfGdyZXB8ZXZhbCBvciBwZXJsIG1heSBkaWUgb24KICAgICMgc3ludGF4IGVycm9ycyAobWFwMS50KS4KICAgIG15IEBrZXl3b3JkX3Rha2luZ19saXN0ID0gcXcoCiAgICAgIGFuZAogICAgICBjaG1vZAogICAgICBjaG9tcAogICAgICBjaG9wCiAgICAgIGNob3duCiAgICAgIGRibW9wZW4KICAgICAgZGllCiAgICAgIGVsc2lmCiAgICAgIGV4ZWMKICAgICAgZmNudGwKICAgICAgZm9yCiAgICAgIGZvcmVhY2gKICAgICAgZm9ybWxpbmUKICAgICAgZ2V0c29ja29wdAogICAgICBpZgogICAgICBpbmRleAogICAgICBpb2N0bAogICAgICBqb2luCiAgICAgIGtpbGwKICAgICAgbG9jYWwKICAgICAgbXNnY3RsCiAgICAgIG1zZ3JjdgogICAgICBtc2dzbmQKICAgICAgbXkKICAgICAgb3BlbgogICAgICBvcgogICAgICBvdXIKICAgICAgcGFjawogICAgICBwcmludAogICAgICBwcmludGYKICAgICAgcHVzaAogICAgICByZWFkCiAgICAgIHJlYWRwaXBlCiAgICAgIHJlY3YKICAgICAgcmV0dXJuCiAgICAgIHJldmVyc2UKICAgICAgcmluZGV4CiAgICAgIHNlZWsKICAgICAgc2VsZWN0CiAgICAgIHNlbWN0bAogICAgICBzZW1nZXQKICAgICAgc2VuZAogICAgICBzZXRwcmlvcml0eQogICAgICBzZXRzb2Nrb3B0CiAgICAgIHNobWN0bAogICAgICBzaG1nZXQKICAgICAgc2htcmVhZAogICAgICBzaG13cml0ZQogICAgICBzb2NrZXQKICAgICAgc29ja2V0cGFpcgogICAgICBzb3J0CiAgICAgIHNwbGljZQogICAgICBzcGxpdAogICAgICBzcHJpbnRmCiAgICAgIHN1YnN0cgogICAgICBzeXNjYWxsCiAgICAgIHN5c29wZW4KICAgICAgc3lzcmVhZAogICAgICBzeXNzZWVrCiAgICAgIHN5c3RlbQogICAgICBzeXN3cml0ZQogICAgICB0aWUKICAgICAgdW5sZXNzCiAgICAgIHVubGluawogICAgICB1bnBhY2sKICAgICAgdW5zaGlmdAogICAgICB1bnRpbAogICAgICB2ZWMKICAgICAgd2FybgogICAgICB3aGlsZQogICAgICBnaXZlbgogICAgICB3aGVuCiAgICApOwogICAgQGlzX2tleXdvcmRfdGFraW5nX2xpc3R7QGtleXdvcmRfdGFraW5nX2xpc3R9ID0KICAgICAgKDEpIHggc2NhbGFyKEBrZXl3b3JkX3Rha2luZ19saXN0KTsKCiAgICAjIHBlcmwgZnVuY3Rpb25zIHdoaWNoIG1heSBiZSB1bmFyeSBvcGVyYXRvcnMKICAgIG15IEBrZXl3b3JkX3Rha2luZ19vcHRpb25hbF9hcmdzID0gcXcoCiAgICAgIGNob21wCiAgICAgIGVvZgogICAgICBldmFsCiAgICAgIGxjCiAgICAgIHBvcAogICAgICBzaGlmdAogICAgICB1YwogICAgICB1bmRlZgogICAgKTsKICAgIEBpc19rZXl3b3JkX3Rha2luZ19vcHRpb25hbF9hcmdze0BrZXl3b3JkX3Rha2luZ19vcHRpb25hbF9hcmdzfSA9CiAgICAgICgxKSB4IHNjYWxhcihAa2V5d29yZF90YWtpbmdfb3B0aW9uYWxfYXJncyk7CgogICAgIyBUaGVzZSBhcmUgbm90IHVzZWQgaW4gYW55IHdheSB5ZXQKICAgICMgICAgbXkgQHVudXNlZF9rZXl3b3JkcyA9IHF3KAogICAgIyAgICAgX19GSUxFX18KICAgICMgICAgIF9fTElORV9fCiAgICAjICAgICBfX1BBQ0tBR0VfXwogICAgIyAgICAgKTsKCiAgICAjICBUaGUgbGlzdCBvZiBrZXl3b3JkcyB3YXMgb3JpZ2luYWxseSBleHRyYWN0ZWQgZnJvbSBmdW5jdGlvbiAna2V5d29yZCcgaW4KICAgICMgIHBlcmwgZmlsZSB0b2tlLmMgdmVyc2lvbiA1LjAwNS4wMywgdXNpbmcgdGhpcyB1dGlsaXR5LCBwbHVzIGEKICAgICMgIGxpdHRsZSBlZGl0aW5nOiAoZmlsZSBnZXRrd2QucGwpOgogICAgIyAgd2hpbGUgKDw+KSB7IHdoaWxlICgvXCIoLiopXCIvZykgeyBwcmludCAiJDFcbiI7IH0gfQogICAgIyAgQWRkICdnZXQnIHByZWZpeCB3aGVyZSBuZWNlc3NhcnksIHRoZW4gc3BsaXQgaW50byB0aGUgYWJvdmUgbGlzdHMuCiAgICAjICBUaGlzIGxpc3Qgc2hvdWxkIGJlIHVwZGF0ZWQgYXMgbmVjZXNzYXJ5LgogICAgIyAgVGhlIGxpc3Qgc2hvdWxkIG5vdCBjb250YWluIHRoZXNlIHNwZWNpYWwgdmFyaWFibGVzOgogICAgIyAgQVJHViBEQVRBIEVOViBTSUcgU1RERVJSIFNURElOIFNURE9VVAogICAgIyAgX19EQVRBX18gX19FTkRfXwoKICAgIEBpc19rZXl3b3Jke0BLZXl3b3Jkc30gPSAoMSkgeCBzY2FsYXIoQEtleXdvcmRzKTsKfQoxOwoK
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBUaGUgUGVybDo6VGlkeTo6RGVidWdnZXIgY2xhc3Mgc2hvd3MgbGluZSB0b2tlbml6YXRpb24KIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnBhY2thZ2UgUGVybDo6VGlkeTo6RGVidWdnZXI7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKb3VyICRWRVJTSU9OID0gJzIwMTkxMjAzJzsKCnN1YiBuZXcgewoKICAgIG15ICggJGNsYXNzLCAkZmlsZW5hbWUgKSA9IEBfOwoKICAgIHJldHVybiBibGVzcyB7CiAgICAgICAgX2RlYnVnX2ZpbGUgICAgICAgID0+ICRmaWxlbmFtZSwKICAgICAgICBfZGVidWdfZmlsZV9vcGVuZWQgPT4gMCwKICAgICAgICBfZmggICAgICAgICAgICAgICAgPT4gdW5kZWYsCiAgICB9LCAkY2xhc3M7Cn0KCnN1YiByZWFsbHlfb3Blbl9kZWJ1Z19maWxlIHsKCiAgICBteSAkc2VsZiAgICAgICA9IHNoaWZ0OwogICAgbXkgJGRlYnVnX2ZpbGUgPSAkc2VsZi0+e19kZWJ1Z19maWxlfTsKICAgIG15ICRmaDsKICAgIHVubGVzcyAoICRmaCA9IElPOjpGaWxlLT5uZXcoIj4gJGRlYnVnX2ZpbGUiKSApIHsKICAgICAgICBQZXJsOjpUaWR5OjpXYXJuKCJjYW4ndCBvcGVuICRkZWJ1Z19maWxlOiAkIVxuIik7CiAgICB9CiAgICAkc2VsZi0+e19kZWJ1Z19maWxlX29wZW5lZH0gPSAxOwogICAgJHNlbGYtPntfZmh9ICAgICAgICAgICAgICAgID0gJGZoOwogICAgcHJpbnQgJGZoCiAgICAgICJVc2UgLWR1bXAtdG9rZW4tdHlwZXMgKC1kdHQpIHRvIGdldCBhIGxpc3Qgb2YgdG9rZW4gdHlwZSBjb2Rlc1xuIjsKICAgIHJldHVybjsKfQoKc3ViIGNsb3NlX2RlYnVnX2ZpbGUgewoKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICBteSAkZmggICA9ICRzZWxmLT57X2ZofTsKICAgIGlmICggJHNlbGYtPntfZGVidWdfZmlsZV9vcGVuZWR9ICkgewogICAgICAgIGlmICggIWV2YWwgeyAkc2VsZi0+e19maH0tPmNsb3NlKCk7IDEgfSApIHsKCiAgICAgICAgICAgICMgb2ssIG1heWJlIG5vIGNsb3NlIGZ1bmN0aW9uCiAgICAgICAgfQogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgd3JpdGVfZGVidWdfZW50cnkgewoKICAgICMgVGhpcyBpcyBhIGRlYnVnIGR1bXAgcm91dGluZSB3aGljaCBtYXkgYmUgbW9kaWZpZWQgYXMgbmVjZXNzYXJ5CiAgICAjIHRvIGR1bXAgdG9rZW5zIG9uIGEgbGluZS1ieS1saW5lIGJhc2lzLiAgVGhlIG91dHB1dCB3aWxsIGJlIHdyaXR0ZW4KICAgICMgdG8gdGhlIC5ERUJVRyBmaWxlIHdoZW4gdGhlIC1EIGZsYWcgaXMgZW50ZXJlZC4KICAgIG15ICggJHNlbGYsICRsaW5lX29mX3Rva2VucyApID0gQF87CgogICAgbXkgJGlucHV0X2xpbmUgPSAkbGluZV9vZl90b2tlbnMtPntfbGluZV90ZXh0fTsKCiAgICBteSAkcnRva2VuX3R5cGUgPSAkbGluZV9vZl90b2tlbnMtPntfcnRva2VuX3R5cGV9OwogICAgbXkgJHJ0b2tlbnMgICAgID0gJGxpbmVfb2ZfdG9rZW5zLT57X3J0b2tlbnN9OwogICAgbXkgJHJsZXZlbHMgICAgID0gJGxpbmVfb2ZfdG9rZW5zLT57X3JsZXZlbHN9OwogICAgbXkgJHJzbGV2ZWxzICAgID0gJGxpbmVfb2ZfdG9rZW5zLT57X3JzbGV2ZWxzfTsKICAgIG15ICRyYmxvY2tfdHlwZSA9ICRsaW5lX29mX3Rva2Vucy0+e19yYmxvY2tfdHlwZX07CgogICAgbXkgJGlucHV0X2xpbmVfbnVtYmVyID0gJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfbnVtYmVyfTsKICAgIG15ICRsaW5lX3R5cGUgICAgICAgICA9ICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3R5cGV9OwogICAgIyNteSAkcnRva2VuX2FycmF5ICAgICAgPSAkbGluZV9vZl90b2tlbnMtPntfdG9rZW5fYXJyYXl9OwoKICAgIG15ICggJGosICRudW0gKTsKCiAgICBteSAkdG9rZW5fc3RyICAgICAgICAgICAgICA9ICIkaW5wdXRfbGluZV9udW1iZXI6ICI7CiAgICBteSAkcmVjb25zdHJ1Y3RlZF9vcmlnaW5hbCA9ICIkaW5wdXRfbGluZV9udW1iZXI6ICI7CiAgICBteSAkYmxvY2tfc3RyICAgICAgICAgICAgICA9ICIkaW5wdXRfbGluZV9udW1iZXI6ICI7CgogICAgIyR0b2tlbl9zdHIgLj0gIiRsaW5lX3R5cGU6ICI7CiAgICAjJHJlY29uc3RydWN0ZWRfb3JpZ2luYWwgLj0gIiRsaW5lX3R5cGU6ICI7CgogICAgbXkgJHBhdHRlcm4gICA9ICIiOwogICAgbXkgQG5leHRfY2hhciA9ICggJyInLCAnIicgKTsKICAgIG15ICRpX25leHQgICAgPSAwOwogICAgdW5sZXNzICggJHNlbGYtPntfZGVidWdfZmlsZV9vcGVuZWR9ICkgeyAkc2VsZi0+cmVhbGx5X29wZW5fZGVidWdfZmlsZSgpIH0KICAgIG15ICRmaCA9ICRzZWxmLT57X2ZofTsKCiAgICAjIEZJWE1FOiBjb3VsZCBjb252ZXJ0IHRvIHVzZSBvZiB0b2tlbl9hcnJheSBpbnN0ZWFkCiAgICBmb3JlYWNoIG15ICRqICggMCAuLiBAeyRydG9rZW5fdHlwZX0gLSAxICkgewoKICAgICAgICAjIHRlc3RpbmcgcGF0dGVybnMKICAgICAgICBpZiAoICRydG9rZW5fdHlwZS0+WyRqXSBlcSAnaycgKSB7CiAgICAgICAgICAgICRwYXR0ZXJuIC49ICRydG9rZW5zLT5bJGpdOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJHBhdHRlcm4gLj0gJHJ0b2tlbl90eXBlLT5bJGpdOwogICAgICAgIH0KICAgICAgICAkcmVjb25zdHJ1Y3RlZF9vcmlnaW5hbCAuPSAkcnRva2Vucy0+WyRqXTsKICAgICAgICAkYmxvY2tfc3RyICAgICAgICAgICAgICAuPSAiKCRyYmxvY2tfdHlwZS0+WyRqXSkiOwogICAgICAgICRudW0gPSBsZW5ndGgoICRydG9rZW5zLT5bJGpdICk7CiAgICAgICAgbXkgJHR5cGVfc3RyID0gJHJ0b2tlbl90eXBlLT5bJGpdOwoKICAgICAgICAjIGJlIHN1cmUgdGhlcmUgYXJlIG5vIGJsYW5rIHRva2VucyAoc2hvdWxkbid0IGhhcHBlbikKICAgICAgICAjIFRoaXMgY2FuIG9ubHkgaGFwcGVuIGlmIGEgcHJvZ3JhbW1pbmcgZXJyb3IgaGFzIGJlZW4gbWFkZQogICAgICAgICMgYmVjYXVzZSBhbGwgdmFsaWQgdG9rZW5zIGFyZSBub24tYmxhbmsKICAgICAgICBpZiAoICR0eXBlX3N0ciBlcSAnICcgKSB7CiAgICAgICAgICAgIHByaW50ICRmaCAiQkxBTksgVE9LRU4gb24gdGhlIG5leHQgbGluZVxuIjsKICAgICAgICAgICAgJHR5cGVfc3RyID0gJG5leHRfY2hhclskaV9uZXh0XTsKICAgICAgICAgICAgJGlfbmV4dCAgID0gMSAtICRpX25leHQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoIGxlbmd0aCgkdHlwZV9zdHIpID09IDEgKSB7CiAgICAgICAgICAgICR0eXBlX3N0ciA9ICR0eXBlX3N0ciB4ICRudW07CiAgICAgICAgfQogICAgICAgICR0b2tlbl9zdHIgLj0gJHR5cGVfc3RyOwogICAgfQoKICAgICMgV3JpdGUgd2hhdCB5b3Ugd2FudCBoZXJlIC4uLgogICAgIyBwcmludCAkZmggIiRpbnB1dF9saW5lXG4iOwogICAgIyBwcmludCAkZmggIiRwYXR0ZXJuXG4iOwogICAgcHJpbnQgJGZoICIkcmVjb25zdHJ1Y3RlZF9vcmlnaW5hbFxuIjsKICAgIHByaW50ICRmaCAiJHRva2VuX3N0clxuIjsKCiAgICAjcHJpbnQgJGZoICIkYmxvY2tfc3RyXG4iOwogICAgcmV0dXJuOwp9CjE7Cgo=
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyB0aGUgUGVybDo6VGlkeTo6RmlsZVdyaXRlciBjbGFzcyB3cml0ZXMgdGhlIG91dHB1dCBmaWxlCiMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpwYWNrYWdlIFBlcmw6OlRpZHk6OkZpbGVXcml0ZXI7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKb3VyICRWRVJTSU9OID0gJzIwMTkxMjAzJzsKCiMgTWF4aW11bSBudW1iZXIgb2YgbGl0dGxlIG1lc3NhZ2VzOyBwcm9iYWJseSBuZWVkIG5vdCBiZSBjaGFuZ2VkLgpteSAkTUFYX05BR19NRVNTQUdFUyA9IDY7CgpzdWIgd3JpdGVfbG9nZmlsZV9lbnRyeSB7CiAgICBteSAoICRzZWxmLCAkbXNnICkgPSBAXzsKICAgIG15ICRsb2dnZXJfb2JqZWN0ID0gJHNlbGYtPntfbG9nZ2VyX29iamVjdH07CiAgICBpZiAoJGxvZ2dlcl9vYmplY3QpIHsKICAgICAgICAkbG9nZ2VyX29iamVjdC0+d3JpdGVfbG9nZmlsZV9lbnRyeSgkbXNnKTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIG5ldyB7CiAgICBteSAoICRjbGFzcywgJGxpbmVfc2lua19vYmplY3QsICRyT3B0cywgJGxvZ2dlcl9vYmplY3QgKSA9IEBfOwoKICAgIHJldHVybiBibGVzcyB7CiAgICAgICAgX2xpbmVfc2lua19vYmplY3QgICAgICAgICAgID0+ICRsaW5lX3Npbmtfb2JqZWN0LAogICAgICAgIF9sb2dnZXJfb2JqZWN0ICAgICAgICAgICAgICA9PiAkbG9nZ2VyX29iamVjdCwKICAgICAgICBfck9wdHMgICAgICAgICAgICAgICAgICAgICAgPT4gJHJPcHRzLAogICAgICAgIF9vdXRwdXRfbGluZV9udW1iZXIgICAgICAgICA9PiAxLAogICAgICAgIF9jb25zZWN1dGl2ZV9ibGFua19saW5lcyAgICA9PiAwLAogICAgICAgIF9jb25zZWN1dGl2ZV9ub25ibGFua19saW5lcyA9PiAwLAogICAgICAgIF9maXJzdF9saW5lX2xlbmd0aF9lcnJvciAgICA9PiAwLAogICAgICAgIF9tYXhfbGluZV9sZW5ndGhfZXJyb3IgICAgICA9PiAwLAogICAgICAgIF9sYXN0X2xpbmVfbGVuZ3RoX2Vycm9yICAgICA9PiAwLAogICAgICAgIF9maXJzdF9saW5lX2xlbmd0aF9lcnJvcl9hdCA9PiAwLAogICAgICAgIF9tYXhfbGluZV9sZW5ndGhfZXJyb3JfYXQgICA9PiAwLAogICAgICAgIF9sYXN0X2xpbmVfbGVuZ3RoX2Vycm9yX2F0ICA9PiAwLAogICAgICAgIF9saW5lX2xlbmd0aF9lcnJvcl9jb3VudCAgICA9PiAwLAogICAgICAgIF9tYXhfb3V0cHV0X2xpbmVfbGVuZ3RoICAgICA9PiAwLAogICAgICAgIF9tYXhfb3V0cHV0X2xpbmVfbGVuZ3RoX2F0ICA9PiAwLAogICAgfSwgJGNsYXNzOwp9CgpzdWIgdGVlX29uIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAkc2VsZi0+e19saW5lX3Npbmtfb2JqZWN0fS0+dGVlX29uKCk7CiAgICByZXR1cm47Cn0KCnN1YiB0ZWVfb2ZmIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAkc2VsZi0+e19saW5lX3Npbmtfb2JqZWN0fS0+dGVlX29mZigpOwogICAgcmV0dXJuOwp9CgpzdWIgZ2V0X291dHB1dF9saW5lX251bWJlciB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgcmV0dXJuICRzZWxmLT57X291dHB1dF9saW5lX251bWJlcn07Cn0KCnN1YiBkZWNyZW1lbnRfb3V0cHV0X2xpbmVfbnVtYmVyIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAkc2VsZi0+e19vdXRwdXRfbGluZV9udW1iZXJ9LS07CiAgICByZXR1cm47Cn0KCnN1YiBnZXRfY29uc2VjdXRpdmVfbm9uYmxhbmtfbGluZXMgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIHJldHVybiAkc2VsZi0+e19jb25zZWN1dGl2ZV9ub25ibGFua19saW5lc307Cn0KCnN1YiByZXNldF9jb25zZWN1dGl2ZV9ibGFua19saW5lcyB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgJHNlbGYtPntfY29uc2VjdXRpdmVfYmxhbmtfbGluZXN9ID0gMDsKICAgIHJldHVybjsKfQoKc3ViIHdhbnRfYmxhbmtfbGluZSB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgdW5sZXNzICggJHNlbGYtPntfY29uc2VjdXRpdmVfYmxhbmtfbGluZXN9ICkgewogICAgICAgICRzZWxmLT53cml0ZV9ibGFua19jb2RlX2xpbmUoKTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIHJlcXVpcmVfYmxhbmtfY29kZV9saW5lcyB7CgogICAgIyB3cml0ZSBvdXQgdGhlIHJlcXVlc3RlZCBudW1iZXIgb2YgYmxhbmtzIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlIG9mIC1tYmwKICAgICMgdW5sZXNzIC1tYmw9MC4gIFRoaXMgYWxsb3dzIGV4dHJhIGJsYW5rIGxpbmVzIHRvIGJlIHdyaXR0ZW4gZm9yIHN1YnMgYW5kCiAgICAjIHBhY2thZ2VzIGV2ZW4gd2l0aCB0aGUgZGVmYXVsdCAtbWJsPTEKICAgIG15ICggJHNlbGYsICRjb3VudCApID0gQF87CiAgICBteSAkbmVlZCAgID0gJGNvdW50IC0gJHNlbGYtPntfY29uc2VjdXRpdmVfYmxhbmtfbGluZXN9OwogICAgbXkgJHJPcHRzICA9ICRzZWxmLT57X3JPcHRzfTsKICAgIG15ICRmb3JjZWQgPSAkck9wdHMtPnsnbWF4aW11bS1jb25zZWN1dGl2ZS1ibGFuay1saW5lcyd9ID4gMDsKICAgIGZvcmVhY2ggbXkgJGkgKCAwIC4uICRuZWVkIC0gMSApIHsKICAgICAgICAkc2VsZi0+d3JpdGVfYmxhbmtfY29kZV9saW5lKCRmb3JjZWQpOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgd3JpdGVfYmxhbmtfY29kZV9saW5lIHsKICAgIG15ICRzZWxmICAgPSBzaGlmdDsKICAgIG15ICRmb3JjZWQgPSBzaGlmdDsKICAgIG15ICRyT3B0cyAgPSAkc2VsZi0+e19yT3B0c307CiAgICByZXR1cm4KICAgICAgaWYgKCEkZm9yY2VkCiAgICAgICAgJiYgJHNlbGYtPntfY29uc2VjdXRpdmVfYmxhbmtfbGluZXN9ID49CiAgICAgICAgJHJPcHRzLT57J21heGltdW0tY29uc2VjdXRpdmUtYmxhbmstbGluZXMnfSApOwogICAgJHNlbGYtPntfY29uc2VjdXRpdmVfYmxhbmtfbGluZXN9Kys7CiAgICAkc2VsZi0+e19jb25zZWN1dGl2ZV9ub25ibGFua19saW5lc30gPSAwOwogICAgJHNlbGYtPndyaXRlX2xpbmUoIlxuIik7CiAgICByZXR1cm47Cn0KCnN1YiB3cml0ZV9jb2RlX2xpbmUgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIG15ICRhICAgID0gc2hpZnQ7CgogICAgaWYgKCAkYSA9fiAvXlxzKiQvICkgewogICAgICAgIG15ICRyT3B0cyA9ICRzZWxmLT57X3JPcHRzfTsKICAgICAgICByZXR1cm4KICAgICAgICAgIGlmICggJHNlbGYtPntfY29uc2VjdXRpdmVfYmxhbmtfbGluZXN9ID49CiAgICAgICAgICAgICRyT3B0cy0+eydtYXhpbXVtLWNvbnNlY3V0aXZlLWJsYW5rLWxpbmVzJ30gKTsKICAgICAgICAkc2VsZi0+e19jb25zZWN1dGl2ZV9ibGFua19saW5lc30rKzsKICAgICAgICAkc2VsZi0+e19jb25zZWN1dGl2ZV9ub25ibGFua19saW5lc30gPSAwOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJHNlbGYtPntfY29uc2VjdXRpdmVfYmxhbmtfbGluZXN9ID0gMDsKICAgICAgICAkc2VsZi0+e19jb25zZWN1dGl2ZV9ub25ibGFua19saW5lc30rKzsKICAgIH0KICAgICRzZWxmLT53cml0ZV9saW5lKCRhKTsKICAgIHJldHVybjsKfQoKc3ViIHdyaXRlX2xpbmUgewogICAgbXkgKCAkc2VsZiwgJGEgKSA9IEBfOwoKICAgICMgVE9ETzogZ28gdGhyb3VnaCBhbmQgc2VlIGlmIHRoZSB0ZXN0IGlzIG5lY2Vzc2FyeSBoZXJlCiAgICBpZiAoICRhID1+IC9cbiQvICkgeyAkc2VsZi0+e19vdXRwdXRfbGluZV9udW1iZXJ9Kys7IH0KCiAgICAkc2VsZi0+e19saW5lX3Npbmtfb2JqZWN0fS0+d3JpdGVfbGluZSgkYSk7CgogICAgIyBUaGlzIGNhbGN1bGF0aW9uIG9mIGV4Y2VzcyBsaW5lIGxlbmd0aCBpZ25vcmVzIGFueSBpbnRlcm5hbCB0YWJzCiAgICBteSAkck9wdHMgID0gJHNlbGYtPntfck9wdHN9OwogICAgbXkgJGV4Y2VlZCA9IGxlbmd0aCgkYSkgLSAkck9wdHMtPnsnbWF4aW11bS1saW5lLWxlbmd0aCd9IC0gMTsKICAgIGlmICggJGEgPX4gL15cdCsvZyApIHsKICAgICAgICAkZXhjZWVkICs9IHBvcygkYSkgKiAoICRyT3B0cy0+eydpbmRlbnQtY29sdW1ucyd9IC0gMSApOwogICAgfQoKICAgICMgTm90ZSB0aGF0IHdlIGp1c3QgaW5jcmVtZW50ZWQgb3V0cHV0IGxpbmUgbnVtYmVyIHRvIGZ1dHVyZSB2YWx1ZQogICAgIyBzbyB3ZSBtdXN0IHN1YnRyYWN0IDEgZm9yIGN1cnJlbnQgbGluZSBudW1iZXIKICAgIGlmICggbGVuZ3RoKCRhKSA+IDEgKyAkc2VsZi0+e19tYXhfb3V0cHV0X2xpbmVfbGVuZ3RofSApIHsKICAgICAgICAkc2VsZi0+e19tYXhfb3V0cHV0X2xpbmVfbGVuZ3RofSAgICA9IGxlbmd0aCgkYSkgLSAxOwogICAgICAgICRzZWxmLT57X21heF9vdXRwdXRfbGluZV9sZW5ndGhfYXR9ID0gJHNlbGYtPntfb3V0cHV0X2xpbmVfbnVtYmVyfSAtIDE7CiAgICB9CgogICAgaWYgKCAkZXhjZWVkID4gMCApIHsKICAgICAgICBteSAkb3V0cHV0X2xpbmVfbnVtYmVyID0gJHNlbGYtPntfb3V0cHV0X2xpbmVfbnVtYmVyfTsKICAgICAgICAkc2VsZi0+e19sYXN0X2xpbmVfbGVuZ3RoX2Vycm9yfSAgICA9ICRleGNlZWQ7CiAgICAgICAgJHNlbGYtPntfbGFzdF9saW5lX2xlbmd0aF9lcnJvcl9hdH0gPSAkb3V0cHV0X2xpbmVfbnVtYmVyIC0gMTsKICAgICAgICBpZiAoICRzZWxmLT57X2xpbmVfbGVuZ3RoX2Vycm9yX2NvdW50fSA9PSAwICkgewogICAgICAgICAgICAkc2VsZi0+e19maXJzdF9saW5lX2xlbmd0aF9lcnJvcn0gICAgPSAkZXhjZWVkOwogICAgICAgICAgICAkc2VsZi0+e19maXJzdF9saW5lX2xlbmd0aF9lcnJvcl9hdH0gPSAkb3V0cHV0X2xpbmVfbnVtYmVyIC0gMTsKICAgICAgICB9CgogICAgICAgIGlmICgKICAgICAgICAgICAgJHNlbGYtPntfbGFzdF9saW5lX2xlbmd0aF9lcnJvcn0gPiAkc2VsZi0+e19tYXhfbGluZV9sZW5ndGhfZXJyb3J9ICkKICAgICAgICB7CiAgICAgICAgICAgICRzZWxmLT57X21heF9saW5lX2xlbmd0aF9lcnJvcn0gICAgPSAkZXhjZWVkOwogICAgICAgICAgICAkc2VsZi0+e19tYXhfbGluZV9sZW5ndGhfZXJyb3JfYXR9ID0gJG91dHB1dF9saW5lX251bWJlciAtIDE7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRzZWxmLT57X2xpbmVfbGVuZ3RoX2Vycm9yX2NvdW50fSA8ICRNQVhfTkFHX01FU1NBR0VTICkgewogICAgICAgICAgICAkc2VsZi0+d3JpdGVfbG9nZmlsZV9lbnRyeSgKICAgICAgICAgICAgICAgICJMaW5lIGxlbmd0aCBleGNlZWRlZCBieSAkZXhjZWVkIGNoYXJhY3RlcnNcbiIpOwogICAgICAgIH0KICAgICAgICAkc2VsZi0+e19saW5lX2xlbmd0aF9lcnJvcl9jb3VudH0rKzsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIHJlcG9ydF9saW5lX2xlbmd0aF9lcnJvcnMgewogICAgbXkgJHNlbGYgICAgICAgICAgICAgICAgICAgID0gc2hpZnQ7CiAgICBteSAkck9wdHMgICAgICAgICAgICAgICAgICAgPSAkc2VsZi0+e19yT3B0c307CiAgICBteSAkbGluZV9sZW5ndGhfZXJyb3JfY291bnQgPSAkc2VsZi0+e19saW5lX2xlbmd0aF9lcnJvcl9jb3VudH07CiAgICBpZiAoICRsaW5lX2xlbmd0aF9lcnJvcl9jb3VudCA9PSAwICkgewogICAgICAgICRzZWxmLT53cml0ZV9sb2dmaWxlX2VudHJ5KAogICAgICAgICAgICAiTm8gbGluZXMgZXhjZWVkZWQgJHJPcHRzLT57J21heGltdW0tbGluZS1sZW5ndGgnfSBjaGFyYWN0ZXJzXG4iKTsKICAgICAgICBteSAkbWF4X291dHB1dF9saW5lX2xlbmd0aCAgICA9ICRzZWxmLT57X21heF9vdXRwdXRfbGluZV9sZW5ndGh9OwogICAgICAgIG15ICRtYXhfb3V0cHV0X2xpbmVfbGVuZ3RoX2F0ID0gJHNlbGYtPntfbWF4X291dHB1dF9saW5lX2xlbmd0aF9hdH07CiAgICAgICAgJHNlbGYtPndyaXRlX2xvZ2ZpbGVfZW50cnkoCiIgIE1heGltdW0gb3V0cHV0IGxpbmUgbGVuZ3RoIHdhcyAkbWF4X291dHB1dF9saW5lX2xlbmd0aCBhdCBsaW5lICRtYXhfb3V0cHV0X2xpbmVfbGVuZ3RoX2F0XG4iCiAgICAgICAgKTsKCiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgbXkgJHdvcmQgPSAoICRsaW5lX2xlbmd0aF9lcnJvcl9jb3VudCA+IDEgKSA/ICJzIiA6ICIiOwogICAgICAgICRzZWxmLT53cml0ZV9sb2dmaWxlX2VudHJ5KAoiJGxpbmVfbGVuZ3RoX2Vycm9yX2NvdW50IG91dHB1dCBsaW5lJHdvcmQgZXhjZWVkZWQgJHJPcHRzLT57J21heGltdW0tbGluZS1sZW5ndGgnfSBjaGFyYWN0ZXJzOlxuIgogICAgICAgICk7CgogICAgICAgICR3b3JkID0gKCAkbGluZV9sZW5ndGhfZXJyb3JfY291bnQgPiAxICkgPyAiRmlyc3QiIDogIiI7CiAgICAgICAgbXkgJGZpcnN0X2xpbmVfbGVuZ3RoX2Vycm9yICAgID0gJHNlbGYtPntfZmlyc3RfbGluZV9sZW5ndGhfZXJyb3J9OwogICAgICAgIG15ICRmaXJzdF9saW5lX2xlbmd0aF9lcnJvcl9hdCA9ICRzZWxmLT57X2ZpcnN0X2xpbmVfbGVuZ3RoX2Vycm9yX2F0fTsKICAgICAgICAkc2VsZi0+d3JpdGVfbG9nZmlsZV9lbnRyeSgKIiAkd29yZCBhdCBsaW5lICRmaXJzdF9saW5lX2xlbmd0aF9lcnJvcl9hdCBieSAkZmlyc3RfbGluZV9sZW5ndGhfZXJyb3IgY2hhcmFjdGVyc1xuIgogICAgICAgICk7CgogICAgICAgIGlmICggJGxpbmVfbGVuZ3RoX2Vycm9yX2NvdW50ID4gMSApIHsKICAgICAgICAgICAgbXkgJG1heF9saW5lX2xlbmd0aF9lcnJvciAgICAgPSAkc2VsZi0+e19tYXhfbGluZV9sZW5ndGhfZXJyb3J9OwogICAgICAgICAgICBteSAkbWF4X2xpbmVfbGVuZ3RoX2Vycm9yX2F0ICA9ICRzZWxmLT57X21heF9saW5lX2xlbmd0aF9lcnJvcl9hdH07CiAgICAgICAgICAgIG15ICRsYXN0X2xpbmVfbGVuZ3RoX2Vycm9yICAgID0gJHNlbGYtPntfbGFzdF9saW5lX2xlbmd0aF9lcnJvcn07CiAgICAgICAgICAgIG15ICRsYXN0X2xpbmVfbGVuZ3RoX2Vycm9yX2F0ID0gJHNlbGYtPntfbGFzdF9saW5lX2xlbmd0aF9lcnJvcl9hdH07CiAgICAgICAgICAgICRzZWxmLT53cml0ZV9sb2dmaWxlX2VudHJ5KAoiIE1heGltdW0gYXQgbGluZSAkbWF4X2xpbmVfbGVuZ3RoX2Vycm9yX2F0IGJ5ICRtYXhfbGluZV9sZW5ndGhfZXJyb3IgY2hhcmFjdGVyc1xuIgogICAgICAgICAgICApOwogICAgICAgICAgICAkc2VsZi0+d3JpdGVfbG9nZmlsZV9lbnRyeSgKIiBMYXN0IGF0IGxpbmUgJGxhc3RfbGluZV9sZW5ndGhfZXJyb3JfYXQgYnkgJGxhc3RfbGluZV9sZW5ndGhfZXJyb3IgY2hhcmFjdGVyc1xuIgogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybjsKfQoxOwoK
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBUaGlzIGlzIGEgc3RyaXBwZWQgZG93biB2ZXJzaW9uIG9mIElPOjpTY2FsYXJBcnJheQojIEdpdmVuIGEgcmVmZXJlbmNlIHRvIGFuIGFycmF5LCBpdCBzdXBwbGllcyBlaXRoZXI6CiMgYSBnZXRsaW5lIG1ldGhvZCB3aGljaCByZWFkcyBsaW5lcyAobW9kZT0ncicpLCBvcgojIGEgcHJpbnQgbWV0aG9kIHdoaWNoIHJlYWRzIGxpbmVzIChtb2RlPSd3JykKIwojIE5PVEU6IHRoaXMgcm91dGluZSBhc3N1bWVzIHRoYXQgdGhlcmUgYXJlbid0IGFueSBlbWJlZGRlZAojIG5ld2xpbmVzIHdpdGhpbiBhbnkgb2YgdGhlIGFycmF5IGVsZW1lbnRzLiAgVGhlcmUgYXJlIG5vIGNoZWNrcwojIGZvciB0aGF0LgojCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpwYWNrYWdlIFBlcmw6OlRpZHk6OklPU2NhbGFyQXJyYXk7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIENhcnA7Cm91ciAkVkVSU0lPTiA9ICcyMDE5MTIwMyc7CgpzdWIgbmV3IHsKICAgIG15ICggJHBhY2thZ2UsICRyYXJyYXksICRtb2RlICkgPSBAXzsKICAgIG15ICRyZWYgPSByZWYgJHJhcnJheTsKICAgIGlmICggJHJlZiBuZSAnQVJSQVknICkgewogICAgICAgIGNvbmZlc3MgPDxFT007Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpleHBlY3RpbmcgcmVmIHRvIEFSUkFZIGJ1dCBnb3QgcmVmIHRvICgkcmVmKTsgdHJhY2UgZm9sbG93czoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVPTQoKICAgIH0KICAgIGlmICggJG1vZGUgZXEgJ3cnICkgewogICAgICAgIEB7JHJhcnJheX0gPSAoKTsKICAgICAgICByZXR1cm4gYmxlc3MgWyAkcmFycmF5LCAkbW9kZSBdLCAkcGFja2FnZTsKICAgIH0KICAgIGVsc2lmICggJG1vZGUgZXEgJ3InICkgewogICAgICAgIG15ICRpX25leHQgPSAwOwogICAgICAgIHJldHVybiBibGVzcyBbICRyYXJyYXksICRtb2RlLCAkaV9uZXh0IF0sICRwYWNrYWdlOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgY29uZmVzcyA8PEVPTTsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmV4cGVjdGluZyBtb2RlID0gJ3InIG9yICd3JyBidXQgZ290IG1vZGUgKCRtb2RlKTsgdHJhY2UgZm9sbG93czoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVPTQogICAgfQp9CgpzdWIgZ2V0bGluZSB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgbXkgJG1vZGUgPSAkc2VsZi0+WzFdOwogICAgaWYgKCAkbW9kZSBuZSAncicgKSB7CiAgICAgICAgY29uZmVzcyA8PEVPTTsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmdldGxpbmUgcmVxdWlyZXMgbW9kZSA9ICdyJyBidXQgbW9kZSA9ICgkbW9kZSk7IHRyYWNlIGZvbGxvd3M6Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFT00KICAgIH0KICAgIG15ICRpID0gJHNlbGYtPlsyXSsrOwogICAgcmV0dXJuICRzZWxmLT5bMF0tPlskaV07Cn0KCnN1YiBwcmludCB7CiAgICBteSAoICRzZWxmLCAkbXNnICkgPSBAXzsKICAgIG15ICRtb2RlID0gJHNlbGYtPlsxXTsKICAgIGlmICggJG1vZGUgbmUgJ3cnICkgewogICAgICAgIGNvbmZlc3MgPDxFT007Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpwcmludCByZXF1aXJlcyBtb2RlID0gJ3cnIGJ1dCBtb2RlID0gKCRtb2RlKTsgdHJhY2UgZm9sbG93czoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVPTQogICAgfQogICAgcHVzaCBAeyAkc2VsZi0+WzBdIH0sICRtc2c7CiAgICByZXR1cm47Cn0Kc3ViIGNsb3NlIHsgcmV0dXJuIH0KMTsKCg==
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyB0aGUgUGVybDo6VGlkeTo6VmVydGljYWxBbGlnbmVyOjpBbGlnbm1lbnQgY2xhc3MgaG9sZHMgaW5mb3JtYXRpb24KIyBvbiBhIHNpbmdsZSBjb2x1bW4gYmVpbmcgYWxpZ25lZAojCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpwYWNrYWdlIFBlcmw6OlRpZHk6OlZlcnRpY2FsQWxpZ25lcjo6QWxpZ25tZW50Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm91ciAkVkVSU0lPTiA9ICcyMDE5MTIwMyc7Cgp7CgogICAgI3VzZSBDYXJwOwoKICAgICMgICAgX2NvbHVtbiAgICAgICAgICAjIHRoZSBjdXJyZW50IGNvbHVtbiBudW1iZXIKICAgICMgICAgX3N0YXJ0aW5nX2NvbHVtbiAjIGNvbHVtbiBudW1iZXIgd2hlbiBjcmVhdGVkCiAgICAjICAgIF9tYXRjaGluZ190b2tlbiAgIyB3aGF0IHRva2VuIHdlIGFyZSBtYXRjaGluZwogICAgIyAgICBfc3RhcnRpbmdfbGluZSAgICMgdGhlIGxpbmUgaW5kZXggb2YgY3JlYXRpb24KICAgICMgICAgX2VuZGluZ19saW5lCiAgICAjIHRoZSBtb3N0IHJlY2VudCBsaW5lIHRvIHVzZSBpdAogICAgIyAgICBfc2F2ZWRfY29sdW1uCiAgICAjICAgIF9zZXJpYWxfbnVtYmVyICAgIyB1bmlxdWUgbnVtYmVyIGZvciB0aGlzIGFsaWdubWVudAoKICAgIG15ICVkZWZhdWx0X2RhdGEgPSAoCiAgICAgICAgY29sdW1uICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIHN0YXJ0aW5nX2NvbHVtbiA9PiB1bmRlZiwKICAgICAgICBtYXRjaGluZ190b2tlbiAgPT4gdW5kZWYsCiAgICAgICAgc3RhcnRpbmdfbGluZSAgID0+IHVuZGVmLAogICAgICAgIGVuZGluZ19saW5lICAgICA9PiB1bmRlZiwKICAgICAgICBzYXZlZF9jb2x1bW4gICAgPT4gdW5kZWYsCiAgICAgICAgc2VyaWFsX251bWJlciAgID0+IHVuZGVmLAogICAgKTsKCiAgICAjIGNsYXNzIHBvcHVsYXRpb24gY291bnQKICAgIHsKICAgICAgICBteSAkX2NvdW50ID0gMDsKICAgICAgICBzdWIgZ2V0X2NvdW50ICAgICAgICB7IHJldHVybiAkX2NvdW50IH0KICAgICAgICBzdWIgX2luY3JlbWVudF9jb3VudCB7IHJldHVybiArKyRfY291bnQgfQogICAgICAgIHN1YiBfZGVjcmVtZW50X2NvdW50IHsgcmV0dXJuIC0tJF9jb3VudCB9CiAgICB9CgogICAgIyBjb25zdHJ1Y3RvcgogICAgc3ViIG5ldyB7CiAgICAgICAgbXkgKCAkY2FsbGVyLCAlYXJnICkgPSBAXzsKICAgICAgICBteSAkY2FsbGVyX2lzX29iaiA9IHJlZigkY2FsbGVyKTsKICAgICAgICBteSAkY2xhc3MgICAgICAgICA9ICRjYWxsZXJfaXNfb2JqIHx8ICRjYWxsZXI7CiAgICAgICAgIyNubyBzdHJpY3QgInJlZnMiOwogICAgICAgIG15ICRzZWxmID0gYmxlc3Mge30sICRjbGFzczsKCiAgICAgICAgZm9yZWFjaCBteSAka2V5ICgga2V5cyAlZGVmYXVsdF9kYXRhICkgewogICAgICAgICAgICBteSAkX2tleSA9ICdfJyAuICRrZXk7CiAgICAgICAgICAgIGlmICAgICggZXhpc3RzICRhcmd7JGtleX0gKSB7ICRzZWxmLT57JF9rZXl9ID0gJGFyZ3ska2V5fSB9CiAgICAgICAgICAgIGVsc2lmICgkY2FsbGVyX2lzX29iaikgICAgICB7ICRzZWxmLT57JF9rZXl9ID0gJGNhbGxlci0+eyRfa2V5fSB9CiAgICAgICAgICAgIGVsc2UgeyAkc2VsZi0+eyRfa2V5fSA9ICRkZWZhdWx0X2RhdGF7JF9rZXl9IH0KICAgICAgICB9CiAgICAgICAgJHNlbGYtPl9pbmNyZW1lbnRfY291bnQoKTsKICAgICAgICByZXR1cm4gJHNlbGY7CiAgICB9CgogICAgc3ViIERFU1RST1kgewogICAgICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAgICAgJHNlbGYtPl9kZWNyZW1lbnRfY291bnQoKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgc3ViIGdldF9jb2x1bW4geyBteSAkc2VsZiA9IHNoaWZ0OyByZXR1cm4gJHNlbGYtPntfY29sdW1ufSB9CgogICAgc3ViIGdldF9zdGFydGluZ19jb2x1bW4gewogICAgICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAgICAgcmV0dXJuICRzZWxmLT57X3N0YXJ0aW5nX2NvbHVtbn07CiAgICB9CiAgICBzdWIgZ2V0X21hdGNoaW5nX3Rva2VuIHsgbXkgJHNlbGYgPSBzaGlmdDsgcmV0dXJuICRzZWxmLT57X21hdGNoaW5nX3Rva2VufSB9CiAgICBzdWIgZ2V0X3N0YXJ0aW5nX2xpbmUgIHsgbXkgJHNlbGYgPSBzaGlmdDsgcmV0dXJuICRzZWxmLT57X3N0YXJ0aW5nX2xpbmV9IH0KICAgIHN1YiBnZXRfZW5kaW5nX2xpbmUgICAgeyBteSAkc2VsZiA9IHNoaWZ0OyByZXR1cm4gJHNlbGYtPntfZW5kaW5nX2xpbmV9IH0KICAgIHN1YiBnZXRfc2VyaWFsX251bWJlciAgeyBteSAkc2VsZiA9IHNoaWZ0OyByZXR1cm4gJHNlbGYtPntfc2VyaWFsX251bWJlcn0gfQoKICAgIHN1YiBzZXRfY29sdW1uIHsgbXkgKCAkc2VsZiwgJHZhbCApID0gQF87ICRzZWxmLT57X2NvbHVtbn0gPSAkdmFsOyByZXR1cm4gfQoKICAgIHN1YiBzZXRfc3RhcnRpbmdfY29sdW1uIHsKICAgICAgICBteSAoICRzZWxmLCAkdmFsICkgPSBAXzsKICAgICAgICAkc2VsZi0+e19zdGFydGluZ19jb2x1bW59ID0gJHZhbDsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgc3ViIHNldF9tYXRjaGluZ190b2tlbiB7CiAgICAgICAgbXkgKCAkc2VsZiwgJHZhbCApID0gQF87CiAgICAgICAgJHNlbGYtPntfbWF0Y2hpbmdfdG9rZW59ID0gJHZhbDsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgc3ViIHNldF9zdGFydGluZ19saW5lIHsKICAgICAgICBteSAoICRzZWxmLCAkdmFsICkgPSBAXzsKICAgICAgICAkc2VsZi0+e19zdGFydGluZ19saW5lfSA9ICR2YWw7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBzZXRfZW5kaW5nX2xpbmUgewogICAgICAgIG15ICggJHNlbGYsICR2YWwgKSA9IEBfOwogICAgICAgICRzZWxmLT57X2VuZGluZ19saW5lfSA9ICR2YWw7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBpbmNyZW1lbnRfY29sdW1uIHsKICAgICAgICBteSAoICRzZWxmLCAkdmFsICkgPSBAXzsKICAgICAgICAkc2VsZi0+e19jb2x1bW59ICs9ICR2YWw7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBzYXZlX2NvbHVtbiB7CiAgICAgICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgICAgICAkc2VsZi0+e19zYXZlZF9jb2x1bW59ID0gJHNlbGYtPntfY29sdW1ufTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgc3ViIHJlc3RvcmVfY29sdW1uIHsKICAgICAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgICAgICRzZWxmLT57X2NvbHVtbn0gPSAkc2VsZi0+e19zYXZlZF9jb2x1bW59OwogICAgICAgIHJldHVybjsKICAgIH0KfQoKMTsK
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyB0aGUgUGVybDo6VGlkeTo6VmVydGljYWxBbGlnbmVyOjpMaW5lIGNsYXNzIHN1cHBsaWVzIGFuIG9iamVjdCB0bwojIGNvbnRhaW4gYSBzaW5nbGUgb3V0cHV0IGxpbmUKIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnBhY2thZ2UgUGVybDo6VGlkeTo6VmVydGljYWxBbGlnbmVyOjpMaW5lOwp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm91ciAkVkVSU0lPTiA9ICcyMDE5MTIwMyc7Cgp7CgogICAgIyN1c2UgQ2FycDsKCiAgICBteSAlZGVmYXVsdF9kYXRhID0gKAogICAgICAgIGptYXggICAgICAgICAgICAgICAgICAgICAgPT4gdW5kZWYsCiAgICAgICAgam1heF9vcmlnaW5hbF9saW5lICAgICAgICA9PiB1bmRlZiwKICAgICAgICBydG9rZW5zICAgICAgICAgICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIHJmaWVsZHMgICAgICAgICAgICAgICAgICAgPT4gdW5kZWYsCiAgICAgICAgcnBhdHRlcm5zICAgICAgICAgICAgICAgICA9PiB1bmRlZiwKICAgICAgICBpbmRlbnRhdGlvbiAgICAgICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIGxlYWRpbmdfc3BhY2VfY291bnQgICAgICAgPT4gdW5kZWYsCiAgICAgICAgb3V0ZGVudF9sb25nX2xpbmVzICAgICAgICA9PiB1bmRlZiwKICAgICAgICBsaXN0X3R5cGUgICAgICAgICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIGlzX2hhbmdpbmdfc2lkZV9jb21tZW50ICAgPT4gdW5kZWYsCiAgICAgICAgcmFsaWdubWVudHMgICAgICAgICAgICAgICA9PiBbXSwKICAgICAgICBtYXhpbXVtX2xpbmVfbGVuZ3RoICAgICAgID0+IHVuZGVmLAogICAgICAgIHJ2ZXJ0aWNhbF90aWdodG5lc3NfZmxhZ3MgPT4gdW5kZWYsCiAgICAgICAgaXNfdGVybWluYWxfdGVybmFyeSAgICAgICA9PiB1bmRlZiwKICAgICAgICBpc190ZXJtaW5hbF9lbHNlICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIGpfdGVybWluYWxfbWF0Y2ggICAgICAgICAgPT4gdW5kZWYsCiAgICApOwogICAgewoKICAgICAgICAjIG1ldGhvZHMgdG8gY291bnQgb2JqZWN0IHBvcHVsYXRpb24KICAgICAgICBteSAkX2NvdW50ID0gMDsKICAgICAgICBzdWIgZ2V0X2NvdW50ICAgICAgICB7IHJldHVybiAkX2NvdW50OyB9CiAgICAgICAgc3ViIF9pbmNyZW1lbnRfY291bnQgeyByZXR1cm4gKyskX2NvdW50IH0KICAgICAgICBzdWIgX2RlY3JlbWVudF9jb3VudCB7IHJldHVybiAtLSRfY291bnQgfQogICAgfQoKICAgICMgQ29uc3RydWN0b3IgbWF5IGJlIGNhbGxlZCBhcyBhIGNsYXNzIG1ldGhvZAogICAgc3ViIG5ldyB7CiAgICAgICAgbXkgKCAkY2FsbGVyLCAlYXJnICkgPSBAXzsKICAgICAgICBteSAkY2FsbGVyX2lzX29iaiA9IHJlZigkY2FsbGVyKTsKICAgICAgICBteSAkY2xhc3MgICAgICAgICA9ICRjYWxsZXJfaXNfb2JqIHx8ICRjYWxsZXI7CiAgICAgICAgIyNubyBzdHJpY3QgInJlZnMiOwogICAgICAgIG15ICRzZWxmID0gYmxlc3Mge30sICRjbGFzczsKCiAgICAgICAgJHNlbGYtPntfcmFsaWdubWVudHN9ID0gW107CgogICAgICAgIGZvcmVhY2ggbXkgJGtleSAoIGtleXMgJWRlZmF1bHRfZGF0YSApIHsKICAgICAgICAgICAgbXkgJF9rZXkgPSAnXycgLiAka2V5OwoKICAgICAgICAgICAgIyBDYWxsZXIga2V5cyBkbyBub3QgaGF2ZSBhbiB1bmRlcnNjb3JlCiAgICAgICAgICAgIGlmICAgICggZXhpc3RzICRhcmd7JGtleX0gKSB7ICRzZWxmLT57JF9rZXl9ID0gJGFyZ3ska2V5fSB9CiAgICAgICAgICAgIGVsc2lmICgkY2FsbGVyX2lzX29iaikgICAgICB7ICRzZWxmLT57JF9rZXl9ID0gJGNhbGxlci0+eyRfa2V5fSB9CiAgICAgICAgICAgIGVsc2UgeyAkc2VsZi0+eyRfa2V5fSA9ICRkZWZhdWx0X2RhdGF7JF9rZXl9IH0KICAgICAgICB9CgogICAgICAgICRzZWxmLT5faW5jcmVtZW50X2NvdW50KCk7CiAgICAgICAgcmV0dXJuICRzZWxmOwogICAgfQoKICAgIHN1YiBERVNUUk9ZIHsKICAgICAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgICAgICRzZWxmLT5fZGVjcmVtZW50X2NvdW50KCk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBnZXRfam1heCB7IG15ICRzZWxmID0gc2hpZnQ7IHJldHVybiAkc2VsZi0+e19qbWF4fSB9CgogICAgc3ViIGdldF9qbWF4X29yaWdpbmFsX2xpbmUgewogICAgICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAgICAgcmV0dXJuICRzZWxmLT57X2ptYXhfb3JpZ2luYWxfbGluZX07CiAgICB9CiAgICBzdWIgZ2V0X3J0b2tlbnMgICAgIHsgbXkgJHNlbGYgPSBzaGlmdDsgcmV0dXJuICRzZWxmLT57X3J0b2tlbnN9IH0KICAgIHN1YiBnZXRfcmZpZWxkcyAgICAgeyBteSAkc2VsZiA9IHNoaWZ0OyByZXR1cm4gJHNlbGYtPntfcmZpZWxkc30gfQogICAgc3ViIGdldF9ycGF0dGVybnMgICB7IG15ICRzZWxmID0gc2hpZnQ7IHJldHVybiAkc2VsZi0+e19ycGF0dGVybnN9IH0KICAgIHN1YiBnZXRfaW5kZW50YXRpb24geyBteSAkc2VsZiA9IHNoaWZ0OyByZXR1cm4gJHNlbGYtPntfaW5kZW50YXRpb259IH0KCiAgICBzdWIgZ2V0X2pfdGVybWluYWxfbWF0Y2ggewogICAgICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAgICAgcmV0dXJuICRzZWxmLT57X2pfdGVybWluYWxfbWF0Y2h9OwogICAgfQoKICAgIHN1YiBnZXRfaXNfdGVybWluYWxfZWxzZSB7CiAgICAgICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgICAgICByZXR1cm4gJHNlbGYtPntfaXNfdGVybWluYWxfZWxzZX07CiAgICB9CgogICAgc3ViIGdldF9pc190ZXJtaW5hbF90ZXJuYXJ5IHsKICAgICAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgICAgIHJldHVybiAkc2VsZi0+e19pc190ZXJtaW5hbF90ZXJuYXJ5fTsKICAgIH0KCiAgICBzdWIgZ2V0X2xlYWRpbmdfc3BhY2VfY291bnQgewogICAgICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAgICAgcmV0dXJuICRzZWxmLT57X2xlYWRpbmdfc3BhY2VfY291bnR9OwogICAgfQoKICAgIHN1YiBnZXRfb3V0ZGVudF9sb25nX2xpbmVzIHsKICAgICAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgICAgIHJldHVybiAkc2VsZi0+e19vdXRkZW50X2xvbmdfbGluZXN9OwogICAgfQogICAgc3ViIGdldF9saXN0X3R5cGUgeyBteSAkc2VsZiA9IHNoaWZ0OyByZXR1cm4gJHNlbGYtPntfbGlzdF90eXBlfSB9CgogICAgc3ViIGdldF9pc19oYW5naW5nX3NpZGVfY29tbWVudCB7CiAgICAgICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgICAgICByZXR1cm4gJHNlbGYtPntfaXNfaGFuZ2luZ19zaWRlX2NvbW1lbnR9OwogICAgfQoKICAgIHN1YiBnZXRfcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFncyB7CiAgICAgICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgICAgICByZXR1cm4gJHNlbGYtPntfcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFnc307CiAgICB9CgogICAgc3ViIHNldF9jb2x1bW4gewogICAgICAgICMjIEZJWE1FOiBkb2VzIGNhbGxlciBldmVyIHN1cHBseSAkdmFsPz8KICAgICAgICBteSAoICRzZWxmLCAkaiwgJHZhbCApID0gQF87CiAgICAgICAgcmV0dXJuICRzZWxmLT57X3JhbGlnbm1lbnRzfS0+WyRqXS0+c2V0X2NvbHVtbigkdmFsKTsKICAgIH0KCiAgICBzdWIgZ2V0X2FsaWdubWVudCB7CiAgICAgICAgbXkgKCAkc2VsZiwgJGogKSA9IEBfOwogICAgICAgIHJldHVybiAkc2VsZi0+e19yYWxpZ25tZW50c30tPlskal07CiAgICB9CiAgICBzdWIgZ2V0X2FsaWdubWVudHMgeyBteSAkc2VsZiA9IHNoaWZ0OyByZXR1cm4gQHsgJHNlbGYtPntfcmFsaWdubWVudHN9IH0gfQoKICAgIHN1YiBnZXRfY29sdW1uIHsKICAgICAgICBteSAoICRzZWxmLCAkaiApID0gQF87CiAgICAgICAgcmV0dXJuICRzZWxmLT57X3JhbGlnbm1lbnRzfS0+WyRqXS0+Z2V0X2NvbHVtbigpOwogICAgfQoKICAgIHN1YiBnZXRfc3RhcnRpbmdfY29sdW1uIHsKICAgICAgICBteSAoICRzZWxmLCAkaiApID0gQF87CiAgICAgICAgcmV0dXJuICRzZWxmLT57X3JhbGlnbm1lbnRzfS0+WyRqXS0+Z2V0X3N0YXJ0aW5nX2NvbHVtbigpOwogICAgfQoKICAgIHN1YiBpbmNyZW1lbnRfY29sdW1uIHsKICAgICAgICBteSAoICRzZWxmLCAkaywgJHBhZCApID0gQF87CiAgICAgICAgJHNlbGYtPntfcmFsaWdubWVudHN9LT5bJGtdLT5pbmNyZW1lbnRfY29sdW1uKCRwYWQpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgc2V0X2FsaWdubWVudHMgewogICAgICAgIG15ICggJHNlbGYsIEBhcmdzICkgPSBAXzsKICAgICAgICBAeyAkc2VsZi0+e19yYWxpZ25tZW50c30gfSA9IEBhcmdzOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgY3VycmVudF9maWVsZF93aWR0aCB7CiAgICAgICAgbXkgKCAkc2VsZiwgJGogKSA9IEBfOwogICAgICAgIGlmICggJGogPT0gMCApIHsKICAgICAgICAgICAgcmV0dXJuICRzZWxmLT5nZXRfY29sdW1uKCRqKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAkc2VsZi0+Z2V0X2NvbHVtbigkaikgLSAkc2VsZi0+Z2V0X2NvbHVtbiggJGogLSAxICk7CiAgICAgICAgfQogICAgfQoKICAgIHN1YiBmaWVsZF93aWR0aF9ncm93dGggewogICAgICAgIG15ICggJHNlbGYsICRqICkgPSBAXzsKICAgICAgICByZXR1cm4gJHNlbGYtPmdldF9jb2x1bW4oJGopIC0gJHNlbGYtPmdldF9zdGFydGluZ19jb2x1bW4oJGopOwogICAgfQoKICAgIHN1YiBzdGFydGluZ19maWVsZF93aWR0aCB7CiAgICAgICAgbXkgKCAkc2VsZiwgJGogKSA9IEBfOwogICAgICAgIGlmICggJGogPT0gMCApIHsKICAgICAgICAgICAgcmV0dXJuICRzZWxmLT5nZXRfc3RhcnRpbmdfY29sdW1uKCRqKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAkc2VsZi0+Z2V0X3N0YXJ0aW5nX2NvbHVtbigkaikgLQogICAgICAgICAgICAgICRzZWxmLT5nZXRfc3RhcnRpbmdfY29sdW1uKCAkaiAtIDEgKTsKICAgICAgICB9CiAgICB9CgogICAgc3ViIGluY3JlYXNlX2ZpZWxkX3dpZHRoIHsKCiAgICAgICAgbXkgKCAkc2VsZiwgJGosICRwYWQgKSA9IEBfOwogICAgICAgIG15ICRqbWF4ID0gJHNlbGYtPmdldF9qbWF4KCk7CiAgICAgICAgZm9yIG15ICRrICggJGogLi4gJGptYXggKSB7CiAgICAgICAgICAgICRzZWxmLT5pbmNyZW1lbnRfY29sdW1uKCAkaywgJHBhZCApOwogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9CgogICAgc3ViIGdldF9hdmFpbGFibGVfc3BhY2Vfb25fcmlnaHQgewogICAgICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAgICAgbXkgJGptYXggPSAkc2VsZi0+Z2V0X2ptYXgoKTsKICAgICAgICByZXR1cm4gJHNlbGYtPntfbWF4aW11bV9saW5lX2xlbmd0aH0gLSAkc2VsZi0+Z2V0X2NvbHVtbigkam1heCk7CiAgICB9CgogICAgc3ViIHNldF9qbWF4IHsgbXkgKCAkc2VsZiwgJHZhbCApID0gQF87ICRzZWxmLT57X2ptYXh9ID0gJHZhbDsgcmV0dXJuIH0KCiAgICBzdWIgc2V0X2ptYXhfb3JpZ2luYWxfbGluZSB7CiAgICAgICAgbXkgKCAkc2VsZiwgJHZhbCApID0gQF87CiAgICAgICAgJHNlbGYtPntfam1heF9vcmlnaW5hbF9saW5lfSA9ICR2YWw7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBzZXRfcnRva2VucyB7CiAgICAgICAgbXkgKCAkc2VsZiwgJHZhbCApID0gQF87CiAgICAgICAgJHNlbGYtPntfcnRva2Vuc30gPSAkdmFsOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgc2V0X3JmaWVsZHMgewogICAgICAgIG15ICggJHNlbGYsICR2YWwgKSA9IEBfOwogICAgICAgICRzZWxmLT57X3JmaWVsZHN9ID0gJHZhbDsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgc3ViIHNldF9ycGF0dGVybnMgewogICAgICAgIG15ICggJHNlbGYsICR2YWwgKSA9IEBfOwogICAgICAgICRzZWxmLT57X3JwYXR0ZXJuc30gPSAkdmFsOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgc2V0X2luZGVudGF0aW9uIHsKICAgICAgICBteSAoICRzZWxmLCAkdmFsICkgPSBAXzsKICAgICAgICAkc2VsZi0+e19pbmRlbnRhdGlvbn0gPSAkdmFsOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgc2V0X2xlYWRpbmdfc3BhY2VfY291bnQgewogICAgICAgIG15ICggJHNlbGYsICR2YWwgKSA9IEBfOwogICAgICAgICRzZWxmLT57X2xlYWRpbmdfc3BhY2VfY291bnR9ID0gJHZhbDsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgc3ViIHNldF9vdXRkZW50X2xvbmdfbGluZXMgewogICAgICAgIG15ICggJHNlbGYsICR2YWwgKSA9IEBfOwogICAgICAgICRzZWxmLT57X291dGRlbnRfbG9uZ19saW5lc30gPSAkdmFsOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgc2V0X2xpc3RfdHlwZSB7CiAgICAgICAgbXkgKCAkc2VsZiwgJHZhbCApID0gQF87CiAgICAgICAgJHNlbGYtPntfbGlzdF90eXBlfSA9ICR2YWw7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBzZXRfaXNfaGFuZ2luZ19zaWRlX2NvbW1lbnQgewogICAgICAgIG15ICggJHNlbGYsICR2YWwgKSA9IEBfOwogICAgICAgICRzZWxmLT57X2lzX2hhbmdpbmdfc2lkZV9jb21tZW50fSA9ICR2YWw7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBzZXRfYWxpZ25tZW50IHsKICAgICAgICBteSAoICRzZWxmLCAkaiwgJHZhbCApID0gQF87CiAgICAgICAgJHNlbGYtPntfcmFsaWdubWVudHN9LT5bJGpdID0gJHZhbDsKICAgICAgICByZXR1cm47CiAgICB9Cgp9CgoxOwoK
cGFja2FnZSBQb2Q6OlN0cmlwOwoKdXNlIHdhcm5pbmdzOwp1c2Ugc3RyaWN0OwoKdXNlIGJhc2UgKCdQb2Q6OlNpbXBsZScpOwoKb3VyICRWRVJTSU9OID0gIjEuMDIiOwoKc3ViIG5ldyB7CiAgICBteSAkbmV3ID0gc2hpZnQtPlNVUEVSOjpuZXcoQF8pOwogICAgJG5ldy0+e19jb2RlX2xpbmV9PTA7CiAgICAkbmV3LT5jb2RlX2hhbmRsZXIoCiAgICAgICAgc3ViIHsKICAgICAgICAgICAgIyBBZGQgb3B0aW9uYWwgbGluZSBkaXJlY3RpdmVzCiAgICAgICAgICAgIGlmICgkX1syXS0+e19yZXBsYWNlX3dpdGhfY29tbWVudHN9KSB7CiAgICAgICAgICAgICAgICBpZiAoJF9bMl0tPntfY29kZV9saW5lfSsxPCRfWzFdKSB7CiAgICAgICAgICAgICAgICAgICAgcHJpbnQgeyRfWzJde291dHB1dF9maH19ICgiIyBzdHJpcHBlZCBQT0RcbiIpIHggKCRfWzFdIC0gJF9bMl0tPntfY29kZV9saW5lfSAtMSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJF9bMl0tPntfY29kZV9saW5lfT0kX1sxXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwcmludCB7JF9bMl17b3V0cHV0X2ZofX0gJF9bMF0sIlxuIjsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgfSk7CiAgICByZXR1cm4gJG5ldzsKfQoKCnN1YiByZXBsYWNlX3dpdGhfY29tbWVudHMgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgICRzZWxmLT57X3JlcGxhY2Vfd2l0aF9jb21tZW50c30gPSBkZWZpbmVkICRfWzBdID8gJF9bMF0gOiAxOwp9CgoKMTsKX19FTkRfXwoKPXBvZAoKPWhlYWQxIE5BTUUKClBvZDo6U3RyaXAgLSBSZW1vdmUgUE9EIGZyb20gUGVybCBjb2RlCgo9aGVhZDEgU1lOT1BTSVMKCiAgICB1c2UgUG9kOjpTdHJpcDsKCiAgICBteSAkcD1Qb2Q6OlN0cmlwLT5uZXc7ICAgICAgICAgICAgICAjIGNyZWF0ZSBwYXJzZXIKICAgIG15ICRwb2RsZXNzOyAgICAgICAgICAgICAgICAgICAgICAgICMgc2V0IG91dHB1dCBzdHJpbmcKICAgICRwLT5vdXRwdXRfc3RyaW5nKFwkcG9kbGVzcyk7ICAgICAgICMgc2VlIFBvZDo6U2ltcGxlCiAgICAkcC0+cGFyc2Vfc3RyaW5nX2RvY3VtZW50KCRjb2RlKTsgICAjIG9yIHNvbWUgb3RoZXIgcGFyc2luZyBtZXRob2QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgZnJvbSBQb2Q6OlNpbXBsZQogICAgIyAkcG9kbGVzcyB3aWxsIG5vdyBjb250YWluIGNvZGUgd2l0aG91dCBhbnkgUE9ECgoKPWhlYWQxIERFU0NSSVBUSU9OCgpQb2Q6OlN0cmlwIGlzIGEgc3ViY2xhc3Mgb2YgUG9kOjpTaW1wbGUgdGhhdCBzdHJpcHMgYWxsIFBPRCBmcm9tIFBlcmwgQ29kZS4KCj1oZWFkMSBNRVRIT0RTCgpBbGwgbWV0aG9kcyBiZXNpZGVzIHRob3NlIGxpc3RlZCBoZXJlIGFyZSBpbmhlcml0ZWQgZnJvbSBQb2Q6OlNpbXBsZQoKPWhlYWQyIG5ldwoKR2VuZXJhdGUgYSBuZXcgcGFyc2VyIG9iamVjdC4KCj1oZWFkMiByZXBsYWNlX3dpdGhfY29tbWVudHMKCkNhbGwgdGhpcyBtZXRob2Qgd2l0aCBhIHRydWUgYXJndW1lbnQgdG8gcmVwbGFjZSBQT0Qgd2l0aCBjb21tZW50cyAobG9va2luZyBsaWtlICIjIHN0cmlwcGVkIFBPRCIpIGluc3RlYWQgb2Ygc3RyaXBwaW5nIGl0LgoKVGhpcyBoYXMgdGhlIGVmZmVjdCB0aGF0IGxpbmUgbnVtYmVycyBnZXQgcmVwb3J0ZWQgY29ycmVjdGx5IGluIGVycm9yCm1lc3NhZ2VzIGV0Yy4KCj1oZWFkMSBBVVRIT1IKClRob21hcyBLbGF1c25lciwgQzw8IDxkb21tQGNwYW4ub3JnPiA+PgoKPWhlYWQxIEJVR1MKClBsZWFzZSByZXBvcnQgYW55IGJ1Z3Mgb3IgZmVhdHVyZSByZXF1ZXN0cyB0bwpDPGJ1Zy1wb2Qtc3RyaXBAcnQuY3Bhbi5vcmc+LCBvciB0aHJvdWdoIHRoZSB3ZWIgaW50ZXJmYWNlIGF0Ckw8aHR0cDovL3J0LmNwYW4ub3JnPi4gIEkgd2lsbCBiZSBub3RpZmllZCwgYW5kIHRoZW4geW91J2xsIGF1dG9tYXRpY2FsbHkKYmUgbm90aWZpZWQgb2YgcHJvZ3Jlc3Mgb24geW91ciBidWcgYXMgSSBtYWtlIGNoYW5nZXMuCgo9aGVhZDEgQ09QWVJJR0hUICYgTElDRU5TRQoKQ29weXJpZ2h0IDIwMDQsIDIwMDUsIDIwMDYgVGhvbWFzIEtsYXVzbmVyLCBBbGwgUmlnaHRzIFJlc2VydmVkLgoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKdW5kZXIgdGhlIHNhbWUgdGVybXMgYXMgUGVybCBpdHNlbGYuCgo9Y3V0Cgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6Ok9UUlM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgQ29kZTo6VGlkeUFsbCAwLjU2Owp1c2UgRmlsZTo6QmFzZW5hbWU7CnVzZSBGaWxlOjpUZW1wICgpOwp1c2UgSU86OkZpbGU7CnVzZSBQT1NJWCAiOnN5c193YWl0X2giOwp1c2UgVGVybTo6QU5TSUNvbG9yKCk7CnVzZSBUaW1lOjpIaVJlcyBxdyhzbGVlcCk7Cgp1c2UgcGFyZW50IHF3KENvZGU6OlRpZHlBbGwpOwoKIyBSZXF1aXJlIHNvbWUgbmVlZGVkIG1vZHVsZXMgaGVyZSBmb3IgY2xhcml0eSAvIGJldHRlciBlcnJvciBtZXNzYWdlcy4KdXNlIFBlcmw6OkNyaXRpYzsKdXNlIFBlcmw6OlRpZHk7CgpvdXIgJEZyYW1ld29ya1ZlcnNpb25NYWpvciA9IDA7Cm91ciAkRnJhbWV3b3JrVmVyc2lvbk1pbm9yID0gMDsKb3VyICRUaGlyZHBhcnR5TW9kdWxlICAgICAgPSAwOwpvdXIgQEZpbGVMaXN0ICAgICAgICAgICAgICA9ICgpOyAgICAjIGFsbCBmaWxlcyBpbiBjdXJyZW50IHJlcG9zaXRvcnkKCnN1YiBuZXdfZnJvbV9jb25mX2ZpbGUgewogICAgbXkgKCAkQ2xhc3MsICRDb25maWdGaWxlLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZWxmID0gJENsYXNzLT5TVVBFUjo6bmV3X2Zyb21fY29uZl9maWxlKAogICAgICAgICRDb25maWdGaWxlLAogICAgICAgICVQYXJhbSwKICAgICAgICBub19jYWNoZSAgID0+IDEsCiAgICAgICAgbm9fYmFja3VwcyA9PiAxLAogICAgKTsKCiAgICAjIFJlc2V0IHdoZW4gYSBuZXcgb2JqZWN0IGlzIGNyZWF0ZWQKICAgICRGcmFtZXdvcmtWZXJzaW9uTWFqb3IgPSAwOwogICAgJEZyYW1ld29ya1ZlcnNpb25NaW5vciA9IDA7CiAgICAkVGhpcmRwYXJ0eU1vZHVsZSAgICAgID0gMDsKICAgIEBGaWxlTGlzdCAgICAgICAgICAgICAgPSAoKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBEZXRlcm1pbmVGcmFtZXdvcmtWZXJzaW9uRnJvbURpcmVjdG9yeSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgRmlyc3QgY2hlY2sgaWYgd2UgaGF2ZSBhbiBPVFJTIGRpcmVjdG9yeSwgdXNlIFJFTEVBU0UgaW5mbyB0aGVuLgogICAgaWYgKCAtciAkU2VsZi0+e3Jvb3RfZGlyfSAuICcvUkVMRUFTRScgKSB7CiAgICAgICAgbXkgJEZpbGVIYW5kbGUgPSBJTzo6RmlsZS0+bmV3KCAkU2VsZi0+e3Jvb3RfZGlyfSAuICcvUkVMRUFTRScsICdyJyApOwogICAgICAgIG15IEBDb250ZW50ICAgID0gJEZpbGVIYW5kbGUtPmdldGxpbmVzKCk7CgogICAgICAgIG15ICggJFZlcnNpb25NYWpvciwgJFZlcnNpb25NaW5vciApID0gJENvbnRlbnRbMV0gPX4gbXteVkVSU0lPTlxzKz1ccysoXGQrKVwuKFxkKylcLn14bXM7CiAgICAgICAgJEZyYW1ld29ya1ZlcnNpb25NYWpvciA9ICRWZXJzaW9uTWFqb3I7CiAgICAgICAgJEZyYW1ld29ya1ZlcnNpb25NaW5vciA9ICRWZXJzaW9uTWlub3I7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAjIE5vdyBjaGVjayBpZiB3ZSBoYXZlIGEgbW9kdWxlIGRpcmVjdG9yeSB3aXRoIGFuIFNPUE0gZmlsZSBpbiBpdC4KICAgICAgICBteSBAU09QTUZpbGVzID0gZ2xvYiAkU2VsZi0+e3Jvb3RfZGlyfSAuICIvKi5zb3BtIjsKICAgICAgICBpZiAoQFNPUE1GaWxlcykgewoKICAgICAgICAgICAgIyBVc2UgdGhlIGhpZ2hlc3QgZnJhbWV3b3JrIHZlcnNpb24gZnJvbSB0aGUgZmlyc3QgU09QTSBmaWxlLgogICAgICAgICAgICBteSAkRmlsZUhhbmRsZSA9IElPOjpGaWxlLT5uZXcoICRTT1BNRmlsZXNbMF0sICdyJyApOwogICAgICAgICAgICBteSBAQ29udGVudCAgICA9ICRGaWxlSGFuZGxlLT5nZXRsaW5lcygpOwogICAgICAgICAgICBmb3IgbXkgJExpbmUgKEBDb250ZW50KSB7CiAgICAgICAgICAgICAgICBpZiAoICRMaW5lID1+IG17IDxGcmFtZXdvcmsgKD86IFsgXSsgW148Pl0qICk/ID4gfXhtcyApIHsKICAgICAgICAgICAgICAgICAgICBteSAoICRWZXJzaW9uTWFqb3IsICRWZXJzaW9uTWlub3IgKQogICAgICAgICAgICAgICAgICAgICAgICA9ICRMaW5lID1+IG17IDxGcmFtZXdvcmsgKD86IFsgXSsgW148Pl0qICk/ID4gKFxkKykgXC4gKFxkKykgXC4gW148Kl0rIDxcL0ZyYW1ld29yaz4gfXhtczsKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICRWZXJzaW9uTWFqb3IgPiAkRnJhbWV3b3JrVmVyc2lvbk1ham9yCiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRWZXJzaW9uTWFqb3IgPT0gJEZyYW1ld29ya1ZlcnNpb25NYWpvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJFZlcnNpb25NaW5vciA+ICRGcmFtZXdvcmtWZXJzaW9uTWlub3IKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkRnJhbWV3b3JrVmVyc2lvbk1ham9yID0gJFZlcnNpb25NYWpvcjsKICAgICAgICAgICAgICAgICAgICAgICAgJEZyYW1ld29ya1ZlcnNpb25NaW5vciA9ICRWZXJzaW9uTWlub3I7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkTGluZSA9fiBtezxWZW5kb3I+fSAmJiAkTGluZSAhfiBte09UUlN9ICkgewogICAgICAgICAgICAgICAgICAgICRUaGlyZHBhcnR5TW9kdWxlID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJEZyYW1ld29ya1ZlcnNpb25NYWpvcikgewogICAgICAgIHByaW50ICJGb3VuZCBPVFJTIHZlcnNpb24gJEZyYW1ld29ya1ZlcnNpb25NYWpvci4kRnJhbWV3b3JrVmVyc2lvbk1pbm9yLlxuIjsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHByaW50ICJDb3VsZCBub3QgZGV0ZXJtaW5lIE9UUlMgdmVyc2lvbiAoYXNzdW1pbmcgbGF0ZXN0IHZlcnNpb24pIVxuIjsKICAgIH0KCiAgICBpZiAoJFRoaXJkcGFydHlNb2R1bGUpIHsKICAgICAgICBwcmludAogICAgICAgICAgICAiVGhpcyBzZWVtcyB0byBiZSBhIG1vZHVsZSBub3QgY29weXJpZ2h0ZWQgYnkgT1RSUyBBRy4gRmlsZSBjb3B5cmlnaHQgd2lsbCBub3QgYmUgY2hhbmdlZC5cbiI7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBwcmludAogICAgICAgICAgICAiVGhpcyBtb2R1bGUgc2VlbXMgdG8gYmUgY29weXJpZ2h0ZWQgYnkgT1RSUyBBRy4gRmlsZSBjb3B5cmlnaHQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGFzc2lnbmVkIHRvIE9UUlMgQUcuXG4iOwogICAgICAgIHByaW50CiAgICAgICAgICAgICIgIElmIHRoaXMgaXMgbm90IGNvcnJlY3QsIHlvdSBjYW4gY2hhbmdlIHRoZSA8VmVuZG9yPiB0YWcgaW4geW91ciBTT1BNLlxuIjsKICAgIH0KCiAgICByZXR1cm47Cn0KCiMKIyBQcm9jZXNzIGEgbGlzdCBvZiBmaWxlIHBhdGhzIGluIHBhcmFsbGVsIHdpdGggZm9ya2luZyAoaWYgbmVlZGVkKS4KIyAgIFRoaXMgbWV0aG9kIGNhbGxzIHByb2Nlc3NfcGF0aHMgaW50ZXJuYWxseSB0byBoYW5kbGUgdGhlIGZpbGVzIHRoYXQgYXJlIGFscmVhZHkgYXZhaWxhYmxlIG9uIGRpc2suCiMKc3ViIFByb2Nlc3NQYXRoc1BhcmFsbGVsIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT5Qcm9jZXNzUGFyYWxsZWwoCiAgICAgICAgJVBhcmFtLAogICAgICAgIEhhbmRsZXIgPT4gc3ViIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5wcm9jZXNzX3BhdGhzKEBfKTsKICAgICAgICB9LAogICAgKTsKfQoKIwojIFByb2Nlc3MgYSBsaXN0IG9mIGZpbGUgcGF0aHMgaW4gcGFyYWxsZWwgd2l0aCBmb3JraW5nIChpZiBuZWVkZWQpLgojICAgVGhpcyBtZXRob2Qgd2lsbCBjYWxsIGEgY3VzdG9tIGhhbmRsZXIgbWV0aG9kIHRvIG9wZXJhdGUgb24gdGhlIGZpbGUgbmFtZXMuCiMKc3ViIFByb2Nlc3NQYXJhbGxlbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRQcm9jZXNzZXMgPSAkUGFyYW17UHJvY2Vzc2VzfSAvLyAkRU5We09UUlNDT0RFUE9MSUNZX1BST0NFU1NFU30gLy8gNjsKICAgIG15IEBGaWxlcyAgICAgPSBAeyAkUGFyYW17RmlsZVBhdGhzfSAvLyBbXSB9OwogICAgbXkgJEhhbmRsZXIgICA9ICRQYXJhbXtIYW5kbGVyfTsKCiAgICAjIE5vIHBhcmFsbGVsIHByb2Nlc3NpbmcgbmVlZGVkOiBleGVjdXRlIGRpcmVjdGx5LgogICAgaWYgKCAkUHJvY2Vzc2VzIDw9IDEgKSB7CiAgICAgICAgcmV0dXJuICRIYW5kbGVyLT4oQEZpbGVzKTsKICAgIH0KCiAgICAjIFBhcmFsbGVsIHByb2Nlc3NpbmcuIFdlIGNodW5rIHRoZSBkYXRhIGFuZCBleGVjdXRlIHRoZSBjaHVua3MgaW4gcGFyYWxsZWwuCiAgICAjCiAgICAjIFRpZHlBbGwncyBidWlsdC1pbiAtLWpvYnMgZmxhZyBpcyBub3QgdXNlZCwgaXQgc2VlbXMgdG8gYmUgd2F5IHRvbyBzbG93LAogICAgIyAgIHBlcmhhcHMgYmVjYXVzZSBvZiBmb3JraW5nIGZvciBlYWNoIHNpbmdsZSBqb2IuCgogICAgbXkgJUFjdGl2ZUNoaWxkUElEOwoKICAgIG15ICRTdG9wID0gc3ViIHsKCiAgICAgICAgIyBQcm9wYWdhdGUga2lsbCBzaWduYWwgdG8gYWxsIGZvcmtzCiAgICAgICAgZm9yIG15ICRQSUQgKCBzb3J0IGtleXMgJUFjdGl2ZUNoaWxkUElEICkgewogICAgICAgICAgICBraWxsIDksICRQSUQ7CiAgICAgICAgfQoKICAgICAgICBwcmludCAiU3RvcHBlZCBieSB1c2VyIVxuIjsKICAgICAgICByZXR1cm4gMTsKICAgIH07CgogICAgbG9jYWwgJFNJR3tJTlR9ICA9IHN1YiB7ICRTdG9wLT4oKSB9OwogICAgbG9jYWwgJFNJR3tURVJNfSA9IHN1YiB7ICRTdG9wLT4oKSB9OwoKICAgIG15IEBHbG9iYWxSZXN1bHRzOwoKICAgIHByaW50ICJPVFJTQ29kZVBvbGljeSB3aWxsIHVzZSB1cCB0byAkUHJvY2Vzc2VzIHBhcmFsbGVsIHByb2Nlc3Nlcy5cbiI7CgogICAgIyBUbyBzdG9yZSByZXN1bHRzIGZyb20gY2hpbGQgcHJvY2Vzc2VzLgogICAgbXkgJFRlbXBEaXJlY3RvcnkgPSBGaWxlOjpUZW1wLT5uZXdkaXIoKSB8fCBkaWUgIkNvdWxkIG5vdCBjcmVhdGUgdGVtcG9yYXJ5IGRpcmVjdG9yeTogJCEiOwoKICAgICMgc3BsaXQgY2h1bmtzIG9mIGZpbGVzIGZvciBldmVyeSBwcm9jZXNzCiAgICBteSBAQ2h1bmtzOwogICAgbXkgJEl0ZW1Db3VudCA9IDA7CgogICAgZm9yIG15ICRGaWxlIChARmlsZXMpIHsKICAgICAgICBwdXNoIEB7ICRDaHVua3NbICRJdGVtQ291bnQrKyAlICRQcm9jZXNzZXMgXSB9LCAkRmlsZTsKICAgIH0KCiAgICBDSFVOSzoKICAgIGZvciBteSAkQ2h1bmsgKEBDaHVua3MpIHsKCiAgICAgICAgIyBDcmVhdGUgYSBjaGlsZCBwcm9jZXNzLgogICAgICAgIG15ICRQSUQgPSBmb3JrOwoKICAgICAgICAjIENoaWxkIHByb2Nlc3MgY291bGQgbm90IGJlIGNyZWF0ZWQuCiAgICAgICAgaWYgKCAkUElEIDwgMCApIHsKICAgICAgICAgICAgZGllICJVbmFibGUgdG8gZm9yayBhIGNoaWxkIHByb2Nlc3MgZm9yIHRpZGluZyEiOwogICAgICAgIH0KCiAgICAgICAgIyBDaGlsZCBwcm9jZXNzLgogICAgICAgIGlmICggISRQSUQgKSB7CgogICAgICAgICAgICBteSBAUmVzdWx0cyA9ICRIYW5kbGVyLT4oIEB7JENodW5rfSApOwoKICAgICAgICAgICAgbXkgJENoaWxkUElEID0gJCQ7CiAgICAgICAgICAgIFN0b3JhYmxlOjpzdG9yZSggXEBSZXN1bHRzLCAiJFRlbXBEaXJlY3RvcnkvJENoaWxkUElELnRtcCIgKTsKCiAgICAgICAgICAgICMgQ2xvc2UgY2hpbGQgcHJvY2VzcyBhdCB0aGUgZW5kLgogICAgICAgICAgICBleGl0IDA7CiAgICAgICAgfQoKICAgICAgICAjIFBhcmVudCBwcm9jZXNzLgogICAgICAgICRBY3RpdmVDaGlsZFBJRHskUElEfSA9IHsKICAgICAgICAgICAgUElEID0+ICRQSUQsCiAgICAgICAgfTsKICAgIH0KCiAgICAjIENoZWNrIHRoZSBzdGF0dXMgb2YgYWxsIGNoaWxkIHByb2Nlc3NlcyBldmVyeSAwLjEgc2Vjb25kcy4KICAgICMgV2FpdCBmb3IgYWxsIGNoaWxkIHByb2Nlc3NlcyB0byBiZSBmaW5pc2hlZC4KICAgIFdBSVQ6CiAgICB3aGlsZSAoMSkgewoKICAgICAgICBsYXN0IFdBSVQgaWYgISVBY3RpdmVDaGlsZFBJRDsKICAgICAgICBzbGVlcCAwLjE7CgogICAgICAgIFBJRDoKICAgICAgICBmb3IgbXkgJFBJRCAoIHNvcnQga2V5cyAlQWN0aXZlQ2hpbGRQSUQgKSB7CgogICAgICAgICAgICBteSAkV2FpdFJlc3VsdCA9IHdhaXRwaWQoICRQSUQsIFdOT0hBTkcgKTsKCiAgICAgICAgICAgIGRpZSAiQ2hpbGQgcHJvY2VzcyAnJFBJRCcgZXhpdGVkIHdpdGggZXJyb3JzOiAkPyIgaWYgJFdhaXRSZXN1bHQgPT0gLTE7CgogICAgICAgICAgICBpZiAoJFdhaXRSZXN1bHQpIHsKCiAgICAgICAgICAgICAgICBteSAkVGVtcEZpbGUgPSAiJFRlbXBEaXJlY3RvcnkvJFBJRC50bXAiOwogICAgICAgICAgICAgICAgbXkgJFJlc3VsdHM7CgogICAgICAgICAgICAgICAgaWYgKCAhLWUgJFRlbXBGaWxlICkgewogICAgICAgICAgICAgICAgICAgIGRpZSAiQ291bGQgbm90IHJlYWQgcmVzdWx0cyBvZiBwcm9jZXNzICRQSUQuXG4iOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRSZXN1bHRzID0gU3RvcmFibGU6OnJldHJpZXZlKCRUZW1wRmlsZSk7CiAgICAgICAgICAgICAgICB1bmxpbmsgJFRlbXBGaWxlOwoKICAgICAgICAgICAgICAgICMgSm9pbiB0aGUgY2hpbGQgcmVzdWx0cy4KICAgICAgICAgICAgICAgIEBHbG9iYWxSZXN1bHRzID0gKCBAR2xvYmFsUmVzdWx0cywgQHsgJFJlc3VsdHMgfHwgW10gfSApOwoKICAgICAgICAgICAgICAgIGRlbGV0ZSAkQWN0aXZlQ2hpbGRQSUR7JFBJRH07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIEBHbG9iYWxSZXN1bHRzOwp9CgojCiMgUHJpbnQgYSB1c2VmdWwgc3VtbWFyeSBhbmQgZGllIGluIGNhc2Ugb2YgZXJyb3JzLgojCnN1YiBIYW5kbGVSZXN1bHRzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgQEdsb2JhbFJlc3VsdHMgPSBAeyAkUGFyYW17UmVzdWx0c30gLy8gW10gfTsKCiAgICBteSBARXJyb3JSZXN1bHRzID0gZ3JlcCB7ICRfLT5lcnJvcigpIH0gQEdsb2JhbFJlc3VsdHM7CiAgICBpZiAoQEVycm9yUmVzdWx0cykgewogICAgICAgIG15ICRFcnJvckNvdW50ICAgPSBzY2FsYXIoQEVycm9yUmVzdWx0cyk7CiAgICAgICAgbXkgJEVycm9yTWVzc2FnZSA9IHNwcmludGYoCiAgICAgICAgICAgIF9SZXBsYWNlQ29sb3JUYWdzKCJcbjxyZWQ+RXJyb3I6ICVkIGZpbGUocykgZGlkIG5vdCBwYXNzIHZhbGlkYXRpb24uPC9yZWQ+XG4iKSwKICAgICAgICAgICAgJEVycm9yQ291bnQsCiAgICAgICAgKTsKICAgICAgICBpZiAoICRFcnJvckNvdW50IDwgMTAgKSB7CiAgICAgICAgICAgIGZvciBteSAkRXJyb3IgKEBFcnJvclJlc3VsdHMpIHsKICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIiAtICIgLiAkRXJyb3ItPnBhdGgoKSAuICJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZGllICIkRXJyb3JNZXNzYWdlXG4iOwogICAgfQoKICAgIG15IEBUaWRpZWRSZXN1bHRzID0gZ3JlcCB7ICRfLT5zdGF0ZSgpIGVxICd0aWRpZWQnIH0gQEdsb2JhbFJlc3VsdHM7CiAgICBpZiAoQFRpZGllZFJlc3VsdHMpIHsKICAgICAgICBwcmludGYoCiAgICAgICAgICAgIF9SZXBsYWNlQ29sb3JUYWdzKCJcbjxncmVlbj5WYWxpZGF0aW9uIGZpbmlzaGVkLDwvZ3JlZW4+IDx5ZWxsb3c+JWQgZmlsZShzKSB3ZXJlIHRpZGllZC48L3llbGxvdz5cbiIpLAogICAgICAgICAgICBzY2FsYXIoQFRpZGllZFJlc3VsdHMpLAogICAgICAgICk7CgogICAgfQogICAgZWxzZSB7CiAgICAgICAgcHJpbnQgX1JlcGxhY2VDb2xvclRhZ3MoIlxuPGdyZWVuPlZhbGlkYXRpb24gZmluaXNoZWQsIG5vIHByb2JsZW1zIGZvdW5kLjwvZ3JlZW4+XG4iKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKIwojIEdldCBhIGxpc3QgKGFsbW9zdCkgYWxsIHJlbGF0aXZlIGZpbGUgcGF0aHMgZnJvbSB0aGUgcm9vdCBkaXJlY3RvcnkuIFRoaXMgbGlzdCBpcyB1c2VkIGluIHNvbWUgcGx1Z2lucyB0byBtYWtlIHZhbGlkYXRpb24gZGVjaXNpb25zLAojICAgbm90IGZvciB0aGUgYWN0dWFsIGRlY2lzaW9uIHdoaWNoIGZpbGVzIGFyZSB0byBiZSB2YWxpZGF0ZWQuCiMKc3ViIEdldEZpbGVMaXN0RnJvbURpcmVjdG9yeSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgT25seSBydW4gb25jZS4KICAgIHJldHVybiBpZiBARmlsZUxpc3Q7CgogICAgQEZpbGVMaXN0ID0gJFNlbGYtPkZpbmRGaWxlc0luRGlyZWN0b3J5KCBEaXJlY3RvcnkgPT4gJFNlbGYtPntyb290X2Rpcn0gKTsKCiAgICByZXR1cm47Cn0KCiMKIyBHZXQgYSBsaXN0IG9mIGFsbCByZWxhdGl2ZSBmaWxlIHBhdGhzIGluIGEgZGlyZWN0b3J5IHdpdGggc29tZSBnbG9iYWwgaWdub3JlcyBmb3Igc3BlZWQncyBzYWtlLgojCnN1YiBGaW5kRmlsZXNJbkRpcmVjdG9yeSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREaXJlY3RvcnkgPSAkUGFyYW17RGlyZWN0b3J5fTsKCiAgICBteSBARmlsZXM7CgogICAgbXkgJFdhbnRlZCA9IHN1YiB7CgogICAgICAgICMgU2tpcCBub24tcmVndWxhciBmaWxlcyBhbmQgZGlyZWN0b3JpZXMuCiAgICAgICAgcmV0dXJuIGlmICggIS1mICRGaWxlOjpGaW5kOjpuYW1lICk7CgogICAgICAgICMgQWxzbyBza2lwIHN5bWJvbGljIGxpbmtzLCBUaWR5QWxsIGRvZXMgbm90IGxpa2UgdGhlbS4KICAgICAgICByZXR1cm4gaWYgKCAtbCAkRmlsZTo6RmluZDo6bmFtZSApOwoKICAgICAgICAjIFNvbWUgZ2xvYmFsIGhhcmQgaWdub3JlcyB0aGF0IGFyZSBtZWFudCB0byBzcGVlZCB1cCB0aGUgbG9hZGluZyBwcm9jZXNzLAogICAgICAgICMgICBhcyBhcHBseWluZyB0aGUgVGlkeUFsbCBpZ25vcmUvc2VsZWN0IHJ1bGVzIGNhbiBiZSBxdWl0ZSBzbG93LgogICAgICAgIHJldHVybiBpZiAkRmlsZTo6RmluZDo6bmFtZSA9fiBtey9cLmdpdC99OwogICAgICAgIHJldHVybiBpZiAkRmlsZTo6RmluZDo6bmFtZSA9fiBtey9cLnRpZHlhbGwuZC99OwogICAgICAgIHJldHVybiBpZiAkRmlsZTo6RmluZDo6bmFtZSA9fiBtey9cLnZzY29kZS99OwogICAgICAgIHJldHVybiBpZiAkRmlsZTo6RmluZDo6bmFtZSA9fiBtey9ub2RlX21vZHVsZXMvfTsKICAgICAgICByZXR1cm4gaWYgJEZpbGU6OkZpbmQ6Om5hbWUgPX4gbXsvanMtY2FjaGUvfTsKICAgICAgICByZXR1cm4gaWYgJEZpbGU6OkZpbmQ6Om5hbWUgPX4gbXsvY3NzLWNhY2hlL307CiAgICAgICAgcmV0dXJuIGlmICRGaWxlOjpGaW5kOjpuYW1lID1+IG17L3Zhci90bXAvfSAmJiAkRmlsZTo6RmluZDo6bmFtZSAhfiBtey4qXC5zYW1wbGUkfTsKICAgICAgICByZXR1cm4gaWYgJEZpbGU6OkZpbmQ6Om5hbWUgPX4gbXsvdmFyL3B1YmxpYy9kaXN0L307CgogICAgICAgIHB1c2ggQEZpbGVzLCBGaWxlOjpTcGVjLT5hYnMycmVsKCAkRmlsZTo6RmluZDo6bmFtZSwgJFNlbGYtPntyb290X2Rpcn0gKTsKICAgIH07CgogICAgRmlsZTo6RmluZDo6ZmluZCgKICAgICAgICAkV2FudGVkLAogICAgICAgICREaXJlY3RvcnksCiAgICApOwoKICAgIHJldHVybiBARmlsZXM7Cn0KCiMKIyBGaWx0ZXIgcmVsYXRpdmUgZmlsZSBwYXRocyBmb3Igb25seSB0aGUgZmlsZXMgdGhhdCBhcmUgbWF0Y2hlZCBieSBhdCBsZWFzdCBvbmUgcGx1Z2luLgojCnN1YiBGaWx0ZXJNYXRjaGVkRmlsZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gZ3JlcCB7ICRTZWxmLT5wbHVnaW5zX2Zvcl9wYXRoKCRfKSB9IEB7ICRQYXJhbXtGaWxlc30gfTsKfQoKc3ViIF9SZXBsYWNlQ29sb3JUYWdzIHsKICAgIG15ICgkVGV4dCkgPSBAXzsKCiAgICAkVGV4dCAvLz0gJyc7CgogICAgJFRleHQgPX4gc3s8KGdyZWVufHllbGxvd3xyZWQpPiguKj8pPC9cMT59e19Db2xvcigkMSwgJDIpfWdzbXhlOwoKICAgIHJldHVybiAkVGV4dDsKfQoKPWhlYWQyIF9Db2xvcigpCgpUaGlzIHdpbGwgY29sb3IgdGhlIGdpdmVuIHRleHQgKHNlZSBUZXJtOjpBTlNJQ29sb3I6OmNvbG9yKCkpIGlmIEFOU0kgb3V0cHV0IGlzIGF2YWlsYWJsZSBhbmQgYWN0aXZlLCBvdGhlcndpc2UgdGhlIHRleHQKc3RheXMgdW5jaGFuZ2VkLgoKICAgIG15ICRQb3NzaWJseUNvbG9yZWRUZXh0ID0gX0NvbG9yKCdncmVlbicsICRUZXh0KTsKCj1jdXQKCnN1YiBfQ29sb3IgewogICAgbXkgKCAkQ29sb3IsICRUZXh0ICkgPSBAXzsKCiAgICByZXR1cm4gJFRleHQgaWYgJEVOVntPVFJTQ09ERVBPTElDWV9OT0NPTE9SfTsKCiAgICByZXR1cm4gVGVybTo6QU5TSUNvbG9yOjpjb2xvcigkQ29sb3IpIC4gJFRleHQgLiBUZXJtOjpBTlNJQ29sb3I6OmNvbG9yKCdyZXNldCcpOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6Ok9UUlM6OkdpdDo6UHJlQ29tbWl0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKPWhlYWQxIFNZTk9QU0lTCgpUaGlzIGNvbW1pdCBob29rIGxvYWRzIHRoZSBPVFJTIHZlcnNpb24gb2YgQ29kZTo6VGlkeUFsbAp3aXRoIHRoZSBjdXN0b20gcGx1Z2lucywgZXhlY3V0ZXMgaXQgZm9yIGFueSBtb2RpZmllZCBmaWxlcwphbmQgcmV0dXJucyBhIGNvcnJlc3BvbmRpbmcgc3RhdHVzIGNvZGUuCgo9Y3V0Cgp1c2UgQ3dkOwp1c2UgRmlsZTo6U3BlYzsKdXNlIEZpbGU6OkJhc2VuYW1lOwoKdXNlIENvZGU6OlRpZHlBbGw7CnVzZSBJUEM6OlN5c3RlbTo6U2ltcGxlIHF3KGNhcHR1cmV4IHJ1bik7CnVzZSBUcnk6OlRpbnk7CnVzZSBUaWR5QWxsOjpPVFJTOwp1c2UgTW9vOwoKc3ViIFJ1biB7CiAgICBteSAkU2VsZiA9IEBfOwoKICAgIHByaW50ICJPVFJTQ29kZVBvbGljeSBjb21taXQgaG9vayBzdGFydGluZy4uLlxuIjsKCiAgICBteSAkRXJyb3JNZXNzYWdlOwoKICAgIHRyeSB7CiAgICAgICAgIyBGaW5kIGNvbmYgZmlsZSBhdCBnaXQgcm9vdAogICAgICAgIG15ICRSb290RGlyID0gY2FwdHVyZXgoICdnaXQnLCAicmV2LXBhcnNlIiwgIi0tc2hvdy10b3BsZXZlbCIgKTsKICAgICAgICBjaG9tcCgkUm9vdERpcik7CgogICAgICAgICMgR2F0aGVyIGZpbGUgcGF0aHMgdG8gYmUgY29tbWl0dGVkCiAgICAgICAgbXkgJE91dHB1dCA9IGNhcHR1cmV4KCAnZ2l0JywgInN0YXR1cyIsICItLXBvcmNlbGFpbiIgKTsKCiAgICAgICAgIyBGZXRjaCBvbmx5IHN0YWdlZCBmaWxlcyB0aGF0IHdpbGwgYmUgY29tbWl0dGVkLgogICAgICAgIG15IEBDaGFuZ2VkRmlsZXMgPSBncmVwIHsgLWYgJiYgIS1sIH0gKCAkT3V0cHV0ID1+IC9eW01BXStccysoLiopL2dtICk7CiAgICAgICAgcHVzaCBAQ2hhbmdlZEZpbGVzLCBncmVwIHsgLWYgJiYgIS1sIH0gKCAkT3V0cHV0ID1+IC9eXHMqUk0/K1xzKyguKj8pXHMrLT5ccysoLiopL2dtICk7CiAgICAgICAgcmV0dXJuIGlmICFAQ2hhbmdlZEZpbGVzOwoKICAgICAgICAjIEFsd2F5cyBpbmNsdWRlIGFsbCBTT1BNIGZpbGVzIHRvIHZlcmlmeSB0aGUgZmlsZSBsaXN0LgogICAgICAgIGZvciBteSAkU09QTUZpbGUgKCBtYXAgeyBGaWxlOjpTcGVjLT5hYnMycmVsKCAkXywgJFJvb3REaXIgKSB9IGdyZXAgeyAhLWwgJF8gfSBnbG9iKCIkUm9vdERpci8qLnNvcG0iKSApIHsKICAgICAgICAgICAgaWYgKCAhZ3JlcCB7ICRfIGVxICRTT1BNRmlsZSB9IEBDaGFuZ2VkRmlsZXMgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBDaGFuZ2VkRmlsZXMsICRTT1BNRmlsZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBGaW5kIE9UUlNDb2RlUG9saWN5IGNvbmZpZ3VyYXRpb24KICAgICAgICBteSAkU2NyaXB0RGlyZWN0b3J5OwogICAgICAgIGlmICggLWwgJDAgKSB7CiAgICAgICAgICAgICRTY3JpcHREaXJlY3RvcnkgPSBkaXJuYW1lKCByZWFkbGluaygkMCkgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTY3JpcHREaXJlY3RvcnkgPSBkaXJuYW1lKCQwKTsKICAgICAgICB9CiAgICAgICAgbXkgJENvbmZpZ0ZpbGUgPSAkU2NyaXB0RGlyZWN0b3J5IC4gJy8uLi90aWR5YWxscmMnOwoKICAgICAgICBteSAkVGlkeUFsbCA9IFRpZHlBbGw6Ok9UUlMtPm5ld19mcm9tX2NvbmZfZmlsZSgKICAgICAgICAgICAgJENvbmZpZ0ZpbGUsCiAgICAgICAgICAgIGNoZWNrX29ubHkgPT4gMSwKICAgICAgICAgICAgbW9kZSAgICAgICA9PiAnY29tbWl0JywKICAgICAgICAgICAgcm9vdF9kaXIgICA9PiAkUm9vdERpciwKICAgICAgICAgICAgZGF0YV9kaXIgICA9PiBGaWxlOjpTcGVjLT50bXBkaXIoKSwKICAgICAgICApOwogICAgICAgICRUaWR5QWxsLT5EZXRlcm1pbmVGcmFtZXdvcmtWZXJzaW9uRnJvbURpcmVjdG9yeSgpOwogICAgICAgICRUaWR5QWxsLT5HZXRGaWxlTGlzdEZyb21EaXJlY3RvcnkoKTsKCiAgICAgICAgbXkgQENoZWNrUmVzdWx0cyA9ICRUaWR5QWxsLT5Qcm9jZXNzUGF0aHNQYXJhbGxlbCgKICAgICAgICAgICAgRmlsZVBhdGhzID0+IFsgbWFwIHsiJFJvb3REaXIvJF8ifSBAQ2hhbmdlZEZpbGVzIF0sCiAgICAgICAgKTsKCiAgICAgICAgJFRpZHlBbGwtPkhhbmRsZVJlc3VsdHMoCiAgICAgICAgICAgIFJlc3VsdHMgPT4gXEBDaGVja1Jlc3VsdHMsCiAgICAgICAgKTsKICAgIH0KICAgIGNhdGNoIHsKICAgICAgICBteSAkRXhjZXB0aW9uID0gJF87CiAgICAgICAgZGllICJFcnJvciBkdXJpbmcgcHJlLWNvbW1pdCBob29rICh1c2UgLS1uby12ZXJpZnkgdG8gc2tpcCBob29rKTpcbiRFeGNlcHRpb24iOwogICAgfTsKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgZGllICIkRXJyb3JNZXNzYWdlXG5Zb3UgY2FuIHVzZSAtLW5vLXZlcmlmeSB0byBza2lwIHRoZSBob29rXG4iOwogICAgfQp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6Ok9UUlM6OkdpdDo6UHJlUmVjZWl2ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCj1oZWFkMSBTWU5PUFNJUwoKVGhpcyBwcmUgcmVjZWl2ZSBob29rIGxvYWRzIHRoZSBPVFJTIHZlcnNpb24gb2YgQ29kZTo6VGlkeUFsbAp3aXRoIHRoZSBjdXN0b20gcGx1Z2lucywgZXhlY3V0ZXMgaXQgZm9yIGFueSBtb2RpZmllZCBmaWxlcwphbmQgcmV0dXJucyBhIGNvcnJlc3BvbmRpbmcgc3RhdHVzIGNvZGUuCgo9Y3V0Cgp1c2UgQ3dkOwp1c2UgRmlsZTo6U3BlYzsKdXNlIEZpbGU6OkJhc2VuYW1lOwoKdXNlIENvZGU6OlRpZHlBbGw7CnVzZSBJUEM6OlN5c3RlbTo6U2ltcGxlIHF3KGNhcHR1cmV4IHJ1bik7CnVzZSBUcnk6OlRpbnk7CnVzZSBUaWR5QWxsOjpPVFJTOwp1c2UgTW9vOwoKIyBJZ25vcmUgdGhlc2UgcmVwb3NpdG9yaWVzIG9uIHRoZSBzZXJ2ZXIgc28gdGhhdCB3ZSBjYW4gYWx3YXlzIHB1c2ggdG8gdGhlbS4KbXkgJUlnbm9yZVJlcG9zaXRvcmllcyA9ICgKICAgICdvdHJzY29kZXBvbGljeS5naXQnID0+IDEsCgogICAgIyBhdXRvLWdlbmVyYXRlZCBkb2N1bWVudGF0aW9uCiAgICAnb3Rycy1naXRodWItaW8uZ2l0JyA9PiAxLCAgICAjIGRlcHJlY2F0ZWQKICAgICdkb2Mtb3Rycy1jb20uZ2l0JyAgID0+IDEsCgogICAgIyBkb2N1bWVudGF0aW9uIHRvb2xjaGFpbgogICAgJ2RvY2J1aWxkLmdpdCcgPT4gMSwKCiAgICAjIFRoaXJkcGFydHkgY29kZQogICAgJ2J1Z3Mtb3Rycy1vcmcuZ2l0JyA9PiAxLAoKICAgICMgT1RSUyBCbG9nCiAgICAnYmxvZy1vdHJzLWNvbS5naXQnID0+IDEsCgogICAgIyBPVFJTIEJsb2cKICAgICd3d3ctb3Rycy1jb20uZ2l0JyA9PiAxLAoKICAgICMgT1RSU1R1YmUKICAgICdjbGlwcy1vdHJzLWNvbS5naXQnID0+IDEsCgogICAgIyBJbnRlcm5hbCBVWC9VSSB0ZWFtIHJlcG9zaXRvcnkKICAgICd1eC11aS5naXQnID0+IDEsCgogICAgIyBTdHJlYW1saW5lIGljb25zIHJlcG9zaXRvcnkKICAgICdzdHJlYW1saW5lLWljb25zLmdpdCcgPT4gMSwKCiAgICAjIENLRWRpdG9yIDUgY3VzdG9tIGJ1aWxkIHJlcG9zaXRvcnkKICAgICdja2VkaXRvcjUtYnVpbGQtaW5saW5lLW90cnMuZ2l0JyA9PiAxLAoKICAgICMgT1RSUyBNb2JpbGUgQXBwIHJlcG9zaXRvcnkKICAgICdvdHJzLW1vYmlsZS1hcHAuZ2l0JyA9PiAxLAoKICAgICMgVnVlVHJlZXNlbGVjdCBjdXN0b20gYnVpbGQgcmVwb3NpdG9yeQogICAgJ3Z1ZS10cmVlc2VsZWN0LW90cnMuZ2l0JyA9PiAxLAoKICAgICMgR1NEIFRvb2xzIHJlcG9zaXRvcnkKICAgICdnc2QtdG9vbHMuZ2l0JyA9PiAxLAopOwoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRFcnJvck1lc3NhZ2U7CiAgICB0cnkgewoKICAgICAgICBwcmludCAiT1RSU0NvZGVQb2xpY3kgcHJlIHJlY2VpdmUgaG9vayBzdGFydGluZy4uLlxuIjsKCiAgICAgICAgbXkgJElucHV0ID0gJFBhcmFte0lucHV0fTsKICAgICAgICBpZiAoICEkSW5wdXQgKSB7CiAgICAgICAgICAgICRJbnB1dCA9IGRvIHsgbG9jYWwgJC8gPSB1bmRlZjsgPD4gfTsKICAgICAgICB9CgogICAgICAgICMgRGVidWcKICAgICAgICAjcHJpbnQgIkdvdCBkYXRhOlxuJElucHV0IjsKCiAgICAgICAgbXkgJFJvb3REaXJlY3RvcnkgPSBDd2Q6OnJlYWxwYXRoKCk7CiAgICAgICAgbG9jYWwgJEVOVntHSVRfRElSfSA9ICRSb290RGlyZWN0b3J5OwoKICAgICAgICBteSAkUmVwb3NpdG9yeU5hbWUgPSBbIHNwbGl0IG17L30sICRSb290RGlyZWN0b3J5IF0tPlstMV07CiAgICAgICAgaWYgKCAkSWdub3JlUmVwb3NpdG9yaWVzeyRSZXBvc2l0b3J5TmFtZX0gKSB7CiAgICAgICAgICAgIHByaW50ICJTa2lwcGluZyBjaGVja3MgZm9yIHJlcG9zaXRvcnkgJFJlcG9zaXRvcnlOYW1lLlxuIjsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJEVycm9yTWVzc2FnZSA9ICRTZWxmLT5IYW5kbGVJbnB1dCgkSW5wdXQpOwogICAgfQogICAgY2F0Y2ggewogICAgICAgIG15ICRFeGNlcHRpb24gPSAkXzsKICAgICAgICBwcmludCBTVERFUlIgIioqKiBFcnJvciBydW5uaW5nIHByZS1yZWNlaXZlIGhvb2sgKGFsbG93aW5nIHB1c2ggdG8gcHJvY2VlZCk6XG4kRXhjZXB0aW9uIjsKICAgIH07CiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHByaW50IFNUREVSUiAiJEVycm9yTWVzc2FnZVxuIjsKICAgICAgICBwcmludCBTVERFUlIgIioqKiBQdXNoIHdhcyByZWplY3RlZC4gUGxlYXNlIGZpeCB0aGUgZXJyb3JzIGFuZCB0cnkgYWdhaW4uICoqKlxuIjsKICAgICAgICBleGl0IDE7CiAgICB9Cn0KCnN1YiBIYW5kbGVJbnB1dCB7CiAgICBteSAoICRTZWxmLCAkSW5wdXQgKSA9IEBfOwoKICAgIG15IEBMaW5lcyA9IHNwbGl0KCBtL1xuLywgJElucHV0ICk7CgogICAgbXkgKEBSZXN1bHRzKTsKCiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lIChATGluZXMpIHsKICAgICAgICBjaG9tcCgkTGluZSk7CiAgICAgICAgbXkgKCAkQmFzZSwgJENvbW1pdCwgJFJlZiApID0gc3BsaXQoIG0vXHMrLywgJExpbmUgKTsKCiAgICAgICAgaWYgKCAkQ29tbWl0ID1+IG0vXjArJC8gKSB7CgogICAgICAgICAgICAjIE5vIHRhcmdldCBjb21taXQgKGJyYW5jaCAvIHRhZyBkZWxldGUpLgogICAgICAgICAgICBuZXh0IExJTkU7CiAgICAgICAgfQoKICAgICAgICBpZiAoIHN1YnN0ciggJFJlZiwgMCwgOSApIGVxICdyZWZzL3RhZ3MnICkgewoKICAgICAgICAgICAgIyBPbmx5IGFsbG93ICJyZWwtKiIgYXMgbmFtZSBmb3IgbmV3IGFuZCB1cGRhdGVkIHRhZ3MuCiAgICAgICAgICAgIGlmICggJFJlZiAhfiBteyBcQSByZWZzL3RhZ3MvcmVsLVxkK19cZCtfXGQrIChfYWxwaGFcZCsgfCBfYmV0YVxkKyB8IF9yY1xkKyk/IFx6IH14bXMgKSB7CgogICAgICAgICAgICAgICAgbXkgJEVycm9yTWVzc2FnZQogICAgICAgICAgICAgICAgICAgID0gIkVycm9yOiBmb3VuZCBpbnZhbGlkIHRhZyAnJFJlZicgLSBwbGVhc2Ugb25seSB1c2UgcmVsLUFfQl9DIG9yIHJlbC1BX0JfQ18oYWxwaGF8YmV0YXxyYylELiI7CiAgICAgICAgICAgICAgICByZXR1cm4gJEVycm9yTWVzc2FnZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBWYWxpZCB0YWcuCiAgICAgICAgICAgIG5leHQgTElORTsKICAgICAgICB9CgogICAgICAgIHByaW50ICJDaGVja2luZyBmcmFtZXdvcmsgdmVyc2lvbiBmb3IgJFJlZi4uLiAiOwoKICAgICAgICBteSBARmlsZUxpc3QgPSAkU2VsZi0+R2V0R2l0RmlsZUxpc3QoJENvbW1pdCk7CgogICAgICAgICMgQ3JlYXRlIHRpZHlhbGwgZm9yIGVhY2ggYnJhbmNoIHNlcGFyYXRlbHkKICAgICAgICBteSAkVGlkeUFsbCA9ICRTZWxmLT5DcmVhdGVUaWR5QWxsKCAkQ29tbWl0LCBcQEZpbGVMaXN0ICk7CgogICAgICAgIG15IEBDaGFuZ2VkRmlsZXMgPSAkU2VsZi0+R2V0Q2hhbmdlZEZpbGVzKCAkQmFzZSwgJENvbW1pdCApOwoKICAgICAgICAjIEFsd2F5cyBpbmNsdWRlIGFsbCBTT1BNIGZpbGVzIHRvIHZlcmlmeSB0aGUgZmlsZSBsaXN0LgogICAgICAgIGZvciBteSAkU09QTUZpbGUgKCBncmVwIHsgJF8gPX4gbXtcLnNvcG0kfSB9IEBGaWxlTGlzdCApIHsKICAgICAgICAgICAgaWYgKCAhZ3JlcCB7ICRfIGVxICRTT1BNRmlsZSB9IEBDaGFuZ2VkRmlsZXMgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBDaGFuZ2VkRmlsZXMsICRTT1BNRmlsZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcHVzaCBAUmVzdWx0cywgJFRpZHlBbGwtPlByb2Nlc3NQYXJhbGxlbCgKICAgICAgICAgICAgUHJvY2Vzc2VzID0+IDIsCiAgICAgICAgICAgIEZpbGVQYXRocyA9PiBcQENoYW5nZWRGaWxlcywKICAgICAgICAgICAgSGFuZGxlciAgID0+IHN1YiB7CiAgICAgICAgICAgICAgICBteSBASGFuZGxlckZpbGVzID0gQF87CgogICAgICAgICAgICAgICAgbXkgQEhhbmRsZXJSZXN1bHRzOwoKICAgICAgICAgICAgICAgIEZJTEU6CiAgICAgICAgICAgICAgICBmb3IgbXkgJEZpbGUgKEBIYW5kbGVyRmlsZXMpIHsKCiAgICAgICAgICAgICAgICAgICAgIyBEb24ndCB0cnkgdG8gdmFsaWRhdGUgZGVsZXRlZCBmaWxlcy4KICAgICAgICAgICAgICAgICAgICBpZiAoICFncmVwIHsgJF8gZXEgJEZpbGUgfSBARmlsZUxpc3QgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICIkRmlsZSB3YXMgZGVsZXRlZCwgaWdub3JpbmcuXG4iOwogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IEZJTEU7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIEdldCBmaWxlIGZyb20gZ2l0IHJlcG9zaXRvcnksIG9uZSBieSBvbmUgb25seSBhcyB0aGUgY29tbWl0cyBjb3VsZCBiZSBodWdlLgogICAgICAgICAgICAgICAgICAgIG15ICRDb250ZW50cyA9ICRTZWxmLT5HZXRHaXRGaWxlQ29udGVudHMoICRGaWxlLCAkQ29tbWl0ICk7CgogICAgICAgICAgICAgICAgICAgICMgT25seSB2YWxpZGF0ZSBmaWxlcyB3aGljaCBhY3R1YWxseSBoYXZlIHNvbWUgY29udGVudC4KICAgICAgICAgICAgICAgICAgICBpZiAoICRDb250ZW50cyA9fiAvXFMvICYmICRDb250ZW50cyA9fiAvXG4vICkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoKCBASGFuZGxlclJlc3VsdHMsICRUaWR5QWxsLT5wcm9jZXNzX3NvdXJjZSggJENvbnRlbnRzLCAkRmlsZSApICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiBASGFuZGxlclJlc3VsdHM7CiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICB9CgogICAgaWYgKCBteSBARXJyb3JSZXN1bHRzID0gZ3JlcCB7ICRfLT5lcnJvcigpIH0gQFJlc3VsdHMgKSB7CiAgICAgICAgcmV0dXJuIHNwcmludGYoICJFcnJvcjogJWQgZmlsZShzKSBkaWQgbm90IHBhc3MgdmFsaWRhdGlvbiIsIHNjYWxhcihARXJyb3JSZXN1bHRzKSApOwogICAgfQoKICAgIHJldHVybjsKfQoKc3ViIENyZWF0ZVRpZHlBbGwgewogICAgbXkgKCAkU2VsZiwgJENvbW1pdCwgJEZpbGVMaXN0ICkgPSBAXzsKCiAgICAjIEZpbmQgT1RSU0NvZGVQb2xpY3kgY29uZmlndXJhdGlvbgogICAgbXkgJENvbmZpZ0ZpbGUgPSBkaXJuYW1lKF9fRklMRV9fKSAuICcvLi4vLi4vdGlkeWFsbHJjJzsKCiAgICBteSAkVGlkeUFsbCA9IFRpZHlBbGw6Ok9UUlMtPm5ld19mcm9tX2NvbmZfZmlsZSgKICAgICAgICAkQ29uZmlnRmlsZSwKICAgICAgICBjaGVja19vbmx5ID0+IDEsCiAgICAgICAgbW9kZSAgICAgICA9PiAnY29tbWl0JywKICAgICk7CgogICAgIyBXZSBjYW5ub3QgdXNlIHRoZXNlIGZ1bmN0aW9ucyBoZXJlIGJlY2F1c2Ugd2UgaGF2ZSBhIGJhcmUgZ2l0IHJlcG9zaXRvcnksCiAgICAjICAgc28gd2UgaGF2ZSB0byBkbyBpdCBvbiBvdXIgb3duLgogICAgIyRUaWR5QWxsLT5EZXRlcm1pbmVGcmFtZXdvcmtWZXJzaW9uRnJvbURpcmVjdG9yeSgpOwogICAgIyRUaWR5QWxsLT5HZXRGaWxlTGlzdEZyb21EaXJlY3RvcnkoKTsKCiAgICAjIFNldCB0aGUgbGlzdCBvZiBmaWxlcyB0byBiZSBjaGVja2VkCiAgICBAVGlkeUFsbDo6T1RSUzo6RmlsZUxpc3QgPSBAeyRGaWxlTGlzdH07CgogICAgIyBOb3cgd2UgdHJ5IHRvIGRldGVybWluZSB0aGUgT1RSUyB2ZXJzaW9uIGZyb20gdGhlIGNvbW1pdAoKICAgICMgTG9vayBmb3IgYSBSRUxFQVNFIGZpbGUgZmlyc3QgdG8gZGV0ZXJtaW5lIHRoZSBmcmFtZXdvcmsgdmVyc2lvbgogICAgaWYgKCBncmVwIHsgJF8gZXEgJ1JFTEVBU0UnIH0gQHskRmlsZUxpc3R9ICkgewogICAgICAgIG15IEBDb250ZW50ID0gc3BsaXQgL1xuLywgJFNlbGYtPkdldEdpdEZpbGVDb250ZW50cyggJ1JFTEVBU0UnLCAkQ29tbWl0ICk7CgogICAgICAgIG15ICggJFZlcnNpb25NYWpvciwgJFZlcnNpb25NaW5vciApID0gJENvbnRlbnRbMV0gPX4gbXteVkVSU0lPTlxzKz1ccysoXGQrKVwuKFxkKylcLn14bXM7CiAgICAgICAgJFRpZHlBbGw6Ok9UUlM6OkZyYW1ld29ya1ZlcnNpb25NYWpvciA9ICRWZXJzaW9uTWFqb3I7CiAgICAgICAgJFRpZHlBbGw6Ok9UUlM6OkZyYW1ld29ya1ZlcnNpb25NaW5vciA9ICRWZXJzaW9uTWlub3I7CiAgICB9CgogICAgIyBMb29rIGZvciBhbnkgU09QTSBmaWxlcwogICAgZWxzZSB7CiAgICAgICAgRklMRToKICAgICAgICBmb3IgbXkgJEZpbGUgKCBAeyRGaWxlTGlzdH0gKSB7CiAgICAgICAgICAgIGlmICggc3Vic3RyKCAkRmlsZSwgLTUsIDUgKSBlcSAnLnNvcG0nICkgewogICAgICAgICAgICAgICAgbXkgQENvbnRlbnQgPSBzcGxpdCAvXG4vLCAkU2VsZi0+R2V0R2l0RmlsZUNvbnRlbnRzKCAkRmlsZSwgJENvbW1pdCApOwoKICAgICAgICAgICAgICAgIGZvciBteSAkTGluZSAoQENvbnRlbnQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRMaW5lID1+IG17IDxGcmFtZXdvcmsgKD86IFsgXSsgW148Pl0qICk/ID4gfXhtcyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgKCAkVmVyc2lvbk1ham9yLCAkVmVyc2lvbk1pbm9yICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJExpbmUgPX4gbXsgPEZyYW1ld29yayAoPzogWyBdKyBbXjw+XSogKT8gPiAoXGQrKSBcLiAoXGQrKSBcLiBbXjwqXSsgPFwvRnJhbWV3b3JrPiB9eG1zOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVmVyc2lvbk1ham9yID4gJFRpZHlBbGw6Ok9UUlM6OkZyYW1ld29ya1ZlcnNpb25NYWpvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRWZXJzaW9uTWFqb3IgPT0gJFRpZHlBbGw6Ok9UUlM6OkZyYW1ld29ya1ZlcnNpb25NYWpvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICRWZXJzaW9uTWlub3IgPiAkVGlkeUFsbDo6T1RSUzo6RnJhbWV3b3JrVmVyc2lvbk1pbm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUaWR5QWxsOjpPVFJTOjpGcmFtZXdvcmtWZXJzaW9uTWFqb3IgPSAkVmVyc2lvbk1ham9yOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRpZHlBbGw6Ok9UUlM6OkZyYW1ld29ya1ZlcnNpb25NaW5vciA9ICRWZXJzaW9uTWlub3I7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkTGluZSA9fiBtezxWZW5kb3I+fSAmJiAkTGluZSAhfiBte09UUlN9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGlkeUFsbDo6T1RSUzo6VGhpcmRwYXJ0eU1vZHVsZSA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGxhc3QgRklMRTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJFRpZHlBbGw6Ok9UUlM6OkZyYW1ld29ya1ZlcnNpb25NYWpvcikgewogICAgICAgIHByaW50CiAgICAgICAgICAgICJGb3VuZCBPVFJTIHZlcnNpb24gJFRpZHlBbGw6Ok9UUlM6OkZyYW1ld29ya1ZlcnNpb25NYWpvci4kVGlkeUFsbDo6T1RSUzo6RnJhbWV3b3JrVmVyc2lvbk1pbm9yXG4iOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgcHJpbnQgIkNvdWxkIG5vdCBkZXRlcm1pbmUgT1RSUyB2ZXJzaW9uIChhc3N1bWluZyBsYXRlc3QgdmVyc2lvbikhXG4iOwogICAgfQoKICAgIGlmICgkVGlkeUFsbDo6T1RSUzo6VGhpcmRwYXJ0eU1vZHVsZSkgewogICAgICAgIHByaW50CiAgICAgICAgICAgICJUaGlzIHNlZW1zIHRvIGJlIGEgbW9kdWxlIG5vdCBjb3B5cmlnaHRlZCBieSBPVFJTIEFHLiBGaWxlIGNvcHlyaWdodCB3aWxsIG5vdCBiZSBjaGFuZ2VkLlxuIjsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHByaW50CiAgICAgICAgICAgICJUaGlzIG1vZHVsZSBzZWVtcyB0byBiZSBjb3B5cmlnaHRlZCBieSBPVFJTIEFHLiBGaWxlIGNvcHlyaWdodCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgYXNzaWduZWQgdG8gT1RSUyBBRy5cbiI7CiAgICAgICAgcHJpbnQKICAgICAgICAgICAgIiAgSWYgdGhpcyBpcyBub3QgY29ycmVjdCwgeW91IGNhbiBjaGFuZ2UgdGhlIDxWZW5kb3I+IHRhZyBpbiB5b3VyIFNPUE0uXG4iOwogICAgfQoKICAgIHJldHVybiAkVGlkeUFsbDsKfQoKc3ViIEdldEdpdEZpbGVDb250ZW50cyB7CiAgICBteSAoICRTZWxmLCAkRmlsZSwgJENvbW1pdCApID0gQF87CiAgICBteSAkQ29udGVudCA9IGNhcHR1cmV4KCAiZ2l0IiwgInNob3ciLCAiJENvbW1pdDokRmlsZSIgKTsKICAgIHJldHVybiAkQ29udGVudDsKfQoKc3ViIEdldEdpdEZpbGVMaXN0IHsKICAgIG15ICggJFNlbGYsICRDb21taXQgKSA9IEBfOwogICAgbXkgJE91dHB1dCA9IGNhcHR1cmV4KCAiZ2l0IiwgImxzLXRyZWUiLCAiLS1uYW1lLW9ubHkiLCAiLXIiLCAiJENvbW1pdCIgKTsKICAgIHJldHVybiBzcGxpdCAvXG4vLCAkT3V0cHV0Owp9CgpzdWIgR2V0Q2hhbmdlZEZpbGVzIHsKICAgIG15ICggJFNlbGYsICRCYXNlLCAkQ29tbWl0ICkgPSBAXzsKCiAgICAjIE9ubHkgdXNlIHRoZSBsYXN0IGNvbW1pdCBpZiB3ZSBoYXZlIGEgbmV3IGJyYW5jaC4KICAgICMgICBUaGlzIGlzIG5vdCBwZXJmZWN0LCBidXQgb3RoZXJ3aXNlIHF1aXRlIGNvbXBsaWNhdGVkLgogICAgaWYgKCAkQmFzZSA9fiBtL14wKyQvICkgewogICAgICAgIG15ICRPdXRwdXQgPSBjYXB0dXJleCggJ2dpdCcsICdkaWZmLXRyZWUnLCAnLS1uby1jb21taXQtaWQnLCAnLS1uYW1lLW9ubHknLCAnLXInLCAkQ29tbWl0ICk7CiAgICAgICAgbXkgQEZpbGVzICA9IGdyZXAgey9cUy99IHNwbGl0KCBtL1xuLywgJE91dHB1dCApOwogICAgICAgIHJldHVybiBARmlsZXM7CiAgICB9CgogICAgbXkgJE91dHB1dCA9IGNhcHR1cmV4KCAnZ2l0JywgImRpZmYiLCAiLS1udW1zdGF0IiwgIi0tbmFtZS1vbmx5IiwgIiRCYXNlLi4kQ29tbWl0IiApOwogICAgbXkgQEZpbGVzICA9IGdyZXAgey9cUy99IHNwbGl0KCBtL1xuLywgJE91dHB1dCApOwogICAgcmV0dXJuIEBGaWxlczsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6QmFzZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBFbmNvZGUoKTsKdXNlIFRpZHlBbGw6Ok9UUlM7Cgp1c2UgcGFyZW50IHF3KENvZGU6OlRpZHlBbGw6OlBsdWdpbik7CgpzdWIgSXNQbHVnaW5EaXNhYmxlZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRQbHVnaW5QYWNrYWdlID0gcmVmICRTZWxmOwoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte0NvZGV9ICYmICFkZWZpbmVkICRQYXJhbXtGaWxlbmFtZX0gKSB7CiAgICAgICAgcHJpbnQgU1RERVJSICJOZWVkIENvZGUgb3IgRmlsZW5hbWUhXG4iOwogICAgICAgIGRpZTsKICAgIH0KCiAgICBteSAkQ29kZSA9IGRlZmluZWQgJFBhcmFte0NvZGV9ID8gJFBhcmFte0NvZGV9IDogJFNlbGYtPl9HZXRGaWxlQ29udGVudHMoICRQYXJhbXtGaWxlbmFtZX0gKTsKCiAgICBpZiAoICRDb2RlID1+IG17bm9maWx0ZXJcKFteKCldKlxRJFBsdWdpblBhY2thZ2VcRVteKCldKlwpfWlzbXggKSB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgSXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4gewogICAgbXkgKCAkU2VsZiwgJEZyYW1ld29ya1ZlcnNpb25NYWpvciwgJEZyYW1ld29ya1ZlcnNpb25NaW5vciApID0gQF87CgogICAgaWYgKCRUaWR5QWxsOjpPVFJTOjpGcmFtZXdvcmtWZXJzaW9uTWFqb3IpIHsKICAgICAgICByZXR1cm4gMSBpZiAkVGlkeUFsbDo6T1RSUzo6RnJhbWV3b3JrVmVyc2lvbk1ham9yIDwgJEZyYW1ld29ya1ZlcnNpb25NYWpvcjsKICAgICAgICByZXR1cm4gMCBpZiAkVGlkeUFsbDo6T1RSUzo6RnJhbWV3b3JrVmVyc2lvbk1ham9yID4gJEZyYW1ld29ya1ZlcnNpb25NYWpvcjsKICAgICAgICByZXR1cm4gMSBpZiAkVGlkeUFsbDo6T1RSUzo6RnJhbWV3b3JrVmVyc2lvbk1pbm9yIDwgJEZyYW1ld29ya1ZlcnNpb25NaW5vcjsKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICAjIERlZmF1bHQ6IGlmIGZyYW1ld29yayBpcyB1bmtub3duLCByZXR1cm4gZmFsc2UgKHN0cmljdCBjaGVja3MpLgogICAgcmV0dXJuIDA7Cn0KCnN1YiBJc1RoaXJkcGFydHlNb2R1bGUgewogICAgbXkgKCRTZWxmKSA9IEBfOwoKICAgIHJldHVybiAkVGlkeUFsbDo6T1RSUzo6VGhpcmRwYXJ0eU1vZHVsZSA/IDEgOiAwOwp9CgpzdWIgRGllV2l0aEVycm9yIHsKICAgIG15ICggJFNlbGYsICRFcnJvciApID0gQF87CgogICAgY2hvbXAgJEVycm9yOwoKICAgIGRpZSBfQ29sb3IoICd5ZWxsb3cnLCByZWYoJFNlbGYpICkgLiAiXG4iIC4gX0NvbG9yKCAncmVkJywgJEVycm9yICkgLiAiXG4iOwp9Cgo9aGVhZDIgX0NvbG9yKCkKClRoaXMgd2lsbCBjb2xvciB0aGUgZ2l2ZW4gdGV4dCAoc2VlIFRlcm06OkFOU0lDb2xvcjo6Y29sb3IoKSkgaWYgQU5TSSBvdXRwdXQgaXMgYXZhaWxhYmxlIGFuZCBhY3RpdmUsIG90aGVyd2lzZSB0aGUgdGV4dApzdGF5cyB1bmNoYW5nZWQuCgogICAgbXkgJFBvc3NpYmx5Q29sb3JlZFRleHQgPSBfQ29sb3IoJ2dyZWVuJywgJFRleHQpOwoKPWN1dAoKc3ViIF9Db2xvciB7CiAgICBteSAoICRDb2xvciwgJFRleHQgKSA9IEBfOwoKICAgIHJldHVybiAkVGV4dCBpZiAkRU5We09UUlNDT0RFUE9MSUNZX05PQ09MT1J9OwoKICAgIHJldHVybiBUZXJtOjpBTlNJQ29sb3I6OmNvbG9yKCRDb2xvcikgLiAkVGV4dCAuIFRlcm06OkFOU0lDb2xvcjo6Y29sb3IoJ3Jlc2V0Jyk7Cn0KCnN1YiBfR2V0RmlsZUNvbnRlbnRzIHsKICAgIG15ICggJFNlbGYsICRGaWxlbmFtZSApID0gQF87CgogICAgbXkgJEZpbGVIYW5kbGU7CiAgICBpZiAoICFvcGVuICRGaWxlSGFuZGxlLCAnPCcsICRGaWxlbmFtZSApIHsgICAgIyMgbm8gY3JpdGljCiAgICAgICAgcHJpbnQgU1RERVJSICJDYW4ndCBvcGVuICRGaWxlbmFtZVxuIjsKICAgICAgICBkaWU7CiAgICB9CgogICAgbXkgJENvbnRlbnQgPSBkbyB7IGxvY2FsICQvID0gdW5kZWY7IDwkRmlsZUhhbmRsZT4gfTsKICAgIGNsb3NlICRGaWxlSGFuZGxlOwoKICAgIHJldHVybiAkQ29udGVudDsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6Q29tbW9uOjpDUkxGTGluZUVuZGluZ3M7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7Cgp1c2UgcGFyZW50IHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6QmFzZSk7Cgo9aGVhZDEgU1lOT1BTSVMKClRoaXMgcGx1Z2luIGNvbnZlcnRzIGZpbGVzIHdpdGggQ1JMRiBsaW5lIGVuZGluZ3MuCgo9Y3V0CgpzdWIgdHJhbnNmb3JtX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CgogICAgIyBSZW1vdmUgQ1JMRiBsaW5lIGVuZGluZ3MuCiAgICAkQ29kZSA9fiBzeyBcciAkIH17fXhtc2c7CgogICAgcmV0dXJuICRDb2RlOwp9CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICBpZiAoICRDb2RlID1+IG17IFxyICQgfXhtc2cgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIkZvdW5kIENSTEYgbGluZSBlbmRpbmdzISIpOwogICAgfQoKICAgIHJldHVybiAkQ29kZTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6Q29tbW9uOjpDdXN0b21pemF0aW9uTWFya2VyczsKIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpDb21tb246OkN1c3RvbWl6YXRpb25NYXJrZXJzKQojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkNvbW1vbjo6T3JpZ2luKQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UpOwoKPWhlYWQxIFNZTk9QU0lTCgpUaGlzIHBsdWdpbiBjaGVja3MgdGhhdCBvbmx5IHZhbGlkIE9UUlMgY3VzdG9taXphdGlvbiBtYXJrZXJzIGFyZSB1c2VkCnRvIG1hcmsgY2hhbmdlZCBsaW5lcyBpbiBjdXN0b21pemVkL2Rlcml2ZWQgZmlsZXMuCgo9Y3V0CgpzdWIgdHJhbnNmb3JtX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCAyLCA0ICk7CgogICAgIyBGaW5kIHdyb25nIGN1c3RvbWl6YXRpb24gbWFya2VycyB3aXRob3V0IHNwYWNlIG9yIHdpdGggNCBoeXBoZW5zIGFuZCBjb3JyZWN0IHRoZW0KICAgICMKICAgICMgICAjLS0tCiAgICAjCiAgICAjICAgdG8KICAgICMKICAgICMgICAjIC0tLQogICAgIwogICAgJENvZGUgPX4gc3sgXiBbIF0qICggKD86IFwjIHwgXC9cLyApICkgWyBdKiAtezMsNH0gWyBdKiAkIH17JDEgLS0tfXhtc2c7CgogICAgIyBGaW5kIHdyb25nIGN1c3RvbWl6YXRpb24gbWFya2VycyBpbiBKUyBmaWxlcyBhbiBjb3JyZWN0IHRoZW0KICAgICMKICAgICMgICAvKioqLwogICAgIwogICAgIyAgIHRvCiAgICAjCiAgICAjICAgLy8gLS0tCiAgICAjCiAgICAkQ29kZSA9fiBzeyBeIFsgXSogXC8gWyBdKiBcKnsyLDN9IFsgXSogXC8gWyBdKiAkIH17Ly8gLS0tfXhtc2c7CgogICAgIyBGaW5kIHdyb25nIGNvbW1lbnRzIGFuZCBjb3JyZWN0IHRoZW0KICAgICMKICAgICMgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjCiAgICAjICAgb3IKICAgICMKICAgICMgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMKICAgICMgICB0bwogICAgIwogICAgIyAgICMKICAgICMKICAgICRDb2RlID1+IHN7IF4gXG4gXiBbIF0qICg/OiBcIyB8IFwvXC8gKSBbIF0qIC17NSw1MH0gWyBdKiAkIFxuIF4gXG4gfXtcbn14bXNnOwogICAgJENvZGUgPX4gc3sgXiAoIFsgXSogKD86IFwjIHwgXC9cLyApICkgWyBdKiAtezUsNTB9IFsgXSogJCB9eyQxfXhtc2c7CgogICAgIyBGaW5kIHNvbWVzdGhpbmcgbGlrZSB0aGF0IGFuZCByZW1vdmUgdGhlIGxlYWRpbmcgc3BhY2VzCiAgICAjCiAgICAjICAgIyAtLS0KICAgICMgICAjIE9UUlNYeVogLSBIZXJlIGEgY29tbWVudC4KICAgICMgICAjIC0tLQogICAgIwogICAgIyAgIG9yCiAgICAjCiAgICAjICAgIyAtLS0KICAgICMgICAjIE9UUlNYeVoKICAgICMgICAjIC0tLQogICAgIyAgICMgbXkgJFN1YmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JyktPlRpY2tldFN1YmplY3RDbGVhbigpOwogICAgIwogICAgJENvZGUgPX4gc3sKICAgICAgICAoCiAgICAgICAgICAgIF4gWyBdKyAoPzogXCMgfCBcL1wvICkgWyBdKyAtLS0gWyBdKiAkIFxuCiAgICAgICAgICAgIF4gWyBdKyAoPzogXCMgfCBcL1wvICkgWyBdKyBbXiBdKyAoPzogWyBdKyAtIFteXG5dKyB8ICkgJCBcbgogICAgICAgICAgICBeIFsgXSsgKD86IFwjIHwgXC9cLyApIFsgXSsgLS0tIFsgXSogJCBcbgogICAgICAgICAgICAoPzogXiBbIF0rICg/OiBcIyB8IFwvXC8gKSBbXlxuXSogJCBcbiApKgogICAgICAgICkKICAgIH17CiAgICAgICAgbXkgJFN0cmluZyA9ICQxOwogICAgICAgICRTdHJpbmcgPX4gc3sgXiBbIF0rIH17fXhtc2c7CiAgICAgICAgJFN0cmluZzsKICAgIH14bXNnZTsKCiAgICAjIEZpbmQgd3JvbmcgY3VzdG9taXphdGlvbiBtYXJrZXJzIGluIEpTIGZpbGVzIGFuIGNvcnJlY3QgdGhlbQogICAgIwogICAgIyAgIC8qKgogICAgIyAgICogT1RSU1h5WiAtIEhlcmUgYSBjb21tZW50LgogICAgIyAgICoqLwogICAgIwogICAgIyAgIG9yCiAgICAjCiAgICAjICAgLyoqKgogICAgIyAgICogT1RSU1h5WgogICAgIyAgICoqKi8KICAgICMKICAgICMgICB0bwogICAgIwogICAgIyAgIC8vIC0tLQogICAgIyAgIC8vIE9UUlNYeVoKICAgICMgICAvLyAtLS0KICAgICMKICAgICRDb2RlID1+IHN7CiAgICAgICAgXiBbIF0qIFwvIFsgXSogXCp7MiwzfSBbIF0qICQgXG4KICAgICAgICBeIFsgXSogXCp7MSwzfSBbIF0rICggW14gXSsgKD86IFsgXSsgLSBbXlxuXSsgfCApICkgJCBcbgogICAgICAgIF4gWyBdKiBcKnsyLDN9IFsgXSogXC8gWyBdKiAkIFxuCiAgICB9eyRTZWxmLT5fQ3VzdG9taXphdGlvbk1hcmtlcigkMSl9eG1zZ2U7CgogICAgIyBGaW5kIHNvbWVzdGhpbmcgbGlrZSB0aGF0IGFuZCByZW1vdmUgdGhlIGxlYWRpbmcgc3BhY2VzCiAgICAjCiAgICAjICAgIyAtLS0KICAgICMKICAgICRDb2RlID1+IHN7IF4gWyBdKyAoICg/OiBcIyB8IFwvXC8gKSApIFsgXSsgLS0tIFsgXSogJCB9eyQxIC0tLX14bXNnOwoKICAgIHJldHVybiAkQ29kZTsKfQoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCAyLCA0ICk7CgogICAgbXkgKCAkQ291bnRlciwgJEZsYWcsICRFcnJvck1lc3NhZ2UgKTsKCiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lICggc3BsaXQgL1xuLywgJENvZGUgKSB7CgogICAgICAgICRDb3VudGVyKys7CgogICAgICAgICMgQWxsb3cgIyMgbm8gY3JpdGljIGFuZCAjIyB1c2UgY3JpdGljCiAgICAgICAgbmV4dCBMSU5FIGlmICRMaW5lID1+IG17XiBccyogXCNcIyBccysgKD86bm98dXNlKSBccysgY3JpdGljfXhtczsKCiAgICAgICAgIyBBbGxvdyAjIyBub2ZpbHRlcgogICAgICAgIG5leHQgTElORSBpZiAkTGluZSA9fiBte14gXHMqIFwjXCMgXHMrIG5vZmlsdGVyIH14bXM7CgogICAgICAgIGlmICggJExpbmUgPX4gL15bXiNdLyAmJiAkQ291bnRlciA8IDI0ICkgewogICAgICAgICAgICAkRmxhZyA9IDE7CiAgICAgICAgfQogICAgICAgIGlmICggJExpbmUgPX4gL14gKiMgLS0kLyAmJiAoICRDb3VudGVyID4gMjMgfHwgKCAkQ291bnRlciA+IDEwICYmICRGbGFnICkgKSApIHsKICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiTGluZSAkQ291bnRlcjogJExpbmVcbiI7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJExpbmUgPX4gbXsgXiBbIF0qICg/OiBcIyB8IFwvXC8gKSsgWyBdKiAtIFsgXSogJCB9eG1zICkgewogICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkTGluZSA9fiBteyBeIFsgXSogKD86IFwjIHwgXC9cLyApKyAtezEsfSBbIF0qICQgfXhtcyApIHsKICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiTGluZSAkQ291bnRlcjogJExpbmVcbiI7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJExpbmUgPX4gbXsgXiBbIF0qICg/OiBcIyB8IFwvXC8gKSsgWyBdKiAtezQsNDB9IFsgXSogJCB9eG1zICkgewogICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkTGluZSA9fiAvXiAqIysgKltcKlwrXSskLyApIHsKICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiTGluZSAkQ291bnRlcjogJExpbmVcbiI7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJExpbmUgPX4gbXsgXiBbIF0qICg/OiBcIyB8IFwvXC8gKXszLH0gfXhtcyApIHsKICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiTGluZSAkQ291bnRlcjogJExpbmVcbiI7CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7ClBsZWFzZSByZW1vdmUgb3IgcmVwbGFjZSB3cm9uZyBTZXBhcmF0b3JzIGxpa2UgJyMgLS0nLCB2YWxpZCBvbmx5OiAjIC0tLSAoZm9yIGN1c3RvbWl6aW5nIG90cnMgZmlsZXMpLgokRXJyb3JNZXNzYWdlCkVPRgogICAgfQoKICAgIHJldHVybiAkQ29kZTsKfQoKc3ViIF9DdXN0b21pemF0aW9uTWFya2VyIHsKICAgIG15ICggJFNlbGYsICRNb2R1bGUgKSA9IEBfOwoKICAgIHJldHVybiA8PCJFTkRfQ1VTVE9NTUFSS0VSIjsKLy8gLS0tCi8vICRNb2R1bGUKLy8gLS0tCkVORF9DVVNUT01NQVJLRVIKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6Q29tbW9uOjpDdXN0b21pemF0aW9uTWFya2Vyc1RUOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UpOwoKPWhlYWQxIFNZTk9QU0lTCgpUaGlzIHBsdWdpbiBjaGVja3MgdGhhdCBvbmx5IHZhbGlkIE9UUlMgY3VzdG9taXphdGlvbiBtYXJrZXJzIGFyZSB1c2VkCnRvIG1hcmsgY2hhbmdlZCBsaW5lcyBpbiBjdXN0b21pemVkL2Rlcml2ZWQgQzwudHQ+IGZpbGVzLgoKPWN1dAoKc3ViIHRyYW5zZm9ybV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggMiwgNCApOwoKICAgICMgRmluZCBjdXN0b21pemF0aW9uIG1hcmtlcnMgd2l0aCAvLyBpbiAudHQgZmlsZXMgYW5kIHJlcGxhY2UgdGhlbSB3aXRoICMuCiAgICAjCiAgICAjICAgLy8gLS0tCiAgICAjICAgLy8gT1RSU1h5WiAtIEhlcmUgYSBjb21tZW50LgogICAgIyAgIC8vIC0tLQogICAgIwogICAgIyAgIHRvCiAgICAjCiAgICAjICAgIyAtLS0KICAgICMgICAjIE9UUlNYeVogLSBIZXJlIGEgY29tbWVudC4KICAgICMgICAjIC0tLQogICAgIwogICAgJENvZGUgPX4gc3sKICAgICAgICAoCiAgICAgICAgICAgIF4gWyBdKiBcL1wvIFsgXSsgLS0tIFsgXSogJCBcbgogICAgICAgICAgICBeIFsgXSogXC9cLyBbIF0rIFteIF0rICg/OiBbIF0rIC0gW15cbl0rIHwgKSAkIFxuCiAgICAgICAgICAgIF4gWyBdKiBcL1wvIFsgXSsgLS0tIFsgXSogJCBcbgogICAgICAgICAgICAoPzogXiBbIF0qIFwvXC8gW15cbl0qICQgXG4gKSoKICAgICAgICApCiAgICB9ewogICAgICAgIG15ICRTdHJpbmcgPSAkMTsKICAgICAgICAkU3RyaW5nID1+IHN7IF4gWyBdKiBcL1wvIH17I314bXNnOwogICAgICAgICRTdHJpbmc7CiAgICB9eG1zZ2U7CgogICAgIyBGaW5kIHdyb25nIGN1c3RvbWl6YXRpb24gbWFya2VycyBpbiAudHQgZmlsZXMgYW5kIGNvcnJlY3QgdGhlbS4KICAgICMKICAgICMgICAvLyAtLS0KICAgICMKICAgICMgICB0bwogICAgIwogICAgIyAgICMgLS0tCiAgICAjCiAgICAkQ29kZSA9fiBzeyBeIFsgXSogXC9cLyBbIF0rIC0tLSBbIF0qICQgfXsjIC0tLX14bXNnOwoKICAgIHJldHVybiAkQ29kZTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6Q29tbW9uOjpOb0ZpbHRlcjsKIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpQb2Q6OlNwZWxsQ2hlY2spCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7Cgp1c2UgcGFyZW50IHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6QmFzZSk7Cgo9aGVhZDEgU1lOT1BTSVMKClRoaXMgcGx1Z2luIGZpeGVzIG5vZmlsdGVyIGxpbmVzLgoKPWN1dAoKc3ViIHRyYW5zZm9ybV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgICMgUmVwbGFjZSBub2ZpbHRlciBsaW5lcyBpbiBwbSBsaWtlIGZpbGVzLgogICAgIwogICAgIyBPcmlnaW5hbDoKICAgICMgICAgICMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpMZWdhbDo6TGljZW5zZVZhbGlkYXRvcikKICAgICMgICAgICMgbm9maWx0ZXIgKFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TGVnYWw6OkxpY2Vuc2VWYWxpZGF0b3IpCiAgICAjICAgICAjIyBub2ZpbHRlciAoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpMZWdhbDo6TGljZW5zZVZhbGlkYXRvcikKICAgICMgICAgICMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TGVnYWw6OkxpY2Vuc2VWYWxpZGF0b3IpOwogICAgIyAgICAgbXkgJER1bXAgPSBEYXRhOjpEdW1wZXI6OkR1bXBlcigkSGFzaFJlZik7ICAgICNub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OkR1bXBlcikKICAgICMKICAgICMgUmVwbGFjZW1lbnQ6CiAgICAjICAgICAjIyBub2ZpbHRlciAoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpMZWdhbDo6TGljZW5zZVZhbGlkYXRvcikKICAgICMgICAgIG15ICREdW1wID0gRGF0YTo6RHVtcGVyOjpEdW1wZXIoJEhhc2hSZWYpOyAgICAjIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OkR1bXBlcikKICAgICMKICAgICRDb2RlID1+IHN7IF4gKCBbXlwjXG5dKiApIFwjKyBccyogbm8gXHMqIGZpbHRlciBccyogXCggKCAuKz8gKSBcKSAuKj8gXG4gfXskMSMjIG5vZmlsdGVyKCQyKVxufXhtc2c7CgogICAgIyBSZXBsYWNlIG5vZmlsdGVyIGxpbmVzIGluIGpzIGxpa2UgZmlsZXMuCiAgICAjCiAgICAjIE9yaWdpbmFsOgogICAgIyAgICAgLy8gbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpMZWdhbDo6TGljZW5zZVZhbGlkYXRvcikKICAgICMgICAgIC8vIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TGVnYWw6OkxpY2Vuc2VWYWxpZGF0b3IpCiAgICAjICAgICAvLyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkphdmFTY3JpcHQ6OkZpbGVOYW1lKQogICAgIyAgICAgLy8gbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpMZWdhbDo6TGljZW5zZVZhbGlkYXRvcikKICAgICMgICAgIG15ICREdW1wID0gRGF0YTo6RHVtcGVyOjpEdW1wZXIoJEhhc2hSZWYpOyAgICAvLyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OkR1bXBlcikKICAgICMKICAgICMgUmVwbGFjZW1lbnQ6CiAgICAjICAgICAvLyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkxlZ2FsOjpMaWNlbnNlVmFsaWRhdG9yKQogICAgIyAgICAgbXkgJER1bXAgPSBEYXRhOjpEdW1wZXI6OkR1bXBlcigkSGFzaFJlZik7ICAgIC8vIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6RHVtcGVyKQogICAgIwogICAgJENvZGUgPX4gc3sgXiAoIFteXC9cbl0qICkgXC8rIFxzKiBubyBccyogZmlsdGVyIFxzKiBcKCAoIC4rPyApIFwpIC4qPyBcbiB9eyQxLy8gbm9maWx0ZXIoJDIpXG59eG1zZzsKCiAgICAjIFJlcGxhY2Ugbm9maWx0ZXIgbGluZXMgaW4gY3NzIGxpa2UgZmlsZXMuCiAgICAjCiAgICAjIE9yaWdpbmFsOgogICAgIyAgICAgLyogbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpMZWdhbDo6TGljZW5zZVZhbGlkYXRvcikgKi8KICAgICMgICAgIC8qKiAgbm8gZmlsdGVyIChUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkxlZ2FsOjpMaWNlbnNlVmFsaWRhdG9yKSAqLwogICAgIyAgICAgLyogIG5vZmlsdGVyIChUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkxlZ2FsOjpMaWNlbnNlVmFsaWRhdG9yKTsgKi8KICAgICMKICAgICMgUmVwbGFjZW1lbnQ6CiAgICAjICAgICAvKiBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkxlZ2FsOjpMaWNlbnNlVmFsaWRhdG9yKSAqLwogICAgIwogICAgJENvZGUKICAgICAgICA9fiBzeyBeICggXHMqICkgXFwgXCorIFteXG5dKiBubyBccyogZmlsdGVyIFxzKiBcKCAoIC4rPyApIFwpIC4qPyBcKisgXFwgW15cbl0qIFxuIH17JDEvKiBub2ZpbHRlcigkMikgKi9cbn14bXNnOwoKICAgICMgUmVwbGFjZSBub2ZpbHRlciBsaW5lcyBpbiB4bWwgbGlrZSBmaWxlcy4KICAgICMKICAgICMgT3JpZ2luYWw6CiAgICAjICAgICA8IS0tIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TGVnYWw6OkxpY2Vuc2VWYWxpZGF0b3IpIC0tPgogICAgIyAgICAgPCEtLSAgbm8gZmlsdGVyIChUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkxlZ2FsOjpMaWNlbnNlVmFsaWRhdG9yKSAtLT4KICAgICMgICAgIDwhLS0gIG5vZmlsdGVyIChUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkxlZ2FsOjpMaWNlbnNlVmFsaWRhdG9yKTsgLS0+CiAgICAjCiAgICAjIFJlcGxhY2VtZW50OgogICAgIyAgICAgPCEtLSBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkxlZ2FsOjpMaWNlbnNlVmFsaWRhdG9yKSAtLT4KICAgICMKICAgICRDb2RlCiAgICAgICAgPX4gc3sgXiAoIFxzKiApIDwhLS0gW15cbl0qIG5vIFxzKiBmaWx0ZXIgXHMqIFwoICggLis/ICkgXCkgLio/IC0tPiBbXlxuXSogXG4gfXskMTwhLS0gbm9maWx0ZXIoJDIpIC0tPlxufXhtc2c7CgogICAgcmV0dXJuICRDb2RlOwp9CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICByZXR1cm4gJENvZGUgaWYgJENvZGUgIX4gbXsgbm9maWx0ZXIgXCggLis/IFwpIH14bXM7CgogICAgaWYgKCAkQ29kZSA9fiBteyA8IS0tIFxzKiBub2ZpbHRlciBccyogXCggfXhtcyApIHsKCiAgICAgICAgaWYgKCAkQ29kZSAhfiBteyA8IS0tIFxzIG5vZmlsdGVyIFwoIC4rPyBcKSBccyAtLT4gfXhtcyApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIkZvdW5kIGludmFsaWQgbm9maWx0ZXIoKSBYTUwgbGluZSEiKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgaWYgKCAkQ29kZSAhfiBteyAoPzogXCNcIyB8IFwvXC8gfCBcL1wqICkgXHMgbm9maWx0ZXIgXCggLis/IFwpIH14bXMgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCJGb3VuZCBpbnZhbGlkIG5vZmlsdGVyKCkgbGluZSEiKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRDb2RlOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6Q29tbW9uOjpPcmlnaW47Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7Cgp1c2UgcGFyZW50IHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6QmFzZSk7Cgo9aGVhZDEgU1lOT1BTSVMKClRoaXMgcGx1Z2luIGNoZWNrcyB0aGF0IG9ubHkgdmFsaWQgT1RSUyBvcmlnaW5zIGFyZSB1c2VkCmluIGN1c3RvbWl6ZWQvZGVyaXZlZCBmaWxlcy4KCj1jdXQKCnN1YiB0cmFuc2Zvcm1fc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICAjIFJlbW92ZSBmb3JtZXItb3JpZ2luIGJlY2F1c2UgaXQncyBub3QgbmVlZGVkIGFueSBtb3JlCiAgICAkQ29kZSA9fiBzeyBeIFsgXSogKD86IFwjIHwgXC9cLyApIFsgXSsgKD86IFwkICkqIGZvcm1lci1vcmlnaW46IC4rPyAkIFxuIH17fXhtc2c7CgogICAgbXkgJE9yaWdpbiA9ICckb3JpZ2luOic7CgogICAgIyBUcmFuc2ZlcnMgdGhlIG9sZCBvcmlnaW4KICAgICMKICAgICMgIyAkb3JpZ2luOiBodHRwczovL2dpdGh1Yi5jb20vT1RSUy9JVFNNSW5jaWRlbnRQcm9ibGVtTWFuYWdlbWVudC9ibG9iLzc0ZWZjY2JjNzgyMTUzNzEzNGI1MjBiNTA4YTExNmFmZGQ0ODlhZDQvS2VybmVsL01vZHVsZXMvQWdlbnRUaWNrZXRBY3Rpb25Db21tb24ucG0KICAgICMKICAgICMgdG8gdGhlIG5ldwogICAgIwogICAgIyAjICRvcmlnaW46IElUU01JbmNpZGVudFByb2JsZW1NYW5hZ2VtZW50IC0gNzRlZmNjYmM3ODIxNTM3MTM0YjUyMGI1MDhhMTE2YWZkZDQ4OWFkNCAtIEtlcm5lbC9Nb2R1bGVzL0FnZW50VGlja2V0QWN0aW9uQ29tbW9uLnBtCiAgICAjCiAgICAkQ29kZSA9fiBzewogICAgICAgIF4KICAgICAgICAoIFsgXSogKD86IFwjIFsgXSsgIHwgXC9cLyBbIF0rIHwgPEdpdD4gKSApCiAgICAgICAgKD86IFwkIHzCoCkgb3JpZ2luOiBbIF0rIGh0dHAgKD86IHMgfMKgKSA6XC9cLyBnaXRodWIgXC4gY29tIFwvIE9UUlMgXC8KICAgICAgICAoIFteXC8gXG5dKyApCiAgICAgICAgXC8gKD86IGJsb2JcLyB8IGNvbW1pdFwvIHwgICkKICAgICAgICAoIFthLXowLTldKyApCiAgICAgICAgXC8KICAgICAgICAoIC4rPyApCiAgICAgICAgJAogICAgfXskMSRPcmlnaW4gJDIgLSAkMyAtICQ0fXhtczsKCiAgICAjIFRyYW5zZmVycyB0aGUgb2xkIG9yaWdpbgogICAgIwogICAgIyAjICRvcmlnaW46IGh0dHBzOi8vZ2l0Lm90cnMuY29tL290cnMvSVRTTUluY2lkZW50UHJvYmxlbU1hbmFnZW1lbnQvYmxvYnMvNzRlZmNjYmM3ODIxNTM3MTM0YjUyMGI1MDhhMTE2YWZkZDQ4OWFkNC9LZXJuZWwvTW9kdWxlcy9BZ2VudFRpY2tldEFjdGlvbkNvbW1vbi5wbQogICAgIwogICAgIyB0byB0aGUgbmV3CiAgICAjCiAgICAjICMgJG9yaWdpbjogSVRTTUluY2lkZW50UHJvYmxlbU1hbmFnZW1lbnQgLSA3NGVmY2NiYzc4MjE1MzcxMzRiNTIwYjUwOGExMTZhZmRkNDg5YWQ0IC0gS2VybmVsL01vZHVsZXMvQWdlbnRUaWNrZXRBY3Rpb25Db21tb24ucG0KICAgICMKICAgICRDb2RlID1+IHN7CiAgICAgICAgXgogICAgICAgICggWyBdKiAoPzogXCMgfCBcL1wvICkgKQogICAgICAgIFsgXSsgKD86IFwkIHzCoCkgb3JpZ2luOiBbIF0rIGh0dHAgKD86IHMgfMKgKSA6XC9cLyBnaXQgXC4gb3RycyBcLiBjb20gXC8gb3RycyBcLwogICAgICAgICggW15cLyBcbl0rICkKICAgICAgICBcLyBibG9icyBcLwogICAgICAgICggW2EtejAtOV0rICkKICAgICAgICBcLwogICAgICAgICggLis/ICkKICAgICAgICAkCiAgICB9eyQxICRPcmlnaW4gJDIgLSAkMyAtICQ0fXhtczsKCiAgICAjIFRyYW5zZmVycyBhbiBDVlMgT2xkSWQKICAgICMKICAgICMgIyAkT2xkSWQ6IEFnZW50VGlja2V0RW1haWwuZHRsLHYgMS4xNDIuMi4xIDIwMTEvMDkvMDcgMjA6NTM6NTAgZW4gRXhwICQKICAgICMKICAgICMgdG8gdGhlIG5ldyBvcmlnaW4KICAgICMKICAgICMgIyAkb3JpZ2luOiBvdHJzIC0gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCAtIEFnZW50VGlja2V0RW1haWwuZHRsCiAgICAjCgogICAgaWYgKCBteSAoJEZpbGVTdHJpbmcpID0gJENvZGUgPX4gbXsgXiBbIF0qICg/OiBcIyB8IFwvXC8gKSBbIF0rIFwkT2xkSWQ6IFsgXSsgKCBbXlxuXSs/ICkgLHYgWyBdKyBbXlxuXSsgXG4gfXhtcyApIHsKCiAgICAgICAgbXkgJEZpbGVQYXRoID0gJEZpbGVTdHJpbmc7CgogICAgICAgIGlmICggJEZpbGVTdHJpbmcgPX4gbXsgXiBbXlxuXSsgXC4gZHRsICQgfXhtcyApIHsKICAgICAgICAgICAgJEZpbGVQYXRoID0gJ0tlcm5lbC9PdXRwdXQvSFRNTC9TdGFuZGFyZC8nIC4gJEZpbGVTdHJpbmc7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJEZpbGVTdHJpbmcgPX4gbXsgXiBbXlxuXSsgXC4ganMgJCB9eG1zICkgewogICAgICAgICAgICAkRmlsZVBhdGggPSAndmFyL2h0dHBkL2h0ZG9jcy9qcy8nIC4gJEZpbGVTdHJpbmc7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJEZpbGVTdHJpbmcgPX4gbXsgXiAoPzogTGF5b3V0IHwgTmF2QmFyIHwgTm90aWZpY2F0aW9uQWdlbnQgfCBUaWNrZXRPdmVydmlldyB8IFRpY2tldE1lbnUgfCBUb29sQmFyIHwgRGFzaGJvYXJkICkgW15cbl0rIFwuIHBtICQgfXhtcyApIHsKICAgICAgICAgICAgJEZpbGVQYXRoID0gJ0tlcm5lbC9PdXRwdXQvSFRNTC8nIC4gJEZpbGVTdHJpbmc7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJEZpbGVTdHJpbmcgPX4gbXsgXiAoPzogQWdlbnQgfCBDdXN0b21lciB8IFB1YmxpYyApIFteXG5dKyBcLiBwbSAkIH14bXMgKSB7CiAgICAgICAgICAgICRGaWxlUGF0aCA9ICdLZXJuZWwvTW9kdWxlcy8nIC4gJEZpbGVTdHJpbmc7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJEZpbGVTdHJpbmcgPX4gbXsgXiBbXlxuXSsgXC4gcG0gJCB9eG1zICkgewogICAgICAgICAgICAkRmlsZVBhdGggPSAnS2VybmVsL1N5c3RlbS8nIC4gJEZpbGVTdHJpbmc7CiAgICAgICAgfQoKICAgICAgICAkQ29kZSA9fiBzewogICAgICAgICAgICBeICggWyBdKiAoPzogXCMgfCBcL1wvICkgKSBbIF0rIFwkT2xkSWQ6IFsgXSsgW15cbl0rPyAsdiBbIF0rIFteXG5dKyBcbgogICAgICAgIH17JDEgJE9yaWdpbiBvdHJzIC0gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCAtICRGaWxlUGF0aFxufXhtczsKICAgIH0KCgogICAgIyBDaGVjayB0aGUgb3JpZ2luIGlmIGN1c3RvbWl6YXRpb24gbWFya2VycyBhcmUgZm91bmQKICAgIGlmICggJENvZGUgPX4gbXsgXiBbIF0qICg/OiBcIyB8IFwvXC8gKSBbIF0rIC0tLSBbIF0qICQgfXhtcyApIHsKCiAgICAgICAgbXkgJEZvdW5kT3JpZ2luOwogICAgICAgIG15ICRMaW5lQ291bnRlciA9IDA7CiAgICAgICAgT1JJR0lOTElORToKICAgICAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCAvXG4vLCAkQ29kZSApIHsKICAgICAgICAgICAgJExpbmVDb3VudGVyKys7CgogICAgICAgICAgICBsYXN0IE9SSUdJTkxJTkUgaWYgJExpbmVDb3VudGVyID4gNTsKCiAgICAgICAgICAgIG5leHQgT1JJR0lOTElORSBpZiAkTGluZSAhfiBteyBeIFsgXSogKD86IFwjIHwgXC9cLyApIFsgXSsgXCRvcmlnaW46IFsgXSsgW15cbl0rICQgfXhtczsKCiAgICAgICAgICAgICRGb3VuZE9yaWdpbiA9IDE7CiAgICAgICAgfQoKICAgICAgICBpZiAoICEkRm91bmRPcmlnaW4gKSB7CgogICAgICAgICAgICBteSAkUGFja2FnZUNvdW50ZXIgPSAwOwoKICAgICAgICAgICAgUEFDS0FHRUxJTkU6CiAgICAgICAgICAgIGZvciBteSAkTGluZSAoIHNwbGl0IC9cbi8sICRDb2RlICkgewoKICAgICAgICAgICAgICAgIG5leHQgUEFDS0FHRUxJTkUgaWYgJExpbmUgIX4gbXsgXiBwYWNrYWdlIFsgXSsgKCBbQS1aYS16MC05XDpdKyApIFw7ICQgfXhtczsKCiAgICAgICAgICAgICAgICAjIGNvdW50IGxpbmVzIHdpdGggYW55ICdwYWNrYWdlLi47JwogICAgICAgICAgICAgICAgJFBhY2thZ2VDb3VudGVyKys7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkQ29kZSBpZiAkUGFja2FnZUNvdW50ZXIgPT0gMDsKCiAgICAgICAgICAgICMgb25seSBvbmUgJ3BhY2thZ2UnIGFsbG93ZWQgcGVyIGZpbGUgLSBzcGxpdCBmaXJzdCBpZiB0aGVyZSBhcmUgbW9yZSBwYWNrYWdlcyBjb21iaW5lZC4KICAgICAgICAgICAgaWYgKCRQYWNrYWdlQ291bnRlciA+IDEpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCIkUGFja2FnZUNvdW50ZXIgcGFja2FnZSBsaW5lcyBmb3VuZC5cbiIpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAoJEZpbGVQYXRoKSA9ICRDb2RlID1+IG17IF4gcGFja2FnZSBbIF0rICggW0EtWmEtejAtOVw6XSsgKSBcOyAkIH14bXM7CgogICAgICAgICAgICAjIGp1c3QgYWxsb3cgS2VybmVsIGFuZCBzY3JpcHRzOjp0ZXN0cyB0byBiZSBtb2RpZmllZCBhdXRvbWF0aWNhbGx5CiAgICAgICAgICAgIHJldHVybiAkQ29kZSBpZiAkRmlsZVBhdGggIX4gbXsgXiAoIEtlcm5lbCB8IHNjcmlwdHMgXDpcOiB0ZXN0cyApPyBcOlw6IH14bXM7CgogICAgICAgICAgICAkRmlsZVBhdGggPX4gc3sgXDpcOiB9ey99Z3NteDsKCiAgICAgICAgICAgIG15ICROZXdPcmlnaW4gPSAkT3JpZ2luIC4gJyBvdHJzIC0gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCAtICcgLiAkRmlsZVBhdGggLiAnLnBtJzsKCiAgICAgICAgICAgICMgcGxhY2UgbmV3IG9yaWdpbiBhZnRlciBDb3B5cmlnaHQKICAgICAgICAgICAgJENvZGUgPX4gc3sgKCBcIyBbIF0rIENvcHlyaWdodCAuKiBcLyBcbiBcIyBbIF0rIC0tIFxuIFwjIFsgXSsgKSB9eyQxJE5ld09yaWdpblxuIyAtLVxuIyB9eG1zOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJENvZGU7Cn0KCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggMiwgNCApOwoKICAgICMgQ2hlY2sgdGhlIG9yaWdpbiBpZiBjdXN0b21pemF0aW9uIG1hcmtlcnMgYXJlIGZvdW5kCiAgICBpZiAoICRDb2RlID1+IG17IF4gWyBdKiAoPzogXCMgfCBcL1wvICkgWyBdKyAtLS0gWyBdKiAkIH14bXMgKSB7CgogICAgICAgIG15ICRGb3VuZE9yaWdpbjsKICAgICAgICBteSAkQ291bnRlciA9IDA7CiAgICAgICAgTElORToKICAgICAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCAvXG4vLCAkQ29kZSApIHsKCiAgICAgICAgICAgICRDb3VudGVyKys7CgogICAgICAgICAgICBsYXN0IExJTkUgaWYgJENvdW50ZXIgPiA1OwoKICAgICAgICAgICAgbmV4dCBMSU5FIGlmICRMaW5lICF+IG17IF4gWyBdKiAoPzogXCMgfCBcL1wvICkgWyBdKyBcJG9yaWdpbjogWyBdKyBbXlxuXSsgJCB9eG1zOwoKICAgICAgICAgICAgJEZvdW5kT3JpZ2luID0gMTsKICAgICAgICB9CgogICAgICAgIGlmICghJEZvdW5kT3JpZ2luKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCJDdXN0b21pemF0aW9uIG1hcmtlcnMgZm91bmQgYnV0IG5vIG9yaWdpbiBwcmVzZW50LlxuIik7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkQ29kZTsKfQoKc3ViIHZhbGlkYXRlX2ZpbGUgewogICAgbXkgKCAkU2VsZiwgJEZpbGVuYW1lICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIEZpbGVuYW1lID0+ICRGaWxlbmFtZSApOwoKICAgIG15ICRDb2RlID0gJFNlbGYtPl9HZXRGaWxlQ29udGVudHMoJEZpbGVuYW1lKTsKCiAgICAjIENoZWNrIGlmIGFsbCBmaWxlcyBpbiB0aGUgQ3VzdG9tIGRpcmVjdG9yeSBoYXMgYW4gb3JpZ2luCiAgICBpZiAoICRGaWxlbmFtZSA9fiBteyBcL0N1c3RvbVwvIH14bXMgKSB7CgogICAgICAgICMgQ2hlY2sgaWYgYW4gb3JpZ2luIGV4aXN0LgogICAgICAgIGlmICggJENvZGUgIX4gbXsgXiBbIF0qICg/OiBcIyB8IFwvXC8gKSBbIF0rIFwkb3JpZ2luOiBbIF0rIFteXG5dKyAkIH14bXMgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCJGaWxlIGlzIGluIEN1c3RvbSBkaXJlY3RvcnkgYnV0IG5vIG9yaWdpbiBwcmVzZW50LlxuIik7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDYsIDAgKTsKCiAgICBpZiAoICRGaWxlbmFtZSA9fiBteyAuKiBcLmNzcyB9eG1zaSApIHsKCiAgICAgICAgIyBDaGVjayBpZiBhIENTUyBmaWxlIGlzIG92ZXJyaXR0ZW4gaW4gQ3VzdG9tIGRpcmVjdG9yeS4KICAgICAgICBpZiAoICRGaWxlbmFtZSA9fiBteyBcL0N1c3RvbVwvdmFyXC8gfXhtcyApIHsKCiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwpGb3JiaWRkZW4gdG8gaGF2ZSBhIENTUyBmaWxlIGluIEN1c3RvbSBmb2xkZXIsIGJlY2F1c2UgaXQncyBub3QgYWxsb3dlZCB0byBvdmVycmlkZSBhbiBleGlzdGluZyBDU1MgZmlsZS4KVXNlIGEgbmV3IG9uZSB0byBvdmVycmlkZSBleGlzdGluZyBDU1MgY2xhc3Nlcy4KRU9GCiAgICAgICAgfQoKICAgICAgICAjIENoZWNrIGlmIGFuIG9yaWdpbiBleGlzdC4KICAgICAgICBpZiAoICRDb2RlID1+IG17IF4gWyBdKiAoPzogXCMgfCBcL1wvIHwgXCogKSBbIF0rICg/OiBcJCB8IFxAICkgb3JpZ2luOiBbIF0rIFteXG5dKyAkIH14bXMgKSB7CgogICAgICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKRm9yYmlkZGVuIHRvIGhhdmUgYW4gb3JpZ2luIGluIGEgQ1NTIGZpbGUsIGJlY2F1c2UgaXQncyBub3QgYWxsb3dlZCB0byBvdmVycmlkZSBhbiBleGlzdGluZyBDU1MgZmlsZS4KVXNlIGEgbmV3IG9uZSB0byBvdmVycmlkZSBleGlzdGluZyBDU1MgY2xhc3Nlcy4KRU9GCiAgICAgICAgfQoKICAgICAgICAjIENoZWNrIGlmIGN1c3RvbWl6YXRpb24gbWFya2VycyBleGlzdHMuCiAgICAgICAgaWYgKCAkQ29kZSA9fiBteyBeIFsgXSogKD86IFwjIHwgXC9cLyB8IFwqIHwgXC9cKiApIFsgXSsgLS0tIFsgXSogJCB9eG1zICkgewoKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7CkZvcmJpZGRlbiB0byBoYXZlIGN1c3RvbWl6YXRpb24gbWFya2VycyBpbiBhIENTUyBmaWxlLCBiZWNhdXNlIGl0J3Mgbm90IGFsbG93ZWQgdG8gb3ZlcnJpZGUgYW4gZXhpc3RpbmcgQ1NTIGZpbGUuClVzZSBhIG5ldyBvbmUgdG8gb3ZlcnJpZGUgZXhpc3RpbmcgQ1NTIGNsYXNzZXMuCkVPRgogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6Q29tbW9uOjpQcm9oaWJpdEVtYWlsQWRkcmVzc2VzOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UpOwoKPWhlYWQxIFNZTk9QU0lTCgpUaGlzIHBsdWdpbiBkaXNhbGxvd3MgcHJvYmxlbWF0aWMgZW1haWwgYWRkcmVzc2VzLgoKPWN1dAoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCAzLCAzICk7CgogICAgbXkgKCAkQ291bnRlciwgJEVycm9yTWVzc2FnZSApOwoKICAgIGZvciBteSAkTGluZSAoIHNwbGl0IC9cbi8sICRDb2RlICkgewogICAgICAgICRDb3VudGVyKys7CiAgICAgICAgaWYgKCAkTGluZSA9fiAvc3VwcG9ydFxAb3Ryc1wuKD86Y29tfGRlKS9pc214ICkgewogICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKRG9uJ3QgdXNlIHN1cHBvcnRcQG90cnMuY29tIGluIGFueSBzb3VyY2UgZmlsZXMgb3IgZG9jdW1lbnRzIGFzIHRoaXMgYWRkcmVzcyBoYXMgU1BBTSBwcm9ibGVtcy4KJEVycm9yTWVzc2FnZQpFT0YKICAgIH0KICAgIHJldHVybjsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6Q29tbW9uOjpUcmFuc2xhdGFibGVTdHJpbmdzU3BlbGxDaGVjazsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBJbXBsZW1lbnRhdGlvbiBpcyBiYXNlZCBvbiBodHRwczovL21ldGFjcGFuLm9yZy9zb3VyY2UvRFJPTFNLWS9Db2RlLVRpZHlBbGwtMC41Ni9saWIvQ29kZS9UaWR5QWxsL1BsdWdpbi9Qb2RTcGVsbC5wbQoKdXNlIEZpbGU6OlRlbXAoKTsKCnVzZSBwYXJlbnQgJ1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6QmFzZSc7CgpvdXIgJEh1bnNwZWxsUGF0aDsKb3VyICRIdW5zcGVsbERpY3Rpb25hcnlQYXRoOwpvdXIgJEh1bnNwZWxsV2hpdGVsaXN0UGF0aDsKCnN1YiB2YWxpZGF0ZV9maWxlIHsKICAgIG15ICggJFNlbGYsICRGaWxlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIEZpbGVuYW1lID0+ICRGaWxlICk7CiAgICByZXR1cm4gaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA2LCAwICk7CgogICAgaWYgKCAhJEh1bnNwZWxsUGF0aCApIHsKICAgICAgICAkSHVuc3BlbGxQYXRoID0gYHdoaWNoIGh1bnNwZWxsYDsKICAgICAgICBjaG9tcCAkSHVuc3BlbGxQYXRoOwogICAgICAgIGlmICggISRIdW5zcGVsbFBhdGggKSB7CiAgICAgICAgICAgIHByaW50IFNUREVSUiBfX1BBQ0tBR0VfXyAuICJcbkNvdWxkIG5vdCBmaW5kICdodW5zcGVsbCcsIHNraXBwaW5nIHNwZWxsIGNoZWNrZXIgdGVzdHMuXG4iOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkSHVuc3BlbGxEaWN0aW9uYXJ5UGF0aCA9IF9fRklMRV9fOwogICAgICAgICRIdW5zcGVsbERpY3Rpb25hcnlQYXRoID1+IHN7VHJhbnNsYXRhYmxlU3RyaW5nc1NwZWxsQ2hlY2tcLnBtJH17Li4vU3RhdGljRmlsZXMvSHVuc3BlbGwvRGljdGlvbmFyaWVzfTsKCiAgICAgICAgJEh1bnNwZWxsV2hpdGVsaXN0UGF0aCA9IF9fRklMRV9fOwogICAgICAgICRIdW5zcGVsbFdoaXRlbGlzdFBhdGggPX4gc3tcLnBtJH17LldoaXRlbGlzdC50eHR9OwogICAgfQoKICAgIG15ICRUZXh0ID0gJFNlbGYtPl9FeHRyYWN0VHJhbnNsYXRhYmxlU3RyaW5ncygkRmlsZSk7CgogICAgcmV0dXJuIGlmICEkVGV4dDsKCiAgICBteSAkVGVtcEZpbGUgPSBGaWxlOjpUZW1wLT5uZXcoKTsKICAgIHByaW50ICRUZW1wRmlsZSAkVGV4dDsKICAgICRUZW1wRmlsZS0+Y2xvc2UoKTsKCiAgICBteSAkQ01EICAgID0gIiRIdW5zcGVsbFBhdGggLWQgJHtIdW5zcGVsbERpY3Rpb25hcnlQYXRofS9lbl9VUyAtcCAkSHVuc3BlbGxXaGl0ZWxpc3RQYXRoIC1hICRUZW1wRmlsZSI7CiAgICBteSAkT3V0cHV0ID0gYCRDTURgOwoKICAgIGlmICggJHteQ0hJTERfRVJST1JfTkFUSVZFfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiRXJyb3IgcnVubmluZyAnJENNRCc6ICRPdXRwdXQiKTsKICAgIH0KCiAgICBteSAoIEBFcnJvcnMsICVTZWVuICk7CiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lICggc3BsaXQoIG0vXG4vLCAkT3V0cHV0ICkgKSB7CiAgICAgICAgaWYgKCBteSAoICRPcmlnaW5hbCwgJFJlbWFpbmluZyApID0gKCAkTGluZSA9fiAvXltcJlw/XCNdIChcUyspXHMrKC4qKS8gKSApIHsKCiAgICAgICAgICAgIGlmICggJE9yaWdpbmFsID1+IG17XiBfPyBbQS1aXSsgW2EtejAtOV0rIFtBLVphLXowLTldKiB9c214ICkgewogICAgICAgICAgICAgICAgbmV4dCBMSU5FOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICEkU2VlbnskT3JpZ2luYWx9KysgKSB7CiAgICAgICAgICAgICAgICBteSAoJFN1Z2dlc3Rpb25zKSA9ICggJFJlbWFpbmluZyA9fiAvOiAoLiopLyApOwogICAgICAgICAgICAgICAgaWYgKCRTdWdnZXN0aW9ucykgewogICAgICAgICAgICAgICAgICAgIHB1c2goIEBFcnJvcnMsIHNwcmludGYoICIlcyAoc3VnZ2VzdGlvbnM6ICVzKSIsICRPcmlnaW5hbCwgJFN1Z2dlc3Rpb25zICkgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHB1c2goIEBFcnJvcnMsICRPcmlnaW5hbCApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGlmIChARXJyb3JzKSB7CiAgICAgICAgbXkgJEVycm9yID0gc3ByaW50ZiggIlxuVHJhbnNsYXRhYmxlIHN0cmluZ3MgY29udGFpbnMgdW5yZWNvZ25pemVkIHdvcmRzOlxuJXNcbiIsIGpvaW4oICJcbiIsIHNvcnQgQEVycm9ycyApICk7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoJEVycm9yKTsKICAgIH0KCiAgICByZXR1cm47Cn0KCnN1YiBfRXh0cmFjdFRyYW5zbGF0YWJsZVN0cmluZ3MgewogICAgbXkgKCAkU2VsZiwgJEZpbGVuYW1lICkgPSBAXzsKCiAgICBteSAkQ29kZSA9ICRTZWxmLT5fR2V0RmlsZUNvbnRlbnRzKCRGaWxlbmFtZSk7CgogICAgbXkgJFJlc3VsdDsKCiAgICBpZiAoICRGaWxlbmFtZSA9fiBtey50dCR9aXNteCApIHsKICAgICAgICAkQ29kZSA9fiBzewogICAgICAgICAgICBUcmFuc2xhdGVcKAogICAgICAgICAgICAgICAgXHMqCiAgICAgICAgICAgICAgICAoWyInXSkoLio/KSg/PCFcXClcMQogICAgICAgIH0KICAgICAgICB7CiAgICAgICAgICAgIG15ICRXb3JkID0gJDIgLy8gJyc7CgogICAgICAgICAgICAjIHVuZXNjYXBlIGFueSBcIiBvciBcJyBzaWducwogICAgICAgICAgICAkV29yZCA9fiBze1xcIn17In1zbXhnOwogICAgICAgICAgICAkV29yZCA9fiBze1xcJ317J31zbXhnOwoKICAgICAgICAgICAgJFJlc3VsdCAuPSAiJFdvcmRcbiI7CgogICAgICAgICAgICAnJzsKICAgICAgICB9ZWd4OwogICAgfQogICAgZWxzaWYgKCAkRmlsZW5hbWUgPX4gbXtcLihwbXxwbCl9aXNteCApIHsKICAgICAgICAkQ29kZSA9fiBzewogICAgICAgICAgICAoPzoKICAgICAgICAgICAgICAgIC0+VHJhbnNsYXRlIHwgVHJhbnNsYXRhYmxlCiAgICAgICAgICAgICkKICAgICAgICAgICAgXCgKICAgICAgICAgICAgICAgIFxzKgogICAgICAgICAgICAgICAgKFsiJ10pKC4qPykoPzwhXFwpXDEKICAgICAgICB9CiAgICAgICAgewogICAgICAgICAgICBteSAkV29yZCA9ICQyIC8vICcnOwoKICAgICAgICAgICAgIyB1bmVzY2FwZSBhbnkgXCIgb3IgXCcgc2lnbnMKICAgICAgICAgICAgJFdvcmQgPX4gc3tcXCJ9eyJ9c214ZzsKICAgICAgICAgICAgJFdvcmQgPX4gc3tcXCd9eyd9c214ZzsKCiAgICAgICAgICAgICMgSWdub3JlIHN0cmluZ3MgY29udGFpbmluZyB2YXJpYWJsZXMKICAgICAgICAgICAgbXkgJFNraXBXb3JkOwogICAgICAgICAgICAkU2tpcFdvcmQgPSAxIGlmICRXb3JkID1+IG17XCR9eG1zOwoKICAgICAgICAgICAgaWYgKCRXb3JkICYmICEkU2tpcFdvcmQgKSB7CiAgICAgICAgICAgICAgICAkUmVzdWx0IC49ICIkV29yZFxuIjsKICAgICAgICAgICAgfQogICAgICAgICAgICAnJzsKICAgICAgICB9ZWd4OwogICAgfQogICAgZWxzaWYgKCAkRmlsZW5hbWUgPX4gbXtcLnhtbCR9aXNteCApIHsKICAgICAgICAkQ29kZSA9fiBzewogICAgICAgICAgICA8RGF0YVtePl0rVHJhbnNsYXRhYmxlPSIxIltePl0qPiguKj8pPC9EYXRhPgogICAgICAgIH0KICAgICAgICB7CiAgICAgICAgICAgIG15ICRXb3JkID0gJDEgLy8gJyc7CiAgICAgICAgICAgIGlmICgkV29yZCkgewogICAgICAgICAgICAgICAgJFJlc3VsdCAuPSAiJFdvcmRcbiI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJyc7CiAgICAgICAgfWVneDsKICAgIH0KICAgIGVsc2lmICggJEZpbGVuYW1lID1+IG17XC5qcyR9aXNteCApIHsKICAgICAgICAkQ29kZSA9fiBzewogICAgICAgICAgICAoPzoKICAgICAgICAgICAgICAgIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlCiAgICAgICAgICAgICkKICAgICAgICAgICAgXCgKICAgICAgICAgICAgICAgIFxzKgogICAgICAgICAgICAgICAgKFsiJ10pKC4qPykoPzwhXFwpXDEKICAgICAgICB9CiAgICAgICAgewogICAgICAgICAgICBteSAkV29yZCA9ICQyIC8vICcnOwoKICAgICAgICAgICAgIyB1bmVzY2FwZSBhbnkgXCIgb3IgXCcgc2lnbnMKICAgICAgICAgICAgJFdvcmQgPX4gc3tcXCJ9eyJ9c214ZzsKICAgICAgICAgICAgJFdvcmQgPX4gc3tcXCd9eyd9c214ZzsKCiAgICAgICAgICAgIGlmICggJFdvcmQgKSB7CiAgICAgICAgICAgICAgICAkUmVzdWx0IC49ICIkV29yZFxuIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJyc7CiAgICAgICAgfWVneDsKICAgIH0KCiAgICByZXR1cm4gJFJlc3VsdDsKfQoKMTsK
b3RycwppdHNtCnNsYQo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6Q29tbW9uOjpSZW1vdmVDVlNJRHM7CiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6Q29tbW9uOjpDdXN0b21pemF0aW9uTWFya2VycykKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKdXNlIEZpbGU6OkNvcHkgcXcoY29weSk7CnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpCYXNlKTsKCj1oZWFkMSBTWU5PUFNJUwoKVGhpcyBwbHVnaW4gcmVtb3ZlcyBvbGQgJElkOiQgdGFncyBhbmQgc2ltaWxhciB0YWdzIHRoYXQgd2VyZSBhdXRvbWF0aWNhbGx5Cmluc2VydGVkIGJ5IENWUyBidXQgYXJlIG5vIGxvbmdlciBzdXBwb3J0ZWQgYnkgZ2l0LCBzdWNoIGFzIHRoZSAkVkVSU0lPTgp2YXJpYWJsZSBhc3NpZ25tZW50LiBQbGVhc2UgdmVyaWZ5IGlmIHlvdXIgY29kZSBzdGlsbCBydW5zIGFmdGVyIHRoZSByZW1vdmFsLgoKPWN1dAoKc3ViIHRyYW5zZm9ybV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgICMgUmVtb3ZlICRJZCBsaW5lcwogICAgIwogICAgIyBQZXJsIGZpbGVzCiAgICAjICRJZDogTWFpbi5wbSx2IDEuNjkgMjAxMy0wMi0wNSAxMDo0MzowNyBtZyBFeHAgJAogICAgIwogICAgIyBKYXZhU2NyaXB0IGZpbGVzCiAgICAjIC8vICRJZDogQ29yZS5BZ2VudC5BZG1pbi5EeW5hbWljRmllbGQuanMsdiAxLjExIDIwMTItMDgtMDYgMTI6MzM6MjQgbWcgRXhwICQKICAgICRDb2RlID1+IHN7IF4gKD86IFwjIHwgXC9cLyApIFsgXSBcJElkOiBbIF0gLis/ICQgXG4gfXt9eG1zZzsKICAgICRDb2RlID1+IHN7IF4gKCAoPzogXCMgfCBcL1wvICkgKSBbIF0gLS0gJCBcbiBeICg/OiBcIyB8IFwvXC8gKSBbIF0gLS0gJCBcbiB9eyQxIC0tXG59eG1zZzsKCiAgICAjIFJlbW92ZSAkT2xkSWQyLCAkT2xkSWQzIGFuZCAkT2xkSWQ0IGxpbmVzCiAgICAjCiAgICAjIFBlcmwgZmlsZXMKICAgICMgJE9sZElkMjogTWFpbi5wbSx2IDEuNjkgMjAxMy0wMi0wNSAxMDo0MzowNyBtZyBFeHAgJAogICAgIwogICAgIyBKYXZhU2NyaXB0IGZpbGVzCiAgICAjIC8vICRPbGRJZDI6IENvcmUuQWdlbnQuQWRtaW4uRHluYW1pY0ZpZWxkLmpzLHYgMS4xMSAyMDEyLTA4LTA2IDEyOjMzOjI0IG1nIEV4cCAkCiAgICAkQ29kZSA9fiBzeyBeICg/OiBcIyB8IFwvXC8gKSBbIF0gXCRPbGRJZDI6IFsgXSAuKz8gJCBcbiB9e314bXNnOwogICAgJENvZGUgPX4gc3sgXiAoPzogXCMgfCBcL1wvICkgWyBdIFwkT2xkSWQzOiBbIF0gLis/ICQgXG4gfXt9eG1zZzsKICAgICRDb2RlID1+IHN7IF4gKD86IFwjIHwgXC9cLyApIFsgXSBcJE9sZElkNDogWyBdIC4rPyAkIFxuIH17fXhtc2c7CgogICAgIyBSZW1vdmUgJElkIGZyb20gUE9ECiAgICAkQ29kZSA9fiBzeyBeID1oZWFkMSBbIF0rIFZFUlNJT04gXG4rIF4gXCRJZDogWyBdKyAuKz8gXG4rIH17fXhtc2c7CgogICAgIyBQb3N0bWFzdGVyLVRlc3QuYm94IGZpbGVzCiAgICAjIFgtQ1ZTOiAkSWQ6IFBvc3RNYXN0ZXItVGVzdDEuYm94LHYgMS4yIDIwMDcvMDQvMTIgMjM6NTU6NTUgbWFydGluIEV4cCAkCiAgICAkQ29kZSA9fiBzeyBeIFgtQ1ZTOiBbIF0gXCRJZDogWyBdIC4rPyAkIFxuIH17fXhtc2c7CiAgICAkQ29kZSA9fiBzeyBeIFgtQ1ZTOiBbIF0gXCRPbGRJZDogWyBdIC4rPyAkIFxuIH17fXhtc2c7CiAgICAkQ29kZSA9fiBzeyBeIFgtQ1ZTOiBbIF0gXCRPbGRJZDI6IFsgXSAuKz8gJCBcbiB9e314bXNnOwoKICAgICMgZG9jYm9vayBhbmQgd3NkbCBhbmQgb3RoZXIgWE1MIGZpbGVzCiAgICAjIDwhLS0gJElkOiBnZXQtc3RhcnRlZC54bWwsdiAxLjEgMjAxMS0wOC0xNSAxNzo0NjowOSBjciBFeHAgJCAtLT4KICAgICRDb2RlID1+IHN7IF4gPCEtLSBbIF0gXCRJZDogWyBdIC4rPyAkIFxuIH17fXhtc2c7CiAgICAkQ29kZSA9fiBzeyBeIDwhLS0gWyBdIFwkT2xkSWQ6IFsgXSAuKz8gJCBcbiB9e314bXNnOwogICAgJENvZGUgPX4gc3sgXiA8IS0tIFsgXSBcJE9sZElkMjogWyBdIC4rPyAkIFxuIH17fXhtc2c7CgogICAgIyBPVFJTIGNvbmZpZyBmaWxlcwogICAgIyA8Q1ZTPiRJZDogRnJhbWV3b3JrLnhtbCx2IDEuNTE5IDIwMTMtMDItMTUgMTQ6MDc6NTUgbWcgRXhwICQ8L0NWUz4KICAgICRDb2RlID1+IHN7IF4gXHMqIDxDVlM+IFwkSWQ6IFsgXSAuKz8gJCBcbiB9e314bXNnOwogICAgJENvZGUgPX4gc3sgXiBccyogPENWUz4gXCRPbGRJZDogWyBdIC4rPyAkIFxuIH17fXhtc2c7CiAgICAkQ29kZSA9fiBzeyBeIFxzKiA8Q1ZTPiBcJE9sZElkMjogWyBdIC4rPyAkIFxuIH17fXhtc2c7CgogICAgIyByZW1vdmUgZW1wdHkgSWRzCiAgICAjICRJZDoKICAgICRDb2RlID1+IHN7IF4gXCMgWyBdIFwkSWQ6ICQgXG4gfXt9eG1zZzsKICAgICRDb2RlID1+IHN7IF4gXCMgWyBdIFwkT2xkSWQ6ICQgXG4gfXt9eG1zZzsKICAgICRDb2RlID1+IHN7IF4gXCMgWyBdIFwkT2xkSWQyOiAkIFxuIH17fXhtc2c7CgogICAgIyBSZW1vdmUgVkVSU0lPTiBhc3NpZ25tZW50IGZyb20gQ29kZQogICAgJENvZGUgPX4gc3sgXlwkVkVSU0lPTiBbIF0qID0gWyBdKiAuKj8gXG59e314bXNnOwoKICAgICMgUmVtb3ZlIFZFUlNJT04gZnJvbSBoZWxwIG9mIHBsIHNjcmlwdHMKICAgICRDb2RlID1+IHN7IFsgXSsgPFJldmlzaW9uIFxzKyBcJFZFUlNJT04+IFsgXSsgfXsgfXhtc2c7CiAgICAkQ29kZSA9fiBzeyA8UmV2aXNpb24gXHMrIFwkVkVSU0lPTj4gfXt9eG1zZzsKCiAgICAjIFJlbW92ZSBWRVJTSU9OIGZyb20gUE9ECiAgICAkQ29kZSA9fiBzeyBeID1oZWFkMSBbIF0rIFZFUlNJT04gXG4rIF4gXCRSZXZpc2lvbjogLio/IFxuKyB9e314bXNnOwoKICAgICMgZGVsZXRlIHRoZSAndXNlIHZhcnMgcXcoJFZFUlNJT04pOycgbGluZQogICAgJENvZGUgPX4gc3sgKCBeICQgXG4gKT8gXiB1c2UgWyBdIHZhcnMgWyBdIHF3XChcJFZFUlNJT05cKTsgJCBcbiB9e31peG1zOwoKICAgICMgUmVtb3ZlIEB2ZXJzaW9uIHRhZyBmcm9tIENTU0RvYwogICAgJENvZGUgPX4gc3teIFsgXSsgWypdIFsgXSsgW0BddmVyc2lvbiBbIF0rIFwkUmV2aXNpb246IC4qPyBcbn17fXhtc2c7CgogICAgcmV0dXJuICRDb2RlOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6Q29tbW9uOjpWYWxpZGF0ZUZpbGVuYW1lOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwp1c2UgRmlsZTo6Q29weSBxdyhjb3B5KTsKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UpOwoKPWhlYWQxIFNZTk9QU0lTCgpUaGlzIHBsdWdpbiBwZXJmb3JtcyBiYXNpYyBmaWxlIG5hbWUgY2hlY2tzLgoKPWN1dAoKc3ViIHZhbGlkYXRlX2ZpbGUgewogICAgbXkgKCAkU2VsZiwgJEZpbGVuYW1lICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIEZpbGVuYW1lID0+ICRGaWxlbmFtZSApOwoKICAgIG15IEBGb3JiaWRkZW5DaGFyYWN0ZXJzID0gKAogICAgICAgICcgJywgIlxuIiwgIlx0IiwgJyInLCAnYCcsICfCtCcsICdcJycsICckJywgJyEnLCAnPywnLCAnKicsCiAgICAgICAgJygnLCAnKScsICd7JywgJ30nLCAnWycsICddJywgJyMnLCAnPCcsICc+JywgJzonLCAnXFwnLCAnfCcsCiAgICApOwoKICAgIGZvciBteSAkRm9yYmlkZGVuQ2hhcmFjdGVyIChARm9yYmlkZGVuQ2hhcmFjdGVycykgewogICAgICAgIGlmICggaW5kZXgoICRGaWxlbmFtZSwgJEZvcmJpZGRlbkNoYXJhY3RlciApID4gLTEgKSB7CiAgICAgICAgICAgIG15ICRGb3JiaWRkZW5MaXN0ID0gam9pbiggJyAnLCBARm9yYmlkZGVuQ2hhcmFjdGVycyApOwogICAgICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKRm9yYmlkZGVuIGNoYXJhY3RlciAnJEZvcmJpZGRlbkNoYXJhY3RlcicgZm91bmQgaW4gZmlsZSBuYW1lLgpZb3Ugc2hvdWxkIG5vdCB1c2UgdGhlc2UgY2hhcmFjdGVycyBpbiBmaWxlIG5hbWVzOiAkRm9yYmlkZGVuTGlzdC4KRU9GCiAgICAgICAgfQogICAgfQoKICAgIHJldHVybjsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6Q3Jvbjo6Q3JvblNjcmlwdHM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7Cgp1c2UgcGFyZW50IHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6QmFzZSk7CgojIFdlIG9ubHkgd2FudCB0byBhbGxvdyB0d28gY3JvbiBmaWxlcyBmcm9tIE9UUlMgNSBvbiBhcyB0aGUgcmVzdCBpcyBtYW5hZ2VkCiMgdmlhIHRoZSBjcm9uIGRhZW1vbi4KCnN1YiB2YWxpZGF0ZV9maWxlIHsKICAgIG15ICggJFNlbGYsICRGaWxlbmFtZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBGaWxlbmFtZSA9PiAkRmlsZW5hbWUgKTsKICAgIHJldHVybiBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDUsIDAgKTsKCiAgICBteSAlQWxsb3dlZEZpbGVzID0gKAogICAgICAgICdhYWFfYmFzZS5kaXN0JyAgICAgICA9PiAxLAogICAgICAgICdvdHJzX2RhZW1vbi5kaXN0JyAgICA9PiAxLAogICAgICAgICdvdHJzX3dlYnNlcnZlci5kaXN0JyA9PiAxLAogICAgKTsKCiAgICBpZiAoICEkQWxsb3dlZEZpbGVzeyBGaWxlOjpCYXNlbmFtZTo6YmFzZW5hbWUoJEZpbGVuYW1lKSB9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwpQbGVhc2UgbWlncmF0ZSBhbGwgc2Nyb24gc2NyaXB0cyB0byBiZSBoYW5kbGVkIHZpYSB0aGUgT1RSUyBEYWVtb24gKHNlZSBTeXNDb25maWcgc2V0dGluZyBEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzaykuCkVPRgogICAgfQp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6SmF2YVNjcmlwdDo6RGVidWdDb2RlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CgogICAgbXkgJEVycm9yTWVzc2FnZTsKICAgIG15ICRDb3VudGVyOwoKICAgIGZvciBteSAkTGluZSAoIHNwbGl0KCAvXG4vLCAkQ29kZSApICkgewogICAgICAgICRDb3VudGVyKys7CiAgICAgICAgaWYgKCAkTGluZSA9fiBteyBjb25zb2xlXC5sb2dcKCB9eG1zICkgewogICAgICAgICAgICAkRXJyb3JNZXNzYWdlCiAgICAgICAgICAgICAgICAuPSAiRVJST1I6IEphdmFTY3JpcHQgZGVidWcgY2hlY2sgZm91bmQgYSBjb25zb2xlLmxvZygpIHN0YXRlbWVudCBpbiBsaW5lKCAkQ291bnRlciApOiAkTGluZVxuIjsKICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiVGhpcyB3aWxsIGJyZWFrIElFIGFuZCBPcGVyYS4gUGxlYXNlIHJlbW92ZSBpdCBmcm9tIHlvdXIgY29kZS5cbiI7CiAgICAgICAgfQogICAgICAgIGlmICggJExpbmUgPX4gbXsgXGJ4aXRcKCB9eG1zICkgewogICAgICAgICAgICAkRXJyb3JNZXNzYWdlCiAgICAgICAgICAgICAgICAuPSAiRVJST1I6IEphdmFTY3JpcHQgZGVidWcgY2hlY2sgZm91bmQgYSBza2lwcGVkIHRlc3QgJ3hpdCgpJyBzdGF0ZW1lbnQgaW4gbGluZSggJENvdW50ZXIgKTogJExpbmVcbiI7CiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIklmIHRoZSB0ZXN0IGlzIG5vIGxvbmdlciBuZWNlc3NhcnksIHBsZWFzZSByZW1vdmUgaXQgZnJvbSB5b3VyIGNvZGUuXG4iOwogICAgICAgIH0KICAgIH0KICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIiRFcnJvck1lc3NhZ2UiKTsKICAgIH0KfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6SmF2YVNjcmlwdDo6RVNMaW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEVuY29kZTsKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UpOwoKb3VyICROb2RlUGF0aDsKb3VyICRFU0xpbnRQYXRoOwoKc3ViIHRyYW5zZm9ybV9maWxlIHsKICAgIG15ICggJFNlbGYsICRGaWxlbmFtZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBGaWxlbmFtZSA9PiAkRmlsZW5hbWUgKTsKICAgIHJldHVybiBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDUsIDAgKTsKCiAgICBpZiAoICEkRVNMaW50UGF0aCApIHsKCiAgICAgICAgIyBPbiBzb21lIHN5c3RlbXMgKFVidW50dSkgbm9kZWpzIGlzIGNhbGxlZCAvdXNyL2Jpbi9ub2RlanMgaW5zdGVhZCBvZiAvdXNyL2Jpbi9ub2RlLAogICAgICAgICMgICB3aGljaCBjYW4gbGVhZCB0byBwcm9ibGVtcyB3aXRoIGNhbGxpbmcgdGhlIG5vZGUgc2NyaXB0cyBkaXJlY3RseS4gVGhlcmVmb3JlIHdlCiAgICAgICAgIyAgIGRldGVybWluZSB0aGUgbm9kZWpzIGJpbmFyeSBhbmQgY2FsbCBpdCBkaXJlY3RseS4KICAgICAgICAkTm9kZVBhdGggPSBgd2hpY2ggbm9kZWpzIDI+L2Rldi9udWxsYCB8fCBgd2hpY2ggbm9kZSAyPi9kZXYvbnVsbGA7CiAgICAgICAgY2hvbXAgJE5vZGVQYXRoOwogICAgICAgIGlmICggISROb2RlUGF0aCApIHsKICAgICAgICAgICAgZGllICJFcnJvcjogY291bGQgbm90IGZpbmQgdGhlICdub2RlanMnIGJpbmFyeS5cbiI7CiAgICAgICAgfQoKICAgICAgICAkRVNMaW50UGF0aCA9IF9fRklMRV9fOwogICAgICAgICRFU0xpbnRQYXRoID1+IHN7RVNMaW50XC5wbX17RVNMaW50L25vZGVfbW9kdWxlcy9lc2xpbnQvYmluL2VzbGludC5qc307CiAgICAgICAgaWYgKCAhLWUgJEVTTGludFBhdGggKSB7CiAgICAgICAgICAgIGRpZSAiRXJyb3I6IGNvdWxkIG5vdCBmaW5kIHRoZSAnZXNsaW50JyBzY3JpcHQuIFBsZWFzZSBydW4gYGJpbi9vdHJzLkNvZGVQb2xpY3kucGwgLS1pbnN0YWxsYC5cbiI7CiAgICAgICAgfQoKICAgICAgICAjIEZvcmNlIHRoZSBtaW5pbXVtIHZlcnNpb24gb2YgZXNsaW50LgogICAgICAgIG15ICRFU0xpbnRWZXJzaW9uID0gYCROb2RlUGF0aCAkRVNMaW50UGF0aCAtdmA7CiAgICAgICAgY2hvbXAgJEVTTGludFZlcnNpb247CiAgICAgICAgbXkgKCAkTWFqb3IsICRNaW5vciwgJFBhdGNoICkgPSAkRVNMaW50VmVyc2lvbiA9fiBte3YoXGQrKVsuXShcZCspWy5dKFxkKyl9OwogICAgICAgIG15ICRDb21wYXJlID0gc3ByaW50ZiggIiUwM2QlMDNkJTAzZCIsICRNYWpvciwgJE1pbm9yLCAkUGF0Y2ggKTsKICAgICAgICBpZiAoICFsZW5ndGgoJE1ham9yKSB8fCAkQ29tcGFyZSA8IDZfMDAwXzAwMSApIHsKICAgICAgICAgICAgdW5kZWYgJEVTTGludFBhdGg7ICAgICMgTWFrZSBzdXJlIHRvIHJlLWlzc3VlIHRoaXMgZXJyb3IgZm9yIGZ1dHVyZSBmaWxlcy4KICAgICAgICAgICAgZGllCiAgICAgICAgICAgICAgICAiRXJyb3I6IGluc3RhbGxlZCBlc2xpbnQgdmVyc2lvbiAoJEVTTGludFZlcnNpb24pIGlzIG91dGRhdGVkLiBQbGVhc2UgcnVuIGBiaW4vb3Rycy5Db2RlUG9saWN5LnBsIC0taW5zdGFsbGAuXG4iOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkRVNMaW50Q29uZmlnUGF0aCA9IF9fRklMRV9fOwogICAgJEVTTGludENvbmZpZ1BhdGggPX4gc3tFU0xpbnRcLnBtfXtFU0xpbnQvbGVnYWN5LmVzbGludHJjLmpzfTsKICAgIGlmICggJEZpbGVuYW1lID1+IG17RnJvbnRlbmQvfSApIHsKICAgICAgICBteSAkRVNMaW50Q29uZmlnRmlsZSA9ICdFU0xpbnQvZnJvbnRlbmQuZXNsaW50cmMuanMnOwoKICAgICAgICAjIEEgbGl0dGxlIG1vcmUgbGVuaWVudCBiZWZvcmUgT1RSUyA4IChjZXJ0YWluIHJ1bGVzIHdpbGwgYmUgdHVybmVkIG9mZikuCiAgICAgICAgaWYgKCAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDgsIDAgKSApIHsKICAgICAgICAgICAgJEVTTGludENvbmZpZ0ZpbGUgPSAnRVNMaW50L2Zyb250ZW5kLmVzbGludHJjLjcuanMnOwogICAgICAgIH0KCiAgICAgICAgJEVTTGludENvbmZpZ1BhdGggPSBfX0ZJTEVfXzsKICAgICAgICAkRVNMaW50Q29uZmlnUGF0aCA9fiBze0VTTGludFwucG19eyRFU0xpbnRDb25maWdGaWxlfTsKICAgIH0KICAgIGVsc2lmICggJEZpbGVuYW1lID1+IG17c2NyaXB0cy93ZWJwYWNrfSApIHsKICAgICAgICAkRVNMaW50Q29uZmlnUGF0aCA9IF9fRklMRV9fOwogICAgICAgICRFU0xpbnRDb25maWdQYXRoID1+IHN7RVNMaW50XC5wbX17RVNMaW50L3dlYnBhY2suZXNsaW50cmMuanN9OwogICAgfQoKICAgICMgRVNMaW50IHBsdWdpbnMgc2hvdWxkIGJlIHJlc29sdmVkIHJlbGF0aXZlIHRvIHRoZSByZXBvIHJvb3QgZm9sZGVyLgogICAgbXkgJEVTTGludFBsdWdpbnNQYXRoID0gX19GSUxFX187CiAgICAkRVNMaW50UGx1Z2luc1BhdGggPX4gc3tFU0xpbnRcLnBtfXtFU0xpbnQvfTsKCiAgICBteSAkRVNMaW50UnVsZXNQYXRoID0gX19GSUxFX187CiAgICAkRVNMaW50UnVsZXNQYXRoID1+IHN7RVNMaW50XC5wbX17RVNMaW50L1J1bGVzfTsKCiAgICBteSAkQ29tbWFuZCA9IHNwcmludGYoCiAgICAgICAgIiVzICVzIC0tY29uZmlnICVzIC0tbm8tZXNsaW50cmMgLS1yZXNvbHZlLXBsdWdpbnMtcmVsYXRpdmUtdG8gJXMgLS1ydWxlc2RpciAlcyAtLWZpeCAlcyAtLXF1aWV0IiwKICAgICAgICAkTm9kZVBhdGgsICRFU0xpbnRQYXRoLCAkRVNMaW50Q29uZmlnUGF0aCwgJEVTTGludFBsdWdpbnNQYXRoLCAkRVNMaW50UnVsZXNQYXRoLCAkRmlsZW5hbWUKICAgICk7CgogICAgbXkgJE91dHB1dCA9IGAkQ29tbWFuZGA7CiAgICBpZiAoICR7XkNISUxEX0VSUk9SX05BVElWRX0gfHwgJE91dHB1dCApIHsKICAgICAgICBFbmNvZGU6Ol91dGY4X29uKCRPdXRwdXQpOyAgICAjIyBubyBjcml0aWMKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiJE91dHB1dFxuIik7CiAgICB9Cn0KCjE7Cg==
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgovLyAtLQoKLyoKICogTk9URTogSW4gb3JkZXIgZm9yIGxpbnRpbmcgdG8gd29yaywgeW91IHdpbGwgbmVlZCBmb2xsb3dpbmcgZ2xvYmFsbHkgaW5zdGFsbGVkIE5QTSBtb2R1bGVzCiAqCiAqICAgbnBtIGluc3RhbGwgLWcgZXNsaW50QDUgZXNsaW50LXBsdWdpbi1pbXBvcnQgZXNsaW50LWNvbmZpZy1haXJibmItYmFzZSBlc2xpbnQtcGx1Z2luLXZ1ZSBiYWJlbC1lc2xpbnQgZXNsaW50LXBsdWdpbi1qZXN0CiAqCiAqIEZJWE1FOiBXZSBoYXZlIHRvIHBpbiB0aGUgRVNMaW50IHZlcnNpb24gdG8gNS54IHNpbmNlIG5vdCBhbGwgcGx1Z2lucyB3ZSB1c2UgYXJlIGNvbXBhdGlibGUgd2l0aCA2LngganVzdCB5ZXQuCiAqLwoKbW9kdWxlLmV4cG9ydHMgPSB7CgogICAgcGFyc2VyT3B0aW9uczogewogICAgICAgIHBhcnNlcjogJ2JhYmVsLWVzbGludCcsCiAgICAgICAgc291cmNlVHlwZTogJ21vZHVsZScKICAgIH0sCgogICAgcGx1Z2luczogWwogICAgICAgICdqZXN0JywKICAgIF0sCgogICAgZW52OiB7CiAgICAgICAgYnJvd3NlcjogdHJ1ZSwKICAgICAgICAnamVzdC9nbG9iYWxzJzogdHJ1ZSwKICAgIH0sCgogICAgZXh0ZW5kczogWwogICAgICAgICdhaXJibmItYmFzZScsCiAgICAgICAgJ3BsdWdpbjp2dWUvcmVjb21tZW5kZWQnLAogICAgXSwKCiAgICBnbG9iYWxzOiB7CiAgICAgICAgJ3RyYW5zbGF0YWJsZSc6IHRydWUsCiAgICB9LAoKICAgIHJ1bGVzOiB7CgogICAgICAgIC8qCiAgICAgICAgICogQWlyQm5CIEpTIHJ1bGUgb3ZlcnJpZGVzLgogICAgICAgICAqLwoKICAgICAgICAvLyBFbmZvcmNlIGNvbnNpc3RlbnQgaW5kZW50YXRpb24uCiAgICAgICAgJ2luZGVudCc6IFsgJ2Vycm9yJywgNCwgewogICAgICAgICAgICAnU3dpdGNoQ2FzZSc6IDEsCiAgICAgICAgICAgIC8vIEZpeCBpc3N1ZSB3aXRoIGBDYW5ub3QgcmVhZCBwcm9wZXJ0eSAncmFuZ2UnIG9mIG51bGxgIGVycm9ycy4gUGxlYXNlIHNlZQogICAgICAgICAgICAvLyAgIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ4MzkxOTEzL2VzbGludC1lcnJvci1jYW5ub3QtcmVhZC1wcm9wZXJ0eS1yYW5nZS1vZi1udWxsCiAgICAgICAgICAgIC8vICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICdpZ25vcmVkTm9kZXMnOiBbICdUZW1wbGF0ZUxpdGVyYWwnIF0sCiAgICAgICAgfV0sCgogICAgICAgIC8vIEZpeCBpc3N1ZSB3aXRoIGBDYW5ub3QgcmVhZCBwcm9wZXJ0eSAncmFuZ2UnIG9mIG51bGxgIGVycm9ycy4gUGxlYXNlIHNlZQogICAgICAgIC8vICAgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDgzOTE5MTMvZXNsaW50LWVycm9yLWNhbm5vdC1yZWFkLXByb3BlcnR5LXJhbmdlLW9mLW51bGwKICAgICAgICAvLyAgIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgICd0ZW1wbGF0ZS1jdXJseS1zcGFjaW5nJzogJ29mZicsCgogICAgICAgIC8vIEFsbG93IHVubmVjZXNzYXJpbHkgcXVvdGVkIHByb3BlcnRpZXMuCiAgICAgICAgJ3F1b3RlLXByb3BzJzogJ29mZicsCgogICAgICAgIC8vIEFsbG93IGRhbmdsaW5nIHVuZGVyc2NvcmVzIHRvIGluZGljYXRlIHByaXZhdGUgbWV0aG9kcyAobGlrZSBfaW50ZXJuYWxNZXRob2QoKSkuCiAgICAgICAgJ25vLXVuZGVyc2NvcmUtZGFuZ2xlJzogJ29mZicsCgogICAgICAgIC8vIEVuZm9yY2UgYSBtYXhpbXVtIGxpbmUgbGVuZ3RoLgogICAgICAgICdtYXgtbGVuJzogWyAnZXJyb3InLCB7ICdjb2RlJzogMTIwIH0gXSwKCiAgICAgICAgLy8gRG9uJ3QgdHJ5IHRvIHJlc29sdmUgdGhlIGRlcGVuZGVuY2llcy4KICAgICAgICAnaW1wb3J0L25vLXVucmVzb2x2ZWQnOiAnb2ZmJywKCiAgICAgICAgLy8gQWxsb3cgZm9yIG1pc3NpbmcgZmlsZSBleHRlbnNpb25zIGluIGltcG9ydCBzdGF0ZW1lbnRzLgogICAgICAgICdpbXBvcnQvZXh0ZW5zaW9ucyc6ICdvZmYnLAoKICAgICAgICAvLyBSZXF1aXJlIGEgc3BhY2UgYmVmb3JlIGZ1bmN0aW9uIHBhcmVudGhlc2lzLgogICAgICAgICdzcGFjZS1iZWZvcmUtZnVuY3Rpb24tcGFyZW4nOiBbICdlcnJvcicsICdhbHdheXMnIF0sCgogICAgICAgIC8vIFJlcXVpcmUgIlN0cm91c3RydXAiIGJyYWNlIHN0eWxlLgogICAgICAgICdicmFjZS1zdHlsZSc6IFsgJ2Vycm9yJywgJ3N0cm91c3RydXAnIF0sCgogICAgICAgIC8vIEVuZm9yY2Ugc3BhY2VzIGluc2lkZSBvZiBicmFja2V0cy4KICAgICAgICAnYXJyYXktYnJhY2tldC1zcGFjaW5nJzogWyAnZXJyb3InLCAnYWx3YXlzJyBdLAoKICAgICAgICAvLyBEbyBub3QgZW5mb3JjZSB0aGF0IGNsYXNzIG1ldGhvZHMgdXRpbGl6ZSB0aGlzLgogICAgICAgICdjbGFzcy1tZXRob2RzLXVzZS10aGlzJzogJ29mZicsCgogICAgICAgIC8vIEFsbG93IHRoZSB1bmFyeSBvcGVyYXRvcnMgKysgYW5kIC0tLgogICAgICAgICduby1wbHVzcGx1cyc6ICdvZmYnLAoKICAgICAgICAvLyBBbGxvdyBSZWFzc2lnbm1lbnQgb2YgRnVuY3Rpb24gUGFyYW1ldGVycy4KICAgICAgICAnbm8tcGFyYW0tcmVhc3NpZ24nOiAnb2ZmJywKCiAgICAgICAgLy8gRW5mb3JjZSBjb25zaXN0ZW50IGxpbmUgYnJlYWtzIGluc2lkZSBmdW5jdGlvbiBwYXJlbnRoZXNlcy4KICAgICAgICAnZnVuY3Rpb24tcGFyZW4tbmV3bGluZSc6IFsgJ2Vycm9yJywgJ2NvbnNpc3RlbnQnIF0sCgogICAgICAgIC8vIElnbm9yZSB0cmFpbGluZyBjb21tYXMgaW4gdGhlIGltcG9ydHMsIGV4cG9ydHMgYW5kIGZ1bmN0aW9ucywgYnV0IHJlcXVpcmUgaXQgaW4gYXJyYXlzIGFuZCBvYmplY3QKICAgICAgICAvLyAgIGRlZmluaXRpb25zLgogICAgICAgICdjb21tYS1kYW5nbGUnOiBbCiAgICAgICAgICAgICdlcnJvcicsCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICdhcnJheXMnOiAnYWx3YXlzLW11bHRpbGluZScsCiAgICAgICAgICAgICAgICAnb2JqZWN0cyc6ICdhbHdheXMtbXVsdGlsaW5lJywKICAgICAgICAgICAgICAgICdpbXBvcnRzJzogJ2lnbm9yZScsCiAgICAgICAgICAgICAgICAnZXhwb3J0cyc6ICdpZ25vcmUnLAogICAgICAgICAgICAgICAgJ2Z1bmN0aW9ucyc6ICdpZ25vcmUnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCgogICAgICAgIC8vIERvIG5vdCBmb3JjZSB0aGUgdXNlIG9mIHRoZSBvYmplY3Qgc3ByZWFkIGp1c3QgeWV0ICh0YXJnZXQgRVMyMDE4KS4KICAgICAgICAncHJlZmVyLW9iamVjdC1zcHJlYWQnOiAnb2ZmJywKCiAgICAgICAgLy8gRG8gbm90IGZvcmNlIHBhcmVudGhlc2VzIG9uIGFycm93IGZ1bmN0aW9ucyB3aXRoIHNpbmdsZSBhcmd1bWVudHMuCiAgICAgICAgJ2Fycm93LXBhcmVucyc6ICdvZmYnLAoKICAgICAgICAvLyBBbGxvdyByZXF1aXJlKCkgY2FsbHMgd2l0aCBleHByZXNzaW9ucyAoZHluYW1pYyBpbXBvcnRzKS4KICAgICAgICAnaW1wb3J0L25vLWR5bmFtaWMtcmVxdWlyZSc6ICdvZmYnLAoKICAgICAgICAvKgogICAgICAgICAqIFZ1ZS5qcyBydWxlIG92ZXJyaWRlcy4KICAgICAgICAgKi8KCiAgICAgICAgLy8gRW5mb3JjZSBjb25zaXN0ZW50IGluZGVudGF0aW9uIGluIDx0ZW1wbGF0ZT4uCiAgICAgICAgJ3Z1ZS9odG1sLWluZGVudCc6IFsgJ2Vycm9yJywgNCBdLAoKICAgICAgICAvLyBFbmZvcmNlIHYtYmluZCBkaXJlY3RpdmUgdXNhZ2UgaW4gbG9uZyBmb3JtLgogICAgICAgICd2dWUvdi1iaW5kLXN0eWxlJzogWyAnZXJyb3InLCAnbG9uZ2Zvcm0nIF0sCgogICAgICAgIC8vIEVuZm9yY2Ugdi1vbiBkaXJlY3RpdmUgdXNhZ2UgaW4gbG9uZyBmb3JtLgogICAgICAgICd2dWUvdi1vbi1zdHlsZSc6ICBbICdlcnJvcicsICdsb25nZm9ybScgXSwKCiAgICAgICAgLy8gRG9uJ3QgcmVxdWlyZSBkZWZhdWx0IHZhbHVlIGZvciBwcm9wcy4KICAgICAgICAndnVlL3JlcXVpcmUtZGVmYXVsdC1wcm9wJzogJ29mZicsCgogICAgICAgIC8vIERvbid0IHdhcm4gYWJvdXQgdW51c2VkIGNvbXBvbmVudHMuIFRoaXMgaXMgc29tZXRpbWUgbmVlZGVkIGZvciBkeW5hbWljIGNvbXBvbmVudCB1c2FnZS4KICAgICAgICAndnVlL25vLXVudXNlZC1jb21wb25lbnRzJzogJ29mZicsCgogICAgICAgIC8vIERvbid0IGNvcnJlY3QgY2FzaW5nIG9mIGNvbXBvbmVudCBuYW1lcyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSByZWFzb25zLgogICAgICAgICd2dWUvY29tcG9uZW50LW5hbWUtaW4tdGVtcGxhdGUtY2FzaW5nJzogJ29mZicsCgogICAgICAgIC8vIERvbid0IGNvcnJlY3QgY2xvc2luZyBicmFja2V0IHBvc2l0aW9uIG9mIEhUTUwgdGFncyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSByZWFzb25zLgogICAgICAgICd2dWUvaHRtbC1jbG9zaW5nLWJyYWNrZXQtbmV3bGluZSc6ICdvZmYnLAoKICAgICAgICAvLyBEb24ndCBjb3JyZWN0IG5ldyBsaW5lcyBpbiBzaW5nbGUgbGluZSBIVE1MIGVsZW1lbnRzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHJlYXNvbnMuCiAgICAgICAgJ3Z1ZS9zaW5nbGVsaW5lLWh0bWwtZWxlbWVudC1jb250ZW50LW5ld2xpbmUnOiAnb2ZmJywKCiAgICAgICAgLy8gTk9URTogVGhlc2UgcnVsZXMgd2lsbCBiZSB0dXJuZWQgb24gYWdhaW4gaW4gT1RSUyA4LgogICAgICAgICd2dWUvYXR0cmlidXRlcy1vcmRlcic6ICdvZmYnLAogICAgICAgICd2dWUvaHRtbC1jbG9zaW5nLWJyYWNrZXQtc3BhY2luZyc6ICdvZmYnLAogICAgICAgICd2dWUvbXVsdGlsaW5lLWh0bWwtZWxlbWVudC1jb250ZW50LW5ld2xpbmUnOiAnb2ZmJywKICAgIH0sCn07Cg==
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgovLyAtLQoKLyoKICogTk9URTogSW4gb3JkZXIgZm9yIGxpbnRpbmcgdG8gd29yaywgeW91IHdpbGwgbmVlZCBmb2xsb3dpbmcgZ2xvYmFsbHkgaW5zdGFsbGVkIE5QTSBtb2R1bGVzCiAqCiAqICAgbnBtIGluc3RhbGwgLWcgZXNsaW50QDUgZXNsaW50LXBsdWdpbi1pbXBvcnQgZXNsaW50LWNvbmZpZy1haXJibmItYmFzZSBlc2xpbnQtcGx1Z2luLXZ1ZSBiYWJlbC1lc2xpbnQgZXNsaW50LXBsdWdpbi1qZXN0CiAqCiAqIEZJWE1FOiBXZSBoYXZlIHRvIHBpbiB0aGUgRVNMaW50IHZlcnNpb24gdG8gNS54IHNpbmNlIG5vdCBhbGwgcGx1Z2lucyB3ZSB1c2UgYXJlIGNvbXBhdGlibGUgd2l0aCA2LngganVzdCB5ZXQuCiAqLwoKbW9kdWxlLmV4cG9ydHMgPSB7CgogICAgcGFyc2VyT3B0aW9uczogewogICAgICAgIHBhcnNlcjogJ2JhYmVsLWVzbGludCcsCiAgICAgICAgc291cmNlVHlwZTogJ21vZHVsZScKICAgIH0sCgogICAgcGx1Z2luczogWwogICAgICAgICdqZXN0JywKICAgIF0sCgogICAgZW52OiB7CiAgICAgICAgYnJvd3NlcjogdHJ1ZSwKICAgICAgICAnamVzdC9nbG9iYWxzJzogdHJ1ZSwKICAgIH0sCgogICAgZXh0ZW5kczogWwogICAgICAgICdhaXJibmItYmFzZScsCiAgICAgICAgJ3BsdWdpbjp2dWUvcmVjb21tZW5kZWQnLAogICAgXSwKCiAgICBnbG9iYWxzOiB7CiAgICAgICAgJ3RyYW5zbGF0YWJsZSc6IHRydWUsCiAgICB9LAoKICAgIHJ1bGVzOiB7CgogICAgICAgIC8qCiAgICAgICAgICogQWlyQm5CIEpTIHJ1bGUgb3ZlcnJpZGVzLgogICAgICAgICAqLwoKICAgICAgICAvLyBFbmZvcmNlIGNvbnNpc3RlbnQgaW5kZW50YXRpb24uCiAgICAgICAgJ2luZGVudCc6IFsgJ2Vycm9yJywgNCwgewogICAgICAgICAgICAnU3dpdGNoQ2FzZSc6IDEsCiAgICAgICAgICAgIC8vIEZpeCBpc3N1ZSB3aXRoIGBDYW5ub3QgcmVhZCBwcm9wZXJ0eSAncmFuZ2UnIG9mIG51bGxgIGVycm9ycy4gUGxlYXNlIHNlZQogICAgICAgICAgICAvLyAgIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ4MzkxOTEzL2VzbGludC1lcnJvci1jYW5ub3QtcmVhZC1wcm9wZXJ0eS1yYW5nZS1vZi1udWxsCiAgICAgICAgICAgIC8vICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICdpZ25vcmVkTm9kZXMnOiBbICdUZW1wbGF0ZUxpdGVyYWwnIF0sCiAgICAgICAgfV0sCgogICAgICAgIC8vIEZpeCBpc3N1ZSB3aXRoIGBDYW5ub3QgcmVhZCBwcm9wZXJ0eSAncmFuZ2UnIG9mIG51bGxgIGVycm9ycy4gUGxlYXNlIHNlZQogICAgICAgIC8vICAgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDgzOTE5MTMvZXNsaW50LWVycm9yLWNhbm5vdC1yZWFkLXByb3BlcnR5LXJhbmdlLW9mLW51bGwKICAgICAgICAvLyAgIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgICd0ZW1wbGF0ZS1jdXJseS1zcGFjaW5nJzogJ29mZicsCgogICAgICAgIC8vIEFsbG93IHVubmVjZXNzYXJpbHkgcXVvdGVkIHByb3BlcnRpZXMuCiAgICAgICAgJ3F1b3RlLXByb3BzJzogJ29mZicsCgogICAgICAgIC8vIEFsbG93IGRhbmdsaW5nIHVuZGVyc2NvcmVzIHRvIGluZGljYXRlIHByaXZhdGUgbWV0aG9kcyAobGlrZSBfaW50ZXJuYWxNZXRob2QoKSkuCiAgICAgICAgJ25vLXVuZGVyc2NvcmUtZGFuZ2xlJzogJ29mZicsCgogICAgICAgIC8vIEVuZm9yY2UgYSBtYXhpbXVtIGxpbmUgbGVuZ3RoLgogICAgICAgICdtYXgtbGVuJzogWyAnZXJyb3InLCB7ICdjb2RlJzogMTIwIH0gXSwKCiAgICAgICAgLy8gRG9uJ3QgdHJ5IHRvIHJlc29sdmUgdGhlIGRlcGVuZGVuY2llcy4KICAgICAgICAnaW1wb3J0L25vLXVucmVzb2x2ZWQnOiAnb2ZmJywKCiAgICAgICAgLy8gQWxsb3cgZm9yIG1pc3NpbmcgZmlsZSBleHRlbnNpb25zIGluIGltcG9ydCBzdGF0ZW1lbnRzLgogICAgICAgICdpbXBvcnQvZXh0ZW5zaW9ucyc6ICdvZmYnLAoKICAgICAgICAvLyBSZXF1aXJlIGEgc3BhY2UgYmVmb3JlIGZ1bmN0aW9uIHBhcmVudGhlc2lzLgogICAgICAgICdzcGFjZS1iZWZvcmUtZnVuY3Rpb24tcGFyZW4nOiBbICdlcnJvcicsICdhbHdheXMnIF0sCgogICAgICAgIC8vIFJlcXVpcmUgIlN0cm91c3RydXAiIGJyYWNlIHN0eWxlLgogICAgICAgICdicmFjZS1zdHlsZSc6IFsgJ2Vycm9yJywgJ3N0cm91c3RydXAnIF0sCgogICAgICAgIC8vIEVuZm9yY2Ugc3BhY2VzIGluc2lkZSBvZiBicmFja2V0cy4KICAgICAgICAnYXJyYXktYnJhY2tldC1zcGFjaW5nJzogWyAnZXJyb3InLCAnYWx3YXlzJyBdLAoKICAgICAgICAvLyBEbyBub3QgZW5mb3JjZSB0aGF0IGNsYXNzIG1ldGhvZHMgdXRpbGl6ZSB0aGlzLgogICAgICAgICdjbGFzcy1tZXRob2RzLXVzZS10aGlzJzogJ29mZicsCgogICAgICAgIC8vIEFsbG93IHRoZSB1bmFyeSBvcGVyYXRvcnMgKysgYW5kIC0tLgogICAgICAgICduby1wbHVzcGx1cyc6ICdvZmYnLAoKICAgICAgICAvLyBBbGxvdyBSZWFzc2lnbm1lbnQgb2YgRnVuY3Rpb24gUGFyYW1ldGVycy4KICAgICAgICAnbm8tcGFyYW0tcmVhc3NpZ24nOiAnb2ZmJywKCiAgICAgICAgLy8gRW5mb3JjZSBjb25zaXN0ZW50IGxpbmUgYnJlYWtzIGluc2lkZSBmdW5jdGlvbiBwYXJlbnRoZXNlcy4KICAgICAgICAnZnVuY3Rpb24tcGFyZW4tbmV3bGluZSc6IFsgJ2Vycm9yJywgJ2NvbnNpc3RlbnQnIF0sCgogICAgICAgIC8vIElnbm9yZSB0cmFpbGluZyBjb21tYXMgaW4gdGhlIGltcG9ydHMsIGV4cG9ydHMgYW5kIGZ1bmN0aW9ucywgYnV0IHJlcXVpcmUgaXQgaW4gYXJyYXlzIGFuZCBvYmplY3QKICAgICAgICAvLyAgIGRlZmluaXRpb25zLgogICAgICAgICdjb21tYS1kYW5nbGUnOiBbCiAgICAgICAgICAgICdlcnJvcicsCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICdhcnJheXMnOiAnYWx3YXlzLW11bHRpbGluZScsCiAgICAgICAgICAgICAgICAnb2JqZWN0cyc6ICdhbHdheXMtbXVsdGlsaW5lJywKICAgICAgICAgICAgICAgICdpbXBvcnRzJzogJ2lnbm9yZScsCiAgICAgICAgICAgICAgICAnZXhwb3J0cyc6ICdpZ25vcmUnLAogICAgICAgICAgICAgICAgJ2Z1bmN0aW9ucyc6ICdpZ25vcmUnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCgogICAgICAgIC8vIERvIG5vdCBmb3JjZSB0aGUgdXNlIG9mIHRoZSBvYmplY3Qgc3ByZWFkIGp1c3QgeWV0ICh0YXJnZXQgRVMyMDE4KS4KICAgICAgICAncHJlZmVyLW9iamVjdC1zcHJlYWQnOiAnb2ZmJywKCiAgICAgICAgLy8gRG8gbm90IGZvcmNlIHBhcmVudGhlc2VzIG9uIGFycm93IGZ1bmN0aW9ucyB3aXRoIHNpbmdsZSBhcmd1bWVudHMuCiAgICAgICAgJ2Fycm93LXBhcmVucyc6ICdvZmYnLAoKICAgICAgICAvLyBBbGxvdyByZXF1aXJlKCkgY2FsbHMgd2l0aCBleHByZXNzaW9ucyAoZHluYW1pYyBpbXBvcnRzKS4KICAgICAgICAnaW1wb3J0L25vLWR5bmFtaWMtcmVxdWlyZSc6ICdvZmYnLAoKICAgICAgICAvKgogICAgICAgICAqIFZ1ZS5qcyBydWxlIG92ZXJyaWRlcy4KICAgICAgICAgKi8KCiAgICAgICAgLy8gRW5mb3JjZSBjb25zaXN0ZW50IGluZGVudGF0aW9uIGluIDx0ZW1wbGF0ZT4uCiAgICAgICAgJ3Z1ZS9odG1sLWluZGVudCc6IFsgJ2Vycm9yJywgNCBdLAoKICAgICAgICAvLyBFbmZvcmNlIHYtYmluZCBkaXJlY3RpdmUgdXNhZ2UgaW4gbG9uZyBmb3JtLgogICAgICAgICd2dWUvdi1iaW5kLXN0eWxlJzogWyAnZXJyb3InLCAnbG9uZ2Zvcm0nIF0sCgogICAgICAgIC8vIEVuZm9yY2Ugdi1vbiBkaXJlY3RpdmUgdXNhZ2UgaW4gbG9uZyBmb3JtLgogICAgICAgICd2dWUvdi1vbi1zdHlsZSc6ICBbICdlcnJvcicsICdsb25nZm9ybScgXSwKCiAgICAgICAgLy8gRG9uJ3QgcmVxdWlyZSBkZWZhdWx0IHZhbHVlIGZvciBwcm9wcy4KICAgICAgICAndnVlL3JlcXVpcmUtZGVmYXVsdC1wcm9wJzogJ29mZicsCgogICAgICAgIC8vIERvbid0IHdhcm4gYWJvdXQgdW51c2VkIGNvbXBvbmVudHMuIFRoaXMgaXMgc29tZXRpbWUgbmVlZGVkIGZvciBkeW5hbWljIGNvbXBvbmVudCB1c2FnZS4KICAgICAgICAndnVlL25vLXVudXNlZC1jb21wb25lbnRzJzogJ29mZicsCgogICAgICAgIC8vIERvbid0IGNvcnJlY3QgY2FzaW5nIG9mIGNvbXBvbmVudCBuYW1lcyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSByZWFzb25zLgogICAgICAgICd2dWUvY29tcG9uZW50LW5hbWUtaW4tdGVtcGxhdGUtY2FzaW5nJzogJ29mZicsCgogICAgICAgIC8vIERvbid0IGNvcnJlY3QgY2xvc2luZyBicmFja2V0IHBvc2l0aW9uIG9mIEhUTUwgdGFncyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSByZWFzb25zLgogICAgICAgICd2dWUvaHRtbC1jbG9zaW5nLWJyYWNrZXQtbmV3bGluZSc6ICdvZmYnLAoKICAgICAgICAvLyBEb24ndCBjb3JyZWN0IG5ldyBsaW5lcyBpbiBzaW5nbGUgbGluZSBIVE1MIGVsZW1lbnRzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHJlYXNvbnMuCiAgICAgICAgJ3Z1ZS9zaW5nbGVsaW5lLWh0bWwtZWxlbWVudC1jb250ZW50LW5ld2xpbmUnOiAnb2ZmJywKICAgIH0sCn07Cg==
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgovLyAtLQoKbW9kdWxlLmV4cG9ydHMgPSB7CiAgICAiZW52IjogewogICAgICAgICJicm93c2VyIjogdHJ1ZSwKICAgICAgICAianF1ZXJ5IjogdHJ1ZQogICAgfSwKICAgICJnbG9iYWxzIjogewogICAgICAgICJDb3JlIjogdHJ1ZSwKICAgICAgICAiQ0tFRElUT1IiOiB0cnVlLAogICAgICAgICJpc0pRdWVyeU9iamVjdCI6IHRydWUsCiAgICAgICAgInByaW50U3RhY2tUcmFjZSI6IHRydWUsCiAgICAgICAgIlFVbml0IjogdHJ1ZSwKICAgICAgICAvLyBvbGRlciBRVW5pdCBzdHVmZgogICAgICAgIC8vIG9ubHkgbmVlZGVkIGZvciBPVFJTIDw9IDUKICAgICAgICAvLyBjYW4gYmUgcmVtb3ZlZCBsYXRlcgogICAgICAgICJtb2R1bGUiOiB0cnVlLAogICAgICAgICJ0ZXN0IjogdHJ1ZSwKICAgICAgICAiZXhwZWN0IjogdHJ1ZSwKICAgICAgICAiZXF1YWwiOiB0cnVlLAogICAgICAgICJkZWVwRXF1YWwiOiB0cnVlLAogICAgICAgICJhc3luY1Rlc3QiOiB0cnVlLAogICAgICAgICJzdGFydCI6IHRydWUsCiAgICAgICAgIm9rIjogdHJ1ZSwKICAgICAgICAibm90RXF1YWwiOiB0cnVlCiAgICB9LAogICAgImV4dGVuZHMiOiAiZXNsaW50OnJlY29tbWVuZGVkIiwKICAgICJydWxlcyI6IHsKICAgICAgICAicXVvdGVzIjogMCwKICAgICAgICAibmV3LWNhcCI6IDAsCiAgICAgICAgImdsb2JhbC1zdHJpY3QiOiAwLAogICAgICAgICJuby1hbGVydCI6IDAsCiAgICAgICAgInJhZGl4IjogMiwKICAgICAgICAidmFsaWQtanNkb2MiOiBbMiwgewogICAgICAgICAgICAicmVxdWlyZVJldHVybiI6IGZhbHNlLAogICAgICAgICAgICAicmVxdWlyZVBhcmFtRGVzY3JpcHRpb24iOiBmYWxzZSwKICAgICAgICAgICAgInJlcXVpcmVSZXR1cm5EZXNjcmlwdGlvbiI6IGZhbHNlCiAgICAgICAgfV0sCiAgICAgICAgIm5vLWNhdGNoLXNoYWRvdyI6IDAsCiAgICAgICAgInZhcnMtb24tdG9wIjogMiwKICAgICAgICAic3BhY2UtaW4tcGFyZW5zIjogWzIsICJuZXZlciJdLAogICAgICAgICJuby1ldmFsIjogMiwKICAgICAgICAibm8taW1wbGllZC1ldmFsIjogMiwKCiAgICAgICAgLy8gT1RSUy1zcGVjaWZpYyBydWxlcwogICAgICAgICJuby13aW5kb3ciOiAyLAoKICAgICAgICAvLyBBbGxvdyByZS1kZWNsYXJhdGlvbiBvZiBidWlsdC1pbiBnbG9iYWxzIChpLmUuIGBDb3JlYCBuYW1lc3BhY2UpLgogICAgICAgICJuby1yZWRlY2xhcmUiOiBbImVycm9yIiwgewogICAgICAgICAgICAiYnVpbHRpbkdsb2JhbHMiOiBmYWxzZQogICAgICAgIH1dLAoKICAgICAgICAvLyBBbGxvdyB1c2FnZSBvZiBwcm90b3R5cGUgYnVpbHQtaW4gbWV0aG9kcyAoaS5lLiBgaGFzT3duUHJvcGVydHlgKS4KICAgICAgICAibm8tcHJvdG90eXBlLWJ1aWx0aW5zIjogMAogICAgfQp9Cg==
ewogICJuYW1lIjogIk9UUlNDb2RlUG9saWN5IiwKICAidmVyc2lvbiI6ICIxLjAuMCIsCiAgImxvY2tmaWxlVmVyc2lvbiI6IDEsCiAgInJlcXVpcmVzIjogdHJ1ZSwKICAiZGVwZW5kZW5jaWVzIjogewogICAgIkBiYWJlbC9jb2RlLWZyYW1lIjogewogICAgICAidmVyc2lvbiI6ICI3LjguMyIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9AYmFiZWwvY29kZS1mcmFtZS8tL2NvZGUtZnJhbWUtNy44LjMudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItYTlneHBtZFh0WkVJbmtDU0hVSkRMSFpWQmdiMVFTMGpoc3M0Y1BQOTNFVzdzK3VDNWJpa0VUMnR3RUYzS1YrN3JEYmxKY21OdlRSN1ZKZWpxZDJDMmc9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgIkBiYWJlbC9oaWdobGlnaHQiOiAiXjcuOC4zIgogICAgICB9CiAgICB9LAogICAgIkBiYWJlbC9nZW5lcmF0b3IiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjcuOS42IiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL0BiYWJlbC9nZW5lcmF0b3IvLS9nZW5lcmF0b3ItNy45LjYudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItK2h0d1dLSmJIMmJMNzJIUmx1Rjh6dW1CeHp1WDBaWlVGbDNKTE55b1VqTS9Ibzh3blZwUFhNNmFVejhjZktEcVEvaDd6SHFLdDR4ekp0ZVVvc2NrcVE9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgIkBiYWJlbC90eXBlcyI6ICJeNy45LjYiLAogICAgICAgICJqc2VzYyI6ICJeMi41LjEiLAogICAgICAgICJsb2Rhc2giOiAiXjQuMTcuMTMiLAogICAgICAgICJzb3VyY2UtbWFwIjogIl4wLjUuMCIKICAgICAgfQogICAgfSwKICAgICJAYmFiZWwvaGVscGVyLWZ1bmN0aW9uLW5hbWUiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjcuOS41IiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL0BiYWJlbC9oZWxwZXItZnVuY3Rpb24tbmFtZS8tL2hlbHBlci1mdW5jdGlvbi1uYW1lLTcuOS41LnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLUpWY1FaZVhNNTlDZDFxYW5EVXh2OWZnSnB0M05lS1VhcUJxVUV2Zm1RK0JDT0txMnhVZ2FXWlcyaHIwZGtieUpnZXpZdXBsRW9oNWtubXJuUzY4ZWZ3PT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJAYmFiZWwvaGVscGVyLWdldC1mdW5jdGlvbi1hcml0eSI6ICJeNy44LjMiLAogICAgICAgICJAYmFiZWwvdGVtcGxhdGUiOiAiXjcuOC4zIiwKICAgICAgICAiQGJhYmVsL3R5cGVzIjogIl43LjkuNSIKICAgICAgfQogICAgfSwKICAgICJAYmFiZWwvaGVscGVyLWdldC1mdW5jdGlvbi1hcml0eSI6IHsKICAgICAgInZlcnNpb24iOiAiNy44LjMiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvQGJhYmVsL2hlbHBlci1nZXQtZnVuY3Rpb24tYXJpdHkvLS9oZWxwZXItZ2V0LWZ1bmN0aW9uLWFyaXR5LTcuOC4zLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLUZWRFIrR2Q5aUxqVU1ZMWZ6RTJTUjBJdWFKVG9SNFJrQ0RBUlZmc0JCUFNQNTNHRXFTRmpEOGdOeXhnMjQ2VlV5Yy9BTFJ4RmFBSzhyVkc3VVQ3eFJBPT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJAYmFiZWwvdHlwZXMiOiAiXjcuOC4zIgogICAgICB9CiAgICB9LAogICAgIkBiYWJlbC9oZWxwZXItc3BsaXQtZXhwb3J0LWRlY2xhcmF0aW9uIjogewogICAgICAidmVyc2lvbiI6ICI3LjguMyIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9AYmFiZWwvaGVscGVyLXNwbGl0LWV4cG9ydC1kZWNsYXJhdGlvbi8tL2hlbHBlci1zcGxpdC1leHBvcnQtZGVjbGFyYXRpb24tNy44LjMudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItM3gzeU9leUJoVzg1MWhyb3plN0VsemRrZVJYUVlRYkZJYjdnTEsxV1FZc3cyR1dEYXk1Z0FKTncxc1dKMFZGUDZ6NUoxd2hxZVhIL1dDZENqWnY2ZEE9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgIkBiYWJlbC90eXBlcyI6ICJeNy44LjMiCiAgICAgIH0KICAgIH0sCiAgICAiQGJhYmVsL2hlbHBlci12YWxpZGF0b3ItaWRlbnRpZmllciI6IHsKICAgICAgInZlcnNpb24iOiAiNy45LjUiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvQGJhYmVsL2hlbHBlci12YWxpZGF0b3ItaWRlbnRpZmllci8tL2hlbHBlci12YWxpZGF0b3ItaWRlbnRpZmllci03LjkuNS50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi0vOGFyTEtVRnE4ODJ3NHRXR2o5Sll6UnBBbFpnaVdVSitkdHRlTlREcXJSQno5SWd1Y2s5Um4zeWt1QkRvVXdoMlRPNHRTQUpscnhEVU9YV2tsSmU0Zz09IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAiQGJhYmVsL2hpZ2hsaWdodCI6IHsKICAgICAgInZlcnNpb24iOiAiNy45LjAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvQGJhYmVsL2hpZ2hsaWdodC8tL2hpZ2hsaWdodC03LjkuMC50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1sSlpQaWx4WDdPcDNOdi8yY3ZGZG5sZXBQWER4aTI5d3h0ZVQ1N1E5NjVvYzVSOXY4Nnp0eDBqZnhWclRjQms4QzJrY1Bra0RhMlo0VDNac1BQVldzUT09IiwKICAgICAgImRldiI6IHRydWUsCiAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAiQGJhYmVsL2hlbHBlci12YWxpZGF0b3ItaWRlbnRpZmllciI6ICJeNy45LjAiLAogICAgICAgICJjaGFsayI6ICJeMi4wLjAiLAogICAgICAgICJqcy10b2tlbnMiOiAiXjQuMC4wIgogICAgICB9CiAgICB9LAogICAgIkBiYWJlbC9wYXJzZXIiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjcuOS42IiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL0BiYWJlbC9wYXJzZXIvLS9wYXJzZXItNy45LjYudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItQW9lSUVKbjh2dCtkLzYrUFhEUlBha3NZaG5sYk1JaWVqaW9CWnZ2TVFzT2pXL0pZSzZrLzBkS252dlAzRWhLNUdmTUJXRFB0cnhSdGVnV2RBY2RxOVE9PSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgIkBiYWJlbC90ZW1wbGF0ZSI6IHsKICAgICAgInZlcnNpb24iOiAiNy44LjYiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvQGJhYmVsL3RlbXBsYXRlLy0vdGVtcGxhdGUtNy44LjYudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItemJNc1BNeS92MFBXRlpFaFFKNjZicWpoSCt6MEpnTW9CV3Vpa1h5YmdHM0drZC8zdDVvUTFSdzJXUWhuU3JzT21zS1huWk94MTV0a0M0cU9OLytKUGc9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgIkBiYWJlbC9jb2RlLWZyYW1lIjogIl43LjguMyIsCiAgICAgICAgIkBiYWJlbC9wYXJzZXIiOiAiXjcuOC42IiwKICAgICAgICAiQGJhYmVsL3R5cGVzIjogIl43LjguNiIKICAgICAgfQogICAgfSwKICAgICJAYmFiZWwvdHJhdmVyc2UiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjcuOS42IiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL0BiYWJlbC90cmF2ZXJzZS8tL3RyYXZlcnNlLTcuOS42LnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLWIzckFIU2pieHk2VkVBdmx4TThPVi8wWDRYckc3MnpveG1lNnExTU9vZTJ2ZDBiRWMrVHdheWh1QzErRGZncWgxUUVHK3BqN2F0UXF2VXBySEljY3NnPT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJAYmFiZWwvY29kZS1mcmFtZSI6ICJeNy44LjMiLAogICAgICAgICJAYmFiZWwvZ2VuZXJhdG9yIjogIl43LjkuNiIsCiAgICAgICAgIkBiYWJlbC9oZWxwZXItZnVuY3Rpb24tbmFtZSI6ICJeNy45LjUiLAogICAgICAgICJAYmFiZWwvaGVscGVyLXNwbGl0LWV4cG9ydC1kZWNsYXJhdGlvbiI6ICJeNy44LjMiLAogICAgICAgICJAYmFiZWwvcGFyc2VyIjogIl43LjkuNiIsCiAgICAgICAgIkBiYWJlbC90eXBlcyI6ICJeNy45LjYiLAogICAgICAgICJkZWJ1ZyI6ICJeNC4xLjAiLAogICAgICAgICJnbG9iYWxzIjogIl4xMS4xLjAiLAogICAgICAgICJsb2Rhc2giOiAiXjQuMTcuMTMiCiAgICAgIH0KICAgIH0sCiAgICAiQGJhYmVsL3R5cGVzIjogewogICAgICAidmVyc2lvbiI6ICI3LjkuNiIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9AYmFiZWwvdHlwZXMvLS90eXBlcy03LjkuNi50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1xeFh6dkJPLy9qTzlabm9hc0tGMXVKekhkMitNNlEyWlBJVmZuRnBzOEpKdlh5MFpCYndiTk9tRTZTR0lZNVhPWTZkMUJvNWxiOWQ5Uko4bnYzV1NlQT09IiwKICAgICAgImRldiI6IHRydWUsCiAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAiQGJhYmVsL2hlbHBlci12YWxpZGF0b3ItaWRlbnRpZmllciI6ICJeNy45LjUiLAogICAgICAgICJsb2Rhc2giOiAiXjQuMTcuMTMiLAogICAgICAgICJ0by1mYXN0LXByb3BlcnRpZXMiOiAiXjIuMC4wIgogICAgICB9CiAgICB9LAogICAgIkB0eXBlcy9jb2xvci1uYW1lIjogewogICAgICAidmVyc2lvbiI6ICIxLjEuMSIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9AdHlwZXMvY29sb3ItbmFtZS8tL2NvbG9yLW5hbWUtMS4xLjEudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItcnIrT1F5QWp4emU3R2dXclNhSnd5ZEhTdEloSHEybHZZM0JPQzJNajdLbnpJN1hLMFV3MVRPT2RJOWxEb2FqRWJTV0xpWWdvbzRmMVI1MWVyUWZoUFE9PSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgIkB0eXBlcy9qc29uLXNjaGVtYSI6IHsKICAgICAgInZlcnNpb24iOiAiNy4wLjQiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvQHR5cGVzL2pzb24tc2NoZW1hLy0vanNvbi1zY2hlbWEtNy4wLjQudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItOCtLQUt6RXZTVWRlbytrbXFuS3JxZ2VFK0xjQTB0allXRlk3UlBQcm9WWXducURqdWt6TyszYjZkTEQ1NnJZWDVUZFdlam5FT0xKWU9JZWg0Q1hLdUE9PSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgIkB0eXBlc2NyaXB0LWVzbGludC9leHBlcmltZW50YWwtdXRpbHMiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjIuMzEuMCIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9AdHlwZXNjcmlwdC1lc2xpbnQvZXhwZXJpbWVudGFsLXV0aWxzLy0vZXhwZXJpbWVudGFsLXV0aWxzLTIuMzEuMC50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1NSTZJV2t1dExZUVlUUWdaNDhJVm5SWG1MUi8wUTZvQXlKZ2lPcm9yNzRhclVNaDdFV2pKa0FEZmlyWmhSc1VNSGVMSjg1VTJpeVNEd0hUU25OaTl2QT09IiwKICAgICAgImRldiI6IHRydWUsCiAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAiQHR5cGVzL2pzb24tc2NoZW1hIjogIl43LjAuMyIsCiAgICAgICAgIkB0eXBlc2NyaXB0LWVzbGludC90eXBlc2NyaXB0LWVzdHJlZSI6ICIyLjMxLjAiLAogICAgICAgICJlc2xpbnQtc2NvcGUiOiAiXjUuMC4wIiwKICAgICAgICAiZXNsaW50LXV0aWxzIjogIl4yLjAuMCIKICAgICAgfSwKICAgICAgImRlcGVuZGVuY2llcyI6IHsKICAgICAgICAiZXNsaW50LXV0aWxzIjogewogICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAogICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VzbGludC11dGlscy8tL2VzbGludC11dGlscy0yLjAuMC50Z3oiLAogICAgICAgICAgImludGVncml0eSI6ICJzaGE1MTItMEhDUHVKdis3V3YxYkFDbTh5NS9FQ1ZmWWRmc0FtOXhtVmI3c2FlRmx4alBZQUxlZmpoYllvQ2tCalBkUHpHSDh3V3lUcEFlejgyRmgzVktZRVo4T0E9PSIsCiAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAgICAgImVzbGludC12aXNpdG9yLWtleXMiOiAiXjEuMS4wIgogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgICJAdHlwZXNjcmlwdC1lc2xpbnQvdHlwZXNjcmlwdC1lc3RyZWUiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjIuMzEuMCIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9AdHlwZXNjcmlwdC1lc2xpbnQvdHlwZXNjcmlwdC1lc3RyZWUvLS90eXBlc2NyaXB0LWVzdHJlZS0yLjMxLjAudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItdnhXMTQ5YlhGWFh1QnJBYWswZUtIT3piY3U5Y3ZpNmlOY0pEekV0T2tSd0dIeEpHMTVjaGlBUUF3aExPc2srODZwOUdUci9UemlZdncrSDlrTWFJZ0E9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgImRlYnVnIjogIl40LjEuMSIsCiAgICAgICAgImVzbGludC12aXNpdG9yLWtleXMiOiAiXjEuMS4wIiwKICAgICAgICAiZ2xvYiI6ICJeNy4xLjYiLAogICAgICAgICJpcy1nbG9iIjogIl40LjAuMSIsCiAgICAgICAgImxvZGFzaCI6ICJeNC4xNy4xNSIsCiAgICAgICAgInNlbXZlciI6ICJeNi4zLjAiLAogICAgICAgICJ0c3V0aWxzIjogIl4zLjE3LjEiCiAgICAgIH0KICAgIH0sCiAgICAiYWNvcm4iOiB7CiAgICAgICJ2ZXJzaW9uIjogIjcuMi4wIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Fjb3JuLy0vYWNvcm4tNy4yLjAudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItYXB3WFZtWVZwUTM0bS9pNzF2ckFwUnJSS0NXUW5aWkYxK25wT0QwV1Y1eFpGZndXT21LR1EyUldsZmR5OXZXSVRzZW5pc004TTBRZXE4YWdjRkhOaVE9PSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgImFjb3JuLWpzeCI6IHsKICAgICAgInZlcnNpb24iOiAiNS4yLjAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYWNvcm4tanN4Ly0vYWNvcm4tanN4LTUuMi4wLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLUhpVVgvK0syWXBrcEorU3pCZmZrTS9BUTJZRTAzUzBVMWtqVExWcG9KZGhaTU9XeThxdlhWTjlKZExxdjJRc2FRNk1QWVFJdU5td0Q4ek9pWVVvZkxRPT0iLAogICAgICAiZGV2IjogdHJ1ZQogICAgfSwKICAgICJhanYiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjYuMTIuMiIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hanYvLS9hanYtNi4xMi4yLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLWsrVitoemptNXEvTXI4ZWYvMVk5Z29DbWxzSzRJNlNtNzR0ZWV5R3ZGazFYck9zYnNLTGpFZHJ2bnk0MkNaK2E4c1hiazhLV3BZL2JEd1MrRkxMMlVRPT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJmYXN0LWRlZXAtZXF1YWwiOiAiXjMuMS4xIiwKICAgICAgICAiZmFzdC1qc29uLXN0YWJsZS1zdHJpbmdpZnkiOiAiXjIuMC4wIiwKICAgICAgICAianNvbi1zY2hlbWEtdHJhdmVyc2UiOiAiXjAuNC4xIiwKICAgICAgICAidXJpLWpzIjogIl40LjIuMiIKICAgICAgfQogICAgfSwKICAgICJhbnNpLWVzY2FwZXMiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjQuMy4xIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Fuc2ktZXNjYXBlcy8tL2Fuc2ktZXNjYXBlcy00LjMuMS50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1KV0Y3b2NxTnJwOHU5b3FwZ1Yrd0g1ZnRidCtjZnZ2K1BUak92S0xUM0FkWWx5L0xtT1JBUmZFVlQxaXlqd04rNE1xRTVVbVZLb0FkSUJxZW9DSGdMQT09IiwKICAgICAgImRldiI6IHRydWUsCiAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAidHlwZS1mZXN0IjogIl4wLjExLjAiCiAgICAgIH0sCiAgICAgICJkZXBlbmRlbmNpZXMiOiB7CiAgICAgICAgInR5cGUtZmVzdCI6IHsKICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMTEuMCIsCiAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdHlwZS1mZXN0Ly0vdHlwZS1mZXN0LTAuMTEuMC50Z3oiLAogICAgICAgICAgImludGVncml0eSI6ICJzaGE1MTItT2RqWEp4bkNOMUF2eUxTemVLSWdYVFh4Vis5OVp1WGwzSHBvOVhwSkF2OU1CY0hyckpPUTVrVjd5cFhPdVFpZStBbVdHMjVoTGJpS2R3WVRpZnpjZlE9PSIsCiAgICAgICAgICAiZGV2IjogdHJ1ZQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgICJhbnNpLXJlZ2V4IjogewogICAgICAidmVyc2lvbiI6ICI1LjAuMCIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hbnNpLXJlZ2V4Ly0vYW5zaS1yZWdleC01LjAuMC50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1iWTZmajU2T1VRMGhVMUtqRk5EUXVKRmV6cUtkckF5RmRJZXZBRGlxcldId1NsYm1CTk1IcDVhazJmNDBQbThKVEZ5TTJtcXhrRzZuZ2tITzExZi9sZz09IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAiYW5zaS1zdHlsZXMiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjMuMi4xIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Fuc2ktc3R5bGVzLy0vYW5zaS1zdHlsZXMtMy4yLjEudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItVlQwWkk2a1pSZFRoOFl5SnczU01iWW0vdStOcWZzQXhFcFdPMFBmOXNxOC9lOTRXeHhPcFBLeDlGUjFGbHlDdE9WRE5PUSs4bnRscUZ4aVJjK3I1cUE9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgImNvbG9yLWNvbnZlcnQiOiAiXjEuOS4wIgogICAgICB9CiAgICB9LAogICAgImFyZ3BhcnNlIjogewogICAgICAidmVyc2lvbiI6ICIxLjAuMTAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYXJncGFyc2UvLS9hcmdwYXJzZS0xLjAuMTAudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItbzVSb3k2dE5HNFNML0ZPa0NBTjZSemppYWtaUzI1UkxZRnJjTXR0SnFiZGQ4QldybkErZkd6NTdpTjVQYjA2cHZCR3ZsNWdRMEI0OGRKbHNsWHZvVGc9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgInNwcmludGYtanMiOiAifjEuMC4yIgogICAgICB9CiAgICB9LAogICAgImFycmF5LWluY2x1ZGVzIjogewogICAgICAidmVyc2lvbiI6ICIzLjEuMSIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hcnJheS1pbmNsdWRlcy8tL2FycmF5LWluY2x1ZGVzLTMuMS4xLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLWMyVlhhQ0hsN3pQc3Zwa0ZzdzRueHZGaWU0ZmgxdXI5YnBjZ3NWa0lqcW4wSC9Yd2RnKzdmdjNuMnIvaXN5UzhFQmo1YjA2TTlrSHladUlyNEVsNldRPT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJkZWZpbmUtcHJvcGVydGllcyI6ICJeMS4xLjMiLAogICAgICAgICJlcy1hYnN0cmFjdCI6ICJeMS4xNy4wIiwKICAgICAgICAiaXMtc3RyaW5nIjogIl4xLjAuNSIKICAgICAgfQogICAgfSwKICAgICJhcnJheS5wcm90b3R5cGUuZmxhdCI6IHsKICAgICAgInZlcnNpb24iOiAiMS4yLjMiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYXJyYXkucHJvdG90eXBlLmZsYXQvLS9hcnJheS5wcm90b3R5cGUuZmxhdC0xLjIuMy50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1nQmxSWlYwVlNtZlBJZVdmdXV5NTZYWk12YlZmYkVVbk9YVXZ0M0YvZVVVVVN5emxnTHhoRVg0WUFFcHhOQW9nUkdlaFBTbmZYeVB0WXlLQWhrelFoUT09IiwKICAgICAgImRldiI6IHRydWUsCiAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAiZGVmaW5lLXByb3BlcnRpZXMiOiAiXjEuMS4zIiwKICAgICAgICAiZXMtYWJzdHJhY3QiOiAiXjEuMTcuMC1uZXh0LjEiCiAgICAgIH0KICAgIH0sCiAgICAiYXN0cmFsLXJlZ2V4IjogewogICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hc3RyYWwtcmVnZXgvLS9hc3RyYWwtcmVnZXgtMS4wLjAudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItK1J5ZjZnM0JLb1JjN2pmcDdhZDh0TTRUdE1pYVd2YkYvMS9zUWNaUGtrUzdhZzNENW5NQkNlMlVmT1RPTnRBa2FHMHRPMGlqM0M1THdtZjFFaXlqSGc9PSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgImJhYmVsLWVzbGludCI6IHsKICAgICAgInZlcnNpb24iOiAiMTAuMS4wIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLWVzbGludC8tL2JhYmVsLWVzbGludC0xMC4xLjAudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItaWZXYVRIUTBjZSs0NDhDWW9wOEFkclFpQnNHcm5DK2JNZ2Z5S0ZkaTZFc1BMVEFXRytRZnlEZU02T0grRm1Xbkt2RXE1Tm5CTUx2bEJVUEtRWm9EU2c9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgIkBiYWJlbC9jb2RlLWZyYW1lIjogIl43LjAuMCIsCiAgICAgICAgIkBiYWJlbC9wYXJzZXIiOiAiXjcuNy4wIiwKICAgICAgICAiQGJhYmVsL3RyYXZlcnNlIjogIl43LjcuMCIsCiAgICAgICAgIkBiYWJlbC90eXBlcyI6ICJeNy43LjAiLAogICAgICAgICJlc2xpbnQtdmlzaXRvci1rZXlzIjogIl4xLjAuMCIsCiAgICAgICAgInJlc29sdmUiOiAiXjEuMTIuMCIKICAgICAgfQogICAgfSwKICAgICJiYWxhbmNlZC1tYXRjaCI6IHsKICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFsYW5jZWQtbWF0Y2gvLS9iYWxhbmNlZC1tYXRjaC0xLjAuMC50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTEtaWJUUm1hc3I3a25lRms2Z0s0bk9SaTF4dDJjPSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgImJyYWNlLWV4cGFuc2lvbiI6IHsKICAgICAgInZlcnNpb24iOiAiMS4xLjExIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JyYWNlLWV4cGFuc2lvbi8tL2JyYWNlLWV4cGFuc2lvbi0xLjEuMTEudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItaUN1UEhERmdySFg3SDJ2RUkvNXhwejA3elNIQjAwVHB1Z3FobVl0Vm1NTzY1MThtQ3VSTW9PWUZsZEVCbDBnMTg3dWZvemRhSGdXS2NZRmI2MXFHaUE9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgImJhbGFuY2VkLW1hdGNoIjogIl4xLjAuMCIsCiAgICAgICAgImNvbmNhdC1tYXAiOiAiMC4wLjEiCiAgICAgIH0KICAgIH0sCiAgICAiY2FsbHNpdGVzIjogewogICAgICAidmVyc2lvbiI6ICIzLjEuMCIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jYWxsc2l0ZXMvLS9jYWxsc2l0ZXMtMy4xLjAudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItUDhCakFzWHZaUytWSURVSTExaEhDUUV2NzRZVDY3WVVpNUpKRk5XSXFMMjM1c0Jtalg0K3F4OU11dmxzNWl2eU5FTmN0eDQ2eFFMUTNhVHVFN3NzYVE9PSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgImNoYWxrIjogewogICAgICAidmVyc2lvbiI6ICIyLjQuMiIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jaGFsay8tL2NoYWxrLTIuNC4yLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLU10aStmOWxwSk5jd0Y0dFdWOC9PclRUdEYxZ1ppK2Y4RnFseUFkb3VyYWxjRldGUVdGMitOZ0NIU2hqa0NiK0lGQkxxOWJ1WndFMXhja1FVNHBlU3VRPT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJhbnNpLXN0eWxlcyI6ICJeMy4yLjEiLAogICAgICAgICJlc2NhcGUtc3RyaW5nLXJlZ2V4cCI6ICJeMS4wLjUiLAogICAgICAgICJzdXBwb3J0cy1jb2xvciI6ICJeNS4zLjAiCiAgICAgIH0KICAgIH0sCiAgICAiY2hhcmRldCI6IHsKICAgICAgInZlcnNpb24iOiAiMC43LjAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY2hhcmRldC8tL2NoYXJkZXQtMC43LjAudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItbVQ4aURjcmgwM3FER1JSbW9BMmhtQkpueHBsbE1SKzAvMHFsempxWkVTNk5kaVdEY1prQ05BazRyUEZaOVE4NXIyN3Vua2lOTmc4Wk9pd1pYQkh3Y0E9PSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgImNsaS1jdXJzb3IiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjMuMS4wIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NsaS1jdXJzb3IvLS9jbGktY3Vyc29yLTMuMS4wLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLUkvekhBd3NLZjlGcUdvWE00V1dSQUNvYjkrU051a1pUZDk0RFdGNTdFNHRvb3VSdWxiQ3hjVWg2UktVRU9RbFlUSEpuemtQTXlTdlBOYWFTTE5mTFp3PT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJyZXN0b3JlLWN1cnNvciI6ICJeMy4xLjAiCiAgICAgIH0KICAgIH0sCiAgICAiY2xpLXdpZHRoIjogewogICAgICAidmVyc2lvbiI6ICIyLjIuMSIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jbGktd2lkdGgvLS9jbGktd2lkdGgtMi4yLjEudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItR1JNV0R4cE9CNkRnazJFNVVvKzNlRUJ2dE9PbGltTW1wYkZpS3VMRm5RellEYXZ0TEZZM0s1b25hNDFqZ04vV2RSWnRHN3V0dVZTVlRMNEhiWkhHa3c9PSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgImNvbG9yLWNvbnZlcnQiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjEuOS4zIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NvbG9yLWNvbnZlcnQvLS9jb2xvci1jb252ZXJ0LTEuOS4zLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLVFmQVV0ZCt2RmRBdEZRY0M4Q0N5WXQxZllXeFNxQWlLMmNTRDZ6REI4TjNjcHNFQkF2UnhwOXpPR2c2Ry9TSEhKWUFUODgvYXovSXVER0FMc05WYkdnPT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJjb2xvci1uYW1lIjogIjEuMS4zIgogICAgICB9CiAgICB9LAogICAgImNvbG9yLW5hbWUiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjEuMS4zIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NvbG9yLW5hbWUvLS9jb2xvci1uYW1lLTEuMS4zLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1wOUJWaTlpY1F2ZVYzVUl5ajNRSU1jcFR2Q1U9IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAiY29uY2F0LW1hcCI6IHsKICAgICAgInZlcnNpb24iOiAiMC4wLjEiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY29uY2F0LW1hcC8tL2NvbmNhdC1tYXAtMC4wLjEudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGExLTJLbHIxMy9XamZkNU9uTURhanVnMVVCZFIzcz0iLAogICAgICAiZGV2IjogdHJ1ZQogICAgfSwKICAgICJjb25mdXNpbmctYnJvd3Nlci1nbG9iYWxzIjogewogICAgICAidmVyc2lvbiI6ICIxLjAuOSIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jb25mdXNpbmctYnJvd3Nlci1nbG9iYWxzLy0vY29uZnVzaW5nLWJyb3dzZXItZ2xvYmFscy0xLjAuOS50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1LYlMxWTBqTXR5UGdJeGpPN1p6TUF1VXBBS010MVN6Q0w5ZnNyS3NYNmIwekpQVGFUMFNpU1BtZXd3VlpnOVVBTzgzSFZJbEVoWkY4NExJalowbG1Bdz09IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAiY29udGFpbnMtcGF0aCI6IHsKICAgICAgInZlcnNpb24iOiAiMC4xLjAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY29udGFpbnMtcGF0aC8tL2NvbnRhaW5zLXBhdGgtMC4xLjAudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGExLS9venhoUDltY0xhNjd3R3AxSVlhWEw3RUVnbz0iLAogICAgICAiZGV2IjogdHJ1ZQogICAgfSwKICAgICJjcm9zcy1zcGF3biI6IHsKICAgICAgInZlcnNpb24iOiAiNi4wLjUiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY3Jvc3Mtc3Bhd24vLS9jcm9zcy1zcGF3bi02LjAuNS50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1lVFZMckJTdDdmamJEeWd6ODA1cE1uc3RJczJWVEJOa1JtMHF4WmQrTTdBNVhEZHhWUldPNU14R0JYWmhqWTRjcUxZTGR0ckdxUmY4bUJQbXp3U3BXUT09IiwKICAgICAgImRldiI6IHRydWUsCiAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAibmljZS10cnkiOiAiXjEuMC40IiwKICAgICAgICAicGF0aC1rZXkiOiAiXjIuMC4xIiwKICAgICAgICAic2VtdmVyIjogIl41LjUuMCIsCiAgICAgICAgInNoZWJhbmctY29tbWFuZCI6ICJeMS4yLjAiLAogICAgICAgICJ3aGljaCI6ICJeMS4yLjkiCiAgICAgIH0sCiAgICAgICJkZXBlbmRlbmNpZXMiOiB7CiAgICAgICAgInNlbXZlciI6IHsKICAgICAgICAgICJ2ZXJzaW9uIjogIjUuNy4xIiwKICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zZW12ZXIvLS9zZW12ZXItNS43LjEudGd6IiwKICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLXNhdWFEZi9QWmRWZ3JMVE5ZSFJ0cFhhMWlSaUtjYWViaUtRMUJKZHBRbFdIMmxDdmV4UWRYNTVzblBGeUs3UXpwdWRxYkNJMHFYRmZPYXNIZHlOREdRPT0iLAogICAgICAgICAgImRldiI6IHRydWUKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiZGVidWciOiB7CiAgICAgICJ2ZXJzaW9uIjogIjQuMS4xIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2RlYnVnLy0vZGVidWctNC4xLjEudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItcFlBSXplUm84SjZLUEVhSjBWV09oNVB6a2J3L1JldHV6ZWhHTTdRUlJYNWhlNGZQSHgycmRLTUIyNTZlaEpDa1grWFJRbTE2ZVpMcUxOUzhSU1pYWnc9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgIm1zIjogIl4yLjEuMSIKICAgICAgfQogICAgfSwKICAgICJkZWVwLWlzIjogewogICAgICAidmVyc2lvbiI6ICIwLjEuMyIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kZWVwLWlzLy0vZGVlcC1pcy0wLjEuMy50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTEtczJuVysxMjhFKzdQVWsrUnNIRCs3Y05YenpRPSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgImRlZmluZS1wcm9wZXJ0aWVzIjogewogICAgICAidmVyc2lvbiI6ICIxLjEuMyIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kZWZpbmUtcHJvcGVydGllcy8tL2RlZmluZS1wcm9wZXJ0aWVzLTEuMS4zLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLTNNcWZZS2oybEx6ZE1TZjhaSVpFL1YrWnV5K0JnRDZmMTY0ZThLMnc3ZGducEtBckJEZXJHWXBNNDZJWVljam5rZFBOTWpQazlBNlZGQjgrM1NLbFhRPT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJvYmplY3Qta2V5cyI6ICJeMS4wLjEyIgogICAgICB9CiAgICB9LAogICAgImRvY3RyaW5lIjogewogICAgICAidmVyc2lvbiI6ICIzLjAuMCIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kb2N0cmluZS8tL2RvY3RyaW5lLTMuMC4wLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLXlTK1E1aTNoQmY3R0JrZDRLRzhhN2VCTk5XTkdMVGFFd3dZV1VpaklZTTd6cmxZRE0wQkZYSGpqUFdsV1oxUmc3VWFkZFplSURtaTlqRjNIbXFpUTJ3PT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJlc3V0aWxzIjogIl4yLjAuMiIKICAgICAgfQogICAgfSwKICAgICJlbW9qaS1yZWdleCI6IHsKICAgICAgInZlcnNpb24iOiAiOC4wLjAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZW1vamktcmVnZXgvLS9lbW9qaS1yZWdleC04LjAuMC50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1NU2pZemNXTk9BMGV3QUhwejBNeHBZRnZ3ZzZ5ankxTkczeHRlb3F6NjQ0VkNvL1JQZ25yMS9HR3QraWMzaUpUelE4RXUzVGRNMTRTYXduVlVtR0U2QT09IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAiZXJyb3ItZXgiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjEuMy4yIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Vycm9yLWV4Ly0vZXJyb3ItZXgtMS4zLjIudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItN2RGSE5tcWVGU0V0MlpCc0NyaW9yS25uM1oycGorZmQ5a21JNlFvV3c0Ly9ETCtpY0VCZmMwVTdxSkNpc3FyVHNLVGp3NGZORnkycFc5T3FTdEQ4NGc9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgImlzLWFycmF5aXNoIjogIl4wLjIuMSIKICAgICAgfQogICAgfSwKICAgICJlcy1hYnN0cmFjdCI6IHsKICAgICAgInZlcnNpb24iOiAiMS4xNy41IiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VzLWFic3RyYWN0Ly0vZXMtYWJzdHJhY3QtMS4xNy41LnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLUJSOWF1ekRieVN4T2Nmb2cwdExFQ1c4bDI4ZVJHcERwVTNEbTNIcDRxL04rVnRMVG15ajRFVU4wODhYWldRRFcvaHpqNnNZUkRYZU9Gc2FBT0RLdnBnPT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJlcy10by1wcmltaXRpdmUiOiAiXjEuMi4xIiwKICAgICAgICAiZnVuY3Rpb24tYmluZCI6ICJeMS4xLjEiLAogICAgICAgICJoYXMiOiAiXjEuMC4zIiwKICAgICAgICAiaGFzLXN5bWJvbHMiOiAiXjEuMC4xIiwKICAgICAgICAiaXMtY2FsbGFibGUiOiAiXjEuMS41IiwKICAgICAgICAiaXMtcmVnZXgiOiAiXjEuMC41IiwKICAgICAgICAib2JqZWN0LWluc3BlY3QiOiAiXjEuNy4wIiwKICAgICAgICAib2JqZWN0LWtleXMiOiAiXjEuMS4xIiwKICAgICAgICAib2JqZWN0LmFzc2lnbiI6ICJeNC4xLjAiLAogICAgICAgICJzdHJpbmcucHJvdG90eXBlLnRyaW1sZWZ0IjogIl4yLjEuMSIsCiAgICAgICAgInN0cmluZy5wcm90b3R5cGUudHJpbXJpZ2h0IjogIl4yLjEuMSIKICAgICAgfQogICAgfSwKICAgICJlcy10by1wcmltaXRpdmUiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjEuMi4xIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VzLXRvLXByaW1pdGl2ZS8tL2VzLXRvLXByaW1pdGl2ZS0xLjIuMS50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1RQ09sbGdaSnRhVW85bWlZQmNMQ2hUVWFITmpKRjNQWXMxVmlkRDdBd2lFajFrWXhLZVFUY3RMQWV6QU9INVpLUkgwZzJJZ1BuNkt3QjRJVDhpUnB2QT09IiwKICAgICAgImRldiI6IHRydWUsCiAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAiaXMtY2FsbGFibGUiOiAiXjEuMS40IiwKICAgICAgICAiaXMtZGF0ZS1vYmplY3QiOiAiXjEuMC4xIiwKICAgICAgICAiaXMtc3ltYm9sIjogIl4xLjAuMiIKICAgICAgfQogICAgfSwKICAgICJlc2NhcGUtc3RyaW5nLXJlZ2V4cCI6IHsKICAgICAgInZlcnNpb24iOiAiMS4wLjUiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXNjYXBlLXN0cmluZy1yZWdleHAvLS9lc2NhcGUtc3RyaW5nLXJlZ2V4cC0xLjAuNS50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTEtRzJIQVZpR1FxTi8ycmp1eXp3SUF5aE1MaHRRPSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgImVzbGludCI6IHsKICAgICAgInZlcnNpb24iOiAiNi44LjAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXNsaW50Ly0vZXNsaW50LTYuOC4wLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLUsrSWF5eW8yTHR5WWhEU1l3ejVENVFkV3cwaENhY056eXExWTgyMVhuYTJ4U0pqN2Npam9MTFltTHhUUWdjZ1o5bUM2MW5yeU15OVM3R1JiWXBJNUlnPT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJAYmFiZWwvY29kZS1mcmFtZSI6ICJeNy4wLjAiLAogICAgICAgICJhanYiOiAiXjYuMTAuMCIsCiAgICAgICAgImNoYWxrIjogIl4yLjEuMCIsCiAgICAgICAgImNyb3NzLXNwYXduIjogIl42LjAuNSIsCiAgICAgICAgImRlYnVnIjogIl40LjAuMSIsCiAgICAgICAgImRvY3RyaW5lIjogIl4zLjAuMCIsCiAgICAgICAgImVzbGludC1zY29wZSI6ICJeNS4wLjAiLAogICAgICAgICJlc2xpbnQtdXRpbHMiOiAiXjEuNC4zIiwKICAgICAgICAiZXNsaW50LXZpc2l0b3Ita2V5cyI6ICJeMS4xLjAiLAogICAgICAgICJlc3ByZWUiOiAiXjYuMS4yIiwKICAgICAgICAiZXNxdWVyeSI6ICJeMS4wLjEiLAogICAgICAgICJlc3V0aWxzIjogIl4yLjAuMiIsCiAgICAgICAgImZpbGUtZW50cnktY2FjaGUiOiAiXjUuMC4xIiwKICAgICAgICAiZnVuY3Rpb25hbC1yZWQtYmxhY2stdHJlZSI6ICJeMS4wLjEiLAogICAgICAgICJnbG9iLXBhcmVudCI6ICJeNS4wLjAiLAogICAgICAgICJnbG9iYWxzIjogIl4xMi4xLjAiLAogICAgICAgICJpZ25vcmUiOiAiXjQuMC42IiwKICAgICAgICAiaW1wb3J0LWZyZXNoIjogIl4zLjAuMCIsCiAgICAgICAgImltdXJtdXJoYXNoIjogIl4wLjEuNCIsCiAgICAgICAgImlucXVpcmVyIjogIl43LjAuMCIsCiAgICAgICAgImlzLWdsb2IiOiAiXjQuMC4wIiwKICAgICAgICAianMteWFtbCI6ICJeMy4xMy4xIiwKICAgICAgICAianNvbi1zdGFibGUtc3RyaW5naWZ5LXdpdGhvdXQtanNvbmlmeSI6ICJeMS4wLjEiLAogICAgICAgICJsZXZuIjogIl4wLjMuMCIsCiAgICAgICAgImxvZGFzaCI6ICJeNC4xNy4xNCIsCiAgICAgICAgIm1pbmltYXRjaCI6ICJeMy4wLjQiLAogICAgICAgICJta2RpcnAiOiAiXjAuNS4xIiwKICAgICAgICAibmF0dXJhbC1jb21wYXJlIjogIl4xLjQuMCIsCiAgICAgICAgIm9wdGlvbmF0b3IiOiAiXjAuOC4zIiwKICAgICAgICAicHJvZ3Jlc3MiOiAiXjIuMC4wIiwKICAgICAgICAicmVnZXhwcCI6ICJeMi4wLjEiLAogICAgICAgICJzZW12ZXIiOiAiXjYuMS4yIiwKICAgICAgICAic3RyaXAtYW5zaSI6ICJeNS4yLjAiLAogICAgICAgICJzdHJpcC1qc29uLWNvbW1lbnRzIjogIl4zLjAuMSIsCiAgICAgICAgInRhYmxlIjogIl41LjIuMyIsCiAgICAgICAgInRleHQtdGFibGUiOiAiXjAuMi4wIiwKICAgICAgICAidjgtY29tcGlsZS1jYWNoZSI6ICJeMi4wLjMiCiAgICAgIH0sCiAgICAgICJkZXBlbmRlbmNpZXMiOiB7CiAgICAgICAgImdsb2JhbHMiOiB7CiAgICAgICAgICAidmVyc2lvbiI6ICIxMi40LjAiLAogICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2dsb2JhbHMvLS9nbG9iYWxzLTEyLjQuMC50Z3oiLAogICAgICAgICAgImludGVncml0eSI6ICJzaGE1MTItQldJQ3V6ekR2RG9INTROSEtDc2VEYW5BaEUzQ2VEb3JnREw1TVQ2TE1YWGoyV0NuZDlVQzJzemRrNEFXTGZqZGdOQkNYTFVhblhZY3BCQktPU1dHd2c9PSIsCiAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAgICAgInR5cGUtZmVzdCI6ICJeMC44LjEiCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgImVzbGludC1jb25maWctYWlyYm5iLWJhc2UiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjE0LjEuMCIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lc2xpbnQtY29uZmlnLWFpcmJuYi1iYXNlLy0vZXNsaW50LWNvbmZpZy1haXJibmItYmFzZS0xNC4xLjAudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItK1hDY2ZHeUNuYnpPbmt0RFZod3NDQXgrOURtcnpFbXV3eHlIVUpwdytrcUJWVDc0NE9VQnJCMDlraGdGS2xLMWxzaFZ3dzZxWEdzWVBacGF2b05qSnc9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgImNvbmZ1c2luZy1icm93c2VyLWdsb2JhbHMiOiAiXjEuMC45IiwKICAgICAgICAib2JqZWN0LmFzc2lnbiI6ICJeNC4xLjAiLAogICAgICAgICJvYmplY3QuZW50cmllcyI6ICJeMS4xLjEiCiAgICAgIH0KICAgIH0sCiAgICAiZXNsaW50LWltcG9ydC1yZXNvbHZlci1ub2RlIjogewogICAgICAidmVyc2lvbiI6ICIwLjMuMyIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lc2xpbnQtaW1wb3J0LXJlc29sdmVyLW5vZGUvLS9lc2xpbnQtaW1wb3J0LXJlc29sdmVyLW5vZGUtMC4zLjMudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItYjhjckxEbzBNNVJTZTVZRzhQdTJEWUJqNzF0U0I2T3ZYa2Z6d2JKVTJ3N3k4UDQveW8wTXlGOGpVMjZJRXVFdUhGMks1L2djQUpFM0xoUUdxQkJiVmc9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgImRlYnVnIjogIl4yLjYuOSIsCiAgICAgICAgInJlc29sdmUiOiAiXjEuMTMuMSIKICAgICAgfSwKICAgICAgImRlcGVuZGVuY2llcyI6IHsKICAgICAgICAiZGVidWciOiB7CiAgICAgICAgICAidmVyc2lvbiI6ICIyLjYuOSIsCiAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZGVidWcvLS9kZWJ1Zy0yLjYuOS50Z3oiLAogICAgICAgICAgImludGVncml0eSI6ICJzaGE1MTItYkM3RWxyZEphSm5QYkFQKzFFb3RZdnFac2IzZWNsNXdpNkJmaTZCSlRVY05vd3A2Y3ZzcGcwalh6blJUS0RqbS9FN0FkZ0ZCVmVBUFZNTmNLR3NITUE9PSIsCiAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAgICAgIm1zIjogIjIuMC4wIgogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgIm1zIjogewogICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAogICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL21zLy0vbXMtMi4wLjAudGd6IiwKICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1WZ2l1cmZ3QXZtd3BBZDlmbUdGNGplRFZsOGc9IiwKICAgICAgICAgICJkZXYiOiB0cnVlCiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgImVzbGludC1tb2R1bGUtdXRpbHMiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjIuNi4wIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VzbGludC1tb2R1bGUtdXRpbHMvLS9lc2xpbnQtbW9kdWxlLXV0aWxzLTIuNi4wLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLTZqOXh4ZWdicWU4L2taWThjWXBjcDB4aGJLMEVnSmxnM2c5bWliMy9taUxhRXh1dXdjM241VUVmU25VNmhXTWJUMEZBWVZ2RGJMOVJyUmdwVWVRSXZBPT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJkZWJ1ZyI6ICJeMi42LjkiLAogICAgICAgICJwa2ctZGlyIjogIl4yLjAuMCIKICAgICAgfSwKICAgICAgImRlcGVuZGVuY2llcyI6IHsKICAgICAgICAiZGVidWciOiB7CiAgICAgICAgICAidmVyc2lvbiI6ICIyLjYuOSIsCiAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZGVidWcvLS9kZWJ1Zy0yLjYuOS50Z3oiLAogICAgICAgICAgImludGVncml0eSI6ICJzaGE1MTItYkM3RWxyZEphSm5QYkFQKzFFb3RZdnFac2IzZWNsNXdpNkJmaTZCSlRVY05vd3A2Y3ZzcGcwalh6blJUS0RqbS9FN0FkZ0ZCVmVBUFZNTmNLR3NITUE9PSIsCiAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAgICAgIm1zIjogIjIuMC4wIgogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgIm1zIjogewogICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAogICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL21zLy0vbXMtMi4wLjAudGd6IiwKICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1WZ2l1cmZ3QXZtd3BBZDlmbUdGNGplRFZsOGc9IiwKICAgICAgICAgICJkZXYiOiB0cnVlCiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgImVzbGludC1wbHVnaW4taW1wb3J0IjogewogICAgICAidmVyc2lvbiI6ICIyLjIwLjIiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXNsaW50LXBsdWdpbi1pbXBvcnQvLS9lc2xpbnQtcGx1Z2luLWltcG9ydC0yLjIwLjIudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItRk9iaWRxcFhyUjhPbkNoNGlOc3h5K1dBQ3p0SkxYQUhCTzVoSzc5VDFIYzc3UGdRWmt5REdBNUFnOXhBdlJwZ2x2TE54aEgvelNtWjcwL3BaMzFkSGc9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgImFycmF5LWluY2x1ZGVzIjogIl4zLjAuMyIsCiAgICAgICAgImFycmF5LnByb3RvdHlwZS5mbGF0IjogIl4xLjIuMSIsCiAgICAgICAgImNvbnRhaW5zLXBhdGgiOiAiXjAuMS4wIiwKICAgICAgICAiZGVidWciOiAiXjIuNi45IiwKICAgICAgICAiZG9jdHJpbmUiOiAiMS41LjAiLAogICAgICAgICJlc2xpbnQtaW1wb3J0LXJlc29sdmVyLW5vZGUiOiAiXjAuMy4yIiwKICAgICAgICAiZXNsaW50LW1vZHVsZS11dGlscyI6ICJeMi40LjEiLAogICAgICAgICJoYXMiOiAiXjEuMC4zIiwKICAgICAgICAibWluaW1hdGNoIjogIl4zLjAuNCIsCiAgICAgICAgIm9iamVjdC52YWx1ZXMiOiAiXjEuMS4wIiwKICAgICAgICAicmVhZC1wa2ctdXAiOiAiXjIuMC4wIiwKICAgICAgICAicmVzb2x2ZSI6ICJeMS4xMi4wIgogICAgICB9LAogICAgICAiZGVwZW5kZW5jaWVzIjogewogICAgICAgICJkZWJ1ZyI6IHsKICAgICAgICAgICJ2ZXJzaW9uIjogIjIuNi45IiwKICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kZWJ1Zy8tL2RlYnVnLTIuNi45LnRneiIsCiAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1iQzdFbHJkSmFKblBiQVArMUVvdFl2cVpzYjNlY2w1d2k2QmZpNkJKVFVjTm93cDZjdnNwZzBqWHpuUlRLRGptL0U3QWRnRkJWZUFQVk1OY0tHc0hNQT09IiwKICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgInJlcXVpcmVzIjogewogICAgICAgICAgICAibXMiOiAiMi4wLjAiCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiZG9jdHJpbmUiOiB7CiAgICAgICAgICAidmVyc2lvbiI6ICIxLjUuMCIsCiAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZG9jdHJpbmUvLS9kb2N0cmluZS0xLjUuMC50Z3oiLAogICAgICAgICAgImludGVncml0eSI6ICJzaGExLU41M09jdzloWnZkczc2VG1jSG9WbXdMRnB2bz0iLAogICAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgICAgICJlc3V0aWxzIjogIl4yLjAuMiIsCiAgICAgICAgICAgICJpc2FycmF5IjogIl4xLjAuMCIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJtcyI6IHsKICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9tcy8tL21zLTIuMC4wLnRneiIsCiAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtVmdpdXJmd0F2bXdwQWQ5Zm1HRjRqZURWbDhnPSIsCiAgICAgICAgICAiZGV2IjogdHJ1ZQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgICJlc2xpbnQtcGx1Z2luLWplc3QiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjIzLjEwLjAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXNsaW50LXBsdWdpbi1qZXN0Ly0vZXNsaW50LXBsdWdpbi1qZXN0LTIzLjEwLjAudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItY0hDLy9uZXNvalNPMU1MeFZtRkpSL2JVYVFRRzd4dk1IUUQ4WUxic1F6ZXZSNDFXS204cGFLRFV2MndNSGxVeTVYTFpVbU5jV3VmbE9pNGFwUzhEK1E9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgIkB0eXBlc2NyaXB0LWVzbGludC9leHBlcmltZW50YWwtdXRpbHMiOiAiXjIuNS4wIgogICAgICB9CiAgICB9LAogICAgImVzbGludC1wbHVnaW4tdnVlIjogewogICAgICAidmVyc2lvbiI6ICI2LjIuMiIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lc2xpbnQtcGx1Z2luLXZ1ZS8tL2VzbGludC1wbHVnaW4tdnVlLTYuMi4yLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLU5oYytvVkFIbTB1ei9Qa0pBV3Njd0lUNGlqVHJLNWZxTnF6OVFCMUQzNVNiYnVNRzF1QjZZcjVBSnB2UFNXZytXT3c3bllOc3dlclloMGtPazY0Z3FRPT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJuYXR1cmFsLWNvbXBhcmUiOiAiXjEuNC4wIiwKICAgICAgICAic2VtdmVyIjogIl41LjYuMCIsCiAgICAgICAgInZ1ZS1lc2xpbnQtcGFyc2VyIjogIl43LjAuMCIKICAgICAgfSwKICAgICAgImRlcGVuZGVuY2llcyI6IHsKICAgICAgICAic2VtdmVyIjogewogICAgICAgICAgInZlcnNpb24iOiAiNS43LjEiLAogICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3NlbXZlci8tL3NlbXZlci01LjcuMS50Z3oiLAogICAgICAgICAgImludGVncml0eSI6ICJzaGE1MTItc2F1YURmL1BaZFZnckxUTllIUnRwWGExaVJpS2NhZWJpS1ExQkpkcFFsV0gybEN2ZXhRZFg1NXNuUEZ5SzdRenB1ZHFiQ0kwcVhGZk9hc0hkeU5ER1E9PSIsCiAgICAgICAgICAiZGV2IjogdHJ1ZQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgICJlc2xpbnQtc2NvcGUiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjUuMC4wIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VzbGludC1zY29wZS8tL2VzbGludC1zY29wZS01LjAuMC50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1vWXJoSlc3UzBieEFGRHZXcXp2TVBSbTZwY2djbldjNFFub2ZDQXFSVFJmUUMwSmN3ZW56R2dsVHRzTHlJdXVXRmZrcURHOXZ6NjdjbnR0U2Q1M2Rqdz09IiwKICAgICAgImRldiI6IHRydWUsCiAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAiZXNyZWN1cnNlIjogIl40LjEuMCIsCiAgICAgICAgImVzdHJhdmVyc2UiOiAiXjQuMS4xIgogICAgICB9CiAgICB9LAogICAgImVzbGludC11dGlscyI6IHsKICAgICAgInZlcnNpb24iOiAiMS40LjMiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXNsaW50LXV0aWxzLy0vZXNsaW50LXV0aWxzLTEuNC4zLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLWZiQk41VzJ4ZFk0NUt1bEdYbUxIWjNjM0ZIZlZZbUtnMElyQUtHT2tULzQ2NFBRc3gyVWVJemZ6MVJtRWNpK0tMbTFiQmFBelpBaDgrL0UrWEFlWjhRPT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJlc2xpbnQtdmlzaXRvci1rZXlzIjogIl4xLjEuMCIKICAgICAgfQogICAgfSwKICAgICJlc2xpbnQtdmlzaXRvci1rZXlzIjogewogICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lc2xpbnQtdmlzaXRvci1rZXlzLy0vZXNsaW50LXZpc2l0b3Ita2V5cy0xLjEuMC50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi04eTlZanRNMUpCSlUvQTlLYytTYmFPVjR5MjlzU1dja0J3TUhhK0ZHdFZqNWdOL3NibktEZjZ4SlVsKzhnN0ZBaWo5TFZhUDhDMjREVWlIL2YvMlo5QT09IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAiZXNwcmVlIjogewogICAgICAidmVyc2lvbiI6ICI2LjIuMSIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lc3ByZWUvLS9lc3ByZWUtNi4yLjEudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTIteXNDeFJRWTNXYVhKejl0ZGJXT3d1V3I1WS9YclBUR1g5S2l6M3lvVVh3VzBWWjR3MzBIVGtRTGFHeC8rdHRGakY4aStBQ2JBcm5CNGNlNjhhOW01aHc9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgImFjb3JuIjogIl43LjEuMSIsCiAgICAgICAgImFjb3JuLWpzeCI6ICJeNS4yLjAiLAogICAgICAgICJlc2xpbnQtdmlzaXRvci1rZXlzIjogIl4xLjEuMCIKICAgICAgfQogICAgfSwKICAgICJlc3ByaW1hIjogewogICAgICAidmVyc2lvbiI6ICI0LjAuMSIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lc3ByaW1hLy0vZXNwcmltYS00LjAuMS50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1lR3VGRnc3VXBkYStnNHArUUh2blcwUnlUWC9TVmVKQkRNL2dDdE1BUk8wY0x1VDJIY0VLblRQdmhqVjZhR2VxckNCL3NiTm9wMEtzem0wanNhV1U0QT09IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAiZXNxdWVyeSI6IHsKICAgICAgInZlcnNpb24iOiAiMS4zLjEiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXNxdWVyeS8tL2VzcXVlcnktMS4zLjEudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItb2xwdnQ5UUcwdm5pVUJac3BWUk42bHdCN2hPWm9UUnRUK2p6Uit0UzRmZll4Mm16YncrejBYQ09rNDRhYUxZS0FwTlg1bk1tK0UrUDZvMjVpcC9ESFE9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgImVzdHJhdmVyc2UiOiAiXjUuMS4wIgogICAgICB9LAogICAgICAiZGVwZW5kZW5jaWVzIjogewogICAgICAgICJlc3RyYXZlcnNlIjogewogICAgICAgICAgInZlcnNpb24iOiAiNS4xLjAiLAogICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VzdHJhdmVyc2UvLS9lc3RyYXZlcnNlLTUuMS4wLnRneiIsCiAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1GeW9oWEsrUjB2RSt5MW5ITG9CTTdaVHlxUnBxQWxoZFpIQ1dJV0V2aUZMaUdCOGIwNEg2YlFzOEcrWFR0aGFjdlQ4VnV3dnRlaVA3UkpTeE1zOFVFdz09IiwKICAgICAgICAgICJkZXYiOiB0cnVlCiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgImVzcmVjdXJzZSI6IHsKICAgICAgInZlcnNpb24iOiAiNC4yLjEiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXNyZWN1cnNlLy0vZXNyZWN1cnNlLTQuMi4xLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLTY0UkJCKytmSU9BWFB3M1A5Y3k4OXFmTWx2WkVYWmtxcUpranFxWEl2elA1ZXpSWmpXK2xQV2p3MzVVWC8zRWhVUEZZYmc1RVI0SllnRHc0MDA3L0RRPT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJlc3RyYXZlcnNlIjogIl40LjEuMCIKICAgICAgfQogICAgfSwKICAgICJlc3RyYXZlcnNlIjogewogICAgICAidmVyc2lvbiI6ICI0LjMuMCIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lc3RyYXZlcnNlLy0vZXN0cmF2ZXJzZS00LjMuMC50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi0zOW5uS2ZmV3o4eE4xQlUvMmM3OW45bkI5SER6bzBuaVlVcXg2eHlxVW55b0FuUXl5V3BPVGRaRWVpQ2NoOEJCdTUxNXQ0d3A5Wm1nVmZWaG45RUJwdz09IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAiZXN1dGlscyI6IHsKICAgICAgInZlcnNpb24iOiAiMi4wLjMiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXN1dGlscy8tL2VzdXRpbHMtMi4wLjMudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTIta1ZzY3FYazRPQ3A2OFNaMGRrZ0VLVmk2LzhpajMwMEtCV1RKcTMyUC9kWWVXVFN3SzQxV3lUeGFsTjFlUm1BNVo5VVUvTFg5RDdGV1NtVjlTQVl4Nmc9PSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgImV4dGVybmFsLWVkaXRvciI6IHsKICAgICAgInZlcnNpb24iOiAiMy4xLjAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXh0ZXJuYWwtZWRpdG9yLy0vZXh0ZXJuYWwtZWRpdG9yLTMuMS4wLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLWhNUTRDWDFwMWl6bXVMWXlacUxNTy9xR053MTB3U3Y5UURDUGZ6WGZ5RnJPYUNTU29SZnFFMUtmMXM1YW42Nko1SlpDNjJOZXdHK21LNDlqT0N0UWV3PT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJjaGFyZGV0IjogIl4wLjcuMCIsCiAgICAgICAgImljb252LWxpdGUiOiAiXjAuNC4yNCIsCiAgICAgICAgInRtcCI6ICJeMC4wLjMzIgogICAgICB9CiAgICB9LAogICAgImZhc3QtZGVlcC1lcXVhbCI6IHsKICAgICAgInZlcnNpb24iOiAiMy4xLjEiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZmFzdC1kZWVwLWVxdWFsLy0vZmFzdC1kZWVwLWVxdWFsLTMuMS4xLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLThVRWE1OFFETGF1RE5mcGJyWDU1UTlqckdIVGh3MlpNZE9reTVHbDFDRHRWZUpEUFZyRzRKeHgxTjhqdzJna1dhZmY1VVV1WDFLSmQrOXpHZTJCK1pBPT0iLAogICAgICAiZGV2IjogdHJ1ZQogICAgfSwKICAgICJmYXN0LWpzb24tc3RhYmxlLXN0cmluZ2lmeSI6IHsKICAgICAgInZlcnNpb24iOiAiMi4xLjAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZmFzdC1qc29uLXN0YWJsZS1zdHJpbmdpZnkvLS9mYXN0LWpzb24tc3RhYmxlLXN0cmluZ2lmeS0yLjEuMC50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1saGQvd0YrTGs5OEhab1RDdGxWcmFIdGZoNVhZaWpJamFsWGNrN3NhVXR1YW5TRHlMTXhuSGhTWEVESnFIeEQ3bXNSOEQwdUNtcWxrd2pDVjh4dndIdz09IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAiZmFzdC1sZXZlbnNodGVpbiI6IHsKICAgICAgInZlcnNpb24iOiAiMi4wLjYiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZmFzdC1sZXZlbnNodGVpbi8tL2Zhc3QtbGV2ZW5zaHRlaW4tMi4wLjYudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGExLVBZcGNab2c2RnFNTXFHUStoUjhadXFkNWVSYz0iLAogICAgICAiZGV2IjogdHJ1ZQogICAgfSwKICAgICJmaWd1cmVzIjogewogICAgICAidmVyc2lvbiI6ICIzLjIuMCIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9maWd1cmVzLy0vZmlndXJlcy0zLjIuMC50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi15YWR1UUZSS0xYWU9HZ0VuNkFaYXU5MGozZ2dTT3lpcVhVMEY5SlpmZVhZaE5hK0prNFgrczQ1QTJ6ZzVqbnM4N0dBRmEzNEJCbTJrWHc0WHBOY2JkZz09IiwKICAgICAgImRldiI6IHRydWUsCiAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAiZXNjYXBlLXN0cmluZy1yZWdleHAiOiAiXjEuMC41IgogICAgICB9CiAgICB9LAogICAgImZpbGUtZW50cnktY2FjaGUiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjUuMC4xIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2ZpbGUtZW50cnktY2FjaGUvLS9maWxlLWVudHJ5LWNhY2hlLTUuMC4xLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLWJDZzI5aWN0dUJhS1V3d0FySzRvdUNhcURnTFpjeXNDRkxtTS9Zbi9GRG9xbmRoLzl2TnVRZlhSRHZUdVhLTHhmRC9KdFpRR0tGVDhNR2NKQks2NDRnPT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJmbGF0LWNhY2hlIjogIl4yLjAuMSIKICAgICAgfQogICAgfSwKICAgICJmaW5kLXVwIjogewogICAgICAidmVyc2lvbiI6ICIyLjEuMCIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9maW5kLXVwLy0vZmluZC11cC0yLjEuMC50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTEtUmRHMzVRYkhGOTNVZ25kYUszZVNDandNVjZjPSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgImxvY2F0ZS1wYXRoIjogIl4yLjAuMCIKICAgICAgfQogICAgfSwKICAgICJmbGF0LWNhY2hlIjogewogICAgICAidmVyc2lvbiI6ICIyLjAuMSIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9mbGF0LWNhY2hlLy0vZmxhdC1jYWNoZS0yLjAuMS50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1Mb1FlNnlEdVVNRHpRQUVIOHNnbWg0TWQ2b1puYy83UGp0d2pORlN6dmVYcVNIdDZrYTlmUEJ1c283SUdmOVJ6NHVxblNuV2lGSDJCL3pqMjRhNVJlQT09IiwKICAgICAgImRldiI6IHRydWUsCiAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAiZmxhdHRlZCI6ICJeMi4wLjAiLAogICAgICAgICJyaW1yYWYiOiAiMi42LjMiLAogICAgICAgICJ3cml0ZSI6ICIxLjAuMyIKICAgICAgfQogICAgfSwKICAgICJmbGF0dGVkIjogewogICAgICAidmVyc2lvbiI6ICIyLjAuMiIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9mbGF0dGVkLy0vZmxhdHRlZC0yLjAuMi50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1yNXdHeDdZZU93TldObENBMHdRODZ6S3lETE1RcisvUkI4eHk3NE00aFRwaGZtamxpalRTU1hHdUg4cm52S1puZlQ5aSs3NXptZDhqY0tkTVI0TzZqQT09IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAiZnMucmVhbHBhdGgiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2ZzLnJlYWxwYXRoLy0vZnMucmVhbHBhdGgtMS4wLjAudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGExLUZRU3RKU01WaktwQTIwb25oOHNCUVJtVTZrOD0iLAogICAgICAiZGV2IjogdHJ1ZQogICAgfSwKICAgICJmdW5jdGlvbi1iaW5kIjogewogICAgICAidmVyc2lvbiI6ICIxLjEuMSIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9mdW5jdGlvbi1iaW5kLy0vZnVuY3Rpb24tYmluZC0xLjEuMS50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi15SW92QXpNWDQ5c0Y4WWw1OGZTQ1dKNXN2U0x1YWliUHhYUUpGTG1CT2JUdUNyME1mMUtpUG9wR005TmlGamlZQkNiZmFhMkZoNmJyZVE2QU5WVEkwQT09IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAiZnVuY3Rpb25hbC1yZWQtYmxhY2stdHJlZSI6IHsKICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZnVuY3Rpb25hbC1yZWQtYmxhY2stdHJlZS8tL2Z1bmN0aW9uYWwtcmVkLWJsYWNrLXRyZWUtMS4wLjEudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGExLUd3cXp2VlU3S2cxam1kS2NEajZnc2xJSGd5Yz0iLAogICAgICAiZGV2IjogdHJ1ZQogICAgfSwKICAgICJnbG9iIjogewogICAgICAidmVyc2lvbiI6ICI3LjEuNiIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9nbG9iLy0vZ2xvYi03LjEuNi50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1Md2F4d3laNzJMazd2WklOdE5Ocnl3WDBadUx5U3RyZER0YWJlZlpLQVk1WkdKaFZ0Z2R6bmx1UmVzeE5tUGl0RTBTQU8rTzI2c1dUSGVLU0kyd01CQT09IiwKICAgICAgImRldiI6IHRydWUsCiAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAiZnMucmVhbHBhdGgiOiAiXjEuMC4wIiwKICAgICAgICAiaW5mbGlnaHQiOiAiXjEuMC40IiwKICAgICAgICAiaW5oZXJpdHMiOiAiMiIsCiAgICAgICAgIm1pbmltYXRjaCI6ICJeMy4wLjQiLAogICAgICAgICJvbmNlIjogIl4xLjMuMCIsCiAgICAgICAgInBhdGgtaXMtYWJzb2x1dGUiOiAiXjEuMC4wIgogICAgICB9CiAgICB9LAogICAgImdsb2ItcGFyZW50IjogewogICAgICAidmVyc2lvbiI6ICI1LjEuMSIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9nbG9iLXBhcmVudC8tL2dsb2ItcGFyZW50LTUuMS4xLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLUZuSStWR09wbmxHSFdaeHRoUEdSK1FoUjc4ZnVpSzBzTkxrSFF2K2JMOWZRaTU3bE5OZHF1SWJuYS9XcmZST3JvbHE4R0s1RWs2QmlNd3FML3ZvUllRPT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJpcy1nbG9iIjogIl40LjAuMSIKICAgICAgfQogICAgfSwKICAgICJnbG9iYWxzIjogewogICAgICAidmVyc2lvbiI6ICIxMS4xMi4wIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2dsb2JhbHMvLS9nbG9iYWxzLTExLjEyLjAudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItV09CcC9FRUdVaUlzSlNwN3djdi95Nk1PK2xWOVVvbmNXcXh1RmZtOGVCd3pXTmd5ZkJkNkd6K0llS1E5akNteWhvSDk5ZzE1TTNUK1FhVkhGaml6VkE9PSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgImdyYWNlZnVsLWZzIjogewogICAgICAidmVyc2lvbiI6ICI0LjIuNCIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ncmFjZWZ1bC1mcy8tL2dyYWNlZnVsLWZzLTQuMi40LnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLVdqS1BOSkY3OWR0SkFWbmlVbEdHV0hZR3oyald4VDZWaE4vNG0xTmRrYloybk9zRUYrY0kxRWRncWw1ekNSaHMvVnNRWVJ2clhjdHhrdFZYWlVraXh3PT0iLAogICAgICAiZGV2IjogdHJ1ZQogICAgfSwKICAgICJoYXMiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjEuMC4zIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2hhcy8tL2hhcy0xLjAuMy50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1mMmR2TzBWVTZPZWo3UmtXSkdyZWhqYnpNQWpGcDUvVktQcDV0VHBXSVY0SkhIWksxL0J4YkZSdGYvc2lBMlNXVGUwOWNhRG1WdFlZeldFSWJCUzR6dz09IiwKICAgICAgImRldiI6IHRydWUsCiAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAiZnVuY3Rpb24tYmluZCI6ICJeMS4xLjEiCiAgICAgIH0KICAgIH0sCiAgICAiaGFzLWZsYWciOiB7CiAgICAgICJ2ZXJzaW9uIjogIjMuMC4wIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2hhcy1mbGFnLy0vaGFzLWZsYWctMy4wLjAudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGExLXRkUlUzQ0dacmlKV21mTkdmbG9IODdsVnV2MD0iLAogICAgICAiZGV2IjogdHJ1ZQogICAgfSwKICAgICJoYXMtc3ltYm9scyI6IHsKICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaGFzLXN5bWJvbHMvLS9oYXMtc3ltYm9scy0xLjAuMS50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1QTGNzb3F1KytkbUVJWkIrNnRvdE5GS3EvN0RvK1owdTRvVDB6S09KTmwzbFlLNnZHd3d1MmhqSHMrNjhPRVpiVGppVUU5YmdPQUJYYlAvR3ZyUzBLZz09IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAiaG9zdGVkLWdpdC1pbmZvIjogewogICAgICAidmVyc2lvbiI6ICIyLjguOCIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ob3N0ZWQtZ2l0LWluZm8vLS9ob3N0ZWQtZ2l0LWluZm8tMi44LjgudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItZi93ekMyUWFXQnM3dDlJWXFCNFQzc1IxeHZpSVZpWEpSSlRXQmx4MkdmM2cwWGk1dkk3WXk0a29YUTFjOU9ZREdITjlzQnkxRFEyQUI4ZnFaQldoVWc9PSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgImljb252LWxpdGUiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjAuNC4yNCIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pY29udi1saXRlLy0vaWNvbnYtbGl0ZS0wLjQuMjQudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItdjNNWG5aQWN2bnl3a1RVRVpvbUlBY3RsZTdSWFhlZWRPUjMxd3dsN1ZseW9YTzRRaTlhcnZTZW5OUVduZTFUY1J3aENMMUh3TEkyMWJFcWRwajgvckE9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgInNhZmVyLWJ1ZmZlciI6ICI+PSAyLjEuMiA8IDMiCiAgICAgIH0KICAgIH0sCiAgICAiaWdub3JlIjogewogICAgICAidmVyc2lvbiI6ICI0LjAuNiIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pZ25vcmUvLS9pZ25vcmUtNC4wLjYudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItY3lGREtycWMvWWRjV0ZuaUpoekk0MitBelMrZ053bVV6T1NGY1JDUVl3eVN1QkJCeS9LanV4V0xaL0ZIRUg2TW9xMU5pek1PQld5VGN2OE80T1pJTWc9PSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgImltcG9ydC1mcmVzaCI6IHsKICAgICAgInZlcnNpb24iOiAiMy4yLjEiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaW1wb3J0LWZyZXNoLy0vaW1wb3J0LWZyZXNoLTMuMi4xLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLTZlMXExY25XUDJSWEQ5L2tlU2t4SFNjZzUwOENkWHFYV2dXQmFFVE5oeXVCRnora1VabEtib2grSVNLK2JVKytEbWJIaW1WQnJPei96elBlMHNaM3NRPT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJwYXJlbnQtbW9kdWxlIjogIl4xLjAuMCIsCiAgICAgICAgInJlc29sdmUtZnJvbSI6ICJeNC4wLjAiCiAgICAgIH0KICAgIH0sCiAgICAiaW11cm11cmhhc2giOiB7CiAgICAgICJ2ZXJzaW9uIjogIjAuMS40IiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2ltdXJtdXJoYXNoLy0vaW11cm11cmhhc2gtMC4xLjQudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGExLWtoaTVzcmtvb2ppeFBjVDdhMjFYYnlNVVUrbz0iLAogICAgICAiZGV2IjogdHJ1ZQogICAgfSwKICAgICJpbmZsaWdodCI6IHsKICAgICAgInZlcnNpb24iOiAiMS4wLjYiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaW5mbGlnaHQvLS9pbmZsaWdodC0xLjAuNi50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTEtU2Ixak1kZlFMUXdKdkpFS0VIVzZnV1cxYmZrPSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgIm9uY2UiOiAiXjEuMy4wIiwKICAgICAgICAid3JhcHB5IjogIjEiCiAgICAgIH0KICAgIH0sCiAgICAiaW5oZXJpdHMiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjIuMC40IiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2luaGVyaXRzLy0vaW5oZXJpdHMtMi4wLjQudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItay92R2FYNC9ZbGEzV3p5TUN2VFFPWFllSUh2cU9LdG5xQmR1elRIcHpwUVp6QXNrS01oWjJLK0VuQmlTTTl6R1NvSUZlTXBYS3hhNGRZZVpJUXFld1E9PSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgImlucXVpcmVyIjogewogICAgICAidmVyc2lvbiI6ICI3LjEuMCIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pbnF1aXJlci8tL2lucXVpcmVyLTcuMS4wLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLTVmSk1XRW1pa1NZdTBudi9mbE1jNDc1TWhHYkI3VFNQZC8ySXBGVjRJNHJNa2xib0NIMnJRallZNWtLaVlHSHFVRjlndmFhbWJ1cGNKRkZHOWR2UmVnPT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJhbnNpLWVzY2FwZXMiOiAiXjQuMi4xIiwKICAgICAgICAiY2hhbGsiOiAiXjMuMC4wIiwKICAgICAgICAiY2xpLWN1cnNvciI6ICJeMy4xLjAiLAogICAgICAgICJjbGktd2lkdGgiOiAiXjIuMC4wIiwKICAgICAgICAiZXh0ZXJuYWwtZWRpdG9yIjogIl4zLjAuMyIsCiAgICAgICAgImZpZ3VyZXMiOiAiXjMuMC4wIiwKICAgICAgICAibG9kYXNoIjogIl40LjE3LjE1IiwKICAgICAgICAibXV0ZS1zdHJlYW0iOiAiMC4wLjgiLAogICAgICAgICJydW4tYXN5bmMiOiAiXjIuNC4wIiwKICAgICAgICAicnhqcyI6ICJeNi41LjMiLAogICAgICAgICJzdHJpbmctd2lkdGgiOiAiXjQuMS4wIiwKICAgICAgICAic3RyaXAtYW5zaSI6ICJeNi4wLjAiLAogICAgICAgICJ0aHJvdWdoIjogIl4yLjMuNiIKICAgICAgfSwKICAgICAgImRlcGVuZGVuY2llcyI6IHsKICAgICAgICAiYW5zaS1zdHlsZXMiOiB7CiAgICAgICAgICAidmVyc2lvbiI6ICI0LjIuMSIsCiAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYW5zaS1zdHlsZXMvLS9hbnNpLXN0eWxlcy00LjIuMS50Z3oiLAogICAgICAgICAgImludGVncml0eSI6ICJzaGE1MTItOVZHanJNc0cxdmVQeGNTd2VRc04yMEtZL2M0ek4waDlmTGpxQWJ3YlBmYWhNM3QrTkwrTTlIQzh4ZVhHMkk4cFg1Tm9hbVRHTnVvbUVVRkk3ZmNVakE9PSIsCiAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAgICAgIkB0eXBlcy9jb2xvci1uYW1lIjogIl4xLjEuMSIsCiAgICAgICAgICAgICJjb2xvci1jb252ZXJ0IjogIl4yLjAuMSIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJjaGFsayI6IHsKICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4wIiwKICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jaGFsay8tL2NoYWxrLTMuMC4wLnRneiIsCiAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi00RDNCNldmNDFLT1lSRmRzem1EcU1DR3E1VlYvdU1BQjI3M0pJTG1PKzNqQWxoOFg0cUR0ZHRnQ1IzZnh0YkxFTXpTeDIyUWRobkRjSnZ1MnUxZlZ3Zz09IiwKICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgInJlcXVpcmVzIjogewogICAgICAgICAgICAiYW5zaS1zdHlsZXMiOiAiXjQuMS4wIiwKICAgICAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogIl43LjEuMCIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJjb2xvci1jb252ZXJ0IjogewogICAgICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAogICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NvbG9yLWNvbnZlcnQvLS9jb2xvci1jb252ZXJ0LTIuMC4xLnRneiIsCiAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1SUkVDUHNqN2l1L3hiNW9LWWNzRkhTcHBGTm5zai81Mk9WVFJLYjR6UDVvblh3VkYzelZtbVRvTmNPZkdDK0NSRHBmSy9VNTg0Zk1nMzhaSENhRWxLUT09IiwKICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgInJlcXVpcmVzIjogewogICAgICAgICAgICAiY29sb3ItbmFtZSI6ICJ+MS4xLjQiCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiY29sb3ItbmFtZSI6IHsKICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS40IiwKICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jb2xvci1uYW1lLy0vY29sb3ItbmFtZS0xLjEuNC50Z3oiLAogICAgICAgICAgImludGVncml0eSI6ICJzaGE1MTItZE95KzNBdVczYTJ3TmJaSEl1TVpwVGNnakd1TFUvdUJML3ViY1pGOU9YYkRvOGZmNE84eVZwNUJmMGVmUzh1RW9ZbzVxNEZ4N2RZOU9nUUdYZ0FzUUE9PSIsCiAgICAgICAgICAiZGV2IjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImhhcy1mbGFnIjogewogICAgICAgICAgInZlcnNpb24iOiAiNC4wLjAiLAogICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2hhcy1mbGFnLy0vaGFzLWZsYWctNC4wLjAudGd6IiwKICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLUV5a0pUL1ExS2pUV2N0cHBnSUFnZlNPMHRLVnVaVWpoZ01yMTdrcVR1bU1sNkFmdjNFSVNsZVU3cVpVem9YREZUQUhUREM0Tk9vRy9aeFUzRXZsTVBRPT0iLAogICAgICAgICAgImRldiI6IHRydWUKICAgICAgICB9LAogICAgICAgICJzdHJpcC1hbnNpIjogewogICAgICAgICAgInZlcnNpb24iOiAiNi4wLjAiLAogICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N0cmlwLWFuc2kvLS9zdHJpcC1hbnNpLTYuMC4wLnRneiIsCiAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1BdXZLVHJUZlFOWU5JY3RiUjFLL1lHVFIxNzU2R3ljUHNnN2I5YmRWOUR1cXVyNGd2NmFLcUhYYWg2N1o4SW1TN1dFejVRVmNPdGxmVzJyWkV1Z3Q2dz09IiwKICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgInJlcXVpcmVzIjogewogICAgICAgICAgICAiYW5zaS1yZWdleCI6ICJeNS4wLjAiCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAic3VwcG9ydHMtY29sb3IiOiB7CiAgICAgICAgICAidmVyc2lvbiI6ICI3LjEuMCIsCiAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3VwcG9ydHMtY29sb3IvLS9zdXBwb3J0cy1jb2xvci03LjEuMC50Z3oiLAogICAgICAgICAgImludGVncml0eSI6ICJzaGE1MTItb1JTSXBSOHB4VDFXcjJGcXVUTm5HZXQ3OWIzQldsanFPdW9XL2g0b0JoeEovSFViWDVuWDZKU3J1VGt2WERDRk13RFB2c2FUVGJ2TUxLWldTeTBSNWc9PSIsCiAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAgICAgImhhcy1mbGFnIjogIl40LjAuMCIKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiaXMtYXJyYXlpc2giOiB7CiAgICAgICJ2ZXJzaW9uIjogIjAuMi4xIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzLWFycmF5aXNoLy0vaXMtYXJyYXlpc2gtMC4yLjEudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGExLWQ4bVlRRko2cU95eHFMcHBlNEJrV25xU2FwMD0iLAogICAgICAiZGV2IjogdHJ1ZQogICAgfSwKICAgICJpcy1jYWxsYWJsZSI6IHsKICAgICAgInZlcnNpb24iOiAiMS4xLjUiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMtY2FsbGFibGUvLS9pcy1jYWxsYWJsZS0xLjEuNS50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1FU0t2NXNNQ0pCMmpuSFRXWjNPNWl0RytPMTI4SHN1czRLNFFoMWgyL2NnbjJ2YmduTFNWcWZWNDZBZUpBOUQ1RWVlTGE5dzgxS1VYTXRuMzR6aFgrUT09IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAiaXMtZGF0ZS1vYmplY3QiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzLWRhdGUtb2JqZWN0Ly0vaXMtZGF0ZS1vYmplY3QtMS4wLjIudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItVVNsRFQ1MjR3b1EwOGFvWkZ6aDMvWjZjaDlZL0VXWEVIUS9BYVJOMFNrS3E0dDJKdzJSMjMzOXRTWG13dVZvWTdMTGxCQ2JPSWx4Mm15UC9MNXprMGc9PSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgImlzLWV4dGdsb2IiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjIuMS4xIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzLWV4dGdsb2IvLS9pcy1leHRnbG9iLTIuMS4xLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1xSXdDVTFlUjhDN1RmSGFodWVxWGM4Z3orTUk9IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjMuMC4wIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzLWZ1bGx3aWR0aC1jb2RlLXBvaW50Ly0vaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQtMy4wLjAudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItenltbTUrdStzQ3NTV3lEOXFOYWVqVjNERnZoQ0tjbEtkaXpZYUpVdUhBODNSTGpiN25TdUduZGRDSEd2MGhrK0tZN0JNQWxzV2VLNFVlZzZFVjZYUWc9PSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgImlzLWdsb2IiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjQuMC4xIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzLWdsb2IvLS9pcy1nbG9iLTQuMC4xLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLTVHMHRLdEJURkltT3FEbkxCMmhHNkJwMnFjS0VGZHVvNHRadTlNVC9INk5Rdi9naGh5MzBvNTV1ZmFmeEovTGRINzlMTHMyS2Zybjg1VExLeUE3QlVnPT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJpcy1leHRnbG9iIjogIl4yLjEuMSIKICAgICAgfQogICAgfSwKICAgICJpcy1yZWdleCI6IHsKICAgICAgInZlcnNpb24iOiAiMS4wLjUiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMtcmVnZXgvLS9pcy1yZWdleC0xLjAuNS50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi12bEtXMTdTTnE0NG93djVBUVIzQ3EwYlFQRWI4K2tGM1VLWjJmaVpOT1d0enRZRTVpMEN6Q1p4RkR3TzU4cUFPV3R4ZEJSVk8vVjVRaW4xd2pDcUZZUT09IiwKICAgICAgImRldiI6IHRydWUsCiAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAiaGFzIjogIl4xLjAuMyIKICAgICAgfQogICAgfSwKICAgICJpcy1zdHJpbmciOiB7CiAgICAgICJ2ZXJzaW9uIjogIjEuMC41IiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzLXN0cmluZy8tL2lzLXN0cmluZy0xLjAuNS50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1idVk2Vk5SamhRTWlGMXFXRG91bG9abFFiUmhEUENlYnd4U2p4TWp4Z2VtWVQ0NllNZDJOUjAvSCtmQmhFZldYNEEvdzlUQkorb2wrb2txSktGRTZ2UT09IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAiaXMtc3ltYm9sIjogewogICAgICAidmVyc2lvbiI6ICIxLjAuMyIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1zeW1ib2wvLS9pcy1zeW1ib2wtMS4wLjMudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItT3dpamhhUlNncXZobS8wWmRBY1hOWnQ5bFlkS0ZwY1JEVDVVTFV1WVhQb1Q3OTRVTk9kVStncFQ2UnpvN2I0VjJIVWwvb3A2R3FZODk0QVp3djlmYVE9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgImhhcy1zeW1ib2xzIjogIl4xLjAuMSIKICAgICAgfQogICAgfSwKICAgICJpc2FycmF5IjogewogICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pc2FycmF5Ly0vaXNhcnJheS0xLjAuMC50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTEtdTVOZFNGZ3N1aGFNQm9OSlY2VktQZ2NTVHhFPSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgImlzZXhlIjogewogICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pc2V4ZS8tL2lzZXhlLTIuMC4wLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS02UHZ6ZE54VmIvaVVlaERjc0ZjdFl6OHMraEE9IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAianMtdG9rZW5zIjogewogICAgICAidmVyc2lvbiI6ICI0LjAuMCIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9qcy10b2tlbnMvLS9qcy10b2tlbnMtNC4wLjAudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItUmRKVWZsY0UzY1V6S2lNcVFnc0N1MDZGUHU5VWRJSk8wYmVZYlBoSE40azZhcGdKdGlmY29DdFQ5YmN4T3BZQnRwRDJrQ002U2J6ZzRDYXVzVy9QS1E9PSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgImpzLXlhbWwiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjMuMTMuMSIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9qcy15YW1sLy0vanMteWFtbC0zLjEzLjEudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItWWZiY083alhEZHlqMERHeFlWU2xTZVFOSGJEN1hQV3ZyVldlVlV1anJRRW9aeldKSVJyQ1BveWs2a0w2SUFqQUcySW9sTUs0VDBoTlVlMEhPVXM1Snc9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgImFyZ3BhcnNlIjogIl4xLjAuNyIsCiAgICAgICAgImVzcHJpbWEiOiAiXjQuMC4wIgogICAgICB9CiAgICB9LAogICAgImpzZXNjIjogewogICAgICAidmVyc2lvbiI6ICIyLjUuMiIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9qc2VzYy8tL2pzZXNjLTIuNS4yLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLU9ZdTdYRXpqa0NRM0M1UHMzUUlac1FmTnBxb0p5WlpBOTl3ZDlhV2QwNU5DdEM1cFdPa1NoSzJta0w2SFhRUjYvQ3kybGJOZFBsWkJwdVFIWEU2M2dBPT0iLAogICAgICAiZGV2IjogdHJ1ZQogICAgfSwKICAgICJqc29uLXNjaGVtYS10cmF2ZXJzZSI6IHsKICAgICAgInZlcnNpb24iOiAiMC40LjEiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvanNvbi1zY2hlbWEtdHJhdmVyc2UvLS9qc29uLXNjaGVtYS10cmF2ZXJzZS0wLjQuMS50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi14YmJDSDVkQ1lVNVQ4TGNFaGh1aDdISjg4SFh1VzNxc0kzWTB6T1pGS2ZaRUhjcFdpSFUvSnh6azYyOUJyc2FiL21NaUhRdGk5d01QKzg0NVJQZTNWZz09IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAianNvbi1zdGFibGUtc3RyaW5naWZ5LXdpdGhvdXQtanNvbmlmeSI6IHsKICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvanNvbi1zdGFibGUtc3RyaW5naWZ5LXdpdGhvdXQtanNvbmlmeS8tL2pzb24tc3RhYmxlLXN0cmluZ2lmeS13aXRob3V0LWpzb25pZnktMS4wLjEudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGExLW5iZTFsSmF0UHp6Kzh3cDFGQzB0a3dyWEpsRT0iLAogICAgICAiZGV2IjogdHJ1ZQogICAgfSwKICAgICJsZXZuIjogewogICAgICAidmVyc2lvbiI6ICIwLjMuMCIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sZXZuLy0vbGV2bi0wLjMuMC50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTEtT3dtU1R0K2ZDRHdFa1AzVXdMeEVJZUJIWk80PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgInByZWx1ZGUtbHMiOiAifjEuMS4yIiwKICAgICAgICAidHlwZS1jaGVjayI6ICJ+MC4zLjIiCiAgICAgIH0KICAgIH0sCiAgICAibG9hZC1qc29uLWZpbGUiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvYWQtanNvbi1maWxlLy0vbG9hZC1qc29uLWZpbGUtMi4wLjAudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGExLWVVZmtJVW12Z05hV3kvZVh2S3E4L2gvaW5LZz0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJncmFjZWZ1bC1mcyI6ICJeNC4xLjIiLAogICAgICAgICJwYXJzZS1qc29uIjogIl4yLjIuMCIsCiAgICAgICAgInBpZnkiOiAiXjIuMC4wIiwKICAgICAgICAic3RyaXAtYm9tIjogIl4zLjAuMCIKICAgICAgfQogICAgfSwKICAgICJsb2NhdGUtcGF0aCI6IHsKICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbG9jYXRlLXBhdGgvLS9sb2NhdGUtcGF0aC0yLjAuMC50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTEtSzFhTEpsN3NsRXh0bkEzcHc5dTd5Z05Velk0PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgInAtbG9jYXRlIjogIl4yLjAuMCIsCiAgICAgICAgInBhdGgtZXhpc3RzIjogIl4zLjAuMCIKICAgICAgfQogICAgfSwKICAgICJsb2Rhc2giOiB7CiAgICAgICJ2ZXJzaW9uIjogIjQuMTcuMTkiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbG9kYXNoLy0vbG9kYXNoLTQuMTcuMTkudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItSk52ZDhYRVI5R1FYMHYycUpnc2FOL216RkNOQTVCUmUvajhKTjlkK3RXeUdMU29kS1FIS0ZpY2R3Tll6V3dJM3dqUm5hS1BzR2oxWGtCangvRjk2RFE9PSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgIm1pbWljLWZuIjogewogICAgICAidmVyc2lvbiI6ICIyLjEuMCIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9taW1pYy1mbi8tL21pbWljLWZuLTIuMS4wLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLU9xYk9rNW9FUWVBWjhXWFd5ZGx1OUhKano5V1ZkRUl2YW1NQ2NYbXVxVVlqVGtuSC9zcXNXdmhRM3Znd0tGUlIxSHBqdk5CS1EzN25iSmdZekdxR2NnPT0iLAogICAgICAiZGV2IjogdHJ1ZQogICAgfSwKICAgICJtaW5pbWF0Y2giOiB7CiAgICAgICJ2ZXJzaW9uIjogIjMuMC40IiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL21pbmltYXRjaC8tL21pbmltYXRjaC0zLjAuNC50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi15SkhWUUVoeXFQTFVUZ3Q5QjgzUFh1Nlczcng0TXZ2SHZTVXZUb29ncHdvR0RPVVEreURyUjBIUm90K3lPQ2RDTzd1NGhYM3BXZnQ2a1dCQmNxaDBVQT09IiwKICAgICAgImRldiI6IHRydWUsCiAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAiYnJhY2UtZXhwYW5zaW9uIjogIl4xLjEuNyIKICAgICAgfQogICAgfSwKICAgICJtaW5pbWlzdCI6IHsKICAgICAgInZlcnNpb24iOiAiMS4yLjUiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbWluaW1pc3QvLS9taW5pbWlzdC0xLjIuNS50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1GTTluTlVZclJCQUVMWlFUM3hlWlE3Zm1NT0JnNm5XTm1KS1RjZ3NKZWFMc3RQL1VPRFZwR3NyNU9oWGhoWGc2ZitxdEo4dWlaK1BVeGtEV2NnSVhMdz09IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAibWtkaXJwIjogewogICAgICAidmVyc2lvbiI6ICIwLjUuNSIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ta2RpcnAvLS9ta2RpcnAtMC41LjUudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItTkttQWxFU2Y2ak1HeW0xKytSMFJhN3d2aFYrd0ZXNjNGYVNPRlB3UmFodmVhMGdNVWNHVWhWZUFnLzBCQzB3aXY5aWg1TllQQjFXbjFVRUkxL0wreFE9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgIm1pbmltaXN0IjogIl4xLjIuNSIKICAgICAgfQogICAgfSwKICAgICJtcyI6IHsKICAgICAgInZlcnNpb24iOiAiMi4xLjIiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbXMvLS9tcy0yLjEuMi50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1zR2tQeCtWak10bUE2TVgyN29BNEZCRkVMRkNaWjRTNFhxZUdPWEN2Njh0VCtqYjN2ay9SeWFLV1AwUFRLeVd0bUxTTTBiK2FkVVRFdmJzMVBFYUgydz09IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAibXV0ZS1zdHJlYW0iOiB7CiAgICAgICJ2ZXJzaW9uIjogIjAuMC44IiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL211dGUtc3RyZWFtLy0vbXV0ZS1zdHJlYW0tMC4wLjgudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItbm5iV1dPa29XeVVzVGpLcmhnRDBkY3oyMm1ka1NucFlxYkVqSW0ybmh3aHV4bFNrcHl3Sm1CbzhoMFpxSmRrcDczbWI5MFNzc0hrTjRyc1JhQkFmQUE9PSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgIm5hdHVyYWwtY29tcGFyZSI6IHsKICAgICAgInZlcnNpb24iOiAiMS40LjAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbmF0dXJhbC1jb21wYXJlLy0vbmF0dXJhbC1jb21wYXJlLTEuNC4wLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1TcjYvN3RkVUh5d25yUHNwdmJ2UlhJMWJwUGM9IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAibmljZS10cnkiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjEuMC41IiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL25pY2UtdHJ5Ly0vbmljZS10cnktMS4wLjUudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItMW5oNDVkZWViNW9sTlk3ZVg4MkJrUE83U1N4UjVTU1lKaVBUclRkRlVWWXdBbDhDS01BNU45UGpUWWtIaVJqaXNWY3hjUTFIWGRMaHgycXh4SnpMTlE9PSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgIm5vcm1hbGl6ZS1wYWNrYWdlLWRhdGEiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjIuNS4wIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL25vcm1hbGl6ZS1wYWNrYWdlLWRhdGEvLS9ub3JtYWxpemUtcGFja2FnZS1kYXRhLTIuNS4wLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLS81Q01OM1QwUjRYVGo0RGNHYWV4bytyb1pTZFNGVy8wQU9PVFJPcmp4ekNHMXdyV1hFc0diUktldmpsSUwrWkRFNHNabEpyNUVENFlXMHlxbWtLK2VBPT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJob3N0ZWQtZ2l0LWluZm8iOiAiXjIuMS40IiwKICAgICAgICAicmVzb2x2ZSI6ICJeMS4xMC4wIiwKICAgICAgICAic2VtdmVyIjogIjIgfHwgMyB8fCA0IHx8IDUiLAogICAgICAgICJ2YWxpZGF0ZS1ucG0tcGFja2FnZS1saWNlbnNlIjogIl4zLjAuMSIKICAgICAgfSwKICAgICAgImRlcGVuZGVuY2llcyI6IHsKICAgICAgICAic2VtdmVyIjogewogICAgICAgICAgInZlcnNpb24iOiAiNS43LjEiLAogICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3NlbXZlci8tL3NlbXZlci01LjcuMS50Z3oiLAogICAgICAgICAgImludGVncml0eSI6ICJzaGE1MTItc2F1YURmL1BaZFZnckxUTllIUnRwWGExaVJpS2NhZWJpS1ExQkpkcFFsV0gybEN2ZXhRZFg1NXNuUEZ5SzdRenB1ZHFiQ0kwcVhGZk9hc0hkeU5ER1E9PSIsCiAgICAgICAgICAiZGV2IjogdHJ1ZQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgICJvYmplY3QtaW5zcGVjdCI6IHsKICAgICAgInZlcnNpb24iOiAiMS43LjAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvb2JqZWN0LWluc3BlY3QvLS9vYmplY3QtaW5zcGVjdC0xLjcuMC50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1hN3BFSGRoMXhLSUFnVHlTVUdnTE14L3h3RFpza04xVWQ2ZWdZWU4zRWRSVzRaTVBORURVVEYraHd5MkxVQytCbCtTeUxYQU5ud3ovanloL3F1dEtVdz09IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAib2JqZWN0LWtleXMiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjEuMS4xIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL29iamVjdC1rZXlzLy0vb2JqZWN0LWtleXMtMS4xLjEudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItTnVBRVNVT1VNcmxJWE9mSEt6RDZicFB1M3RZdDN4dmpOZFJJUStGZVQwbE5iNEs4V1I3MENhRHhodU5ndVMyWEcrR2preU13T3pzTjVaa3RJbWZoTEE9PSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgIm9iamVjdC5hc3NpZ24iOiB7CiAgICAgICJ2ZXJzaW9uIjogIjQuMS4wIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL29iamVjdC5hc3NpZ24vLS9vYmplY3QuYXNzaWduLTQuMS4wLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLWV4SEplcTZrQktqNThtcUd5VFE5REZ2clpDL2VSNk93eHpvTTlZUm9HQnFyWFlvbmFGeUdpRk11YzlWWnJYZjdEYXJyZUV3TXB1ckczZGQrQ055VzV3PT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJkZWZpbmUtcHJvcGVydGllcyI6ICJeMS4xLjIiLAogICAgICAgICJmdW5jdGlvbi1iaW5kIjogIl4xLjEuMSIsCiAgICAgICAgImhhcy1zeW1ib2xzIjogIl4xLjAuMCIsCiAgICAgICAgIm9iamVjdC1rZXlzIjogIl4xLjAuMTEiCiAgICAgIH0KICAgIH0sCiAgICAib2JqZWN0LmVudHJpZXMiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjEuMS4xIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL29iamVjdC5lbnRyaWVzLy0vb2JqZWN0LmVudHJpZXMtMS4xLjEudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItaWxxUjdCZ2R5WmV0SnV0bURQZlhDRGZmR2EwL1l6bDJpdlZOcGJ4L2c0VWVXckNkUm5GRFVCcktKR0xoR2llUkhEQVRueVpYV0JlQ2IyOWs5Q0p5c1E9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgImRlZmluZS1wcm9wZXJ0aWVzIjogIl4xLjEuMyIsCiAgICAgICAgImVzLWFic3RyYWN0IjogIl4xLjE3LjAtbmV4dC4xIiwKICAgICAgICAiZnVuY3Rpb24tYmluZCI6ICJeMS4xLjEiLAogICAgICAgICJoYXMiOiAiXjEuMC4zIgogICAgICB9CiAgICB9LAogICAgIm9iamVjdC52YWx1ZXMiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjEuMS4xIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL29iamVjdC52YWx1ZXMvLS9vYmplY3QudmFsdWVzLTEuMS4xLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLVdUYTU0ZzJLOGl1MGttUy91czE4akVtZHYxYTRXaS8vQlovRFRWWUVjSDBYaExNNU5ZZHBESGphM2d0NTdWclpMY05BTzJXR0ErS3BXc0RCYUh0NmVBPT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJkZWZpbmUtcHJvcGVydGllcyI6ICJeMS4xLjMiLAogICAgICAgICJlcy1hYnN0cmFjdCI6ICJeMS4xNy4wLW5leHQuMSIsCiAgICAgICAgImZ1bmN0aW9uLWJpbmQiOiAiXjEuMS4xIiwKICAgICAgICAiaGFzIjogIl4xLjAuMyIKICAgICAgfQogICAgfSwKICAgICJvbmNlIjogewogICAgICAidmVyc2lvbiI6ICIxLjQuMCIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9vbmNlLy0vb25jZS0xLjQuMC50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTEtV0RzYXAzV1dIVXNST3NGOW5GQzY3NTNYYTlFPSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgIndyYXBweSI6ICIxIgogICAgICB9CiAgICB9LAogICAgIm9uZXRpbWUiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjUuMS4wIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL29uZXRpbWUvLS9vbmV0aW1lLTUuMS4wLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLTVOY1NrUEhod1RWRklRTitUVXFYb1M1K2RsRWxIWGRwQVd1OUkwSFAyMFlPdElpK2FaMEN0ODJqZGxJTER4akxFQVd3dm0rcWoxbTZhRXRzRFZtbTZRPT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJtaW1pYy1mbiI6ICJeMi4xLjAiCiAgICAgIH0KICAgIH0sCiAgICAib3B0aW9uYXRvciI6IHsKICAgICAgInZlcnNpb24iOiAiMC44LjMiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvb3B0aW9uYXRvci8tL29wdGlvbmF0b3ItMC44LjMudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItK0lXOXBBQ2RrM1hXbW1UWEc4bTN1cEdVSnN0NVhSR3p4TVJqWHpBdUoxWG5JRk52Zmhqakl1WWtEdnlzblBRN3F6cVZ6THQ3OEJDcnVudHFSaFdRYkE9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgImRlZXAtaXMiOiAifjAuMS4zIiwKICAgICAgICAiZmFzdC1sZXZlbnNodGVpbiI6ICJ+Mi4wLjYiLAogICAgICAgICJsZXZuIjogIn4wLjMuMCIsCiAgICAgICAgInByZWx1ZGUtbHMiOiAifjEuMS4yIiwKICAgICAgICAidHlwZS1jaGVjayI6ICJ+MC4zLjIiLAogICAgICAgICJ3b3JkLXdyYXAiOiAifjEuMi4zIgogICAgICB9CiAgICB9LAogICAgIm9zLXRtcGRpciI6IHsKICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvb3MtdG1wZGlyLy0vb3MtdG1wZGlyLTEuMC4yLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS11K1owQnNlYXFGeGMvc2RtL2xjMFZWMzZFblE9IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAicC1saW1pdCI6IHsKICAgICAgInZlcnNpb24iOiAiMS4zLjAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcC1saW1pdC8tL3AtbGltaXQtMS4zLjAudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItdnZjWHNMQUo5RHI1clFPUGs3dG9aUVpKQXBCbDJLNEo2ZEFOU3NFdWg2UUk0MUpZY3NTL3FoVEdhOUVySVVVZ0szV05Rb0pZdnlseHZqcW1pcUVBOVE9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgInAtdHJ5IjogIl4xLjAuMCIKICAgICAgfQogICAgfSwKICAgICJwLWxvY2F0ZSI6IHsKICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcC1sb2NhdGUvLS9wLWxvY2F0ZS0yLjAuMC50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTEtSUtBUU95SXFjTWo5T2N3dVdBYUE4OTNsN0VNPSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgInAtbGltaXQiOiAiXjEuMS4wIgogICAgICB9CiAgICB9LAogICAgInAtdHJ5IjogewogICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wLXRyeS8tL3AtdHJ5LTEuMC4wLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS15OGVjMjYrUDFDS09FL1loOHJHaU44R3lCN009IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAicGFyZW50LW1vZHVsZSI6IHsKICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcGFyZW50LW1vZHVsZS8tL3BhcmVudC1tb2R1bGUtMS4wLjEudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItR1EyRVdScFFWOC9vK0F3OFlxdGZaWlBmTlJXWllrYmlkRTlrNXJwbC9oQzN2dEhIQmZHbTJJZmk2cVdWK2NvREdrclVLWkF4RTNMb3Q1a2NzUmxoK2c9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgImNhbGxzaXRlcyI6ICJeMy4wLjAiCiAgICAgIH0KICAgIH0sCiAgICAicGFyc2UtanNvbiI6IHsKICAgICAgInZlcnNpb24iOiAiMi4yLjAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcGFyc2UtanNvbi8tL3BhcnNlLWpzb24tMi4yLjAudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGExLTlJRDBCRFR2Z0hRZmhHa0puNDNxR1BWYVRjaz0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJlcnJvci1leCI6ICJeMS4yLjAiCiAgICAgIH0KICAgIH0sCiAgICAicGF0aC1leGlzdHMiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjMuMC4wIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3BhdGgtZXhpc3RzLy0vcGF0aC1leGlzdHMtMy4wLjAudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGExLXpnNitxbDk0eXhpU1hxZllFTmUxbXdFUDFSVT0iLAogICAgICAiZGV2IjogdHJ1ZQogICAgfSwKICAgICJwYXRoLWlzLWFic29sdXRlIjogewogICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wYXRoLWlzLWFic29sdXRlLy0vcGF0aC1pcy1hYnNvbHV0ZS0xLjAuMS50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTEtRjB1U2FITlZOUCs4ZXM1cjlUcGFuaHRjWDE4PSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgInBhdGgta2V5IjogewogICAgICAidmVyc2lvbiI6ICIyLjAuMSIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wYXRoLWtleS8tL3BhdGgta2V5LTIuMC4xLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1RUnl0dFhURm9VRFRwTEdSRFVEWURNbjBDMEE9IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAicGF0aC1wYXJzZSI6IHsKICAgICAgInZlcnNpb24iOiAiMS4wLjYiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcGF0aC1wYXJzZS8tL3BhdGgtcGFyc2UtMS4wLjYudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItR1NtT1QyRWJIcklOQmY5U1I3Q0RFTHdsSjhBRU5rM1FuN09pa0s0bkZZQXUzT3RlMitKWU5WdmtwQUVRbTMvVExORUpGRC94Wkpqenl4ZzNLQldPenc9PSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgInBhdGgtdHlwZSI6IHsKICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcGF0aC10eXBlLy0vcGF0aC10eXBlLTIuMC4wLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS04QkxNdUVGYmNKYjhMYW9RVk1QWEk0bFpUSE09IiwKICAgICAgImRldiI6IHRydWUsCiAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAicGlmeSI6ICJeMi4wLjAiCiAgICAgIH0KICAgIH0sCiAgICAicGlmeSI6IHsKICAgICAgInZlcnNpb24iOiAiMi4zLjAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcGlmeS8tL3BpZnktMi4zLjAudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGExLTdSUWFhc0JEcUVucVdJU1k1OXlvc1ZNdzZRdz0iLAogICAgICAiZGV2IjogdHJ1ZQogICAgfSwKICAgICJwa2ctZGlyIjogewogICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wa2ctZGlyLy0vcGtnLWRpci0yLjAuMC50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTEtOXRYUkVKNFoxajdmUW80TDFYNFNkM1lWTTBzPSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgImZpbmQtdXAiOiAiXjIuMS4wIgogICAgICB9CiAgICB9LAogICAgInByZWx1ZGUtbHMiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjEuMS4yIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3ByZWx1ZGUtbHMvLS9wcmVsdWRlLWxzLTEuMS4yLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1JWk1xVko5ZVV2L1pxQ2YxY09CTDVpcVgybFE9IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAicHJvZ3Jlc3MiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjIuMC4zIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Byb2dyZXNzLy0vcHJvZ3Jlc3MtMi4wLjMudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItN1BpSHRMbGw1TGRuS0lNdzEwMEkrOHhKWFI1Z1cyUXdXWWtUNmlKdmEwYlhpdFpLYS9YTXJTYmRtZzNyMlhuYWlkejlRdW1kMFZQYU1yWmxGOVY5c0E9PSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgInB1bnljb2RlIjogewogICAgICAidmVyc2lvbiI6ICIyLjEuMSIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wdW55Y29kZS8tL3B1bnljb2RlLTIuMS4xLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLVhSc1JqZGYrajVtbCt5LzZHS0hQWmJyRi84cDJZZ2EwSlB0ZHFUSVkyWGU1b2hKUEQ5c2FESkpMUHZwOStOU0JwclZ2ZXZkWFp5Ym5qMmN2OE9FZDBBPT0iLAogICAgICAiZGV2IjogdHJ1ZQogICAgfSwKICAgICJyZWFkLXBrZyI6IHsKICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVhZC1wa2cvLS9yZWFkLXBrZy0yLjAuMC50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTEtanZIQVlqeHFiYkRjWnhQRXY2eEdNeXNqYVBnPSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgImxvYWQtanNvbi1maWxlIjogIl4yLjAuMCIsCiAgICAgICAgIm5vcm1hbGl6ZS1wYWNrYWdlLWRhdGEiOiAiXjIuMy4yIiwKICAgICAgICAicGF0aC10eXBlIjogIl4yLjAuMCIKICAgICAgfQogICAgfSwKICAgICJyZWFkLXBrZy11cCI6IHsKICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVhZC1wa2ctdXAvLS9yZWFkLXBrZy11cC0yLjAuMC50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTEtYTNLb0JJbUU0TVFlZVZFUDFlbjZtYk8xU2I0PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgImZpbmQtdXAiOiAiXjIuMC4wIiwKICAgICAgICAicmVhZC1wa2ciOiAiXjIuMC4wIgogICAgICB9CiAgICB9LAogICAgInJlZ2V4cHAiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjIuMC4xIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JlZ2V4cHAvLS9yZWdleHBwLTIuMC4xLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLWx2ME02K1RrRFZuaUEzYUQxRWcwRFZwZlUvYm9vU3U3RWV2M1RETy9tWktIQmZWamdDR1RWNHQ0YnVwcEVTRVlEdGtBcllGT3hUSld2NlM1QytpYU53PT0iLAogICAgICAiZGV2IjogdHJ1ZQogICAgfSwKICAgICJyZXNvbHZlIjogewogICAgICAidmVyc2lvbiI6ICIxLjE3LjAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVzb2x2ZS8tL3Jlc29sdmUtMS4xNy4wLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLWljKzdKWWlWOFZpMnl6UUdGV09raVpENVo5ejdPMlpobTlYTWFUeGRKRXhLYXNpZUZDcit5WFovV21Yc2NrSGlLbDEyYXIweTZYaVhEeDNtNFJIbjF3PT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJwYXRoLXBhcnNlIjogIl4xLjAuNiIKICAgICAgfQogICAgfSwKICAgICJyZXNvbHZlLWZyb20iOiB7CiAgICAgICJ2ZXJzaW9uIjogIjQuMC4wIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Jlc29sdmUtZnJvbS8tL3Jlc29sdmUtZnJvbS00LjAuMC50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1wYi9NWW1Yc3RBa3lzUkZ4OHBpTkkxdEdGTlFJRkEzdmtFM0dxNEV1QTFkRjZnSHAvK3ZnWnFzQ0dKYXB2eThOM1ErNG83Rnd2cXVQSmNuWjdSWXk0Zz09IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAicmVzdG9yZS1jdXJzb3IiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjMuMS4wIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Jlc3RvcmUtY3Vyc29yLy0vcmVzdG9yZS1jdXJzb3ItMy4xLjAudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItbCtzU2VmekhwajVxaW1oRlNFNWE4bnVmWllBTTNzQlNWTUFQdFlrbUMrNEVIMmFuU0dhRU1YU0QwaXpSUWJ1OW5meVE5eTVKclZtcDdFOG9aclVqdkE9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgIm9uZXRpbWUiOiAiXjUuMS4wIiwKICAgICAgICAic2lnbmFsLWV4aXQiOiAiXjMuMC4yIgogICAgICB9CiAgICB9LAogICAgInJpbXJhZiI6IHsKICAgICAgInZlcnNpb24iOiAiMi42LjMiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmltcmFmLy0vcmltcmFmLTIuNi4zLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLW13cWVXNVhzQTJxQWVqRzQ2Z1lkRU5heFhqeDlvblJOQ2ZuN0wwZHV1UDRoQ3VUSWkvUU83UERLMDdLSmZwMWQraXpXUHJ6RUpEY1NxQmEwT1pRcmlBPT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJnbG9iIjogIl43LjEuMyIKICAgICAgfQogICAgfSwKICAgICJydW4tYXN5bmMiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjIuNC4xIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3J1bi1hc3luYy8tL3J1bi1hc3luYy0yLjQuMS50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi10dlZuVnYwMWI4YzFSckE2RXA3SmtTdGo4NUd1di9Zck1jd3FZUW53anNBUzJjVG1tUEdCQmpBanBDVzdSclNvZE5Tb0UyL3FnOU80YmNlTnZVdURnUT09IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAicnhqcyI6IHsKICAgICAgInZlcnNpb24iOiAiNi41LjUiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcnhqcy8tL3J4anMtNi41LjUudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItV2ZRSSsxZ29oZGYwRGFpL0JibWs1TDVJdEg1dFlxbTNraTJjNUdkV2hLamFsempnOTNOM2F2RmpWU3R5Wlp6K0EyRW0rWnhLSDViTmdodzlVZXlsR1E9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgInRzbGliIjogIl4xLjkuMCIKICAgICAgfQogICAgfSwKICAgICJzYWZlci1idWZmZXIiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjIuMS4yIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3NhZmVyLWJ1ZmZlci8tL3NhZmVyLWJ1ZmZlci0yLjEuMi50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1ZWm8zSzgyU0Q3Uml5aTBFMUVRUG9qTHo3a3BlcG5TUUk5SXlQYkhIZzFYWFhldmI1ZEpJN3RweU4yQUR4R2NRYkhHN3ZjeVJIazBjYndxY1FyaVV0Zz09IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAic2VtdmVyIjogewogICAgICAidmVyc2lvbiI6ICI2LjMuMCIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zZW12ZXIvLS9zZW12ZXItNi4zLjAudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItYjM5VEJhVFNmVjZ5QnJhcFU4OXA1Zktla0UybS9Od25Eb2NPVnJ1UUZTMS92ZU1nZHp1UGNuT00zNE02Q3d4VzhqSC9seEVhNXJCb0RlVXd1NUhIVHc9PSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgInNoZWJhbmctY29tbWFuZCI6IHsKICAgICAgInZlcnNpb24iOiAiMS4yLjAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc2hlYmFuZy1jb21tYW5kLy0vc2hlYmFuZy1jb21tYW5kLTEuMi4wLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1SS3JHVzJsYkF6bUphTU9mTmovdVhlcjk4ZW89IiwKICAgICAgImRldiI6IHRydWUsCiAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAic2hlYmFuZy1yZWdleCI6ICJeMS4wLjAiCiAgICAgIH0KICAgIH0sCiAgICAic2hlYmFuZy1yZWdleCI6IHsKICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc2hlYmFuZy1yZWdleC8tL3NoZWJhbmctcmVnZXgtMS4wLjAudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGExLTJrTDBsMERBdEMyeXlwY29WeHl4a01tTy9xTT0iLAogICAgICAiZGV2IjogdHJ1ZQogICAgfSwKICAgICJzaWduYWwtZXhpdCI6IHsKICAgICAgInZlcnNpb24iOiAiMy4wLjMiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc2lnbmFsLWV4aXQvLS9zaWduYWwtZXhpdC0zLjAuMy50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1WVUo0OUZDOFUxT3h3Wkx4SWJUVHJEdkxuZi82VERneFpjSzh3eFI4enMxM3hweDd4Ykc2MG5kQmxoTnJGaTJFTXVGUm9lRG9KTzd3dGhTTHE0MkVqQT09IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAic2xpY2UtYW5zaSI6IHsKICAgICAgInZlcnNpb24iOiAiMi4xLjAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc2xpY2UtYW5zaS8tL3NsaWNlLWFuc2ktMi4xLjAudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItUXUrVkMzRXdZTGxkS2ExZkN4dXV2VUx2U0pPS0VnazlwaThkWmVDVks3VHFCZlVOVEg0c0ZrazRqb2o4YWZWU2ZBWWdKb1NPZXRqeDlRV09KNW1Zb1E9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgImFuc2ktc3R5bGVzIjogIl4zLjIuMCIsCiAgICAgICAgImFzdHJhbC1yZWdleCI6ICJeMS4wLjAiLAogICAgICAgICJpcy1mdWxsd2lkdGgtY29kZS1wb2ludCI6ICJeMi4wLjAiCiAgICAgIH0sCiAgICAgICJkZXBlbmRlbmNpZXMiOiB7CiAgICAgICAgImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50IjogewogICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAogICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzLWZ1bGx3aWR0aC1jb2RlLXBvaW50Ly0vaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQtMi4wLjAudGd6IiwKICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1vN01LWEU4WmtZTVdlcXE1Tys3NjQ5MzdaVTg9IiwKICAgICAgICAgICJkZXYiOiB0cnVlCiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgInNvdXJjZS1tYXAiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjAuNS43IiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3NvdXJjZS1tYXAvLS9zb3VyY2UtbWFwLTAuNS43LnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1pZ09kTFJBaDBpMGVvVXlBMk9wR2k2THZQOHc9IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAic3BkeC1jb3JyZWN0IjogewogICAgICAidmVyc2lvbiI6ICIzLjEuMCIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zcGR4LWNvcnJlY3QvLS9zcGR4LWNvcnJlY3QtMy4xLjAudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItbHIyRVpDY3RDMkJOUjdqN1d6SjJGcER6bnhreTFzamZ4dnZZRXl6eE55YjZsWlhIT0RtRW9KZUZ1NEp1cFlsa2ZoYTFLWnBKeW9xaUo3cGdBMXFxOFE9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgInNwZHgtZXhwcmVzc2lvbi1wYXJzZSI6ICJeMy4wLjAiLAogICAgICAgICJzcGR4LWxpY2Vuc2UtaWRzIjogIl4zLjAuMCIKICAgICAgfQogICAgfSwKICAgICJzcGR4LWV4Y2VwdGlvbnMiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjIuMy4wIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3NwZHgtZXhjZXB0aW9ucy8tL3NwZHgtZXhjZXB0aW9ucy0yLjMuMC50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi0vdFRyWU9DN1BQSTFuVUFneDM0aFVwcVh1eUpHK0RUSEpUbklVTEc0ckR5Z2k0eHUvdGZnbXExZTFjSVJ3Unp3WmdvNE5MeVNpK3JpY0xrWmt3NGk1QT09IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAic3BkeC1leHByZXNzaW9uLXBhcnNlIjogewogICAgICAidmVyc2lvbiI6ICIzLjAuMCIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zcGR4LWV4cHJlc3Npb24tcGFyc2UvLS9zcGR4LWV4cHJlc3Npb24tcGFyc2UtMy4wLjAudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItWWc2RDNYcFJENGtrT21UcGRnYlVpRUpGS2doSkgwM2ZpQzFPUGxsNWgvMHNPNm5laDJqcVJEVkhPUTRvL0xNZWEwdGdDa2JNZ2VhNWlwL2UrTWtXeWc9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgInNwZHgtZXhjZXB0aW9ucyI6ICJeMi4xLjAiLAogICAgICAgICJzcGR4LWxpY2Vuc2UtaWRzIjogIl4zLjAuMCIKICAgICAgfQogICAgfSwKICAgICJzcGR4LWxpY2Vuc2UtaWRzIjogewogICAgICAidmVyc2lvbiI6ICIzLjAuNSIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zcGR4LWxpY2Vuc2UtaWRzLy0vc3BkeC1saWNlbnNlLWlkcy0zLjAuNS50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1KK0ZXelpveW5KRVhHcGhWSVMrWEVoM2tGU2paWC8xaTlnRkJhV1FjQisvdG1wZTJxVXNTQkFCcGN4cXhuQXhGZGlVRkVnQVgxYmpZR1F2SVptb3o5UT09IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAic3ByaW50Zi1qcyI6IHsKICAgICAgInZlcnNpb24iOiAiMS4wLjMiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3ByaW50Zi1qcy8tL3NwcmludGYtanMtMS4wLjMudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGExLUJPYVNiMllvbFRWUFBkQVZJRFl6dUZjcGZpdz0iLAogICAgICAiZGV2IjogdHJ1ZQogICAgfSwKICAgICJzdHJpbmctd2lkdGgiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjQuMi4wIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N0cmluZy13aWR0aC8tL3N0cmluZy13aWR0aC00LjIuMC50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi16VXo1SkQrdGdxdHVEak1od0lnNXVGVlYzZHRxWjl5UUpsWlZmcTRJMDEvSzVQYWo1VUhqN1Z5clFPSnZ6YXdTVmxLcE9iQXBiZkQwRWQ2eUpjKzFlZz09IiwKICAgICAgImRldiI6IHRydWUsCiAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAiZW1vamktcmVnZXgiOiAiXjguMC4wIiwKICAgICAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiAiXjMuMC4wIiwKICAgICAgICAic3RyaXAtYW5zaSI6ICJeNi4wLjAiCiAgICAgIH0sCiAgICAgICJkZXBlbmRlbmNpZXMiOiB7CiAgICAgICAgInN0cmlwLWFuc2kiOiB7CiAgICAgICAgICAidmVyc2lvbiI6ICI2LjAuMCIsCiAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3RyaXAtYW5zaS8tL3N0cmlwLWFuc2ktNi4wLjAudGd6IiwKICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLUF1dktUclRmUU5ZTkljdGJSMUsvWUdUUjE3NTZHeWNQc2c3YjliZFY5RHVxdXI0Z3Y2YUtxSFhhaDY3WjhJbVM3V0V6NVFWY090bGZXMnJaRXVndDZ3PT0iLAogICAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgICAgICJhbnNpLXJlZ2V4IjogIl41LjAuMCIKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAic3RyaW5nLnByb3RvdHlwZS50cmltZW5kIjogewogICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdHJpbmcucHJvdG90eXBlLnRyaW1lbmQvLS9zdHJpbmcucHJvdG90eXBlLnRyaW1lbmQtMS4wLjEudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItTFJQeEZVYVR0cHFZc1RlTkthRk93M1I0YnhJeldPbmJRODM3UWZCeWxvOGpJeHRjYksvQS9zTVY3UStPQVYvdldvKzdzMjVwT0UxMEtZU2phU08wNmc9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgImRlZmluZS1wcm9wZXJ0aWVzIjogIl4xLjEuMyIsCiAgICAgICAgImVzLWFic3RyYWN0IjogIl4xLjE3LjUiCiAgICAgIH0KICAgIH0sCiAgICAic3RyaW5nLnByb3RvdHlwZS50cmltbGVmdCI6IHsKICAgICAgInZlcnNpb24iOiAiMi4xLjIiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3RyaW5nLnByb3RvdHlwZS50cmltbGVmdC8tL3N0cmluZy5wcm90b3R5cGUudHJpbWxlZnQtMi4xLjIudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItZ0NBMHR6YTFKQnZxcjNiZkFJRkpHcWZkUlR5UGFlODIrS1RubTNjb0RYa1pOOXdudVczSGpHZ04zODZEN2hmdjVDSFFZQ0kwMjIvckpQVmxxWHlIU3c9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgImRlZmluZS1wcm9wZXJ0aWVzIjogIl4xLjEuMyIsCiAgICAgICAgImVzLWFic3RyYWN0IjogIl4xLjE3LjUiLAogICAgICAgICJzdHJpbmcucHJvdG90eXBlLnRyaW1zdGFydCI6ICJeMS4wLjAiCiAgICAgIH0KICAgIH0sCiAgICAic3RyaW5nLnByb3RvdHlwZS50cmltcmlnaHQiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjIuMS4yIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N0cmluZy5wcm90b3R5cGUudHJpbXJpZ2h0Ly0vc3RyaW5nLnByb3RvdHlwZS50cmltcmlnaHQtMi4xLjIudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItWk5SUTdzWTNLcm9UYVlqUlM2RWJOaWlIck9ramloTDlhUUUvOGdmUTREdEFDL2FFQlJIRkphNDRPbW9XeEdHcVh1SmxmS2taVzRXY1hFckdyKzlaRmc9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgImRlZmluZS1wcm9wZXJ0aWVzIjogIl4xLjEuMyIsCiAgICAgICAgImVzLWFic3RyYWN0IjogIl4xLjE3LjUiLAogICAgICAgICJzdHJpbmcucHJvdG90eXBlLnRyaW1lbmQiOiAiXjEuMC4wIgogICAgICB9CiAgICB9LAogICAgInN0cmluZy5wcm90b3R5cGUudHJpbXN0YXJ0IjogewogICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdHJpbmcucHJvdG90eXBlLnRyaW1zdGFydC8tL3N0cmluZy5wcm90b3R5cGUudHJpbXN0YXJ0LTEuMC4xLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLVh4Wm4rUXB2ckJJMUZPY2c2ZElweFVQZ1dDUHVOWHZNRDcyYWFSYVVRdjFlRDRlL1F5OGkvaEZUZTBCVW1ENjBwL1FBNmJoMWF2bXVQVGZOanFWV1J3PT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJkZWZpbmUtcHJvcGVydGllcyI6ICJeMS4xLjMiLAogICAgICAgICJlcy1hYnN0cmFjdCI6ICJeMS4xNy41IgogICAgICB9CiAgICB9LAogICAgInN0cmlwLWFuc2kiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjUuMi4wIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N0cmlwLWFuc2kvLS9zdHJpcC1hbnNpLTUuMi4wLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLUR1UnMxZ0tiQnFzTUtJWmxyZmZ3bHVnOE1Ia2NucGpzNVZQbUwxUEFoK21BMzBVMERUb3RmRFowZDJVVXNYcFBtUG1NTUo2Vzc3M01hQTNKK2xiaVdBPT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJhbnNpLXJlZ2V4IjogIl40LjEuMCIKICAgICAgfSwKICAgICAgImRlcGVuZGVuY2llcyI6IHsKICAgICAgICAiYW5zaS1yZWdleCI6IHsKICAgICAgICAgICJ2ZXJzaW9uIjogIjQuMS4wIiwKICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hbnNpLXJlZ2V4Ly0vYW5zaS1yZWdleC00LjEuMC50Z3oiLAogICAgICAgICAgImludGVncml0eSI6ICJzaGE1MTItMWFwZVBmWE0xVU9TcXcwbzlJaUZBb3ZWejlNNVMxRGcrNFRyRHdmTWV3UTZwL3JtTXVlYjd0V1pqUTFyeDRMb3kxQXJCZ2dvcUdwZnFxZEk0cm9uZGc9PSIsCiAgICAgICAgICAiZGV2IjogdHJ1ZQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgICJzdHJpcC1ib20iOiB7CiAgICAgICJ2ZXJzaW9uIjogIjMuMC4wIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N0cmlwLWJvbS8tL3N0cmlwLWJvbS0zLjAuMC50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTEtSXpUQmpweDFuM3ZkVnYzdmZwcmoxWWptanRNPSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgInN0cmlwLWpzb24tY29tbWVudHMiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjMuMS4wIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N0cmlwLWpzb24tY29tbWVudHMvLS9zdHJpcC1qc29uLWNvbW1lbnRzLTMuMS4wLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLWU2L2QwZUJ1N2dIdGRDcUZ0MHhKcjY0MkxkVG9NNS9jTjRRYjlEYkhqVngxQ1A1UnllTSt6SDdwYmVjRW1Edi9sQnFiMFFIKzZVcXE3NXJ4RlBrTTB3PT0iLAogICAgICAiZGV2IjogdHJ1ZQogICAgfSwKICAgICJzdXBwb3J0cy1jb2xvciI6IHsKICAgICAgInZlcnNpb24iOiAiNS41LjAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3VwcG9ydHMtY29sb3IvLS9zdXBwb3J0cy1jb2xvci01LjUuMC50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1RalZqd2RYSXQ0MDhNSWlBcUNYNG9VS3NnVTJFcUFHenMyUHBrbTRhUVliam0rWkVXRWNXNFNmRk5UcjR1TU5abWEwZXk0ZjVsZ0xya0IwYVgwUU1vdz09IiwKICAgICAgImRldiI6IHRydWUsCiAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAiaGFzLWZsYWciOiAiXjMuMC4wIgogICAgICB9CiAgICB9LAogICAgInRhYmxlIjogewogICAgICAidmVyc2lvbiI6ICI1LjQuNiIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90YWJsZS8tL3RhYmxlLTUuNC42LnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLXdtRWM4bTRmam5vYjRndDVyaUZSdFR1LzYrNHJTZTEyVHBBRUxOU3FITWZGM0lxbkErQ0gzN1VTTTYvWVIzcVJadjdlNTZrQUVBdGQ2bktaYXhlMFVnPT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJhanYiOiAiXjYuMTAuMiIsCiAgICAgICAgImxvZGFzaCI6ICJeNC4xNy4xNCIsCiAgICAgICAgInNsaWNlLWFuc2kiOiAiXjIuMS4wIiwKICAgICAgICAic3RyaW5nLXdpZHRoIjogIl4zLjAuMCIKICAgICAgfSwKICAgICAgImRlcGVuZGVuY2llcyI6IHsKICAgICAgICAiZW1vamktcmVnZXgiOiB7CiAgICAgICAgICAidmVyc2lvbiI6ICI3LjAuMyIsCiAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZW1vamktcmVnZXgvLS9lbW9qaS1yZWdleC03LjAuMy50Z3oiLAogICAgICAgICAgImludGVncml0eSI6ICJzaGE1MTItQ3dCTFJFSVE3THZZRkIwV3lSdndocTVONXFQaGM2UE1qRDZiWWdnRmxJNVl5RGdsKzB2eHE1VkhiTU9GcUxnN2hmV3ptdThUNVoxUW9maG1USWhJdEE9PSIsCiAgICAgICAgICAiZGV2IjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50IjogewogICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAogICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzLWZ1bGx3aWR0aC1jb2RlLXBvaW50Ly0vaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQtMi4wLjAudGd6IiwKICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1vN01LWEU4WmtZTVdlcXE1Tys3NjQ5MzdaVTg9IiwKICAgICAgICAgICJkZXYiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAic3RyaW5nLXdpZHRoIjogewogICAgICAgICAgInZlcnNpb24iOiAiMy4xLjAiLAogICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N0cmluZy13aWR0aC8tL3N0cmluZy13aWR0aC0zLjEuMC50Z3oiLAogICAgICAgICAgImludGVncml0eSI6ICJzaGE1MTItdmFmY3Y2S2pWWktTZ3owNm9NL0g2R0RCckF0ejh2ZGhRYWtHakZJdk5ySEE2eTNIQ0YxQ0luTHkrUUxxOGRUSlBRMWIrS0RVcURGY3RrZFJXNDRlMXc9PSIsCiAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAgICAgImVtb2ppLXJlZ2V4IjogIl43LjAuMSIsCiAgICAgICAgICAgICJpcy1mdWxsd2lkdGgtY29kZS1wb2ludCI6ICJeMi4wLjAiLAogICAgICAgICAgICAic3RyaXAtYW5zaSI6ICJeNS4xLjAiCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgInRleHQtdGFibGUiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjAuMi4wIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3RleHQtdGFibGUvLS90ZXh0LXRhYmxlLTAuMi4wLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1mMTdvSTY2QVVnZkFDdkxmU29Uc1A4K2xjTFE9IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAidGhyb3VnaCI6IHsKICAgICAgInZlcnNpb24iOiAiMi4zLjgiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdGhyb3VnaC8tL3Rocm91Z2gtMi4zLjgudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGExLURkVEovNnE4TlhsZ3NiY2tFVjErRG9haTRmVT0iLAogICAgICAiZGV2IjogdHJ1ZQogICAgfSwKICAgICJ0bXAiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjAuMC4zMyIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90bXAvLS90bXAtMC4wLjMzLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLWpSQ0psb2pLblozYWRkdFRPamRJcW9SdVBFS0J2TlhjR1lxek82eldaWDhLZktFcG5HWTVqZmdnSlEzRWpLdXU4RDRiSlJyMHkrY1lKRm1ZYkltWEd3PT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJvcy10bXBkaXIiOiAifjEuMC4yIgogICAgICB9CiAgICB9LAogICAgInRvLWZhc3QtcHJvcGVydGllcyI6IHsKICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdG8tZmFzdC1wcm9wZXJ0aWVzLy0vdG8tZmFzdC1wcm9wZXJ0aWVzLTIuMC4wLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0zRjVwakwwSGttVzhjK0EzZG9HazVPZy9ZVzQ9IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAidHNsaWIiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjEuMTEuMiIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90c2xpYi8tL3RzbGliLTEuMTEuMi50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi10VFNrdXg2SUdQblVHVWQxWEFaSGNwdTg1TU9rSWw1elg0OXBPK2pmc2llM2VQMEI2cHloT2xMWG0zY0FDNlQ3cytldVNERFVVVitBY29wNVdtdGtWZz09IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAidHN1dGlscyI6IHsKICAgICAgInZlcnNpb24iOiAiMy4xNy4xIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3RzdXRpbHMvLS90c3V0aWxzLTMuMTcuMS50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1remVRNUI4SDN3NjBuRlkyZzhjSkl1SDdKRHBzQUxYeVNHdHdHSjBwMkxTakxnYXkzTmRJcHFxNVNvT0JlNDZiS0RXMmlxMjVpckhDcjh3am9tVVMyZz09IiwKICAgICAgImRldiI6IHRydWUsCiAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAidHNsaWIiOiAiXjEuOC4xIgogICAgICB9CiAgICB9LAogICAgInR5cGUtY2hlY2siOiB7CiAgICAgICJ2ZXJzaW9uIjogIjAuMy4yIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3R5cGUtY2hlY2svLS90eXBlLWNoZWNrLTAuMy4yLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1XSVRLdFJMUEhUVmVQN2VFOHdnRXNyVWcyM0k9IiwKICAgICAgImRldiI6IHRydWUsCiAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAicHJlbHVkZS1scyI6ICJ+MS4xLjIiCiAgICAgIH0KICAgIH0sCiAgICAidHlwZS1mZXN0IjogewogICAgICAidmVyc2lvbiI6ICIwLjguMSIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90eXBlLWZlc3QvLS90eXBlLWZlc3QtMC44LjEudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItNGRiekl6cXZqdGdpTTVydzFrNXJFSHRCQU5LbWR1ZGhHeUJFYWpOMDFmRXloYUFJaHNvS055Nnk3K0lOOTNJZnBGdHdZOWlxaTdrRCt4d0toUXNOSkE9PSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgInVyaS1qcyI6IHsKICAgICAgInZlcnNpb24iOiAiNC4yLjIiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdXJpLWpzLy0vdXJpLWpzLTQuMi4yLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLUtZOUZybWlycWw5MVgyUWdqcnkwV2Q0WStZVGRyZFpoZVM4VEZ3dmtiTFdmL0c1S05KRENoNnBLTDVPWmN0RVc0KzBCYWE1aWRLMlpRdUVMUndQem5RPT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJwdW55Y29kZSI6ICJeMi4xLjAiCiAgICAgIH0KICAgIH0sCiAgICAidjgtY29tcGlsZS1jYWNoZSI6IHsKICAgICAgInZlcnNpb24iOiAiMi4xLjAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdjgtY29tcGlsZS1jYWNoZS8tL3Y4LWNvbXBpbGUtY2FjaGUtMi4xLjAudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItdXNaQlQzUFcrTE9qTTI1d2JxSWxad1BlSlYrM09TejNNMWsxV3M4c25sVzM5ZFp5WUw5bE9HQzVGZ1BWSGZrMGpLbWppRFY4WjBtSWJWUVBpd0ZzN2c9PSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgInZhbGlkYXRlLW5wbS1wYWNrYWdlLWxpY2Vuc2UiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjMuMC40IiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3ZhbGlkYXRlLW5wbS1wYWNrYWdlLWxpY2Vuc2UvLS92YWxpZGF0ZS1ucG0tcGFja2FnZS1saWNlbnNlLTMuMC40LnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLURwS20yVWkveE43L0hRS0N0cFp4b1JXQmhaOVowa3F0eWdHOFhDZ05ROFpsRG54dVFtV2hqNTY2ajhmTjRDdTMvSm1iaHNEbzdmY0FKcTRzOWgyN0V3PT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJzcGR4LWNvcnJlY3QiOiAiXjMuMC4wIiwKICAgICAgICAic3BkeC1leHByZXNzaW9uLXBhcnNlIjogIl4zLjAuMCIKICAgICAgfQogICAgfSwKICAgICJ2dWUtZXNsaW50LXBhcnNlciI6IHsKICAgICAgInZlcnNpb24iOiAiNy4wLjAiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdnVlLWVzbGludC1wYXJzZXIvLS92dWUtZXNsaW50LXBhcnNlci03LjAuMC50Z3oiLAogICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi15UjBkTHhzVFQ3SmZEMllRbzlCaG5RNmJVVExzWm91dXp0OVNLUlA3WE5hWkpWNDU5Z3Zsc0pvNHZUMm5oWi8yZEg5ajNjNTNiSXg5ZG5xVTJwck05Zz09IiwKICAgICAgImRldiI6IHRydWUsCiAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAiZGVidWciOiAiXjQuMS4xIiwKICAgICAgICAiZXNsaW50LXNjb3BlIjogIl41LjAuMCIsCiAgICAgICAgImVzbGludC12aXNpdG9yLWtleXMiOiAiXjEuMS4wIiwKICAgICAgICAiZXNwcmVlIjogIl42LjEuMiIsCiAgICAgICAgImVzcXVlcnkiOiAiXjEuMC4xIiwKICAgICAgICAibG9kYXNoIjogIl40LjE3LjE1IgogICAgICB9CiAgICB9LAogICAgIndoaWNoIjogewogICAgICAidmVyc2lvbiI6ICIxLjMuMSIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy93aGljaC8tL3doaWNoLTEuMy4xLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLUh4SmRZV3ExTVRJUWJKM253MGNxc3NIb1ROVTI2N0tsckR1R1oxV1lseERTdFV0S1VoT2FKbWgxMTIvVFptSHh4VWZ1SnFQWFNPbTd0RHlhczBPU0lRPT0iLAogICAgICAiZGV2IjogdHJ1ZSwKICAgICAgInJlcXVpcmVzIjogewogICAgICAgICJpc2V4ZSI6ICJeMi4wLjAiCiAgICAgIH0KICAgIH0sCiAgICAid29yZC13cmFwIjogewogICAgICAidmVyc2lvbiI6ICIxLjIuMyIsCiAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy93b3JkLXdyYXAvLS93b3JkLXdyYXAtMS4yLjMudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItSHovbXJOd2l0TlJoL0hVQXRNL1ZULzVWSCt5Z0Q2RFY3bVlLWkF0SE9yYnM4VTdsdlBTNnhmN0VKS01GMHVXMUtKQ2wwSDcwMWczWkd1cyttdUU1dlE9PSIsCiAgICAgICJkZXYiOiB0cnVlCiAgICB9LAogICAgIndyYXBweSI6IHsKICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAogICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvd3JhcHB5Ly0vd3JhcHB5LTEuMC4yLnRneiIsCiAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS10U1E5ano3QnFqWHhOa1lGdkEwUU51TUt0cDg9IiwKICAgICAgImRldiI6IHRydWUKICAgIH0sCiAgICAid3JpdGUiOiB7CiAgICAgICJ2ZXJzaW9uIjogIjEuMC4zIiwKICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3dyaXRlLy0vd3JpdGUtMS4wLjMudGd6IiwKICAgICAgImludGVncml0eSI6ICJzaGE1MTItL2xnNzBIQWp0a1VnV1BWWmhaY20rVDRoa0w4WmJ0cDFuRk5PbjNsUnJ4bmx2NTBTUkJ2N2NSN1JxUitHTXNkM2hVWHk5aFdCbzRDSFRiRlRjT1l3aWc9PSIsCiAgICAgICJkZXYiOiB0cnVlLAogICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgIm1rZGlycCI6ICJeMC41LjEiCiAgICAgIH0KICAgIH0KICB9Cn0K
ewogICJuYW1lIjogIk9UUlNDb2RlUG9saWN5IiwKICAidmVyc2lvbiI6ICIxLjAuMCIsCiAgImRlc2NyaXB0aW9uIjogIk9UUlMgY29kZSBxdWFsaXR5IGNoZWNrcy4iLAogICJyZXBvc2l0b3J5IjogImdpdEBnaXRodWIuY29tOk9UUlMvb3Ryc2NvZGVwb2xpY3kuZ2l0IiwKICAiYXV0aG9yIjogIk9UUlMgQUcgPHNhbGVzQG90cnMuY29tPiIsCiAgImxpY2Vuc2UiOiAiR1BMLTMuMCIsCiAgImRldkRlcGVuZGVuY2llcyI6IHsKICAgICJiYWJlbC1lc2xpbnQiOiAiXjEwLjEuMCIsCiAgICAiZXNsaW50IjogIjYiLAogICAgImVzbGludC1jb25maWctYWlyYm5iLWJhc2UiOiAiXjE0LjEuMCIsCiAgICAiZXNsaW50LXBsdWdpbi1pbXBvcnQiOiAiXjIuMjAuMiIsCiAgICAiZXNsaW50LXBsdWdpbi1qZXN0IjogIl4yMy4xMC4wIiwKICAgICJlc2xpbnQtcGx1Z2luLXZ1ZSI6ICJeNi4yLjIiCiAgfQp9Cg==
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKLy8KLy8gUnVsZSBEZWZpbml0aW9uCi8vCgptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGNvbnRleHQpIHsKCiAgICByZXR1cm4gewogICAgICAgICJNZW1iZXJFeHByZXNzaW9uIjogZnVuY3Rpb24obm9kZSkgewogICAgICAgICAgICB2YXIgT2JqZWN0TmFtZSwKICAgICAgICAgICAgICAgIFByb3BlcnR5TmFtZSwKICAgICAgICAgICAgICAgIFJlc2VydmVkV29yZHMgPSBbIm9wZW5lciIsICJwYXJlbnQiLCAib3BlbiIsICJuYW1lIiwgImNsb3NlIl07CiAgICAgICAgICAgIGlmIChub2RlLm9iamVjdC50eXBlID09PSAnSWRlbnRpZmllcicpIHsKICAgICAgICAgICAgICAgIE9iamVjdE5hbWUgPSBub2RlLm9iamVjdC5uYW1lOwoKICAgICAgICAgICAgICAgIGlmIChPYmplY3ROYW1lID09PSAnd2luZG93JykgewogICAgICAgICAgICAgICAgICAgIGlmIChub2RlLnByb3BlcnR5LnR5cGUgPT09ICdJZGVudGlmaWVyJykgewogICAgICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0eU5hbWUgPSBub2RlLnByb3BlcnR5Lm5hbWU7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoUmVzZXJ2ZWRXb3Jkcy5pbmRleE9mKCIiICsgUHJvcGVydHlOYW1lKSAhPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KG5vZGUsICJEbyBub3QgdXNlIHRoZSAnd2luZG93JyBvYmplY3QuIFVzZSB0aGUgT1RSUyBmdW5jdGlvbnMgaW4gQ29yZS5VSS5Qb3B1cCBpbnN0ZWFkOiB3aW5kb3cue3twcm9wZXJ0eX19IiwgeyBwcm9wZXJ0eTogUHJvcGVydHlOYW1lIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKfTsKCm1vZHVsZS5leHBvcnRzLnNjaGVtYSA9IFtdOwo=
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgovLyAtLQoKLyoKICogTk9URTogSW4gb3JkZXIgZm9yIGxpbnRpbmcgdG8gd29yaywgeW91IHdpbGwgbmVlZCBmb2xsb3dpbmcgZ2xvYmFsbHkgaW5zdGFsbGVkIE5QTSBtb2R1bGVzOgogKgogKiAgIG5wbSBpbnN0YWxsIC1nIGVzbGludEA1IGVzbGludC1wbHVnaW4taW1wb3J0IGVzbGludC1jb25maWctYWlyYm5iLWJhc2UgZXNsaW50LXBsdWdpbi12dWUgYmFiZWwtZXNsaW50IGVzbGludC1wbHVnaW4tamVzdAogKgogKiBGSVhNRTogV2UgaGF2ZSB0byBwaW4gdGhlIEVTTGludCB2ZXJzaW9uIHRvIDUueCBzaW5jZSBub3QgYWxsIHBsdWdpbnMgd2UgdXNlIGFyZSBjb21wYXRpYmxlIHdpdGggNi54IGp1c3QgeWV0LgogKi8KCm1vZHVsZS5leHBvcnRzID0gewoKICAgIGV4dGVuZHM6IFsKICAgICAgICAnYWlyYm5iLWJhc2UnLAogICAgXSwKCiAgICBydWxlczogewoKICAgICAgICAvKgogICAgICAgICAqIEFpckJuQiBKUyBydWxlIG92ZXJyaWRlcy4KICAgICAgICAgKi8KCiAgICAgICAgLy8gRW5mb3JjZSBjb25zaXN0ZW50IGluZGVudGF0aW9uLgogICAgICAgICdpbmRlbnQnOiBbICdlcnJvcicsIDQsIHsKICAgICAgICAgICAgJ1N3aXRjaENhc2UnOiAxLAogICAgICAgICAgICAvLyBGaXggaXNzdWUgd2l0aCBgQ2Fubm90IHJlYWQgcHJvcGVydHkgJ3JhbmdlJyBvZiBudWxsYCBlcnJvcnMuIFBsZWFzZSBzZWUKICAgICAgICAgICAgLy8gICBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80ODM5MTkxMy9lc2xpbnQtZXJyb3ItY2Fubm90LXJlYWQtcHJvcGVydHktcmFuZ2Utb2YtbnVsbAogICAgICAgICAgICAvLyAgIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgICAgICAnaWdub3JlZE5vZGVzJzogWyAnVGVtcGxhdGVMaXRlcmFsJyBdLAogICAgICAgIH1dLAoKICAgICAgICAvLyBGaXggaXNzdWUgd2l0aCBgQ2Fubm90IHJlYWQgcHJvcGVydHkgJ3JhbmdlJyBvZiBudWxsYCBlcnJvcnMuIFBsZWFzZSBzZWUKICAgICAgICAvLyAgIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ4MzkxOTEzL2VzbGludC1lcnJvci1jYW5ub3QtcmVhZC1wcm9wZXJ0eS1yYW5nZS1vZi1udWxsCiAgICAgICAgLy8gICBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAndGVtcGxhdGUtY3VybHktc3BhY2luZyc6ICdvZmYnLAoKICAgICAgICAvLyBBbGxvdyB1bm5lY2Vzc2FyaWx5IHF1b3RlZCBwcm9wZXJ0aWVzLgogICAgICAgICdxdW90ZS1wcm9wcyc6ICdvZmYnLAoKICAgICAgICAvLyBBbGxvdyBkYW5nbGluZyB1bmRlcnNjb3JlcyB0byBpbmRpY2F0ZSBwcml2YXRlIG1ldGhvZHMgKGxpa2UgX2ludGVybmFsTWV0aG9kKCkpLgogICAgICAgICduby11bmRlcnNjb3JlLWRhbmdsZSc6ICdvZmYnLAoKICAgICAgICAvLyBFbmZvcmNlIGEgbWF4aW11bSBsaW5lIGxlbmd0aC4KICAgICAgICAnbWF4LWxlbic6IFsgJ2Vycm9yJywgeyAnY29kZSc6IDEyMCB9IF0sCgogICAgICAgIC8vIERvbid0IHRyeSB0byByZXNvbHZlIHRoZSBkZXBlbmRlbmNpZXMuCiAgICAgICAgJ2ltcG9ydC9uby11bnJlc29sdmVkJzogJ29mZicsCgogICAgICAgIC8vIEFsbG93IGZvciBtaXNzaW5nIGZpbGUgZXh0ZW5zaW9ucyBpbiBpbXBvcnQgc3RhdGVtZW50cy4KICAgICAgICAnaW1wb3J0L2V4dGVuc2lvbnMnOiAnb2ZmJywKCiAgICAgICAgLy8gUmVxdWlyZSBhIHNwYWNlIGJlZm9yZSBmdW5jdGlvbiBwYXJlbnRoZXNpcy4KICAgICAgICAnc3BhY2UtYmVmb3JlLWZ1bmN0aW9uLXBhcmVuJzogWyAnZXJyb3InLCAnYWx3YXlzJyBdLAoKICAgICAgICAvLyBSZXF1aXJlICJTdHJvdXN0cnVwIiBicmFjZSBzdHlsZS4KICAgICAgICAnYnJhY2Utc3R5bGUnOiBbICdlcnJvcicsICdzdHJvdXN0cnVwJyBdLAoKICAgICAgICAvLyBFbmZvcmNlIHNwYWNlcyBpbnNpZGUgb2YgYnJhY2tldHMuCiAgICAgICAgJ2FycmF5LWJyYWNrZXQtc3BhY2luZyc6IFsgJ2Vycm9yJywgJ2Fsd2F5cycgXSwKCiAgICAgICAgLy8gRG8gbm90IGVuZm9yY2UgdGhhdCBjbGFzcyBtZXRob2RzIHV0aWxpemUgdGhpcy4KICAgICAgICAnY2xhc3MtbWV0aG9kcy11c2UtdGhpcyc6ICdvZmYnLAoKICAgICAgICAvLyBBbGxvdyB0aGUgdW5hcnkgb3BlcmF0b3JzICsrIGFuZCAtLS4KICAgICAgICAnbm8tcGx1c3BsdXMnOiAnb2ZmJywKCiAgICAgICAgLy8gQWxsb3cgUmVhc3NpZ25tZW50IG9mIEZ1bmN0aW9uIFBhcmFtZXRlcnMuCiAgICAgICAgJ25vLXBhcmFtLXJlYXNzaWduJzogJ29mZicsCgogICAgICAgIC8vIEFsbG93IHN0cmljdCBtb2RlIGRpcmVjdGl2ZXMuCiAgICAgICAgJ3N0cmljdCc6ICdvZmYnLAoKICAgICAgICAvLyBBbGxvdyB0aGUgdXNlIG9mIGRldiBkZXBlbmRlbmNpZXMuCiAgICAgICAgJ2ltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyc6IFsgJ2Vycm9yJywgeyAnZGV2RGVwZW5kZW5jaWVzJzogdHJ1ZSB9IF0sCgogICAgICAgIC8vIEFsbG93IGNhbGxiYWNrcyBvZiBhcnJheSdzIG1ldGhvZHMgd2l0aG91dCByZXR1cm5zLgogICAgICAgICdhcnJheS1jYWxsYmFjay1yZXR1cm4nOiAnb2ZmJywKCiAgICAgICAgLy8gUmVxdWlyZSBicmFjZXMgaW4gYXJyb3cgZnVuY3Rpb24gYm9keS4KICAgICAgICAnYXJyb3ctYm9keS1zdHlsZSc6IFsgJ2Vycm9yJywgJ2Fsd2F5cycgXSwKCiAgICAgICAgLy8gQWxsb3cgcmVxdWlyZSgpIGFueXdoZXJlIGluIHRoZSBjb2RlLgogICAgICAgICdnbG9iYWwtcmVxdWlyZSc6ICdvZmYnLAoKICAgICAgICAvLyBBbGxvdyB0aGUgdXNlIG9mIGNvbnNvbGUuCiAgICAgICAgJ25vLWNvbnNvbGUnOiAnb2ZmJywKCiAgICAgICAgLy8gRG8gbm90IHJlcXVpcmUgZGVzdHJ1Y3R1cmluZyBmcm9tIGFycmF5cyBhbmQgb2JqZWN0cy4KICAgICAgICAncHJlZmVyLWRlc3RydWN0dXJpbmcnOiBbICdlcnJvcicsIHsgJ2FycmF5JzogZmFsc2UsICdvYmplY3QnOiBmYWxzZSB9IF0sCgogICAgICAgIC8vIEVuZm9yY2UgY29uc2lzdGVudCBsaW5lIGJyZWFrcyBpbnNpZGUgZnVuY3Rpb24gcGFyZW50aGVzZXMuCiAgICAgICAgJ2Z1bmN0aW9uLXBhcmVuLW5ld2xpbmUnOiBbICdlcnJvcicsICdjb25zaXN0ZW50JyBdLAoKICAgICAgICAvLyBSZXF1aXJlZCAoZnVuY3Rpb25zOiBuZXZlcikgc2luY2UgcHJlcHJvY2Vzc29ycyBhcmUgbm90IGhhbmRsZWQgYnkgYmFiZWwuCiAgICAgICAgLy8gIFNlZSBhbHNvOiBodHRwczovL2VzbGludC5vcmcvZG9jcy9ydWxlcy9jb21tYS1kYW5nbGUKICAgICAgICAiY29tbWEtZGFuZ2xlIjogWyJlcnJvciIsIHsKICAgICAgICAgICAgImFycmF5cyI6ICJhbHdheXMtbXVsdGlsaW5lIiwKICAgICAgICAgICAgIm9iamVjdHMiOiAiYWx3YXlzLW11bHRpbGluZSIsCiAgICAgICAgICAgICJpbXBvcnRzIjogImFsd2F5cy1tdWx0aWxpbmUiLAogICAgICAgICAgICAiZXhwb3J0cyI6ICJhbHdheXMtbXVsdGlsaW5lIiwKICAgICAgICAgICAgImZ1bmN0aW9ucyI6ICJuZXZlciIsCiAgICAgICAgfV0sCgogICAgICAgIC8vIERvIG5vdCBmb3JjZSB0aGUgdXNlIG9mIHRoZSBvYmplY3Qgc3ByZWFkIGp1c3QgeWV0ICh0YXJnZXQgRVMyMDE4KS4KICAgICAgICAncHJlZmVyLW9iamVjdC1zcHJlYWQnOiAnb2ZmJywKCiAgICAgICAgLy8gRG8gbm90IGZvcmNlIHBhcmVudGhlc2VzIG9uIGFycm93IGZ1bmN0aW9ucyB3aXRoIHNpbmdsZSBhcmd1bWVudHMuCiAgICAgICAgJ2Fycm93LXBhcmVucyc6ICdvZmYnLAogICAgfSwKfTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6SmF2YVNjcmlwdDo6VnVlOjpFdmVudExpc3RlbmVyczsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpCYXNlKTsKCj1oZWFkMSBERVNDUklQVElPTgoKU1BBcyBhcmUgdmVyeSBzZW5zaXRpdmUgYWJvdXQgbWVtb3J5IGxlYWtzIGNhdXNlZCBieSBpbXByb3Blcmx5IGNsZWFuZWQgdXAgZXZlbnQgaGFuZGxlcnMuCgpUaGlzIGZpbHRlciBwZXJmb3JtcyBhIHJ1ZGltZW50YXJ5IGNoZWNrIGZvciB0aGlzOiBtYWtlIHN1cmUgdGhhdCBldmVudCBoYW5kbGVycyBhcmUgY2xlYW5lZCB1cCwKYW5kIGRvIG5vdCBjb250YWluIGFub255bW91cyBmdW5jdGlvbnMuCgo9Y3V0CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKICAgIHJldHVybiBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDcsIDAgKTsKCiAgICBteSAkRXJyb3JNZXNzYWdlOwoKICAgIG15ICVFdmVudEJhbGFuY2U7CgogICAgIyBXZSBuZWVkIGEgc3ViIHRvIGJlIGFibGUgdG8gcGVyZm9ybSBhbiBlYXJseSByZXR1cm4gaW4gdGhlIHJlZ2V4IGV2YWwgYmxvY2suCiAgICBteSAkQ2hlY2tFdmVudHMgPSBzdWIgewoKICAgICAgICAjIHByaW50ICJMaXN0ZW5lciBmb3VuZDogJDEgJDIgJDMgJDRcbiI7CiAgICAgICAgbXkgJFRhcmdldE9iamVjdCAgICAgPSAkK3tUYXJnZXRPYmplY3R9OwogICAgICAgIG15ICRSZWdpc3RyYXRpb25UeXBlID0gJCt7UmVnaXN0cmF0aW9uVHlwZX07CiAgICAgICAgbXkgJEV2ZW50TmFtZSAgICAgICAgPSAkK3tFdmVudE5hbWV9OwogICAgICAgIG15ICRFdmVudEhhbmRsZXIgICAgID0gJCt7RXZlbnRIYW5kbGVyfTsKCiAgICAgICAgIyBTcGVjaWFsIGhhbmRsaW5nIGZvciBET00gZXZlbnQgbGlzdGVuZXJzLgogICAgICAgIGlmICggJFJlZ2lzdHJhdGlvblR5cGUgZXEgJ2FkZEV2ZW50TGlzdGVuZXInIHx8ICRSZWdpc3RyYXRpb25UeXBlIGVxICdyZW1vdmVFdmVudExpc3RlbmVyJyApIHsKCiAgICAgICAgICAgICMgRXZlbnQgd2hpdGUgbGlzdC4KICAgICAgICAgICAgaWYgKCAkRXZlbnROYW1lIGVxICdiZWZvcmV1bmxvYWQnICkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJFRhcmdldE9iamVjdCAhfiBteyhefFsuXSkod2luZG93fGRvY3VtZW50KX1zbXhnICkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIFNwZWNpYWwgaGFuZGxpbmcgZm9yIFZ1ZSBldmVudCBsaXN0ZW5lcnMuCiAgICAgICAgaWYgKCAkUmVnaXN0cmF0aW9uVHlwZSBlcSAnJG9uJyB8fCAkUmVnaXN0cmF0aW9uVHlwZSBlcSAnJG9mZicgKSB7CgogICAgICAgICAgICAjIElnbm9yZSBldmVudHMgb2YgdGhlIFZ1ZSBhcHBsaWNhdGlvbiBpdHNlbGYuCiAgICAgICAgICAgIGlmICggc3Vic3RyKCAkVGFyZ2V0T2JqZWN0LCAwLCAzICkgZXEgJ3ZtLicgKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJFJlZ2lzdHJhdGlvblR5cGUgZXEgJyRvZmYnIHx8ICRSZWdpc3RyYXRpb25UeXBlIGVxICdyZW1vdmVFdmVudExpc3RlbmVyJyApIHsKICAgICAgICAgICAgJEV2ZW50QmFsYW5jZXskVGFyZ2V0T2JqZWN0fS0+eyRFdmVudE5hbWV9LS07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkRXZlbnRCYWxhbmNleyRUYXJnZXRPYmplY3R9LT57JEV2ZW50TmFtZX0rKzsKICAgICAgICB9CgogICAgICAgIGlmICggJEV2ZW50SGFuZGxlciA9fiBte2Z1bmN0aW9uIHwgPT59ICkgewogICAgICAgICAgICAkRXJyb3JNZXNzYWdlCiAgICAgICAgICAgICAgICAuPSAiVGhlIGV2ZW50IGxpc3RlbmVyIGZvciAnJEV2ZW50TmFtZScgb24gJyRUYXJnZXRPYmplY3QnIG1heSBub3QgY29udGFpbiBhbiBhbm9ueW1vdXMgZnVuY3Rpb24gKGZvdW5kOiAnJEV2ZW50SGFuZGxlcicpLlxuIjsKICAgICAgICB9CgogICAgICAgIHJldHVybjsKICAgIH07CgogICAgIyBGaW5kIGFsbCBldmVudCBsaXN0ZW5lciByZWdpc3RyYXRpb25zIGluIHRoZSBjb2RlLgogICAgJENvZGUgPX4gc3sKICAgICAgICAoPzpefFxzKQogICAgICAgICg/PFRhcmdldE9iamVjdD5bYS16QS1aMC05X1wkLl0rKQogICAgICAgIFsuXQogICAgICAgICg/PFJlZ2lzdHJhdGlvblR5cGU+XCRvbnxcJG9mZnxhZGRFdmVudExpc3RlbmVyfHJlbW92ZUV2ZW50TGlzdGVuZXIpCiAgICAgICAgWyhdCiAgICAgICAgWyciXSg/PEV2ZW50TmFtZT5bXiciXSspWyciXQogICAgICAgIFxzKixccyoKICAgICAgICAoPzxFdmVudEhhbmRsZXI+Lio/KQogICAgICAgICQKICAgIH17CiAgICAgICAgJENoZWNrRXZlbnRzLT4oKTsKICAgICAgICAnJzsKICAgIH1lc214ZzsKCiAgICBmb3IgbXkgJFRhcmdldE9iamVjdCAoIHNvcnQga2V5cyAlRXZlbnRCYWxhbmNlICkgewogICAgICAgIGZvciBteSAkRXZlbnROYW1lICggc29ydCBrZXlzICV7ICRFdmVudEJhbGFuY2V7JFRhcmdldE9iamVjdH0gLy8ge30gfSApIHsKICAgICAgICAgICAgaWYgKCAkRXZlbnRCYWxhbmNleyRUYXJnZXRPYmplY3R9LT57JEV2ZW50TmFtZX0gPiAwICkgewogICAgICAgICAgICAgICAgJEVycm9yTWVzc2FnZQogICAgICAgICAgICAgICAgICAgIC49ICJUaGUgZXZlbnQgbGlzdGVuZXIgZm9yICckRXZlbnROYW1lJyB3YXMgbm90IGFzIG9mdGVuIGFkZGVkIGFzIHJlbW92ZWQgZnJvbSAnJFRhcmdldE9iamVjdCcuXG4iOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIiRFcnJvck1lc3NhZ2UiKTsKICAgIH0KfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6SmF2YVNjcmlwdDo6RmlsZU5hbWU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7Cgp1c2UgcGFyZW50IHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6QmFzZSk7CgpzdWIgdmFsaWRhdGVfZmlsZSB7CiAgICBteSAoICRTZWxmLCAkRmlsZW5hbWUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggRmlsZW5hbWUgPT4gJEZpbGVuYW1lICk7CiAgICByZXR1cm4gaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA2LCAwICk7CgogICAgbXkgJENvZGUgICAgICAgPSAkU2VsZi0+X0dldEZpbGVDb250ZW50cygkRmlsZW5hbWUpOwogICAgbXkgJE5hbWVPZkZpbGUgPSBzdWJzdHIoIGJhc2VuYW1lKCRGaWxlbmFtZSksIDAsIC0zICk7ICAgICMgY3V0IG9mZiAuanMKCiAgICBteSAkQ291bnRlcjsKCiAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCggL1xuLywgJENvZGUgKSApIHsKICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICBpZiAoICRMaW5lID1+IG17XihbXj0gXSspXHMqPVxzKlwoZnVuY3Rpb25ccypcKFRhcmdldE5TXClccypceyB9eG1zICkgewoKICAgICAgICAgICAgaWYgKCAkMSBuZSAkTmFtZU9mRmlsZSAmJiAkTGluZSAhfiBte14vL30gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKVGhlIGZpbGUgbmFtZSAoJE5hbWVPZkZpbGUuanMpIGlzIG5vdCBlcXVhbCB0byB0aGUgbmFtZSBvZiB0aGUgSmF2YVNjcmlwdCBuYW1lc3BhY2UgKCQxKS4KRU9GCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6SmF2YVNjcmlwdDo6RmlsZU5hbWVVbml0VGVzdDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpCYXNlKTsKCnN1YiB2YWxpZGF0ZV9maWxlIHsKICAgIG15ICggJFNlbGYsICRGaWxlbmFtZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBGaWxlbmFtZSA9PiAkRmlsZW5hbWUgKTsKICAgIHJldHVybiBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDYsIDAgKTsKCiAgICBteSAkQ29kZSAgICAgICA9ICRTZWxmLT5fR2V0RmlsZUNvbnRlbnRzKCRGaWxlbmFtZSk7CiAgICBteSAkTmFtZU9mRmlsZSA9IHN1YnN0ciggYmFzZW5hbWUoJEZpbGVuYW1lKSwgMCwgLTMgKTsgICAgIyBjdXQgb2ZmIC5qcwoKICAgIG15ICRDb3VudGVyOwoKICAgIGZvciBteSAkTGluZSAoIHNwbGl0KCAvXG4vLCAkQ29kZSApICkgewogICAgICAgICRDb3VudGVyKys7CgogICAgICAgIGlmICggJExpbmUgPX4gbXteKFtePSBdKylccyo9XHMqXChmdW5jdGlvblxzKlwoTmFtZXNwYWNlXClccypceyB9eG1zICkgewoKICAgICAgICAgICAgaWYgKCAkMSAuICIuVW5pdFRlc3QiIG5lICROYW1lT2ZGaWxlICkgewogICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7ClRoZSBmaWxlIG5hbWUgKCROYW1lT2ZGaWxlLmpzKSBpcyBub3QgY29ycmVjdCBmb3IgdGhlIHVuaXQgdGVzdHMgb2YgdGhlIEphdmFTY3JpcHQgbmFtZXNwYWNlICgkMSkuIE11c3QgYmUgJDEuVW5pdFRlc3QuanMuCkVPRgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybjsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6SmF2YVNjcmlwdDo6VW5sb2FkRXZlbnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6QmFzZSk7CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKICAgIHJldHVybiBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDUsIDAgKTsKCiAgICBteSAkRXJyb3JNZXNzYWdlOwogICAgbXkgJENvdW50ZXI7CgogICAgZm9yIG15ICRMaW5lICggc3BsaXQoIC9cbi8sICRDb2RlICkgKSB7CiAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICBpZiAoICRMaW5lID1+IG17IFwuYmluZFwoWyciXXVubG9hZCB9eG1zIHx8ICRMaW5lID1+IG17IFwub25cKFsnIl11bmxvYWQgfXhtcyApIHsKICAgICAgICAgICAgJEVycm9yTWVzc2FnZQogICAgICAgICAgICAgICAgLj0gIkVSUk9SOiBGb3VuZCB3aW5kb3cgdW5sb2FkIGV2ZW50IGluIGxpbmUoICRDb3VudGVyICk6ICRMaW5lXG4iOwogICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJQbGVhc2UgdXNlIENvcmUuQXBwLkJpbmRXaW5kb3dVbmxvYWRFdmVudCgpIGZvciBjcm9zcy1icm93c2VyIGNvbXBhdGliaWxpdHkuXG4iOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCIkRXJyb3JNZXNzYWdlIik7CiAgICB9Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TGVnYWw6OkFkZHJlc3NVcGRhdGU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6QmFzZSk7CgpzdWIgdHJhbnNmb3JtX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CgogICAgJENvZGUgPX4gc3tOb3Jzay1EYXRhLVN0clwuXHMrMX17WmltbWVyc23DvGhsZW53ZWcgMTF9c214ZzsKICAgICRDb2RlID1+IHN7NjEzNTJccytCYWRccytIb21idXJnfXs2MTQ0MCBPYmVydXJzZWx9c214ZzsKCiAgICByZXR1cm4gJENvZGU7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TGVnYWw6OkxpY2Vuc2VWYWxpZGF0b3I7CiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6Q29tbW9uOjpDdXN0b21pemF0aW9uTWFya2VycykKIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpMZWdhbDo6TGljZW5zZVZhbGlkYXRvcikKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpCYXNlKTsKCnN1YiB0cmFuc2Zvcm1fc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICAjIFJlcGxhY2UgdGhpcyBsaWNlbnNlIGxpbmUuLi4KICAgICMKICAgICMgT3JpZ2luYWw6CiAgICAjICAgICBBRkZFUk8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoQUdQTCkKICAgICMKICAgICMgUmVwbGFjZW1lbnQ6CiAgICAjICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRSAoR1BMKQogICAgIwogICAgJENvZGUgPX4gc3tBRkZFUk8gXHMrIEdlbmVyYWwgXHMrIFB1YmxpYyBccysgTGljZW5zZSBccysgXChBR1BMXCl9e0dOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFIChHUEwpfXhtc2dpOwoKICAgICMgUmVwbGFjZSB0aGlzIGxpY2Vuc2UgbGluZS4uLgogICAgIwogICAgIyBPcmlnaW5hbDoKICAgICMgICAgIEdOVSBBRkZFUk8gR0VORVJBTCBQVUJMSUMgTElDRU5TRQogICAgIyAgICAgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAgICAjCiAgICAjIFJlcGxhY2VtZW50OgogICAgIyAgICAgR05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKICAgICMKICAgICRDb2RlID1+IHN7R05VIFxzKyBBRkZFUk8gXHMrIEdFTkVSQUwgXHMrIFBVQkxJQyBccysgTElDRU5TRX17R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0V9eG1zZ2k7CgogICAgIyBSZXBsYWNlIHRoaXMgbGljZW5zZSBsaW5lIGluIC54bWwgZmlsZXMuCiAgICAjCiAgICAjIE9yaWdpbmFsOgogICAgIyAgICAgPExpY2Vuc2U+R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UgVmVyc2lvbiAzLCBOb3ZlbWJlciAyMDA3PC9MaWNlbnNlPgogICAgIyAgICAgPExpY2Vuc2U+R05VIEFGRkVSTyBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFIFZlcnNpb24gMywgTm92ZW1iZXIgMjAwNzwvTGljZW5zZT4KICAgICMKICAgICMgUmVwbGFjZW1lbnQ6CiAgICAjICAgICA8TGljZW5zZT5HTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRSBWZXJzaW9uIDMsIDI5IEp1bmUgMjAwNzwvTGljZW5zZT4KICAgICMKICAgICRDb2RlCiAgICAgICAgPX4gc3sgXiAoIFxzKiApIFw8IExpY2Vuc2UgXD4gLis/IFw8IFwvIExpY2Vuc2UgXD4gfXskMTxMaWNlbnNlPkdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFIFZlcnNpb24gMywgMjkgSnVuZSAyMDA3PC9MaWNlbnNlPn14bXNnOwoKICAgICMgUmVwbGFjZSB0aGlzIGxpY2Vuc2UgbGluZSBpbiAucG0gLnBsIC50dCBhbmQgLmpzIGZpbGVzLgogICAgIwogICAgIyBPcmlnaW5hbDoKICAgICMgICAgIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKICAgICMKICAgICMgUmVwbGFjZW1lbnQ6CiAgICAjICAgICB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKICAgICMKICAgICRDb2RlID1+IHN7CiAgICAgICAgXiAoICg/OiBcIyBccysgfCBcL1wvIFxzKyB8ICApICkgdGhlIFsgXHMgXHcgXSsgQ09QWUlORyBbIFxzIFx3IF0rIFwoQUdQTFwpIFwuIFsgXHMgXHcgXSsgeW91CiAgICB9eyQxdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91fXhtc2c7CgogICAgIyBSZXBsYWNlIHRoaXMgbGljZW5zZSBsaW5lIGluIC5wbSAucGwgLnR0IGFuZCAuanMgZmlsZXMuCiAgICAjCiAgICAjIE9yaWdpbmFsOgogICAgIyAgICAgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLnR4dC4KICAgICMgICAgIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC50eHQuCiAgICAjICAgICBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC50eHQ+LgogICAgIyAgICAgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dD4uCiAgICAjCiAgICAjIFJlcGxhY2VtZW50OgogICAgIyAgICAgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQuCiAgICAjCiAgICAkQ29kZSA9fiBzewogICAgICAgIF4gKCAoPzogXCMgXHMrIHwgXC9cLyBccysgfCAgKSApIGRpZCBbIFxzIFx3IF0rIFwsIFxzKyBzZWUgKD86IDogfCAgKSBccysgKD86IEw8IHwgICkgaHR0cCAoPzogcyB8ICApIDpcL1wvd3d3XC5nbnVcLm9yZ1wvbGljZW5zZXNcLyAoPzogYSB8ICApIGdwbCAoPzogLTJcLjAgfCAgKSBcLnR4dCAoPzogPiB8ICApIFwuCiAgICB9eyQxZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQufXhtc2c7CgogICAgIyBXZSBhcmUgdXNpbmcgInVzZSB3YXJuaW5nczsiIGFzIGluZGljYXRvciBmb3IgYSAucG0gb3IgLnBsIGZpbGUgYmVjYXVzZSB3ZSBoYXZlIG5vIGFjY2VzcyB0byBmaWxldHlwZSBoZXJlLgogICAgaWYgKCAkQ29kZSA9fiBteyBeIFxzKiB1c2UgXHMrIHdhcm5pbmdzXDsgXHMqICQgfXNteCApIHsKCiAgICAgICAgIyBSZXBsYWNlIHRoaXMgbGljZW5zZSBsaW5lIGluIC5wbSAucGwgLnQgKHBlcmxkb2MpIGZpbGVzLgogICAgICAgICMKICAgICAgICAjIE9yaWdpbmFsOgogICAgICAgICMgICAgIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC50eHQuCiAgICAgICAgIyAgICAgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLnR4dC4KICAgICAgICAjICAgICBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC50eHQ+LgogICAgICAgICMgICAgIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiAgICAgICAgIyAgICAgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0Pi4KICAgICAgICAjCiAgICAgICAgIyBSZXBsYWNlbWVudDoKICAgICAgICAjICAgICBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KICAgICAgICAjCiAgICAgICAgJENvZGUgPX4gc3sKICAgICAgICAgICAgXiBkaWQgWyBccyBcdyBdKyBcLCBccysgc2VlICg/OiA6IHwgICkgXHMrICg/OiBMPCB8IDwgfCAgKSBodHRwICg/OiBzIHwgICkgOlwvXC93d3dcLmdudVwub3JnXC9saWNlbnNlc1wvICg/OiBhIHwgICkgZ3BsICg/OiAtM1wuMCB8IC0yXC4wIHwgICkgXC50eHQgKD86ID4gfCA+IHwgICkgXC4KICAgICAgICB9e2RpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+Ln14bXNnOwogICAgfQoKICAgIG15ICRHUExDc3MgPSBfR1BMQ3NzKCk7CgogICAgIyBSZXBsYWNlIHRoZSBvbGQgY3NzIGxpY2Vuc2Ugd2l0aCB0aGUgbmV3IG9uZS4KICAgICMKICAgICMgT3JpZ2luYWw6CiAgICAjICAgICAvKioKICAgICMgICAgICAqIEBwcm9qZWN0ICAgICBPVFJTIChodHRwOi8vd3d3Lm90cnMub3JnKSAtIEFnZW50IEZyb250ZW5kCiAgICAjICAgICAgKiBAY29weXJpZ2h0ICAgT1RSUyBBRwogICAgIyAgICAgICogQGxpY2Vuc2UgICAgIEFHUEwgKGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dCkKICAgICMgICAgICAqLwogICAgIwogICAgIyBSZXBsYWNlbWVudDoKICAgICMgICAgIC8qCiAgICAjICAgICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwogICAgIwogICAgIyAgICAgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKICAgICMgICAgIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQogICAgIyAgICAgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQuCiAgICAjICAgICAqLwogICAgIwogICAgJENvZGUKICAgICAgICA9fiBzeyBcQSBccyogXC8gXCorIFxuICg/OiB8ICggXHMqIFwqICggXHMqIC4qPyApKj8gKSs/ICkgXHMqIFwqIFxzKyBcQHByb2plY3QgLis/IFxuIFxzKiBcKiBccysgXEBjb3B5cmlnaHQgLis/IFxuIFxzKiBcKiBccysgXEBsaWNlbnNlIC4rPyBcbiBccyogXCogXC8gXG4rIH17LypcbkNvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vXG4kR1BMQ3NzXG59eG1zZzsKCiAgICAjIFJlcGFpciB0aGUgbGljZW5zZSBoZWFkZXIgd2l0aCB0d28gc3RhcnMgYXQgdGhlIGJlZ2lubmluZy4KICAgICMKICAgICMgT3JpZ2luYWw6CiAgICAjICAgICAvKioKICAgICMgICAgIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiAgICAjCiAgICAjICAgICBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQogICAgIyAgICAgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CiAgICAjICAgICBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KICAgICMgICAgICovCiAgICAjCiAgICAjIFJlcGxhY2VtZW50OgogICAgIyAgICAgLyoKICAgICMgICAgIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiAgICAjCiAgICAjICAgICBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQogICAgIyAgICAgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CiAgICAjICAgICBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KICAgICMgICAgICovCiAgICAjCiAgICAkQ29kZQogICAgICAgID1+IHN7IFxBIFwvIFwqKyBccyogXG4gQ29weXJpZ2h0IC4rPyBcblxuIFRoaXMgLis/IFxuIHRoZSAuKz8gXG4gZGlkIC4rPyB0eHRcLiBcbiBcKiBcLyBcbisgfXsvKlxuQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS9cbiRHUExDc3Ncbn14bXNnOwoKICAgICMgUmVwYWlyIHRoZSBsaWNlbnNlIGhlYWRlciB3aXRoIC8qLyogYXQgdGhlIGJlZ2lubmluZy4KICAgICMKICAgICMgT3JpZ2luYWw6CiAgICAjICAgICAvKi8qCiAgICAjICAgICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwogICAgIwogICAgIyAgICAgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKICAgICMgICAgIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQogICAgIyAgICAgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQuCiAgICAjICAgICAqLwogICAgIwogICAgIyBSZXBsYWNlbWVudDoKICAgICMgICAgIC8qCiAgICAjICAgICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwogICAgIwogICAgIyAgICAgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKICAgICMgICAgIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQogICAgIyAgICAgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQuCiAgICAjICAgICAqLwogICAgIwogICAgJENvZGUKICAgICAgICA9fiBzeyBcQSBcLyBcKiBcLyBcKiBccyogXG4gQ29weXJpZ2h0IC4rPyBcblxuIFRoaXMgLis/IFxuIHRoZSAuKz8gXG4gZGlkIC4rPyB0eHRcLiBcbiBcKiBcLyBcbisgfXsvKlxuQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS9cbiRHUExDc3Ncbn14bXNnOwoKICAgICMgRGVmaW5lIG9sZCBhbmQgbmV3IEZTRiBGU0YgTWFpbGluZyBBZGRyZXNzZXMuCiAgICBteSAkT2xkRlNGQWRkcmVzcyA9ICc1OSBccysgVGVtcGxlIFxzKyBQbGFjZSwgXHMrIFN1aXRlIFxzKyAzMzAsIFxzKyBCb3N0b24sIFxzKyBNQSBccysgMDIxMTEtMTMwNyBccysgVVNBJzsKICAgIG15ICROZXdGU0ZBZGRyZXNzID0gJzUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQSc7CgogICAgIyBSZXBsYWNlIEZTRiBNYWlsaW5nIEFkZHJlc3MuCiAgICAkQ29kZSA9fiBzeyRPbGRGU0ZBZGRyZXNzfXskTmV3RlNGQWRkcmVzc314bXNnOwoKICAgIG15ICRHUExQZXJsU2NyaXB0ID0gX0dQTFBlcmxTY3JpcHQoKTsKCiAgICAjIFJlcGxhY2UgdGhlIGxpY2Vuc2UgaGVhZGVyIGluIC5wbCBmaWxlcy4KICAgICRDb2RlID1+IHN7CiAgICAgICAgXCMgXHMrIC0tIFxuCiAgICAgICAgXCMgXHMrIFRoaXMgXHMrIHByb2dyYW0gXHMrIGlzIFxzKyBmcmVlIFxzKyBzb2Z0d2FyZTsgXHMrIFsgXHMgXHcgXCwgXC4gXDsgXCMgXC8gXCggXCkgXSsKICAgICAgICA1MSBccysgRnJhbmtsaW4gXHMrIFN0LCBccysgRmlmdGggXHMrIEZsb29yLCBccysgQm9zdG9uLCBccysgTUEgXHMrIDAyMTEwLTEzMDEgXHMrIFVTQSAuKj8KICAgICAgICBcIyBccysgLS0gXG4KICAgIH17JEdQTFBlcmxTY3JpcHR9eG1zZzsKCiAgICBpZiAoICEkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDcsIDAgKSApIHsKCiAgICAgICAgIyBSZW1vdmUgZHVwbGljYXRlZCBsaWNlbnNlIGluZm9ybWF0aW9uIGluIFBlcmxkb2MuIFRoZSBsaWNlbnNlIGNvbW1lbnQgYXQgdGhlIHN0YXJ0IG9mIGZpbGVzIGlzIGVub3VnaC4KICAgICAgICAkQ29kZSA9fiBze1xuIF49aGVhZDEgXHMrIFRFUk1TIFxzKyBBTkQgXHMrIENPTkRJVElPTlMgLio/IF49Y3V0XG4/fXt9c214OwogICAgfQoKICAgIHJldHVybiAkQ29kZTsKfQoKc3ViIHZhbGlkYXRlX2ZpbGUgewogICAgbXkgKCAkU2VsZiwgJEZpbGVuYW1lICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIEZpbGVuYW1lID0+ICRGaWxlbmFtZSApOwoKICAgIG15ICRDb2RlID0gJFNlbGYtPl9HZXRGaWxlQ29udGVudHMoJEZpbGVuYW1lKTsKCiAgICBteSAoJEZpbGV0eXBlKSA9ICRGaWxlbmFtZSA9fiBteyAuKiBcLiAoIC4rICkgfXhtc2k7CiAgICAkRmlsZXR5cGUgfHw9ICcnOwoKICAgIGlmICggJEZpbGV0eXBlIGVxICdza2VsJyApIHsKICAgICAgICAoJEZpbGV0eXBlKSA9ICRGaWxlbmFtZSA9fiBteyAuKiBcLiAoIC4rICkgXC5za2VsIH14bXNpOwogICAgfQoKICAgICMgQ2hlY2sgYSBqYXZhc2NyaXB0IGxpY2Vuc2UgaGVhZGVyLgogICAgaWYgKCBsYyAkRmlsZXR5cGUgZXEgJ2pzJyApIHsKCiAgICAgICAgbXkgJEdQTEphdmFTY3JpcHQgPSBfR1BMSmF2YVNjcmlwdCgpOwoKICAgICAgICBpZiAoICRDb2RlICF+IG17XFEkR1BMSmF2YVNjcmlwdFxFfSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIkZvdW5kIG5vIHZhbGlkIGphdmFzY3JpcHQgbGljZW5zZSBoZWFkZXIhIik7CiAgICAgICAgfQogICAgfQoKICAgICMgQ2hlY2sgYSBwZXJsIHNjcmlwdCBsaWNlbnNlIGhlYWRlci4KICAgIGVsc2lmICggbGMgJEZpbGV0eXBlIGVxICdwbCcgfHwgbGMgJEZpbGV0eXBlIGVxICdwc2dpJyB8fCBsYyAkRmlsZXR5cGUgZXEgJ3NoJyApIHsKCiAgICAgICAgbXkgJEdQTFBlcmxTY3JpcHQgPSBfR1BMUGVybFNjcmlwdCgpOwoKICAgICAgICBpZiAoICRDb2RlICF+IG17XFEkR1BMUGVybFNjcmlwdFxFfSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIkZvdW5kIG5vIHZhbGlkIHBlcmwgc2NyaXB0IGxpY2Vuc2UgaGVhZGVyISIpOwogICAgICAgIH0KICAgIH0KCiAgICAjIENoZWNrIGNzcyBsaWNlbnNlIGhlYWRlci4KICAgIGVsc2lmICggbGMgJEZpbGV0eXBlIGVxICdjc3MnIHx8IGxjICRGaWxldHlwZSBlcSAnc2NzcycgKSB7CgogICAgICAgIG15ICRHUExDc3MgPSBfR1BMQ3NzKCk7CgogICAgICAgIGlmICggJENvZGUgIX4gbXtcUSRHUExDc3NcRX0gKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCJGb3VuZCBubyB2YWxpZCBjc3MgbGljZW5zZSBoZWFkZXIhIik7CiAgICAgICAgfQogICAgfQoKICAgICMgQ2hlY2sgdnVlIGxpY2Vuc2UgaGVhZGVyLgogICAgZWxzaWYgKCBsYyAkRmlsZXR5cGUgZXEgJ3Z1ZScgKSB7CgogICAgICAgIG15ICRHUExWdWUgPSBfR1BMVnVlKCk7CgogICAgICAgIGlmICggJENvZGUgIX4gbXtcUSRHUExWdWVcRX0gKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCJGb3VuZCBubyB2YWxpZCB2dWUgbGljZW5zZSBoZWFkZXIhIik7CiAgICAgICAgfQogICAgfQoKICAgICMgQ2hlY2sgeG1sIGxpY2Vuc2UgdGFnLgogICAgZWxzaWYgKCBsYyAkRmlsZXR5cGUgZXEgJ3htbCcgKSB7CgogICAgICAgICMgRG8gbm90IHZhbGlkYXRlIFhNTCBmaWxlcywgYmVjYXVzZSB0aGVyZSBhIHNvIG1hbnkgZGlmZmVyZW50IGNvbnRlbnQgKGNvbmZpZyBYTUwsIGRvY3VtZW50YXRpb24gWE1MLCAuLi4pCiAgICB9CgogICAgIyBDaGVjayBvcG0gYW5kIHNvcG0gbGljZW5zZSB0YWcuCiAgICBlbHNpZiAoIGxjICRGaWxldHlwZSBlcSAnc29wbScgfHwgbGMgJEZpbGV0eXBlIGVxICdvcG0nICkgewoKICAgICAgICBteSAkR1BMT1BNID0gX0dQTE9QTSgpOwoKICAgICAgICBpZiAoICRDb2RlICF+IG17XFEkR1BMT1BNXEV9ICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiRm91bmQgbm8gdmFsaWQgT1BNIGxpY2Vuc2UgaGVhZGVyISIpOwogICAgICAgIH0KICAgIH0KCiAgICAjIENoZWNrIGdlbmVyaWMgbGljZW5zZSBoZWFkZXIuCiAgICBlbHNlIHsKCiAgICAgICAgbXkgJEdQTEdlbmVyaWMgPSBfR1BMR2VuZXJpYygpOwoKICAgICAgICBpZiAoICRDb2RlICF+IG17XFEkR1BMR2VuZXJpY1xFfSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIkZvdW5kIG5vIHZhbGlkIGxpY2Vuc2UgaGVhZGVyISIpOwogICAgICAgIH0KICAgIH0KCiAgICAjIENoZWNrIHBlcmxkb2MgbGljZW5zZSBoZWFkZXIuCiAgICBpZiAoIGxjICRGaWxldHlwZSBlcSAncGwnIHx8IGxjICRGaWxldHlwZSBlcSAncG0nICkgewoKICAgICAgICBpZiAoICRDb2RlID1+IG17ID1oZWFkMSBccysgVEVSTVMgXHMrIEFORCBccysgQ09ORElUSU9OUyBcbisgVGhpcyBccysgc29mdHdhcmUgXHMrIGlzIFxzKyBwYXJ0IH1zbXggKSB7CgogICAgICAgICAgICBteSAkR1BMUGVybGRvYyA9IF9HUExQZXJsZG9jKCk7CgogICAgICAgICAgICBpZiAoICRDb2RlICF+IG17XFEkR1BMUGVybGRvY1xFfSApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCJGb3VuZCBubyB2YWxpZCBwZXJsZG9jIGxpY2Vuc2UgaGVhZGVyISIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgQ2hlY2sgaWYgdGhlcmUgaXMgYW90aGVyIHN0cmFuZ2UgQUdQTCBsaWNlbnNlIGNvbnRlbnQuCiAgICBpZiAoICRDb2RlID1+IG17KF4gW15cbl0qICg/OiBcKEFHUExcKSB8IC9hZ3BsIHwgQUZGRVJPICkgW15cbl0qICQpfXNteCApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiVGhlcmUgaXMgc3RyYW5nZSBsaWNlbnNlIHdvcmRpbmchXG5MaW5lOiAkMSIpOwogICAgfQp9CgpzdWIgX0dQTFBlcmxTY3JpcHQgewogICAgcmV0dXJuIDw8J0VORF9HUExQRVJMU0NSSVBUJzsKIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCkVORF9HUExQRVJMU0NSSVBUCgp9CgpzdWIgX0dQTEphdmFTY3JpcHQgewogICAgcmV0dXJuIDw8J0VORF9HUExKQVZBU0NSSVBUJzsKLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgovLyAtLQpFTkRfR1BMSkFWQVNDUklQVAp9CgpzdWIgX0dQTENzcyB7CiAgICByZXR1cm4gPDwnRU5EX0dQTENTUyc7CgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQuCiovCkVORF9HUExDU1MKfQoKc3ViIF9HUExWdWUgewogICAgcmV0dXJuIDw8J0VORF9HUExWVUUnOwoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgotLT4KRU5EX0dQTFZVRQp9CgpzdWIgX0dQTE9QTSB7CiAgICByZXR1cm4gJzxMaWNlbnNlPkdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFIFZlcnNpb24gMywgMjkgSnVuZSAyMDA3PC9MaWNlbnNlPic7Cn0KCnN1YiBfR1BMR2VuZXJpYyB7CiAgICByZXR1cm4gPDwnRU5EX0dQTEdFTkVSSUMnOwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQpFTkRfR1BMR0VORVJJQwp9CgpzdWIgX0dQTFBlcmxkb2MgewogICAgcmV0dXJuIDw8J0VORF9HUExQRVJMRE9DJzsKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgpFTkRfR1BMUEVSTERPQwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TGVnYWw6OlJlcGxhY2VDb3B5cmlnaHQ7CiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6VGltZSkKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKdXNlIEZpbGU6OkNvcHkgcXcoY29weSk7CnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpCYXNlKTsKCnN1YiB0cmFuc2Zvcm1fc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICAjIERvbid0IHJlcGxhY2UgY29weXJpZ2h0IGluIHRoaXJkcGFydHkgY29kZS4KICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNUaGlyZHBhcnR5TW9kdWxlKCk7CgogICAgIyBSZXBsYWNlIDxVUkw+aHR0cDovL290cnMub3JnLzwvVVJMPiB3aXRoIDxVUkw+aHR0cHM6Ly9vdHJzLmNvbS88L1VSTD4KICAgICRDb2RlID1+IHN7IF4gKCBccyogKSBcPCBVUkwgXD4gLis/IFw8IFwvIFVSTCBcPiB9eyQxPFVSTD5odHRwczovL290cnMuY29tLzwvVVJMPn14bXNnOwoKICAgIG15ICRDb3B5ID0gJ09UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vJzsKCiAgICBteSAoICRTZWMsICRNaW4sICRIb3VyLCAkRGF5LCAkTW9udGgsICRZZWFyICkgPSBsb2NhbHRpbWUoIHRpbWUoKSApOyAgICAjIyBubyBjcml0aWMKICAgICRZZWFyICs9IDE5MDA7CgogICAgbXkgJFllYXJTdHJpbmcgPSAiMjAwMS0kWWVhciI7CgogICAgbXkgJE91dHB1dCA9ICcnOwoKICAgIExJTkU6CiAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCggL1xuLywgJENvZGUgKSApIHsKCiAgICAgICAgIyBuZXh0IGxpbmUgaWYgQ29weXJpZ2h0IHN0cmluZyBpcyBub3QgZm91bmQKICAgICAgICBpZiAoICRMaW5lICF+IG17Q29weXJpZ2h0fXNteCApIHsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGluZSAuICJcbiI7CiAgICAgICAgICAgIG5leHQgTElORTsKICAgICAgICB9CgogICAgICAgICMgc3BlY2lhbCBzZXR0aW5ncyBmb3IgdGhlIGxhbmd1YWdlIGRpcmVjdG9yeQogICAgICAgIGlmICggJExpbmUgIX4gbXtPVFJTfXNteCAmJiAkQ29kZSA9fiBteyBwYWNrYWdlIFxzKyBLZXJuZWw6Okxhbmd1YWdlOjogfXNteCApIHsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGluZSAuICJcbiI7CiAgICAgICAgICAgIG5leHQgTElORTsKICAgICAgICB9CgogICAgICAgICMgUE9EIGNvcHlyaWdodCBzdGF0ZW1lbnRzLgogICAgICAgIGlmICggJExpbmUgPX4gbXsgXlwjIFxzIENvcHlyaWdodCB9c214ICkgewogICAgICAgICAgICAkTGluZSA9ICIjIENvcHlyaWdodCAoQykgJFllYXJTdHJpbmcgJENvcHkiOwogICAgICAgIH0KCiAgICAgICAgIyBDaGVjayBzdHJpbmcgaW4gZG9jdW1lbnRhdGlvbi55bWwgZmlsZXMKICAgICAgICBlbHNpZiAoICRMaW5lID1+IG17XkNvcHlyaWdodDogXHMrIC4qIE9UUlNbIF1BR31zbXggKSB7CiAgICAgICAgICAgICRMaW5lID0gIkNvcHlyaWdodDogJFllYXJTdHJpbmcgJENvcHkiOwogICAgICAgIH0KCiAgICAgICAgIyBBbnkgb3RoZXIgZ2VuZXJpYyBjb3B5cmlnaHQgc3RhdGVtZW50cywgZS5nIDoKICAgICAgICAjICAgcHJpbnQgIkNvcHlyaWdodCAoYykgMjAwMy0yMDA4IE9UUlMgQUcsIGh0dHA6Ly93d3cub3Rycy5jb20vXG4iOwogICAgICAgIGVsc2lmICgKICAgICAgICAgICAgJExpbmUKICAgICAgICAgICAgPX4gbXsgXiAoIFteXG5dKiApIENvcHlyaWdodCBbIF0rIFwoIFtDY10gXCkgLis/IE9UUlMgWyBdKyAoPzogQUcgfCBHbWJIICksIFsgXSsgaHR0cCAoPzogcyB8ICApIDpcL1wvb3Ryc1wuICg/OiBvcmcgfCBjb20gKSBcLz8gfXNteAogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkTGluZSA9fiBzewogICAgICAgICAgICAgICAgICAgIF4gKCBbXlxuXSogKSBDb3B5cmlnaHQgWyBdKyBcKCBbQ2NdIFwpIC4rPyBPVFJTIFsgXSsgKD86IEFHIHwgR21iSCApLCBbIF0rIGh0dHAgKD86IHMgfCAgKSA6XC9cL290cnNcLiAoPzogb3JnIHwgY29tICkgXC8/CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB7JDFDb3B5cmlnaHQgKEMpICRZZWFyU3RyaW5nICRDb3B5fXNteDsKICAgICAgICB9CgogICAgICAgICRPdXRwdXQgLj0gJExpbmUgLiAiXG4iOwogICAgfQoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TGVnYWw6OlNPUE1MaWNlbnNlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UpOwoKc3ViIHRyYW5zZm9ybV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgICMgUmVwbGFjZSBsaWNlbnNlIHdpdGggR1BMMwogICAgJENvZGUKICAgICAgICA9fiBzezxMaWNlbnNlPiAuKj8gPC9MaWNlbnNlPn17PExpY2Vuc2U+R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UgVmVyc2lvbiAzLCAyOSBKdW5lIDIwMDc8L0xpY2Vuc2U+fWdzbXg7CgogICAgcmV0dXJuICRDb2RlOwp9CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKICAgIHJldHVybiBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDIsIDQgKTsKCiAgICBpZiAoICRDb2RlICF+IG17PExpY2Vuc2U+IC4rPyA8L0xpY2Vuc2U+fXNteCApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiQ291bGQgbm90IGZpbmQgYSB2YWxpZCBPUE0gbGljZW5zZSBoZWFkZXIuIik7CiAgICB9CgogICAgaWYgKAogICAgICAgICRDb2RlCiAgICAgICAgIX4gbXs8TGljZW5zZT5HTlUgXHMgR0VORVJBTCBccyBQVUJMSUMgXHMgTElDRU5TRSBccyBWZXJzaW9uIFxzIDMsIFxzIDI5IFxzIEp1bmUgXHMgMjAwNzwvTGljZW5zZT59c214CiAgICAgICAgKQogICAgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwpJbnZhbGlkIGxpY2Vuc2UgZm91bmQuClVzZSA8TGljZW5zZT5HTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRSBWZXJzaW9uIDMsIDI5IEp1bmUgMjAwNzwvTGljZW5zZT4uCkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TWlncmF0aW9uczo6T1RSUzU6OkhlYWRlcmxpbmVGaWxlbmFtZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpCYXNlKTsKCj1oZWFkMSBTWU5PUFNJUwoKT1RSUyB1c2VkIHRvIGhhdmUgdGhlIGZpbGVuYW1lIGluIHRoZSBzZWNvbmQgbGluZSBvZiBldmVyeSBmaWxlOwpkcm9wIHRoaXMgd2l0aCBPVFJTIDUuCgo9Y3V0CgpzdWIgdHJhbnNmb3JtX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA1LCAwICk7CiAgICByZXR1cm4gJENvZGUgaWYgISRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggNiwgMCApOwoKICAgICMgQ2F0Y2ggUGVybCBhbmQgSlMgY29tZW50cwogICAgbXkgJENvbW1lbnRTdGFydCA9ICIoPzpcXCN8Ly8pIjsKCiAgICAkQ29kZSA9fiBzewogICAgICAgICgKICAgICAgICAgICAgXEEKICAgICAgICAgICAgKD86ICRDb21tZW50U3RhcnQhW15cbl0rXG4gKT8gICAgICAgICAgICAgICAgICAgIyBzaGViYW5nIGxpbmUKICAgICAgICAgICAgJENvbW1lbnRTdGFydFsgXS0tXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzZXBhcmF0b3IKICAgICAgICApCiAgICAgICAgICAgICg/OiAkQ29tbWVudFN0YXJ0IFxzKyAoPyFDb3B5cmlnaHQpW15cbl0rXG4gKSsgICMgT2xkIGRvY3VtZW50YXRpb24gaGVhZGVyIGxpbmVzIHRvIGJlIHJlbW92ZWQKICAgICAgICAoCiAgICAgICAgICAgICg/OiAkQ29tbWVudFN0YXJ0IFxzKyBDb3B5cmlnaHRbXlxuXStcbiApKyAgICAgICMgY29weXJpZ2h0CiAgICAgICAgICAgICRDb21tZW50U3RhcnRbIF0tLVxuICAgICAgICAgICMgc2VwYXJhdG9yCiAgICAgICAgKQogICAgfQogICAgeyQxJDJ9aXNteDsKCiAgICByZXR1cm4gJENvZGU7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TWlncmF0aW9uczo6T1RSUzU6Ok91dHB1dEZpbHRlclByZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CiAgICByZXR1cm4gaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA1LCAwICk7CiAgICByZXR1cm4gaWYgISRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggNiwgMCApOwoKICAgIG15IEBJbnZhbGlkU2V0dGluZ3M7CgogICAgJENvZGUgPX4gc3sKICAgICAgICAoPENvbmZpZ0l0ZW1ccypOYW1lPSJGcm9udGVuZDo6T3V0cHV0OjpGaWx0ZXJFbGVtZW50UHJlLio/PikKICAgIH17CiAgICAgICAgcHVzaCBASW52YWxpZFNldHRpbmdzLCAkMTsKICAgIH1zbXhnZTsKCiAgICBteSAkRXJyb3JNZXNzYWdlOwoKICAgIGlmIChASW52YWxpZFNldHRpbmdzKSB7CiAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiUHJlIG91dHB1dCBmaWx0ZXJzIGFyZSBub3Qgc3VwcG9ydGVkIGluIE9UUlMgNSsuXG4iOwogICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIldyb25nIHNldHRpbmdzIGZvdW5kOiAiIC4gam9pbiggJywgJywgQEludmFsaWRTZXR0aW5ncyApIC4gIlxuIjsKICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCIkRXJyb3JNZXNzYWdlIik7CiAgICB9Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TWlncmF0aW9uczo6T1RSUzU6OlBvcHVwOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CiAgICByZXR1cm4gaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA1LCAwICk7CiAgICByZXR1cm4gaWYgISRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggNiwgMCApOwoKICAgIG15ICggJENvdW50ZXIsICRFcnJvck1lc3NhZ2UgKTsKCiAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCAvXG4vLCAkQ29kZSApIHsKICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAjIGxvb2sgZm9yIGZvcmJpZGRlbiB0ZXh0IGluIHBvcHVwIGhlYWRlcgogICAgICAgICMgdGV4dCBzaG91bGQgYmUgImNhbmNlbCAmIGNsb3NlIiBvciAidW5kbyAmIGNsb3NlIgogICAgICAgICMgYnV0IG5vdCAieHl6ICYgY2xvc2Ugd2luZG93IiBhbnltb3JlCiAgICAgICAgaWYgKCAkTGluZSA9fiBte1xbJSBUcmFuc2xhdGVcKCIoVW5kbyAmIGNsb3NlIHdpbmRvd3xDYW5jZWwgJiBjbG9zZSB3aW5kb3d8Q2xvc2Ugd2luZG93KX1zbWkgKSB7CiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIkxpbmUgJENvdW50ZXI6ICRMaW5lXG4iOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwpQb3B1cCBjbG9zZSBub3RpY2Ugc2hvdWxkIG5vdCBjb250YWluIHRoZSB3b3JkICJ3aW5kb3ciLgokRXJyb3JNZXNzYWdlCkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TWlncmF0aW9uczo6T1RSUzU6OlN0YXRpc3RpY3NQcmV2aWV3OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CiAgICByZXR1cm4gaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA1LCAwICk7CiAgICByZXR1cm4gaWYgISRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggNiwgMCApOwoKICAgIGlmICggJENvZGUgIX4gbXtec3ViXHNHZXRTdGF0KFRhYmxlfEVsZW1lbnQpUHJldmlld31zbXggKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7ClRoZSBuZXcgc3RhdGlzdGljcyBHVUkgcHJvdmlkZXMgYSBwcmV2aWV3IGZvciB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLiBUaGlzIG11c3QgYmUgaW1wbGVtZW50ZWQKaW4gdGhlIHN0YXRpc3RpYyBtb2R1bGVzIGFuZCB1c3VhbGx5IHJldHVybnMgZmFrZSAvIHJhbmRvbSBkYXRhIGZvciBzcGVlZCByZWFzb25zLiBTbyBmb3IgYW55CmR5bmFtaWMgKG1hdHJpeCkgc3RhdGlzdGljIHRoYXQgcHJvdmlkZXMgdGhlIG1ldGhvZCBHZXRTdGF0RWxlbWVudCgpIHlvdSBzaG91bGQgYWxzbyBhZGQgYSBtZXRob2QKR2V0U3RhdEVsZW1lbnRQcmV2aWV3KCksIGFuZCBmb3IgZXZlcnkgZHluYW1pYyAodGFibGUpIHN0YXRpc3RpYyB0aGF0IHByb3ZpZGVzCkdldFN0YXRUYWJsZSgpIHlvdSBzaG91bGQgYWNjb3JkaW5nbHkgYWRkIEdldFN0YXRUYWJsZVByZXZpZXcoKSBPdGhlcndpc2UKdGhlIHByZXZpZXcgaW4gdGhlIG5ldyBzdGF0aXN0aWNzIEdVSSB3aWxsIG5vdCB3b3JrIGZvciB5b3VyIHN0YXRpc3RpY3MuIFlvdSBjYW4gZmluZCBleGFtcGxlCmltcGxlbWVudGF0aW9ucyBpbiB0aGUgZGVmYXVsdCBPVFJTIHN0YXRpc3RpY3MuCgpFT0YKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TWlncmF0aW9uczo6T1RSUzY6OkRhdGVUaW1lOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CiAgICByZXR1cm4gaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA2LCAwICk7CiAgICByZXR1cm4gaWYgISRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggNywgMCApOwoKICAgIG15ICggJENvdW50ZXIsICRFcnJvck1lc3NhZ2UgKTsKCiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lICggc3BsaXQgL1xuLywgJENvZGUgKSB7CiAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgbmV4dCBMSU5FIGlmICRMaW5lID1+IG0vXlxzKlwjL3NteDsKCiAgICAgICAgIyBMb29rIGZvciBjb2RlIHRoYXQgdXNlcyBub3QgYWxsb3dlZCBkYXRlL3RpbWUgbW9kdWxlcyBhbmQgZnVuY3Rpb25zCiAgICAgICAgaWYgKCAkTGluZSA9fiBteyh1c2VccysoRGF0ZTo6UGNhbGN8VGltZTo6TG9jYWx8VGltZTo6UGllY2UpfFxiKHRpbWVsb2NhbHxnbXRpbWV8dGltZWdtKVxzKlwoKX1zbSApIHsKICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiTGluZSAkQ291bnRlcjogJExpbmVcbiI7CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7ClVzZSBvZiBEYXRlOjpQY2FsYywgVGltZTo6TG9jYWwsIFRpbWU6OlBpZWNlLCB0aW1lbG9jYWwsIGdtdGltZSBhbmQgdGltZWdtIGlzIG5vdCBhbGxvd2VkIGFueW1vcmUuIFVzZSBLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUgaW5zdGVhZC4KICAgIFBsZWFzZSBzZWUgaHR0cDovL2RvYy5vdHJzLmNvbS9kb2MvbWFudWFsL2RldmVsb3Blci82LjAvZW4vaHRtbC9wYWNrYWdlLXBvcnRpbmcuaHRtbCNwYWNrYWdlLXBvcnRpbmctNS10by02IGZvciBwb3J0aW5nIGd1aWRlbGluZXMuCiRFcnJvck1lc3NhZ2UKRU9GCiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TWlncmF0aW9uczo6T1RSUzY6OlBlcmxDb25maWdGaWxlRm9ybWF0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CiAgICByZXR1cm4gaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA2LCAwICk7CiAgICByZXR1cm4gaWYgISRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggNywgMCApOwoKICAgIGlmICggJENvZGUgIX4gbXtecGFja2FnZSBcc31zbXggfHwgJENvZGUgIX4gbXtec3ViIFxzKyBMb2FkfXNteCApIHsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7ClBlcmwgY29uZmlndXJhdGlvbiBmaWxlcyBmb3IgT1RSUyA2KyBtdXN0IHVzZSB0aGUgdGhlIG5ldyBmb3JtYXQgbGlrZSBLZXJuZWwvQ29uZmlnL0ZpbGVzL1paWkFBdXRvLnBtICh0aGV5IG5lZWQgdG8gYmUgY3JlYXRlZCBhcyBhIHBhY2thZ2Ugd2l0aCBhIExvYWQoKSBtZXRob2QpLgpFT0YKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TWlncmF0aW9uczo6T1RSUzY6OlBlcm1pc3Npb25EYXRhTm90SW5TZXNzaW9uOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UpOwoKIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpNaWdyYXRpb25zOjpPVFJTNjo6UGVybWlzc2lvbkRhdGFOb3RJblNlc3Npb24pCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6T2JqZWN0RGVwZW5kZW5jaWVzKQoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CiAgICByZXR1cm4gaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA2LCAwICk7CiAgICByZXR1cm4gaWYgISRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggNywgMCApOwoKICAgIG15ICggJENvdW50ZXIsICRFcnJvck1lc3NhZ2UgKTsKCiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lICggc3BsaXQgL1xuLywgJENvZGUgKSB7CiAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgbmV4dCBMSU5FIGlmICRMaW5lID1+IG0vXlxzKlwjL3NteDsKCiAgICAgICAgaWYgKCAkTGluZSA9fiBte1VzZXJJc0dyb3VwfXNtICkgewogICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKU2luY2UgT1RSUyA2LCBncm91cCBwZXJtaXNzaW9uIGluZm9ybWF0aW9uIGlzIG5vIGxvbmdlciBzdG9yZWQgaW4gdGhlIHNlc3Npb24gbm9yIHRoZSBMYXlvdXRPYmplY3QgYW5kIGNhbm5vdCBiZSBmZXRjaGVkIHdpdGggJ1VzZXJJc0dyb3VwW10nLiBJbnN0ZWFkLCBpdCBjYW4gYmUgZmV0Y2hlZCB3aXRoIFBlcm1pc3Npb25DaGVjaygpIG9uIEtlcm5lbDo6U3lzdGVtOjpHcm91cCBvciBLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJHcm91cC4KCkV4YW1wbGU6CgogICAgbXkgXCRIYXNQZXJtaXNzaW9uID0gXCRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5QZXJtaXNzaW9uQ2hlY2soCiAgICAgICAgVXNlcklEICAgID0+IFwkVXNlcklELAogICAgICAgIEdyb3VwTmFtZSA9PiBcJEdyb3VwTmFtZSwKICAgICAgICBUeXBlICAgICAgPT4gJ21vdmVfaW50bycsCiAgICApOwoKJEVycm9yTWVzc2FnZQpFT0YKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TWlncmF0aW9uczo6T1RSUzY6OlN5c0NvbmZpZzsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpCYXNlKTsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggNiwgMCApOwogICAgcmV0dXJuIGlmICEkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDcsIDAgKTsKCiAgICBteSAoICRDb3VudGVyLCAkRXJyb3JNZXNzYWdlICk7CgogICAgTElORToKICAgIGZvciBteSAkTGluZSAoIHNwbGl0IC9cbi8sICRDb2RlICkgewogICAgICAgICRDb3VudGVyKys7CgogICAgICAgIG5leHQgTElORSBpZiAkTGluZSA9fiBtL15ccypcIy9zbXg7CgogICAgICAgICMgTG9vayBmb3IgY29kZSB0aGF0IHVzZXMgbm90IG5vdCBleGlzdGluZyBmdW5jdGlvbnMuCiAgICAgICAgaWYgKAogICAgICAgICAgICAkTGluZSA9fiBtewogICAgICAgICAgICAtPihDcmVhdGVDb25maWd8Q29uZmlnSXRlbVVwZGF0ZXxDb25maWdJdGVtR2V0fENvbmZpZ0l0ZW1SZXNldAogICAgICAgICAgICB8Q29uZmlnSXRlbVZhbGlkaXR5VXBkYXRlfENvbmZpZ0dyb3VwTGlzdHxDb25maWdTdWJHcm91cExpc3QKICAgICAgICAgICAgfENvbmZpZ1N1Ykdyb3VwQ29uZmlnSXRlbUxpc3R8Q29uZmlnSXRlbVNlYXJjaHxDb25maWdJdGVtVHJhbnNsYXRhYmxlU3RyaW5ncwogICAgICAgICAgICB8Q29uZmlnSXRlbVZhbGlkYXRlfENvbmZpZ0l0ZW1DaGVja0FsbClcKH1zbXgKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgIyBTa2lwIElUU00gZnVuY3Rpb25zLCB3aGljaCBoYXZlIHNhbWUgbmFtZS4KICAgICAgICAgICAgbmV4dCBMSU5FIGlmICRMaW5lID1+IG17Q29uZmlnSXRlbU9iamVjdH07CiAgICAgICAgICAgIG5leHQgTElORSBpZiAkTGluZSA9fiBte0lUU019OwoKICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiTGluZSAkQ291bnRlcjogJExpbmVcbiI7CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7ClVzZSBvZiB1bmV4aXN0aW5nIG1ldGhvZHMgaW4gS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZyBpcyBub3QgYWxsb3dlZCAoQ3JlYXRlQ29uZmlnLCBDb25maWdJdGVtVXBkYXRlLApDb25maWdJdGVtR2V0LCBDb25maWdJdGVtUmVzZXQsIENvbmZpZ0l0ZW1WYWxpZGl0eVVwZGF0ZSxDb25maWdHcm91cExpc3QsIENvbmZpZ1N1Ykdyb3VwTGlzdCwKQ29uZmlnU3ViR3JvdXBDb25maWdJdGVtTGlzdCwgQ29uZmlnSXRlbVNlYXJjaCwgQ29uZmlnSXRlbVRyYW5zbGF0YWJsZVN0cmluZ3MsIENvbmZpZ0l0ZW1WYWxpZGF0ZQphbmQgQ29uZmlnSXRlbUNoZWNrQWxsKS4KCiAgICBQbGVhc2Ugc2VlIGh0dHA6Ly9kb2Mub3Rycy5jb20vZG9jL21hbnVhbC9kZXZlbG9wZXIvNi4wL2VuL2h0bWwvcGFja2FnZS1wb3J0aW5nLmh0bWwjcGFja2FnZS1wb3J0aW5nLTUtdG8tNiBmb3IgcG9ydGluZyBndWlkZWxpbmVzLgokRXJyb3JNZXNzYWdlCkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TWlncmF0aW9uczo6T1RSUzY6OlRpbWVPYmplY3Q7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6QmFzZSk7CiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TWlncmF0aW9uczo6T1RSUzY6OlRpbWVPYmplY3QpCgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKICAgIHJldHVybiBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDYsIDAgKTsKICAgIHJldHVybiBpZiAhJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA3LCAwICk7CgogICAgbXkgKCAkQ291bnRlciwgJEVycm9yTWVzc2FnZSApOwoKICAgIExJTkU6CiAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCAvXG4vLCAkQ29kZSApIHsKICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICBuZXh0IExJTkUgaWYgJExpbmUgPX4gbS9eXHMqXCMvc214OwoKICAgICAgICBpZiAoICRMaW5lID1+IG17S2VybmVsOjpTeXN0ZW06OlRpbWVbXmEtekEtWl19c20gKSB7CiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIkxpbmUgJENvdW50ZXI6ICRMaW5lXG4iOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwpVc2Ugb2YgZGVwcmVjYXRlZCBLZXJuZWw6OlN5c3RlbTo6VGltZSBpcyBub3QgYWxsb3dlZCBhbnltb3JlIGV4Y2VwdCBmb3IgbGVnYWN5IEFQSSBpbnRlcmZhY2VzLiBQbGVhc2UgdXNlIEtlcm5lbDo6U3lzdGVtOjpEYXRlVGltZSBpbnN0ZWFkLgogICAgUGxlYXNlIHNlZSBodHRwOi8vZG9jLm90cnMuY29tL2RvYy9tYW51YWwvZGV2ZWxvcGVyLzYuMC9lbi9odG1sL3BhY2thZ2UtcG9ydGluZy5odG1sI3BhY2thZ2UtcG9ydGluZy01LXRvLTYgZm9yIHBvcnRpbmcgZ3VpZGVsaW5lcy4KJEVycm9yTWVzc2FnZQpFT0YKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TWlncmF0aW9uczo6T1RSUzY6OlRpbWVab25lT2Zmc2V0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CiAgICByZXR1cm4gaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA2LCAwICk7CiAgICByZXR1cm4gaWYgISRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggNywgMCApOwoKICAgIG15ICggJENvdW50ZXIsICRFcnJvck1lc3NhZ2UgKTsKCiAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCAvXG4vLCAkQ29kZSApIHsKICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAjIExvb2sgZm9yIGNvZGUgdGhhdCBtaWdodCBjb250YWluIG9sZCB0aW1lIHpvbmUgb2Zmc2V0IGNhbGN1bGF0aW9ucwogICAgICAgIGlmICgKICAgICAgICAgICAgJExpbmUgPX4gbXsodGltZXpvbmV8dGltZSB6b25lKX1zbWkKICAgICAgICAgICAgJiYgJExpbmUgPX4gbXszNjAwfXNtaQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKQ29kZSBtaWdodCBjb250YWluIGRlcHJlY2F0ZWQgdGltZSB6b25lIG9mZnNldCBjYWxjdWxhdGlvbnMuIE9ubHkgdXNlIG1ldGhvZHMgcHJvdmlkZWQgYnkgS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lIHRvIGNoYW5nZSB0aW1lIHpvbmVzIGFuZCBjYWxjdWxhdGUgZGF0ZS90aW1lLgokRXJyb3JNZXNzYWdlCkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TWlncmF0aW9uczo6T1RSUzY6OlhNTEZyb250ZW5kTmF2aWdhdGlvbjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpCYXNlKTsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggNiwgMCApOwogICAgcmV0dXJuIGlmICEkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDcsIDAgKTsKCiAgICBteSAoICRDb3VudGVyLCAkRXJyb3JNZXNzYWdlICk7CgogICAgbXkgKCAkQ3VycmVudFNldHRpbmdOYW1lLCAkSW5WYWx1ZSwgJFZhbHVlQ29udGVudCApOwoKICAgIExJTkU6CiAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCAvXG4vLCAkQ29kZSApIHsKICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICBpZiAoICRMaW5lID1+IG17PFNldHRpbmdccytOYW1lPSIoLio/KSJ9c214ICkgewogICAgICAgICAgICAkQ3VycmVudFNldHRpbmdOYW1lID0gJDE7CiAgICAgICAgICAgICRJblZhbHVlICAgICAgICAgICAgPSAwOwogICAgICAgICAgICAkVmFsdWVDb250ZW50ICAgICAgID0gJyc7CiAgICAgICAgfQoKICAgICAgICAkSW5WYWx1ZSA9IDEgaWYgJExpbmUgPX4gbXs8VmFsdWU+fTsKICAgICAgICAkVmFsdWVDb250ZW50IC49ICJcbiIgLiAkTGluZSBpZiAkSW5WYWx1ZTsKICAgICAgICAkSW5WYWx1ZSA9IDAgaWYgJExpbmUgPX4gbXs8L1ZhbHVlPn07CgogICAgICAgIG5leHQgTElORSBpZiAhJFZhbHVlQ29udGVudCB8fCAkSW5WYWx1ZTsKCiAgICAgICAgbXkgQFJ1bGVzID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgPT4gJ1ZhbGlkIHRvcGxldmVsIGVudHJpZXMnLAogICAgICAgICAgICAgICAgTWF0Y2hTZXR0aW5nTmFtZSAgICAgICAgID0+IHFye14oQ3VzdG9tZXJ8UHVibGljKT9Gcm9udGVuZDo6TmF2aWdhdGlvbiMjIy4qfSwKICAgICAgICAgICAgICAgIFJlcXVpcmVWYWx1ZUNvbnRlbnRNYXRjaCA9PiBxcns8QXJyYXk+Lio8RGVmYXVsdEl0ZW1bXj5dK1ZhbHVlVHlwZT0iRnJvbnRlbmROYXZpZ2F0aW9uIn1zbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBSVUxFOgogICAgICAgIGZvciBteSAkUnVsZSAoQFJ1bGVzKSB7CiAgICAgICAgICAgIG5leHQgUlVMRSBpZiAkQ3VycmVudFNldHRpbmdOYW1lICF+ICRSdWxlLT57TWF0Y2hTZXR0aW5nTmFtZX07CgogICAgICAgICAgICBpZiAoICRWYWx1ZUNvbnRlbnQgIX4gJFJ1bGUtPntSZXF1aXJlVmFsdWVDb250ZW50TWF0Y2h9ICkgewogICAgICAgICAgICAgICAgJEVycm9yTWVzc2FnZQogICAgICAgICAgICAgICAgICAgIC49ICJJbmNvcnJlY3QgbWFpbiBtZW51IHJlZ2lzdHJhdGlvbiBmb3VuZCBpbiBzZXR0aW5nICRDdXJyZW50U2V0dGluZ05hbWU6JFZhbHVlQ29udGVudFxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwpQcm9ibGVtcyB3ZXJlIGZvdW5kIGluIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIFhNTCBjb25maWd1cmF0aW9uOgokRXJyb3JNZXNzYWdlCkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TWlncmF0aW9uczo6T1RSUzc6OkRlcHJlY2F0ZWRTZXR0aW5nczsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpCYXNlKTsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggNywgMCApOwogICAgcmV0dXJuIGlmICEkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDgsIDAgKTsKCiAgICBteSAoICRDb3VudGVyLCAkRXJyb3JNZXNzYWdlICk7CgogICAgbXkgJEN1cnJlbnRTZXR0aW5nTmFtZTsKCiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lICggc3BsaXQgL1xuLywgJENvZGUgKSB7CiAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgbmV4dCBMSU5FIGlmICRMaW5lICF+IG17PFNldHRpbmdccytOYW1lPSIoLio/KSJ9c214OwoKICAgICAgICAkQ3VycmVudFNldHRpbmdOYW1lID0gJDE7CgogICAgICAgIG15IEBSdWxlcyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnT2Jzb2xldGUgZnJvbnRlbmQgc2V0dGluZycsCiAgICAgICAgICAgICAgICBNYXRjaFNldHRpbmdOYW1lID0+IHFye14oQ3VzdG9tZXJ8UHVibGljKUZyb250ZW5kOjp9LAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgJ09ic29sZXRlIGZyb250ZW5kIHNldHRpbmcsIChQdWJsaWN8Q3VzdG9tZXIpRnJvbnRlbmQgbm90IGFsbG93ZWQgYW55bW9yZS4nLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdPYnNvbGV0ZSBsb2FkZXIgc2V0dGluZycsCiAgICAgICAgICAgICAgICBNYXRjaFNldHRpbmdOYW1lID0+IHFye15Mb2FkZXI6OihDdXN0b21lcnxQdWJsaWMpfSwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICdPYnNvbGV0ZSBsb2FkZXIgc2V0dGluZywgTG9hZGVyOjooQ3VzdG9tZXJ8UHVibGljKSBub3QgYWxsb3dlZCBhbnltb3JlLicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJ09ic29sZXRlIGxvYWRlciBtb2R1bGUgc2V0dGluZycsCiAgICAgICAgICAgICAgICBNYXRjaFNldHRpbmdOYW1lID0+IHFye15Mb2FkZXI6Ok1vZHVsZTo6KEN1c3RvbWVyfFB1YmxpYyl9LAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgJ09ic29sZXRlIGxvYWRlciBtb2R1bGUgc2V0dGluZywgTG9hZGVyOjpNb2R1bGU6OihDdXN0b21lcnxQdWJsaWMpIG5vdCBhbGxvd2VkIGFueW1vcmUuJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnT2Jzb2xldGUgc2VhcmNoIHJvdXRlciBzZXR0aW5nJywKICAgICAgICAgICAgICAgIE1hdGNoU2V0dGluZ05hbWUgPT4gcXJ7XkZyb250ZW5kOjpTZWFyY2h9LAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgJ09ic29sZXRlIHNlYXJjaCByb3V0ZXIgc2V0dGluZywgRnJvbnRlbmQ6OlNlYXJjaCBub3QgYWxsb3dlZCBhbnltb3JlLicsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgUlVMRToKICAgICAgICBmb3IgbXkgJFJ1bGUgKEBSdWxlcykgewogICAgICAgICAgICBuZXh0IFJVTEUgaWYgJEN1cnJlbnRTZXR0aW5nTmFtZSAhfiAkUnVsZS0+e01hdGNoU2V0dGluZ05hbWV9OwoKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJFJ1bGUtPntTa2lwRm9yRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFufQogICAgICAgICAgICAgICAgJiYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCBAeyAkUnVsZS0+e1NraXBGb3JGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW59IH0gKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuZXh0IFJVTEU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UKICAgICAgICAgICAgICAgIC49ICJEZXByZWNhdGVkIHNldHRpbmcgZm91bmQgJEN1cnJlbnRTZXR0aW5nTmFtZTogJFJ1bGUtPntFcnJvck1lc3NhZ2V9XG4iOwogICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKUHJvYmxlbXMgd2VyZSBmb3VuZCBpbiB0aGUgWE1MIGNvbmZpZ3VyYXRpb246CiRFcnJvck1lc3NhZ2UKRU9GCiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TWlncmF0aW9uczo6T1RSUzc6OlRyYW5zbGF0YWJsZVN0cmluZ3NQbGFjZWhvbGRlcnM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50ICdUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UnOwoKc3ViIHZhbGlkYXRlX2ZpbGUgewogICAgbXkgKCAkU2VsZiwgJEZpbGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggRmlsZW5hbWUgPT4gJEZpbGUgKTsKICAgIHJldHVybiBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDcsIDAgKTsKICAgIHJldHVybiBpZiAhJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA4LCAwICk7CgogICAgbXkgJFRleHQgPSAkU2VsZi0+X0V4dHJhY3RUcmFuc2xhdGFibGVTdHJpbmdzKCRGaWxlKTsKICAgIHJldHVybiBpZiAhJFRleHQ7CgogICAgbXkgJEVycm9yTWVzc2FnZTsKCiAgICAjIFByb2hpYml0ICVkIGFzIGEgcGxhY2Vob2xkZXIuCiAgICB3aGlsZSAoICRUZXh0ID1+IC9eICg/PExpbmU+IFteXG5dKiAlIFxiZFxiIFteXG5dKiApICQvZ2lzbXggKSB7CiAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAkK3tMaW5lfSAuICJcbiI7CiAgICB9CgogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKVHJhbnNsYXRhYmxlIHN0cmluZ3MgY29udGFpbiBwcm9oaWJpdGVkIHBsYWNlaG9sZGVycyAoXCVkKTpcbgokRXJyb3JNZXNzYWdlCkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKc3ViIF9FeHRyYWN0VHJhbnNsYXRhYmxlU3RyaW5ncyB7CiAgICBteSAoICRTZWxmLCAkRmlsZW5hbWUgKSA9IEBfOwoKICAgIG15ICRDb2RlID0gJFNlbGYtPl9HZXRGaWxlQ29udGVudHMoJEZpbGVuYW1lKTsKCiAgICBteSAkUmVzdWx0OwoKICAgIGlmICggJEZpbGVuYW1lID1+IG17LnR0JH1pc214ICkgewogICAgICAgICRDb2RlID1+IHN7CiAgICAgICAgICAgIFRyYW5zbGF0ZVwoCiAgICAgICAgICAgICAgICBccyoKICAgICAgICAgICAgICAgIChbIiddKSguKj8pKD88IVxcKVwxCiAgICAgICAgfQogICAgICAgIHsKICAgICAgICAgICAgbXkgJFdvcmQgPSAkMiAvLyAnJzsKCiAgICAgICAgICAgICMgdW5lc2NhcGUgYW55IFwiIG9yIFwnIHNpZ25zCiAgICAgICAgICAgICRXb3JkID1+IHN7XFwifXsifXNteGc7CiAgICAgICAgICAgICRXb3JkID1+IHN7XFwnfXsnfXNteGc7CgogICAgICAgICAgICAkUmVzdWx0IC49ICIkV29yZFxuIjsKCiAgICAgICAgICAgICcnOwogICAgICAgIH1lZ3g7CiAgICB9CiAgICBlbHNpZiAoICRGaWxlbmFtZSA9fiBte1wuKHBtfHBsKX1pc214ICkgewogICAgICAgICRDb2RlID1+IHN7CiAgICAgICAgICAgICg/OgogICAgICAgICAgICAgICAgLT5UcmFuc2xhdGUgfCBUcmFuc2xhdGFibGUKICAgICAgICAgICAgKQogICAgICAgICAgICBcKAogICAgICAgICAgICAgICAgXHMqCiAgICAgICAgICAgICAgICAoWyInXSkoLio/KSg/PCFcXClcMQogICAgICAgIH0KICAgICAgICB7CiAgICAgICAgICAgIG15ICRXb3JkID0gJDIgLy8gJyc7CgogICAgICAgICAgICAjIHVuZXNjYXBlIGFueSBcIiBvciBcJyBzaWducwogICAgICAgICAgICAkV29yZCA9fiBze1xcIn17In1zbXhnOwogICAgICAgICAgICAkV29yZCA9fiBze1xcJ317J31zbXhnOwoKICAgICAgICAgICAgIyBJZ25vcmUgc3RyaW5ncyBjb250YWluaW5nIHZhcmlhYmxlcwogICAgICAgICAgICBteSAkU2tpcFdvcmQ7CiAgICAgICAgICAgICRTa2lwV29yZCA9IDEgaWYgJFdvcmQgPX4gbXtcJH14bXM7CgogICAgICAgICAgICBpZiAoJFdvcmQgJiYgISRTa2lwV29yZCApIHsKICAgICAgICAgICAgICAgICRSZXN1bHQgLj0gIiRXb3JkXG4iOwogICAgICAgICAgICB9CiAgICAgICAgICAgICcnOwogICAgICAgIH1lZ3g7CiAgICB9CiAgICBlbHNpZiAoICRGaWxlbmFtZSA9fiBte1wueG1sJH1pc214ICkgewogICAgICAgICRDb2RlID1+IHN7CiAgICAgICAgICAgIFtePl0rVHJhbnNsYXRhYmxlPSIxIltePl0qPiguKj8pPC8KICAgICAgICB9CiAgICAgICAgewogICAgICAgICAgICBteSAkV29yZCA9ICQxIC8vICcnOwogICAgICAgICAgICBpZiAoJFdvcmQpIHsKICAgICAgICAgICAgICAgICRSZXN1bHQgLj0gIiRXb3JkXG4iOwogICAgICAgICAgICB9CiAgICAgICAgICAgICcnOwogICAgICAgIH1lZ3g7CiAgICB9CiAgICBlbHNpZiAoICRGaWxlbmFtZSA9fiBte1wuanMkfWlzbXggKSB7CiAgICAgICAgJENvZGUgPX4gc3sKICAgICAgICAgICAgKD86CiAgICAgICAgICAgICAgICBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZQogICAgICAgICAgICApCiAgICAgICAgICAgIFwoCiAgICAgICAgICAgICAgICBccyoKICAgICAgICAgICAgICAgIChbIiddKSguKj8pKD88IVxcKVwxCiAgICAgICAgfQogICAgICAgIHsKICAgICAgICAgICAgbXkgJFdvcmQgPSAkMiAvLyAnJzsKCiAgICAgICAgICAgICMgdW5lc2NhcGUgYW55IFwiIG9yIFwnIHNpZ25zCiAgICAgICAgICAgICRXb3JkID1+IHN7XFwifXsifXNteGc7CiAgICAgICAgICAgICRXb3JkID1+IHN7XFwnfXsnfXNteGc7CgogICAgICAgICAgICBpZiAoICRXb3JkICkgewogICAgICAgICAgICAgICAgJFJlc3VsdCAuPSAiJFdvcmRcbiI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICcnOwogICAgICAgIH1lZ3g7CiAgICB9CiAgICBlbHNpZiAoICRGaWxlbmFtZSA9fiBte1wuaHRtbFwudG1wbCR9aXNteCApIHsKICAgICAgICAkQ29kZSA9fiBzewogICAgICAgICAgICBce1x7CiAgICAgICAgICAgIFxzKgogICAgICAgICAgICAoWyInXSkoLio/KSg/PCFcXClcMQogICAgICAgICAgICBccyoKICAgICAgICAgICAgXHwKICAgICAgICAgICAgXHMqCiAgICAgICAgICAgIFRyYW5zbGF0ZQogICAgICAgIH0KICAgICAgICB7CiAgICAgICAgICAgIG15ICRXb3JkID0gJDIgLy8gJyc7CgogICAgICAgICAgICAjIFVuZXNjYXBlIGFueSBcIiBvciBcJyBzaWducy4KICAgICAgICAgICAgJFdvcmQgPX4gc3tcXCJ9eyJ9c214ZzsKICAgICAgICAgICAgJFdvcmQgPX4gc3tcXCd9eyd9c214ZzsKCiAgICAgICAgICAgIGlmICggJFdvcmQgKSB7CiAgICAgICAgICAgICAgICAkUmVzdWx0IC49ICIkV29yZFxuIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJyc7CiAgICAgICAgfWVneDsKICAgIH0KCiAgICByZXR1cm4gJFJlc3VsdDsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TWlncmF0aW9uczo6T1RSUzc6OldlYkFwcE5vTGVnYWN5Q29kZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgJ1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6QmFzZSc7CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKICAgIHJldHVybiBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDcsIDAgKTsKICAgIHJldHVybiBpZiAhJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA4LCAwICk7CgogICAgbXkgQEZvcmJpZGRlblBhdGhzID0gcXcoCiAgICAgICAgS2VybmVsOjpPdXRwdXQ6OkhUTUwKICAgICAgICBLZXJuZWw6Ok1vZHVsZXMKICAgICk7CgogICAgbXkgQEVycm9yUGF0aHM7CgogICAgZm9yIG15ICRGb3JiaWRkZW5QYXRoIChARm9yYmlkZGVuUGF0aHMpIHsKICAgICAgICBpZiAoICRDb2RlID1+IG17JEZvcmJpZGRlblBhdGh9ICkgewogICAgICAgICAgICBwdXNoIEBFcnJvclBhdGhzLCAkRm9yYmlkZGVuUGF0aDsKICAgICAgICB9CiAgICB9CgogICAgaWYgKEBFcnJvclBhdGhzKSB7CiAgICAgICAgbXkgJEVycm9yUGF0aEpvaW4gPSBqb2luKCAnIG9yICcsIEBFcnJvclBhdGhzICk7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7CkRvbid0IHVzZSBsZWdhY3kgY29kZSBmcm9tICRFcnJvclBhdGhKb2luIGluIEtlcm5lbDo6V2ViQXBwLgpFT0YKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TWlncmF0aW9uczo6T1RSUzg6Ok5ld1Rlc3RzTm9MZWdhY3lDb2RlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCAnVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpCYXNlJzsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggOCwgMCApOwoKICAgICMgS2VlcCB0aGlzIG1pZ3JhdGlvbiBhY3RpdmUgdW50aWwgdGhlIGxlZ2FjeSB0ZXN0IHN5c3RlbSBpcyBkcm9wcGVkLgogICAgI3JldHVybiBpZiAhJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA5LCAwICk7CgogICAgbXkgQEZvcmJpZGRlblBhdGhzID0gcXcoCiAgICAgICAgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjoKICAgICk7CgogICAgbXkgQEVycm9yUGF0aHM7CgogICAgZm9yIG15ICRGb3JiaWRkZW5QYXRoIChARm9yYmlkZGVuUGF0aHMpIHsKICAgICAgICBpZiAoICRDb2RlID1+IG17JEZvcmJpZGRlblBhdGh9ICkgewogICAgICAgICAgICBwdXNoIEBFcnJvclBhdGhzLCAkRm9yYmlkZGVuUGF0aDsKICAgICAgICB9CiAgICB9CgogICAgaWYgKEBFcnJvclBhdGhzKSB7CiAgICAgICAgbXkgJEVycm9yUGF0aEpvaW4gPSBqb2luKCAnIG9yICcsIEBFcnJvclBhdGhzICk7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7CkRvbid0IHVzZSBsZWdhY3kgY29kZSBmcm9tICRFcnJvclBhdGhKb2luIGluIEtlcm5lbDo6VGVzdC4KRU9GCiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TWlncmF0aW9uczo6T1RSUzg6OlVzZWxlc3NDb21tZW50czsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgJ1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6QmFzZSc7CgpzdWIgdHJhbnNmb3JtX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA4LCAwICk7CiAgICByZXR1cm4gJENvZGUgaWYgISRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggOSwgMCApOwoKICAgIG15IEBDbGVhbnVwUmVnZXhlcyA9ICgKICAgICAgICBxcnteWyBdKiBbI10gWyBdKyAoPzogW2dHXWV0IHwgW2NDXWhlY2sgKSBbIF0gbmVlZGVkIFsgXSAoPzpvYmplY3RzfHZhcmlhYmxlc3xzdHVmZnxwYXJhbXN8ZGF0YSkgWy5dPyBcbn1zbXgsCiAgICAgICAgcXJ7XlsgXSogWyNdIFsgXSsgW2dHXWV0IFsgXSBbYS16QS1aMC05X117Mix9IFsgXSBvYmplY3QgWy5dPyBcbn1zbXgsCiAgICAgICAgcXJ7XlsgXSogWyNdIFsgXSsgW2dHXWV0IFsgXSBzY3JpcHQgWyBdIGFsaWFzIFsuXT8gXG59c214LAogICAgICAgIHFye15bIF0qIFsjXSBbIF0rIFtnR11ldCBbIF0gdmFsaWQgWyBdIGxpc3QgWy5dPyBcbn1zbXgsCiAgICAgICAgcXJ7XlsgXSogWyNdIFsgXSsgW2FBXWxsb2NhdGUgWyBdIG5ldyBbIF0gaGFzaCBbIF0gZm9yIFsgXSBvYmplY3QgWy5dPyBcbn1zbXgsCiAgICApOwoKICAgIGZvciBteSAkUmVnZXggKEBDbGVhbnVwUmVnZXhlcykgewogICAgICAgICRDb2RlID1+IHN7JFJlZ2V4fXt9c214ZzsKICAgIH0KCiAgICByZXR1cm4gJENvZGU7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TWlncmF0aW9uczo6T1RSUzk6OkRyb3BWYXJpYWJsZUNoZWNrOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCAnVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpCYXNlJzsKCnN1YiB0cmFuc2Zvcm1fc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDksIDAgKTsKICAgIHJldHVybiAkQ29kZSBpZiAhJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCAxMCwgMCApOwoKICAgIHJldHVybiAkQ29kZSBpZiAkQ29kZSAhfiBte151c2VccytLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVja31zbXg7CgogICAgbXkgJUZ1bmN0aW9uTWFwID0gKAogICAgICAgICdJc0FycmF5UmVmV2l0aERhdGEnID0+ICdpc19BcnJheVJlZldpdGhEYXRhJywKICAgICAgICAnSXNIYXNoUmVmV2l0aERhdGEnICA9PiAnaXNfSGFzaFJlZldpdGhEYXRhJywKICAgICAgICAnSXNJbnRlZ2VyJyAgICAgICAgICA9PiAnaXNfSW50JywKICAgICAgICAnSXNJUHY0QWRkcmVzcycgICAgICA9PiAnaXNfSVB2NCcsCiAgICAgICAgJ0lzSVB2NkFkZHJlc3MnICAgICAgPT4gJ2lzX0lQdjYnLAogICAgICAgICdJc01ENVN1bScgICAgICAgICAgID0+ICdpc19NRDUnLAogICAgICAgICdJc051bWJlcicgICAgICAgICAgID0+ICdpc19OdW0nLAogICAgICAgICdJc1Bvc2l0aXZlSW50ZWdlcicgID0+ICdpc19Qb3NpdGl2ZUludCcsCiAgICAgICAgJ0lzU3RyaW5nJyAgICAgICAgICAgPT4gJ2lzX1N0cicsCiAgICAgICAgJ0lzU3RyaW5nV2l0aERhdGEnICAgPT4gJ2lzX1N0cldpdGhEYXRhJywKICAgICAgICAnRGF0YUlzRGlmZmVyZW50JyAgICA9PiAnRGF0YUlzRGlmZmVyZW50JywKICAgICk7CgogICAgbXkgJFJlcGxhY2VkOwoKICAgIGZvciBteSAkTGVnYWN5RnVuY3Rpb24gKCBzb3J0IGtleXMgJUZ1bmN0aW9uTWFwICkgewoKICAgICAgICAjIFJlcGxhY2UgZnVsbHkgcXVhbGlmaWVkIGNhbGxzIGxpa2UgSzpTOlZhcmlhYmxlQ2hlY2s6OkRhdGFJc0RpZmZlcmVudCggLi4uICkuCiAgICAgICAgJFJlcGxhY2VkICs9ICRDb2RlCiAgICAgICAgICAgID1+IHN7S2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2s6OiRMZWdhY3lGdW5jdGlvblwofXtLZXJuZWw6OlN5c3RlbTo6RGF0YVR5cGVzOjokRnVuY3Rpb25NYXB7JExlZ2FjeUZ1bmN0aW9ufSh9c214ZzsKCiAgICAgICAgIyBSZXBsYWNlIGltcG9ydGVkIGNhbGxzIGxpa2UgSXNIYXNoUmVmV2l0aERhdGEoIC4uLiApLgogICAgICAgICRSZXBsYWNlZCArPSAkQ29kZSA9fiBzeyRMZWdhY3lGdW5jdGlvblwofXskRnVuY3Rpb25NYXB7JExlZ2FjeUZ1bmN0aW9ufSh9c214ZzsKICAgIH0KCiAgICBpZiAoICRDb2RlID1+IG17XnVzZVxzK0tlcm5lbDo6U3lzdGVtOjpEYXRhVHlwZXN9IHx8ICEkUmVwbGFjZWQgKSB7CiAgICAgICAgJENvZGUgPX4gc3tedXNlXHMrS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2suKj9cbn17fXNteGc7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkQ29kZSA9fiBze151c2VccytLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjay4qPyR9e3VzZSBLZXJuZWw6OlN5c3RlbTo6RGF0YVR5cGVzO31zbXhnOwogICAgfQoKICAgIHJldHVybiAkQ29kZTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TWlncmF0aW9uczo6T1RSUzk6OlVuaW1wb3J0TW9vc2U7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50ICdUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UnOwoKc3ViIHRyYW5zZm9ybV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggOSwgMCApOwogICAgcmV0dXJuICRDb2RlIGlmICEkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDEwLCAwICk7CgogICAgIyBNb29zZSBSb2xlcwogICAgaWYgKCAkQ29kZSA9fiBte151c2UgXHMrIE1vb3NlOjpSb2xlfXNteCApIHsKICAgICAgICByZXR1cm4gJENvZGUgaWYgJENvZGUgPX4gbXtebm8gXHMrIE1vb3NlOjpSb2xlfXNteDsKICAgICAgICAkQ29kZSA9fiBzezE7XG5cWn17bm8gTW9vc2U6OlJvbGU7XG5cbjE7XG59c214OwoKICAgIH0KCiAgICAjIE5vcm1hbCBNb29zZSBvYmplY3RzCiAgICBlbHNpZiAoICRDb2RlID1+IG17XnVzZSBccysgTW9vc2V9c214ICkgewogICAgICAgIHJldHVybiAkQ29kZSBpZiAkQ29kZSA9fiBte15ubyBccysgTW9vc2V9c214OwogICAgICAgICRDb2RlID1+IHN7MTtcblxafXtubyBNb29zZTtcblxuMTtcbn1zbXg7CiAgICB9CgogICAgcmV0dXJuICRDb2RlOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBQb2Q6OlN0cmlwKCk7CnVzZSBUaWR5QWxsOjpPVFJTOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UpOwoKIyBQcm9jZXNzIFBlcmwgY29kZSBhbmQgcmVwbGFjZSBhbGwgUG9kIHNlY3Rpb25zIHdpdGggY29tbWVudHMuCnN1YiBTdHJpcFBvZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRQb2RTdHJpcCA9IFBvZDo6U3RyaXAtPm5ldygpOwogICAgJFBvZFN0cmlwLT5yZXBsYWNlX3dpdGhfY29tbWVudHMoMSk7CiAgICBteSAkQ29kZTsKICAgICRQb2RTdHJpcC0+b3V0cHV0X3N0cmluZyggXCRDb2RlICk7CiAgICAkUG9kU3RyaXAtPnBhcnNlX3N0cmluZ19kb2N1bWVudCggJFBhcmFte0NvZGV9ICk7CiAgICByZXR1cm4gJENvZGU7Cn0KCnN1YiBTdHJpcENvbW1lbnRzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvZGUgPSAkUGFyYW17Q29kZX07CiAgICAkQ29kZSA9fiBzL14gXHMqIFwjIC4qPyAkL1xuL3NteGc7CiAgICByZXR1cm4gJENvZGU7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6QmluU2NyaXB0czsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsKTsKCiMgV2Ugb25seSB3YW50IHRvIGFsbG93IGEgaGFuZGZ1bCBvZiBzY3JpcHRzIGluIGJpbi4gQWxsIHRoZSByZXN0IHNob3VsZCBiZQojICAgbWlncmF0ZWQgdG8gY29uc29sZSBjb21tYW5kcy4KCnN1YiB2YWxpZGF0ZV9maWxlIHsKICAgIG15ICggJFNlbGYsICRGaWxlbmFtZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBGaWxlbmFtZSA9PiAkRmlsZW5hbWUgKTsKICAgIHJldHVybiBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDUsIDAgKTsKCiAgICBteSAlQWxsb3dlZEZpbGVzID0gKAogICAgICAgICdvdHJzLkNoZWNrTW9kdWxlcy5wbCcgICA9PiAxLAogICAgICAgICdvdHJzLkNoZWNrU3VtLnBsJyAgICAgICA9PiAxLAogICAgICAgICdvdHJzLkNvZGVQb2xpY3kucGwnICAgICA9PiAxLAogICAgICAgICdvdHJzLkNvbnNvbGUucGwnICAgICAgICA9PiAxLAogICAgICAgICdvdHJzLkRhZW1vbi5wbCcgICAgICAgICA9PiAxLAogICAgICAgICdvdHJzLlNldFBlcm1pc3Npb25zLnBsJyA9PiAxLAogICAgKTsKCiAgICBpZiAoICEkQWxsb3dlZEZpbGVzeyBGaWxlOjpCYXNlbmFtZTo6YmFzZW5hbWUoJEZpbGVuYW1lKSB9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwpQbGVhc2UgbWlncmF0ZSBhbGwgYmluLyBzY3JpcHRzIHRvIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kIG9iamVjdHMuCkVPRgogICAgfQp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFBlcmw6OkNyaXRpYzo6UG9saWN5OjpPVFJTOjpQcm9oaWJpdExvd1ByZWNlbmRlY2VPcHM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgUGVybDo6Q3JpdGljOjpVdGlscyBxd3t9Owp1c2UgcGFyZW50ICdQZXJsOjpDcml0aWM6OlBvbGljeSc7CgpvdXIgJFZFUlNJT04gPSAnMC4wMSc7CgpteSAkRGVzY3JpcHRpb24gPSBxe1VzZSBvZiBsb3cgcHJlY2VkZW5jZSBvcGVyYXRvcnMgaXMgbm90IGFsbG93ZWR9OwpteSAkRXhwbGFuYXRpb24gPQogICAgcXtSZXBsYWNlIGxvdyBwcmVjZWRlbmNlIG9wZXJhdG9ycyB3aXRoIHRoZSBoaWdoIHByZWNlZGVuY2Ugc3Vic3RpdHV0ZXN9OwoKbXkgJUxvd1ByZWNlbmRlY2VPcGVyYXRvcnMgPSAoCiAgICBub3QgPT4gJyEnLAogICAgYW5kID0+ICcmJicsCiAgICBvciAgPT4gJ3x8JywKKTsKCnN1YiBzdXBwb3J0ZWRfcGFyYW1ldGVycyB7IHJldHVybjsgfQpzdWIgZGVmYXVsdF9zZXZlcml0eSAgICAgeyByZXR1cm4gJFBlcmw6OkNyaXRpYzo6VXRpbHM6OlNFVkVSSVRZX0hJR0hFU1Q7IH0Kc3ViIGRlZmF1bHRfdGhlbWVzICAgICAgIHsgcmV0dXJuIHF3KCBvdHJzICkgfQpzdWIgYXBwbGllc190byAgICAgICAgICAgeyByZXR1cm4gJ1BQSTo6VG9rZW46Ok9wZXJhdG9yJyB9CgpzdWIgdmlvbGF0ZXMgewogICAgbXkgKCAkU2VsZiwgJEVsZW1lbnQgKSA9IEBfOwoKICAgIHJldHVybiBpZiAhZ3JlcCB7ICRFbGVtZW50IGVxICRfIH0ga2V5cyAlTG93UHJlY2VuZGVjZU9wZXJhdG9yczsKICAgIHJldHVybiAkU2VsZi0+dmlvbGF0aW9uKCAkRGVzY3JpcHRpb24sICRFeHBsYW5hdGlvbiwgJEVsZW1lbnQgKTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFBlcmw6OkNyaXRpYzo6UG9saWN5OjpPVFJTOjpQcm9oaWJpdEdvdG87Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgUGVybDo6Q3JpdGljOjpVdGlscyBxd3t9Owp1c2UgcGFyZW50ICdQZXJsOjpDcml0aWM6OlBvbGljeSc7CgpvdXIgJFZFUlNJT04gPSAnMC4wMSc7CgpteSAkRGVzY3JpcHRpb24gPSBxe0Rvbid0IHVzZSAiZ290byIgaW4gUGVybCBjb2RlLn07Cm15ICRFeHBsYW5hdGlvbiA9IHF7fTsKCnN1YiBzdXBwb3J0ZWRfcGFyYW1ldGVycyB7IHJldHVybjsgfQpzdWIgZGVmYXVsdF9zZXZlcml0eSAgICAgeyByZXR1cm4gJFBlcmw6OkNyaXRpYzo6VXRpbHM6OlNFVkVSSVRZX0hJR0hFU1Q7IH0Kc3ViIGRlZmF1bHRfdGhlbWVzICAgICAgIHsgcmV0dXJuIHF3KCBvdHJzICkgfQpzdWIgYXBwbGllc190byAgICAgICAgICAgeyByZXR1cm4gJ1BQSTo6VG9rZW46OldvcmQnIH0KCnN1YiB2aW9sYXRlcyB7CiAgICBteSAoICRTZWxmLCAkRWxlbWVudCApID0gQF87CgogICAgcmV0dXJuIGlmICRFbGVtZW50IG5lICdnb3RvJzsKICAgIHJldHVybiAkU2VsZi0+dmlvbGF0aW9uKCAkRGVzY3JpcHRpb24sICRFeHBsYW5hdGlvbiwgJEVsZW1lbnQgKTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFBlcmw6OkNyaXRpYzo6UG9saWN5OjpPVFJTOjpQcm9oaWJpdE9wZW47Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgUGVybDo6Q3JpdGljOjpVdGlscyBxd3t9Owp1c2UgcGFyZW50ICdQZXJsOjpDcml0aWM6OlBvbGljeSc7CgpvdXIgJFZFUlNJT04gPSAnMC4wMSc7CgpteSAkRGVzY3JpcHRpb24gPSBxe1VzZSBvZiAib3BlbiIgaXMgbm90IGFsbG93ZWQgdG8gcmVhZCBvciB3cml0ZSBmaWxlcy59OwpteSAkRXhwbGFuYXRpb24gPSBxe1VzZSBNYWluT2JqZWN0OjpGaWxlUmVhZCgpIG9yIEZpbGVXcml0ZSgpIGluc3RlYWQufTsKCnN1YiBzdXBwb3J0ZWRfcGFyYW1ldGVycyB7IHJldHVybjsgfQpzdWIgZGVmYXVsdF9zZXZlcml0eSAgICAgeyByZXR1cm4gJFBlcmw6OkNyaXRpYzo6VXRpbHM6OlNFVkVSSVRZX0hJR0hFU1Q7IH0Kc3ViIGRlZmF1bHRfdGhlbWVzICAgICAgIHsgcmV0dXJuIHF3KCBvdHJzICkgfQpzdWIgYXBwbGllc190byAgICAgICAgICAgeyByZXR1cm4gJ1BQSTo6VG9rZW46OldvcmQnIH0KCnN1YiB2aW9sYXRlcyB7CiAgICBteSAoICRTZWxmLCAkRWxlbWVudCApID0gQF87CgogICAgIyBPbmx5IG9wZXJhdGUgb24gY2FsbHMgb2Ygb3BlbigpCiAgICByZXR1cm4gaWYgJEVsZW1lbnQgbmUgJ29wZW4nOwoKICAgIG15ICROZXh0U2libGluZyA9ICRFbGVtZW50LT5zbmV4dF9zaWJsaW5nKCk7CiAgICByZXR1cm4gaWYgISROZXh0U2libGluZzsKCiAgICAjIEZpbmQgb3BlbiBtb2RlIHNwZWNpZmllcgogICAgbXkgJE9wZW5Nb2RlOwoKICAgICMgcGFyZW50aGVzZXMgYXJvdW5kIG9wZW4gYXJlIHByZXNlbnQ6IG9wZW4oKQogICAgaWYgKCAkTmV4dFNpYmxpbmctPmlzYSgnUFBJOjpTdHJ1Y3R1cmU6Okxpc3QnKSApIHsKICAgICAgICBteSAkUXVvdGUgPSAkTmV4dFNpYmxpbmctPmZpbmQoJ1BQSTo6VG9rZW46OlF1b3RlJyk7CiAgICAgICAgcmV0dXJuIGlmICggcmVmICRRdW90ZSBuZSAnQVJSQVknICk7CiAgICAgICAgJE9wZW5Nb2RlID0gJFF1b3RlLT5bMF0tPnN0cmluZygpOwogICAgfQoKICAgICMgcGFyZW50aGVzZXMgYXJlIG5vdCBwcmVzZW50CiAgICBlbHNlIHsKICAgICAgICAjIExvb3AgdW50aWwgd2UgZm91bmQgdGhlIFRva2VuIGFmdGVyIHRoZSBmaXJzdCBjb21tYQogICAgICAgIG15ICRDb3VudGVyOwogICAgICAgIENPVU5URVI6CiAgICAgICAgd2hpbGUgKCAkQ291bnRlcisrIDwgMTAgKSB7CiAgICAgICAgICAgICROZXh0U2libGluZyA9ICROZXh0U2libGluZy0+c25leHRfc2libGluZygpOwoKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJE5leHRTaWJsaW5nLT5pc2EoJ1BQSTo6VG9rZW46Ok9wZXJhdG9yJykKICAgICAgICAgICAgICAgICYmICROZXh0U2libGluZy0+Y29udGVudCgpIGVxICcsJwogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBteSAkUXVvdGUgPSAkTmV4dFNpYmxpbmctPnNuZXh0X3NpYmxpbmcoKTsKICAgICAgICAgICAgICAgIHJldHVybiBpZiAoICEkUXVvdGUgfHwgISRRdW90ZS0+aXNhKCdQUEk6OlRva2VuOjpRdW90ZScpICk7CiAgICAgICAgICAgICAgICAkT3Blbk1vZGUgPSAkUXVvdGUtPnN0cmluZygpOwogICAgICAgICAgICAgICAgbGFzdCBDT1VOVEVSOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJE9wZW5Nb2RlIGVxICc+JyB8fCAkT3Blbk1vZGUgZXEgJzwnICkgewogICAgICAgIHJldHVybiAkU2VsZi0+dmlvbGF0aW9uKCAkRGVzY3JpcHRpb24sICRFeHBsYW5hdGlvbiwgJEVsZW1lbnQgKTsKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFBlcmw6OkNyaXRpYzo6UG9saWN5OjpPVFJTOjpQcm9oaWJpdFJhbmRJblRlc3RzOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBTWU5PUFNJUzogQ2hlY2sgaWYgbW9kdWxlcyBoYXZlIGEgInRydWUiIHJldHVybiB2YWx1ZQoKdXNlIFBlcmw6OkNyaXRpYzo6VXRpbHMgcXd7fTsKdXNlIHBhcmVudCAnUGVybDo6Q3JpdGljOjpQb2xpY3knOwp1c2UgcGFyZW50ICdQZXJsOjpDcml0aWM6OlBvbGljeU9UUlMnOwoKb3VyICRWRVJTSU9OID0gJzAuMDInOwoKbXkgJERlc2NyaXB0aW9uID0gcXtVc2Ugb2YgInJhbmQoKSIgb3IgInNyYW5kKCkiIGlzIG5vdCBhbGxvd2VkIGluIHRlc3RzLn07Cm15ICRFeHBsYW5hdGlvbiA9IHF7VXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyOjpHZXRSYW5kb21OdW1iZXIoKSBvciBHZXRSYW5kb21JRCgpIGluc3RlYWQufTsKCnN1YiBzdXBwb3J0ZWRfcGFyYW1ldGVycyB7IHJldHVybjsgfQpzdWIgZGVmYXVsdF9zZXZlcml0eSAgICAgeyByZXR1cm4gJFBlcmw6OkNyaXRpYzo6VXRpbHM6OlNFVkVSSVRZX0hJR0hFU1Q7IH0Kc3ViIGRlZmF1bHRfdGhlbWVzICAgICAgIHsgcmV0dXJuIHF3KCBvdHJzICkgfQpzdWIgYXBwbGllc190byAgICAgICAgICAgeyByZXR1cm4gJ1BQSTo6VG9rZW46OldvcmQnIH0KCiMgT25seSBhcHBseSB0byB0ZXN0ICgudCkgZmlsZXMuCnN1YiBwcmVwYXJlX3RvX3NjYW5fZG9jdW1lbnQgewogICAgbXkgKCAkU2VsZiwgJERvY3VtZW50ICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA2LCAwICk7CgogICAgcmV0dXJuICREb2N1bWVudC0+bG9naWNhbF9maWxlbmFtZSgpID1+IG17IFwudCBceiB9eG1zOwp9CgpzdWIgdmlvbGF0ZXMgewogICAgbXkgKCAkU2VsZiwgJEVsZW1lbnQgKSA9IEBfOwoKICAgIGlmICggJEVsZW1lbnQgZXEgJ3JhbmQnIHx8ICRFbGVtZW50IGVxICdzcmFuZCcgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT52aW9sYXRpb24oICREZXNjcmlwdGlvbiwgJEV4cGxhbmF0aW9uLCAkRWxlbWVudCApOwogICAgfQoKICAgIHJldHVybjsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFBlcmw6OkNyaXRpYzo6UG9saWN5OjpPVFJTOjpQcm9oaWJpdFNtYXJ0TWF0Y2hPcGVyYXRvcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBQZXJsOjpDcml0aWM6OlV0aWxzIHF3e307CnVzZSBwYXJlbnQgJ1Blcmw6OkNyaXRpYzo6UG9saWN5JzsKCm91ciAkVkVSU0lPTiA9ICcwLjAxJzsKCm15ICREZXNjcmlwdGlvbiA9IHF7VXNlIG9mIHNtYXJ0IG1hdGNoIG9wZXJhdG9yIH5+IGlzIG5vdCBhbGxvd2VkfTsKbXkgJEV4cGxhbmF0aW9uID0KICAgIHF7VGhpcyBvcGVyYXRvciBiZWhhdmVzIGRpZmZlcmVudGx5IGluIFBlcmwgNS4xMC4wIGFuZCA1LjEwLjEufTsKCnN1YiBzdXBwb3J0ZWRfcGFyYW1ldGVycyB7IHJldHVybjsgfQpzdWIgZGVmYXVsdF9zZXZlcml0eSAgICAgeyByZXR1cm4gJFBlcmw6OkNyaXRpYzo6VXRpbHM6OlNFVkVSSVRZX0hJR0hFU1Q7IH0Kc3ViIGRlZmF1bHRfdGhlbWVzICAgICAgIHsgcmV0dXJuIHF3KCBvdHJzICkgfQpzdWIgYXBwbGllc190byAgICAgICAgICAgeyByZXR1cm4gJ1BQSTo6VG9rZW46Ok9wZXJhdG9yJyB9CgpzdWIgdmlvbGF0ZXMgewogICAgbXkgKCAkU2VsZiwgJEVsZW1lbnQgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkRWxlbWVudCBuZSAnfn4nOwogICAgcmV0dXJuICRTZWxmLT52aW9sYXRpb24oICREZXNjcmlwdGlvbiwgJEV4cGxhbmF0aW9uLCAkRWxlbWVudCApOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFBlcmw6OkNyaXRpYzo6UG9saWN5OjpPVFJTOjpQcm9oaWJpdFVubGVzczsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBQZXJsOjpDcml0aWM6OlV0aWxzIHF3e307CnVzZSBwYXJlbnQgJ1Blcmw6OkNyaXRpYzo6UG9saWN5JzsKdXNlIHBhcmVudCAnUGVybDo6Q3JpdGljOjpQb2xpY3lPVFJTJzsKCm91ciAkVkVSU0lPTiA9ICcwLjAxJzsKCm15ICREZXNjcmlwdGlvbiA9IHF7VXNlIG9mICd1bmxlc3MnIGlzIG5vdCBhbGxvd2VkLn07Cm15ICRFeHBsYW5hdGlvbiA9IHF7UGxlYXNlIHVzZSBhIG5lZ2F0aW5nICdpZicgaW5zdGVhZC59OwoKc3ViIHN1cHBvcnRlZF9wYXJhbWV0ZXJzIHsgcmV0dXJuOyB9CnN1YiBkZWZhdWx0X3NldmVyaXR5ICAgICB7IHJldHVybiAkUGVybDo6Q3JpdGljOjpVdGlsczo6U0VWRVJJVFlfSElHSEVTVDsgfQpzdWIgZGVmYXVsdF90aGVtZXMgICAgICAgeyByZXR1cm4gcXcoIG90cnMgKSB9CnN1YiBhcHBsaWVzX3RvICAgICAgICAgICB7IHJldHVybiAnUFBJOjpUb2tlbjo6V29yZCcgfQoKc3ViIHByZXBhcmVfdG9fc2Nhbl9kb2N1bWVudCB7CiAgICBteSAoICRTZWxmLCAkRG9jdW1lbnQgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDQsIDAgKTsKCiAgICByZXR1cm4gMTsKfQoKc3ViIHZpb2xhdGVzIHsKICAgIG15ICggJFNlbGYsICRFbGVtZW50ICkgPSBAXzsKCiAgICByZXR1cm4gaWYgKCAkRWxlbWVudC0+Y29udGVudCgpIG5lICd1bmxlc3MnICk7CiAgICByZXR1cm4gJFNlbGYtPnZpb2xhdGlvbiggJERlc2NyaXB0aW9uLCAkRXhwbGFuYXRpb24sICRFbGVtZW50ICk7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFBlcmw6OkNyaXRpYzo6UG9saWN5OjpPVFJTOjpSZXF1aXJlQ2FtZWxDYXNlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIFBlcmw6OkNyaXRpYzo6VXRpbHMgcXd7fTsKdXNlIHBhcmVudCAnUGVybDo6Q3JpdGljOjpQb2xpY3knOwp1c2UgcGFyZW50ICdQZXJsOjpDcml0aWM6OlBvbGljeU9UUlMnOwoKb3VyICRWRVJTSU9OID0gJzAuMDEnOwoKbXkgJERlc2NyaXB0aW9uID0gcXtWYXJpYWJsZSwgc3Vicm91dGluZSwgYW5kIHBhY2thZ2UgbmFtZXMgaGF2ZSB0byBiZSBpbiBDYW1lbENhc2V9OwpteSAkRXhwbGFuYXRpb24gPSBxe307CgpzdWIgc3VwcG9ydGVkX3BhcmFtZXRlcnMgeyByZXR1cm47IH0Kc3ViIGRlZmF1bHRfc2V2ZXJpdHkgICAgIHsgcmV0dXJuICRQZXJsOjpDcml0aWM6OlV0aWxzOjpTRVZFUklUWV9ISUdIRVNUOyB9CnN1YiBkZWZhdWx0X3RoZW1lcyAgICAgICB7IHJldHVybiBxdyggb3RycyApIH0KCm15ICVEaXNwYXRjaGVyID0gKAogICAgJ1BQSTo6U3RhdGVtZW50OjpTdWInICAgICA9PiBcJklzQ2FtZWxDYXNlLAogICAgJ1BQSTo6U3RhdGVtZW50OjpQYWNrYWdlJyA9PiBcJklzQ2FtZWxDYXNlLAogICAgJ1BQSTo6VG9rZW46OlN5bWJvbCcgICAgICA9PiBcJlZhcmlhYmxlSXNDYW1lbENhc2UsCik7CgpzdWIgYXBwbGllc190byB7CiAgICByZXR1cm4ga2V5cyAlRGlzcGF0Y2hlcjsKfQoKc3ViIHByZXBhcmVfdG9fc2Nhbl9kb2N1bWVudCB7CiAgICBteSAoICRTZWxmLCAkRG9jdW1lbnQgKSA9IEBfOwoKICAgICMgQ2xlYW51cCwgb25lIGluc3RhbmNlIGNhbiBzY2FuIG11bHRpcGxlIGZpbGVzLgogICAgZGVsZXRlICRTZWxmLT57X0lzRGVyaXZlZE1vZHVsZX07CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggMywgMyApOwoKICAgIGlmICggJERvY3VtZW50LT5sb2dpY2FsX2ZpbGVuYW1lKCkgIX4gbXsgKFwucG0pIFx6IH14bXMgKSB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgIyBGaW5kIGFsbCB1c2UgcGFyZW50L2Jhc2Ugc3RhdGVtZW50cwogICAgbXkgJEZpbmRQZXJsSW5oZXJpdGFuY2UgPSBzdWIgewogICAgICAgIHJldHVybiAkRG9jdW1lbnQtPmZpbmRfYW55KAogICAgICAgICAgICBzdWIgewogICAgICAgICAgICAgICAgcmV0dXJuICRfWzFdLT5pc2EoJ1BQSTo6U3RhdGVtZW50OjpJbmNsdWRlJykgJiYgJF9bMV0gPX4gbXtcQSB1c2UgXHMrIChwYXJlbnR8YmFzZSkgXHMrfXNteDsKICAgICAgICAgICAgfQogICAgICAgICk7CiAgICB9OwoKICAgICMgRmluZCBhbnkgTW9vc2UsIE1vbywgTW9vc2U6OlJvbGUgb3IgTW9vOjpSb2xlIG9iamVjdHMgdGhhdCBleHRlbmQgYW5vdGhlciBjbGFzcyBvciByb2xlIChleHRlbmRzL3dpdGgpLgogICAgbXkgJEZpbmRNb29zZUluaGVyaXRhbmNlID0gc3ViIHsKICAgICAgICBteSAkTW9vc2VGb3VuZCA9ICREb2N1bWVudC0+ZmluZF9hbnkoCiAgICAgICAgICAgIHN1YiB7IHJldHVybiAkX1sxXS0+aXNhKCdQUEk6OlN0YXRlbWVudDo6SW5jbHVkZScpICYmICRfWzFdID1+IG17XEEgdXNlIFxzKyBNb28oc2UpPyg6OlJvbGUpP31zbXggfQogICAgICAgICk7CgogICAgICAgIHJldHVybiAwIGlmICEkTW9vc2VGb3VuZDsKCiAgICAgICAgcmV0dXJuICREb2N1bWVudC0+ZmluZF9hbnkoCiAgICAgICAgICAgIHN1YiB7IHJldHVybiAkX1sxXS0+aXNhKCdQUEk6OlRva2VuOjpXb3JkJykgJiYgJF9bMV0gPX4gbXtcQSBleHRlbmRzfHdpdGggXFp9c214IH0KICAgICAgICApOwogICAgfTsKCiAgICAjIEZpbmQgYW55IE1vam86OkJhc2UgaW5oZXJpdGFuY2UuCiAgICBteSAkRmluZE1vam9Jbmhlcml0YW5jZSA9IHN1YiB7CiAgICAgICAgcmV0dXJuICREb2N1bWVudC0+ZmluZF9hbnkoCiAgICAgICAgICAgIHN1YiB7IHJldHVybiAkX1sxXS0+aXNhKCdQUEk6OlN0YXRlbWVudDo6SW5jbHVkZScpICYmICRfWzFdID1+IG17XEEgdXNlIFxzKyBNb2pvOjpCYXNlfXNteCB9CiAgICAgICAgKTsKICAgIH07CgogICAgIyBGaW5kIGFsbCBLOjpTOjpNYWluLT5SZXF1aXJlQmFzZUNsYXNzKCkgc3RhdGVtZW50cy4KICAgIG15ICRGaW5kUmVxdWlyZUJhc2VDbGFzcyA9IHN1YiB7CiAgICAgICAgcmV0dXJuICREb2N1bWVudC0+ZmluZF9hbnkoCiAgICAgICAgICAgIHN1YiB7CiAgICAgICAgICAgICAgICByZXR1cm4gJF9bMV0tPmlzYSgnUFBJOjpUb2tlbjo6V29yZCcpICYmICRfWzFdIGVxICdSZXF1aXJlQmFzZUNsYXNzJzsKICAgICAgICAgICAgfQogICAgICAgICk7CiAgICB9OwoKICAgIGlmICgKICAgICAgICAkRmluZFBlcmxJbmhlcml0YW5jZS0+KCkKICAgICAgICB8fCAkRmluZE1vb3NlSW5oZXJpdGFuY2UtPigpCiAgICAgICAgfHwgJEZpbmRNb2pvSW5oZXJpdGFuY2UtPigpCiAgICAgICAgfHwgJEZpbmRSZXF1aXJlQmFzZUNsYXNzLT4oKQogICAgICAgICkKICAgIHsKICAgICAgICAkU2VsZi0+e19Jc0Rlcml2ZWRNb2R1bGV9ID0gMTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIHZpb2xhdGVzIHsKICAgIG15ICggJFNlbGYsICRFbGVtZW50ICkgPSBAXzsKCiAgICAkU2VsZi0+e0Vycm9yc30gPSAoKTsKCiAgICBteSAkRnVuY3Rpb24gPSAkRGlzcGF0Y2hlcnsgcmVmICRFbGVtZW50IH07CiAgICByZXR1cm4gaWYgISRGdW5jdGlvbjsKICAgIHJldHVybiBpZiAkU2VsZi0+JEZ1bmN0aW9uKCRFbGVtZW50KTsKCiAgICByZXR1cm4gJFNlbGYtPnZpb2xhdGlvbiggIiREZXNjcmlwdGlvbjogIiAuIGpvaW4oICIsICIsIEB7ICRTZWxmLT57RXJyb3JzfSB9ICksICRFeHBsYW5hdGlvbiwgJEVsZW1lbnQgKTsKfQoKc3ViIElzQ2FtZWxDYXNlIHsKICAgIG15ICggJFNlbGYsICRFbGVtZW50ICkgPSBAXzsKCiAgICBteSAkTmFtZSA9ICRFbGVtZW50LT5maW5kKCdQUEk6OlRva2VuOjpXb3JkJyktPlsxXTsKCiAgICByZXR1cm4gMSBpZiAhJE5hbWU7CgogICAgbXkgJUFsbG93ZWRGdW5jdGlvbnMgPSAoCiAgICAgICAgbmV3ID0+IDEsCiAgICApOwoKICAgIGlmICggJEVsZW1lbnQtPmlzYSgnUFBJOjpTdGF0ZW1lbnQ6OlN1YicpICkgewogICAgICAgIHJldHVybiAxIGlmICRBbGxvd2VkRnVuY3Rpb25zeyROYW1lfTsKICAgICAgICByZXR1cm4gMSBpZiAkU2VsZi0+e19Jc0Rlcml2ZWRNb2R1bGV9OwogICAgfQogICAgZWxzaWYgKCAkRWxlbWVudC0+aXNhKCdQUEk6OlN0YXRlbWVudDo6UGFja2FnZScpICkgewogICAgICAgIGlmICgKICAgICAgICAgICAgJE5hbWUgPX4gbXsgS2VybmVsOjpMYW5ndWFnZSA6OiBbYS16XXsyLDN9XyB9eG1zCiAgICAgICAgICAgIHx8ICROYW1lIGVxICdtYWluJwogICAgICAgICAgICB8fCAkTmFtZSA9fiBteyBec2NyaXB0czo6IH14bXMKICAgICAgICAgICAgfHwgJE5hbWUgPX4gbXsgXnZhcjo6cGFja2FnZXNldHVwOjogfXhtcwogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJElzQ2FtZWxDYXNlID0gISggJE5hbWUgIX4gbXsgXEEgXyogW0EtWl1bYS16XSogfXhtcyB8fCAkTmFtZSA9fiBteyBbXl9dXyB9eG1zICk7CgogICAgaWYgKCAhJElzQ2FtZWxDYXNlICkgewogICAgICAgIHB1c2ggQHsgJFNlbGYtPntFcnJvcnN9IH0sICROYW1lOwogICAgfQoKICAgIHJldHVybiAkSXNDYW1lbENhc2U7Cn0KCnN1YiBWYXJpYWJsZUlzQ2FtZWxDYXNlIHsKICAgIG15ICggJFNlbGYsICRFbGVtZW50ICkgPSBAXzsKCiAgICBteSAkTmFtZSA9ICIkRWxlbWVudCI7CiAgICByZXR1cm4gMSBpZiAhJE5hbWU7CgogICAgIyBBbGxvdyB2YXJpYWJsZXMgZnJvbSBvdGhlciBwYWNrYWdlcy4KICAgIHJldHVybiAxIGlmIGluZGV4KCAkTmFtZSwgJzo6JyApID4gLTE7CgogICAgIyBBbGxvdyBQZXJsIGJ1aWx0aW5zLgogICAgcmV0dXJuIDEgaWYgJE5hbWUgZXEgJyRhJzsKICAgIHJldHVybiAxIGlmICROYW1lIGVxICckYic7CgogICAgIyBJZ25vcmUgZnVuY3Rpb24gY2FsbHMKICAgIHJldHVybiAxIGlmIHN1YnN0ciggJE5hbWUsIDAsIDEgKSBlcSAnJic7CgogICAgIyBBbGxvdyBzaG9ydCB2YXJpYWJsZSBuYW1lcyB3aXRoIGxvd2VyY2FzZSBjaGFyYWN0ZXJzIGxpa2UgJHMuCiAgICByZXR1cm4gMSBpZiBsZW5ndGggJE5hbWUgPT0gMjsKCiAgICBteSAkSXNDYW1lbENhc2UgPSAhKCAkTmFtZSAhfiBteyBcQSBbXCpcQFwkXCVdXypbQS1aXVthLXpdKiB9eG1zIHx8ICROYW1lID1+IG17IFteX11fIH14bXMgKTsKCiAgICBpZiAoICEkSXNDYW1lbENhc2UgKSB7CiAgICAgICAgcHVzaCBAeyAkU2VsZi0+e0Vycm9yc30gfSwgJE5hbWU7CiAgICB9CgogICAgcmV0dXJuICRJc0NhbWVsQ2FzZTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFBlcmw6OkNyaXRpYzo6UG9saWN5OjpPVFJTOjpSZXF1aXJlTGFiZWxzOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIFBlcmw6OkNyaXRpYzo6VXRpbHMgcXd7fTsKdXNlIHBhcmVudCAnUGVybDo6Q3JpdGljOjpQb2xpY3knOwp1c2UgcGFyZW50ICdQZXJsOjpDcml0aWM6OlBvbGljeU9UUlMnOwoKbXkgJERlc2NyaXB0aW9uID0gcXtQbGVhc2UgYWx3YXlzIHVzZSAnbmV4dCcgYW5kICdsYXN0JyB3aXRoIGEgbGFiZWwufTsKbXkgJEV4cGxhbmF0aW9uID0gcXt9OwoKc3ViIHN1cHBvcnRlZF9wYXJhbWV0ZXJzIHsgcmV0dXJuOyB9CnN1YiBkZWZhdWx0X3NldmVyaXR5ICAgICB7IHJldHVybiAkUGVybDo6Q3JpdGljOjpVdGlsczo6U0VWRVJJVFlfSElHSEVTVDsgfQpzdWIgZGVmYXVsdF90aGVtZXMgICAgICAgeyByZXR1cm4gcXcoIG90cnMgKSB9CnN1YiBhcHBsaWVzX3RvICAgICAgICAgICB7IHJldHVybiAnUFBJOjpTdGF0ZW1lbnQ6OkJyZWFrJyB9CgpzdWIgcHJlcGFyZV90b19zY2FuX2RvY3VtZW50IHsKICAgIG15ICggJFNlbGYsICREb2N1bWVudCApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggNCwgMCApOwoKICAgIHJldHVybiAxOwp9CgpzdWIgdmlvbGF0ZXMgewogICAgbXkgKCAkU2VsZiwgJEVsZW1lbnQgKSA9IEBfOwoKICAgIG15IEBDaGlsZHJlbiA9ICRFbGVtZW50LT5jaGlsZHJlbigpOwogICAgaWYgKCAkQ2hpbGRyZW5bMF0tPmNvbnRlbnQoKSBuZSAnbmV4dCcgJiYgJENoaWxkcmVuWzBdLT5jb250ZW50KCkgbmUgJ2xhc3QnICkgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkTGFiZWwgPSAkQ2hpbGRyZW5bMF0tPnNuZXh0X3NpYmxpbmcoKTsKCiAgICBpZiAoCiAgICAgICAgISRMYWJlbAogICAgICAgIHx8ICEkTGFiZWwtPmlzYSgnUFBJOjpUb2tlbjo6V29yZCcpCiAgICAgICAgfHwgJExhYmVsLT5jb250ZW50KCkgIX4gbXteW0EtWl9dK314bXMKICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuICRTZWxmLT52aW9sYXRpb24oICREZXNjcmlwdGlvbiwgJEV4cGxhbmF0aW9uLCAkRWxlbWVudCApOwogICAgfQoKICAgIHJldHVybjsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFBlcmw6OkNyaXRpYzo6UG9saWN5OjpPVFJTOjpSZXF1aXJlUGFyZW5zV2l0aE1ldGhvZHM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgUGVybDo6Q3JpdGljOjpVdGlscyBxd3t9Owp1c2UgcGFyZW50ICdQZXJsOjpDcml0aWM6OlBvbGljeSc7CgpvdXIgJFZFUlNJT04gPSAnMC4wMSc7CgpteSAkRGVzY3JpcHRpb24gPSBxe01ldGhvZCBpbnZvY2F0aW9uIHNob3VsZCB1c2UgIigpIn07Cm15ICRFeHBsYW5hdGlvbiA9IHF7VXNlICItPk1ldGhvZE5hbWUoKSIgaW5zdGVhZCBvZiAiLT5NZXRob2ROYW1lIi59OwoKc3ViIHN1cHBvcnRlZF9wYXJhbWV0ZXJzIHsgcmV0dXJuOyB9CnN1YiBkZWZhdWx0X3NldmVyaXR5ICAgICB7IHJldHVybiAkUGVybDo6Q3JpdGljOjpVdGlsczo6U0VWRVJJVFlfSElHSEVTVDsgfQpzdWIgZGVmYXVsdF90aGVtZXMgICAgICAgeyByZXR1cm4gcXcoIG90cnMgKSB9CnN1YiBhcHBsaWVzX3RvICAgICAgICAgICB7IHJldHVybiAnUFBJOjpUb2tlbjo6T3BlcmF0b3InIH0KCnN1YiB2aW9sYXRlcyB7CiAgICBteSAoICRTZWxmLCAkRWxlbWVudCApID0gQF87CgogICAgcmV0dXJuIGlmICRFbGVtZW50IG5lICctPic7CgogICAgbXkgJE1ldGhvZCA9ICRFbGVtZW50LT5zbmV4dF9zaWJsaW5nKCk7CgogICAgIyAkVmFyaWFibGUtPigpOwogICAgcmV0dXJuIGlmIHJlZiAkTWV0aG9kIGVxICdQUEk6OlN0cnVjdHVyZTo6TGlzdCc7CgogICAgIyAkVmFyaWFibGUtPm1ldGhvZCgpOwogICAgcmV0dXJuIGlmIHJlZiAkTWV0aG9kIGVxICdQUEk6OlN0cnVjdHVyZTo6U3Vic2NyaXB0JzsKCiAgICBteSAkTGlzdCA9ICRNZXRob2QtPnNuZXh0X3NpYmxpbmcoKTsKICAgIHJldHVybiBpZiByZWYgJExpc3QgZXEgJ1BQSTo6U3RydWN0dXJlOjpMaXN0JzsKCiAgICByZXR1cm4gJFNlbGYtPnZpb2xhdGlvbiggJERlc2NyaXB0aW9uLCAkRXhwbGFuYXRpb24sICRFbGVtZW50ICk7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFBlcmw6OkNyaXRpYzo6UG9saWN5OjpPVFJTOjpSZXF1aXJlVHJ1ZVJldHVyblZhbHVlRm9yTW9kdWxlczsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgU1lOT1BTSVM6IENoZWNrIGlmIG1vZHVsZXMgaGF2ZSBhICJ0cnVlIiByZXR1cm4gdmFsdWUKCnVzZSBQZXJsOjpDcml0aWM6OlV0aWxzIHF3e307CnVzZSBwYXJlbnQgJ1Blcmw6OkNyaXRpYzo6UG9saWN5JzsKCm91ciAkVkVSU0lPTiA9ICcwLjAyJzsKCm15ICREZXNjcmlwdGlvbiA9IHF7TW9kdWxlcyBhbmQgdGVzdHMgaGF2ZSB0byByZXR1cm4gYSB0cnVlIHZhbHVlICgiMTsiKX07Cm15ICRFeHBsYW5hdGlvbiA9IHF7VXNlICIxOyIgYXMgdGhlIGxhc3Qgc3RhdGVtZW50IG9mIHRoZSBmaWxlfTsKCnN1YiBzdXBwb3J0ZWRfcGFyYW1ldGVycyB7IHJldHVybjsgfQpzdWIgZGVmYXVsdF9zZXZlcml0eSAgICAgeyByZXR1cm4gJFBlcmw6OkNyaXRpYzo6VXRpbHM6OlNFVkVSSVRZX0hJR0hFU1Q7IH0Kc3ViIGRlZmF1bHRfdGhlbWVzICAgICAgIHsgcmV0dXJuIHF3KCBvdHJzICkgfQpzdWIgYXBwbGllc190byAgICAgICAgICAgeyByZXR1cm4gJ1BQSTo6RG9jdW1lbnQnIH0KCiMgT25seSBhcHBseSB0byBQZXJsIG1vZHVsZXMgYW5kIHRlc3QgZmlsZXMsIG5vdCB0byBzY3JpcHRzLgpzdWIgcHJlcGFyZV90b19zY2FuX2RvY3VtZW50IHsKICAgIG15ICggJFNlbGYsICREb2N1bWVudCApID0gQF87CgogICAgcmV0dXJuICREb2N1bWVudC0+bG9naWNhbF9maWxlbmFtZSgpID1+IG17IChcLnBtfFwudCkgXHogfXhtczsKfQoKc3ViIHZpb2xhdGVzIHsKICAgIG15ICggJFNlbGYsICRFbGVtZW50ICkgPSBAXzsKCiAgICBteSAkTGFzdFN0YXRlbWVudCA9ICRFbGVtZW50LT5zY2hpbGQoLTEpOwogICAgcmV0dXJuIGlmICRMYXN0U3RhdGVtZW50ICYmICRMYXN0U3RhdGVtZW50IGVxICcxOyc7CgogICAgcmV0dXJuICRTZWxmLT52aW9sYXRpb24oICREZXNjcmlwdGlvbiwgJEV4cGxhbmF0aW9uLCAkRWxlbWVudCApOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFBlcmw6OkNyaXRpYzo6UG9saWN5T1RSUzsKCiMKIyBCYXNlIGNsYXNzIGZvciBjdXN0b21lIFBlcmw6OkNyaXRpYyBwb2xpY2llcy4KIwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKbm8gc3RyaWN0ICd2YXJzJzsgICAgIyMgbm8gY3JpdGljCgp1c2UgdmFycyBxdygKICAgICRUaWR5QWxsOjpPVFJTOjpGcmFtZXdvcmtWZXJzaW9uTWFqb3IKICAgICRUaWR5QWxsOjpPVFJTOjpGcmFtZXdvcmtWZXJzaW9uTWlub3IKKTsKCiMgQmFzZSBjbGFzcyBmb3IgT1RSUyBwZXJsIGNyaXRpYyBwb2xpY2llcwoKc3ViIElzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuIHsKICAgIG15ICggJFNlbGYsICRGcmFtZXdvcmtWZXJzaW9uTWFqb3IsICRGcmFtZXdvcmtWZXJzaW9uTWlub3IgKSA9IEBfOwoKICAgIGlmICgkVGlkeUFsbDo6T1RSUzo6RnJhbWV3b3JrVmVyc2lvbk1ham9yKSB7CiAgICAgICAgcmV0dXJuIDEgaWYgJFRpZHlBbGw6Ok9UUlM6OkZyYW1ld29ya1ZlcnNpb25NYWpvciA8ICRGcmFtZXdvcmtWZXJzaW9uTWFqb3I7CiAgICAgICAgcmV0dXJuIDAgaWYgJFRpZHlBbGw6Ok9UUlM6OkZyYW1ld29ya1ZlcnNpb25NYWpvciA+ICRGcmFtZXdvcmtWZXJzaW9uTWFqb3I7CiAgICAgICAgcmV0dXJuIDEgaWYgJFRpZHlBbGw6Ok9UUlM6OkZyYW1ld29ya1ZlcnNpb25NaW5vciA8ICRGcmFtZXdvcmtWZXJzaW9uTWlub3I7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgIyBEZWZhdWx0OiBpZiBmcmFtZXdvcmsgaXMgdW5rbm93biwgcmV0dXJuIGZhbHNlIChzdHJpY3QgY2hlY2tzKS4KICAgIHJldHVybiAwOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6Q2FjaGVOZXc7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybCk7CgojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OkNhY2hlTmV3KQojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6Ok9iamVjdERlcGVuZGVuY2llcykKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggNCwgMCApOwoKICAgICRDb2RlID0gJFNlbGYtPlN0cmlwUG9kKCBDb2RlID0+ICRDb2RlICk7CgogICAgbXkgKCAkRXJyb3JNZXNzYWdlLCAkQ291bnRlciApOwoKICAgIExJTkU6CiAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCAvXG4vLCAkQ29kZSApIHsKICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICBpZiAoICRMaW5lID1+IG0vS2VybmVsOjpTeXN0ZW06OkNhY2hlLT5uZXcvc214ICkgewogICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKRG9uJ3QgY3JlYXRlIHlvdXIgb3duIGluc3RhbmNlIG9mIEtlcm5lbDo6U3lzdGVtOjpDYWNoZS5wbSwgYnV0IHVzZSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKSBpbnN0ZWFkLgokRXJyb3JNZXNzYWdlCkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6REJPYmplY3Q7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7Cgp1c2UgcGFyZW50IHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybCk7CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKICAgIHJldHVybiAgICAgICBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDMsIDMgKTsKCiAgICAkQ29kZSA9ICRTZWxmLT5TdHJpcFBvZCggQ29kZSA9PiAkQ29kZSApOwogICAgJENvZGUgPSAkU2VsZi0+U3RyaXBDb21tZW50cyggQ29kZSA9PiAkQ29kZSApOwoKICAgIG15ICggJEVycm9yTWVzc2FnZSwgJENvdW50ZXIgKTsKCiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lICggc3BsaXQgL1xuLywgJENvZGUgKSB7CiAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICBuZXh0IExJTkUgaWYgJExpbmUgIX4gbXtce0RCT2JqZWN0XH19c214OwogICAgICAgIG5leHQgTElORSBpZiAkTGluZSA9fiBte0RCT2JqZWN0IFxzKyAgICA9PiBccyBcJFNlbGYtPlx7REJPYmplY3RcfSB9c214OwoKICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwpEb24ndCB1c2UgdGhlIERCT2JqZWN0IGluIGZyb250ZW5kIG1vZHVsZXMuCiRFcnJvck1lc3NhZ2UKRU9GCiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6RGllRXhpdDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsKTsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgbXkgKCAkRXJyb3JNZXNzYWdlLCAkQ291bnRlciApOwoKICAgIExJTkU6CiAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCAvXG4vLCAkQ29kZSApIHsKICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICBuZXh0IExJTkUgaWYgJExpbmUgPX4gbS9eXHMqXCMvc214OwoKICAgICAgICBpZiAoICRMaW5lID1+IG17XiBccyogKGRpZXxleGl0KSAoO3xcc3xcKCkgfXNteCApIHsKICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiTGluZSAkQ291bnRlcjogJExpbmVcbiI7CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7CkRvbid0IHVzZSAnZGllJyBhbmQgJ2V4aXQnIGluIG1vZHVsZXMuCiRFcnJvck1lc3NhZ2UKRU9GCiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6RHVtcGVyOwojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OkR1bXBlcikKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmwpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CiAgICByZXR1cm4gaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCAzLCAyICk7CgogICAgbXkgKCAkRXJyb3JNZXNzYWdlLCAkQ291bnRlciApOwoKICAgIExJTkU6CiAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCAvXG4vLCAkQ29kZSApIHsKICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICBuZXh0IExJTkUgaWYgJExpbmUgPX4gbS9eXHMqXCMvc214OwoKICAgICAgICBpZiAoICRMaW5lID1+IG17dXNlXHMrRGF0YTo6RHVtcGVyfCgtPnxccylEdW1wZXJcKH1zbXggKSB7CiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIkxpbmUgJENvdW50ZXI6ICRMaW5lXG4iOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwpVc2UgTWFpbjo6RHVtcCgpIGluc3RlYWQgb2YgRHVtcGVyKCkuCkRvbid0IGZvcmdldCB0byByZW1vdmUgZGVidWcgY29kZSBsaWtlIHByaW50IFNUREVSUiBEdW1wZXIoLi4uKS4KJEVycm9yTWVzc2FnZQpFT0YKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6Rm9yZWFjaFRvRm9yOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmwpOwoKc3ViIHRyYW5zZm9ybV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggMywgMiApOwoKICAgICMgVGhlIGZvbGxvd2luZyB0ZXN0IG1hdGNoZXMgb25seSBmb3IgYSBmb3JlYWNoIHdpdGhvdXQgYSAiIyIgaW4gdGhlCiAgICAjIGJlZ2lubmluZyBvZiBhIGxpbmUuIFRoZSBmb3JlYWNoIGhhcyB0byBiZSB0aGUgZmlyc3QgZXhwcmVzc2lvbiBpbiBhCiAgICAjIGxpbmUsIHNwYWNlcyBkbyBub3QgbWF0dGVyLiBUaGUgZm9yZWFjaCBpcyByZXBsYWNlZCB3aXRoIGZvci4KICAgICMgQ29tbWVudHMgYW5kIG90aGVyIGxpbmVzIHdpdGggb3RoZXIgY2hhcnMgYmVmb3JlIHRoZSBmb3JlYWNoIGFyZQogICAgIyBpZ25vcmVkLgoKICAgICRDb2RlID1+IHN7XiAoW14jXSBcc3swLDIwMH0pIGZvcmVhY2ggKC4qPykgfXskMWZvciQyfXhtc2c7CgogICAgcmV0dXJuICRDb2RlOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6Rm9yTXk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7Cgp1c2UgcGFyZW50IHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybCk7CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKICAgIHJldHVybiAgICAgICBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDMsIDMgKTsKCiAgICBteSAoICRDb3VudGVyLCAkRXJyb3JNZXNzYWdlICk7CgogICAgZm9yIG15ICRMaW5lICggc3BsaXQgL1xuLywgJENvZGUgKSB7CiAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgaWYgKCAkTGluZSA9fiBte14gXHMqIGZvciAoZWFjaCk/IFxzKyBcJC4rIFxzKyBcKCAgfXhtcyApIHsKICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiTGluZSAkQ291bnRlcjogJExpbmVcbiI7CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7ClBsZWFzZSB1c2UgbXkgdG8gZGVjbGFyZSB0aGUga2V5IHZhcmlhYmxlIGluCiRFcnJvck1lc3NhZ2UKRU9GCiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6SVNBOwojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OklTQSkKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsKTsKCnN1YiB0cmFuc2Zvcm1fc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDMsIDMgKTsKCiAgICAjIHJlbW92ZSB1c2VsZXNzIHVzZSB2YXJzIHF3KEBJU0EpOyAod2hlcmUgSVNBIGlzIG5vdCB1c2VkKQogICAgaWYgKCAkQ29kZSAhfiBte1xASVNBLipcQElTQX1zbXggKSB7CiAgICAgICAgJENvZGUgPX4gc3tedXNlIFxzKyB2YXJzIFxzKyBxd1woXEBJU0FcKTtcbit9e31zbXg7CiAgICB9CgogICAgcmV0dXJuICRDb2RlOwp9CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKICAgIHJldHVybiBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDMsIDMgKTsKCiAgICAjIERvbid0IGFsbG93IHB1c2ggQElTQS4KICAgIGlmICggJENvZGUgPX4gbXtwdXNoXCg/XHMqXEBJU0EgfXhtcyApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKRG9uJ3QgcHVzaCB0byBcQElTQSwgdGhpcyBjYW4gY2F1c2UgcHJvYmxlbXMgaW4gcGVyc2lzdGVudCBlbnZpcm9ubWVudHMuClVzZSBNYWluOjpSZXF1aXJlQmFzZUNsYXNzKCkgaW5zdGVhZC4KRU9GCiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6TGF5b3V0T2JqZWN0OwojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OkxheW91dE9iamVjdCkKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsKTsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuICAgICAgIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggMywgMyApOwogICAgcmV0dXJuICAgICAgIGlmICEkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDYsIDAgKTsKCiAgICAkQ29kZSA9ICRTZWxmLT5TdHJpcFBvZCggQ29kZSA9PiAkQ29kZSApOwogICAgJENvZGUgPSAkU2VsZi0+U3RyaXBDb21tZW50cyggQ29kZSA9PiAkQ29kZSApOwoKICAgIG15ICRGb3JiaWRkZW4gPSBxcntcJExheW91dE9iamVjdHxLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0fXhtczsKICAgIGlmICggJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA2LCAwICkgKSB7CiAgICAgICAgJEZvcmJpZGRlbiA9IHFye1wkTGF5b3V0T2JqZWN0fXhtczsKICAgIH0KCiAgICBpZiAoICRDb2RlID1+ICRGb3JiaWRkZW4gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7CkRvbid0IHVzZSB0aGUgTGF5b3V0T2JqZWN0IGluIGJpbi8gb3IgaW4gS2VybmVsL1N5c3RlbS4KRU9GCiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6Tm9FeGl0SW5Db25zb2xlQ29tbWFuZHM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7Cgp1c2UgcGFyZW50IHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybCk7CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICBteSAoICRFcnJvck1lc3NhZ2UsICRDb3VudGVyICk7CgogICAgTElORToKICAgIGZvciBteSAkTGluZSAoIHNwbGl0IC9cbi8sICRDb2RlICkgewogICAgICAgICRDb3VudGVyKys7CgogICAgICAgIG5leHQgTElORSBpZiAkTGluZSA9fiBtL15ccypcIy9zbXg7CgogICAgICAgIGlmICggJExpbmUgPX4gbXsgKF58XHMrKSBleGl0ICg7fFxzfFwoKSB9c214ICkgewogICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKRG9uJ3QgdXNlICdleGl0JyBpbiBjb25zb2xlIGNvbW1hbmRzLCB1c2UgJ3JldHVybiBcJFNlbGYtPkV4aXRDb2RlT2soKTsnIG9yICdyZXR1cm4gXCRTZWxmLT5FeGl0Q29kZUVycm9yKCk7JyBpbnN0ZWFkLgokRXJyb3JNZXNzYWdlCkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6Tm9TaGViYW5nTGluZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsKTsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgICMgQ2hlY2sgZm9yIGFic2Vuc2Ugb2Ygc2hlYmFuZyBsaW5lCiAgICBpZiAoIHN1YnN0ciggJENvZGUsIDAsIDIgKSBlcSAnIyEnICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwpQZXJsIG1vZHVsZXMgc2hvdWxkIG5vdCBoYXZlIGEgc2hlYmFuZyBsaW5lLgpFT0YKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6T2JqZWN0RGVwZW5kZW5jaWVzOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIwojIFRoaXMgcGx1Z2luIHNjYW5zIHBlcmwgcGFja2FnZXMgYW5kIGNvbXBhcmVzIHRoZSBvYmplY3RzIHRoZXkgcmVxdWVzdAojICAgZnJvbSB0aGUgT2JqZWN0TWFuYWdlciB3aXRoIHRoZSBkZXBlbmRlbmNpZXMgdGhleSBkZWNsYXJlIGFuZCBjb21wbGFpbnMKIyAgIGFib3V0IGFueSBtaXNzaW5nIGRlcGVuZGVuY2llcy4KIwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmwpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CiAgICByZXR1cm4gaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA0LCAwICk7CgogICAgJENvZGUgPSAkU2VsZi0+U3RyaXBQb2QoIENvZGUgPT4gJENvZGUgKTsKICAgICRDb2RlID0gJFNlbGYtPlN0cmlwQ29tbWVudHMoIENvZGUgPT4gJENvZGUgKTsKCiAgICAjIFNraXAgaWYgdGhlIGNvZGUgZG9lc24ndCB1c2UgdGhlIE9iamVjdE1hbmFnZXIuCiAgICByZXR1cm4gaWYgaW5kZXgoICRDb2RlLCAnJEtlcm5lbDo6T00nICkgPT0gLTE7CgogICAgIyBTa2lwIGlmIHdlIGhhdmUgYSByb2xlLCBhcyBpdCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkLgogICAgcmV0dXJuIGlmICRDb2RlID1+IG17dXNlXHMrTW9vKHNlKT86OlJvbGV9c214OwoKICAgICMgU2tpcCBpZiB3ZSBoYXZlIGEgd2ViYXBwIGNvbnRyb2xsZXIsIGFzIHRoZXNlIGFyZSBub3QgbWFuYWdlZCB2aWEgT00uCiAgICByZXR1cm4gaWYgJENvZGUgPX4gbXtwYWNrYWdlXHMrS2VybmVsOjpXZWJBcHA6OihDb250cm9sbGVyfFBsdWdpbnxTZXJ2ZXIpOjp9c214OwoKICAgICMgU2tpcCBpZiB3ZSBoYXZlIGEgdGVzdCBjYXNlIG9iamVjdCwgdGhlc2UgYXJlIG5vdCBtYW5hZ2VkIHZpYSBPTS4KICAgIHJldHVybiBpZiBpbmRleCggJENvZGUsICdwYWNrYWdlIEtlcm5lbDo6VGVzdDo6Q2FzZTo6JyApID4gLTE7CgogICAgIyBTa2lwIGlmIHRoZSBwYWNrYWdlIGNhbm5vdCBiZSBsb2FkZWQgdmlhIE9iamVjdE1hbmFnZXIKICAgIHJldHVybiBpZiAkQ29kZSA9fiBteyBeIFxzKiBvdXIgXHMqIFwkT2JqZWN0TWFuYWdlckRpc2FibGVkIFxzKiA9IFxzKiAxIH1zbXg7CgogICAgbXkgJEVycm9yTWVzc2FnZTsKCiAgICBpZiAoICRDb2RlID1+IG17XiBccyogb3VyIFxzKiBcJE9iamVjdE1hbmFnZXJBd2FyZX1zbXggKSB7CiAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiRG9uJ3QgdXNlIHRoZSBkZXByZWNhdGVkIGZsYWcgXCRPYmplY3RNYW5hZ2VyQXdhcmUuIEl0IGNhbiBiZSByZW1vdmVkLlxuIjsKICAgIH0KCiAgICAjCiAgICAjIE9rLCBmaXJzdCBjaGVjayBmb3IgdGhlIG9iamVjdHMgdGhhdCBhcmUgcmVxdWVzdGVkIGZyb20gT00uCiAgICAjCiAgICBteSBAVXNlZE9iamVjdHM7CgogICAgIyBPbmx5IG1hdGggd2hhdCBpcyBhYnNvbHV0ZWx5IG5lZWRlZCB0byBhdm9pZCBmYWxzZSBwb3NpdGl2ZXMuCiAgICBteSAkVmFsaWRMaXN0RXhwcmVzc2lvbiA9ICJbXEBhLXpBLVowLTlfWzpzcGFjZTpdOidcIiwoKV0rPyI7CgogICAgIyBSZWFsIEdldCgpIGNhbGxzLgogICAgJENvZGUgPX4gc3sKICAgICAgICBcJEtlcm5lbDo6T00tPkdldFwoIFxzKiAoW15cJF0kVmFsaWRMaXN0RXhwcmVzc2lvbikgXHMqIFwpCiAgICB9ewogICAgICAgIHB1c2ggQFVzZWRPYmplY3RzLCAkU2VsZi0+X0NsZWFudXBPYmplY3RMaXN0KAogICAgICAgICAgICBDb2RlID0+ICQxLAogICAgICAgICk7CiAgICAgICAgJyc7CiAgICB9ZXNteGc7CgogICAgIyBGb3IgbG9vcHMgd2l0aCBHZXQoKS4KICAgICRDb2RlID1+IHN7CiAgICAgICAgZm9yIFxzKyAoPzogbXkgXHMrIFwkW2EtekEtejAtOV9dKyBccyspPyBcKCgkVmFsaWRMaXN0RXhwcmVzc2lvbilcKVxzKlx7XG4KICAgICAgICAgICAgXHMrIFwkU2VsZi0+XHtcJC4qP1x9IFxzKiAoPzovL3xcfFx8KT89IFxzKiBcJEtlcm5lbDo6T00tPkdldFwoXHMqXCRbYS16QS1aMC05X10rP1xzKlwpOyBccysKICAgICAgICBcfQogICAgfXsKICAgICAgICBwdXNoIEBVc2VkT2JqZWN0cywgJFNlbGYtPl9DbGVhbnVwT2JqZWN0TGlzdCgKICAgICAgICAgICAgQ29kZSA9PiAkMSwKICAgICAgICApOwogICAgICAgICcnOwogICAgfWVzbXhnOwoKICAgICMKICAgICMgTm93IGNoZWNrIHRoZSBkZWNsYXJlZCBkZXBlbmRlbmNpZXMgYW5kIGNvbXBhcmUuCiAgICAjCiAgICBteSBARGVjbGFyZWRPYmplY3REZXBlbmRlbmNpZXM7CiAgICAkQ29kZSA9fiBzewogICAgICAgIF5vdXJccytcQE9iamVjdERlcGVuZGVuY2llc1xzKz1ccytcKCgkVmFsaWRMaXN0RXhwcmVzc2lvbilcKTsKICAgIH17CiAgICAgICAgQERlY2xhcmVkT2JqZWN0RGVwZW5kZW5jaWVzID0gJFNlbGYtPl9DbGVhbnVwT2JqZWN0TGlzdCgKICAgICAgICAgICAgQ29kZSA9PiAkMSwKICAgICAgICApOwogICAgICAgICcnOwogICAgfWVzbXg7CgogICAgbXkgJURlY2xhcmVkT2JqZWN0RGVwZW5kZW5jeUxvb2t1cDsKICAgIEBEZWNsYXJlZE9iamVjdERlcGVuZGVuY3lMb29rdXB7QERlY2xhcmVkT2JqZWN0RGVwZW5kZW5jaWVzfSA9IHVuZGVmOwoKICAgIG15IEBVbmRlY2xhcmVkT2JqZWN0RGVwZW5kZW5jaWVzOwogICAgbXkgJVNlZW47CiAgICBVU0VEX09CSkVDVDoKICAgIGZvciBteSAkVXNlZE9iamVjdCAoQFVzZWRPYmplY3RzKSB7CiAgICAgICAgbmV4dCBVU0VEX09CSkVDVCBpZiAkU2VlbnskVXNlZE9iamVjdH0rKzsKICAgICAgICBpZiAoICFleGlzdHMgJERlY2xhcmVkT2JqZWN0RGVwZW5kZW5jeUxvb2t1cHskVXNlZE9iamVjdH0gKSB7CiAgICAgICAgICAgIHB1c2ggQFVuZGVjbGFyZWRPYmplY3REZXBlbmRlbmNpZXMsICRVc2VkT2JqZWN0OwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoQFVuZGVjbGFyZWRPYmplY3REZXBlbmRlbmNpZXMpIHsKICAgICAgICAkRXJyb3JNZXNzYWdlCiAgICAgICAgICAgIC49ICJUaGUgZm9sbG93aW5nIG9iamVjdHMgYXJlIHVzZWQgaW4gdGhlIGNvZGUsIGJ1dCBub3QgZGVjbGFyZWQgYXMgZGVwZW5kZW5jaWVzOlxuIjsKICAgICAgICAkRXJyb3JNZXNzYWdlCiAgICAgICAgICAgIC49IGpvaW4oICIsXG4iLCBtYXAgeyIgICAgJyRfJyJ9IHNvcnQgeyAkYSBjbXAgJGIgfSBAVW5kZWNsYXJlZE9iamVjdERlcGVuZGVuY2llcyApCiAgICAgICAgICAgIC4gIixcbiI7CiAgICB9CgogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKJEVycm9yTWVzc2FnZQpFT0YKICAgIH0KCiAgICByZXR1cm47Cn0KCiMgU21hbGwgaGVscGVyIGZ1bmN0aW9uIHRvIGNsZWFudXAgb2JqZWN0IGxpc3RzIGluIFBlcmwgY29kZSBmb3IgT00uCnN1YiBfQ2xlYW51cE9iamVjdExpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSBAUmVzdWx0OwoKICAgIE9CSkVDVDoKICAgIGZvciBteSAkT2JqZWN0ICggc3BsaXQoIG17XHMrfSwgJFBhcmFte0NvZGV9ICkgKSB7CiAgICAgICAgJE9iamVjdCA9fiBzL3F3XCgvLzsgICAgICAgICMgcmVtb3ZlIHF3KCkgbWFya2VyIHN0YXJ0CiAgICAgICAgJE9iamVjdCA9fiBzL15bKCInXSsvLzsgICAgICMgcmVtb3ZlIGxlYWRpbmcgcXVvdGVzIGFuZCBwYXJlbnRoZXNlcwogICAgICAgICRPYmplY3QgPX4gcy9bKSInLF0rJC8vOyAgICAjIHJlbW92ZSB0cmFpbGluZyBjb21tYSwgcXVvdGVzIGFuZCBwYXJlbnRoZXNlcwogICAgICAgIG5leHQgT0JKRUNUIGlmICEkT2JqZWN0OwogICAgICAgIHB1c2ggQFJlc3VsdCwgJE9iamVjdDsKICAgIH0KCiAgICByZXR1cm4gQFJlc3VsdDsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6T2JqZWN0TWFuYWdlckNyZWF0aW9uOwojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6Ok9iamVjdE1hbmFnZXJDcmVhdGlvbikKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsKTsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggNSwgMCApOwoKICAgICRDb2RlID0gJFNlbGYtPlN0cmlwUG9kKCBDb2RlID0+ICRDb2RlICk7CgogICAgbXkgKCAkRXJyb3JNZXNzYWdlLCAkQ291bnRlciApOwoKICAgIExJTkU6CiAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCAvXG4vLCAkQ29kZSApIHsKICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICBuZXh0IExJTkUgaWYgJExpbmUgPX4gbS9eXHMqXCMvc214OwoKICAgICAgICBpZiAoICRMaW5lID1+IG17IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcgfXNteCApIHsKICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiTGluZSAkQ291bnRlcjogJExpbmVcbiI7CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7CkRvbid0IGNyZWF0ZSBuZXcgaW5zdGFuY2VzIG9mIHRoZSBPYmplY3RNYW5hZ2VyIGluIFBlcmwgbW9kdWxlcy4gVGhpcyBzaG91bGQgb25seSBiZSBkb25lIGluIHRvcGxldmVsIHNjcmlwdHMuCiRFcnJvck1lc3NhZ2UKRU9GCiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6T2JqZWN0TmFtZVNwYWNlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIwojIFRoaXMgcGx1Z2luIHNjYW5zIHBlcmwgcGFja2FnZXMgYW5kIGNvbXBhcmVzIHRoZSBvYmplY3RzIHRoZXkgcmVxdWVzdAojICAgZnJvbSB0aGUgT2JqZWN0TWFuYWdlciB3aXRoIHRoZSBkZXBlbmRlbmNpZXMgdGhleSBkZWNsYXJlIGFuZCBjb21wbGFpbnMKIyAgIGFib3V0IGFueSBtaXNzaW5nIGRlcGVuZGVuY2llcy4KIwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmwpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CiAgICByZXR1cm4gaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA0LCAwICk7CgogICAgJENvZGUgPSAkU2VsZi0+U3RyaXBQb2QoIENvZGUgPT4gJENvZGUgKTsKICAgICRDb2RlID0gJFNlbGYtPlN0cmlwQ29tbWVudHMoIENvZGUgPT4gJENvZGUgKTsKCiAgICAjIFNraXAgaWYgdGhlIGNvZGUgZG9lc24ndCB1c2UgdGhlIE9iamVjdE1hbmFnZXIKICAgIHJldHVybiBpZiAkQ29kZSAhfiBte1wkS2VybmVsOjpPTX1zbXg7CgogICAgIwogICAgIyBPSywgZmlyc3QgY2hlY2sgZm9yIHRoZSBvYmplY3RzIHRoYXQgYXJlIHJlcXVlc3RlZCBmcm9tIE9NLgogICAgIwogICAgbXkgQFVzZWRPYmplY3RzOwoKICAgICMgT25seSBtYXRoIHdoYXQgaXMgYWJzb2x1dGVseSBuZWVkZWQgdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmVzLgogICAgbXkgJFZhbGlkTGlzdEV4cHJlc3Npb24gPSAiW1xAYS16QS1aMC05X1s6c3BhY2U6XTonXCIsKCldKz8iOwoKICAgICMgUmVhbCBHZXQoKSBjYWxscy4KICAgICRDb2RlID1+IHN7CiAgICAgICAgXCRLZXJuZWw6Ok9NLT5HZXRcKCBccyogKFteXCRdJFZhbGlkTGlzdEV4cHJlc3Npb24pIFxzKiBcKQogICAgfXsKICAgICAgICBwdXNoIEBVc2VkT2JqZWN0cywgJFNlbGYtPl9DbGVhbnVwT2JqZWN0TGlzdCgKICAgICAgICAgICAgQ29kZSA9PiAkMSwKICAgICAgICApOwogICAgICAgICcnOwogICAgfWVzbXhnOwoKICAgICMgRm9yIGxvb3BzIHdpdGggR2V0KCkuCiAgICAkQ29kZSA9fiBzewogICAgICAgIGZvciBccysgKD86IG15IFxzKyBcJFthLXpBLXowLTlfXSsgXHMrKT8gXCgoJFZhbGlkTGlzdEV4cHJlc3Npb24pXClccypce1xuCiAgICAgICAgICAgIFxzKyBcJFNlbGYtPlx7XCQuKj9cfSBccyogKD86Ly98XHxcfCk/PSBccyogXCRLZXJuZWw6Ok9NLT5HZXRcKFxzKlwkW2EtekEtWjAtOV9dKz9ccypcKTsgXHMrCiAgICAgICAgXH0KICAgIH17CiAgICAgICAgcHVzaCBAVXNlZE9iamVjdHMsICRTZWxmLT5fQ2xlYW51cE9iamVjdExpc3QoCiAgICAgICAgICAgIENvZGUgPT4gJDEsCiAgICAgICAgKTsKICAgICAgICAnJzsKICAgIH1lc214ZzsKCiAgICBteSBAV3JvbmdOYW1lU3BhY2VzOwogICAgbXkgJVNlZW47CiAgICBVU0VEX09CSkVDVDoKICAgIGZvciBteSAkVXNlZE9iamVjdCAoQFVzZWRPYmplY3RzKSB7CgogICAgICAgIG5leHQgVVNFRF9PQkpFQ1QgaWYgJFNlZW57JFVzZWRPYmplY3R9OwoKICAgICAgICBpZiAoICRVc2VkT2JqZWN0ICF+IG17XEEoPzpbXjpdKyg6OikqKStbXjpdXHp9bXN4ICkgewogICAgICAgICAgICBwdXNoIEBXcm9uZ05hbWVTcGFjZXMsICRVc2VkT2JqZWN0OwogICAgICAgICAgICAkU2VlbnskVXNlZE9iamVjdH0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkRXJyb3JNZXNzYWdlOwogICAgaWYgKEBXcm9uZ05hbWVTcGFjZXMpIHsKICAgICAgICAkRXJyb3JNZXNzYWdlCiAgICAgICAgICAgIC49ICJUaGUgbmFtZSBzcGFjZSBmb3IgZm9sbG93aW5nIG9iamVjdHMgaXMgd3Jvbmc6XG4iOwogICAgICAgICRFcnJvck1lc3NhZ2UKICAgICAgICAgICAgLj0gam9pbiggIixcbiIsIG1hcCB7IiAgICAnJF8nIn0gc29ydCB7ICRhIGNtcCAkYiB9IEBXcm9uZ05hbWVTcGFjZXMgKQogICAgICAgICAgICAuICIsXG4iOwogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7CiRFcnJvck1lc3NhZ2UKRU9GCiAgICB9CgogICAgcmV0dXJuOwp9CgojIFNtYWxsIGhlbHBlciBmdW5jdGlvbiB0byBjbGVhbnVwIG9iamVjdCBsaXN0cyBpbiBQZXJsIGNvZGUgZm9yIE9NLgpzdWIgX0NsZWFudXBPYmplY3RMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgQFJlc3VsdDsKCiAgICBPQkpFQ1Q6CiAgICBmb3IgbXkgJE9iamVjdCAoIHNwbGl0KCBte1xzK30sICRQYXJhbXtDb2RlfSApICkgewogICAgICAgICRPYmplY3QgPX4gcy9xd1woLy87ICAgICAgICAjIHJlbW92ZSBxdygpIG1hcmtlciBzdGFydAogICAgICAgICRPYmplY3QgPX4gcy9eWygiJ10rLy87ICAgICAjIHJlbW92ZSBsZWFkaW5nIHF1b3RlcyBhbmQgcGFyZW50aGVzZXMKICAgICAgICAkT2JqZWN0ID1+IHMvWykiJyxdKyQvLzsgICAgIyByZW1vdmUgdHJhaWxpbmcgY29tbWEsIHF1b3RlcyBhbmQgcGFyZW50aGVzZXMKICAgICAgICBuZXh0IE9CSkVDVCBpZiAhJE9iamVjdDsKICAgICAgICBwdXNoIEBSZXN1bHQsICRPYmplY3Q7CiAgICB9CgogICAgcmV0dXJuIEBSZXN1bHQ7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UGFyYW1PYmplY3Q7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7Cgp1c2UgcGFyZW50IHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybCk7CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKICAgIHJldHVybiAgICAgICBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDMsIDMgKTsKCiAgICAkQ29kZSA9ICRTZWxmLT5TdHJpcFBvZCggQ29kZSA9PiAkQ29kZSApOwogICAgJENvZGUgPSAkU2VsZi0+U3RyaXBDb21tZW50cyggQ29kZSA9PiAkQ29kZSApOwoKICAgIGlmICggJENvZGUgPX4gbXtQYXJhbU9iamVjdH14bXMgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7CkRvbid0IHVzZSB0aGUgUGFyYW1PYmplY3QgaW4gYmluLyBvciBpbiBLZXJuZWwvU3lzdGVtLgpFT0YKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UGVybENyaXRpYzsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKdXNlIGxpYiBkaXJuYW1lKF9fRklMRV9fKSAuICcvLi4vJzsgICAgIyBGaW5kIG91ciBQZXJsOjpDcml0aWMgcG9saWNpZXMKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsKTsKdXNlIFBlcmw6OkNyaXRpYzsKCnVzZSBQZXJsOjpDcml0aWM6OlBvbGljeTo6T1RSUzo6UHJvaGliaXRHb3RvOwp1c2UgUGVybDo6Q3JpdGljOjpQb2xpY3k6Ok9UUlM6OlByb2hpYml0TG93UHJlY2VuZGVjZU9wczsKdXNlIFBlcmw6OkNyaXRpYzo6UG9saWN5OjpPVFJTOjpQcm9oaWJpdFNtYXJ0TWF0Y2hPcGVyYXRvcjsKdXNlIFBlcmw6OkNyaXRpYzo6UG9saWN5OjpPVFJTOjpQcm9oaWJpdFJhbmRJblRlc3RzOwp1c2UgUGVybDo6Q3JpdGljOjpQb2xpY3k6Ok9UUlM6OlByb2hpYml0T3BlbjsKdXNlIFBlcmw6OkNyaXRpYzo6UG9saWN5OjpPVFJTOjpQcm9oaWJpdFVubGVzczsKdXNlIFBlcmw6OkNyaXRpYzo6UG9saWN5OjpPVFJTOjpSZXF1aXJlQ2FtZWxDYXNlOwp1c2UgUGVybDo6Q3JpdGljOjpQb2xpY3k6Ok9UUlM6OlJlcXVpcmVMYWJlbHM7CnVzZSBQZXJsOjpDcml0aWM6OlBvbGljeTo6T1RSUzo6UmVxdWlyZVBhcmVuc1dpdGhNZXRob2RzOwp1c2UgUGVybDo6Q3JpdGljOjpQb2xpY3k6Ok9UUlM6OlJlcXVpcmVUcnVlUmV0dXJuVmFsdWVGb3JNb2R1bGVzOwoKIyBDYWNoZSBQZXJsOjpDcml0aWMgb2JqZWN0IGluc3RhbmNlIHRvIHNhdmUgdGltZS4gQnV0IGNhY2hlIGl0CiMgICBmb3IgZXZlcnkgZnJhbWV3b3JrIHZlcnNpb24sIGJlY2F1c2UgdGhlIGNvbmZpZ3VyYXRpb24gbWF5IGRpZmZlci4Kb3VyICRDYWNoZWRQZXJsQ3JpdGljID0ge307CgpzdWIgdmFsaWRhdGVfZmlsZSB7CiAgICBteSAoICRTZWxmLCAkRmlsZW5hbWUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggRmlsZW5hbWUgPT4gJEZpbGVuYW1lICk7CiAgICByZXR1cm4gaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCAzLCAyICk7CgogICAgbXkgJEZyYW1ld29ya1ZlcnNpb24gPSAiJFRpZHlBbGw6Ok9UUlM6OkZyYW1ld29ya1ZlcnNpb25NYWpvci4kVGlkeUFsbDo6T1RSUzo6RnJhbWV3b3JrVmVyc2lvbk1pbm9yIjsKCiAgICBpZiAoICEkQ2FjaGVkUGVybENyaXRpYy0+eyRGcmFtZXdvcmtWZXJzaW9ufSApIHsKCiAgICAgICAgbXkgJFNldmVyaXR5ID0gNDsgICAgIyBTVEVSTgogICAgICAgIGlmICggJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA2LCAwICkgKSB7CiAgICAgICAgICAgICRTZXZlcml0eSA9IDU7ICAgICMgIEdFTlRMRSwgbGVzcyBzdHJpY3QgZm9yIG9sZGVyIHZlcnNpb25zCiAgICAgICAgfQogICAgICAgIG15ICRDcml0aWMgPSBQZXJsOjpDcml0aWMtPm5ldygKICAgICAgICAgICAgLXNldmVyaXR5ID0+ICRTZXZlcml0eSwKICAgICAgICAgICAgLWV4Y2x1ZGUgID0+IFsKICAgICAgICAgICAgICAgICdNb2R1bGVzOjpSZXF1aXJlRXhwbGljaXRQYWNrYWdlJywgICAgIyB0aGlzIGJyZWFrcyBpbiBvdXIgc2NyaXB0cy90ZXN0IGZvbGRlcgogICAgICAgICAgICBdLAogICAgICAgICk7CiAgICAgICAgJENyaXRpYy0+YWRkX3BvbGljeSggLXBvbGljeSA9PiAnT1RSUzo6UHJvaGliaXRHb3RvJyApOwogICAgICAgICRDcml0aWMtPmFkZF9wb2xpY3koIC1wb2xpY3kgPT4gJ09UUlM6OlByb2hpYml0TG93UHJlY2VuZGVjZU9wcycgKTsKICAgICAgICAkQ3JpdGljLT5hZGRfcG9saWN5KCAtcG9saWN5ID0+ICdPVFJTOjpQcm9oaWJpdE9wZW4nICk7CiAgICAgICAgJENyaXRpYy0+YWRkX3BvbGljeSggLXBvbGljeSA9PiAnT1RSUzo6UHJvaGliaXRSYW5kSW5UZXN0cycgKTsKICAgICAgICAkQ3JpdGljLT5hZGRfcG9saWN5KCAtcG9saWN5ID0+ICdPVFJTOjpQcm9oaWJpdFNtYXJ0TWF0Y2hPcGVyYXRvcicgKTsKICAgICAgICAkQ3JpdGljLT5hZGRfcG9saWN5KCAtcG9saWN5ID0+ICdPVFJTOjpQcm9oaWJpdFVubGVzcycgKTsKICAgICAgICAkQ3JpdGljLT5hZGRfcG9saWN5KCAtcG9saWN5ID0+ICdPVFJTOjpSZXF1aXJlQ2FtZWxDYXNlJyApOwogICAgICAgICRDcml0aWMtPmFkZF9wb2xpY3koIC1wb2xpY3kgPT4gJ09UUlM6OlJlcXVpcmVMYWJlbHMnICk7CiAgICAgICAgJENyaXRpYy0+YWRkX3BvbGljeSggLXBvbGljeSA9PiAnT1RSUzo6UmVxdWlyZVBhcmVuc1dpdGhNZXRob2RzJyApOwogICAgICAgICRDcml0aWMtPmFkZF9wb2xpY3koIC1wb2xpY3kgPT4gJ09UUlM6OlJlcXVpcmVUcnVlUmV0dXJuVmFsdWVGb3JNb2R1bGVzJyApOwoKICAgICAgICBpZiAoICEkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDksIDAgKSApIHsKICAgICAgICAgICAgJENyaXRpYy0+YWRkX3BvbGljeSggLXBvbGljeSA9PiAnQnVpbHRpbkZ1bmN0aW9uczo6UHJvaGliaXRMdmFsdWVTdWJzdHInICk7CiAgICAgICAgICAgICRDcml0aWMtPmFkZF9wb2xpY3koIC1wb2xpY3kgPT4gJ0J1aWx0aW5GdW5jdGlvbnM6OlByb2hpYml0U3RyaW5neVNwbGl0JyApOwogICAgICAgICAgICAkQ3JpdGljLT5hZGRfcG9saWN5KCAtcG9saWN5ID0+ICdCdWlsdGluRnVuY3Rpb25zOjpQcm9oaWJpdFZvaWRHcmVwJyApOwogICAgICAgICAgICAkQ3JpdGljLT5hZGRfcG9saWN5KCAtcG9saWN5ID0+ICdCdWlsdGluRnVuY3Rpb25zOjpSZXF1aXJlU2ltcGxlU29ydEJsb2NrJyApOwogICAgICAgICAgICAkQ3JpdGljLT5hZGRfcG9saWN5KCAtcG9saWN5ID0+ICdDbGFzc0hpZXJhcmNoaWVzOjpQcm9oaWJpdEF1dG9sb2FkaW5nJyApOwogICAgICAgICAgICAkQ3JpdGljLT5hZGRfcG9saWN5KCAtcG9saWN5ID0+ICdDbGFzc0hpZXJhcmNoaWVzOjpQcm9oaWJpdEV4cGxpY2l0SVNBJyApOwogICAgICAgICAgICAkQ3JpdGljLT5hZGRfcG9saWN5KCAtcG9saWN5ID0+ICdJbnB1dE91dHB1dDo6UHJvaGliaXRKb2luZWRSZWFkbGluZScgKTsKICAgICAgICAgICAgJENyaXRpYy0+YWRkX3BvbGljeSggLXBvbGljeSA9PiAnTWlzY2VsbGFuZWE6OlByb2hpYml0Rm9ybWF0cycgKTsKICAgICAgICAgICAgJENyaXRpYy0+YWRkX3BvbGljeSggLXBvbGljeSA9PiAnTW9kdWxlczo6UHJvaGliaXRDb25kaXRpb25hbFVzZVN0YXRlbWVudHMnICk7CiAgICAgICAgICAgICRDcml0aWMtPmFkZF9wb2xpY3koIC1wb2xpY3kgPT4gJ05hbWluZ0NvbnZlbnRpb25zOjpQcm9oaWJpdEFtYmlndW91c05hbWVzJyApOwogICAgICAgICAgICAkQ3JpdGljLT5hZGRfcG9saWN5KCAtcG9saWN5ID0+ICdTdWJyb3V0aW5lczo6UHJvdGVjdFByaXZhdGVTdWJzJyApOwogICAgICAgICAgICAkQ3JpdGljLT5hZGRfcG9saWN5KCAtcG9saWN5ID0+ICdWYWx1ZXNBbmRFeHByZXNzaW9uczo6UHJvaGliaXRDb21wbGV4VmVyc2lvbicgKTsKICAgICAgICAgICAgJENyaXRpYy0+YWRkX3BvbGljeSggLXBvbGljeSA9PiAnVmFsdWVzQW5kRXhwcmVzc2lvbnM6OlByb2hpYml0TWlzbWF0Y2hlZE9wZXJhdG9ycycgKTsKICAgICAgICAgICAgJENyaXRpYy0+YWRkX3BvbGljeSggLXBvbGljeSA9PiAnVmFsdWVzQW5kRXhwcmVzc2lvbnM6OlByb2hpYml0UXVvdGVzQXNRdW90ZWxpa2VPcGVyYXRvckRlbGltaXRlcnMnICk7CiAgICAgICAgICAgICRDcml0aWMtPmFkZF9wb2xpY3koIC1wb2xpY3kgPT4gJ1ZhbHVlc0FuZEV4cHJlc3Npb25zOjpQcm9oaWJpdFNwZWNpYWxMaXRlcmFsSGVyZWRvY1Rlcm1pbmF0b3InICk7CiAgICAgICAgICAgICRDcml0aWMtPmFkZF9wb2xpY3koIC1wb2xpY3kgPT4gJ1ZhbHVlc0FuZEV4cHJlc3Npb25zOjpSZXF1aXJlUXVvdGVkSGVyZWRvY1Rlcm1pbmF0b3InICk7CiAgICAgICAgICAgICRDcml0aWMtPmFkZF9wb2xpY3koIC1wb2xpY3kgPT4gJ1ZhcmlhYmxlczo6UHJvaGliaXRVbnVzZWRWYXJpYWJsZXMnICk7CiAgICAgICAgICAgICRDcml0aWMtPmFkZF9wb2xpY3koIC1wb2xpY3kgPT4gJ1ZhcmlhYmxlczo6UHJvdGVjdFByaXZhdGVWYXJzJyApOwoKICAgICAgICAgICAgIyBNb29zZQogICAgICAgICAgICAkQ3JpdGljLT5hZGRfcG9saWN5KCAtcG9saWN5ID0+ICdNb29zZTo6UHJvaGliaXRERVNUUk9ZTWV0aG9kJyApOwogICAgICAgICAgICAkQ3JpdGljLT5hZGRfcG9saWN5KCAtcG9saWN5ID0+ICdNb29zZTo6UHJvaGliaXRNdWx0aXBsZVdpdGhzJyApOwogICAgICAgICAgICAkQ3JpdGljLT5hZGRfcG9saWN5KCAtcG9saWN5ID0+ICdNb29zZTo6UHJvaGliaXROZXdNZXRob2QnICk7CiAgICAgICAgICAgICRDcml0aWMtPmFkZF9wb2xpY3koIC1wb2xpY3kgPT4gJ01vb3NlOjpSZXF1aXJlQ2xlYW5OYW1lc3BhY2UnICk7CiAgICAgICAgICAgICRDcml0aWMtPmFkZF9wb2xpY3koIC1wb2xpY3kgPT4gJ01vb3NlOjpQcm9oaWJpdExhenlCdWlsZCcgKTsKICAgICAgICB9CgogICAgICAgICRDYWNoZWRQZXJsQ3JpdGljLT57JEZyYW1ld29ya1ZlcnNpb259ID0gJENyaXRpYzsKICAgIH0KCiAgICAjIEZvcmNlIHN0cmluZ2lmaWNhdGlvbiBvZiAkRmlsZW5hbWUgYXMgaXQgaXMgYSBQYXRoOjpUaW55IG9iamVjdCBpbiBDb2RlOjpUaWR5QWxsIDAuNTArLgogICAgbXkgQFZpb2xhdGlvbnMgPSAkQ2FjaGVkUGVybENyaXRpYy0+eyRGcmFtZXdvcmtWZXJzaW9ufS0+Y3JpdGlxdWUoIiRGaWxlbmFtZSIpOwoKICAgIGlmIChAVmlvbGF0aW9ucykgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCJAVmlvbGF0aW9ucyIpOwogICAgfQoKICAgIHJldHVybjsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UGVybFRpZHk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybCk7Cgp1c2UgQ2FwdHVyZTo6VGlueSBxdyhjYXB0dXJlX21lcmdlZCk7CgojIFJlcXVpcmUgYSByZWNlbnQgdmVyc2lvbiBvZiBQZXJsOjpUaWR5IGZvciBjb25zaXN0ZW50IGZvcm1hdHRpbmcgb24gYWxsIHN5c3RlbXMuCnVzZSBQZXJsOjpUaWR5IHYyMDE5MTIwMzsKCiMgVE9ETzogTGF0ZXN0IHJlbGVhc2UgMjAxOTA5MTUgb2YgUGVybDo6VGlkeSBzZWVtcyB0byBiZSBidWdneSBhYm91dCB2ZXJ0aWNhbCBpbmRlbnRhdGlvbi4KIyAgIEZvcmNlIGEgY2VydGFpbiB2ZXJzaW9uIGZvciBub3cuCmlmICggUGVybDo6VGlkeS0+VkVSU0lPTigpIG5lICcyMDE5MTIwMycgKSB7CiAgICBteSAkRXJyb3IgPSAnTmV3ZXIgdmVyc2lvbnMgb2YgUGVybDo6VGlkeSB0aGFuIHYyMDE5MTIwMyBhcmUgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQuJzsKICAgICRFcnJvciAgIC49ICcgUGxlYXNlIHVzZSBleGFjdGx5IHRoYXQgdmVyc2lvbiAoc3VkbyBjcGFubSBQZXJsOjpUaWR5QHYyMDE5MTIwMykuJzsKICAgICRFcnJvciAgIC49ICcgWW91ciBpbnN0YWxsZWQgdmVyc2lvbiBpczogJyAuIFBlcmw6OlRpZHktPlZFUlNJT04oKSAuICIuXG4iOwogICAgZGllICRFcnJvcjsKfQoKc3ViIHRyYW5zZm9ybV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZChDb2RlID0+ICRDb2RlKTsKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDIsIDQgKTsKCiAgICAjIERvbid0IG1vZGlmeSBmaWxlcyB3aGljaCBhcmUgZGVyaXZlZCBmaWxlcyAoaGF2ZSBjaGFuZ2UgbWFya2VycykuCiAgICBpZiAoICRDb2RlID1+IG17IFwkT2xkSWQ6IHwgXiBccyogXCMgXHMqIFwkb3JpZ2luOiB8IF4gXHMqIFwjVVgzXCMgfXhtcyApIHsKICAgICAgICByZXR1cm4gJENvZGU7CiAgICB9CgogICAgIyBGb3JjZSByZS13cmFwIG9mIHdyYXBwZWQgZnVuY3Rpb24gY2FsbHMKICAgICMgICAtPiBicmluZyB0aGVtIGJhY2sgdG8gdGhlIHByZXZpb3VzIGxpbmUgc28gdGhhdCBQZXJsVGlkeSBjYW4KICAgICMgICBkZWNpZGUgYWdhaW4gaWYgdGhleSBoYXZlIHRvIGJlIHdyYXBwZWQuCiAgICAkQ29kZSA9fiBzeyBcbl5ccysoLT5bYS16QS1aMC05X10rWyhdKSB9eyQxfXNteGc7CiAgICAjIEZvcmNlIHJlLXdyYXAgb2YgYXNzaWdubWVudHMgdG9vLgogICAgJENvZGUgPX4gc3sgXG5eXHMrKD1ccyspIH17JDF9c214ZzsKCiAgICAjIFRoZXJlIHdhcyBzb21lIGN1c3RvbSBjb2RlIGluIHBsYWNlIGhlcmUgdG8gcmVwbGFjZSAnLDsnIHdpdGggJzsnLCBidXQgdGhhdCBwcm92ZWQgdG8KICAgICMgICBiZSBtdWNoIHRvbyBzbG93IG9uIGxhcmdlIGZpbGVzICg+IDQwcyBvbiBBZ2VudFRpY2tldFByb2Nlc3MucG0gb2YgT1RSUyA3KS4KICAgICMgICBUaGVyZWZvcmUsIHRoaXMgbG9naWMgd2FzIHJlbW92ZWQuCgogICAgIyBUaGlzIGJpdCBvZiBpbnNhbml0eSBpcyBuZWVkZWQgYmVjYXVzZSBpZiBzb21lIG90aGVyIGNvZGUgY2FsbHMKICAgICMgR2V0b3B0OjpMb25nOjpDb25maWd1cmUoKSB0byBjaGFuZ2Ugc29tZSBvcHRpb25zLCB0aGVuIGV2ZXJ5dGhpbmcgY2FuIGdvCiAgICAjIHRvIGhlbGwuIEludGVybmFsbHkgcGVybHRpZHkoKSB0cmllcyB0byB1c2UgR2V0b3B0OjpMb25nIHdpdGhvdXQKICAgICMgcmVzZXR0aW5nIHRoZSBjb25maWd1cmF0aW9uIGRlZmF1bHRzLCBsZWFkaW5nIHRvIHZlcnkgY29uZnVzaW5nCiAgICAjIGVycm9ycy4gU2VlIGh0dHBzOi8vcnQuY3Bhbi5vcmcvVGlja2V0L0Rpc3BsYXkuaHRtbD9pZD0xMTg1NTgKICAgIEdldG9wdDo6TG9uZzo6Q29uZmlnRGVmYXVsdHMoKTsKCiAgICAjIHBlcmx0aWR5IHJlcG9ydHMgZXJyb3JzIGluIHR3byBkaWZmZXJlbnQgd2F5cy4KICAgICMgQXJndW1lbnQvcHJvZmlsZSBlcnJvcnMgYXJlIG91dHB1dCBhbmQgYW4gZXJyb3JfZmxhZyBpcyByZXR1cm5lZC4KICAgICMgU3ludGF4IGVycm9ycyBhcmUgc2VudCB0byBlcnJvcmZpbGUuCiAgICAjCiAgICBteSAoICRPdXRwdXQsICRFcnJvckZsYWcsICRFcnJvckZpbGUsICREZXN0aW5hdGlvbiApOwogICAgJE91dHB1dCA9IGNhcHR1cmVfbWVyZ2VkIHsKICAgICAgICAkRXJyb3JGbGFnID0gUGVybDo6VGlkeTo6cGVybHRpZHkoCiAgICAgICAgICAgIGFyZ3YgICAgICAgID0+ICRTZWxmLT5hcmd2KCksCiAgICAgICAgICAgIHNvdXJjZSAgICAgID0+IFwkQ29kZSwKICAgICAgICAgICAgZGVzdGluYXRpb24gPT4gXCREZXN0aW5hdGlvbiwKICAgICAgICAgICAgZXJyb3JmaWxlICAgPT4gXCRFcnJvckZpbGUKICAgICAgICApOwogICAgfTsKICAgIGlmICgkRXJyb3JGaWxlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIiRFcnJvckZpbGUiKTsKICAgIH0KICAgIGlmICgkRXJyb3JGbGFnKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIiRPdXRwdXQiKTsKICAgIH0KICAgIGlmICggZGVmaW5lZCAkT3V0cHV0ICkgewogICAgICAgIHByaW50IFNUREVSUiAkT3V0cHV0OwogICAgfQoKICAgIHJldHVybiAkRGVzdGluYXRpb247Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UG9kOjpGdW5jdGlvblBvZDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsKTsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgICMgdGVtcG9yYXJpbHkgZGlzYWJsZQogICAgIyBUT0RPIENIRUNLCiAgICAjcmV0dXJuOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggNiwgMCApOwoKICAgIG15ICRGdW5jdGlvbk5hbWVJblBvZCA9ICcnOwogICAgbXkgJEZ1bmN0aW9uTGluZUluUG9kID0gJyc7CiAgICBteSAkRnVuY3Rpb25DYWxsSW5Qb2QgPSAnJzsKICAgIG15ICRDb3VudGVyICAgICAgICAgICA9IDA7CgogICAgbXkgJEVycm9yTWVzc2FnZTsKCiAgICBteSAkUGFja2FnZUlzUm9sZTsKICAgICRQYWNrYWdlSXNSb2xlID0gMSBpZiAkQ29kZSA9fiBte151c2UgXHMrIE1vb3NlOjpSb2xlfWlzbXg7CgogICAgbXkgQENvZGVMaW5lcyA9IHNwbGl0IC9cbi8sICRDb2RlOwoKICAgIGZvciBteSAkTGluZSAoQENvZGVMaW5lcykgewogICAgICAgICRDb3VudGVyKys7CiAgICAgICAgaWYgKCAkTGluZSA9fiBte149aGVhZDIgXHMrIChbQS1aYS16MC05XSspIChcKFwpKT8gXHMqICR9c214ICkgewoKICAgICAgICAgICAgbXkgJEZ1bmN0aW9uTmFtZSAgPSAkMTsKICAgICAgICAgICAgbXkgJElzRnVuY3Rpb25Qb2QgPSAkMiA/IDEgOiAwOwoKICAgICAgICAgICAgaWYgKCRJc0Z1bmN0aW9uUG9kKSB7CiAgICAgICAgICAgICAgICAkRnVuY3Rpb25OYW1lSW5Qb2QgPSAkRnVuY3Rpb25OYW1lOwogICAgICAgICAgICAgICAgJEZ1bmN0aW9uTGluZUluUG9kID0gJExpbmU7CiAgICAgICAgICAgICAgICBjaG9tcCgkRnVuY3Rpb25MaW5lSW5Qb2QpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvZGUgPX4gbXtzdWIgJEZ1bmN0aW9uTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgLj0gIkl0ZW0gd2l0aG91dCBmdW5jdGlvbiAobmVhciBMaW5lICRDb3VudGVyKSwgdGhlIGxpbmUgc2hvdWxkIGxvb2sgbGlrZSAnPWl0ZW0gZnVuY3Rpb25uYW1lKCknXG4iOwogICAgICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiTGluZSAkQ291bnRlcjogJExpbmVcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCAkRnVuY3Rpb25OYW1lSW5Qb2QgJiYgJExpbmUgPX4gLy0+KC4rPylcKC8gJiYgISRGdW5jdGlvbkNhbGxJblBvZCApIHsKICAgICAgICAgICAgJEZ1bmN0aW9uQ2FsbEluUG9kID0gJDE7CiAgICAgICAgICAgICRGdW5jdGlvbkNhbGxJblBvZCA9fiBzLyAvLzsKCiAgICAgICAgICAgIGlmICggJExpbmUgPX4gL1wkU2VsZi0+LyAmJiAhJFBhY2thZ2VJc1JvbGUgKSB7CiAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJEb24ndCB1c2UgXCRTZWxmIGluIHBlcmxkb2NcbiI7CiAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRGdW5jdGlvbk5hbWVJblBvZCBuZSAkRnVuY3Rpb25DYWxsSW5Qb2QgKSB7CiAgICAgICAgICAgICAgICBpZiAoICRGdW5jdGlvbk5hbWVJblBvZCBuZSAnbmV3JyB8fCAoICRGdW5jdGlvbkNhbGxJblBvZCBuZSAnR2V0JyAmJiAkRnVuY3Rpb25DYWxsSW5Qb2QgbmUgJ0NyZWF0ZScgKSApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbXkgJERlc2NyaXB0aW9uTGluZSA9ICRMaW5lOwogICAgICAgICAgICAgICAgICAgIGNob21wKCREZXNjcmlwdGlvbkxpbmUpOwogICAgICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIiRGdW5jdGlvbkxpbmVJblBvZCA8LT4gJERlc2NyaXB0aW9uTGluZVxuIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoICRGdW5jdGlvbk5hbWVJblBvZCAmJiAkTGluZSAhfiAvXCRbQS1aYS16MC05Ol0rLT4oLis/KVwoLyAmJiAkRnVuY3Rpb25OYW1lSW5Qb2QgbmUgJ25ldycgKSB7CiAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJUaGUgZnVuY3Rpb24gc3ludGF4IGlzIG5vdCBjb3JyZWN0IVxuIjsKICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIkxpbmUgJENvdW50ZXI6ICRMaW5lXG4iOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICggJEZ1bmN0aW9uTmFtZUluUG9kICYmICRMaW5lID1+IC9zdWIvICkgewogICAgICAgICAgICBpZiAoICRMaW5lID1+IC9zdWIgKC4rKSBcey8gKSB7CiAgICAgICAgICAgICAgICBteSAkRnVuY3Rpb25TdWIgPSAkMTsKICAgICAgICAgICAgICAgICRGdW5jdGlvblN1YiA9fiBzLyAvLzsKICAgICAgICAgICAgICAgIG15ICRTdWJMaW5lID0gJExpbmU7CgogICAgICAgICAgICAgICAgaWYgKCAkRnVuY3Rpb25TdWIgbmUgJEZ1bmN0aW9uTmFtZUluUG9kICkgewogICAgICAgICAgICAgICAgICAgIGNob21wKCRTdWJMaW5lKTsKICAgICAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICIkRnVuY3Rpb25MaW5lSW5Qb2QgPC0+ICRTdWJMaW5lIFxuIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkRnVuY3Rpb25OYW1lSW5Qb2QgPSAnJzsKICAgICAgICAgICAgJEZ1bmN0aW9uQ2FsbEluUG9kID0gJyc7CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIiRFcnJvck1lc3NhZ2UiKTsKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UG9kOjpOYW1lUG9kOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmwpOwoKc3ViIHRyYW5zZm9ybV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggNiwgMCApOwoKICAgICMgRG9uJ3QgbW9kaWZ5IGZpbGVzIHdoaWNoIGFyZSBkZXJpdmVkIGZpbGVzIChoYXZlIGNoYW5nZSBtYXJrZXJzKS4KICAgIGlmICggJENvZGUgPX4gbXsgXCRPbGRJZDogfCBeIFxzKiBcIyBccyogXCRvcmlnaW46IHwgXiBccyogXCNVWDNcIyB9eG1zICkgewogICAgICAgIHJldHVybiAkQ29kZTsKICAgIH0KCiAgICBteSAkUGFja2FnZU5hbWUgPSAnJzsKICAgIG15ICRJbnNpZGVOYW1lUG9kOwogICAgbXkgJFBhY2thZ2VOYW1lUG9kOwogICAgbXkgJFVwZGF0ZWQgPSAwOwoKICAgIG15IEBDb2RlTGluZXMgPSBzcGxpdCAvXG4vLCAkQ29kZTsKCiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lIChAQ29kZUxpbmVzKSB7CiAgICAgICAgaWYgKCAkTGluZSA9fiBte15wYWNrYWdlIFxzKz8gKFtBLVphLXowLTk6XSs/KTt9c214ICkgewogICAgICAgICAgICAkUGFja2FnZU5hbWUgPSAkMTsKICAgICAgICAgICAgbmV4dCBMSU5FOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkTGluZSA9fiBte149aGVhZDEgXHMrIE5BTUUgXHMqICR9c214ICkgewogICAgICAgICAgICAkSW5zaWRlTmFtZVBvZCA9IDE7CiAgICAgICAgICAgIG5leHQgTElORTsKICAgICAgICB9CgogICAgICAgIG5leHQgTElORSBpZiAhJEluc2lkZU5hbWVQb2Q7CiAgICAgICAgbmV4dCBMSU5FIGlmICEkTGluZTsKICAgICAgICBsYXN0IExJTkUgaWYgJExpbmUgPX4gbXtePWN1dCBccyogJH1zbXg7CiAgICAgICAgbGFzdCBMSU5FIGlmICRMaW5lID1+IG17Xj1oZWFkMX1zbXg7CgogICAgICAgIGlmICggJExpbmUgPX4gbXteXHMqIChbQS1aYS16MC05Oi9cLl0rKX1zbXggKSB7CiAgICAgICAgICAgICRQYWNrYWdlTmFtZVBvZCA9ICQxOwogICAgICAgICAgICBpZiAoICRQYWNrYWdlTmFtZSBuZSAkUGFja2FnZU5hbWVQb2QgKSB7CiAgICAgICAgICAgICAgICAkTGluZSA9fiBze15ccyogKFtBLVphLXowLTk6L1wuXSspfXskUGFja2FnZU5hbWV9c214OwogICAgICAgICAgICAgICAgJFVwZGF0ZWQgPSAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxhc3QgTElORTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCRVcGRhdGVkKSB7CiAgICAgICAgJENvZGUgPSBqb2luICJcbiIsIEBDb2RlTGluZXM7CiAgICAgICAgJENvZGUgLj0gIlxuIjsKICAgIH0KCiAgICByZXR1cm4gJENvZGU7Cn0KCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggNiwgMCApOwoKICAgICMgRG9uJ3QgY2hlY2sgZmlsZXMgd2hpY2ggYXJlIGRlcml2ZWQgZmlsZXMgKGhhdmUgY2hhbmdlIG1hcmtlcnMpLgogICAgaWYgKCAkQ29kZSA9fiBteyBcJE9sZElkOiB8IF4gXHMqIFwjIFxzKiBcJG9yaWdpbjogfCBeIFxzKiBcI1VYM1wjIH14bXMgKSB7CiAgICAgICAgcmV0dXJuICRDb2RlOwogICAgfQoKICAgIG15ICRQYWNrYWdlTmFtZSA9ICcnOwogICAgbXkgJEluc2lkZU5hbWVQb2Q7CiAgICBteSAkUGFja2FnZU5hbWVQb2Q7CiAgICBteSAkQ291bnRlciA9IDA7CiAgICBteSAkRXJyb3JNZXNzYWdlOwoKICAgIG15IEBDb2RlTGluZXMgPSBzcGxpdCAvXG4vLCAkQ29kZTsKCiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lIChAQ29kZUxpbmVzKSB7CiAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgaWYgKCAkTGluZSA9fiBte15wYWNrYWdlIFxzKz8gKFtBLVphLXowLTk6XSs/KTt9c214ICkgewogICAgICAgICAgICAkUGFja2FnZU5hbWUgPSAkMTsKICAgICAgICAgICAgbmV4dCBMSU5FOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkTGluZSA9fiBte149aGVhZDEgXHMrIE5BTUUgXHMqICR9c214ICkgewogICAgICAgICAgICAkSW5zaWRlTmFtZVBvZCA9IDE7CiAgICAgICAgICAgIG5leHQgTElORTsKICAgICAgICB9CgogICAgICAgIG5leHQgTElORSBpZiAhJEluc2lkZU5hbWVQb2Q7CiAgICAgICAgbmV4dCBMSU5FIGlmICEkTGluZTsKICAgICAgICBsYXN0IExJTkUgaWYgJExpbmUgPX4gbXtePWN1dCBccyogJH1zbXg7CiAgICAgICAgbGFzdCBMSU5FIGlmICRMaW5lID1+IG17Xj1oZWFkMX1zbXg7CgogICAgICAgIGlmICggJExpbmUgPX4gbXteXHMqIChbQS1aYS16MC05Oi9cLl0rKX1zbXggKSB7CiAgICAgICAgICAgICRQYWNrYWdlTmFtZVBvZCA9ICQxOwogICAgICAgICAgICBpZiAoICRQYWNrYWdlTmFtZSBuZSAkUGFja2FnZU5hbWVQb2QgKSB7CiAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlID0gIlBhY2thZ2VOYW1lICRQYWNrYWdlTmFtZVBvZCBkb2VzIG5vdCBtYXRjaCBwYWNrYWdlICRQYWNrYWdlTmFtZVxuIjsKICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIkxpbmUgJENvdW50ZXI6ICRMaW5lXG4iOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxhc3QgTElORTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiJEVycm9yTWVzc2FnZSIpOwogICAgfQoKICAgIHJldHVybjsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UG9kOjpTcGVsbENoZWNrOwp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgojIEltcGxlbWVudGF0aW9uIGlzIGJhc2VkIG9uIGh0dHBzOi8vbWV0YWNwYW4ub3JnL3NvdXJjZS9EUk9MU0tZL0NvZGUtVGlkeUFsbC0wLjU2L2xpYi9Db2RlL1RpZHlBbGwvUGx1Z2luL1BvZFNwZWxsLnBtCgp1c2UgQ2FwdHVyZTo6VGlueSBxdygpOwp1c2UgRmlsZTo6VGVtcCgpOwp1c2UgUG9kOjpTcGVsbDsKCnVzZSBwYXJlbnQgJ1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybCc7CgpvdXIgJEh1bnNwZWxsUGF0aDsKb3VyICRIdW5zcGVsbERpY3Rpb25hcnlQYXRoOwpvdXIgJEh1bnNwZWxsV2hpdGVsaXN0UGF0aDsKCnN1YiB2YWxpZGF0ZV9maWxlIHsKICAgIG15ICggJFNlbGYsICRGaWxlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIEZpbGVuYW1lID0+ICRGaWxlICk7CiAgICByZXR1cm4gaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA2LCAwICk7CgogICAgaWYgKCAhJEh1bnNwZWxsUGF0aCApIHsKICAgICAgICAkSHVuc3BlbGxQYXRoID0gYHdoaWNoIGh1bnNwZWxsYDsKICAgICAgICBjaG9tcCAkSHVuc3BlbGxQYXRoOwogICAgICAgIGlmICggISRIdW5zcGVsbFBhdGggKSB7CiAgICAgICAgICAgIHByaW50IFNUREVSUiBfX1BBQ0tBR0VfXyAuICJcbkNvdWxkIG5vdCBmaW5kICdodW5zcGVsbCcsIHNraXBwaW5nIHNwZWxsIGNoZWNrZXIgdGVzdHMuXG4iOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkSHVuc3BlbGxEaWN0aW9uYXJ5UGF0aCA9IF9fRklMRV9fOwogICAgICAgICRIdW5zcGVsbERpY3Rpb25hcnlQYXRoID1+IHN7U3BlbGxDaGVja1wucG0kfXsuLi8uLi9TdGF0aWNGaWxlcy9IdW5zcGVsbC9EaWN0aW9uYXJpZXN9OwoKICAgICAgICAkSHVuc3BlbGxXaGl0ZWxpc3RQYXRoID0gX19GSUxFX187CiAgICAgICAgJEh1bnNwZWxsV2hpdGVsaXN0UGF0aCA9fiBze1wucG0kfXsuV2hpdGVsaXN0LnR4dH07CiAgICB9CgogICAgIyAjIFRPRE86IE1PVkUgVE8gU0VQQVJBVEUgUGVybDo6Q29tbWVudHNTcGVsbENoZWNrIHBsdWdpbiBsYXRlcgogICAgIyBteSAkQ29kZSA9ICRTZWxmLT5fR2V0RmlsZUNvbnRlbnRzKCRGaWxlKTsKICAgICMKICAgICMgbXkgJENvbW1lbnRzID0gJFNlbGYtPlN0cmlwUG9kKCBDb2RlID0+ICRDb2RlICk7CiAgICAjICRDb21tZW50cyAgICA9fiBze14gXCMgXHMgc3RyaXBwZWQgXHMgUE9EfXt9c214ZzsKICAgICMgJENvbW1lbnRzICAgID1+IHN7XiBccyogW14jXHNdIC4qPyAkfXt9c214ZzsgICMgUmVtb3ZlIG5vbi1jb21tZW50IGxpbmVzCiAgICAjICRDb21tZW50cyAgICA9fiBze1xuXG4rfXtcbn1zbXhnOyAgICAgICAgICAgICAjIFJlbW92ZSBlbXB0eSBibG9ja3MKICAgICMgJENvbW1lbnRzICAgID1+IHN7XiBccyogWyNdIFxzKiB9e31zbXhnOyAgICAgICMgUmVtb3ZlIGNvbW1lbnQgc2lnbnMKCiAgICBteSAoICRQb2RUZXh0LCAkRXJyb3IgKQogICAgICAgID0gQ2FwdHVyZTo6VGlueTo6Y2FwdHVyZSggc3ViIHsgUG9kOjpTcGVsbC0+bmV3KCktPnBhcnNlX2Zyb21fZmlsZSggJEZpbGUtPnN0cmluZ2lmeSgpICkgfSApOwogICAgZGllICRFcnJvciBpZiAkRXJyb3I7CgogICAgbXkgJFRlbXBGaWxlID0gRmlsZTo6VGVtcC0+bmV3KCk7CiAgICBwcmludCAkVGVtcEZpbGUgJFBvZFRleHQ7CiAgICAkVGVtcEZpbGUtPmNsb3NlKCk7CgogICAgbXkgJENNRCAgICA9ICIkSHVuc3BlbGxQYXRoIC1kICR7SHVuc3BlbGxEaWN0aW9uYXJ5UGF0aH0vZW5fVVMgLXAgJEh1bnNwZWxsV2hpdGVsaXN0UGF0aCAtYSAkVGVtcEZpbGUiOwogICAgbXkgJE91dHB1dCA9IGAkQ01EYDsKCiAgICBpZiAoICR7XkNISUxEX0VSUk9SX05BVElWRX0gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIkVycm9yIHJ1bm5pbmcgJyRDTUQnOiAkT3V0cHV0Iik7CiAgICB9CgogICAgbXkgKCBARXJyb3JzLCAlU2VlbiApOwogICAgTElORToKICAgIGZvciBteSAkTGluZSAoIHNwbGl0KCBtL1xuLywgJE91dHB1dCApICkgewogICAgICAgIGlmICggbXkgKCAkT3JpZ2luYWwsICRSZW1haW5pbmcgKSA9ICggJExpbmUgPX4gL15bXCZcP1wjXSAoXFMrKVxzKyguKikvICkgKSB7CgogICAgICAgICAgICBpZiAoICRPcmlnaW5hbCA9fiBte14gXz8gW0EtWl0rIFthLXowLTldKyBbQS1aYS16MC05XSogfXNteCApIHsKICAgICAgICAgICAgICAgIG5leHQgTElORTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAhJFNlZW57JE9yaWdpbmFsfSsrICkgewogICAgICAgICAgICAgICAgbXkgKCRTdWdnZXN0aW9ucykgPSAoICRSZW1haW5pbmcgPX4gLzogKC4qKS8gKTsKICAgICAgICAgICAgICAgIGlmICgkU3VnZ2VzdGlvbnMpIHsKICAgICAgICAgICAgICAgICAgICBwdXNoKCBARXJyb3JzLCBzcHJpbnRmKCAiJXMgKHN1Z2dlc3Rpb25zOiAlcykiLCAkT3JpZ2luYWwsICRTdWdnZXN0aW9ucyApICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBwdXNoKCBARXJyb3JzLCAkT3JpZ2luYWwgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGlmIChARXJyb3JzKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoCiAgICAgICAgICAgIHNwcmludGYoICJcblBlcmwgUG9kIGNvbnRhaW5zIHVucmVjb2duaXplZCB3b3JkczpcbiVzXG4iLCBqb2luKCAiXG4iLCBzb3J0IEBFcnJvcnMgKSApCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==
YWdwbApncGwKb3RycwpvdHJzIGFnCnNsYQoKYXNjaWkKaHRtbApjZ2kKcGdwCnNtaW1lCkNBCgpwYXJhbQpwYXJhbXMKcHJvdmlzaW9uZXIKCmRvY2Jvb2sKZXRjCnV0ZjgKaWQKaWRzCnNsYQpzbGFzCkFDTApjc3YKc3FsCmRibXMKZmV0Y2htYWlsCnRtcAppcGMKb3BtCnNvcG0KaXRzbQpwZGYKeG1sCnN0YXQKc3RhdHMKdXRmCmZhcQp1bmluc3RhbGwKdW5pbnN0YWxscwpzeXNjb25maWcKaW1wb3J0YWJsZQppbnZva2VyCmludm9rZXJzCm1pbmlmaWVkCmRlY3J5cHQKZGVjcnlwdGVkCnVubWFuYWdlZAo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UG9kOjpWYWxpZGF0b3I7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBDYXB0dXJlOjpUaW55IHF3KGNhcHR1cmVfbWVyZ2VkKTsKdXNlIFBvZDo6Q2hlY2tlcjsKCnVzZSBwYXJlbnQgJ0NvZGU6OlRpZHlBbGw6OlBsdWdpbic7CnVzZSBwYXJlbnQgJ1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybCc7CgojCiMgVmFsaWRhdGVkIFBvZCB3aXRoIFBvZDo6Q2hlY2tlciBmb3Igc3ludGFjdGljYWwgY29ycmVjdG5lc3MuCiMKCnN1YiB2YWxpZGF0ZV9maWxlIHsKICAgIG15ICggJFNlbGYsICRGaWxlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIEZpbGVuYW1lID0+ICRGaWxlICk7CiAgICByZXR1cm4gaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA2LCAwICk7CgogICAgbXkgJENoZWNrZXIgPSBQb2Q6OkNoZWNrZXItPm5ldygpOwoKICAgICMgRm9yY2Ugc3RyaW5naWZpY2F0aW9uIG9mICRGaWxlIGFzIGl0IGlzIGEgUGF0aDo6VGlueSBvYmplY3QgaW4gQ29kZTo6VGlkeUFsbCAwLjUwKy4KICAgIG15ICRPdXRwdXQgPSBjYXB0dXJlX21lcmdlZCB7ICRDaGVja2VyLT5wYXJzZV9mcm9tX2ZpbGUoICIkRmlsZSIsIFwqU1RERVJSICkgfTsKCiAgICAjIE9ubHkgZGllIGlmIE91dHB1dCBpcyBmaWxsZWQgd2l0aCBlcnJvcnMuIE90aGVyd2lzZSBpdCBjb3VsZCBiZQogICAgIyAgIHRoYXQgdGhlcmUganVzdCB3YXMgbm8gUE9EIGluIHRoZSBmaWxlLgogICAgaWYgKCAkQ2hlY2tlci0+bnVtX2Vycm9ycygpICYmICRPdXRwdXQgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIiRPdXRwdXQiKTsKICAgIH0KfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UHJpbnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7Cgp1c2UgcGFyZW50IHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybCk7CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKICAgIHJldHVybiBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDMsIDIgKTsKCiAgICBteSAoICRFcnJvck1lc3NhZ2UsICRDb3VudGVyICk7CgogICAgTElORToKICAgIGZvciBteSAkTGluZSAoIHNwbGl0IC9cbi8sICRDb2RlICkgewogICAgICAgICRDb3VudGVyKys7CgogICAgICAgIG5leHQgTElORSBpZiAkTGluZSA9fiBtL15ccypcIy9zbXg7CgogICAgICAgIGlmICggJExpbmUgPX4gbXteIFxzKiBwcmludCAoXHN8XCgpIH1zbXggKSB7CiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIkxpbmUgJENvdW50ZXI6ICRMaW5lXG4iOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwpEb24ndCB1c2UgJ3ByaW50JyBpbiBtb2R1bGVzLgokRXJyb3JNZXNzYWdlCkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UHJvaGliaXRPYmplY3RNYW5hZ2VyOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCAnVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpCYXNlJzsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggNywgMCApOwoKICAgIGlmICggJENvZGUgPX4gbXtcJEtlcm5lbDo6T019c214ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwpEb24ndCB1c2UgXCRLZXJuZWw6Ok9NIGluIEtlcm5lbDo6V2ViQXBwLCBleGNlcHQgaW4gY29udHJvbGxlcnMgb3IgdGhlaXIgdXRpbGl0eSBwYWNrYWdlcy4KRU9GCiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UHJvaGliaXRNb2pvSlNPTjsKCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UHJvaGliaXRNb2pvSlNPTikKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgJ1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6QmFzZSc7CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKICAgIHJldHVybiBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDcsIDAgKTsKCiAgICBpZiAoICRDb2RlID1+IG17TW9qbzo6SlNPTn1zbXggKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7CkRvbid0IHVzZSBNb2pvOjpKU09OIGRpcmVjdGx5LCB1c2UgS2VybmVsOjpTeXN0ZW06OkpTT04gaW5zdGVhZC4KRU9GCiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UmVxdWlyZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsKTsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggMywgMiApOwoKICAgICRDb2RlID0gJFNlbGYtPlN0cmlwUG9kKCBDb2RlID0+ICRDb2RlICk7CgogICAgbXkgKCAkRXJyb3JNZXNzYWdlLCAkQ291bnRlciApOwoKICAgIExJTkU6CiAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCAvXG4vLCAkQ29kZSApIHsKICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICBpZiAoICRMaW5lID1+IG0vXiBccyogcmVxdWlyZSAoPzogXHMgfCBcKCApL3NteCApIHsKICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiTGluZSAkQ291bnRlcjogJExpbmVcbiI7CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7CkRvbid0IHVzZSByZXF1aXJlIGRpcmVjdGx5LCBidXQgTWFpbjo6UmVxdWlyZSBpbnN0ZWFkLgokRXJyb3JNZXNzYWdlCkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6U2hlYmFuZ0xpbmU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7Cgp1c2UgcGFyZW50IHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybCk7CgpzdWIgdHJhbnNmb3JtX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA2LCAwICk7CgogICAgaWYgKCBzdWJzdHIoICRDb2RlLCAwLCAxNSApIGVxICcjIS91c3IvYmluL3BlcmwnICkgewogICAgICAgICRDb2RlID1+IHN7XEFcIyEvdXNyL2Jpbi9wZXJsLio/JH17IyEvdXNyL2Jpbi9lbnYgcGVybH14bXM7CiAgICB9CgogICAgcmV0dXJuICRDb2RlOwp9CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDYsIDAgKTsKCiAgICAjIENoZWNrIGZvciBwcmVzZW5jZSBvZiB0aGUgY29ycmVjdCBzaGViYW5nIGxpbmUuCiAgICBpZiAoIHN1YnN0ciggJENvZGUsIDAsIDIwICkgbmUgIiMhL3Vzci9iaW4vZW52IHBlcmxcbiIgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7ClBsZWFzZSBjaGFuZ2UgdGhlIHNoZWJhbmcgbGluZSB0byAnIyEvdXNyL2Jpbi9lbnYgcGVybCcuCkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6U29ydEtleXM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlNvcnRLZXlzKQoKdXNlIEZpbGU6OkJhc2VuYW1lOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmwpOwoKPWhlYWQxIFNZTk9QU0lTCgpUaGlzIG1vZHVsZSBpbnNlcnRzIGEgc29ydCBzdGF0ZW1lbnRzIHRvIGxpbmVzIGxpa2UKCiAgICBmb3IgbXkgJE1vZHVsZSAoc29ydCBrZXlzICVNb2R1bGVzKSAuLi4KCmJlY2F1c2UgdGhlIGtleXMgcmFuZG9tbmVzcyBjYW4gYmUgYSBzb3VyY2Ugb2YgcHJvYmxlbXMKdGhhdCBpcyBoYXJkIHRvIGRlYnVnLgoKPWN1dAoKc3ViIHRyYW5zZm9ybV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggMywgMiApOwoKICAgICRDb2RlID1+IHN7IF4gKFxzKiBmb3IgXHMrIG15IFxzKyBcJCBcdysgXHMrIFwoIFxzKikga2V5cyBccysgfXskMXNvcnQga2V5cyB9eG1zZzsKICAgICRDb2RlID1+IHN7IF4gKFxzKiBmb3IgXHMrIFwoIFxzKikga2V5cyBccysgfXskMXNvcnQga2V5cyB9eG1zZzsKCiAgICByZXR1cm4gJENvZGU7Cn0KCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggNSwgMCApOwoKICAgIG15ICggJENvdW50ZXIsICRFcnJvck1lc3NhZ2UgKTsKCiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lICggc3BsaXQoIC9cbi8sICRDb2RlICkgKSB7CiAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgaWYgKCAkTGluZSA9fiBteyAoPzogc29ydCk/WyBda2V5cyBccysgW1wkfFxcXSB9eG1zICkgewogICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKRG9udCB1c2UgaGFzaCByZWZlcmVuY2VzIHdoaWxlIGFjY2VzaW5nIGl0cyBrZXlzCiRFcnJvck1lc3NhZ2UKRU9GCiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6U3ViRGVjbGFyYXRpb247Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7Cgp1c2UgcGFyZW50IHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybCk7Cgo9aGVhZDEgU1lOT1BTSVMKClRoaXMgbW9kdWxlIGNoZWNrcyBmb3Igc3ViIGRlY2xhcmF0aW9ucyB3aXRoIHRoZSBicmFjZSBpbiB0aGUgZm9sbG93aW5nCmxpbmUgYW5kIGNvcnJlY3RzIHRoZW0uCgogICAgc3ViIGFiYwogICAgewogICAgICAgIC4uLgogICAgfQoKd2lsbCBiZWNvbWU6CgogICAgc3ViIGFiYyB7CiAgICAgICAgLi4uCiAgICB9Cgo9Y3V0CgpzdWIgdHJhbnNmb3JtX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCAyLCA0ICk7CgogICAgaWYgKCAkQ29kZSA9fiBtfF5zdWIgXHMrIFx3KyBccyogXHI/XG4gXHsgfHNteCApIHsKICAgICAgICAkQ29kZSA9fiBzfF4oc3ViIFxzKyBcdyspIFxzKiBccj9cbiBceyB8JDEge3xzbXhnOwogICAgfQoKICAgIHJldHVybiAkQ29kZTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6U3ludGF4Q2hlY2s7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybCk7Cgp1c2UgRmlsZTo6VGVtcDsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggMiwgNCApOwoKICAgIG15ICggJENsZWFuZWRTb3VyY2UsICREZWxldGFibGVTdGF0ZW1lbnQgKTsKCiAgICAjIEFsbG93IGltcG9ydGFudCBtb2R1bGVzIHRoYXQgY29tZSB3aXRoIHRoZSBQZXJsIGNvcmUgb3IgYXJlIGV4dGVybmFsCiAgICAjICAgZGVwZW5kZW5jaWVzIG9mIE9UUlMgYW5kIGNhbiB0aHVzIGJlIGFzc3VtZWQgYXMgYmVpbmcgaW5zdGFsbGVkLgogICAgbXkgQEFsbG93ZWRFeHRlcm5hbE1vZHVsZXMgPSBxdygKICAgICAgICB2YXJzCiAgICAgICAgY29uc3RhbnQKICAgICAgICBzdHJpY3QKICAgICAgICB3YXJuaW5ncwogICAgICAgIHRocmVhZHMKICAgICAgICBsaWIKCiAgICAgICAgQXJjaGl2ZTo6WmlwCiAgICAgICAgQXJjaGl2ZTo6VGFyCiAgICAgICAgQ3dkCiAgICAgICAgQ2FycAogICAgICAgIERhdGE6OkR1bXBlcgogICAgICAgIERhdGVUaW1lCiAgICAgICAgREJJCiAgICAgICAgRmNudGwKICAgICAgICBGaWxlOjpCYXNlbmFtZQogICAgICAgIEZpbmRCaW4KICAgICAgICBJTzo6U29ja2V0OjpJUAogICAgICAgIElPOjpTb2NrZXQ6OlNTTAogICAgICAgIExpc3Q6OlV0aWwKICAgICAgICBNb28KICAgICAgICBNb29zZQogICAgICAgIE1vb3NlOjpSb2xlCiAgICAgICAgUGVybDo6Q3JpdGljOjpVdGlscwogICAgICAgIFBPU0lYCiAgICAgICAgUmVhZG9ubHkKICAgICAgICBUZW1wbGF0ZQogICAgICAgIFRlbXBsYXRlOjpDb25zdGFudHMKICAgICAgICBUaW1lOjpIaVJlcwogICAgKTsKCiAgICBteSAkQWxsb3dlZEV4dGVybmFsTW9kdWxlc1JlZ2V4ID0gJ1xBIFxzKiB1c2UgXHMrICg/OiAnIC4gam9pbiggJ3wnLCBAQWxsb3dlZEV4dGVybmFsTW9kdWxlcyApIC4gJyApIFsgOyhdICc7CgogICAgTElORToKICAgIGZvciBteSAkTGluZSAoIHNwbGl0KCAvXG4vLCAkQ29kZSApICkgewoKICAgICAgICAjIFdlJ2xsIHNraXAgYWxsIHVzZSAqOyBzdGF0ZW1lbnRzIGV4ZXB0IGZvciBjb3JlIG1vZHVsZXMgYmVjYXVzZSB0aGUgbW9kdWxlcyBjYW5ub3QgYmUgZm91bmQgYXQgcnVudGltZS4KICAgICAgICBpZiAoICRMaW5lID1+IG17IFxBIFxzKiB1c2UgXHMrIH14bXMgJiYgJExpbmUgIX4gbXskQWxsb3dlZEV4dGVybmFsTW9kdWxlc1JlZ2V4fXhtcyApIHsKICAgICAgICAgICAgJERlbGV0YWJsZVN0YXRlbWVudCA9IDE7CiAgICAgICAgfQoKICAgICAgICBpZiAoJERlbGV0YWJsZVN0YXRlbWVudCkgewogICAgICAgICAgICAkTGluZSA9ICIjJExpbmUiOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkTGluZSA9fiBteyA7IFxzKiBceiB9eG1zICkgewogICAgICAgICAgICAkRGVsZXRhYmxlU3RhdGVtZW50ID0gMDsKICAgICAgICB9CgogICAgICAgICRDbGVhbmVkU291cmNlIC49ICRMaW5lIC4gIlxuIjsKICAgIH0KCiAgICAjcHJpbnQgU1RERVJSICRDbGVhbmVkU291cmNlOwoKICAgIG15ICRUZW1wRmlsZSA9IEZpbGU6OlRlbXAtPm5ldygpOwogICAgcHJpbnQgJFRlbXBGaWxlICRDbGVhbmVkU291cmNlOwogICAgJFRlbXBGaWxlLT5mbHVzaCgpOwoKICAgICMgc3ludGF4IGNoZWNrCiAgICBteSAkRXJyb3JNZXNzYWdlOwogICAgbXkgJEZpbGVIYW5kbGU7CiAgICBpZiAoICFvcGVuICRGaWxlSGFuZGxlLCAnLXwnLCAicGVybCAtY3cgIiAuICRUZW1wRmlsZS0+ZmlsZW5hbWUoKSAuICIgMj4mMSIgKSB7ICAgICMjIG5vIGNyaXRpYwogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCJGSUxURVI6IENhbid0IG9wZW4gdGVtcGZpbGU6ICQhXG4iKTsKICAgIH0KCiAgICB3aGlsZSAoIG15ICRMaW5lID0gPCRGaWxlSGFuZGxlPiApIHsKICAgICAgICBpZiAoICRMaW5lICF+IC8oc3ludGF4IE9LfHVzZWQgb25seSBvbmNlOiBwb3NzaWJsZSB0eXBvKS8gKSB7CiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gJExpbmU7CiAgICAgICAgfQogICAgfQogICAgY2xvc2UgJEZpbGVIYW5kbGU7CgogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiJEVycm9yTWVzc2FnZSIpOwogICAgfQp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6VGVzdHM6OkhlbHBlcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsKTsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggNiwgMCApOwoKICAgIG15ICVNYXRjaFJlZ2V4ZXMgPSAoCiAgICAgICAgSGVscGVyT2JqZWN0UGFyYW1zICAgICAgICAgICAgICAgPT4gcXJ7LT5PYmplY3RQYXJhbUFkZFwoXHMqJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJ314bXMsCiAgICAgICAgSGVscGVyT2JqZWN0RmxhZ1Jlc3RvcmVEYXRhYmFzZSAgPT4gcXJ7UmVzdG9yZURhdGFiYXNlXHMqPT5ccyoxfXhtcywKICAgICAgICBIZWxwZXJPYmplY3RGbGFnUEdQRW52aXJvbm1lbnQgICA9PiBxcntQcm92aWRlVGVzdFBHUEVudmlyb25tZW50XHMqPT5ccyoxfXhtcywKICAgICAgICBIZWxwZXJPYmplY3RGbGFnU01JTUVFbnZpcm9ubWVudCA9PiBxcntQcm92aWRlVGVzdFNNSU1FRW52aXJvbm1lbnRccyo9PlxzKjF9eG1zLAogICAgICAgIEhlbHBlckluc3RhbnRpYXRpb24gICAgICAgICAgICAgID0+IHFyey0+R2V0XCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInfXhtcywKICAgICAgICBTZWxlbml1bUluc3RhbnRpYXRpb24gICAgICAgICAgICA9PiBxcnstPkdldFwoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nfXhtcywKICAgICAgICBQR1BJbnN0YW50aWF0aW9uICAgICAgICAgICAgICAgICA9PiBxcnstPkdldFwoJ0tlcm5lbDo6U3lzdGVtOjpDcnlwdDo6UEdQJ314bXMsCiAgICAgICAgU01JTUVJbnN0YW50aWF0aW9uICAgICAgICAgICAgICAgPT4gcXJ7LT5HZXRcKCdLZXJuZWw6OlN5c3RlbTo6Q3J5cHQ6OlNNSU1FJ314bXMsCiAgICApOwoKICAgIG15ICVNYXRjaFBvc2l0aW9uczsKCiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlTWF0Y2hSZWdleGVzICkgewogICAgICAgIGlmICggJENvZGUgPX4gJE1hdGNoUmVnZXhlc3skS2V5fSApIHsKCiAgICAgICAgICAgICMgU3RvcmUgdGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBtYXRjaC4KICAgICAgICAgICAgJE1hdGNoUG9zaXRpb25zeyRLZXl9ID0gJC1bMF07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJE1hdGNoUG9zaXRpb25ze0hlbHBlckluc3RhbnRpYXRpb259OwoKICAgIGlmICggJE1hdGNoUG9zaXRpb25ze1NlbGVuaXVtSW5zdGFudGlhdGlvbn0gJiYgJE1hdGNoUG9zaXRpb25ze0hlbHBlck9iamVjdFBhcmFtc30gKSB7CiAgICAgICAgaWYgKCAkTWF0Y2hQb3NpdGlvbnN7U2VsZW5pdW1JbnN0YW50aWF0aW9ufSA8ICRNYXRjaFBvc2l0aW9uc3tIZWxwZXJPYmplY3RQYXJhbXN9ICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKUGxlYXNlIGFsd2F5cyBzZXQgdGhlIEhlbHBlciBvYmplY3QgcGFyYW1zIGJlZm9yZSBjcmVhdGluZyB0aGUgU2VsZW5pdW0gb2JqZWN0IHRvIG1ha2Ugc3VyZSBhbnkgY29uc3RydWN0b3IgZmxhZ3MgYXJlIHByb3Blcmx5IHNldCBhbmQgcHJvY2Vzc2VkLiBUaGlzIG5lZWRzIHRvIGJlIGRvbmUgYmVjYXVzZSBTZWxlbml1bTo6bmV3KCkgYWxyZWFkeSBtYXkgY3JlYXRlIHRoZSBIZWxwZXIuCkVPRgogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICRNYXRjaFBvc2l0aW9uc3tTZWxlbml1bUluc3RhbnRpYXRpb259ICYmICRNYXRjaFBvc2l0aW9uc3tIZWxwZXJPYmplY3RGbGFnUmVzdG9yZURhdGFiYXNlfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKRG9uJ3QgdXNlIHRoZSBIZWxwZXIgZmxhZyAnUmVzdG9yZURhdGFiYXNlJyBpbiAgU2VsZW5pdW0gdGVzdHMsIGFzIHRoZSB3ZWIgc2VydmVyIGNhbm5vdCBhY2Nlc3MgdGhlIHRlc3QgdHJhbnNhY3Rpb24uCkVPRgogICAgfQoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDgsIDAgKTsKCiAgICBpZiAoICRNYXRjaFBvc2l0aW9uc3tQR1BJbnN0YW50aWF0aW9ufSAmJiAhJE1hdGNoUG9zaXRpb25ze0hlbHBlck9iamVjdEZsYWdQR1BFbnZpcm9ubWVudH0gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7ClBHUCB0ZXN0cyBzaG91bGQgYWx3YXlzIHVzZSB0aGUgJ1Byb3ZpZGVUZXN0UEdQRW52aXJvbm1lbnQnIGZsYWcgb2YgdGhlIHVuaXQgdGVzdCBIZWxwZXIuCkVPRgogICAgfQoKICAgIGlmICggJE1hdGNoUG9zaXRpb25ze1NNSU1FSW5zdGFudGlhdGlvbn0gJiYgISRNYXRjaFBvc2l0aW9uc3tIZWxwZXJPYmplY3RGbGFnU01JTUVFbnZpcm9ubWVudH0gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7ClNNSU1FIHRlc3RzIHNob3VsZCBhbHdheXMgdXNlIHRoZSAnUHJvdmlkZVRlc3RTTUlNRUVudmlyb25tZW50JyBmbGFnIG9mIHRoZSB1bml0IHRlc3QgSGVscGVyLgpFT0YKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6VGltZTsKIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpUaW1lKQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmwpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CiAgICByZXR1cm4gaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCAzLCAyICk7CgogICAgbXkgKCAkRXJyb3JNZXNzYWdlLCAkQ291bnRlciApOwoKICAgIExJTkU6CiAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCAvXG4vLCAkQ29kZSApIHsKICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICBuZXh0IExJTkUgaWYgJExpbmUgPX4gbS9eXHMqXCMvc214OwoKICAgICAgICBpZiAoICRMaW5lID1+IG17IGxvY2FsdGltZSB9c214ICkgewogICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKUGxlYXNlIHVzZSB0aGUgZnVuY3Rpb25zIG9mIHRoZSBUaW1lT2JqZWN0IGluc3RlYWQgb2YgJ2xvY2FsdGltZScuCiRFcnJvck1lc3NhZ2UKRU9GCiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6VHJhbnNsYXRhYmxlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmwpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CiAgICByZXR1cm4gICAgICAgaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA1LCAwICk7CgogICAgJENvZGUgPSAkU2VsZi0+U3RyaXBQb2QoIENvZGUgPT4gJENvZGUgKTsKICAgICRDb2RlID0gJFNlbGYtPlN0cmlwQ29tbWVudHMoIENvZGUgPT4gJENvZGUgKTsKCiAgICBpZiAoICRDb2RlID1+IG17VHJhbnNsYXRhYmxlXCh9eG1zICYmICRDb2RlICF+IG17XnVzZVxzK0tlcm5lbDo6TGFuZ3VhZ2VbXlxuXStUcmFuc2xhdGFibGV9eG1zICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwpUaGUgY29kZSB1c2VzIEtlcm5lbDo6TGFuZ3VhZ2U6OlRyYW5zbGF0YWJsZSgpLCBidXQgZG9lcyBub3QgaW1wb3J0IGl0IHRvIHRoZSBjdXJyZW50IHBhY2thZ2UuIFBsZWFzZSBhZGQ6CnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6VHJhbnNsYXRpb25FbmNvZGluZzsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsKTsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggNCwgMCApOwoKICAgIGlmICggJENvZGUgIX4gbXteWyBcdF0qdXNlXHMrdXRmODt9bXggKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7CkFsbCBsYW5ndWFnZSBmaWxlcyBtdXN0IGJlIGVuY29kZWQgaW4gInV0Zi04IiwgYW5kIGluY2x1ZGUgdGhlICJ1c2UgdXRmODsiIFBlcmwgcHJhZ21hLgpFT0YKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6VW5pdFRlc3RDb25maWdDaGFuZ2VzOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKIyBNYWtlIHN1cmUgU2VsZW5pdW0gdGVzdHMgb25seSBtb2RpZnkgdGhlIGNvbmZpZ3VyYXRpb24gdmlhICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoKS4KCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggNSwgMCApOwoKICAgICMgdXNlIG9ubHkgZm9yIFNlbGVuaXVtIHRlc3RzIHByaW9yIHRvIE9UUlMgNgogICAgaWYgKAogICAgICAgICRDb2RlICF+IG17L1NlbGVuaXVtL31zbXgKICAgICAgICAmJiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDYsIDAgKQogICAgICAgICkKICAgIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgKCAkRXJyb3JNZXNzYWdlLCAkQ291bnRlciApOwoKICAgIExJTkU6CiAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCAvXG4vLCAkQ29kZSApIHsKICAgICAgICAkQ291bnRlcisrOwogICAgICAgIGlmICggJExpbmUgPX4gbXstPkNvbmZpZ0l0ZW1VcGRhdGV8LT5Db25maWdJdGVtUmVzZXR9c214ICkgewogICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKU2VsZW5pdW0gdGVzdHMgc2hvdWxkIG1vZGlmeSB0aGUgc3lzdGVtIGNvbmZpZ3VyYXRpb24gZXhjbHVzaXZlbHkgdmlhClwkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKCkgKGl0IGhhcyB0aGUgc2FtZSBBUEkgYXMgQ29uZmlnU2V0dGluZ1VwZGF0ZSgpKS4KVGhpcyBhbHNvIG1ha2VzICJzbGVlcCIgc3RhdGVtZW50cyBmb3IgbW9kX3BlcmwgdW5uZWVkZWQuCiRFcnJvck1lc3NhZ2UKRU9GCiAgICB9CgogICAgTElORToKICAgIGZvciBteSAkTGluZSAoIHNwbGl0IC9cbi8sICRDb2RlICkgewogICAgICAgICRDb3VudGVyKys7CiAgICAgICAgaWYgKCAkTGluZSA9fiBte1Jlc3RvcmVTeXN0ZW1Db25maWd1cmF0aW9ufXNteCApIHsKICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiTGluZSAkQ291bnRlcjogJExpbmVcbiI7CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7ClBsZWFzZSBkb24ndCB1c2UgdGhlICdSZXN0b3JlU3lzdGVtQ29uZmlndXJhdGlvbicgZmxhZyBhbnkgbW9yZS4KJEVycm9yTWVzc2FnZQpFT0YKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6VXNlUGFyZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmwpOwoKc3ViIHRyYW5zZm9ybV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggNiwgMCApOwoKICAgICRDb2RlID1+IHN7IF4gXHMqIFxLIHVzZSBccysgYmFzZSBcYiB9e3VzZSBwYXJlbnR9c214ZzsKCiAgICByZXR1cm4gJENvZGU7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6VXNlV2FybmluZ3M7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7Cgp1c2UgcGFyZW50IHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybCk7CgojIFBlcmw6OkNyaXRpYyB3aWxsIG1ha2Ugc3VyZSB0aGF0IHVzZSBzdHJpY3QgaXMgZW5hYmxlZC4KIyBOb3cgd2UgY2hlY2sgdGhhdCB1c2Ugd2FybmluZ3MgaXMgYWxzby4Kc3ViIHRyYW5zZm9ybV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggMiwgNCApOwoKICAgICMgQ2hlY2sgaWYgdXNlIHdhcm5pbmdzIGlzIHByZXNlbnQsIG90aGVyd2lzZSBhZGQgaXQKICAgIGlmICggJENvZGUgIX4gbXteWyBcdF0qdXNlXHMrd2FybmluZ3M7fW14ICkgewogICAgICAgICRDb2RlID1+IHN7XlsgXHRdKnVzZVxzK3N0cmljdDt9e3VzZSBzdHJpY3Q7XG51c2Ugd2FybmluZ3M7fW14OwogICAgfQoKICAgIHJldHVybiAkQ29kZTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6V2ViQXBwOjpIZWFkR2V0V2l0aG91dEJvZHk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybCk7CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDcsIDAgKTsKCiAgICBpZiAoICRDb2RlID1+IG0vXnN1YlxzK1JlcXVlc3RNZXRob2RzW159XSsoZ2V0fGhlYWQpW159XStcfS94bXMgJiYgJENvZGUgPX4gbXtec3ViXHMrVmFsaWRhdGlvbkpTT05Cb2R5RmllbGRzfXhtcyApCiAgICB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7CkVuZHBvaW50cyB1c2luZyB0aGUgSEVBRCBvciBHRVQgcmVxdWVzdCBtZXRob2RzIG1heSBub3QgdXNlIGEgYm9keSBwYXlsb2FkLiBVc2UgcXVlcnkgcGFyYW1zIGluc3RlYWQuCkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UE86OkRvY2Jvb2tMaW50OwoKIwojIFBlcmZvcm0gc29tZSBxdWFsaXR5IGNoZWNrcyBvbiBwbyBmaWxlcy4KIwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UpOwoKdXNlIExvY2FsZTo6UE8gICgpOwp1c2UgWE1MOjpQYXJzZXIgKCk7CgpzdWIgdmFsaWRhdGVfZmlsZSB7CiAgICBteSAoICRTZWxmLCAkRmlsZW5hbWUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggRmlsZW5hbWUgPT4gJEZpbGVuYW1lICk7CiAgICByZXR1cm4gaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA0LCAwICk7CgogICAgIyBXaXRoIE9UUlMgNyBkb2N1bWVudGF0aW9uIHdhcyBjb252ZXJ0ZWQgdG8gUlNULgogICAgcmV0dXJuIGlmICEkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDcsIDAgKTsKCiAgICBteSAkSXNEb2Nib29rVHJhbnNsYXRpb24gPSAkRmlsZW5hbWUgPX4gbXsvZG9jLX1zbXg7CiAgICBteSAkU3RyaW5ncyAgICAgICAgICAgICAgPSBMb2NhbGU6OlBPLT5sb2FkX2ZpbGVfYXNhcnJheSgkRmlsZW5hbWUpOwoKICAgIG15ICRFcnJvck1lc3NhZ2U7CgogICAgU1RSSU5HOgogICAgZm9yIG15ICRTdHJpbmcgKCBAeyAkU3RyaW5ncyAvLyBbXSB9ICkgewoKICAgICAgICBuZXh0IFNUUklORyBpZiAkU3RyaW5nLT5mdXp6eSgpOwoKICAgICAgICBteSAkU291cmNlID0gJFN0cmluZy0+ZGVxdW90ZSggJFN0cmluZy0+bXNnaWQoKSApOwogICAgICAgIG5leHQgU1RSSU5HIGlmICEkU291cmNlOwogICAgICAgIG15ICRUcmFuc2xhdGlvbiA9ICRTdHJpbmctPmRlcXVvdGUoICRTdHJpbmctPm1zZ3N0cigpICk7CiAgICAgICAgbmV4dCBTVFJJTkcgaWYgISRUcmFuc2xhdGlvbjsKCiAgICAgICAgaWYgKCRJc0RvY2Jvb2tUcmFuc2xhdGlvbikgewoKICAgICAgICAgICAgIyAjIERvbid0IHZhbGlkYXRlIGNvbnRlbnRzIG9mIDxzY3JlZW4+IHRhZ3MsIHRoZXkgc2hvdWxkIGhhdmUgQ0RBVEEKICAgICAgICAgICAgI25leHQgU1RSSU5HIGlmICRTdHJpbmctPmF1dG9tYXRpYygpICYmICRTdHJpbmctPmF1dG9tYXRpYyA9fiBtezxzY3JlZW4+JH1zbXg7CiAgICAgICAgICAgIG5leHQgU1RSSU5HIGlmICRTdHJpbmctPmF1dG9tYXRpYygpICYmICRTdHJpbmctPmF1dG9tYXRpYygpID1+IG17Q0RBVEEkfXNteDsKCiAgICAgICAgICAgICMgT2Jzb2xldGUgc3RyaW5ncyBtaWdodCBsb29zZSBDREFUQSBjb21tZW50cwogICAgICAgICAgICBuZXh0IFNUUklORyBpZiAkU3RyaW5nLT5vYnNvbGV0ZSgpOwoKICAgICAgICAgICAgbXkgJFBhcnNlciA9IFhNTDo6UGFyc2VyLT5uZXcoKTsKICAgICAgICAgICAgaWYgKCAhZXZhbCB7ICRQYXJzZXItPnBhcnNlKCI8Ym9vaz4kVHJhbnNsYXRpb248L2Jvb2s+IikgfSApIHsKICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIkludmFsaWQgWE1MIHRyYW5zbGF0aW9uIGZvdW5kIGluIExpbmU6ICIKICAgICAgICAgICAgICAgICAgICAuICRTdHJpbmctPmxvYWRlZF9saW5lX251bWJlcigpIC4gIlxuIjsKICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIiAgU291cmNlOiAkU291cmNlXG4iOwogICAgICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiICBUcmFuc2xhdGlvbjogJFRyYW5zbGF0aW9uXG4iOwogICAgICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiICBYTUw6OlBhcnNlciBwcm9kdWNlZCBlcnJvcnM6ICRAXG4iOwogICAgICAgICAgICAgICAgbmV4dCBTVFJJTkc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRTdHJpcHBlZFNvdXJjZSA9ICRTb3VyY2U7CiAgICAgICAgICAgICRTdHJpcHBlZFNvdXJjZSA9fiBzezwhLS0uKi0tPn17fXNteGc7CgogICAgICAgICAgICBteSBAU291cmNlVGFncyA9ICRTdHJpcHBlZFNvdXJjZSA9fiBtezxbXj5dKj59c21nOwogICAgICAgICAgICBuZXh0IFNUUklORyBpZiAhQFNvdXJjZVRhZ3M7CiAgICAgICAgICAgIG15ICVTb3VyY2VUYWdDb3VudDsKICAgICAgICAgICAgQFNvdXJjZVRhZ3MgPSBtYXAgeyAkXyA9fiBze148KFsvYS16QS1aXzAtOV0rKS4qfXskMX1lc214ZzsgJF8gfSBAU291cmNlVGFnczsgICAgIyMgbm8gY3JpdGljCgogICAgICAgICAgICAjIFNvbWUgdGFncyB3aGljaCBkbyBub3QgaGF2ZSB0byBiZSB2YWxpZGF0ZWQgYXMgbG9uZyBhcyB0aGUgeG1sIHN0cnVjdHVyZSBpcyBzdGlsbCB2YWxpZC4KICAgICAgICAgICAgbXkgJUlnbm9yZVRhZ3MgPSAoCiAgICAgICAgICAgICAgICAnZW1waGFzaXMnICAgPT4gMSwKICAgICAgICAgICAgICAgICcvZW1waGFzaXMnICA9PiAxLAogICAgICAgICAgICAgICAgJ2NpdGV0aXRsZScgID0+IDEsCiAgICAgICAgICAgICAgICAnL2NpdGV0aXRsZScgPT4gMSwKICAgICAgICAgICAgICAgICd1bGluaycgICAgICA9PiAxLAogICAgICAgICAgICAgICAgJy91bGluaycgICAgID0+IDEsCiAgICAgICAgICAgICAgICAnbGluaycgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICcvbGluaycgICAgICA9PiAxLAogICAgICAgICAgICAgICAgJ2ZpbGVuYW1lJyAgID0+IDEsCiAgICAgICAgICAgICAgICAnL2ZpbGVuYW1lJyAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIFNPVVJDRV9UQUc6CiAgICAgICAgICAgIGZvciBteSAkU291cmNlVGFnIChAU291cmNlVGFncykgewogICAgICAgICAgICAgICAgbmV4dCBTT1VSQ0VfVEFHIGlmICRJZ25vcmVUYWdzeyRTb3VyY2VUYWd9OwogICAgICAgICAgICAgICAgJFNvdXJjZVRhZ0NvdW50eyRTb3VyY2VUYWd9Kys7CgogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3IgbXkgJFNvdXJjZVRhZyAoIHNvcnQga2V5cyAlU291cmNlVGFnQ291bnQgKSB7CiAgICAgICAgICAgICAgICBteSBAVHJhbnNsYXRlZFRhZ3MgICAgID0gJFRyYW5zbGF0aW9uID1+IG17PCRTb3VyY2VUYWdbPnwgXX1zbWc7CiAgICAgICAgICAgICAgICBteSAkVHJhbnNsYXRlZFRhZ0NvdW50ID0gc2NhbGFyIEBUcmFuc2xhdGVkVGFnczsKICAgICAgICAgICAgICAgIGlmICggJFRyYW5zbGF0ZWRUYWdDb3VudCAhPSAkU291cmNlVGFnQ291bnR7JFNvdXJjZVRhZ30gKSB7CiAgICAgICAgICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiSW52YWxpZCBYTUwgdHJhbnNsYXRpb24gZm91bmQgaW4gTGluZTogIgogICAgICAgICAgICAgICAgICAgICAgICAuICRTdHJpbmctPmxvYWRlZF9saW5lX251bWJlcigpIC4gIlxuIjsKICAgICAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICIgIFNvdXJjZTogJFNvdXJjZVxuIjsKICAgICAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICIgIFRyYW5zbGF0aW9uOiAkVHJhbnNsYXRpb25cbiI7CiAgICAgICAgICAgICAgICAgICAgJEVycm9yTWVzc2FnZQogICAgICAgICAgICAgICAgICAgICAgICAuPSAiICBUYWcgPCRTb3VyY2VUYWc+IHdhcyBleHBlY3RlZCAkU291cmNlVGFnQ291bnR7JFNvdXJjZVRhZ30gYnV0IGZvdW5kICRUcmFuc2xhdGVkVGFnQ291bnQgdGltZXMuXG4iOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFNvdXJjZSBhbmQgdHJhbnNsYXRpb24gc2hvdWxkIGhhdmUgdGhlIHNhbWUgbGlua2VuZCBkZWZpbml0aW9ucy4KICAgICAgICAgICAgbXkgQFNvdXJjZUxpbmtFbmRzID0gJFNvdXJjZSAgICAgID1+IG17PGxpbmtbXj5dK2xpbmtlbmQ9WyInXShbXiciXSspWyciXX1zbXhnOwogICAgICAgICAgICBteSBAVGFyZ2V0TGlua0VuZHMgPSAkVHJhbnNsYXRpb24gPX4gbXs8bGlua1tePl0rbGlua2VuZD1bIiddKFteJyJdKylbJyJdfXNteGc7CgogICAgICAgICAgICBteSAkTGlua0VuZHNBcmVEaWZmZXJlbnQgPSAkU2VsZi0+X0RhdGFEaWZmKAogICAgICAgICAgICAgICAgRGF0YTEgPT4gWyBzb3J0IHsgJGEgY21wICRiIH0gQFNvdXJjZUxpbmtFbmRzIF0sCiAgICAgICAgICAgICAgICBEYXRhMiA9PiBbIHNvcnQgeyAkYSBjbXAgJGIgfSBAVGFyZ2V0TGlua0VuZHMgXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkTGlua0VuZHNBcmVEaWZmZXJlbnQpIHsKICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIkxpbmtlbmQgZGVmaW5pdGlvbnMgYXJlIGRpZmZlcmVudC5cblNvdXJjZTpcbiRTb3VyY2VcblRyYW5zbGF0aW9uOlxuJFRyYW5zbGF0aW9uXG5cbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiJEVycm9yTWVzc2FnZSIpOwogICAgfQp9CgpzdWIgX0RhdGFEaWZmIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIChxdyhEYXRhMSBEYXRhMikpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskX30gKSB7CiAgICAgICAgICAgIHByaW50IFNUREVSUiAiTmVlZCAkXyFcbiI7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyAnJwogICAgaWYgKCByZWYgJFBhcmFte0RhdGExfSBlcSAnJyAmJiByZWYgJFBhcmFte0RhdGEyfSBlcSAnJyApIHsKCiAgICAgICAgIyBkbyBub3RoaW5nLCBpdCdzIG9rCiAgICAgICAgcmV0dXJuIGlmICFkZWZpbmVkICRQYXJhbXtEYXRhMX0gJiYgIWRlZmluZWQgJFBhcmFte0RhdGEyfTsKCiAgICAgICAgIyByZXR1cm4gZGlmZiwgYmVjYXVzZSBpdHMgZGlmZmVyZW50CiAgICAgICAgcmV0dXJuIDEgaWYgIWRlZmluZWQgJFBhcmFte0RhdGExfSB8fCAhZGVmaW5lZCAkUGFyYW17RGF0YTJ9OwoKICAgICAgICAjIHJldHVybiBkaWZmLCBiZWNhdXNlIGl0cyBkaWZmZXJlbnQKICAgICAgICByZXR1cm4gMSBpZiAkUGFyYW17RGF0YTF9IG5lICRQYXJhbXtEYXRhMn07CgogICAgICAgICMgcmV0dXJuLCBiZWNhdXNlIGl0cyBub3QgZGlmZmVyZW50CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgU0NBTEFSCiAgICBpZiAoIHJlZiAkUGFyYW17RGF0YTF9IGVxICdTQ0FMQVInICYmIHJlZiAkUGFyYW17RGF0YTJ9IGVxICdTQ0FMQVInICkgewoKICAgICAgICAjIGRvIG5vdGhpbmcsIGl0J3Mgb2sKICAgICAgICByZXR1cm4gaWYgIWRlZmluZWQgJHsgJFBhcmFte0RhdGExfSB9ICYmICFkZWZpbmVkICR7ICRQYXJhbXtEYXRhMn0gfTsKCiAgICAgICAgIyByZXR1cm4gZGlmZiwgYmVjYXVzZSBpdHMgZGlmZmVyZW50CiAgICAgICAgcmV0dXJuIDEgaWYgIWRlZmluZWQgJHsgJFBhcmFte0RhdGExfSB9IHx8ICFkZWZpbmVkICR7ICRQYXJhbXtEYXRhMn0gfTsKCiAgICAgICAgIyByZXR1cm4gZGlmZiwgYmVjYXVzZSBpdHMgZGlmZmVyZW50CiAgICAgICAgcmV0dXJuIDEgaWYgJHsgJFBhcmFte0RhdGExfSB9IG5lICR7ICRQYXJhbXtEYXRhMn0gfTsKCiAgICAgICAgIyByZXR1cm4sIGJlY2F1c2UgaXRzIG5vdCBkaWZmZXJlbnQKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBBUlJBWQogICAgaWYgKCByZWYgJFBhcmFte0RhdGExfSBlcSAnQVJSQVknICYmIHJlZiAkUGFyYW17RGF0YTJ9IGVxICdBUlJBWScgKSB7CiAgICAgICAgbXkgQEEgPSBAeyAkUGFyYW17RGF0YTF9IH07CiAgICAgICAgbXkgQEIgPSBAeyAkUGFyYW17RGF0YTJ9IH07CgogICAgICAgICMgY2hlY2sgaWYgdGhlIGNvdW50IGlzIGRpZmZlcmVudAogICAgICAgIHJldHVybiAxIGlmICQjQSBuZSAkI0I7CgogICAgICAgICMgY29tcGFyZSBhcnJheQogICAgICAgIENPVU5UOgogICAgICAgIGZvciBteSAkQ291bnQgKCAwIC4uICQjQSApIHsKCiAgICAgICAgICAgICMgZG8gbm90aGluZywgaXQncyBvawogICAgICAgICAgICBuZXh0IENPVU5UIGlmICFkZWZpbmVkICRBWyRDb3VudF0gJiYgIWRlZmluZWQgJEJbJENvdW50XTsKCiAgICAgICAgICAgICMgcmV0dXJuIGRpZmYsIGJlY2F1c2UgaXRzIGRpZmZlcmVudAogICAgICAgICAgICByZXR1cm4gMSBpZiAhZGVmaW5lZCAkQVskQ291bnRdIHx8ICFkZWZpbmVkICRCWyRDb3VudF07CgogICAgICAgICAgICBpZiAoICRBWyRDb3VudF0gbmUgJEJbJENvdW50XSApIHsKICAgICAgICAgICAgICAgIGlmICggcmVmICRBWyRDb3VudF0gZXEgJ0FSUkFZJyB8fCByZWYgJEFbJENvdW50XSBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEgaWYgJFNlbGYtPl9EYXRhRGlmZigKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YTEgPT4gJEFbJENvdW50XSwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YTIgPT4gJEJbJENvdW50XQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBDT1VOVDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIEhBU0gKICAgIGlmICggcmVmICRQYXJhbXtEYXRhMX0gZXEgJ0hBU0gnICYmIHJlZiAkUGFyYW17RGF0YTJ9IGVxICdIQVNIJyApIHsKICAgICAgICBteSAlQSA9ICV7ICRQYXJhbXtEYXRhMX0gfTsKICAgICAgICBteSAlQiA9ICV7ICRQYXJhbXtEYXRhMn0gfTsKCiAgICAgICAgIyBjb21wYXJlICVBIHdpdGggJUIgYW5kIHJlbW92ZSBpdCBpZiBjaGVja2VkCiAgICAgICAgS0VZOgogICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVBICkgewoKICAgICAgICAgICAgIyBDaGVjayBpZiBib3RoIGFyZSB1bmRlZmluZWQKICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkQXskS2V5fSAmJiAhZGVmaW5lZCAkQnskS2V5fSApIHsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkQXskS2V5fTsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkQnskS2V5fTsKICAgICAgICAgICAgICAgIG5leHQgS0VZOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHJldHVybiBkaWZmLCBiZWNhdXNlIGl0cyBkaWZmZXJlbnQKICAgICAgICAgICAgcmV0dXJuIDEgaWYgIWRlZmluZWQgJEF7JEtleX0gfHwgIWRlZmluZWQgJEJ7JEtleX07CgogICAgICAgICAgICBpZiAoICRBeyRLZXl9IGVxICRCeyRLZXl9ICkgewogICAgICAgICAgICAgICAgZGVsZXRlICRBeyRLZXl9OwogICAgICAgICAgICAgICAgZGVsZXRlICRCeyRLZXl9OwogICAgICAgICAgICAgICAgbmV4dCBLRVk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmV0dXJuIGlmIHZhbHVlcyBhcmUgZGlmZmVyZW50CiAgICAgICAgICAgIGlmICggcmVmICRBeyRLZXl9IGVxICdBUlJBWScgfHwgcmVmICRBeyRLZXl9IGVxICdIQVNIJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiAxIGlmICRTZWxmLT5fRGF0YURpZmYoCiAgICAgICAgICAgICAgICAgICAgRGF0YTEgPT4gJEF7JEtleX0sCiAgICAgICAgICAgICAgICAgICAgRGF0YTIgPT4gJEJ7JEtleX0KICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBkZWxldGUgJEF7JEtleX07CiAgICAgICAgICAgICAgICBkZWxldGUgJEJ7JEtleX07CiAgICAgICAgICAgICAgICBuZXh0IEtFWTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgcmVzdAogICAgICAgIHJldHVybiAxIGlmICVCOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoIHJlZiAkUGFyYW17RGF0YTF9IGVxICdSRUYnICYmIHJlZiAkUGFyYW17RGF0YTJ9IGVxICdSRUYnICkgewogICAgICAgIHJldHVybiAxIGlmICRTZWxmLT5fRGF0YURpZmYoCiAgICAgICAgICAgIERhdGExID0+ICR7ICRQYXJhbXtEYXRhMX0gfSwKICAgICAgICAgICAgRGF0YTIgPT4gJHsgJFBhcmFte0RhdGEyfSB9CiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UE86OkhUTUxUYWdzOwoKIwojIEZpbHRlciBmb3JiaWRkZW4gSFRNTCB0YWdzIGluIEZyYW1ld29yay9QYWNrYWdlIHRyYW5zbGF0aW9uIGZpbGVzLgojCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6QmFzZSk7Cgp1c2UgTG9jYWxlOjpQTyAoKTsKCnN1YiB2YWxpZGF0ZV9maWxlIHsKICAgIG15ICggJFNlbGYsICRGaWxlbmFtZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBGaWxlbmFtZSA9PiAkRmlsZW5hbWUgKTsKICAgIHJldHVybiBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDYsIDAgKTsKCiAgICBteSAkSXNEb2Nib29rVHJhbnNsYXRpb24gPSAkRmlsZW5hbWUgPX4gbXsvZG9jLX1zbXg7CiAgICByZXR1cm4gaWYgJElzRG9jYm9va1RyYW5zbGF0aW9uOwoKICAgIG15IEBGb3JiaWRkZW5UYWdzID0gKAoKICAgICAgICAjIERhbmdlcm91cyB0YWdzIHRoYXQgY291bGQgYmUgdXNlZCB3aXRob3V0IGF0dHJpYnV0ZXMuCiAgICAgICAgcXIoXjxzY3JpcHQpaXhtcywKICAgICAgICBxcihePHN0eWxlKWl4bXMsCiAgICAgICAgcXIoXjxhcHBsZXQpaXhtcywKICAgICAgICBxcihePG9iamVjdClpeG1zLAogICAgICAgIHFyKF48c3ZnKWl4bXMsCiAgICAgICAgcXIoXjxlbWJlZClpeG1zLAogICAgICAgIHFyKF48bWV0YSlpeG1zLAogICAgICAgIHFyKF48aW1nKWl4bXMsCiAgICAgICAgcXIoXjx2aWRlbylpeG1zLAoKICAgICAgICAjIEFueSBIVE1MIHRhZyB3aXRoIGFkZGl0aW9uYWwgYXR0cmlidXRlcy4KICAgICAgICBxcihePFtePiBdK1sgXStbXj5dKz0paXhtcywKICAgICk7CgogICAgbXkgJFN0cmluZ3MgPSBMb2NhbGU6OlBPLT5sb2FkX2ZpbGVfYXNhcnJheSgkRmlsZW5hbWUpOwoKICAgIG15ICRFcnJvck1lc3NhZ2U7CgogICAgU1RSSU5HOgogICAgZm9yIG15ICRTdHJpbmcgKCBAeyAkU3RyaW5ncyAvLyBbXSB9ICkgewogICAgICAgIG5leHQgU1RSSU5HIGlmICRTdHJpbmctPmZ1enp5KCk7CgogICAgICAgIG15ICRTb3VyY2UgPSAkU3RyaW5nLT5kZXF1b3RlKCAkU3RyaW5nLT5tc2dpZCgpICkgLy8gJyc7CiAgICAgICAgbmV4dCBTVFJJTkcgaWYgISRTb3VyY2U7CgogICAgICAgIG15ICRUcmFuc2xhdGlvbiA9ICRTdHJpbmctPmRlcXVvdGUoICRTdHJpbmctPm1zZ3N0cigpICkgLy8gJyc7CgogICAgICAgIG15IEBJbnZhbGlkVGFnczsKCiAgICAgICAgZm9yIG15ICRQYXJ0ICggJFNvdXJjZSwgJFRyYW5zbGF0aW9uICkgewogICAgICAgICAgICBteSBAVGFncyA9ICRQYXJ0ID1+IG17PFtePl0qPn1zbWc7CgogICAgICAgICAgICBUQUc6CiAgICAgICAgICAgIGZvciBteSAkVGFnIChAVGFncykgewogICAgICAgICAgICAgICAgZm9yIG15ICRGb3JiaWRkZW5UYWcgKEBGb3JiaWRkZW5UYWdzKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBASW52YWxpZFRhZ3MsICRUYWcgaWYgJFRhZyA9fiAkRm9yYmlkZGVuVGFnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBuZXh0IFNUUklORyBpZiAhQEludmFsaWRUYWdzOwoKICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJJbnZhbGlkIEhUTUwgdGFncyBmb3VuZCBpbiBsaW5lOiAiIC4gJFN0cmluZy0+bG9hZGVkX2xpbmVfbnVtYmVyKCkgLiAiXG4iOwogICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIiAgU291cmNlOiAkU291cmNlXG4iOwogICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIiAgVHJhbnNsYXRpb246ICRUcmFuc2xhdGlvblxuIjsKICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICIgIEludmFsaWQgdGFnczogQEludmFsaWRUYWdzIjsKICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCIkRXJyb3JNZXNzYWdlIik7CiAgICB9Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UE86Om1zZ2ZtdDsKCiMKIyBVc2UgbXNnZm10IHRvIGNoZWNrIHRoZSBiYXNpYyB2YWxpZGl0eSBvZiAucG8gYW5kIC5wb3QgZmlsZXMuCiMKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpCYXNlKTsKCnN1YiBfYnVpbGRfY21kIHsKICAgIHJldHVybiAnbXNnZm10IC1jIC1vIC9kZXYvbnVsbCc7Cn0KCnN1YiB2YWxpZGF0ZV9maWxlIHsKICAgIG15ICggJFNlbGYsICRGaWxlbmFtZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBGaWxlbmFtZSA9PiAkRmlsZW5hbWUgKTsKICAgIHJldHVybiBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDQsIDAgKTsKCiAgICBteSAkQ29tbWFuZCA9IHNwcmludGYoICIlcyAlcyAlcyAyPiYxIiwgJFNlbGYtPmNtZCgpLCAkU2VsZi0+YXJndigpLCAkRmlsZW5hbWUgKTsKICAgIG15ICRPdXRwdXQgID0gYCRDb21tYW5kYDsKCiAgICAjIElmIGV4ZWN1dGlvbiBmYWlsZWQsIHdhcm4gYWJvdXQgaW5zdGFsbGluZyBwYWNrYWdlLgogICAgaWYgKCAke15DSElMRF9FUlJPUl9OQVRJVkV9ID09IC0xICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCInbXNnZm10JyB3YXMgbm90IGZvdW5kLCBwbGVhc2UgaW5zdGFsbCAnZ2V0dGV4dCcuXG4iKTsKICAgIH0KCiAgICBpZiAoICR7XkNISUxEX0VSUk9SX05BVElWRX0gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIiRPdXRwdXRcbiIpOyAgICAjIG5vbi16ZXJvIGV4aXQgY29kZQogICAgfQp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6U09QTTo6Q29kZVRhZ3M7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6QmFzZSk7CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKICAgIHJldHVybiBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDQsIDAgKTsKCiAgICBteSAoIEBTZWxmVXNlZCwgQENEQVRBTWlzc2luZyApOwoKICAgICRDb2RlID1+IHN7CiAgICAgICAgKDxDb2RlW2EtekEtWl0rLio/PikgICAgIyBzdGFydCB0YWcKICAgICAgICAoLio/KSAgICAgICAgICAgICAgICAgICAjIGNvbnRlbnQKICAgICAgICA8L0NvZGVbYS16QS1aXSsuKj8+ICAgICAjIGVuZCB0YWcKICAgIH17CiAgICAgICAgbXkgJFN0YXJ0VGFnID0gJDE7CiAgICAgICAgbXkgJFRhZ0NvbnRlbnQgPSAkMjsKCiAgICAgICAgaWYgKCRUYWdDb250ZW50ID1+IG17XCRTZWxmfXNteCkgewogICAgICAgICAgICBwdXNoIEBTZWxmVXNlZCwgJFN0YXJ0VGFnOwogICAgICAgIH0KICAgICAgICBpZiAoJFRhZ0NvbnRlbnQgIX4gbXsgXEFccyo8IVxbQ0RBVEFcWyB9c214KSB7CiAgICAgICAgICAgIHB1c2ggQENEQVRBTWlzc2luZywgJFN0YXJ0VGFnOwogICAgICAgIH0KCiAgICB9c214Z2U7CgogICAgbXkgJEVycm9yTWVzc2FnZTsKCiAgICBpZiAoQFNlbGZVc2VkKSB7CiAgICAgICAgJEVycm9yTWVzc2FnZQogICAgICAgICAgICAuPSAiRG9uJ3QgdXNlIFwkU2VsZiBpbiA8Q29kZSo+IHRhZ3MuIFVzZSBcJEtlcm5lbDo6T00tPkdldCgpIGluc3RlYWQgdG8gYWNjZXNzIG9iamVjdHMuXG4iOwogICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIldyb25nIHRhZ3MgZm91bmQ6ICIgLiBqb2luKCAnLCAnLCBAU2VsZlVzZWQgKSAuICJcbiI7CiAgICB9CgogICAgaWYgKEBDREFUQU1pc3NpbmcpIHsKICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICI8Q29kZSo+IHRhZ3Mgc2hvdWxkIGFsd2F5cyBiZSB3cmFwcGVkIGluIENEQVRBIHNlY3Rpb25zLlxuIjsKICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJXcm9uZyB0YWdzIGZvdW5kOiAiIC4gam9pbiggJywgJywgQFNlbGZVc2VkICkgLiAiXG4iOwogICAgfQoKICAgICMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6T2JqZWN0RGVwZW5kZW5jaWVzKQogICAgbXkgJEV4YW1wbGUgPSA8PCdFT0YnOwpIZXJlIGlzIGEgdmFsaWQgZXhhbXBsZSB0YWc6CiAgICA8Q29kZUluc3RhbGwgVHlwZT0icG9zdCI+PCFbQ0RBVEFbCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgndmFyOjpwYWNrYWdlc2V0dXA6Ok15UGFja2FnZScpLT5Db2RlSW5zdGFsbCgpOwogICAgXV0+PC9Db2RlSW5zdGFsbD4KRU9GCgogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiJEVycm9yTWVzc2FnZVxuJEV4YW1wbGUiKTsKICAgIH0KfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6U09QTTo6RmlsZUxpc3Q7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6QmFzZSk7CgojIFRoaXMgbW9kdWxlIHZlcmlmaWVzOgojICAgLSB0aGF0IGFsbCBwYWNrYWdlZCBmaWxlcyBvZiBhbiBTT1BNIGFyZSBhdmFpbGFibGUsCiMgICAtIHRoYXQgdGhlIFNPUE0gZG9lcyBub3QgdHJ5IHRvIGNyZWF0ZSBuZXcgdG9wbGV2ZWwgZmlsZXMgb3IgZGlyZWN0b3JpZXMgaW4gL29wdC9vdHJzLAojICAgLSB0aGF0IGFsbCBmaWxlcyBpbiBhIHZhbGlkIHRvcGxldmVsIGRpcmVjdG9yeSBhcmUgYWxzbyBwYWNrYWdlZCAoZXhjZXB0IGZvciBkb2N1bWVudGF0aW9uKS4KCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggMywgMiApOwoKICAgIG15ICggJEVycm9yTWVzc2FnZU1pc3NpbmdGaWxlcywgJEVycm9yTWVzc2FnZVVucGFja2FnZWRGaWxlcywgJEVycm9yTWVzc2FnZUZvcmJpZGRlblRvcGxldmVsICk7CgogICAgIyBGcm9tIE9UUlMgMy4zIG9uLCBwYWNrYWdlcyBjYW5ub3QgY3JlYXRlIG5ldyB0b3BsZXZlbCBkaXJlY3Rvcmllcy9maWxlcwogICAgIyAgIGJlY2F1c2Ugb2Ygc3RyaWN0ZXIgcGVybWlzc2lvbnMuCiAgICBteSAkQWxsb3dPdGhlclRvcGxldmVsRW50cmllcyA9ICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggMywgMyApID8gMSA6IDA7CgogICAgbXkgQFNPUE1GaWxlTGlzdDsKCiAgICAjIE9ubHkgdmFsaWRhdGUgZmlsZXMgaW4gc3ViZGlyZWN0b3JpZXMgdGhhdCBhcmUgYWN0aXZlIGZvciBjaGVja2luZyBieQogICAgIyAgIGRlZmF1bHQgb3IgYWN0dWFsbHkgYXBwZWFyIG9uIHRoZSBsaXN0IG9mIHBhY2thZ2VkIGZpbGVzLgogICAgbXkgJVRvcGxldmVsRGlyZWN0b3JpZXMgPSAoCiAgICAgICAgYmluICAgICAgPT4gMSwKICAgICAgICBDdXN0b20gICA9PiAxLAogICAgICAgIGRvYyAgICAgID0+IDEsCiAgICAgICAgRnJvbnRlbmQgPT4gMSwKICAgICAgICBLZXJuZWwgICA9PiAxLAogICAgICAgIHNjcmlwdHMgID0+IDEsCiAgICAgICAgdmFyICAgICAgPT4gMSwKICAgICk7CgogICAgIyBHbyB0cm91Z2ggdGhlIGZpbGVzIG9uIHRoZSBTT1BNIGZpbGUgbGlzdAogICAgTElORToKICAgIGZvciBteSAkTGluZSAoIHNwbGl0IC9cbi8sICRDb2RlICkgewogICAgICAgIGlmICggJExpbmUgPX4gbS88RmlsZS4qTG9jYXRpb249IihbXiJdKykiLyApIHsKICAgICAgICAgICAgbXkgJEZpbGUgPSAkMTsKICAgICAgICAgICAgcHVzaCBAU09QTUZpbGVMaXN0LCAkRmlsZTsKCiAgICAgICAgICAgIG15ICgkVG9wbGV2ZWxEaXJlY3RvcnkpID0gJEZpbGUgPX4gbXteKFteL10rKS99OwoKICAgICAgICAgICAgIyBUb3BsZXZlbCBmaWxlCiAgICAgICAgICAgIGlmICggISRUb3BsZXZlbERpcmVjdG9yeSApIHsKICAgICAgICAgICAgICAgIG5leHQgTElORSBpZiAkQWxsb3dPdGhlclRvcGxldmVsRW50cmllczsKCiAgICAgICAgICAgICAgICAjIFJlamVjdCBuZXcgdG9wbGV2ZWwgZmlsZXMgZm9yIE9UUlMgMy4zKwogICAgICAgICAgICAgICAgJEVycm9yTWVzc2FnZUZvcmJpZGRlblRvcGxldmVsIC49ICIkRmlsZVxuIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBSZWplY3QgbmV3IHRvcGxldmVsIGRpcmVjdG9yaWVzIGZvciBPVFJTIDMuMysKICAgICAgICAgICAgZWxzaWYgKCAhJEFsbG93T3RoZXJUb3BsZXZlbEVudHJpZXMgJiYgISRUb3BsZXZlbERpcmVjdG9yaWVzeyRUb3BsZXZlbERpcmVjdG9yeX0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlRm9yYmlkZGVuVG9wbGV2ZWwgLj0gIiRGaWxlXG4iOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIyBBY2NlcHQgbmV3IHRvcGxldmVsIGRpcmVjdG9yaWVzIGZvciBvbGRlciB2ZXJzaW9ucywgYnV0IHRoZW4KICAgICAgICAgICAgICAgICMgICBjaGVjayB0aGF0IGFsbCBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeSBtdXN0IGJlIG9uIHRoZSBTT1BNIGZpbGUgbGlzdC4KICAgICAgICAgICAgICAgICRUb3BsZXZlbERpcmVjdG9yaWVzeyRUb3BsZXZlbERpcmVjdG9yeX0gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgTm93IGNoZWNrIHdoaWNoIGZpbGVzIG9uIHRoZSBTT1BNIGxpc3QgYXJlIG5vdCBhdmFpbGFibGUuCiAgICBGSUxFOgogICAgZm9yIG15ICRGaWxlIChAU09QTUZpbGVMaXN0KSB7CiAgICAgICAgaWYgKCAhZ3JlcCB7ICRfIGVxICRGaWxlIH0gQFRpZHlBbGw6Ok9UUlM6OkZpbGVMaXN0ICkgewogICAgICAgICAgICAkRXJyb3JNZXNzYWdlTWlzc2luZ0ZpbGVzIC49ICIkRmlsZVxuIjsKICAgICAgICB9CiAgICB9CgogICAgIyBGb3IgYWxsIGFsbG93ZWQgdG9wbGV2ZWwgZGlyZWN0b3JpZXMsIGV2ZXJ5IGZpbGUgdGhhdCBpcyBwcmVzZW50CiAgICAjICAgbXVzdCBhbHNvIGJlIHBhY2thZ2VkLgogICAgRklMRToKICAgIGZvciBteSAkRmlsZSAoQFRpZHlBbGw6Ok9UUlM6OkZpbGVMaXN0KSB7CgogICAgICAgIG15ICgkVG9wbGV2ZWxEaXJlY3RvcnkpID0gJEZpbGUgPX4gbXteKFteL10rKS99OwogICAgICAgIG5leHQgRklMRSBpZiAhJFRvcGxldmVsRGlyZWN0b3J5OwogICAgICAgIG5leHQgRklMRSBpZiAhJFRvcGxldmVsRGlyZWN0b3JpZXN7JFRvcGxldmVsRGlyZWN0b3J5fTsKCiAgICAgICAgIyBTa2lwIGRvY3VtZW50YXRpb24gZmlsZXMsIHRoZXNlIGRvbid0IGhhdmUgdG8gYmUgb24gdGhlIFNPUE0gbGlzdC4KICAgICAgICBuZXh0IEZJTEUgaWYgJEZpbGUgPX4gbXtcQSBkb2MvIH1tc3g7CgogICAgICAgICMgQWxsb3cgdW5wYWNrYWdlZCBoaWRkZW4gZmlsZXMuCiAgICAgICAgbmV4dCBGSUxFIGlmICRGaWxlID1+IG17L1suXX1tc3g7CgogICAgICAgIGlmICggIWdyZXAgeyAkXyBlcSAkRmlsZSB9IEBTT1BNRmlsZUxpc3QgKSB7CiAgICAgICAgICAgICRFcnJvck1lc3NhZ2VVbnBhY2thZ2VkRmlsZXMgLj0gIiRGaWxlXG4iOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkRXJyb3JNZXNzYWdlOwoKICAgIGlmICgkRXJyb3JNZXNzYWdlRm9yYmlkZGVuVG9wbGV2ZWwpIHsKICAgICAgICAkRXJyb3JNZXNzYWdlIC49IDw8IkVPRiI7ClRoZSBmb2xsb3dpbmcgcGFja2FnZWQgZmlsZXMgdHJ5IHRvIGNyZWF0ZSBuZXcgdG9wbGV2ZWwgZmlsZXMgb3IgZGlyZWN0b3JpZXMgaW4gL29wdC9vdHJzLCB3aGljaCBpcyBub3QgcG9zc2libGUKZHVlIHRvIHBlcm1pc3Npb24gcmVzdHJpY3Rpb25zOgokRXJyb3JNZXNzYWdlRm9yYmlkZGVuVG9wbGV2ZWwKRU9GCiAgICB9CgogICAgaWYgKCRFcnJvck1lc3NhZ2VNaXNzaW5nRmlsZXMpIHsKICAgICAgICAkRXJyb3JNZXNzYWdlIC49IDw8IkVPRiI7ClRoZSBmb2xsb3dpbmcgZmlsZXMgd2VyZSBsaXN0ZWQgaW4gdGhlIFNPUE0gYnV0IG5vdCBmb3VuZCBpbiB0aGUgZGlyZWN0b3J5OgokRXJyb3JNZXNzYWdlTWlzc2luZ0ZpbGVzCkVPRgogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlVW5wYWNrYWdlZEZpbGVzKSB7CiAgICAgICAgJEVycm9yTWVzc2FnZSAuPSA8PCJFT0YiOwpUaGUgZm9sbG93aW5nIGZpbGVzIHdlcmUgZm91bmQgaW4gdGhlIGRpcmVjdG9yeSBidXQgbm90IGxpc3RlZCBpbiB0aGUgU09QTToKJEVycm9yTWVzc2FnZVVucGFja2FnZWRGaWxlcwpFT0YKICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCIkRXJyb3JNZXNzYWdlIik7CiAgICB9Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6U09QTTo6RmlsZVJpZ2h0czsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpCYXNlKTsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgIG15ICRFeGVjdXRhYmxlUGVybWlzc2lvbkNoZWNrID0gcXJ7UGVybWlzc2lvbj0iNzYwIn07CiAgICBteSAkU3RhdGljUGVybWlzc2lvbkNoZWNrICAgICA9IHFye1Blcm1pc3Npb249IjY2MCJ9OwogICAgbXkgJEV4cGxhbmF0aW9uID0gJ0EgPEZpbGU+LVRhZyBoYXMgd3JvbmcgcGVybWlzc2lvbnMuIFNjcmlwdCBmaWxlcyBub3JtYWxseSBuZWVkIDc2MCByaWdodHMsIHRoZSBvdGhlcnMgNjYwLic7CgogICAgIyBBIGxpdHRsZSBtb3JlIGxlbmllbnQgYmVmb3JlIE9UUlMgOCAod2l0aCBncm91cCBleGVjdXRhYmxlIHBlcm1pc3Npb25zKQogICAgaWYgKCAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDgsIDAgKSApIHsKICAgICAgICAkRXhlY3V0YWJsZVBlcm1pc3Npb25DaGVjayA9IHFye1Blcm1pc3Npb249Ijc3MCJ9OwogICAgICAgICRTdGF0aWNQZXJtaXNzaW9uQ2hlY2sgICAgID0gcXJ7UGVybWlzc2lvbj0iNjYwIn07CiAgICAgICAgJEV4cGxhbmF0aW9uID0gJ0EgPEZpbGU+LVRhZyBoYXMgd3JvbmcgcGVybWlzc2lvbnMuIFNjcmlwdCBmaWxlcyBub3JtYWxseSBuZWVkIDc3MCByaWdodHMsIHRoZSBvdGhlcnMgNjYwLic7CiAgICB9CgogICAgIyBBIGxvdCBtb3JlIGxlbmllbnQgYmVmb3JlIE9UUlMgNiAod29ybGQgcGVybWlzc2lvbnMpCiAgICBpZiAoICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggNiwgMCApICkgewogICAgICAgICRFeGVjdXRhYmxlUGVybWlzc2lvbkNoZWNrID0gcXJ7UGVybWlzc2lvbj0iNzU1In07CiAgICAgICAgJFN0YXRpY1Blcm1pc3Npb25DaGVjayAgICAgPSBxcntQZXJtaXNzaW9uPSI2NDQifTsKICAgICAgICAkRXhwbGFuYXRpb24gPSAnQSA8RmlsZT4tVGFnIGhhcyB3cm9uZyBwZXJtaXNzaW9ucy4gU2NyaXB0IGZpbGVzIG5vcm1hbGx5IG5lZWQgNzU1IHJpZ2h0cywgdGhlIG90aGVycyA2NDQuJzsKICAgIH0KCiAgICBteSAoICRFcnJvck1lc3NhZ2UsICRDb3VudGVyICk7CgogICAgTElORToKICAgIGZvciBteSAkTGluZSAoIHNwbGl0IC9cbi8sICRDb2RlICkgewogICAgICAgICRDb3VudGVyKys7CiAgICAgICAgbmV4dCBMSU5FIGlmICRMaW5lICF+IG0vPEZpbGUuKlwvPi87CiAgICAgICAgaWYgKCAkTGluZSA9fiBtLzxGaWxlLipMb2NhdGlvbj0iKFteIl0rKSIuKlwvPi8gKSB7CiAgICAgICAgICAgIGlmICggJDEgJiYgJDEgPX4gL1wuKHBsfHNofGZwbHxwc2dpfHNoKSQvICkgewogICAgICAgICAgICAgICAgaWYgKCAkTGluZSAhfiAkRXhlY3V0YWJsZVBlcm1pc3Npb25DaGVjayApIHsKICAgICAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoICRMaW5lICF+ICRTdGF0aWNQZXJtaXNzaW9uQ2hlY2sgKSB7CiAgICAgICAgICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiTGluZSAkQ291bnRlcjogJExpbmVcbiI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKJEV4cGxhbmF0aW9uCiRFcnJvck1lc3NhZ2UKRU9GCiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6U09QTTo6TmFtZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpCYXNlKTsKCnN1YiB2YWxpZGF0ZV9maWxlIHsKICAgIG15ICggJFNlbGYsICRGaWxlbmFtZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBGaWxlbmFtZSA9PiAkRmlsZW5hbWUgKTsKICAgIG15ICRDb2RlID0gJFNlbGYtPl9HZXRGaWxlQ29udGVudHMoJEZpbGVuYW1lKTsKCiAgICBteSAoJE5hbWVPZlRhZykgPSAkQ29kZSA9fiBtLzxOYW1lPihbXjw+XSspPFwvTmFtZT4vOwogICAgbXkgJE5hbWVPZkZpbGUgPSBzdWJzdHIoIGJhc2VuYW1lKCRGaWxlbmFtZSksIDAsIC01ICk7ICAgICMgY3V0IG9mZiAuc29wbQoKICAgIGlmICggJE5hbWVPZlRhZyBuZSAkTmFtZU9mRmlsZSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKVGhlIG1vZHVsZSBuYW1lICROYW1lT2ZUYWcgaXMgbm90IGVxdWFsIHRvIHRoZSBuYW1lIG9mIHRoZSAuc29wbSBmaWxlICgkTmFtZU9mRmlsZSkuCkVPRgogICAgfQp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6U09QTTo6T25kZW1hbmRUZXN0aW5nUHJlc2VudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpCYXNlKTsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggNywgMCApOwoKICAgIG15ICRPbmRlbWFuZFRlc3RpbmdQcmVzZW50ID0gZ3JlcCB7ICRfID1+IG17Wy5db3Rycy1jaVsuXXltbH0gfSBAVGlkeUFsbDo6T1RSUzo6RmlsZUxpc3Q7CgogICAgaWYgKCAhJE9uZGVtYW5kVGVzdGluZ1ByZXNlbnQgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoCiAgICAgICAgICAgICJFdmVyeSBwYWNrYWdlIG5lZWRzIHRvIGNvbnRhaW4gYW4gYWN0aXZlIE9uRGVtYW5kIHRlc3RpbmcgY29uZmlndXJhdGlvbiAoLm90cnMtY2kueW1sKS5cbiIKICAgICAgICApOwogICAgfQp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6U09QTTo6UGFja2FnZVJlcXVpcmVkOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CiAgICByZXR1cm4gaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCAzLCAxICk7CgogICAgaWYgKCAkQ29kZSA9fiBtezxQYWNrYWdlUmVxdWlyZWQ+fXNteCApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKWW91IHVzZSB0aGUgYXR0cmlidXRlIFBhY2thZ2VSZXF1aXJlZCB3aXRob3V0IGEgdmVyc2lvbiB0YWcuClVzZTogXCI8UGFja2FnZVJlcXVpcmVkIFZlcnNpb249IjEuMS4xIj5OZXdQYWNrYWdlPC9QYWNrYWdlUmVxdWlyZWQ+CkVPRgogICAgfQp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6U09QTTo6UmVxdWlyZWRFbGVtZW50czsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpCYXNlKTsKCnN1YiB0cmFuc2Zvcm1fc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICAjIFJlcGxhY2UgT1RSUyBHbWJIIHdpdGggT1RSUyBBRwogICAgJENvZGUgPX4gc3sgT1RSUyBbIF0rIEdtYkggfXtPVFJTIEFHfXhtc2c7CgogICAgIyBSZXBsYWNlIDxVUkw+aHR0cDovL290cnMub3JnLzwvVVJMPiB3aXRoIDxVUkw+aHR0cHM6Ly9vdHJzLm9yZy88L1VSTD4KICAgICRDb2RlID1+IHN7IF4gKCBccyogKSBcPCBVUkwgXD4gLis/IFw8IFwvIFVSTCBcPiB9eyQxPFVSTD5odHRwczovL290cnMuY29tLzwvVVJMPn14bXNnOwoKICAgICMgUmVwbGFjZSBWZXJzaW9uCiAgICAkQ29kZSA9fiBzeyA8VmVyc2lvbj4gW148PlxuXSogPFwvVmVyc2lvbj4gfXs8VmVyc2lvbj4wLjAuMDwvVmVyc2lvbj59eG1zZzsKCiAgICAjIGNsZWFudXAgZmlsZSB0YWdzCiAgICAkQ29kZSA9fiBzeyAiXC8+IH17IiBcLz59eG1zZzsKICAgICRDb2RlID1+IHN7ICI+PFwvRmlsZT4gfXsiIFwvPn14bXNnOwogICAgJENvZGUgPX4gc3sKICAgICAgICBeICggWyBdKiA8RmlsZSApIFsgXSsgKCBMb2NhdGlvbj0iIFteIDw+XG5dKyAiICkgWyBdKyAoIFBlcm1pc3Npb249IlxkXGRcZCIgKSBbIF0rICggXC8+ICkKICAgIH17JDEgJDMgJDIgJDR9eG1zZzsKCiAgICAjIFJlbW92ZSBCdWlsZEhvc3QgYW5kIEJ1aWxkRGF0ZSB0YWdzCiAgICAkQ29kZSA9fiBzeyA8QnVpbGRIb3N0PiBbXjw+XG5dKiA8XC9CdWlsZEhvc3Q+IH17fXhtc2c7CiAgICAkQ29kZSA9fiBzeyA8QnVpbGREYXRlPiBbXjw+XG5dKiA8XC9CdWlsZERhdGU+IH17fXhtc2c7CgogICAgIyBSZW1vdmUgQ2hhbmdlTG9nIHRhZ3MKICAgICRDb2RlID1+IHN7IDxDaGFuZ2VMb2c+IFtePD5cbl0qIDxcL0NoYW5nZUxvZz4gfXt9eG1zZzsKCiAgICByZXR1cm4gJENvZGU7Cn0KCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgIG15ICRFcnJvck1lc3NhZ2U7CgogICAgbXkgJE5hbWUgICAgICAgICAgICA9IDA7CiAgICBteSAkVmVyc2lvbiAgICAgICAgID0gMDsKICAgIG15ICRDb3VudGVyICAgICAgICAgPSAwOwogICAgbXkgJEZyYW1ld29yayAgICAgICA9IDA7CiAgICBteSAkVmVuZG9yICAgICAgICAgID0gMDsKICAgIG15ICRVUkwgICAgICAgICAgICAgPSAwOwogICAgbXkgJExpY2Vuc2UgICAgICAgICA9IDA7CiAgICBteSAkQnVpbGREYXRlICAgICAgID0gMDsKICAgIG15ICRCdWlsZEhvc3QgICAgICAgPSAwOwogICAgbXkgJERlc2NyaXB0aW9uRU4gICA9IDA7CiAgICBteSAkVGFibGUgICAgICAgICAgID0gMDsKICAgIG15ICREYXRhYmFzZVVwZ3JhZGUgPSAwOwogICAgbXkgJE5hbWVMZW5ndGggICAgICA9IDA7CiAgICBteSAkRG93bmxvYWRGbGFnICAgID0gMDsKICAgIG15ICRCdWlsZEZsYWcgICAgICAgPSAwOwogICAgbXkgJFBhY2thZ2VOYW1lICAgICA9ICcnOwoKICAgIG15ICRUYWJsZU5hbWVMZW5ndGggPSAzMDsKCiAgICBteSBAQ29kZUxpbmVzID0gc3BsaXQgL1xuLywgJENvZGU7CgogICAgZm9yIG15ICRMaW5lIChAQ29kZUxpbmVzKSB7CiAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICBpZiAoICRMaW5lID1+IC88TmFtZT4oW148Pl0rKTxcL05hbWU+LyApIHsKCiAgICAgICAgICAgICROYW1lICAgICAgICA9IDE7CiAgICAgICAgICAgICRQYWNrYWdlTmFtZSA9ICQxOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRMaW5lID1+IC88RGVzY3JpcHRpb24gTGFuZz0iZW4iW148Pl0qPltePD5dKzxcL0Rlc2NyaXB0aW9uPi8gKSB7CiAgICAgICAgICAgICREZXNjcmlwdGlvbkVOID0gMTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkTGluZSA9fiAvPExpY2Vuc2U+KFtePD5dKyk8XC9MaWNlbnNlPi8gKSB7CiAgICAgICAgICAgICRMaWNlbnNlID0gMTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkTGluZSA9fiAvPFVSTD4oW148Pl0rKTxcL1VSTD4vICkgewogICAgICAgICAgICAkVVJMID0gMTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkTGluZSA9fiAvPEJ1aWxkSG9zdD5bXjw+XSo8XC9CdWlsZEhvc3Q+LyApIHsKICAgICAgICAgICAgJEJ1aWxkSG9zdCA9IDE7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJExpbmUgPX4gLzxCdWlsZERhdGU+W148Pl0qPFwvQnVpbGREYXRlPi8gKSB7CiAgICAgICAgICAgICRCdWlsZERhdGUgPSAxOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRMaW5lID1+IC88VmVuZG9yPihbXjw+XSspPFwvVmVuZG9yPi8gKSB7CiAgICAgICAgICAgICRWZW5kb3IgPSAxOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRMaW5lID1+IG17IDxGcmFtZXdvcmsgKD86IFsgXSsgW148Pl0qICk/ID4gKCBbXjw+XSsgKSA8XC9GcmFtZXdvcms+IH14bXMgKSB7CiAgICAgICAgICAgICRGcmFtZXdvcmsgPSAxOwoKICAgICAgICAgICAgbXkgJEZyYW1ld29ya1ZlcnNpb24gPSAkMTsKCiAgICAgICAgICAgIGlmICggJEZyYW1ld29ya1ZlcnNpb24gIX4gbXsgXGQrIFwuIFxkKyBcLiBbeFxkXSsgfXhtcyApIHsKICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIlZlcnNpb24gbmVlZHMgdG8gaGF2ZSB0aGUgZm9ybWF0IDAuMC54IG9yIDAuMC4wIVxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRMaW5lID1+IC88VmVyc2lvbj4oW148Pl0rKTxcL1ZlcnNpb24+LyApIHsKICAgICAgICAgICAgJFZlcnNpb24gPSAxOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRMaW5lID1+IC88RmlsZShbXjw+XSspPihbXjw+XSopPFwvRmlsZT4vICkgewogICAgICAgICAgICBteSAkQXR0cmlidXRlcyA9ICQxOwogICAgICAgICAgICBteSAkQ29udGVudCAgICA9ICQyOwogICAgICAgICAgICBpZiAoICRDb250ZW50IG5lICcnICkgewogICAgICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiRG9uJ3QgaW5zZXJ0IHNvbWV0aGluZyBiZXR3ZWVuIDxGaWxlPjxcL0ZpbGU+IVxuIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoICRBdHRyaWJ1dGVzID1+IC8oVHlwZXxFbmNvZGUpPS8gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJEb24ndCB1c2UgdGhlIGF0dHJpYnV0ZSAnVHlwZScgb3IgJ0VuY29kZScgaW4gPEZpbGU+VGFncyFcbiI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkQXR0cmlidXRlcyA9fiAvTG9jYXRpb249Lis/XC5zb3BtLyApIHsKICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIkl0IGlzIHNlbnNlbGVzcyB0byBpbmNsdWRlIC5zb3BtLWZpbGVzIGluIGEgb3BtISAtPiAkTGluZSI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkTGluZSA9fiAvKDxUYWJsZSAuKz8+fDxcL1RhYmxlPikvICkgewogICAgICAgICAgICAkVGFibGUgPSAxOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRMaW5lID1+IC88RGF0YWJhc2VVcGdyYWRlPi8gKSB7CiAgICAgICAgICAgICREYXRhYmFzZVVwZ3JhZGUgPSAxOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRMaW5lID1+IC88XC9EYXRhYmFzZVVwZ3JhZGU+LyApIHsKICAgICAgICAgICAgJERhdGFiYXNlVXBncmFkZSA9IDA7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJExpbmUgPX4gLzxUYWJsZS4rPz4vICkgewogICAgICAgICAgICBpZiAoICREYXRhYmFzZVVwZ3JhZGUgJiYgJExpbmUgPX4gLzxUYWJsZS8gJiYgJExpbmUgIX4gL1ZlcnNpb249LyApIHsKICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UKICAgICAgICAgICAgICAgICAgICAuPSAiSWYgeW91IHVzZSA8VGFibGUuLi4gaW4gYSA8RGF0YWJhc2VVcGdyYWRlPiBjb250ZXh0IHlvdSBuZWVkIHRvIGhhdmUgYSBWZXJzaW9uIGF0dHJpYnV0ZSB3aXRoIHRoZSBiZWdpbm5pbmcgdmVyc2lvbiB3aGVyZSB0aGlzIGNoYW5nZSBpcyBuZWVkZWQgKGUuIGcuIDxUYWJsZUFsdGVyIE5hbWU9XCJzb21lX3RhYmxlXCIgVmVyc2lvbj1cIjEuMC42XCI+KSFcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJExpbmUgPX4gLzwoQ29sdW1uLip8VGFibGVDcmVhdGUuKikgTmFtZT0iKC4rPykiLyApIHsKICAgICAgICAgICAgJE5hbWUgPSAkMjsKICAgICAgICAgICAgaWYgKCBsZW5ndGggJE5hbWUgPiAkVGFibGVOYW1lTGVuZ3RoICkgewogICAgICAgICAgICAgICAgJE5hbWVMZW5ndGggLj0gIkxpbmUgJENvdW50ZXI6ICROYW1lXG4iOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIE9UUlMgNzogQ2hlY2sgUGFja2FnZUlzRG93bmxvYWRhYmxlICsgUGFja2FnZUlzQnVpbGRhYmxlIGZsYWdzLgogICAgICAgIGlmICggJExpbmUgPX4gbXsgPFBhY2thZ2VJc0Rvd25sb2FkYWJsZT4oPzogXGQgKTxcL1BhY2thZ2VJc0Rvd25sb2FkYWJsZT4gfXhtcyApIHsKCiAgICAgICAgICAgICREb3dubG9hZEZsYWcgPSAxOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkTGluZSA9fiBteyA8UGFja2FnZUlzQnVpbGRhYmxlPig/OiBcZCApPFwvUGFja2FnZUlzQnVpbGRhYmxlPiB9eG1zICkgewogICAgICAgICAgICAkQnVpbGRGbGFnID0gMTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCRUYWJsZSkgewogICAgICAgICRFcnJvck1lc3NhZ2UKICAgICAgICAgICAgLj0gIlRoZSBFbGVtZW50IDxUYWJsZT4gaXMgbm90IGFsbG93ZWQgaW4gc29wbS1maWxlcy4gUGVyaGFwcyB5b3UgbWVhbiA8VGFibGVDcmVhdGU+IVxuIjsKICAgIH0KICAgIGlmICgkQnVpbGREYXRlKSB7CiAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiPEJ1aWxkRGF0ZT4gbm8gbG9uZ2VyIHVzZWQgaW4gLnNvcG1zIVxuIjsKICAgIH0KICAgIGlmICgkQnVpbGRIb3N0KSB7CiAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiPEJ1aWxkSG9zdD4gbm8gbG9uZ2VyIHVzZWQgaW4gLnNvcG1zIVxuIjsKICAgIH0KICAgIGlmICggISREZXNjcmlwdGlvbkVOICkgewogICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIllvdSBoYXZlIGZvcmdvdCB0byB1c2UgdGhlIGVsZW1lbnQgPERlc2NyaXB0aW9uIExhbmc9XCJlblwiPiFcbiI7CiAgICB9CiAgICBpZiAoICEkTmFtZSApIHsKICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJZb3UgaGF2ZSBmb3Jnb3QgdG8gdXNlIHRoZSBlbGVtZW50IDxOYW1lPiFcbiI7CiAgICB9CiAgICBpZiAoICEkVmVyc2lvbiApIHsKICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJZb3UgaGF2ZSBmb3Jnb3QgdG8gdXNlIHRoZSBlbGVtZW50IDxWZXJzaW9uPiFcbiI7CiAgICB9CiAgICBpZiAoICEkRnJhbWV3b3JrICkgewogICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIllvdSBoYXZlIGZvcmdvdCB0byB1c2UgdGhlIGVsZW1lbnQgPEZyYW1ld29yaz4hXG4iOwogICAgfQogICAgaWYgKCAhJFZlbmRvciApIHsKICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJZb3UgaGF2ZSBmb3Jnb3QgdG8gdXNlIHRoZSBlbGVtZW50IDxWZW5kb3I+IVxuIjsKICAgIH0KICAgIGlmICggISRVUkwgKSB7CiAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiWW91IGhhdmUgZm9yZ290IHRvIHVzZSB0aGUgZWxlbWVudCA8VVJMPiFcbiI7CiAgICB9CiAgICBpZiAoICEkTGljZW5zZSApIHsKICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJZb3UgaGF2ZSBmb3Jnb3QgdG8gdXNlIHRoZSBlbGVtZW50IDxMaWNlbnNlPiFcbiI7CiAgICB9CiAgICBpZiAoJE5hbWVMZW5ndGgpIHsKICAgICAgICAkRXJyb3JNZXNzYWdlCiAgICAgICAgICAgIC49ICJQbGVhc2UgdXNlIENvbHVtbiBhbmQgVGFibGVuYW1lcyB3aXRoIGxlc3MgdGhhbiAkVGFibGVOYW1lTGVuZ3RoIGxldHRlcnMhXG4iOwogICAgICAgICRFcnJvck1lc3NhZ2UgLj0gJE5hbWVMZW5ndGg7CiAgICB9CgogICAgIyBDaGVja3MgZm9yIE9UUlMgNysuCiAgICBpZiAoICEkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDcsIDAgKSApIHsKCiAgICAgICAgIyBQYWNrYWdlSXNEb3dubG9hZGFibGUgKyBQYWNrYWdlSXNCdWlsZGFibGUgZmxhZ3MgaGFzIHRvIGJlIHNldCBmb3Igc29tZSBwYWNrYWdlczoKICAgICAgICAjICAgLSBhbGwgcGFja2FnZXMgd2hpY2ggc3RhcnRzIHdpdGggT1RSUwogICAgICAgICMgICAtIGFsbCBPVFJTIEZyZWViaWUgRmVhdHVyZXMKICAgICAgICAjICAgLSBhbGwgSVRTTSBwYWNrYWdlcwogICAgICAgICMgICAtIE9UUlNTVE9STSBwYWNrYWdlCiAgICAgICAgaWYgKAogICAgICAgICAgICAkU2VsZi0+SXNSZXN0cmljdGVkUGFja2FnZSgKICAgICAgICAgICAgICAgIFBhY2thZ2UgPT4gJFBhY2thZ2VOYW1lLAogICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICBpZiAoICEkRG93bmxvYWRGbGFnICkgewoKICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIllvdSBoYXZlIGZvcmdvdCB0byB1c2UgdGhlIGVsZW1lbnQgPFBhY2thZ2VJc0Rvd25sb2FkYWJsZT4hXG4iOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICEkQnVpbGRGbGFnICkgewoKICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIllvdSBoYXZlIGZvcmdvdCB0byB1c2UgdGhlIGVsZW1lbnQgPFBhY2thZ2VJc0J1aWxkYWJsZT4hXG4iOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoJEVycm9yTWVzc2FnZSk7CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgSXNSZXN0cmljdGVkUGFja2FnZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICVSZXN0cmljdGVkUGFja2FnZXMgPSAoCgogICAgICAgICMgT1RSUyBGcmVlYmllIEZlYXR1cmVzIChvdHJzLm9yZykKICAgICAgICBGQVEgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgIGlQaG9uZUhhbmRsZSAgICAgICAgICAgID0+IDEsCiAgICAgICAgTWFzdGVyU2xhdmUgICAgICAgICAgICAgPT4gMSwKICAgICAgICBPVFJTQXBwb2ludG1lbnRDYWxlbmRhciA9PiAxLAogICAgICAgIE9UUlNDb2RlUG9saWN5ICAgICAgICAgID0+IDEsCiAgICAgICAgT1RSU01hc3RlclNsYXZlICAgICAgICAgPT4gMSwKICAgICAgICBTdXBwb3J0ICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgIFN1cnZleSAgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgU3lzdGVtTW9uaXRvcmluZyAgICAgICAgPT4gMSwKICAgICAgICBUaW1lQWNjb3VudGluZyAgICAgICAgICA9PiAxLAoKICAgICAgICAjIElUU00gcGFja2FnZXMgKGl0c20ub3Rycy5vcmcpCiAgICAgICAgR2VuZXJhbENhdGFsb2cgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICBJbXBvcnRFeHBvcnQgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgIElUU00gICAgICAgICAgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgSVRTTUNoYW5nZU1hbmFnZW1lbnQgICAgICAgICAgPT4gMSwKICAgICAgICBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQgICA9PiAxLAogICAgICAgIElUU01Db3JlICAgICAgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgSVRTTUluY2lkZW50UHJvYmxlbU1hbmFnZW1lbnQgPT4gMSwKICAgICAgICBJVFNNU2VydmljZUxldmVsTWFuYWdlbWVudCAgICA9PiAxLAoKICAgICAgICAjIFNUT1JNIHBhY2thZ2VzIChzdG9ybS5vdHJzLm9yZykKICAgICAgICBPVFJTU1RPUk0gPT4gMSwKICAgICk7CiAgICByZXR1cm4gMSBpZiAkUmVzdHJpY3RlZFBhY2thZ2VzeyAkUGFyYW17UGFja2FnZX0gfTsKCiAgICAjIEFsbCBwYWNrYWdlcyB3aGljaCBzdGFydCB3aXRoICJPVFJTIi4KICAgIHJldHVybiAxIGlmICRQYXJhbXtQYWNrYWdlfSA9fiBteyBcQSBPVFJTIC4rIH14bXM7CgogICAgcmV0dXJuIDA7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6U09QTTo6WFNEVmFsaWRhdG9yOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UpOwoKc3ViIHZhbGlkYXRlX2ZpbGUgewogICAgbXkgKCAkU2VsZiwgJEZpbGVuYW1lICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIEZpbGVuYW1lID0+ICRGaWxlbmFtZSApOwogICAgcmV0dXJuIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggMywgMyApOwoKICAgIG15ICRYU0RGaWxlID0gZGlybmFtZShfX0ZJTEVfXykgLiAnLy4uL1N0YXRpY0ZpbGVzL1hTRC9TT1BNLnhzZCc7CiAgICBpZiAoICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggOSwgMCApICkgewogICAgICAgICRYU0RGaWxlID0gZGlybmFtZShfX0ZJTEVfXykgLiAnLy4uL1N0YXRpY0ZpbGVzL1hTRC9TT1BNX2JlZm9yZV85LnhzZCc7CgogICAgfQogICAgbXkgJENNRCA9ICJ4bWxsaW50IC0tbm9vdXQgLS1ub25ldCAtLXNjaGVtYSAkWFNERmlsZSI7CgogICAgbXkgJENvbW1hbmQgPSBzcHJpbnRmKCAiJXMgJXMgJXMgMj4mMSIsICRDTUQsICRTZWxmLT5hcmd2KCksICRGaWxlbmFtZSApOwogICAgbXkgJE91dHB1dCAgPSBgJENvbW1hbmRgOwoKICAgICMgSWYgZXhlY3V0aW9uIGZhaWxlZCwgd2FybiBhYm91dCBpbnN0YWxsaW5nIHBhY2thZ2UuCiAgICBpZiAoICR7XkNISUxEX0VSUk9SX05BVElWRX0gPT0gLTEgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIid4bWxsaW50JyB3YXMgbm90IGZvdW5kLCBwbGVhc2UgaW5zdGFsbCBpdC5cbiIpOwogICAgfQoKICAgIGlmICggJHteQ0hJTERfRVJST1JfTkFUSVZFfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiJE91dHB1dFxuIik7ICAgICMgbm9uLXplcm8gZXhpdCBjb2RlCiAgICB9Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6U1FMOjpSZXNlcnZlZFdvcmRzOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CgogICAgbXkgJFRhYmxlQ3JlYXRlID0gMDsKICAgIG15ICRDb3VudGVyOwoKICAgIGZvciBteSAkTGluZSAoIHNwbGl0KCAvXG4vLCAkQ29kZSApICkgewogICAgICAgICRDb3VudGVyKys7CiAgICAgICAgaWYgKCAkTGluZSA9fiAvPFRhYmxlLyApIHsKICAgICAgICAgICAgJFRhYmxlQ3JlYXRlID0gMTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkVGFibGVDcmVhdGUgJiYgJExpbmUgPX4gLzxDb2x1bW4uKz9OYW1lPSIoLis/KSIuKj9cLz4vaSApIHsKICAgICAgICAgICAgaWYgKCAhJDEgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKRm91bmQgYW4gZW1wdHkgY29sdW1uIG5hbWUhCkxpbmUgJENvdW50ZXI6ICRMaW5lCkVPRgogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3IgbXkgJFJlc2VydmVkV29yZCAoCiAgICAgICAgICAgICAgICBxdygKICAgICAgICAgICAgICAgIGFkZCBhbGwgYWx0ZXIgYW5kCiAgICAgICAgICAgICAgICBhbnkgYXMgYXNjIGJhY2t1cAogICAgICAgICAgICAgICAgYmVnaW4gYmV0d2VlbiBiaWdpbnQgYmluYXJ5CiAgICAgICAgICAgICAgICBiaXQgYm90dG9tIGJyZWFrIGJ1bGsgYnkgY2FjaGUKICAgICAgICAgICAgICAgIGNhbGwgY2FwYWJpbGl0eSBjYXNjYWRlIGNhc2UKICAgICAgICAgICAgICAgIGNhc3QgY2hhciBjaGFyX2NvbnZlcnQgY2hhcmFjdGVyCiAgICAgICAgICAgICAgICBjaGVjayBjaGVja3BvaW50IGNsb3NlIGNvbW1lbnQKICAgICAgICAgICAgICAgIGNvbW1pdCBjb25uZWN0IGNvbnN0cmFpbnQgY29udGFpbnMKICAgICAgICAgICAgICAgIGNvbnRpbnVlIGNvbnZlcnQgY3JlYXRlIGNyb3NzCiAgICAgICAgICAgICAgICBjdWJlIGN1cnJlbnQgY3VycmVudF90aW1lc3RhbXAgY3VycmVudF91c2VyCiAgICAgICAgICAgICAgICBjdXJzb3IgZGF0ZSBkYnNwYWNlIGRlYWxsb2NhdGUKICAgICAgICAgICAgICAgIGRlYyBkZWNpbWFsIGRlY2xhcmUgZGVmYXVsdAogICAgICAgICAgICAgICAgZGVsZXRlIGRlbGV0aW5nIGRlc2MgZGlzdGluY3QKICAgICAgICAgICAgICAgIGRvIGRvdWJsZSBkcm9wIGR5bmFtaWMgZWFjaAogICAgICAgICAgICAgICAgZWxzZSBlbHNlaWYgZW5jcnlwdGVkIGVuZAogICAgICAgICAgICAgICAgZW5kaWYgZXNjYXBlIGV4Y2VwdCBleGNlcHRpb24KICAgICAgICAgICAgICAgIGV4ZWMgZXhlY3V0ZSBleGlzdGluZyBleGlzdHMKICAgICAgICAgICAgICAgIGV4dGVybmxvZ2luIGZldGNoIGZpcnN0IGZsb2F0CiAgICAgICAgICAgICAgICBmb3IgZm9yY2UgZm9yZWlnbiBmb3J3YXJkCiAgICAgICAgICAgICAgICBmcm9tIGZ1bGwgZ290byBncmFudAogICAgICAgICAgICAgICAgZ3JvdXAgaGF2aW5nIGhvbGRsb2NrIGlkZW50aWZpZWQKICAgICAgICAgICAgICAgIGlmIGluIGluZGV4IGluZGV4X2xwYXJlbgogICAgICAgICAgICAgICAgaW5uZXIgaW5vdXQgaW5zZW5zaXRpdmUgaW5zZXJ0CiAgICAgICAgICAgICAgICBpbnNlcnRpbmcgaW5zdGFsbCBpbnN0ZWFkIGludAogICAgICAgICAgICAgICAgaW50ZWdlciBpbnRlZ3JhdGVkIGludGVyc2VjdCBpbnRvCiAgICAgICAgICAgICAgICBpcSBpcyBpc29sYXRpb24gam9pbgogICAgICAgICAgICAgICAga2V5IGxhdGVyYWwgbGVmdCBsaWtlCiAgICAgICAgICAgICAgICBsb2NrIGxvbmcgbWF0Y2gKICAgICAgICAgICAgICAgIG1lbWJlcnNoaXAgbWVzc2FnZSBtb2RlIG1vZGlmeQogICAgICAgICAgICAgICAgbmF0dXJhbCBuZXcgbm8gbm9ob2xkbG9jawogICAgICAgICAgICAgICAgbm90IG5vdGlmeSBudWxsIG51bWVyaWMKICAgICAgICAgICAgICAgIG9mIG9mZiBvbiBvcGVuCiAgICAgICAgICAgICAgICBvcHRpb24gb3B0aW9ucyBvciBvcmRlcgogICAgICAgICAgICAgICAgb3RoZXJzIG91dCBvdXRlciBvdmVyCiAgICAgICAgICAgICAgICBwYXNzdGhyb3VnaCBwcmVjaXNpb24gcHJlcGFyZSBwcmltYXJ5CiAgICAgICAgICAgICAgICBwcmludCBwcml2aWxlZ2VzIHByb2MgcHJvY2VkdXJlCiAgICAgICAgICAgICAgICBwdWJsaWNhdGlvbiByYWlzZXJyb3IgcmVhZHRleHQgcmVhbAogICAgICAgICAgICAgICAgcmVmZXJlbmNlcyByZWxlYXNlIHJlbW90ZQogICAgICAgICAgICAgICAgcmVtb3ZlIHJlbmFtZSByZW9yZ2FuaXplIHJlc291cmNlCiAgICAgICAgICAgICAgICByZXN0b3JlIHJlc3RyaWN0IHJldHVybiByZXZva2UKICAgICAgICAgICAgICAgIHJpZ2h0IHJvbGUgcm9sbGJhY2sgcm9sbHVwIHJvdyBydWxlIHNhdmUKICAgICAgICAgICAgICAgIHNhdmVwb2ludCBzY3JvbGwgc2VsZWN0IHNlbnNpdGl2ZQogICAgICAgICAgICAgICAgc2Vzc2lvbiBzZXQgc2V0dXNlciBzaGFyZQogICAgICAgICAgICAgICAgc21hbGxpbnQgc29tZSBzcWxjb2RlIHNxbHN0YXRlCiAgICAgICAgICAgICAgICBzdGFydCBzdG9wIHN1YnRyYW5zIHN1YnRyYW5zYWN0aW9uCiAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZSBzeW50YXhfZXJyb3IgdGFibGUgdGVtcG9yYXJ5CiAgICAgICAgICAgICAgICB0aGVuIHRpbWUgdGltZXN0YW1wIHRpbnlpbnQKICAgICAgICAgICAgICAgIHRvIHRvcCB0cmFuIHRyaWdnZXIKICAgICAgICAgICAgICAgIHRydW5jYXRlIHRzZXF1YWwgdW5ib3VuZGVkIHVuZG8gdW5pb24KICAgICAgICAgICAgICAgIHVuaXF1ZSB1bmtub3duIHVuc2lnbmVkIHVwZGF0ZQogICAgICAgICAgICAgICAgdXBkYXRpbmcgdXNlciB1c2luZyB2YWxpZGF0ZQogICAgICAgICAgICAgICAgdmFsdWVzIHZhcmJpbmFyeSB2YXJjaGFyIHZhcmlhYmxlCiAgICAgICAgICAgICAgICB2YXJ5aW5nIHZpZXcgd2FpdCB3YWl0Zm9yCiAgICAgICAgICAgICAgICB3aGVuIHdoZXJlIHdoaWxlIHdpbmRvdwogICAgICAgICAgICAgICAgd2l0aCB3aXRoX2N1YmUgd2l0aF9scGFyZW4gd2l0aF9yb2xsdXAKICAgICAgICAgICAgICAgIHdpdGhpbiB3b3JrIHdyaXRldGV4dAogICAgICAgICAgICAgICAgTk9NT05JVE9SSU5HIFJFQ09SRFNfUEVSX0JMT0NLIE5PV0FJVCBEWU5BTUlDX1NBTVBMSU5HIENPTFVNTl9TVEFUUyBHUk9VUFMKICAgICAgICAgICAgICAgIE5PX1BYX0pPSU5fRklMVEVSIE5PX1NUQVRTX0dTRVRTIFNXQVBfSk9JTl9JTlBVVFMgTk9PUkRFUiBUUklHR0VSUyBERU1BTkQKICAgICAgICAgICAgICAgIExPQiBHQllfQ09OQ19ST0xMVVAgUk9XREVQRU5ERU5DSUVTIE5PU1RSSUNUIFBSSVZJTEVHRSBTRU1JSk9JTiBSQVcgVVNFX05MX1dJVEhfSU5ERVgKICAgICAgICAgICAgICAgIElORk9STUFUSU9OQUwgREVOU0VfUkFOSyBOT19RVUVSWV9UUkFOU0ZPUk1BVElPTiBQT0lOVCBUUkFDSU5HIE5PX1hNTF9RVUVSWV9SRVdSSVRFCiAgICAgICAgICAgICAgICBOT1BBUkFMTEVMX0lOREVYIExJTksgUkVGIFRJTUVaT05FX0FCQlIgUElWX1NTRiBUWCBSRUFEUyBERUxBWSBCRklMRSBQUklWQVRFIE1BWExPR01FTUJFUlMKICAgICAgICAgICAgICAgIFVTRV9TRU1JIENPU1QgRVZBTE5BTUUgTk9fQ0FSVEVTSUFOIFRBQk5PIFRSQUNFIFBMQU4gSElOVFNFVF9FTkQgQ09OVEFJTkVSIEFETUlOIENPTFVNTgogICAgICAgICAgICAgICAgU1lTVEVNIFRaX09GRlNFVCBOTFNfTEVOR1RIX1NFTUFOVElDUyBESUNUSU9OQVJZIFNDTl9BU0NFTkRJTkcgRklDX0NJViBOT09WRVJSSURFIElORElDQVRPUgogICAgICAgICAgICAgICAgQklOQVJZX0ZMT0FUX05BTiBST1dJRCBTRVNTSU9OX0NBQ0hFRF9DVVJTT1JTIE9CSk5PIFNRTF9UUkFDRSBCTE9CIFJFTEFUSU9OQUwgQklHRklMRQogICAgICAgICAgICAgICAgQVZBSUxBQklMSVRZIEdVQVJEIEdST1VQX0JZIEFEVklTRSBNRVJHRSBRVU9UQSBDRklMRSBNRU1CRVIgVEhBTiBTQUxUIERVTVAgRVhURVJOQUxMWQogICAgICAgICAgICAgICAgQk9USCBHVUFSQU5URUVEIEVYVEVOVCBTRUNVUklUWSBTQ0FMRSBTWVNfRExfQ1VSU09SIFRZUEUgREVSRUZfTk9fUkVXUklURSBBVVRPIEVTVElNQVRFCiAgICAgICAgICAgICAgICBQT1dFUiBVU0VfU1RPUkVEX09VVExJTkVTIFNJRCBWQVJSQVkgTEVTUyBWQUxVRSBYTUxGT1JFU1QgTUFYTE9HSElTVE9SWSBTVE9SRSBSRURVTkRBTkNZCiAgICAgICAgICAgICAgICBERVFVRVVFIERCQSBNQVRDSEVEIFBSRVNFTlQgQ1BVX1BFUl9DQUxMIERFRklORVIgVVBEX0pPSU5JTkRFWCBORVNURURfVEFCTEVfU0VUX1JFRlMKICAgICAgICAgICAgICAgIEVYUEFORF9HU0VUX1RPX1VOSU9OIElOREVYX1NTX0FTQyBFWFRSQUNUIE9SREVSRURfUFJFRElDQVRFUyBBTElBUyBOT19VU0VfSEFTSCBQUklPUgogICAgICAgICAgICAgICAgWF9EWU5fUFJVTkUgQ09NUE9TSVRFX0xJTUlUIE9CSk5PX1JFVVNFIFJFVkVSU0UgRElTQUJMRSBDVVJSRU5UX0RBVEUgSU5JVElBTCBNSU5JTVVNCiAgICAgICAgICAgICAgICBJTlRFUk1FRElBVEUgUEFSVElUSU9OX0xJU1QgQllURSBNT1VOVCBQUkVCVUlMVCBTT1VSQ0UgTU9ERUxfUEJZIEJJVE1BUF9UUkVFIExPR0ZJTEUKICAgICAgICAgICAgICAgIFJPTEVTIERFR1JFRSBJTlZBTElEQVRFIFRBQkxFU1BBQ0UgUEFTU1dPUkRfVkVSSUZZX0ZVTkNUSU9OIENPTFVNTlMgQ0hPT1NFIFNNQUxMRklMRSBMRVZFTAogICAgICAgICAgICAgICAgT0xEX1BVU0hfUFJFRCBEWU5BTUlDX1NBTVBMSU5HX0VTVF9DRE4gTkxTX0RBVEVfTEFOR1VBR0UgU0VSVkVSRVJST1IgTkVTVEVEX1RBQkxFX0ZBU1RfSU5TRVJUCiAgICAgICAgICAgICAgICBTVFJFQU1TIE5MX1NKIEVMSU1JTkFURV9PVVRFUl9KT0lOIEVOVEVSUFJJU0UgRElTQVNTT0NJQVRFIEdST1VQSU5HIFBBQ0tBR0UgREFURV9NT0RFIENISUxECiAgICAgICAgICAgICAgICBOT19QUlVORV9HU0VUUyBSRUpFQ1QgTk9SRVNFVExPR1MgTk9fQ09OTkVDVF9CWV9DT1NUX0JBU0VEIENIVU5LIE9JRCBSRVRFTlRJT04gTUFYVFJBTlMKICAgICAgICAgICAgICAgIEZCVFNDQU4gTk9ORSBQQVJBTUVURVJTIE9OTElORSBPVVRfT0ZfTElORSBHTE9CQUxfTkFNRSBTUEFDRSBISU5UU0VUX0JFR0lOIFBBU1NXT1JEX0dSQUNFX1RJTUUKICAgICAgICAgICAgICAgIE5PQ0FDSEUgRklOQUwgWUVBUiBSQkEgRVJST1JTIENMQVNTIFVTRV9OTCBDT05ORUNUX0JZX0NPU1RfQkFTRUQgQklOQVJZX0RPVUJMRSBERUZJTkVECiAgICAgICAgICAgICAgICBFVkFMVUFUSU9OIFBVUkdFIEhPVVIgTEVOR1RIIFBSRUNFRElORyBERUNSRU1FTlQgU1VCTVVMVElTRVQgSU5ERVhfUk9XUyBTQ0hFRFVMRVIKICAgICAgICAgICAgICAgIEFVVEhFTlRJQ0FUSU9OIE5VTUJFUiBPSURJTkRFWCBPUEFRVUUgU0FNUExFIFVQREFUQUJMRSBPUkFfUk9XU0NOIElOVEVSUFJFVEVECiAgICAgICAgICAgICAgICBNQVRFUklBTElaRUQgSU5ERVhfQ09NQklORSBPUEFRVUVfWENBTk9OSUNBTCBJTkxJTkVfWE1MVFlQRV9OVCBSRVRVUk5JTkcgUVVFUlkKICAgICAgICAgICAgICAgIE9QVF9FU1RJTUFURSBDTE9CIE5PX0VYUEFORCBERVRBQ0hFRCBQQVNTV09SRF9MT0NLX1RJTUUgVkVDVE9SX1JFQUQgREFUQUZJTEUgUkVQTEFDRQogICAgICAgICAgICAgICAgTkxTX0NIQVJBQ1RFUlNFVCBOT19FTElNSU5BVEVfSk9JTiBCUk9BRENBU1QgQ0lWX0dCIEhBU0ggUUJfTkFNRSBBRlRFUiBTWVNEQkEgQUNDT1VOVAogICAgICAgICAgICAgICAgU0VWRVJFIFBSRUNPTVBVVEVfU1VCUVVFUlkgRlVOQ1RJT04gSU5ERVhUWVBFUyBGTE9CIE1VTFRJU0VUIE5MU19TUEVDSUFMX0NIQVJTIFNLSVAKICAgICAgICAgICAgICAgIElHTk9SRV9PUFRJTV9FTUJFRERFRF9ISU5UUyBJTkRFWF9TUyBOT0dVQVJBTlRFRSBMT0NBTFRJTUVTVEFNUCBEQkFfUkVDWUNMRUJJTiBGSUxFIFRIUk9VR0gKICAgICAgICAgICAgICAgIFBMU1FMX1dBUk5JTkdTIE1BTkFHRSBEUklWSU5HX1NJVEUgRkFJTEVEIFNDQU5fSU5TVEFOQ0VTIENPTVBMRVRFIEhJR0ggVFJBTlNJVElPTkFMCiAgICAgICAgICAgICAgICBOT19TRU1JSk9JTiBEQVkgTk9QQVJBTExFTCBYTUxBVFRSSUJVVEVTIE1PVkUgTkFUSU9OQUwgUkVRVUlSRUQgU0tJUF9FWFRfT1BUSU1JWkVSCiAgICAgICAgICAgICAgICBOT1JFUEFJUiBSRUJVSUxEIEpPQiBTRUVEIFBPTElDWSBVU0VSUyBUT1BMRVZFTCBCSVRNQVAgREFUQUZJTEVTIEhBU0hfQUogSU5JVFJBTlMKICAgICAgICAgICAgICAgIEJMT0NLU0laRSBGQVNUIE1JTklNSVpFIFNFU1NJT05UWk5BTUUgU0VTU0lPTlNfUEVSX1VTRVIgU1lTX09QX0JJVFZFQyBOT19FTElNSU5BVEVfT0JZCiAgICAgICAgICAgICAgICBVQkEgREFUQSBTVUJQQVJUSVRJT05fUkVMIFNFVFMgUFJJVkFURV9TR0EgQklOQVJZX0ZMT0FUIEVORk9SQ0VEIFRBQkxFX1NUQVRTIEZMQUdHRVIKICAgICAgICAgICAgICAgIFRFTVBfVEFCTEUgQVJDSElWRSBOT19QVVNIX1NVQlEgUkVDWUNMRSBEQVRBT0JKTk8gUVVFVUVfUk9XUCBTUUwgQ0hBSU5FRCBFTVBUWQogICAgICAgICAgICAgICAgU0FWRV9BU19JTlRFUlZBTFMgQklUTUFQUyBPUFRJTUlaRVJfRkVBVFVSRVNfRU5BQkxFIEZVTkNUSU9OUyBBVVRPTUFUSUMgU0VDT05ECiAgICAgICAgICAgICAgICBOT19GSUxURVJJTkcgTkFNRUQgU1VTUEVORCBMSUtFQyBOT19CVUZGRVIgUFFfTk9NQVAgTkxTX0xBTkcgQURWSVNPUgogICAgICAgICAgICAgICAgRlJFU0ggTk9fQ09OTkVDVF9CWV9GSUxURVJJTkcgTk9TT1JUIFBBU1NXT1JEIEhBU0hLRVlTIEVYQ0xVRElORyBJTkRFWF9SUlMgRElTSwogICAgICAgICAgICAgICAgQklUUyBDQUNIRV9DQiBVU0UgU1RBUiBDVVJTT1JfU1BFQ0lGSUNfU0VHTUVOVCBTQjQgRElTVFJJQlVURUQgSEVBUCBNSU5FWFRFTlRTIERNTAogICAgICAgICAgICAgICAgQVRUUklCVVRFUyBOT1JFTFkgS0VZU0laRSBMRUFESU5HIFhNTENPTEFUVFZBTCBGUkVFTElTVCBGQUlMRURfTE9HSU5fQVRURU1QVFMKICAgICAgICAgICAgICAgIFNIQVJFRF9QT09MIFVTRV9BTlRJIEJZUEFTU19SRUNVUlNJVkVfQ0hFQ0sgQU5USUpPSU4gQUJPUlQgSU5ERVhfRklMVEVSIFJPTExJTkcKICAgICAgICAgICAgICAgIElURVJBVElPTl9OVU1CRVIgQ09BTEVTQ0UgTk9fU1FMX1RVTkUgQ0xVU1RFUiBQUk9URUNURUQgUEFSVElUSU9OX0hBU0ggRVJST1IKICAgICAgICAgICAgICAgIE5PX01VTFRJTVZfUkVXUklURSBVQjIgVEhSRUFEIFNJTkdMRSBTWVNfUEFSQUxMRUxfVFhOIElOREVYX0FTQyBQQVJUSVRJT04KICAgICAgICAgICAgICAgIERJU01PVU5UIEhJRVJBUkNIWSBTVFJJUCBOTFNfREFURV9GT1JNQVQgQ09SUlVQVElPTiBTVE9SQUdFIENPTU1JVFRFRCBSRUNZQ0xFQklOCiAgICAgICAgICAgICAgICBQQVJJVFkgQ0FDSEVfVEVNUF9UQUJMRSBFTkNSWVBUSU9OIExPQ0FMVElNRSBSRVdSSVRFX09SX0VSUk9SIERCTVNfU1RBVFMgQ0hBUl9DUwogICAgICAgICAgICAgICAgRVhDRVBUSU9OUyBFWFBJUkUgQVVESVQgTERBUF9SRUdfU1lOQ19JTlRFUlZBTCBOT01JTlZBTFVFIExJQlJBUlkgQ09NUElMRSBNQVhWQUxVRQogICAgICAgICAgICAgICAgTkFOIE5PU0VHTUVOVCBOT0xPR0dJTkcgTk9ST1dERVBFTkRFTkNJRVMgUEFUSCBOT0ZPUkNFIEZJTklTSCBGSUNfUElWIE1BWCBTWVNBVVgKICAgICAgICAgICAgICAgIERJTUVOU0lPTiBPUkdBTklaQVRJT04gTk9TV0lUQ0ggV1JJVEUgTUlOVVMgS0lMTCBPRkZMSU5FIFRSQU5TQUNUSU9OIEZBQ1QgQkVDT01FCiAgICAgICAgICAgICAgICBVTkJPVU5EIFRJVl9TU0YgT0xEIFRFTVBGSUxFIEVYUExPU0lPTiBSRUZSRVNIIE1JUlJPUiBSRUZfQ0FTQ0FERV9DVVJTT1IKICAgICAgICAgICAgICAgIE9QQ09ERSBPVkVSRkxPVyBDVVJTT1JfU0hBUklOR19FWEFDVCBQVVNIX1NVQlEgQ0FSRElOQUxJVFkgVVNFX1BSSVZBVEVfT1VUTElORVMKICAgICAgICAgICAgICAgIExJS0U0IFRZUEVTIE5PVEhJTkcgVElNRVpPTkVfSE9VUiBVTlFVSUVTQ0UgUkVTSVpFIENPTExFQ1QgSU5TVEFOQ0UgU0VUVElOR1MgRVhQT1JUCiAgICAgICAgICAgICAgICBET01BSU5fSU5ERVhfTk9fU09SVCBNRVJHRV9TSiBMSU1JVCBTWVNfT1BfRVhUUkFDVCBMSUtFMiBTVEFOREFMT05FIExBU1QKICAgICAgICAgICAgICAgIENPTk5FQ1RfQllfRklMVEVSSU5HIFJFU1RSSUNUX0FMTF9SRUZfQ09OUyBNRVJHRV9DT05TVF9PTiBVTklGT1JNIFNDQU4gV0lUSE9VVAogICAgICAgICAgICAgICAgQ1BVX1BFUl9TRVNTSU9OIFBST0dSQU0gU0VHX0ZJTEUgQVBQTFkgUEFTU1dPUkRfTElGRV9USU1FIERNTF9VUERBVEUgQUxMT1cKICAgICAgICAgICAgICAgIFNLSVBfVU5RX1VOVVNBQkxFX0lEWCBOT19NRVJHRSBDTE9TRV9DQUNIRURfT1BFTl9DVVJTT1JTIE5FU1RFRF9UQUJMRV9HRVRfUkVGUwogICAgICAgICAgICAgICAgU1BFQ0lGSUNBVElPTiBDT05TSVNURU5UIFVTRV9DT05DQVQgU1lTX09QX05UQ0lNRyQgUFFfTUFQIFNIVVRET1dOIERFRkVSUkFCTEUKICAgICAgICAgICAgICAgIEZPTExPV0lORyBTUExJVCBVTlBST1RFQ1RFRCBUSU1FX1pPTkUgU0hSSU5LIElOREVYX1NLSVBfU0NBTiBMT0dJQ0FMCiAgICAgICAgICAgICAgICBNT0RFTF9NSU5fQU5BTFlTSVMgWE1MUk9PVCBTRF9TSE9XIENSRUFURV9TVE9SRURfT1VUTElORVMgUkFQSURMWSBVU0VfTUVSR0UgUVVFVUVfQ1VSUgogICAgICAgICAgICAgICAgU1RSSUNUIE1WX01FUkdFIE5PX09SREVSX1JPTExVUFMgVFJFQVQgVU5MSU1JVEVEIFRVTklORyBDSEFOR0UgUENUVVNFRCBNT1ZFTUVOVAogICAgICAgICAgICAgICAgTk9fUkVXUklURSBBTkNJTExBUlkgQ0xVU1RFUklOR19GQUNUT1IgQkxPQ0tfUkFOR0UgU0VRVUVOVElBTCBHTE9CQUxMWSBYTUxUWVBFIElOVEVSVkFMCiAgICAgICAgICAgICAgICBTRVFVRU5DRUQgU1dJVENIT1ZFUiBBVCBOT01BWFZBTFVFIFNZU19GQlRfSU5TREVMIEtFUkJFUk9TIFRJTUVaT05FX09GRlNFVAogICAgICAgICAgICAgICAgSU5ERVhfU1NfREVTQyBSRUNPVkVSWSBOTFNfVEVSUklUT1JZIFNJWkUgRkFJTEdST1VQIEVMRU1FTlQgSU5TVEFOQ0VTIERJUkVDVE9SWQogICAgICAgICAgICAgICAgSURHRU5FUkFUT1JTIFBSRVNFUlZFX09JRCBOT19QQVJBTExFTCBTVUJQQVJUSVRJT05TIEVYRU1QVCBJTkRFWF9KT0lOIEJFR0lOX09VVExJTkVfREFUQQogICAgICAgICAgICAgICAgTkVUV09SSyBMT0NBTCBVTlVTRUQgTk9BVURJVCBQSFlTSUNBTCBXUkFQUEVEIEZSRUVQT09MUyBQQ1RJTkNSRUFTRSBGSUxURVIKICAgICAgICAgICAgICAgIEdBVEhFUl9QTEFOX1NUQVRJU1RJQ1MgU1lTT1BFUiBTRF9JTkhJQklUIFNFR01FTlQgRElTQUJMRV9SUEtFIE5MU19TT1JUIFBBVEhTCiAgICAgICAgICAgICAgICBFTlRSWSBMREFQX1JFR0lTVFJBVElPTl9FTkFCTEVEIERJU0tTIE9CSkVDVCBJTkNSRU1FTlRBTCBSRUdFWFBfTElLRSBPVkVSRkxPV19OT01PVkUKICAgICAgICAgICAgICAgIFNVQlFVRVJJRVMgTk9fUEFSQUxMRUxfSU5ERVggWElEIElOSVRJQUxJWkVEIFNUQVRJU1RJQ1MgRU5DUllQVCBBVVRPQUxMT0NBVEUgVEVNUExBVEUKICAgICAgICAgICAgICAgIExEQVBfUkVHSVNUUkFUSU9OIE5PX1VOTkVTVCBOT19QQVJUSUFMX0NPTU1JVCBPUkRJTkFMSVRZIE5MU19DT01QIE5PQ09NUFJFU1MgUlVMRVMKICAgICAgICAgICAgICAgIElNTUVESUFURSBNQUlOIFJFRkVSRU5DSU5HIEVOUVVFVUUgU0VHX0JMT0NLIFVOUkVDT1ZFUkFCTEUgTk9fTU9OSVRPUklORyBOT19BQ0NFU1MKICAgICAgICAgICAgICAgIFJFU09MVkVSIFRJTUVaT05FX01JTlVURSBOT19FTElNSU5BVEVfT1VURVJfSk9JTiBOT19JTkRFWCBVTk5FU1QgR1VBUkFOVEVFIEJFSEFMRgogICAgICAgICAgICAgICAgQUxXQVlTIFRFU1QgUEVSTUFORU5UIFJFR0lTVEVSIENPTkZPUk1JTkcgU1lOT05ZTSBTS0lQX1VOVVNBQkxFX0lOREVYRVMgVVNFX0hBU0gKICAgICAgICAgICAgICAgIE9QRVJBVE9SIE5PX1BVTExfUFJFRCBVU0VfVFRUX0ZPUl9HU0VUUyBTRVJJQUxJWkFCTEUgTUlHUkFURSBJVEVSQVRFIFBMU1FMX0NDRkxBR1MKICAgICAgICAgICAgICAgIElHTk9SRV9XSEVSRV9DTEFVU0UgQ1BVX0NPU1RJTkcgVFJBSUxJTkcgTE9DQUxfSU5ERVhFUyBPVkVSTEFQUyBFWFRFTkRTIE5PQVBQRU5ECiAgICAgICAgICAgICAgICBNRVRIT0QgUkVXUklURSBVTlBBQ0tFRCBDT0xVTU5fVkFMVUUgREFUQUJBU0UgRVhDSEFOR0UgTk9fVEVNUF9UQUJMRSBVUFNFUlQgWUVTCiAgICAgICAgICAgICAgICBSRUJBTEFOQ0UgQ09OVEVYVCBTUEZJTEUgTkVTVEVEIFRSQUNLSU5HIFJFU09MVkUgUEZJTEUgTUFYREFUQUZJTEVTIEdMT0JBTAogICAgICAgICAgICAgICAgQVVUSEVOVElDQVRFRCBORVNURURfVEFCTEVfSUQgSU5ERVhFUyBYTUxOQU1FU1BBQ0VTIE5PX1JFRl9DQVNDQURFIFNZU0RBVEUgT1JfRVhQQU5ECiAgICAgICAgICAgICAgICBBU1NPQ0lBVEUgTU9ERUxfQ09NUElMRV9TVUJRVUVSWSBJTklUSUFMTFkgUEFSVElBTExZIFhNTFNDSEVNQSBNSU5WQUxVRSBQSVZfR0IgSEVBREVSCiAgICAgICAgICAgICAgICBSRVNUT1JFX0FTX0lOVEVSVkFMUyBNQU5BR0VEIEJMT0NLIFNJTkdMRVRBU0sgREVURVJNSU5FUyBQQ1RWRVJTSU9OIEVYUExBSU4gQU5EX0VRVUFMCiAgICAgICAgICAgICAgICBDTE9ORSBOT19VU0VfSEFTSF9BR0dSRUdBVElPTiBCVUZGRVJfQ0FDSEUgWE1MVEFCTEUgRVhURVJOQUwgTkVWRVIgSURFTlRJRklFUiBQVUxMX1BSRUQKICAgICAgICAgICAgICAgIElOREVYRUQgTE9HSUNBTF9SRUFEU19QRVJfQ0FMTCBTVEFSVFVQIEZSRUVMSVNUUyBVUERfSU5ERVhFUyBNQVRFUklBTElaRSBMT0dPTiBTQ0hFTUEKICAgICAgICAgICAgICAgIE5PX0lOREVYX1NTIE5PX0JBU0VUQUJMRV9NVUxUSU1WX1JFV1JJVEUgSU5fTUVNT1JZX01FVEFEQVRBIFNUUlVDVFVSRSBNQVhFWFRFTlRTCiAgICAgICAgICAgICAgICBSRUNPVkVSQUJMRSBSRUZFUkVOQ0VEIE5PX1NFVF9UT19KT0lOIFNUQVJfVFJBTlNGT1JNQVRJT04gQ09OTkVDVF9CWV9JU0NZQ0xFIFJPV05VTQogICAgICAgICAgICAgICAgU05BUFNIT1QgRVhDTFVTSVZFIENVUlJFTlRfVElNRSBLRUVQIFBBU1NXT1JEX1JFVVNFX01BWCBXSEVORVZFUiBJTlRFUk5BTF9VU0UgUFhfSk9JTl9GSUxURVIKICAgICAgICAgICAgICAgIFBRX0RJU1RSSUJVVEUgSU5MSU5FIEhXTV9CUk9LRVJFRCBGSVJTVF9ST1dTIE1PREVMX05PX0FOQUxZU0lTIE5PX1BVU0hfUFJFRCBNT0RFTF9QVVNIX1JFRgogICAgICAgICAgICAgICAgQ09NUFJFU1MgTk9SRVZFUlNFIE5PX0lOREVYX0ZGUyBHRU5FUkFURUQgTkFUSVZFIExJS0VfRVhQQU5EIFJFTFkgUEFDS0FHRVMgUkVBRCBJR05PUkUKICAgICAgICAgICAgICAgIFNRTExEUiBESVNLR1JPVVAgRkxVU0ggQllQQVNTX1VKVkMgUkVTRVRMT0dTIFNZU19PUF9OT0VYUEFORCBQUk9URUNUSU9OIEJFRk9SRQogICAgICAgICAgICAgICAgSU5TVEFOVElBQkxFIFhNTEVMRU1FTlQgU1VCUEFSVElUSU9OIFhNTFBBUlNFIEZBTFNFIEFETUlOSVNURVIgU0VMRUNUSVZJVFkgUENUVEhSRVNIT0xECiAgICAgICAgICAgICAgICBORVhUIEVSUk9SX09OX09WRVJMQVBfVElNRSBSRUtFWSBRVUlFU0NFIFBYX0dSQU5VTEUgTE9HT0ZGIFNDT1BFIEJJTkRJTkcgTkxTX0NVUlJFTkNZCiAgICAgICAgICAgICAgICBUSEUgWE1MUEkgUEFTU1dPUkRfUkVVU0VfVElNRSBYTUxRVUVSWSBQQVJUSVRJT05TIE5PX1FLTl9CVUZGIE1PREVMX0RZTkFNSUNfU1VCUVVFUlkKICAgICAgICAgICAgICAgIExPQ0FUT1IgTkxTX05DSEFSX0NPTlZfRVhDUCBOT19TVEFSX1RSQU5TRk9STUFUSU9OIE5PUkVXUklURSBUQUJMRVNQQUNFX05PIEFETUlOSVNUUkFUT1IKICAgICAgICAgICAgICAgIFNFTUlKT0lOX0RSSVZFUiBJTkRFWF9GRlMgUkVEVUNFRCBLRVlTIExPQ0tFRCBCVUZGRVIgVkFMSURBVElPTiBGTEFTSEJBQ0sgRU5EX09VVExJTkVfREFUQQogICAgICAgICAgICAgICAgVE9fQ0hBUiBNQVNURVIgU1lTX1JJRF9PUkRFUiBQVUJMSUMgTUlOVVNfTlVMTCBOVkFSQ0hBUjIgQk9VTkQgUkJPX09VVExJTkUgQUNUSVZBVEUgVkFSQ0hBUjIKICAgICAgICAgICAgICAgIE1BWFNJWkUgREVDUllQVCBVSUQgTUxTTEFCRUwgVU5USUwgQVVUT0VYVEVORCBFTElNSU5BVEVfSk9JTiBSQU5ET00gU0VRVUVOQ0UgTkFWIENPTlRFTlRTCiAgICAgICAgICAgICAgICBVU0FHRSBPTkxZIFJFVVNFIE1BTlVBTCBET0NVTUVOVCBDT05ORUNUX0JZX0lTTEVBRiBDT05TSURFUiBFTkZPUkNFIFJFTU9URV9NQVBQRUQKICAgICAgICAgICAgICAgIExJU1QgTUFYQVJDSExPR1MgUk9XX0xFTkdUSCBOVUxMUyBTSEFSRUQgV0VMTEZPUk1FRCBJTkNMVURJTkcgQVBQRU5EIEZPUkNFX1hNTF9RVUVSWV9SRVdSSVRFCiAgICAgICAgICAgICAgICBJU09MQVRJT05fTEVWRUwgQUNDRVNTRUQgTkxTX0lTT19DVVJSRU5DWSBTVUNDRVNTRlVMIENVUlJFTlRfU0NIRU1BIFJPV1MgREFOR0xJTkcgVFJVRSBaT05FCiAgICAgICAgICAgICAgICBOTFNfTlVNRVJJQ19DSEFSQUNURVJTIERFQlVHIFVQREFURUQgUkVTVFJJQ1RFRCBOT19FWFBBTkRfR1NFVF9UT19VTklPTiBTVEFURU1FTlRfSUQKICAgICAgICAgICAgICAgIE5PQ1BVX0NPU1RJTkcgQVVUSE9SSVpBVElPTiBOT19VU0VfTUVSR0UgT1BBUVVFX1RSQU5TRk9STSBBUlJBWSBNRUFTVVJFUyBNT0RFTAogICAgICAgICAgICAgICAgQ09OTkVDVF9USU1FIE9QVElNSVpFUl9HT0FMIFNVUFBMRU1FTlRBTCBQQ1RGUkVFIEFOQUxZWkUgUkVDT1ZFUiBEQl9ST0xFX0NIQU5HRQogICAgICAgICAgICAgICAgQkxPQ0tTIE1BWElOU1RBTkNFUyBEREwgTk9WQUxJREFURSBQUkVTRVJWRSBPUFRfUEFSQU0gQ0xFQVIgQ09BUlNFIElETEVfVElNRSBXQUxMRVQKICAgICAgICAgICAgICAgIFNDQUxFX1JPV1MgQVJDSElWRUxPRyBDRVJUSUZJQ0FURSBOT1JNQUwgTk9fTU9ERUxfUFVTSF9SRUYgVEFCTEVTIFVQR1JBREUgSU5GSU5JVEUKICAgICAgICAgICAgICAgIE5PQVJDSElWRUxPRyBDT05UUk9MRklMRSBJREVOVElUWSBQRVJGT1JNQU5DRSBJTlNUQU5UTFkgTUFQUElORyBFTkFCTEUKICAgICAgICAgICAgICAgIExPR0lDQUxfUkVBRFNfUEVSX1NFU1NJT04gVVNFX0hBU0hfQUdHUkVHQVRJT04gREVGRVJSRUQgUkVQQUlSIE5PX1NXQVBfSk9JTl9JTlBVVFMKICAgICAgICAgICAgICAgIEdMT0JBTF9UT1BJQ19FTkFCTEVEIEVMSU1JTkFURV9PQlkgU1VCU1RJVFVUQUJMRSBTVEFOREJZIE5MU19DQUxFTkRBUiBMQVlFUiBCQVRDSCBLRVlfTEVOR1RICiAgICAgICAgICAgICAgICBJTkNSRU1FTlQgQlVJTEQgT1JERVJFRCBNT05USCBOQ0xPQiBFWFBSX0NPUlJfQ0hFQ0sgTUVNT1JZIFVST1dJRCBFVkVOVFMgQUxMX1JPV1MKICAgICAgICAgICAgICAgIFNZU19PUF9FTkZPUkNFX05PVF9OVUxMJCBTRF9BTEwgQ09NUFVURSBVU0VfV0VBS19OQU1FX1JFU0wgTk9NSU5JTUlaRSBTUFJFQURTSEVFVAogICAgICAgICAgICAgICAgTkxfQUogQlVGRkVSX1BPT0wgTUVSR0VfQUogU0lCTElOR1MgQ09OU1RSQUlOVFMgVVNFUl9ERUZJTkVEIExPRyBJTVBPUlQgTkVTVEVEX1RBQkxFX1NFVF9TRVRJRAogICAgICAgICAgICAgICAgTEVWRUxTIFBFUkNFTlQgUFVTSF9QUkVEIFJFU1VNRSBOT19DUFVfQ09TVElORyBTSU1QTEUgRElTQ09OTkVDVCBXSElURVNQQUNFCiAgICAgICAgICAgICAgICBVTkxPQ0sgTk9NQVBQSU5HIEFVVEhJRCBBTExPQ0FURSBOQ0hBUl9DUyBVU0VSX1JFQ1lDTEVCSU4gRE9NQUlOX0lOREVYX1NPUlQgUVVFUllfQkxPQ0sKICAgICAgICAgICAgICAgIENZQ0xFIEhBU0hfU0ogVU5EUk9QIExPR0dJTkcgT1dOIFBBU1NJTkcgTUlOIFNXSVRDSCBTT1JUIEJJTkFSWV9ET1VCTEVfTkFOIE5PREVMQVkKICAgICAgICAgICAgICAgIFBMU1FMX09QVElNSVpFX0xFVkVMIFBBUlRJVElPTl9SQU5HRSBUSU1FWk9ORV9SRUdJT04gQ0FDSEVfSU5TVEFOQ0VTIFNVTU1BUlkKICAgICAgICAgICAgICAgIElOREVYX1NUQVRTIERJU1RJTkdVSVNIRUQgSU5URVJOQUxfQ09OVkVSVCBOT19VU0VfTkwgREJUSU1FWk9ORSBTWVNfT1BfQ0FTVCBET1dOR1JBREUKICAgICAgICAgICAgICAgIFJFU0VUIElOREVYX0RFU0MgTk9DWUNMRSBQT1NUX1RSQU5TQUNUSU9OIFBMU1FMX0NPREVfVFlQRSBFIFBBUkVOVCBNQVhMT0dGSUxFUwogICAgICAgICAgICAgICAgTk9fRkFDVCBVTlVTQUJMRSBYTUxTRVJJQUxJWkUgSkFWQSBOQ0hBUiBERVJFRiBPVVRMSU5FIFNFVF9UT19KT0lOIE5FRURFRCBWRVJTSU9OUwogICAgICAgICAgICAgICAgSU5ERVhfU0NBTiBFWFRFTlRTIFNFU1NJT05USU1FWk9ORSBQTFNRTF9ERUJVRyBNT05JVE9SSU5HIEJJTkFSWV9ET1VCTEVfSU5GSU5JVFkgU1RBVElDCiAgICAgICAgICAgICAgICBSRVNVTUFCTEUgUkFOR0UgTUFOQUdFTUVOVCBDT01QQVRJQklMSVRZIEFUVFJJQlVURSBNQVhJTUlaRSBVTkRFUiBQQVJBTExFTCBUSVZfR0IgQ09NUEFDVAogICAgICAgICAgICAgICAgT1BUSU1BTCBDVUJFX0dCIElOQ0xVREVfVkVSU0lPTiBQQVJBTExFTF9JTkRFWCBGSU5FIFNZU1RJTUVTVEFNUCBJTkRFWFRZUEUgT1VUTElORV9MRUFGCiAgICAgICAgICAgICAgICBDT05ORUNUX0JZX1JPT1QgVkVDVE9SX1JFQURfVFJBQ0UgTkxTX0xBTkdVQUdFIFNUUklORyBCSU5BUllfRkxPQVRfSU5GSU5JVFkgVU5BUkNISVZFRAogICAgICAgICAgICAgICAgUFJPRklMRSBTQ04gTUlOVVRFIE1PREVMX0RPTlRWRVJJRllfVU5JUVVFTkVTUyBBQ0NFU1MKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIyB0aGUgZm9sbG93aW5nIHdvcmRzIGFyZSByZW1vdmVkIG9mIHN0ZWZhbnMgbGlzdCwgYmVjYXVzZSB0aGV5IGRvbid0IG1lcmdlCiAgICAgICAgICAgICAgICAjIGF0IHdpdGggaHR0cDovL3d3dy5wZXRlZnJlaXRhZy5jb20vdG9vbHMvc3FsX3Jlc2VydmVkX3dvcmRzX2NoZWNrZXIvCiAgICAgICAgICAgICAgICAjIElEIENBVEVHT1JZIE5BTUUgQ09OVEVOVCBWRVJTSU9OIFFVRVVFIEJPRFkgVElNRU9VVCBSRUZFUkVOQ0UgTk9USUZJQ0FUSU9OIFBST0pFQ1QgVFJVU1RFRAogICAgICAgICAgICAgICAgIyBhbGwgcmVzZXJ2ZWQgc3FsLXdvcmRzIHdpdGggc21hbGwgbGV0dGVycyBhcmUgZnJvbQogICAgICAgICAgICAgICAgIyBodHRwOi8vd3d3LnBldGVmcmVpdGFnLmNvbS90b29scy9zcWxfcmVzZXJ2ZWRfd29yZHNfY2hlY2tlci8KICAgICAgICAgICAgICAgICMgYW5kIGh0dHA6Ly93d3cuaWFueXdoZXJlLmNvbS9kZXZlbG9wZXIvcHJvZHVjdF9tYW51YWxzL3NxbGFueXdoZXJlLzA5MDEvZGUvaHRtbC9kYnJmZGU5LzAwMDAwMDEwLmh0bQogICAgICAgICAgICAgICAgIyAncmVmZXJlbmNlJyBhbmQgJ2xvZ2luJyBzZWVtcyB0byBiZSBhbGxvd2VkIChjaGVja2VkIGJ5IHd3dy5wZXRlZnJlaXRhZy5jb20pCgogICAgICAgICAgICAgICAgaWYgKCAkMSAmJiAkMSA9fiAvXiRSZXNlcnZlZFdvcmQkL2kgKSB7CiAgICAgICAgICAgICAgICAgICAgZGllIDw8IkVPRiI7CllvdSB1c2UgYSByZXNlcnZlZCBTUUwtV29yZCEKTGluZSAkQ291bnRlcjogJExpbmUKWW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyB0b29sIGZvciB5b3VyIG93biBjaGVja2luZzoKaHR0cDovL3d3dy5wZXRlZnJlaXRhZy5jb20vdG9vbHMvc3FsX3Jlc2VydmVkX3dvcmRzX2NoZWNrZXIvCkVPRgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJExpbmUgPX4gLzxcL1RhYmxlLyApIHsKICAgICAgICAgICAgICAgICRUYWJsZUNyZWF0ZSA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=
U0VUIFVURi04ClRSWSBlc2lhbnJ0b2xjZHVnbXBoYnlmdmt3ekVTSUFOUlRPTENEVUdNUEhCWUZWS1daJwpJQ09OViAxCklDT05WIOKAmSAnCk5PU1VHR0VTVCAhCgojIG9yZGluYWwgbnVtYmVycwpDT01QT1VORE1JTiAxCiMgb25seSBpbiBjb21wb3VuZHM6IDF0aCwgMnRoLCAzdGgKT05MWUlOQ09NUE9VTkQgYwojIGNvbXBvdW5kIHJ1bGVzOgojIDEuIFswLTldKjFbMC05XXRoICgxMHRoLCAxMXRoLCAxMnRoLCA1NjcxNHRoLCBldGMuKQojIDIuIFswLTldKlswMi05XSgxc3R8Mm5kfDNyZHxbNC05XXRoKSAoMjFzdCwgMjJuZCwgMTIzcmQsIDEyMzR0aCwgZXRjLikKQ09NUE9VTkRSVUxFIDIKQ09NUE9VTkRSVUxFIG4qMXQKQ09NUE9VTkRSVUxFIG4qbXAKV09SRENIQVJTIDAxMjM0NTY3ODkKClBGWCBBIFkgMQpQRlggQSAgIDAgICAgIHJlICAgICAgICAgLgoKUEZYIEkgWSAxClBGWCBJICAgMCAgICAgaW4gICAgICAgICAuCgpQRlggVSBZIDEKUEZYIFUgICAwICAgICB1biAgICAgICAgIC4KClBGWCBDIFkgMQpQRlggQyAgIDAgICAgIGRlICAgICAgICAgIC4KClBGWCBFIFkgMQpQRlggRSAgIDAgICAgIGRpcyAgICAgICAgIC4KClBGWCBGIFkgMQpQRlggRiAgIDAgICAgIGNvbiAgICAgICAgIC4KClBGWCBLIFkgMQpQRlggSyAgIDAgICAgIHBybyAgICAgICAgIC4KClNGWCBWIE4gMgpTRlggViAgIGUgICAgIGl2ZSAgICAgICAgZQpTRlggViAgIDAgICAgIGl2ZSAgICAgICAgW15lXQoKU0ZYIE4gWSAzClNGWCBOICAgZSAgICAgaW9uICAgICAgICBlClNGWCBOICAgeSAgICAgaWNhdGlvbiAgICB5IApTRlggTiAgIDAgICAgIGVuICAgICAgICAgW15leV0gCgpTRlggWCBZIDMKU0ZYIFggICBlICAgICBpb25zICAgICAgIGUKU0ZYIFggICB5ICAgICBpY2F0aW9ucyAgIHkKU0ZYIFggICAwICAgICBlbnMgICAgICAgIFteZXldCgpTRlggSCBOIDIKU0ZYIEggICB5ICAgICBpZXRoICAgICAgIHkKU0ZYIEggICAwICAgICB0aCAgICAgICAgIFteeV0gCgpTRlggWSBZIDEKU0ZYIFkgICAwICAgICBseSAgICAgICAgIC4KClNGWCBHIFkgMgpTRlggRyAgIGUgICAgIGluZyAgICAgICAgZQpTRlggRyAgIDAgICAgIGluZyAgICAgICAgW15lXSAKClNGWCBKIFkgMgpTRlggSiAgIGUgICAgIGluZ3MgICAgICAgZQpTRlggSiAgIDAgICAgIGluZ3MgICAgICAgW15lXQoKU0ZYIEQgWSA0ClNGWCBEICAgMCAgICAgZCAgICAgICAgICBlClNGWCBEICAgeSAgICAgaWVkICAgICAgICBbXmFlaW91XXkKU0ZYIEQgICAwICAgICBlZCAgICAgICAgIFteZXldClNGWCBEICAgMCAgICAgZWQgICAgICAgICBbYWVpb3VdeQoKU0ZYIFQgTiA0ClNGWCBUICAgMCAgICAgc3QgICAgICAgICBlClNGWCBUICAgeSAgICAgaWVzdCAgICAgICBbXmFlaW91XXkKU0ZYIFQgICAwICAgICBlc3QgICAgICAgIFthZWlvdV15ClNGWCBUICAgMCAgICAgZXN0ICAgICAgICBbXmV5XQoKU0ZYIFIgWSA0ClNGWCBSICAgMCAgICAgciAgICAgICAgICBlClNGWCBSICAgeSAgICAgaWVyICAgICAgICBbXmFlaW91XXkKU0ZYIFIgICAwICAgICBlciAgICAgICAgIFthZWlvdV15ClNGWCBSICAgMCAgICAgZXIgICAgICAgICBbXmV5XQoKU0ZYIFogWSA0ClNGWCBaICAgMCAgICAgcnMgICAgICAgICBlClNGWCBaICAgeSAgICAgaWVycyAgICAgICBbXmFlaW91XXkKU0ZYIFogICAwICAgICBlcnMgICAgICAgIFthZWlvdV15ClNGWCBaICAgMCAgICAgZXJzICAgICAgICBbXmV5XQoKU0ZYIFMgWSA0ClNGWCBTICAgeSAgICAgaWVzICAgICAgICBbXmFlaW91XXkKU0ZYIFMgICAwICAgICBzICAgICAgICAgIFthZWlvdV15ClNGWCBTICAgMCAgICAgZXMgICAgICAgICBbc3h6aF0KU0ZYIFMgICAwICAgICBzICAgICAgICAgIFtec3h6aHldCgpTRlggUCBZIDMKU0ZYIFAgICB5ICAgICBpbmVzcyAgICAgIFteYWVpb3VdeQpTRlggUCAgIDAgICAgIG5lc3MgICAgICAgW2FlaW91XXkKU0ZYIFAgICAwICAgICBuZXNzICAgICAgIFteeV0KClNGWCBNIFkgMQpTRlggTSAgIDAgICAgICdzICAgICAgICAgLgoKU0ZYIEIgWSAzClNGWCBCICAgMCAgICAgYWJsZSAgICAgICBbXmFlaW91XQpTRlggQiAgIDAgICAgIGFibGUgICAgICAgZWUKU0ZYIEIgICBlICAgICBhYmxlICAgICAgIFteYWVpb3VdZQoKU0ZYIEwgWSAxClNGWCBMICAgMCAgICAgbWVudCAgICAgICAuCgpSRVAgOTAKUkVQIGEgZWkKUkVQIGVpIGEKUkVQIGEgZXkKUkVQIGV5IGEKUkVQIGFpIGllClJFUCBpZSBhaQpSRVAgYWxvdCBhX2xvdApSRVAgYXJlIGFpcgpSRVAgYXJlIGVhcgpSRVAgYXJlIGVpcgpSRVAgYWlyIGFyZQpSRVAgYWlyIGVyZQpSRVAgZXJlIGFpcgpSRVAgZXJlIGVhcgpSRVAgZXJlIGVpcgpSRVAgZWFyIGFyZQpSRVAgZWFyIGFpcgpSRVAgZWFyIGVyZQpSRVAgZWlyIGFyZQpSRVAgZWlyIGVyZQpSRVAgY2ggdGUKUkVQIHRlIGNoClJFUCBjaCB0aQpSRVAgdGkgY2gKUkVQIGNoIHR1ClJFUCB0dSBjaApSRVAgY2ggcwpSRVAgcyBjaApSRVAgY2ggawpSRVAgayBjaApSRVAgZiBwaApSRVAgcGggZgpSRVAgZ2ggZgpSRVAgZiBnaApSRVAgaSBpZ2gKUkVQIGlnaCBpClJFUCBpIHV5ClJFUCB1eSBpClJFUCBpIGVlClJFUCBlZSBpClJFUCBqIGRpClJFUCBkaSBqClJFUCBqIGdnClJFUCBnZyBqClJFUCBqIGdlClJFUCBnZSBqClJFUCBzIHRpClJFUCB0aSBzClJFUCBzIGNpClJFUCBjaSBzClJFUCBrIGNjClJFUCBjYyBrClJFUCBrIHF1ClJFUCBxdSBrClJFUCBrdyBxdQpSRVAgbyBlYXUKUkVQIGVhdSBvClJFUCBvIGV3ClJFUCBldyBvClJFUCBvbyBldwpSRVAgZXcgb28KUkVQIGV3IHVpClJFUCB1aSBldwpSRVAgb28gdWkKUkVQIHVpIG9vClJFUCBldyB1ClJFUCB1IGV3ClJFUCBvbyB1ClJFUCB1IG9vClJFUCB1IG9lClJFUCBvZSB1ClJFUCB1IGlldQpSRVAgaWV1IHUKUkVQIHVlIGV3ClJFUCBldyB1ZQpSRVAgdWZmIG91Z2gKUkVQIG9vIGlldQpSRVAgaWV1IG9vClJFUCBpZXIgZWFyClJFUCBlYXIgaWVyClJFUCBlYXIgYWlyClJFUCBhaXIgZWFyClJFUCB3IHF1ClJFUCBxdSB3ClJFUCB6IHNzClJFUCBzcyB6ClJFUCBzaHVuIHRpb24KUkVQIHNodW4gc2lvbgpSRVAgc2h1biBjaW9uClJFUCBzaXplIGNpc2UK
NDg5NzQKMC9ubQowdGgvcHQKMS9uMQoxc3QvcAoxdGgvdGMKMi9ubQoybmQvcAoydGgvdGMKMy9ubQozcmQvcAozdGgvdGMKNC9ubQo0dGgvcHQKNS9ubQo1dGgvcHQKNi9ubQo2dGgvcHQKNy9ubQo3dGgvcHQKOC9ubQo4dGgvcHQKOS9ubQo5dGgvcHQKQS9TTQpBQS9NCkFBQQpBQi9NCkFCQQpBQkMvU00KQUJNL1NNCkFCUwpBQy9NCkFDTFUvTQpBQ1QKQUNUSC9NCkFEL00KQURDCkFERApBRE0KQURQL00KQUYKQUZBSUsKQUZCCkFGQy9NCkFGREMKQUZOCkFGVApBSS9TTQpBSURTL00KQUsKQUwKQU0vTQpBTUEKQU1EL00KQU5TSS9TCkFOWlVTL00KQU9ML00KQVAvTQpBUEIKQVBDCkFQSQpBUE8KQVBSCkFSCkFSQwpBU0FQCkFTQ0lJL1NNCkFTTC9NCkFTUENBCkFUTS9NCkFUUC9NCkFUVgpBVgpBVkkKQVdBQ1MvTQpBV09ML00KQVovTQpBWlQvTQpBYWNoZW4vTQpBYWxpeWFoL00KQWFyb24vTQpBYmJhcy9NCkFiYmFzaWQvTQpBYmJvdHQvTQpBYmJ5L00KQWJkdWwvTQpBYmUvTQpBYmVsL00KQWJlbGFyZC9NCkFiZWxzb24vTQpBYmVyZGVlbi9NCkFiZXJuYXRoeS9NCkFiaWRqYW4vTQpBYmlnYWlsL00KQWJpbGVuZS9NCkFibmVyL00KQWJvcmlnaW5lL01TCkFicmFoYW0vTQpBYnJhbS9NUwpBYnJhbXMvTQpBYnNhbG9tL00KQWJ1amEvTQpBYnlzc2luaWEvTQpBYnlzc2luaWFuL00KQWMvTQpBY2FkaWEvTQpBY2FwdWxjby9NCkFjY2VudHVyZS9NCkFjY3JhL00KQWNldmVkby9NCkFjaGFlYW4vTQpBY2hlYmUvTQpBY2hlcm5hci9NCkFjaGVzb24vTQpBY2hpbGxlcy9NCkFjb25jYWd1YS9NCkFjb3N0YS9NCkFjcm9wb2xpcwpBY3J1eC9NCkFjdGFlb24vTQpBY3Rvbi9NCkFjdHMvTQpBY3VmZi9NCkFkYS9TTQpBZGFtL1NNCkFkYW1zL00KQWRhbi9NCkFkYW5hL00KQWRhci9NCkFkZGFtcy9NCkFkZGVybGV5L00KQWRkaWUvTQpBZGRpc29uL00KQWRlbGEvTQpBZGVsYWlkZS9NCkFkZWxlL00KQWRlbGluZS9NCkFkZW4vTQpBZGVuYXVlci9NCkFkaGFyYS9NCkFkaWRhcy9NCkFkaXJvbmRhY2svU00KQWRpcm9uZGFja3MvTQpBZGtpbnMvTQpBZGxlci9NCkFkbQpBZG1pcmFsdHkKQWRvbGYvTQpBZG9sZm8vTQpBZG9scGgvTQpBZG9uaXMvTVMKQWRyZW5hbGluL01TCkFkcmlhbi9NCkFkcmlhbmEvTQpBZHJpYXRpYy9NCkFkcmllbm5lL00KQWR2ZW50L01TCkFkdmVudGlzdC9NUwpBZHZpbC9NCkFlZ2Vhbi9NCkFlbGZyaWMvTQpBZW5lYXMvTQpBZW5laWQvTQpBZW9sdXMvTQpBZXJvZmxvdC9NCkFlc2NoeWx1cy9NCkFlc2N1bGFwaXVzL00KQWVzb3AvTQpBZmdoYW4vU00KQWZnaGFuaS9NCkFmZ2hhbmlzdGFuL00KQWZyCkFmcmljYS9NCkFmcmljYW4vU00KQWZyaWthYW5zL00KQWZyaWthbmVyL1NNCkFmcm8vU00KQWZyb2NlbnRyaWMKQWZyb2NlbnRyaXNtL00KQWcvTQpBZ2FtZW1ub24vTQpBZ2FuYQpBZ2Fzc2kvTQpBZ2Fzc2l6L00KQWdhdGhhL00KQWdnaWUvTQpBZ2xhaWEvTQpBZ25lcy9NCkFnbmV3L00KQWduaS9NCkFncmEvTQpBZ3JpY29sYS9NCkFncmlwcGEvTQpBZ3JpcHBpbmEvTQpBZ3Vhc2NhbGllbnRlcwpBZ3VpbGFyL00KQWd1aW5hbGRvL00KQWd1aXJyZS9NCkFndXN0aW4vTQpBaGFiL00KQWhtYWQvTQpBaG1hZGFiYWQvTQpBaG1hZGluZWphZC9NCkFobWVkL00KQWhyaW1hbi9NCkFpZGEvTQpBaWtlbi9NCkFpbGVlbi9NCkFpbWVlL00KQWludS9NCkFpcmVkYWxlL01TCkFpcmVzL00KQWlzaGEvTQpBamF4L00KQWtiYXIvTQpBa2htYXRvdmEvTQpBa2loaXRvL00KQWtpdGEvTQpBa2l2YS9NCkFra2FkL00KQWtyb24vTQpBbC9NCkFsYS9TCkFsYWJhbWEvTQpBbGFiYW1hbi9NUwpBbGFiYW1pYW4vU00KQWxhZGRpbi9NCkFsYW1vL00KQWxhbW9nb3Jkby9NCkFsYW4vTQpBbGFuYS9NCkFsYXIvTQpBbGFyaWMvTQpBbGFza2EvTQpBbGFza2FuL01TCkFsYmEvTQpBbGJhbmlhL00KQWxiYW5pYW4vTVMKQWxiYW55L00KQWxiZWUvTQpBbGJlcmlvL00KQWxiZXJ0L00KQWxiZXJ0YS9NCkFsYmVydGFuCkFsYmVydG8vTQpBbGJpZ2Vuc2lhbi9NCkFsYmlvbi9NCkFsYmlyZW8vTQpBbGJ1cXVlcnF1ZS9NCkFsY2F0cmF6L00KQWxjZXN0aXMvTQpBbGNpYmlhZGVzL00KQWxjaW5kb3IvTQpBbGNtZW5hL00KQWxjb2EvTQpBbGNvdHQvTQpBbGN1aW4vTQpBbGN5b25lL00KQWxkYW4vTQpBbGRlYmFyYW4vTQpBbGRlbi9NCkFsZGVyYW1pbi9NCkFsZG8vTQpBbGRyaW4vTQpBbGVjL00KQWxlaWNoZW0vTQpBbGVqYW5kcmEvTQpBbGVqYW5kcm8vTQpBbGVtYmVydC9NCkFsZXBwby9NCkFsZXV0L01TCkFsZXV0aWFuL1NNCkFsZXgvTQpBbGV4YW5kZXIvTVMKQWxleGFuZHJhL00KQWxleGFuZHJpYS9NCkFsZXhhbmRyaWFuCkFsZXhlaS9NCkFsZXhpcy9NCkFsZm9uc28vTQpBbGZvbnpvL00KQWxmb3JkL00KQWxmcmVkL00KQWxmcmVkYS9NCkFsZnJlZG8vTQpBbGdlbmliL00KQWxnZXIvTQpBbGdlcmlhL00KQWxnZXJpYW4vU00KQWxnaWViYS9NCkFsZ2llcnMvTQpBbGdvbC9NCkFsZ29ucXVpYW4vU00KQWxnb25xdWluL01TCkFsaGFtYnJhL00KQWxoZW5hL00KQWxpL00KQWxpY2UvTQpBbGljaWEvTQpBbGlnaGllcmkvTQpBbGluZS9NCkFsaW90aC9NCkFsaXNhL00KQWxpc2hhL00KQWxpc29uL00KQWxpc3NhL00KQWxpc3RhaXIvTQpBbGthaWQvTQpBbGxhaC9NCkFsbGFoYWJhZC9NCkFsbGFuL00KQWxsZWdoZW5pZXMvTQpBbGxlZ2hlbnkvU00KQWxsZWdyYS9NCkFsbGVuL00KQWxsZW5kZS9NCkFsbGVudG93bi9NCkFsbGhhbGxvd3MvTQpBbGxpZS9NUwpBbGxpc29uL00KQWxsc3RhdGUvTQpBbGx5c29uL00KQWxtYS9NCkFsbWFjaC9NCkFsbWF0eS9NCkFsbWlnaHR5L00KQWxtb2hhZC9NCkFsbW9yYXZpZC9NCkFsbmlsYW0vTQpBbG5pdGFrL00KQWxvbnpvL00KQWxwZXJ0L00KQWxwaGFyZC9NCkFscGhlY2NhL00KQWxwaGVyYXR6L00KQWxwaG9uc2UvTQpBbHBob25zby9NCkFscGluZS9NCkFscG8vTQpBbHBzL00KQWxzYWNlL00KQWxzYXRpYW4vU00KQWxzb3AvTQpBbHN0b24vTQpBbHRhL00KQWx0YWkvTQpBbHRhaWMvTQpBbHRhaXIvTQpBbHRhbWlyYS9NCkFsdGhlYS9NCkFsdGlwbGFuby9NCkFsdG1hbi9NCkFsdG9pZHMvTQpBbHRvbi9NCkFsdWRyYS9NCkFsdmEvTQpBbHZhcmFkby9NCkFsdmFyZXovTQpBbHZhcm8vTQpBbHZpbi9NCkFseWNlL00KQWx5c29uL00KQWx5c3NhL00KQWx6aGVpbWVyL00KQW0vTU5SCkFtYWRldXMvTQpBbWFkby9NCkFtYWxpYS9NCkFtYW5kYS9NCkFtYXJpbGxvL00KQW1hcnUvTQpBbWF0ZXJhc3UvTQpBbWF0aS9NCkFtYXpvbi9TTQpBbWF6b25pYW4KQW1iZXIvTQpBbWVsaWEvTQpBbWVuL00KQW1lbmhvdGVwL00KQW1lcmFzaWFuL00KQW1lcmljYS9TTQpBbWVyaWNhbi9NUwpBbWVyaWNhbmEvTQpBbWVyaWNhbmlzbS9NUwpBbWVyaWNhbml6YXRpb24vTVMKQW1lcmljYW5pemUvR0RTCkFtZXJpbmQvU00KQW1lcmluZGlhbi9NUwpBbWVzbGFuL00KQW1oYXJpYy9NCkFtaGVyc3QvTQpBbWllL00KQW1pZ2EvTQpBbWlzaC9NCkFtbWFuL00KQW1vY28vTQpBbW9zL00KQW1wYXJvL00KQW1wZXJlL00KQW1yaXRzYXIvTQpBbXN0ZXJkYW0vTQpBbXRyYWsvTQpBbXVuZHNlbi9NCkFtdXIvTQpBbXdheS9NCkFteS9NCkFuYS9NCkFuYWJhcHRpc3QvTQpBbmFiZWwvTQpBbmFjaW4vTQpBbmFjcmVvbi9NCkFuYWhlaW0vTQpBbmFsZWN0cy9NCkFuYW5pYXMvTQpBbmFzYXppL00KQW5hc3Rhc2lhL00KQW5hdG9sZS9NCkFuYXRvbGlhL00KQW5hdG9saWFuL00KQW5heGFnb3Jhcy9NCkFuY2hvcmFnZS9NCkFuZGFsdXNpYS9NCkFuZGFsdXNpYW4vTQpBbmRhbWFuL00KQW5kZWFuL00KQW5kZXJzZW4vTQpBbmRlcnNvbi9NCkFuZGVzL00KQW5kb3JyYS9NCkFuZG9ycmFuL1NNCkFuZHJlL01TCkFuZHJlYS9NCkFuZHJlaS9NCkFuZHJlcy9NCkFuZHJldHRpL00KQW5kcmV3L1NNCkFuZHJld3MvTQpBbmRyaWFuYW1wb2luaW1lcmluYS9NCkFuZHJvaWQvTQpBbmRyb21hY2hlL00KQW5kcm9tZWRhL00KQW5kcm9wb3YvTQpBbmR5L00KQW5nYXJhL00KQW5nZWwvTQpBbmdlbGEvTQpBbmdlbGVzL00KQW5nZWxpYS9NCkFuZ2VsaWNhL00KQW5nZWxpY28vTQpBbmdlbGluYS9NCkFuZ2VsaW5lL00KQW5nZWxpcXVlL00KQW5nZWxpdGEvTQpBbmdlbG8vTQpBbmdlbG91L00KQW5nZXZpbi9NCkFuZ2llL00KQW5na29yL00KQW5nbGUvTVMKQW5nbGlhL00KQW5nbGljYW4vU00KQW5nbGljYW5pc20vTVMKQW5nbGljaXNtL01TCkFuZ2xpY2l6YXRpb24KQW5nbGljaXplCkFuZ2xvL00KQW5nbG9waGlsZS9NCkFuZ2xvcGhvYmUKQW5nb2xhL00KQW5nb2xhbi9NUwpBbmdvcmEvU00KQW5nc3Ryb20vTQpBbmd1aWxsYS9NCkFuZ3VzL00KQW5pYWtjaGFrL00KQW5pYmFsL00KQW5pdGEvTQpBbmthcmEvTQpBbm4vTQpBbm5hL00KQW5uYWJlbC9NCkFubmFiZWxsZS9NCkFubmFtL00KQW5uYXBvbGlzL00KQW5uYXB1cm5hL00KQW5uZS9NCkFubmV0dGUvTQpBbm5pZS9NCkFubm1hcmllL00KQW5udW5jaWF0aW9uL1NNCkFub3VpbGgvTQpBbnNlbG0vTQpBbnNlbG1vL00KQW5zaGFuL00KQW50YWV1cy9NCkFudGFuYW5hcml2by9NCkFudGFyY3RpYy9NCkFudGFyY3RpY2EvTQpBbnRhcmVzL00KQW50aG9ueS9NCkFudGhyb3BvY2VuZQpBbnRpY2hyaXN0L1NNCkFudGlldGFtL00KQW50aWdvbmUvTQpBbnRpZ3VhL00KQW50aWxsZWFuCkFudGlsbGVzL00KQW50aW9jaC9NCkFudGlwYXMvTQpBbnRpcG9kZXMKQW50b2ZhZ2FzdGEvTQpBbnRvaW5lL00KQW50b2luZXR0ZS9NCkFudG9uL00KQW50b25lL00KQW50b25pYS9NCkFudG9uaW51cy9NCkFudG9uaW8vTQpBbnRvbml1cy9NCkFudG9ueS9NCkFudHdhbi9NCkFudHdlcnAvTQpBbnViaXMvTQpBbnphYy9NCkFwYWNoZS9TTQpBcGFsYWNoaWNvbGEvTQpBcGF0b3NhdXJ1cwpBcGVubmluZXMvTQpBcGhyb2RpdGUvTQpBcGlhL00KQXBvY2FseXBzZS9NCkFwb2NyeXBoYS9NCkFwb2xsaW5haXJlL00KQXBvbGxvL1NNCkFwb2xsb25pYW4vTQpBcG9zdGxlL00KQXBwYWxhY2hpYS9NCkFwcGFsYWNoaWFuL1NNCkFwcGFsYWNoaWFucy9NCkFwcGFsb29zYS9TTQpBcHBsZS9NCkFwcGxlc2VlZC9NCkFwcGxldG9uL00KQXBwb21hdHRveC9NCkFwci9NCkFwcmlsL01TCkFwdWxlaXVzL00KQXF1YWZyZXNoL00KQXF1YXJpYW4KQXF1YXJpdXMvTVMKQXF1aWxhL00KQXF1aW5hcy9NCkFxdWluby9NCkFxdWl0YWluZS9NCkFyL00KQXJhL00KQXJhYi9TTQpBcmFiaWEvTQpBcmFiaWFuL01TCkFyYWJpYy9NCkFyYWJpc3QvTVMKQXJhYnkvTQpBcmFjZWxpL00KQXJhZmF0L00KQXJhZ29uCkFyYWd1YXlhL00KQXJhbC9NCkFyYW1haWMvTQpBcmFtY28vTQpBcmFwYWhvL01TCkFyYXBhaG9lcwpBcmFyYXQvTQpBcmF1Y2FuaWFuL00KQXJhd2FrL00KQXJhd2FrYW4vTQpBcmJpdHJvbi9NCkFyY2FkaWEvTQpBcmNhZGlhbi9NCkFyY2hlYW4vTQpBcmNoaWJhbGQvTQpBcmNoaWUvTQpBcmNoaW1lZGVzL00KQXJjdGljL00KQXJjdHVydXMvTQpBcmRhYmlsCkFyZGVuL00KQXJlcXVpcGEvTQpBcmVzL00KQXJnZW50aW5hL00KQXJnZW50aW5lL00KQXJnZW50aW5lYW4KQXJnZW50aW5pYW4vTVMKQXJnby9TTQpBcmdvbmF1dC9NUwpBcmdvbm5lL00KQXJnb3MvTQpBcmd1cy9NCkFyaWFkbmUvTQpBcmlhbmlzbS9NCkFyaWVsL00KQXJpZXMvTVMKQXJpb3N0by9NCkFyaXN0YXJjaHVzL00KQXJpc3RpZGVzL00KQXJpc3RvcGhhbmVzL00KQXJpc3RvdGVsaWFuL00KQXJpc3RvdGxlL00KQXJpdXMvTQpBcml6CkFyaXpvbmEvTQpBcml6b25hbi9TTQpBcml6b25pYW4vTVMKQXJqdW5hL00KQXJrL00KQXJrYW5zYW4vTVMKQXJrYW5zYXMvTQpBcmtoYW5nZWxzay9NCkFya3dyaWdodC9NCkFybGVuZS9NCkFybGluZS9NCkFybGluZ3Rvbi9NCkFybWFnZWRkb24vU00KQXJtYWduYWMvTQpBcm1hbmQvTQpBcm1hbmRvL00KQXJtYW5pL00KQXJtZW5pYS9NCkFybWVuaWFuL1NNCkFybWluaXVzL00KQXJtb25rL00KQXJtb3VyL00KQXJtc3Ryb25nL00KQXJuZWIvTQpBcm5oZW0vTQpBcm5vL00KQXJub2xkL00KQXJudWxmby9NCkFyb24vTQpBcnJoZW5pdXMvTQpBcnJvbi9NCkFydC9NCkFydGF4ZXJ4ZXMvTQpBcnRlbWlzL00KQXJ0aHVyL00KQXJ0aHVyaWFuL00KQXJ0aWUvTQpBcnR1cm8vTQpBcnViYS9NCkFyeWFuL01TCkFzL00KQXNhbWEvTQpBc2NlbGxhL00KQXNjZW5zaW9uL00KQXNnYXJkL00KQXNoYW50aS9NCkFzaGNyb2Z0L00KQXNoZS9NCkFzaGdhYmF0CkFzaGlrYWdhL00KQXNoa2VuYXppbS9NCkFzaGtoYWJhZC9NCkFzaGxlZS9NCkFzaGxleS9NCkFzaG1vbGVhbi9NCkFzaHVyYmFuaXBhbC9NCkFzaWEvTQpBc2lhZ28KQXNpYW4vTVMKQXNpYXRpYy9TTQpBc2ltb3YvTQpBc21hcmEvTQpBc29rYS9NCkFzcGVsbC9NCkFzcGVuL00KQXNwZXJnZXIvTQpBc3BpZGlza2UvTQpBc3F1aXRoL00KQXNzYWQvTQpBc3NhbS9NCkFzc2FtZXNlL00KQXNzZW1ibHkKQXNzaXNpL00KQXNzeXJpYS9NCkFzc3lyaWFuL1NNCkFzdGFpcmUvTQpBc3RhbmEvTQpBc3RhcnRlL00KQXN0b24vTQpBc3Rvci9NCkFzdG9yaWEvTQpBc3RyYWtoYW4vTQpBc3Ryb1R1cmYvTQpBc3R1cmlhcy9NCkFzdW5jaW9uL00KQXN3YW4vTQpBdC9TTQpBdGFjYW1hL00KQXRhaHVhbHBhL00KQXRhbGFudGEvTQpBdGFyaS9NCkF0YXR1cmsvTQpBdGhhYmFzY2EvTQpBdGhhYmFza2FuL1NNCkF0aGFuYXNpdXMKQXRoZW5hL00KQXRoZW5lL00KQXRoZW5pYW4vU00KQXRoZW5zL00KQXRraW5zL00KQXRraW5zb24vTQpBdGxhbnRhL00KQXRsYW50ZXMKQXRsYW50aWMvTQpBdGxhbnRpcy9NCkF0bGFzL01TCkF0bWFuL00KQXRvbmVtZW50CkF0cmV1cy9NCkF0cmlhL00KQXRyb3Bvcy9NCkF0dGljL00KQXR0aWNhL00KQXR0aWxhL00KQXR0bGVlL00KQXR0bgpBdHR1Y2tzL00KQXR3b29kL00KQXUvTQpBdWJyZXkvTQpBdWNrbGFuZC9NCkF1ZGVuL00KQXVkaS9NCkF1ZGlvbi9NCkF1ZHJhL00KQXVkcmV5L00KQXVkdWJvbi9NCkF1Zy9NCkF1Z2Vhbi9NCkF1Z3NidXJnL00KQXVndXN0L01TCkF1Z3VzdGEvTQpBdWd1c3Rhbi9NCkF1Z3VzdGluZS9NCkF1Z3VzdGluaWFuL01TCkF1Z3VzdHVzL00KQXVyYW5nemViL00KQXVyZWxpYS9NCkF1cmVsaW8vTQpBdXJlbGl1cy9NCkF1cmVvbXljaW4vTQpBdXJpZ2EvTQpBdXJvcmEvTQpBdXNjaHdpdHovTQpBdXNzaWUvTVMKQXVzdGVuL00KQXVzdGVybGl0ei9NCkF1c3Rpbi9NUwpBdXN0cmFsYXNpYS9NCkF1c3RyYWxhc2lhbgpBdXN0cmFsaWEvTQpBdXN0cmFsaWFuL1NNCkF1c3RyYWxvaWQvTQpBdXN0cmFsb3BpdGhlY3VzL00KQXVzdHJpYS9NCkF1c3RyaWFuL1NNCkF1c3Ryb25lc2lhbi9NCkF1dHVtbi9NCkF2L00KQXZhL00KQXZhbG9uL00KQXZlL00KQXZlbnRpbmUvTQpBdmVybnVzL00KQXZlcnJvZXMvTQpBdmVyeS9NCkF2ZXN0YS9NCkF2aWNlbm5hL00KQXZpZ25vbi9NCkF2aWxhL00KQXZpb3IvTQpBdmlzL00KQXZvZ2Fkcm8vTQpBdm9uL00KQXhpcwpBeHVtL00KQXlhbGEvTQpBeWVycy9NCkF5bWFyYS9NCkF5cnNoaXJlL00KQXl1cnZlZGEvTQpBeXl1YmlkL00KQXphbmEvTQpBemFuaWEvTQpBemF6ZWwvTQpBemVyYmFpamFuL00KQXplcmJhaWphbmkvTVMKQXpvcmVzL00KQXpvdi9NCkF6dGVjL1NNCkF6dGVjYW4vTQpBenRsYW4vTQpCL01OVApCQS9NCkJBU0lDL1NNCkJCL00KQkJCL00KQkJDL00KQkJRCkJCUwpCQlNlcwpCQy9NCkJGRgpCSUEKQklPUwpCSVRORVQKQkxUL1NNCkJNL00KQk1XL00KQk8KQlAvTQpCUE9FCkJSCkJTL00KQlNBCkJTRC9TTQpCVFUKQlRXCkJZT0IKQmEvTQpCYWFsL1NNCkJhYXRoL00KQmFhdGhpc3QvTQpCYWJiYWdlL00KQmFiYml0dC9NCkJhYmVsL01TCkJhYnlsb24vTVMKQmFieWxvbmlhL00KQmFieWxvbmlhbi9TTQpCYWNhbGwvTQpCYWNhcmRpL00KQmFjY2hhbmFsaWEvTQpCYWNjaGljCkJhY2NodXMvTQpCYWNoL00KQmFja3VzL00KQmFjb24vTQpCYWN0cmlhL00KQmFkZW4vTQpCYWRsYW5kcy9NCkJhZWRla2VyL01TCkJhZXovTQpCYWZmaW4vTQpCYWdnaWVzL00KQmFnaGRhZC9NCkJhZ3Vpby9NCkJhaGEnaS9NCkJhaGEndWxsYWgvTQpCYWhhbWEvU00KQmFoYW1hbmlhbgpCYWhhbWFzL00KQmFoYW1pYW4vTVMKQmFoaWEvTQpCYWhyYWluL00KQmFpa2FsL00KQmFpbGV5L00KQmFpcmQvTQpCYWtlbGl0ZS9NCkJha2VyL00KQmFrZXJzZmllbGQvTQpCYWt1L00KQmFrdW5pbi9NCkJhbGFuY2hpbmUvTQpCYWxhdG9uL00KQmFsYm9hL00KQmFsZGVyL00KQmFsZHdpbi9TTQpCYWxlYXJpYy9NCkJhbGZvdXIvTQpCYWxpL00KQmFsaW5lc2UvTQpCYWxrYW4vTVMKQmFsa2Fucy9NCkJhbGtoYXNoL00KQmFsbC9NCkJhbGxhcmQvTQpCYWx0aGF6YXIvTQpCYWx0aWMvTQpCYWx0aW1vcmUvTQpCYWx1Y2hpc3Rhbi9NCkJhbHphYy9NCkJhbWFrby9NCkJhbWJpL00KQmFuYWNoL00KQmFuY3JvZnQvTQpCYW5kdW5nL00KQmFuZ2Fsb3JlL00KQmFuZ2tvay9NCkJhbmdsYWRlc2gvTQpCYW5nbGFkZXNoaS9TTQpCYW5nb3IvTQpCYW5ndWkvTQpCYW5qYXJtYXNpbi9NCkJhbmp1bC9NCkJhbmtzL00KQmFubmVrZXIvTQpCYW5uaXN0ZXIvTQpCYW50aW5nL00KQmFudHUvTVMKQmFvdG91L00KQmFwdGlzdC9TTQpCYXB0aXN0ZS9NCkJhcmFiYmFzL00KQmFyYWNrL00KQmFyYmFkaWFuL1NNCkJhcmJhZG9zL00KQmFyYmFyYS9NCkJhcmJhcmVsbGEvTQpCYXJiYXJvc3NhL00KQmFyYmFyeS9NCkJhcmJlci9NCkJhcmJpZS9NCkJhcmJvdXIvTQpCYXJicmEvTQpCYXJidWRhL00KQmFyY2Vsb25hL00KQmFyY2xheS9TTQpCYXJjbGF5cy9NCkJhcmRlZW4vTQpCYXJlbnRzL00KQmFya2VyL00KQmFya2xleS9NCkJhcmxvdy9NCkJhcm5hYmFzL00KQmFybmFieS9NCkJhcm5hcmQvTQpCYXJuYXVsL00KQmFybmVzL00KQmFybmV0dC9NCkJhcm5leS9NCkJhcm51bS9NCkJhcm9kYS9NCkJhcnF1aXNpbWV0by9NCkJhcnIvTQpCYXJyYW5xdWlsbGEvTQpCYXJyZXJhL00KQmFycmV0dC9NCkJhcnJpZS9NCkJhcnJvbi9NCkJhcnJ5L00KQmFycnltb3JlL00KQmFydC9NCkJhcnRoL01TCkJhcnRob2xkaS9NCkJhcnRob2xvbWV3L00KQmFydGxldHQvTQpCYXJ0b2svTQpCYXJ0b24vTQpCYXJ1Y2gvTQpCYXJ5c2huaWtvdi9NCkJhc2VsL00KQmFzaG8vTQpCYXNpZS9NCkJhc2lsL00KQmFzcXVlL01TCkJhc3JhL00KQmFzcy9NCkJhc3NldGVycmUvTQpCYXN0aWxsZS9NCkJhc3V0b2xhbmQvTQpCYXRhYW4vTQpCYXRlcy9NCkJhdGhzaGViYS9NCkJhdGlzdGEvTQpCYXRtYW4vTQpCYXR0bGUvTQpCYXR1L00KQmF1ZGVsYWlyZS9NCkJhdWRvdWluL00KQmF1ZHJpbGxhcmQvTQpCYXVlci9NCkJhdWhhdXMvTQpCYXVtL00KQmF2YXJpYS9NCkJhdmFyaWFuL00KQmF4dGVyL00KQmF5YW1vbgpCYXllci9NCkJheWVzL00KQmF5ZXNpYW4vTQpCYXlldXgvTQpCYXlsb3IvTQpCYXlvbm5lL00KQmF5cmV1dGgvTQpCYXl3YXRjaC9NCkJlL01ICkJlYWNoL00KQmVhZGxlL00KQmVhbi9NCkJlYXJkL00KQmVhcmRtb3JlL00KQmVhcmRzbGV5L00KQmVhcm5haXNlL00KQmVhc2xleS9NCkJlYXRsZW1hbmlhL00KQmVhdGxlcy9NCkJlYXRyaWNlL00KQmVhdHJpeC9NCkJlYXRyaXovTQpCZWF0dHkvTQpCZWF1L00KQmVhdWZvcnQvTQpCZWF1am9sYWlzL00KQmVhdW1hcmNoYWlzL00KQmVhdW1vbnQvTQpCZWF1cmVnYXJkL00KQmVhdXZvaXIvTQpCZWNodGVsL00KQmVjay9NUgpCZWNrZXIvTQpCZWNrZXQvTQpCZWNrZXR0L00KQmVja3kvTQpCZWNxdWVyZWwvTQpCZWRlL00KQmVkb3Vpbi9TTQpCZWViZS9NCkJlZWNoZXIvTQpCZWVmYXJvbmkvTQpCZWVsemVidWIvTQpCZWVyYm9obS9NCkJlZXRob3Zlbi9NCkJlZXRvbi9NCkJlZ2luL00KQmVoYW4vTQpCZWhyaW5nL00KQmVpZGVyYmVja2UvTQpCZWlqaW5nL00KQmVpcnV0L00KQmVrZXN5L00KQmVsYS9NCkJlbGFydXMvTQpCZWxhdS9NCkJlbGVtL00KQmVsZmFzdC9NCkJlbGcKQmVsZ2lhbi9TTQpCZWxnaXVtL00KQmVsZ3JhZGUvTQpCZWxpbmRhL00KQmVsaXplL00KQmVsbC9NCkJlbGxhL00KQmVsbGFteS9NCkJlbGxhdHJpeC9NCkJlbGxlZWsvTQpCZWxsaW5pL00KQmVsbG93L00KQmVsbW9udC9NCkJlbG1vcGFuL00KQmVsb3J1c3NpYW4vTVMKQmVsc2hhenphci9NCkJlbHRhbmUvTQpCZWx1c2hpL00KQmVuL00KQmVuYWNlcnJhZi9NCkJlbmNobGV5L00KQmVuZGVyL00KQmVuZGl4L00KQmVuZWRpY3QvTQpCZW5lZGljdGluZS9NUwpCZW5lbHV4L00KQmVuZXQvTQpCZW5ldHRvbi9NCkJlbmdhbC9TTQpCZW5nYWxpL00KQmVuZ2hhemkvTQpCZW5pbi9NCkJlbmluZXNlL00KQmVuaXRhL00KQmVuaXRvL00KQmVuamFtaW4vTQpCZW5uZXR0L00KQmVubmllL00KQmVubnkvTQpCZW5zb24vTQpCZW50aGFtL00KQmVudGxleS9NCkJlbnRvbi9NCkJlbnovTQpCZW56ZWRyaW5lL00KQmVvd3VsZi9NCkJlcmJlci9TTQpCZXJlbmljZS9NCkJlcmV0dGEvTQpCZXJnL01OUgpCZXJnZW4vTQpCZXJnZXIvTQpCZXJnZXJhYy9NCkJlcmdtYW4vTQpCZXJnc29uL00KQmVyaWEvTQpCZXJpbmcvTQpCZXJrZWxleS9NCkJlcmtzaGlyZS9TTQpCZXJrc2hpcmVzL00KQmVybGUvTQpCZXJsaW4vU1pNUgpCZXJsaW5lci9NCkJlcmxpb3ovTQpCZXJsaXR6L00KQmVybXVkYS9TTQpCZXJtdWRhbi9TTQpCZXJtdWRpYW4vU00KQmVybi9NCkJlcm5hZGV0dGUvTQpCZXJuYWRpbmUvTQpCZXJuYW5rZS9NCkJlcm5hcmQvTQpCZXJuYXJkby9NCkJlcm5heXMvTQpCZXJuYmFjaC9NCkJlcm5lc2UKQmVybmhhcmR0L00KQmVybmljZS9NCkJlcm5pZS9NCkJlcm5pbmkvTQpCZXJub3VsbGkvTQpCZXJuc3RlaW4vTQpCZXJyYS9NCkJlcnJ5L00KQmVydC9NCkJlcnRhL00KQmVydGVsc21hbm4vTQpCZXJ0aGEvTQpCZXJ0aWUvTQpCZXJ0aWxsb24vTQpCZXJ0cmFtL00KQmVydHJhbmQvTQpCZXJ5bC9NCkJlcnplbGl1cy9NCkJlc3MvTQpCZXNzZWwvTQpCZXNzZW1lci9NCkJlc3NpZS9NCkJlc3QvTQpCZXRlbGdldXNlL00KQmV0aC9NCkJldGhhbnkvTQpCZXRoZS9NCkJldGhlc2RhL00KQmV0aGxlaGVtL00KQmV0aHVuZS9NCkJldHN5L00KQmV0dGUvTQpCZXR0aWUvTQpCZXR0eS9NCkJldHR5ZS9NCkJldWxhaC9NCkJldmVyaWRnZQpCZXZlcmxleS9NCkJldmVybHkvTQpCZXllci9NCkJoYXJhdC9NCkJob3BhbC9NCkJodXRhbi9NCkJodXRhbmVzZS9NCkJodXR0by9NCkJpL00KQmlhbHlzdG9rL00KQmlhbmNhL00KQmliCkJpYmxlL01TCkJpYy9NCkJpZGRsZS9NCkJpZGVuL00KQmllcmNlL00KQmlnZm9vdC9NCkJpZ2dsZXMvTQpCaWtvL00KQmlsYmFvL00KQmlsYm8vTQpCaWxsL01KCkJpbGxpZS9NCkJpbGxpbmdzL00KQmlsbHkvTQpCaW1pbmkvTQpCaW9rby9NCkJpcmQvTQpCaXJkc2V5ZS9NCkJpcmtlbnN0b2NrL00KQmlybWluZ2hhbS9NCkJpcm8vTQpCaXNjYXkvTQpCaXNjYXluZS9NCkJpc2hrZWsvTQpCaXNob3AvTQpCaXNtYXJjay9NCkJpc21hcmsvTQpCaXNxdWljay9NCkJpc3NhdS9NCkJpdFRvcnJlbnQvTQpCaXpldC9NCkJqZXJrbmVzL00KQmpvcmsvTQpCay9NCkJsYWNrQmVycnkvTQpCbGFja2JlYXJkL00KQmxhY2tidXJuL00KQmxhY2tmZWV0L00KQmxhY2tmb290L00KQmxhY2twb29sL00KQmxhY2tzaGlydC9NCkJsYWNrc3RvbmUvTQpCbGFja3dlbGwvTQpCbGFpbmUvTQpCbGFpci9NCkJsYWtlL00KQmxhbmNhL00KQmxhbmNoYXJkL00KQmxhbmNoZS9NCkJsYW5rZW5zaGlwL00KQmxhbnR5cmUvTQpCbGF0ei9NCkJsYXZhdHNreS9NCkJsZW5oZWltL00KQmxldmlucy9NCkJsaWdoL00KQmxvY2gvTQpCbG9ja2J1c3Rlci9NCkJsb2VtZm9udGVpbi9NCkJsb25kZWwvTQpCbG9uZGllL00KQmxvb20vTVIKQmxvb21lci9NCkJsb29tZmllbGQvTQpCbG9vbWluZ2RhbGUvTQpCbG9vbXNidXJ5L00KQmx1CkJsdWNoZXIvTQpCbHVlYmVhcmQvTQpCbHVldG9vdGgvTQpCbHZkCkJseXRoZS9NCkJvYWRpY2VhCkJvYXMvTQpCb2IvTQpCb2JiaS9NCkJvYmJpZS9NCkJvYmJpdHQvTQpCb2JieS9NCkJvY2NhY2Npby9NCkJvZGhpZGhhcm1hL00KQm9kaGlzYXR0dmEvTQpCb2RsZWlhbgpCb2VpbmcvTQpCb2VvdGlhL00KQm9lb3RpYW4vTQpCb2VyL1NNCkJvZXRoaXVzL00KQm9nYXJ0L00KQm9nb3RhL00KQm9oZW1pYS9NCkJvaGVtaWFuL1NNCkJvaHIvTQpCb2lzZS9NCkJvamFuZ2xlcy9NCkJvbGV5bi9NCkJvbGl2YXIvTQpCb2xpdmlhL00KQm9saXZpYW4vTVMKQm9sbHl3b29kL00KQm9sb2duYS9NCkJvbHNoZXZpay9TTQpCb2xzaGV2aWtpCkJvbHNoZXZpc20vTQpCb2xzaGV2aXN0L00KQm9sc2hvaS9NCkJvbHRvbi9NCkJvbHR6bWFubi9NCkJvbWJheS9NCkJvbmFwYXJ0ZS9NCkJvbmF2ZW50dXJlL00KQm9uZC9NCkJvbmhvZWZmZXIvTQpCb25pZmFjZS9NCkJvbml0YS9NCkJvbm4vTVIKQm9ubmVyL00KQm9ubmV2aWxsZS9NCkJvbm5pZS9NCkJvbm8vTQpCb29rZXIvTQpCb29sZS9NCkJvb2xlYW4vTQpCb29uZS9NCkJvb3Rlcy9NCkJvb3RoL00KQm9yZGVhdXgvTQpCb3JkZW4vTQpCb3Jkb24vTQpCb3JlYXMvTQpCb3JnL1NNCkJvcmdlcy9NCkJvcmdpYS9NCkJvcmdsdW0vTQpCb3Jpcy9NCkJvcmsvTQpCb3JsYXVnL00KQm9ybi9NCkJvcm5lby9NCkJvcm9idWR1ci9NCkJvcm9kaW4vTQpCb3J1L00KQm9zY2gvTQpCb3NlL00KQm9zbmlhL00KQm9zbmlhbgpCb3Nwb3J1cy9NCkJvc3Rvbi9NUwpCb3N0b25pYW4vTQpCb3N3ZWxsL00KQm90b3gKQm90c3dhbmEvTQpCb3R0aWNlbGxpL00KQm91bGRlci9NCkJvdWxlei9NCkJvdXJiYWtpL00KQm91cmJvbi9TTQpCb3VybmVtb3V0aC9NCkJvdmFyeS9NCkJvd2RpdGNoL00KQm93ZWxsL00KQm93ZW4vTQpCb3dlcnMvTQpCb3dlcnkvTQpCb3dpZS9NCkJvd21hbi9NCkJveWQvTQpCb3llci9NCkJveWxlL00KQnIvTVQKQnJhZC9NWQpCcmFkYnVyeS9NCkJyYWRkb2NrL00KQnJhZGZvcmQvTQpCcmFkbGV5L00KQnJhZGx5L00KQnJhZHNoYXcvTQpCcmFkc3RyZWV0L00KQnJhZHkvTQpCcmFnZy9NCkJyYWhlL00KQnJhaG1hL01TCkJyYWhtYWd1cHRhL00KQnJhaG1hbi9NUwpCcmFobWFuaQpCcmFobWFuaXNtL1NNCkJyYWhtYXB1dHJhL00KQnJhaG1zL00KQnJhaWxsZS9NUwpCcmFpbi9NCkJyYW1wdG9uL00KQnJhbi9NCkJyYW5jaC9NCkJyYW5kZWlzL00KQnJhbmRlbi9NCkJyYW5kZW5idXJnL00KQnJhbmRpL00KQnJhbmRpZS9NCkJyYW5kby9NCkJyYW5kb24vTQpCcmFuZHQvTQpCcmFuZHkvTQpCcmFudC9NCkJyYXF1ZS9NCkJyYXNpbGlhL00KQnJhdGlzbGF2YS9NCkJyYXR0YWluL00KQnJheS9NCkJyYXppbC9NCkJyYXppbGlhbi9NUwpCcmF6b3MvTQpCcmF6emF2aWxsZS9NCkJyZWFrc3BlYXIvTQpCcmVhdGhhbHl6ZXIKQnJlY2h0L00KQnJlY2tlbnJpZGdlL00KQnJlbWVuL00KQnJlbmRhL00KQnJlbmRhbi9NCkJyZW5uYW4vTQpCcmVubmVyL00KQnJlbnQvTQpCcmVudG9uL00KQnJlc3QvTQpCcmV0L00KQnJldG9uL00KQnJldHQvTQpCcmV3ZXIvTQpCcmV3c3Rlci9NCkJyZXpobmV2L00KQnJpYW4vTQpCcmlhbmEvTQpCcmlhbm5hL00KQnJpY2UvTQpCcmlkYWx2ZWlsL00KQnJpZGdlcG9ydC9NCkJyaWRnZXIvTQpCcmlkZ2VzL00KQnJpZGdldC9NCkJyaWRnZXRvd24vTQpCcmlkZ2V0dC9NCkJyaWRnZXR0ZS9NCkJyaWRnbWFuL00KQnJpZS9TTQpCcmlnYWRvb24vTQpCcmlnZ3MvTQpCcmlnaGFtL00KQnJpZ2h0L00KQnJpZ2h0b24vTQpCcmlnaWQvTQpCcmlnaXR0ZS9NCkJyaWxsby9NCkJyaW5rbGV5L00KQnJpc2JhbmUvTQpCcmlzdG9sL00KQnJpdC9TTQpCcml0YWluL00KQnJpdGFubmlhL00KQnJpdGFubmljL00KQnJpdGFubmljYS9NCkJyaXRpY2lzbS9TTQpCcml0aXNoL01SWgpCcml0aXNoZXIvTQpCcml0bmV5L00KQnJpdG9uL01TCkJyaXR0L01OCkJyaXR0YW55L1NNCkJyaXR0ZW4vTQpCcml0dG5leS9NCkJybm8vTQpCcm9hZHdheS9TTQpCcm9iZGluZ25hZy9NCkJyb2JkaW5nbmFnaWFuL00KQnJvY2svTQpCcm9rYXcvTQpCcm9uc29uL00KQnJvbnRlL00KQnJvbnRvc2F1cnVzCkJyb254L00KQnJvb2tlL01TCkJyb29rbHluL00KQnJvb2tzL00KQnJvcwpCcm93bi9NRwpCcm93bmUvTQpCcm93bmlhbi9NCkJyb3duaWUvUwpCcm93bmluZy9NCkJyb3duc2hpcnQvTQpCcm93bnN2aWxsZS9NCkJydWJlY2svTQpCcnVjZS9NCkJydWNrbmVyL00KQnJ1ZWdlbApCcnVtbWVsL00KQnJ1bmVpL00KQnJ1bmVpYW4vTVMKQnJ1bmVsbGVzY2hpL00KQnJ1bmhpbGRlL00KQnJ1bm8vTQpCcnVuc3dpY2svTQpCcnVzc2Vscy9NCkJydXQvTQpCcnV0dXMvTQpCcnlhbi9NCkJyeWFudC9NCkJyeWNlL00KQnJ5bm5lci9NCkJyeW9uL00KQnJ6ZXppbnNraS9NCkJ0dS9NCkJ1YmVyL00KQnVjaGFuYW4vTQpCdWNoYXJlc3QvTQpCdWNoZW53YWxkL00KQnVjaHdhbGQvTQpCdWNrL00KQnVja2luZ2hhbS9NCkJ1Y2tsZXkvTQpCdWNrbmVyL00KQnVkL00KQnVkYXBlc3QvTQpCdWRkaGEvU00KQnVkZGhpc20vU00KQnVkZGhpc3QvU00KQnVkZHkvTQpCdWR3ZWlzZXIvTQpCdWZmYWxvL00KQnVmZnkvTQpCdWZvcmQvTQpCdWdhdHRpL00KQnVnemlsbGEvTQpCdWljay9NCkJ1anVtYnVyYS9NCkJ1a2hhcmEvTQpCdWtoYXJpbi9NCkJ1bGF3YXlvL00KQnVsZmluY2gvTQpCdWxnYW5pbi9NCkJ1bGdhci9NCkJ1bGdhcmkvTQpCdWxnYXJpYS9NCkJ1bGdhcmlhbi9TTQpCdWxsb2NrL00KQnVsbHdpbmtsZS9NCkJ1bHRtYW5uL00KQnVtcHBvL00KQnVuY2hlL00KQnVuZGVzYmFuay9NCkJ1bmRlc3RhZy9NCkJ1bmluL00KQnVua2VyL00KQnVuc2VuL00KQnVudWVsL00KQnVueWFuL00KQnVyYmFuay9NCkJ1cmJlcnJ5L00KQnVyY2gvTQpCdXJnZXIvTQpCdXJnZXNzL00KQnVyZ295bmUvTQpCdXJndW5kaWFuL00KQnVyZ3VuZHkvU00KQnVya2UvTQpCdXJrcy9NCkJ1cmwvTQpCdXJsaW5ndG9uL00KQnVybWEvTQpCdXJtZXNlL00KQnVybmV0dC9NCkJ1cm5zL00KQnVybnNpZGUvTQpCdXJyL00KQnVycmlzL00KQnVycm91Z2hzL00KQnVyc2EvTQpCdXJ0L00KQnVydG9uL00KQnVydW5kaS9NCkJ1cnVuZGlhbi9NUwpCdXNjaC9NCkJ1c2gvTQpCdXNoaWRvL00KQnVzaG5lbGwvTQpCdXRsZXIvTQpCdXR0ZXJmaW5nZXJzL00KQnV4dGVodWRlL00KQnlibG9zL00KQnllcnMvTQpCeXJkL00KQnlyb24vTQpCeXJvbmljL00KQnl6YW50aW5lL01TCkJ5emFudGl1bS9NCkMvU00KQ0EKQ0FEL00KQ0FJCkNBTQpDQVAKQ0FSRQpDQVRWCkNCCkNCQy9NCkNCUy9NCkNDVFYKQ0NVCkNEL00KQ0RDCkNEVApDRU8vTQpDRgpDRkMvTQpDRk8KQ0dJCkNJQS9NCkNJRApDTk4vTQpDTlMvTQpDTy9NCkNPQk9ML1NNCkNPRApDT0wKQ09MQQpDUEEvTQpDUEkvTQpDUE8KQ1BSL00KQ1BVL00KQ1JUL1NNCkNTVC9NCkNUL00KQ1YKQ1ZTL00KQ1oKQ2EvTQpDYWJlcm5ldC9NCkNhYm90L00KQ2FicmFsL00KQ2FicmVyYS9NCkNhYnJpbmkvTQpDYWRldHRlCkNhZGlsbGFjL00KQ2FkaXovTQpDYWVkbW9uL00KQ2FlcnBoaWxseS9NCkNhZXNhci9TTQpDYWdlL00KQ2FnbmV5L00KQ2Fob2tpYS9NCkNhaWFwaGFzL00KQ2Fpbi9TTQpDYWlyby9NCkNhaXRsaW4vTQpDYWp1bi9NUwpDYWwvTQpDYWxhaXMvTQpDYWxjdXR0YS9NCkNhbGRlci9NCkNhbGRlcm9uL00KQ2FsZHdlbGwvTQpDYWxlYi9NCkNhbGVkb25pYS9NCkNhbGdhcnkvTQpDYWxob3VuL00KQ2FsaS9NCkNhbGliYW4vTQpDYWxpZgpDYWxpZm9ybmlhL00KQ2FsaWZvcm5pYW4vU00KQ2FsaWd1bGEvTQpDYWxsYWdoYW4vTQpDYWxsYWhhbi9NCkNhbGxhby9NCkNhbGxhcy9NCkNhbGxpZS9NCkNhbGxpb3BlL00KQ2FsbGlzdG8vTQpDYWxvb2Nhbi9NCkNhbHZhcnkvTQpDYWx2ZXJ0L00KQ2FsdmluL00KQ2FsdmluaXNtL01TCkNhbHZpbmlzdC9NUwpDYWx2aW5pc3RpYwpDYW1hY2hvL00KQ2FtYm9kaWEvTQpDYW1ib2RpYW4vU00KQ2FtYnJpYW4vU00KQ2FtYnJpZGdlL00KQ2FtZGVuL00KQ2FtZWwvTQpDYW1lbG9wYXJkYWxpcy9NCkNhbWVsb3QvTVMKQ2FtZW1iZXJ0L01TCkNhbWVyb24vTQpDYW1lcm9vbi9TTQpDYW1lcm9vbmlhbi9NUwpDYW1pbGxhL00KQ2FtaWxsZS9NCkNhbW9lbnMvTQpDYW1wYW5lbGxhL00KQ2FtcGJlbGwvTQpDYW1waW5hcy9NCkNhbXBvcy9NCkNhbXJ5L00KQ2FtdXMvTQpDYW4vTQpDYW5hYW4vTQpDYW5hYW5pdGUvTVMKQ2FuYWQKQ2FuYWRhL00KQ2FuYWRpYW4vU00KQ2FuYWRpYW5pc20KQ2FuYWxldHRvL00KQ2FuYXJpZXMvTQpDYW5hdmVyYWwvTQpDYW5iZXJyYS9NCkNhbmNlci9TTQpDYW5jdW4vTQpDYW5kYWNlL00KQ2FuZGljZS9NCkNhbmRpZGUvTQpDYW5keS9NCkNhbm5lcy9NCkNhbm5vbi9NCkNhbm9uL00KQ2Fub3B1cy9NCkNhbnRhYnJpZ2lhbi9NCkNhbnRlcmJ1cnkvTQpDYW50b24vTQpDYW50b25lc2UvTQpDYW50b3IvTQpDYW50cmVsbC9NCkNhbnR1L00KQ2FudXRlL00KQ2FwYWJsYW5jYS9NCkNhcGVrL00KQ2FwZWxsYS9NCkNhcGV0L00KQ2FwZXRpYW4vTQpDYXBldG93bi9NCkNhcGgvTQpDYXBpc3RyYW5vL00KQ2FwaXRvbC9TTQpDYXBpdG9saW5lL00KQ2Fwb25lL00KQ2Fwb3RlL00KQ2FwcmEvTQpDYXByaS9NCkNhcHJpY29ybi9NUwpDYXB0CkNhcHVjaGluL00KQ2FwdWxldC9NCkNhcmEvTQpDYXJhY2FsbGEvTQpDYXJhY2FzL00KQ2FyYXZhZ2dpby9NCkNhcmJvbG95L00KQ2FyYm9uaWZlcm91cy9NCkNhcmJvcnVuZHVtL00KQ2FyZGVuYXMvTQpDYXJkaWZmL00KQ2FyZGluL00KQ2FyZG96by9NCkNhcmV5L00KQ2FyaWIvTVMKQ2FyaWJiZWFuL01TCkNhcmluYS9NCkNhcmlzc2EvTQpDYXJsL00KQ2FybGEvTQpDYXJsZW5lL00KQ2FybGluL00KQ2FybG8vTVMKQ2FybG9zL00KQ2FybHNiYWQvTQpDYXJsc29uL00KQ2FybHRvbi9NCkNhcmx5L00KQ2FybHlsZS9NCkNhcm1lbGEvTQpDYXJtZWxsYS9NCkNhcm1lbG8vTQpDYXJtZW4vTQpDYXJtaWNoYWVsL00KQ2FybWluZS9NCkNhcm5hcC9NCkNhcm5hdGlvbi9NCkNhcm5lZ2llL00KQ2FybmV5L00KQ2Fybm90L00KQ2Fyb2wvTQpDYXJvbGUvTQpDYXJvbGluYS9NCkNhcm9saW5lL00KQ2Fyb2xpbmdpYW4vTQpDYXJvbGluaWFuL00KQ2Fyb2x5bi9NCkNhcnBhdGhpYW4vU00KQ2FycGF0aGlhbnMvTQpDYXJwZW50ZXIvTQpDYXJyL00KQ2FycmFuemEvTQpDYXJyaWUvUk0KQ2Fycmllci9NCkNhcnJpbGxvL00KQ2Fycm9sbC9NCkNhcnNvbi9NCkNhcnRlci9NCkNhcnRlc2lhbi9NCkNhcnRoYWdlL00KQ2FydGhhZ2luaWFuL01TCkNhcnRpZXIvTQpDYXJ0d3JpZ2h0L00KQ2FydXNvL00KQ2FydmVyL00KQ2FyeS9NCkNhc2FibGFuY2EvTQpDYXNhbHMvTQpDYXNhbmRyYS9NCkNhc2Fub3ZhL1NNCkNhc2NhZGVzL00KQ2FzZS9NCkNhc2V5L00KQ2FzaC9NCkNhc2lvL00KQ2FzcGFyL00KQ2FzcGlhbi9NCkNhc3NhbmRyYS9TTQpDYXNzYXR0L00KQ2Fzc2lkeS9NCkNhc3NpZS9NCkNhc3Npb3BlaWEvTQpDYXNzaXVzL00KQ2FzdGFuZWRhL00KQ2FzdGlsaWFuCkNhc3RpbGxvL00KQ2FzdGxlcmVhZ2gvTQpDYXN0b3IvTQpDYXN0cmllcy9NCkNhc3Ryby9NCkNhdGFsYW4vU00KQ2F0YWxpbmEvTQpDYXRhbG9uaWEvTQpDYXRhd2JhL00KQ2F0ZXJwaWxsYXIvTQpDYXRoYXkvTQpDYXRoZXIvTQpDYXRoZXJpbmUvTQpDYXRobGVlbi9NCkNhdGhvbGljL01TCkNhdGhvbGljaXNtL01TCkNhdGhyeW4vTQpDYXRoeS9NCkNhdGlsaW5lL00KQ2F0by9NCkNhdHNraWxsL1NNCkNhdHNraWxscy9NCkNhdHQvTQpDYXR1bGx1cy9NCkNhdWNhc2lhbi9NUwpDYXVjYXNvaWQKQ2F1Y2FzdXMvTQpDYXVjaHkvTQpDYXZlbmRpc2gvTQpDYXZvdXIvTQpDYXh0b24vTQpDYXllbm5lL00KQ2F5bWFuL00KQ2F5dWdhL1NNCkNheXVzZQpDYgpDZC9NCkNlL00KQ2VhdXNlc2N1L00KQ2VidS9NCkNlYnVhbm8vTQpDZWNlbGlhL00KQ2VjaWwvTQpDZWNpbGUvTQpDZWNpbGlhL00KQ2VjaWx5L00KQ2VkcmljL00KQ2VsZXN0ZS9NCkNlbGlhL00KQ2VsaW5hL00KQ2VsbGluaS9NCkNlbHNpdXMvTQpDZWx0L1NNCkNlbHRpYy9TTQpDZW5vem9pYy9NCkNlbnRhdXJ1cy9NCkNlbnRpZ3JhZGUKQ2VudHJhbApDZXBoZWlkL00KQ2VwaGV1cy9NCkNlcmJlcnVzL00KQ2VyZW5rb3YvTQpDZXJlcy9NCkNlcmYvTQpDZXJ2YW50ZXMvTQpDZXNhci9NCkNlc2FyZWFuL00KQ2Vzc25hL00KQ2V0dXMvTQpDZXlsb24vTQpDZXlsb25lc2UKQ2V6YW5uZS9NCkNmL00KQ2gnaW4vTQpDaC9OCkNoYWJsaXMvTQpDaGFkL00KQ2hhZGlhbi9NUwpDaGFkd2ljay9NCkNoYWdhbGwvTQpDaGFpdGFueWEvTQpDaGFpdGluL00KQ2hhbGRlYQpDaGFsZGVhbi9NCkNoYWxsZW5nZXIvTQpDaGFsbWVycwpDaGFtYmVybGFpbi9NCkNoYW1iZXJzL00KQ2hhbXBsYWluL00KQ2hhbXBvbGxpb24vTQpDaGFuL00KQ2hhbmNlL00KQ2hhbmNlbGxvcnN2aWxsZS9NCkNoYW5kaWdhcmgvTQpDaGFuZGxlci9NCkNoYW5kb24vTQpDaGFuZHJhL00KQ2hhbmRyYWd1cHRhL00KQ2hhbmRyYXNla2hhci9NCkNoYW5lbC9NCkNoYW5leS9NCkNoYW5nL00KQ2hhbmdjaHVuL00KQ2hhbmdzaGEvTQpDaGFudGlsbHkvTQpDaGFwbGluL00KQ2hhcGxpbmVzcXVlCkNoYXBtYW4vTQpDaGFwcGFxdWlkZGljay9NCkNoYXB1bHRlcGVjL00KQ2hhcmJyYXkvTQpDaGFyZG9ubmF5L00KQ2hhcml0eS9NCkNoYXJsZW1hZ25lL00KQ2hhcmxlbmUvTQpDaGFybGVzL00KQ2hhcmxlc3Rvbi9NUwpDaGFybGV5L00KQ2hhcmxpZS9NCkNoYXJsb3R0ZS9NCkNoYXJsb3R0ZXRvd24vTQpDaGFybWFpbmUvTQpDaGFybWluL00KQ2hhcm9sYWlzL00KQ2hhcm9uL00KQ2hhcnRpc20vTQpDaGFydHJlcy9NCkNoYXJ5YmRpcy9NCkNoYXNlL00KQ2hhc2l0eS9NCkNoYXRlYXVicmlhbmQvTQpDaGF0dGFob29jaGVlL00KQ2hhdHRhbm9vZ2EvTQpDaGF0dGVybGV5L00KQ2hhdHRlcnRvbi9NCkNoYXVjZXIvTQpDaGF1bmNleS9NCkNoYXV0YXVxdWEvTQpDaGF2ZXovTQpDaGF5ZWZza3kvTQpDaGUvTQpDaGVjaGVuL00KQ2hlY2hueWEvTQpDaGVkZGFyL00KQ2hlZXIvTQpDaGVlcmlvcy9NCkNoZWV0b3MvTQpDaGVldmVyL00KQ2hla2hvdi9NCkNoZWtob3ZpYW4KQ2hlbHNlYS9NCkNoZWx5YWJpbnNrL00KQ2hlbi9NCkNoZW5leS9NCkNoZW5nZHUvTQpDaGVubmFpL00KQ2hlb3BzL00KQ2hlcmkvTQpDaGVyaWUvTQpDaGVybmVua28vTQpDaGVybm9ieWwvTQpDaGVybm9teXJkaW4vTQpDaGVyb2tlZS9NUwpDaGVycnkvTQpDaGVyeWwvTQpDaGVzYXBlYWtlL00KQ2hlc2hpcmUvTQpDaGVzdGVyL00KQ2hlc3RlcmZpZWxkL00KQ2hlc3RlcnRvbi9NCkNoZXZhbGllci9NCkNoZXZpb3QvTQpDaGV2cm9sZXQvTQpDaGV2cm9uL00KQ2hldnkvTQpDaGV5ZW5uZS9TTQpDaGkvTQpDaGlhbnRpL01TCkNoaWJhL00KQ2hpYmNoYS9NCkNoaWNhZ28vTQpDaGljYWdvYW4vTQpDaGljYW5hL00KQ2hpY2Fuby9NCkNoaWNrYXNhdy9NUwpDaGljbGV0cy9NCkNoaWh1YWh1YS9NUwpDaGlsZS9NCkNoaWxlYW4vTVMKQ2hpbWJvcmF6by9NCkNoaW1lcmEvTVMKQ2hpbXUvTQpDaGluL00KQ2hpbmEvTQpDaGluYXRvd24vTQpDaGluZXNlL00KQ2hpbm9vay9NUwpDaGlwZXd5YW4vTQpDaGlwcGVuZGFsZS9NCkNoaXBwZXdhL1NNCkNoaXF1aXRhL00KQ2hpcmljby9NCkNoaXNob2xtL00KQ2hpc2luYXUvTQpDaGl0dGFnb25nL00KQ2hpdmFzL00KQ2hsb2UvTQpDaG9jdGF3L1NNCkNob21za3kvTQpDaG9uZ3FpbmcvTQpDaG9waW4vTQpDaG9wcmEvTQpDaG91L00KQ2hyZXRpZW4vTQpDaHJpcy9NCkNocmlzdC9NUwpDaHJpc3RhL00KQ2hyaXN0Y2h1cmNoL00KQ2hyaXN0ZW5kb20vTVMKQ2hyaXN0ZW5zZW4vTQpDaHJpc3RpL00KQ2hyaXN0aWFuL1NNCkNocmlzdGlhbml0eS9TTQpDaHJpc3RpYW5pemUKQ2hyaXN0aWUvTQpDaHJpc3RpbmEvTQpDaHJpc3RpbmUvTQpDaHJpc3RsaWtlCkNocmlzdG1hcy9NUwpDaHJpc3RtYXN0aWRlL01TCkNocmlzdG1hc3RpbWUvTVMKQ2hyaXN0b3Blci9NCkNocmlzdG9waGVyL00KQ2hyb25pY2xlcwpDaHJ5c2xlci9NCkNocnlzb3N0b20vTQpDaHJ5c3RhbC9NCkNodWNrL00KQ2h1a2NoaS9NCkNodW1hc2gvTQpDaHVuZy9NCkNodXJjaC9NCkNodXJjaGlsbC9NCkNodXJyaWd1ZXJhL00KQ2h1dmFzaC9NCkNpL00KQ2ljZXJvL00KQ2lkL00KQ2ltYWJ1ZS9NCkNpbmNpbm5hdGkvTQpDaW5kZXJlbGxhL01TCkNpbmR5L00KQ2luZW1hU2NvcGUvTQpDaW5lcmFtYS9NCkNpcHJvL00KQ2lyY2UvTQpDaXNjby9NCkNpdGliYW5rL00KQ2l0aWdyb3VwL00KQ2l0cm9lbi9NCkNsL01WCkNsYWlib3JuZS9NCkNsYWlyL00KQ2xhaXJlL00KQ2xhaXJvbC9NCkNsYW5jeS9NCkNsYXBleXJvbi9NCkNsYXB0b24vTQpDbGFyYS9NCkNsYXJlL00KQ2xhcmVuY2UvTQpDbGFyZW5kb24vTQpDbGFyaWNlL00KQ2xhcmlzc2EvTQpDbGFyay9NCkNsYXJrZS9NCkNsYXVkZS9NCkNsYXVkZXR0ZS9NCkNsYXVkaWEvTQpDbGF1ZGluZS9NCkNsYXVkaW8vTQpDbGF1ZGl1cy9NCkNsYXVzL00KQ2xhdXNld2l0ei9NCkNsYXVzaXVzL00KQ2xheS9NCkNsYXl0b24vTQpDbGVhcmFzaWwvTQpDbGVtL1hNCkNsZW1lbmNlYXUvTQpDbGVtZW5zL00KQ2xlbWVudC9NUwpDbGVtZW50aW5lL00KQ2xlbWVudHMvTQpDbGVtb25zL00KQ2xlbXNvbi9NCkNsZW8vTQpDbGVvcGF0cmEvTQpDbGV2ZWxhbmQvTQpDbGlidXJuL00KQ2xpZmYvTQpDbGlmZm9yZC9NCkNsaWZ0b24vTQpDbGluZS9NCkNsaW50L00KQ2xpbnRvbi9NCkNsaW8vTQpDbGl2ZS9NCkNsb3JldHMvTQpDbG9yb3gvTQpDbG9zdXJlL00KQ2xvdGhvL00KQ2xvdXNlYXUvTQpDbG92aXMvTQpDbHlkZS9NCkNseWRlc2RhbGUvTQpDbHl0ZW1uZXN0cmEvTQpDbS9NCkNtZHIKQ28vTQpDb2JhaW4vTQpDb2JiL00KQ29jaGFiYW1iYS9NCkNvY2hpbi9NCkNvY2hpc2UvTQpDb2NocmFuL00KQ29ja25leS9NCkNvY3RlYXUvTQpDb2QKQ29keS9NCkNvZmZleS9NCkNvZ25hYy9NCkNvaGFuL00KQ29oZW4vTQpDb2ltYmF0b3JlL00KQ29pbnRyZWF1L00KQ29rZS9TTQpDb2wvTQpDb2xiZXJ0L00KQ29sYnkvTQpDb2xlL00KQ29sZWVuL00KQ29sZW1hbi9NCkNvbGVyaWRnZS9NCkNvbGV0dGUvTQpDb2xmYXgvTQpDb2xnYXRlL00KQ29saW4vTQpDb2xsZWVuL00KQ29sbGllci9NCkNvbGxpbi9TTQpDb2xsaW5zL00KQ29sbwpDb2xvZ25lL00KQ29sb21iaWEvTQpDb2xvbWJpYW4vTVMKQ29sb21iby9NCkNvbG9uL00KQ29sb3JhZGFuL1NNCkNvbG9yYWRvL00KQ29sb3JhZG9hbgpDb2xvc3NldW0vTQpDb2x0L00KQ29sdHJhbmUvTQpDb2x1bWJpYS9NCkNvbHVtYmluZS9NCkNvbHVtYnVzL00KQ29tCkNvbWFuY2hlL01TCkNvbWJzL00KQ29tZHIKQ29taW50ZXJuL00KQ29tbWFuZG1lbnQKQ29tbW9ucy9NCkNvbW1vbndlYWx0aApDb21tdW5pb24vU00KQ29tbXVuaXNtCkNvbW11bmlzdC9TTQpDb21vL00KQ29tb3JhbgpDb21vcm9zL00KQ29tcGFxL00KQ29tcHRvbi9NCkNvbXB1U2VydmUvTQpDb210ZS9NCkNvbmFrcnkvTQpDb25hbi9NCkNvbmNlcGNpb24vTQpDb25jZXR0YS9NCkNvbmNvcmQvU00KQ29uY29yZGUvTQpDb25kaWxsYWMvTQpDb25kb3JjZXQvTQpDb25lc3RvZ2EvTQpDb25mZWRlcmFjeS9NCkNvbmZlZGVyYXRlL01TCkNvbmZ1Y2lhbi9TTQpDb25mdWNpYW5pc20vTVMKQ29uZnVjaXVzL00KQ29uZy9NCkNvbmdvL00KQ29uZ29sZXNlL00KQ29uZ3JlZ2F0aW9uYWwKQ29uZ3JlZ2F0aW9uYWxpc3QvTVMKQ29uZ3Jlc3MvTVMKQ29uZ3Jlc3Npb25hbApDb25ncmV2ZS9NCkNvbmxleS9NCkNvbm4vTVIKQ29ubmVjdGljdXQvTQpDb25uZW1hcmEvTQpDb25uZXIvTQpDb25uZXJ5L00KQ29ubmllL00KQ29ubm9sbHkvTQpDb25ub3JzL00KQ29ucmFkL00KQ29ucmFpbC9NCkNvbnNlcnZhdGl2ZQpDb25zdGFibGUvTQpDb25zdGFuY2UvTQpDb25zdGFudGluZS9NCkNvbnN0YW50aW5vcGxlL00KQ29uc3RpdHV0aW9uCkNvbnN1ZWxvL00KQ29udGluZW50L00KQ29udGluZW50YWwvTQpDb250cmVyYXMvTQpDb253YXkvTQpDb29rL00KQ29va2UvTQpDb29sZXkvTQpDb29saWRnZS9NCkNvb3Blci9NCkNvb3BlcnN0b3duL00KQ29vcnMvTQpDb3BhY2FiYW5hL00KQ29wZWxhbmQvTQpDb3BlbmhhZ2VuL00KQ29wZXJuaWNhbi9NCkNvcGVybmljdXMvTQpDb3BsYW5kL00KQ29wbGV5L00KQ29wcGVyZmllbGQvTQpDb3BwZXJ0b25lL00KQ29wcG9sYS9NCkNvcHRpYy9NCkNvcmEvTQpDb3JkZWxpYS9NCkNvcmRpbGxlcmFzL00KQ29yZG9iYS9NCkNvcmV5L00KQ29yZnUvTQpDb3JpbmEvTQpDb3JpbmUvTQpDb3Jpbm5lL00KQ29yaW50aC9NCkNvcmludGhpYW4vTVMKQ29yaW50aGlhbnMvTQpDb3Jpb2xhbnVzL00KQ29yaW9saXMvTQpDb3JrCkNvcmxlb25lL00KQ29ybWFjay9NCkNvcm5laWxsZS9NCkNvcm5lbGlhL00KQ29ybmVsaXVzL00KQ29ybmVsbC9NCkNvcm5pbmcvTQpDb3JuaXNoL01TCkNvcm53YWxsL00KQ29ybndhbGxpcy9NCkNvcm9uYWRvL00KQ29yb3QvTQpDb3JwCkNvcnJlZ2dpby9NCkNvcnJpbmUvTQpDb3JzaWNhL00KQ29yc2ljYW4vTQpDb3J0ZXMvTVMKQ29ydGxhbmQvTQpDb3J2YWxsaXMvTQpDb3J2ZXR0ZS9NCkNvcnZ1cy9NCkNvcnkvTQpDb3NieS9NCkNvc3NhY2svTQpDb3N0Y28vTQpDb3N0ZWxsby9NCkNvc3RuZXIvTQpDb3RlL00KQ290b25vdS9NCkNvdG9wYXhpL00KQ290c3dvbGQvTQpDb3R0b24vTQpDb3Vsb21iL00KQ291bHRlci9NCkNvdXBlcmluL00KQ291cmJldC9NCkNvdXJ0bmV5L00KQ291c3RlYXUvTQpDb3ZlbnRyeS9TTQpDb3dhcmQvTQpDb3dlbGwvTQpDb3dsZXkvTQpDb3dwZXIvTQpDb3gvTQpDb3kvTQpDb3p1bWVsL00KQ3BsCkNyL01UCkNyYWJiZS9NCkNyYWZ0L00KQ3JhaWcvTQpDcmFuYWNoL00KQ3JhbmUvTQpDcmFubWVyL00KQ3JhdGVyL00KQ3Jhd2ZvcmQvTQpDcmF5L00KQ3JheW9sYS9NCkNyZWF0aW9uL00KQ3JlYXRvci9NCkNyZWN5L00KQ3JlZS9EU00KQ3JlZWsvU00KQ3JlaWdodG9uL00KQ3Jlb2xlL1NNCkNyZW9uL00KQ3Jlc3NpZGEvTQpDcmVzdC9NCkNyZXRhY2VvdXMvTQpDcmV0YW4vU00KQ3JldGUvTQpDcmljaHRvbi9NCkNyaWNrL00KQ3JpbWVhL00KQ3JpbWVhbi9NCkNyaW9sbG8vTQpDcmlzY28vTQpDcmlzdGluYS9NCkNyb2F0L1NNCkNyb2F0aWEvTQpDcm9hdGlhbi9NUwpDcm9jZS9NCkNyb2NrZXR0L00KQ3JvZXN1cy9NCkNyb213ZWxsL00KQ3JvbXdlbGxpYW4vTQpDcm9uaW4vTQpDcm9ua2l0ZS9NCkNyb251cy9NCkNyb29rZXMvTQpDcm9zYnkvTQpDcm9zcy9NCkNyb3cvU00KQ3Jvd2xleS9NCkNydWNpZml4aW9uL01TCkNydWlrc2hhbmsvTQpDcnVpc2UvTQpDcnVzYWRlcydzCkNydXNvZS9NCkNydXgvTQpDcnV6L00KQ3J5cHRvem9pYy9NCkNyeXN0YWwvTQpDc29ua2EvTQpDdApDdGVzaXBob24vTQpDdGh1bGh1L00KQ3UvTQpDdWJhL00KQ3ViYW4vU00KQ3VjaHVsYWluL00KQ3Vpc2luYXJ0L00KQ3VsYmVydHNvbi9NCkN1bGxlbi9NCkN1bWJlcmxhbmQvTQpDdW1taW5ncy9NCkN1bmFyZC9NCkN1bm5pbmdoYW0vTQpDdXBpZC9NCkN1cmFjYW8vTQpDdXJpZS9NCkN1cml0aWJhL00KQ3Vycmllci9NCkN1cnJ5L1JNCkN1cnQvTQpDdXJ0aXMvTQpDdXN0ZXIvTQpDdXZpZXIvTQpDdXpjby9NCkN5YmVsZS9NCkN5Y2xhZGVzL00KQ3ljbG9wZXMvTQpDeWNsb3BzL00KQ3lnbnVzL00KQ3ltYmVsaW5lL00KQ3ludGhpYS9NCkN5cHJpYW4vTQpDeXByaW90L01TCkN5cHJ1cy9NCkN5cmFuby9NCkN5cmlsL00KQ3lyaWxsaWMvTQpDeXJ1cy9NCkN6ZWNoL00KQ3plY2hvc2xvdmFrCkN6ZWNob3Nsb3Zha2lhL00KQ3plY2hvc2xvdmFraWFuL1NNCkN6ZWNocwpDemVybnkvTQpEL00KREEvTQpEQVIKREFUL00KREJNUy9NCkRDL00KREQvTQpERFMvTQpERFQvUwpERQpERUEKREVDL1NECkRICkRIUwpESQpESgpETUNBCkRNRC9NCkRNWgpETkEvTQpET0EKRE9CCkRPRApET0UKRE9TL00KRE9UCkRQL1NNCkRQVApEU1QKRFRQCkRVSQpEVkQKRFZSL1NNCkRXSQpEYWNoYXUvTQpEYWNyb24vU00KRGFkYS9NCkRhZGFpc20vTQpEYWVkYWx1cy9NCkRhZ3VlcnJlL00KRGFnd29vZC9NCkRhaG9tZXkvTQpEYWltbGVyL00KRGFpc3kvTQpEYWthci9NCkRha290YS9TTQpEYWtvdGFuL00KRGFsYWkKRGFsZS9NCkRhbGV5L00KRGFsaS9NCkRhbGlhbi9NCkRhbGxhcy9NCkRhbG1hdGlhL00KRGFsbWF0aWFuL1NNCkRhbHRvbi9NCkRhbWFzY3VzL00KRGFtZS9NTgpEYW1pYW4vTQpEYW1pZW4vTQpEYW1pb24vTQpEYW1vY2xlcy9NCkRhbW9uL00KRGFuL00KRGFuYS9NCkRhbmFlL00KRGFuZS9TTQpEYW5lbGF3L00KRGFuZ2VyZmllbGQvTQpEYW5pYWwvTQpEYW5pZWwvU00KRGFuaWVsbGUvTQpEYW5pZWxzL00KRGFuaXNoL00KRGFubmllL00KRGFubnkvTQpEYW5vbmUvTQpEYW50ZS9NCkRhbnRvbi9NCkRhbnViZS9NCkRhbnViaWFuL00KRGFwaG5lL00KRGFyYnkvTQpEYXJjeS9NCkRhcmRhbmVsbGVzL00KRGFyZS9NCkRhcmVuL00KRGFyZnVyL00KRGFyaW4vTQpEYXJpby9NCkRhcml1cy9NCkRhcmplZWxpbmcvTQpEYXJsYS9NCkRhcmxlbmUvTQpEYXJsaW5nL00KRGFybmVsbC9NCkRhcnJlbC9NCkRhcnJlbGwvTQpEYXJyZW4vTQpEYXJyaW4vTQpEYXJyb3cvTQpEYXJyeWwvTQpEYXJ0aC9NCkRhcnRtb29yL00KRGFydG1vdXRoL00KRGFydm9uL00KRGFyd2luL00KRGFyd2luaWFuL00KRGFyd2luaXNtL1NNCkRhcndpbmlzdApEYXJ5bC9NCkRhdGFtYXRpb24KRGF1Z2hlcnR5L00KRGF1bWllci9NCkRhdmFvL00KRGF2ZS9NCkRhdmVucG9ydC9NCkRhdmlkL01TCkRhdmlkc29uL00KRGF2aWVzL00KRGF2aXMvTQpEYXZ5L1NNCkRhd2VzL00KRGF3a2lucwpEYXduL00KRGF3c29uL00KRGF5L00KRGF5YW4KRGF5dG9uL00KRGVHZW5lcmVzL00KRGVhZGhlYWQvTQpEZWFuL00KRGVhbmEvTQpEZWFuZHJlL00KRGVhbm4vTQpEZWFubmEvTQpEZWFubmUvTQpEZWF0aC9NCkRlYmJpZS9NCkRlYmJ5L00KRGViaWFuL00KRGVib3JhL00KRGVib3JhaC9NCkRlYm91aWxsZXQvTQpEZWJyYS9NCkRlYnMvTQpEZWJ1c3N5L00KRGVjL00KRGVjYWxvZ3VlL00KRGVjYXR1ci9NCkRlY2NhL00KRGVjY2FuL00KRGVjZW1iZXIvU00KRGVja2VyL00KRGVkZWtpbmQvTQpEZWUvTQpEZWVuYS9NCkRlZXJlL00KRGVmb2UvTQpEZWdhcy9NCkRlaWRyZS9NCkRlaW1vcy9NCkRlaXJkcmUvTQpEZWl0eQpEZWplc3VzL00KRGVsL00KRGVsYWNyb2l4L00KRGVsYWNydXovTQpEZWxhbmV5L00KRGVsYW5vL00KRGVsYXdhcmUvTVMKRGVsYXdhcmVhbi9TTQpEZWxiZXJ0L00KRGVsZW9uL00KRGVsZ2Fkby9NCkRlbGhpL00KRGVsaWEvTQpEZWxpYmVzL00KRGVsaWNpb3VzL00KRGVsaWxhaC9NCkRlbGlsYWhzCkRlbGl1cy9NCkRlbGwvTQpEZWxsYS9NCkRlbG1hci9NCkRlbG1hcnZhL00KRGVsbWVyL00KRGVsbW9uaWNvL00KRGVsb3Jlcy9NCkRlbG9yaXMvTQpEZWxwaGkvTQpEZWxwaGljL00KRGVscGhpbnVzL00KRGVsdGEvTQpEZW0vRwpEZW1hdmVuZC9NCkRlbWVyb2wvTQpEZW1ldGVyL00KRGVtZXRyaXVzL00KRGVtaW5nL00KRGVtb2NyYXQvU00KRGVtb2NyYXRpYwpEZW1vY3JpdHVzL00KRGVtb3N0aGVuZXMvTQpEZW1wc2V5L00KRGVuYS9NCkRlbmFsaQpEZW5lYi9NCkRlbmVib2xhL00KRGVuZy9NCkRlbmlzL00KRGVuaXNlL00KRGVubWFyay9NCkRlbm5pcy9NCkRlbm55L00KRGVudmVyL00KRGVvbi9NCkRlcHAvTQpEZXJieS9NCkRlcmVrL00KRGVyaWNrL00KRGVybW90L00KRGVycmljay9NCkRlcnJpZGEvTQpEZXNjYXJ0ZXMvTQpEZXNkZW1vbmEvTQpEZXNpcmVlL00KRGVzbW9uZC9NCkRldHJvaXQvTQpEZXV0ZXJvbm9teS9NCkRldmFuYWdhcmkvTQpEZXZpL00KRGV2aW4vTQpEZXZvbi9NCkRldm9uaWFuL00KRGV3YXIvTQpEZXdheW5lL00KRGV3ZXkvTQpEZXdpdHQvTQpEZXhlZHJpbmUvTQpEZXh0ZXIvTQpEaGFrYS9NCkRoYXVsYWdpcmkvTQpEaS9TTQpEaUNhcHJpby9NCkRpTWFnZ2lvL00KRGlhZ2hpbGV2L00KRGlhbC9NCkRpYW5hL00KRGlhbmUvTQpEaWFubi9NCkRpYW5uYS9NCkRpYW5uZS9NCkRpYXMKRGlhc3BvcmEvTVMKRGljay9YTQpEaWNrZW5zL00KRGlja2Vuc2lhbgpEaWNrZXJzb24vTQpEaWNraW5zb24vTQpEaWNrc29uL00KRGljdGFwaG9uZS9TTQpEaWRlcm90L00KRGlkby9NCkRpZHJpa3Nvbi9NCkRpZWZlbmJha2VyL00KRGllZ28vTQpEaWVtL00KRGlldHJpY2gvTQpEaWprc3RyYS9NCkRpam9uL00KRGlsYmVydC9NUwpEaWxsYXJkL00KRGlsbGluZ2VyL00KRGlsbG9uL00KRGluYS9NCkRpbmFoL00KRGluby9NCkRpb2NsZXRpYW4vTQpEaW9nZW5lcy9NCkRpb24vTQpEaW9ubmUvTQpEaW9ueXNpYW4vTQpEaW9ueXN1cy9NCkRpb3BoYW50aW5lL00KRGlvci9NCkRpcHBlci9NCkRpcgpEaXJhYy9NCkRpcmljaGxldC9NCkRpcmsvTQpEaXMvTQpEaXNuZXkvTQpEaXNuZXlsYW5kL00KRGlzcmFlbGkvTQpEaXZpbmUvTQpEaXdhbGkvTQpEaXgvTQpEaXhpZS9NCkRpeGllY3JhdC9NCkRpeGllbGFuZC9TTQpEaXhvbi9NCkRqaWJvdXRpL00KRG1pdHJpL00KRG5lcHJvcGV0cm92c2svTQpEbmllc3Rlci9NCkRvYmJpbi9NCkRvYmVybWFuL00KRG9icm8vTQpEb2N0b3IKRG9jdG9yb3cvTQpEb2RnZS9NCkRvZGdzb24vTQpEb2RvbWEvTQpEb2Rzb24vTQpEb2UvTQpEb2hhL00KRG9sYnkvTQpEb2xlL00KRG9sbGllL00KRG9sbHkvTQpEb2xvcmVzL00KRG9tZXNkYXkvTQpEb21pbmdvL00KRG9taW5ndWV6L00KRG9taW5pYy9NCkRvbWluaWNhL00KRG9taW5pY2FuL01TCkRvbWluaWNrL00KRG9taW5pb24KRG9taW5pcXVlL00KRG9taXRpYW4vTQpEb24vU00KRG9uYS9NCkRvbmFodWUvTQpEb25hbGQvTQpEb25hbGRzb24vTQpEb25hdGVsbG8vTQpEb25ldHNrL00KRG9uaXpldHRpL00KRG9ubi9NUgpEb25uYS9NCkRvbm5lL00KRG9ubmVsbC9NCkRvbm5lci9NCkRvbm5pZS9NCkRvbm55L00KRG9ub3Zhbi9NCkRvb2xleS9NCkRvb2xpdHRsZS9NCkRvb25lc2J1cnkvTQpEb3BwbGVyL00KRG9yYS9NCkRvcmNhcy9NCkRvcmVlbi9NCkRvcmlhbi9NCkRvcmljL00KRG9yaXMvTQpEb3JpdG9zL00KRG9yb3RoZWEvTQpEb3JvdGh5L00KRG9yc2V0L00KRG9yc2V5L00KRG9ydGh5L00KRG9ydG11bmQvTQpEb3N0b2V2c2t5L00KRG90L00KRG90c29uL00KRG91YWxhL00KRG91YXkvTQpEb3VibGVkYXkvTQpEb3VnL00KRG91Z2xhcy9NCkRvdWdsYXNzL00KRG91cm8vTQpEb3Zlci9NCkRvdy9NCkRvd25zL00KRG93bnkvTQpEb3lsZS9NCkRyCkRyYWNvL00KRHJhY29uaWFuL00KRHJhY3VsYS9NCkRyYWtlL00KRHJhbWFtaW5lL1NNCkRyYW1idWllL00KRHJhbm8vTQpEcmF2aWRpYW4vTQpEcmVpc2VyL00KRHJlc2Rlbi9NCkRyZXcvTQpEcmV5ZnVzL00KRHJpc3Rhbi9NCkRyb3Bib3gvTQpEcnVkZ2UvTQpEcnlkZW4vTQpEc2NodWJiYS9NCkR1CkR1UG9udC9NCkR1YW5lL00KRHViYWkvTQpEdWJjZWsvTQpEdWJoZS9NCkR1Ymxpbi9NCkR1YnJvdm5pay9NCkR1Y2hhbXAvTQpEdWRsZXkvTQpEdWZmeS9NCkR1aXNidXJnL00KRHVrZS9NCkR1bGxlcy9NCkR1bHV0aC9NCkR1bWFzL00KRHVtYmxlZG9yZS9NCkR1bWJvL00KRHVtcHN0ZXIvTQpEdW5hbnQvTQpEdW5iYXIvTQpEdW5jYW4vTQpEdW5kZWUKRHVuZWRpbi9NCkR1bmtpcmsvTQpEdW5sYXAvTQpEdW5uL00KRHVubmUvTQpEdXJhY2VsbC9NCkR1cmFuL00KRHVyYW50L00KRHVyYW50ZS9NCkR1cmJhbi9NCkR1cmVyL00KRHVyZXgvTQpEdXJoYW0vTVMKRHVya2hlaW0vTQpEdXJvYy9NCkR1cm9jaGVyL00KRHVzZS9NCkR1c2hhbmJlL00KRHVzc2VsZG9yZi9NCkR1c3RidXN0ZXIvTQpEdXN0aW4vTQpEdXN0eS9NCkR1dGNoL00KRHV0Y2htYW4vTQpEdXRjaG1lbi9NCkR1dGNod29tYW4KRHV2YWxpZXIvTQpEdmluYS9NCkR2b3Jhay9NCkR3YXluZS9NCkR3aWdodC9NCkR5L00KRHllci9NCkR5bGFuL00KRHlzb24vTQpEemVyemhpbnNreS9NCkR6dW5nYXJpYS9NCkUvU00KRUMKRUNHL00KRUNNQVNjcmlwdC9NCkVEUC9NCkVEVApFRUMvTQpFRUcvTQpFRU8KRUVPQwpFRkwKRUZUCkVLRy9NCkVMRi9NCkVNCkVNVApFTkUvTQpFT0UKRVBBL00KRVIKRVJBCkVTRS9NCkVTTApFU1AvTQpFU1BOL00KRVNSCkVTVC9NCkVUCkVUQQpFVEQKRVUKRVVMQS9TCkVha2lucy9NCkVhcmhhcnQvTQpFYXJsL00KRWFybGUvTQpFYXJsZW5lL00KRWFybGluZS9NCkVhcm5lc3QvTQpFYXJuZXN0aW5lL00KRWFybmhhcmR0L00KRWFycC9NCkVhc3QvU1pNUgpFYXN0ZXIvTQpFYXN0ZXJuL1IKRWFzdG1hbi9NCkVhc3R3b29kL00KRWF0b24vTQpFYmVuL00KRWJlbmVlemVyL00KRWJlcnQvTQpFYm9sYS9NCkVib25pY3MvTQpFYm9ueS9NCkVicm8vTQpFY2NsZXNpYXN0ZXMvTQpFY28vTQpFY3N0YXN5CkVjdWFkb3IvTQpFY3VhZG9yYW4vU00KRWN1YWRvcmVhbgpFY3VhZG9yaWFuL1NNCkVkL01OWApFZGFtL1NNCkVkZGEvTQpFZGRpZS9NCkVkZGluZ3Rvbi9NCkVkZHkvTQpFZGVuL00KRWRnYXIvTQpFZGdhcmRvL00KRWRpbmJ1cmdoL00KRWRpc29uL00KRWRpdGgvTQpFZG1vbmQvTQpFZG1vbnRvbi9NCkVkbXVuZC9NCkVkbmEvTQpFZHNlbC9NCkVkdWFyZG8vTQpFZHdhcmQvU00KRWR3YXJkaWFuL00KRWR3YXJkby9NCkVkd2FyZHMvTQpFZHdpbi9NCkVkd2luYS9NCkVleW9yZS9NCkVmZmllL00KRWZyYWluL00KRWZyZW4vTQpFZ2dvL00KRWd5cHQvTQpFZ3lwdGlhbi9NUwpFZ3lwdG9sb2d5L00KRWhyZW5iZXJnL00KRWhybGljaC9NCkVpY2htYW5uL00KRWlmZmVsL00KRWlsZWVuL00KRWluc3RlaW4vTVMKRWlyZS9NCkVpc2VuaG93ZXIvTQpFaXNlbnN0ZWluL00KRWlzbmVyL00KRWxhaW5lL00KRWxhbS9NCkVsYW5vci9NCkVsYXN0b3BsYXN0L00KRWxiYS9NCkVsYmUvTQpFbGJlcnQvTQpFbGJydXMvTQpFbGRvbi9NCkVsZWFub3IvTQpFbGVhemFyL00KRWxlY3RyYS9NCkVsZW5hL00KRWxnYXIvTQpFbGkvTQpFbGlhcy9NCkVsaWphaC9NCkVsaW5vci9NCkVsaW90L00KRWxpc2EvTQpFbGlzYWJldGgvTQpFbGlzZS9NCkVsaXNlby9NCkVsaXNoYS9NCkVsaXphL00KRWxpemFiZXRoL00KRWxpemFiZXRoYW4vU00KRWxsYS9NCkVsbGVuL00KRWxsZXNtZXJlL00KRWxsaWUvTQpFbGxpbmd0b24vTQpFbGxpb3QvTQpFbGxpb3R0L00KRWxsaXMvTQpFbGxpc29uL00KRWxtYS9NCkVsbWVyL00KRWxtby9NCkVsbmF0aC9NCkVsbm9yYS9NCkVsb2hpbS9NCkVsb2lzZS9NCkVsb3kvTQpFbHJveS9NCkVsc2EvTQpFbHNpZS9NCkVsc2lub3JlL00KRWx0YW5pbi9NCkVsdG9uL00KRWx1bC9NCkVsdmEvTQpFbHZpYS9NCkVsdmluL00KRWx2aXJhL00KRWx2aXMvTQpFbHdheS9NCkVsd29vZC9NCkVseXNlZS9NCkVseXNpYW4vTQpFbHlzaXVtL1NNCkVtYWNzL00KRW1hbnVlbC9NCkVtZXJzb24vTQpFbWVyeS9NCkVtaWwvTQpFbWlsZS9NCkVtaWxpYS9NCkVtaWxpby9NCkVtaWx5L00KRW1pbmVtL00KRW1pbmVuY2UKRW1tYS9NCkVtbWFudWVsL00KRW1tZXR0L00KRW1teS9NCkVtb3J5L00KRW5jYXJ0YS9NCkVuZHltaW9uL00KRW5nL00KRW5nZWxzL00KRW5nbGFuZC9NCkVuZ2xpc2gvTVJTCkVuZ2xpc2htYW4vTQpFbmdsaXNobWVuL00KRW5nbGlzaHdvbWFuL00KRW5nbGlzaHdvbWVuL00KRW5pZC9NCkVuaWYvTQpFbml3ZXRvay9NCkVua2lkdS9NCkVub2NoL00KRW5vcy9NCkVucmljby9NCkVucmlxdWUvTQpFbnJvbi9NCkVudGVycHJpc2UvTQpFb2NlbmUvTQpFcGNvdC9NCkVwaGVzaWFuL01TCkVwaGVzdXMvTQpFcGhyYWltL00KRXBpY3RldHVzL00KRXBpY3VyZWFuL00KRXBpY3VydXMvTQpFcGltZXRoaXVzL00KRXBpcGhhbnkvU00KRXBpc2NvcGFsCkVwaXNjb3BhbGlhbi9NUwpFcGlzdGxlCkVwc29tL00KRXBzb24vTQpFcHN0ZWluL00KRXF1dWxldXMvTQpFci9NCkVyYXNtdXMvTQpFcmF0by9NCkVyYXRvc3RoZW5lcy9NCkVyZWJ1cy9NCkVyZWN0b3IvTQpFcmV3aG9uL00KRXJoYXJkL00KRXJpYy9NCkVyaWNhL00KRXJpY2gvTQpFcmljay9NCkVyaWNrYS9NCkVyaWNrc29uL00KRXJpZGFudXMvTQpFcmllL00KRXJpay9NCkVyaWthL00KRXJpbi9NCkVyaXMvTVMKRXJpdHJlYS9NCkVyaXRyZWFuL1NNCkVybGVubWV5ZXIvTQpFcm1hL00KRXJuYS9NCkVybmVzdC9NCkVybmVzdGluZS9NCkVybmVzdG8vTQpFcm5pZS9NCkVybnN0L00KRXJvcy9NUwpFcnJvbC9NCkVyc2UvTQpFcnZJbi9NCkVyd2luL00KRXNhdS9NCkVzY2hlci9NCkVzY2hlcmljaGlhL00KRXNjb25kaWRvCkVza2ltby9NUwpFc21lcmFsZGEvTQpFc3BlcmFudG8vTQpFc3BlcmFuemEvTQpFc3Bpbm96YS9NCkVzcS9NCkVzcXVpcmUvTVMKRXNzZW4vTQpFc3NlbmUvTQpFc3NlcXVpYm8vTQpFc3NleC9NCkVzc2llL00KRXN0YWJsaXNobWVudApFc3RlYmFuL00KRXN0ZWxhL00KRXN0ZWxsYS9NCkVzdGVsbGUvTQpFc3Rlci9NCkVzdGVyaGF6eS9NCkVzdGVzL00KRXN0aGVyL00KRXN0b25pYS9NCkVzdG9uaWFuL1NNCkVzdHJhZGEvTQpFdGhhbi9NCkV0aGVsL00KRXRoZWxyZWQvTQpFdGhlcm5ldC9NCkV0aGlvcGlhL00KRXRoaW9waWFuL1NNCkV0bmEvTQpFdG9uL00KRXRydXJpYS9NCkV0cnVzY2FuL00KRXR0YS9NCkV1L00KRXVjaGFyaXN0L01TCkV1Y2hhcmlzdGljCkV1Y2xpZC9NCkV1Z2VuZS9NCkV1Z2VuaWEvTQpFdWdlbmllL00KRXVnZW5pby9NCkV1bGEvTQpFdWxlci9NCkV1bWVuaWRlcy9NCkV1bmljZS9NCkV1cGhyYXRlcy9NCkV1cgpFdXJhc2lhL00KRXVyYXNpYW4vTVMKRXVyaXBpZGVzL00KRXVyb2RvbGxhci9TTQpFdXJvcGEvTQpFdXJvcGUvTQpFdXJvcGVhbi9NUwpFdXJ5ZGljZS9NCkV1c3RhY2hpYW4vTQpFdXRlcnBlL00KRXZhL00KRXZhbi9TTQpFdmFuZ2VsaWNhbApFdmFuZ2VsaW5hL00KRXZhbmdlbGluZS9NCkV2YW5nZWxpc3QvTQpFdmFucy9NCkV2YW5zdmlsbGUvTQpFdmUvTQpFdmVseW4vTQpFdmVua2kvTQpFdmVyUmVhZHkvTQpFdmVyZXN0L00KRXZlcmV0dC9NCkV2ZXJldHRlL00KRXZlcmdsYWRlcy9NCkV2ZXJ0L00KRXZpYW4vTQpFdml0YS9NCkV3aW5nL00KRXhjYWxpYnVyL00KRXhjZWRyaW4vTQpFeGNlbGxlbmN5L1NNCkV4Y2hlcXVlcgpFeGVyY3ljbGUvTQpFeG9jZXQvTQpFeG9kdXMvTQpFeHhvbi9NCkV5Y2svTQpFeXJlL00KRXlzZW5jay9NCkV6ZWtpZWwvTQpFenJhL00KRi9NRApGQUEKRkFRL1NNCkZCSS9NCkZDQwpGRApGREEKRkRJQy9NCkZEUi9NCkZIQS9NCkZJQ0EvTQpGSUZPCkZMCkZNL1NNCkZOTUEvTQpGT0ZMCkZPUlRSQU4vTQpGUE8KRlNGL00KRlNMSUMKRlRDCkZVRC9TCkZXRApGV0lXCkZZCkZZSQpGYWJlcmdlL00KRmFiaWFuL01TCkZhY2Vib29rL00KRmFlcm9lL00KRmFmbmlyL00KRmFnaW4vTQpGYWhkL00KRmFocmVuaGVpdC9NCkZhaXJiYW5rcy9NCkZhaXNhbC9NCkZhaXNhbGFiYWQvTQpGYWl0aC9NCkZhbGFzaGEvTQpGYWxrbGFuZC9TTQpGYWxrbGFuZHMvTQpGYWxsb3BpYW4vTQpGYWxzdGFmZi9NCkZhbHdlbGwvTQpGYW5uaWUvTQpGYW5ueS9NCkZhcmFkYXkvTQpGYXJnby9NCkZhcmxleS9NCkZhcm1lci9NCkZhcnJhZ3V0L00KRmFycmFraGFuL00KRmFycmVsbC9NCkZhcnJvdy9NCkZhcnNpL00KRmFzc2JpbmRlci9NCkZhdGFoL00KRmF0ZXMvTQpGYXRoZXIvU00KRmF0aW1hL00KRmF0aW1pZC9NCkZhdWxrbmVyL00KRmF1bGtuZXJpYW4vTQpGYXVudGxlcm95L00KRmF1c3QvTQpGYXVzdGlhbi9NCkZhdXN0aW5vL00KRmF1c3R1cy9NCkZhd2tlcy9NCkZheS9NCkZheWUvTQpGZS9NCkZlYi9NCkZlYnJ1YXJ5L1NNCkZlZC9TTQpGZWRFeC9NCkZlZGVyYWwvTVMKRmVkZXJhbGlzdC9NCkZlZGVyaWNvL00KRmVkcy9NCkZlbGVjaWEvTQpGZWxpY2UvTQpGZWxpY2lhL00KRmVsaWNpdHkvTQpGZWxpcGUvTQpGZWxpeC9NCkZlbGxpbmkvTQpGZW5pYW4vTQpGZXJiZXIvTQpGZXJkaW5hbmQvTQpGZXJndXMvTQpGZXJndXNvbi9NCkZlcmxpbmdoZXR0aS9NCkZlcm1hdC9NCkZlcm1pL00KRmVybi9NCkZlcm5hbmRlei9NCkZlcm5hbmRvL00KRmVycmFyaS9NCkZlcnJhcm8vTQpGZXJyZWxsL00KRmVycmlzL00KRmV5bm1hbi9NCkZlei9NCkZpYXQvTQpGaWJlcmdsYXMvTQpGaWJvbmFjY2kvTQpGaWNodGUvTQpGaWRlbC9NCkZpZG8vTQpGaWVsZGluZy9NCkZpZWxkcy9NCkZpZ2Fyby9NCkZpZ3Vlcm9hL00KRmlqaS9NCkZpamlhbi9NUwpGaWxpcGluby9NUwpGaWxsbW9yZS9NCkZpbG9mYXgvTQpGaW5jaC9NCkZpbmxhbmQvTQpGaW5sZXkvTQpGaW5uL1NNCkZpbm5ib2dhZG90dGlyL00KRmlubmVnYW4vTQpGaW5uaXNoL00KRmlvbmEvTQpGaXJlZm94L00KRmlyZXN0b25lL00KRmlzY2hlci9NCkZpc2hlci9NCkZpc2svTQpGaXRjaC9NCkZpdHpnZXJhbGQvTQpGaXR6cGF0cmljay9NCkZpdHpyb3kvTQpGaXplYXUvTQpGbGEKRmxhbmFnYW4vTQpGbGFuZGVycy9NCkZsYXRoZWFkCkZsYXR0L00KRmxhdWJlcnQvTQpGbGVpc2NoZXIvTQpGbGVtaW5nL00KRmxlbWlzaC9NCkZsZXRjaGVyL00KRmxpbnQvTQpGbGludHN0b25lcy9NCkZsby9NCkZsb3JhL00KRmxvcmVuY2UvTQpGbG9yZW50aW5lL00KRmxvcmVzL00KRmxvcmlkYS9NCkZsb3JpZGFuL00KRmxvcmlkaWFuL1NNCkZsb3JpbmUvTQpGbG9yc2hlaW0vTQpGbG9yeS9NCkZsb3NzaWUvTQpGbG93ZXJzL00KRmxveWQvTQpGbHlubi9NCkZtL00KRm9jaC9NCkZva2tlci9NCkZvbGV5L00KRm9sZ2Vycy9NCkZvbHNvbS9NCkZvbWFsaGF1dC9NCkZvbmRhL00KRm9vc2JhbGwvTQpGb3JiZXMvTQpGb3JkL00KRm9yZW1hbi9NCkZvcmVzdC9NUgpGb3Jlc3Rlci9NCkZvcm1pY2EvTVMKRm9ybW9zYS9NCkZvcm1vc2FuL00KRm9ycmVzdC9NCkZvcnN0ZXIvTQpGb3J0YWxlemEvTQpGb3NzZS9NCkZvc3Rlci9NCkZvdG9tYXQvTQpGb3VjYXVsdC9NCkZvdXJpZXIvTQpGb3VybmV5cm9uL00KRm91cnRoCkZvd2xlci9NCkZveC9NUwpGci9NRApGcmFnb25hcmQvTQpGcmFuL00KRnJhbmNlL1NNCkZyYW5jZXMvTQpGcmFuY2VzY2EvTQpGcmFuY2luZS9NCkZyYW5jaXMvTQpGcmFuY2lzY2EvTQpGcmFuY2lzY2FuL01TCkZyYW5jaXNjby9NCkZyYW5jay9NCkZyYW5jby9NCkZyYW5jb2lzL00KRnJhbmNvaXNlL00KRnJhbmNvcGhpbGUKRnJhbmdsYWlzL00KRnJhbmsvU00KRnJhbmtlbC9NCkZyYW5rZW5zdGVpbi9NCkZyYW5rZm9ydC9NCkZyYW5rZnVydC9NUgpGcmFua2Z1cnRlci9NCkZyYW5raWUvTQpGcmFua2lzaApGcmFua2xpbi9NCkZyYW5rcy9NCkZyYW5ueS9NCkZyYW56L00KRnJhc2VyL00KRnJhdS9NTgpGcmF1bGVpbgpGcmF6aWVyL00KRnJlZC9NCkZyZWRhL00KRnJlZGRpZS9NCkZyZWRkeS9NCkZyZWRlcmljL00KRnJlZGVyaWNrL00KRnJlZGVyaWN0b24vTQpGcmVkcmljL00KRnJlZHJpY2svTQpGcmVlbWFuL00KRnJlZW1hc29uL1NNCkZyZWVtYXNvbnJ5L1NNCkZyZWV0b3duL00KRnJlaWRhL00KRnJlbW9udC9NCkZyZW5jaC9NUwpGcmVuY2htYW4vTQpGcmVuY2htZW4vTQpGcmVuY2h3b21hbi9NCkZyZW5jaHdvbWVuL00KRnJlb24vTQpGcmVzbmVsL00KRnJlc25vL00KRnJldWQvTQpGcmV1ZGlhbi9NCkZyZXkvTQpGcmV5YS9NCkZyaS9NCkZyaWRheS9TTQpGcmllZGEvTQpGcmllZGFuL00KRnJpZWRtYW4vTQpGcmllbmQvU00KRnJpZ2dhL00KRnJpZ2lkYWlyZS9NCkZyaXNiZWUvTQpGcmlzY28vTQpGcmlzaWFuL01TCkZyaXRvL00KRnJpdHovTQpGcm9iaXNoZXIvTQpGcm9kby9NCkZyb2lzc2FydC9NCkZyb21tL00KRnJvbmRlL00KRnJvbnRlbmFjL00KRnJvc3QvTQpGcm9zdGJlbHQvTQpGcnVuemUvTQpGcnkvTQpGcnllL00KRnVjaHMvTQpGdWVudGVzL00KRnVnZ2VyL00KRnVqaS9NCkZ1aml0c3UvTQpGdWppd2FyYS9NCkZ1aml5YW1hL00KRnVrdW9rYS9NCkZ1a3V5YW1hL00KRnVsYW5pL00KRnVsYnJpZ2h0L00KRnVsbGVyL00KRnVsbGVydG9uL00KRnVsdG9uL00KRnVuYWZ1dGkvTQpGdW5keS9NCkZ1cmllcy9NCkZ1cnR3YW5nbGVyL00KRnVzaHVuL00KRnV6aG91L00KRnV6emJ1c3Rlci9NCkcvTU5SQgpHQQpHQU8KR0FUVC9NCkdCL00KR0NDL00KR0RQL00KR0UvTQpHRUQKR0hRL00KR0h6CkdJCkdJRgpHSUdPCkdNL00KR01BVApHTU8KR01UL00KR05QL00KR05VL00KR09QL00KR1AvTQpHUEEKR1BPCkdQUwpHUFUKR1NBCkdURS9NCkdVCkdVSS9NCkdhL00KR2FibGUvTQpHYWJvbi9NCkdhYm9uZXNlL00KR2Fib3JvbmUvTQpHYWJyaWVsL00KR2FicmllbGEvTQpHYWJyaWVsbGUvTQpHYWNydXgvTQpHYWRzZGVuL00KR2FlYS9NCkdhZWwvU00KR2FlbGljL00KR2FnYXJpbi9NCkdhZ2UvTQpHYWlhL00KR2FpbC9NCkdhaW1hbi9NCkdhaW5lcy9NCkdhaW5zYm9yb3VnaC9NCkdhbGFoYWQvU00KR2FsYXBhZ29zL00KR2FsYXRlYS9NCkdhbGF0aWEvTQpHYWxhdGlhbnMvTQpHYWxheHkKR2FsYnJhaXRoL00KR2FsZS9NCkdhbGVuL00KR2FsaWJpL00KR2FsaWxlYW4vU00KR2FsaWxlZS9NCkdhbGlsZW8vTQpHYWxsL00KR2FsbGFnaGVyL00KR2FsbGVnb3MvTQpHYWxsaWMvTQpHYWxsaWNpc20vU00KR2FsbG8vTQpHYWxsb3dheS9NCkdhbGx1cC9NCkdhbG9pcy9NCkdhbHN3b3J0aHkvTQpHYWx2YW5pL00KR2FsdmVzdG9uL00KR2FtYQpHYW1heS9NCkdhbWJpYS9NCkdhbWJpYW4vU00KR2FtYmxlL00KR2Ftb3cvTQpHYW5kYWxmL00KR2FuZGhpL00KR2FuZGhpYW4vTQpHYW5lc2hhL00KR2FuZ2VzL00KR2FuZ3Rvay9NCkdhbnRyeS9NCkdhbnltZWRlL00KR2FwL00KR2FyYm8vTQpHYXJjaWEvTQpHYXJkbmVyL00KR2FyZXRoL00KR2FyZmllbGQvTQpHYXJmdW5rZWwvTQpHYXJnYW50dWEvTQpHYXJpYmFsZGkvTQpHYXJsYW5kL00KR2FybmVyL00KR2FycmV0dC9NCkdhcnJpY2svTQpHYXJyaXNvbi9NCkdhcnJ5L00KR2FydGgvTQpHYXJ2ZXkvTQpHYXJ5L00KR2FyemEvTQpHYXNjb255L00KR2Fzc2VyL00KR2FzdHJvZW50ZXJvbG9neQpHYXRlcy9NCkdhdGxpbmcvTQpHYXRvcmFkZS9NCkdhdHNieS9NCkdhdHVuL00KR2F1Z3Vpbi9NCkdhdWwvU00KR2F1bGlzaApHYXVzcy9NCkdhdXNzaWFuL00KR2F1dGFtYS9NCkdhdXRpZXIvTQpHYXZpbi9NCkdhd2Fpbi9NCkdheS9NCkdheWxlL00KR2F6YS9NCkdhemlhbnRlcC9NCkdkL00KR2RhbnNrL00KR2UvTQpHZWZmZW4vTQpHZWhlbm5hL00KR2VocmlnL00KR2VpZ2VyL00KR2VsYnZpZWgvTQpHZWxsZXIvTQpHZW1pbmkvTVMKR2VuL00KR2VuYS9NCkdlbmFyby9NCkdlbmUvTQpHZW5lc2lzL00KR2VuZXQvTQpHZW5ldmEvTQpHZW5ldmlldmUvTQpHZW5naGlzL00KR2Vub2EvU00KR2VudG9vL00KR2VudHJ5L00KR2VvL00KR2VvZmZyZXkvTQpHZW9yZ2UvTVMKR2VvcmdldG93bi9NCkdlb3JnZXR0ZS9NCkdlb3JnaWEvTQpHZW9yZ2lhbi9NUwpHZW9yZ2luYS9NCkdlci9NCkdlcmFsZC9NCkdlcmFsZGluZS9NCkdlcmFyZC9NCkdlcmFyZG8vTQpHZXJiZXIvTQpHZXJlL00KR2VyaXRvbC9NCkdlcm1hbi9NUwpHZXJtYW5pYy9NCkdlcm1hbnkvTQpHZXJvbmltby9NCkdlcnJ5L00KR2Vyc2h3aW4vTQpHZXJ0cnVkZS9NCkdlc3RhcG8vU00KR2V0aHNlbWFuZS9NCkdldHR5L00KR2V0dHlzYnVyZy9NCkdld3VyenRyYW1pbmVyL00KR2hhbmEvTQpHaGFuYWlhbgpHaGF0cy9NCkdoYXp2YW5pZC9NCkdoZW50L00KR2hpYmVsbGluZS9NCkdpYWNvbWV0dGkvTQpHaWFubmluaS9NCkdpYXVxdWUvTQpHaWJib24vTQpHaWJicy9NCkdpYnJhbHRhci9NUwpHaWJzb24vTQpHaWRlL00KR2lkZW9uL00KR2llbGd1ZC9NCkdpZW5haC9NCkdpbC9NCkdpbGEvTQpHaWxiZXJ0L00KR2lsYmVydG8vTQpHaWxjaHJpc3QvTQpHaWxkYS9NCkdpbGVhZC9NCkdpbGVzL00KR2lsZ2FtZXNoL00KR2lsbC9NCkdpbGxlc3BpZS9NCkdpbGxldHRlL00KR2lsbGlhbS9NCkdpbGxpYW4vTQpHaWxsaWdhbi9NCkdpbG1hbgpHaWxtb3JlL00KR2luYS9NCkdpbmdlci9NCkdpbmdyaWNoL00KR2lubnkvTQpHaW5vL00KR2luc2JlcmcvTQpHaW5zYnVyZy9NCkdpbnN1L00KR2lvcmdpb25lL00KR2lvdHRvL00KR2lvdmFubmkvTQpHaXJhdWRvdXgvTQpHaXNlbGxlL00KR2lzaC9NCkdpdEh1Yi9NCkdpdWxpYW5pL00KR2l1c2VwcGUvTQpHaXphL00KR2sKR2xhZHN0b25lL01TCkdsYWR5cy9NCkdsYXNlci9NCkdsYXNnb3cvTQpHbGFzcy9NCkdsYXN0b25idXJ5L00KR2xhc3dlZ2lhbi9TTQpHbGF4by9NCkdsZWFzb24vTQpHbGVuL00KR2xlbmRhL00KR2xlbmRhbGUKR2xlbmxpdmV0L00KR2xlbm4vTQpHbGVubmEvTQpHbG9yaWEvTQpHbG91Y2VzdGVyL00KR2xvdmVyL00KR25vc3RpYy9NCkdub3N0aWNpc20vTQpHbnVQRwpHb2EvTQpHb2JpL00KR29kL00KR29kYXJkL00KR29kZGFyZC9NCkdvZGVsL00KR29kaGVhZC9NCkdvZGl2YS9NCkdvZG90L00KR29kc3BlZWQvU00KR29kdGhhYWIvTQpHb2R1bm92L00KR29kemlsbGEvTQpHb2ViYmVscy9NCkdvZXJpbmcvTQpHb2V0aGFscy9NCkdvZXRoZS9NCkdvZmYvTQpHb2cvTQpHb2dvbC9NCkdvaWFuaWEvTQpHb2xhbi9NCkdvbGNvbmRhL00KR29sZGEvTQpHb2xkYmVyZy9NCkdvbGRlbi9NCkdvbGRpZS9NCkdvbGRpbG9ja3MvTQpHb2xkaW5nL00KR29sZG1hbi9NCkdvbGRzbWl0aC9NCkdvbGR3YXRlci9NCkdvbGR3eW4vTQpHb2xnaS9NCkdvbGdvdGhhL00KR29saWF0aC9NCkdvbWV6L00KR29tb3JyYWgvTQpHb21wZXJzL00KR29tdWxrYS9NCkdvbmR3YW5hbGFuZC9NCkdvbnphbGVzL00KR29uemFsZXovTQpHb256YWxvL00KR29vZC9NCkdvb2RhbGwvTQpHb29kbWFuL00KR29vZHJpY2gvTQpHb29kd2lsbC9NCkdvb2R3aW4vTQpHb29keWVhci9NCkdvb2dsZS9NCkdvb2xhZ29uZy9NCkdvcGhlcgpHb3JiYWNoZXYvTQpHb3JkaWFuL00KR29yZGltZXIvTQpHb3Jkb24vTQpHb3JlL00KR29yZW4vTQpHb3JleS9NCkdvcmdhcy9NCkdvcmdvbi9NCkdvcmdvbnpvbGEvTQpHb3JreS9NCkdvc3BlbC9NUwpHb3RlYm9yZy9NCkdvdGgvTQpHb3RoYW0vTQpHb3RoaWMvTVMKR290aHMKR291ZGEvU00KR291bGQvTQpHb3Vub2QvTQpHb3Zlcm5vcgpHb3lhL00KR3IvQgpHcmFibGUvTQpHcmFjY2h1cy9NCkdyYWNlL00KR3JhY2VsYW5kL00KR3JhY2llL00KR3JhY2llbGEvTQpHcmFkeS9NCkdyYWZmaWFzL00KR3JhZnRvbi9NCkdyYWhhbS9NCkdyYWhhbWUvTQpHcmFpbC9NCkdyYW1teS9NCkdyYW1waWFucy9NCkdyYW5hZGEvTQpHcmFudC9NCkdyYXNzL00KR3JhdmVzL00KR3JheS9NCkdyZWNpYW4vTQpHcmVlY2UvTQpHcmVlay9TTQpHcmVlbGV5L00KR3JlZW4vU00KR3JlZW5lL00KR3JlZW5sYW5kL00KR3JlZW5sYW5kaWMKR3JlZW5wZWFjZS9NCkdyZWVuc2Jvcm8vTQpHcmVlbnNsZWV2ZXMvTQpHcmVlbnNwYW4vTQpHcmVlbndpY2gvTQpHcmVlci9NCkdyZWcvTQpHcmVnZy9NCkdyZWdvcmlhbi9NCkdyZWdvcmlvL00KR3JlZ29yeS9NCkdyZW5hZGEvTQpHcmVuYWRpYW4vTVMKR3JlbmFkaW5lcy9NCkdyZW5kZWwvTQpHcmVub2JsZS9NCkdyZXNoYW0vTQpHcmV0YS9NCkdyZXRjaGVuL00KR3JldGVsL00KR3JldHpreS9NCkdyZXkvTQpHcmllZy9NCkdyaWZmaW4vTQpHcmlmZml0aC9NCkdyaW1lcy9NCkdyaW1tL00KR3JpbmNoL00KR3Jpcy9NCkdyb215a28vTQpHcm9waXVzL00KR3Jvc3MvTQpHcm9zei9NCkdyb3RpdXMvTQpHcm92ZXIvTQpHcm96bnkKR3J1bW1hbi9NCkdydW5keS9NCkdydW5ld2FsZC9NCkdydXMvTQpHcnV5ZXJlL1NNCkd1YWRhbGFqYXJhL00KR3VhZGFsY2FuYWwvTQpHdWFkYWxxdWl2aXIvTQpHdWFkYWx1cGUvTQpHdWFkZWxvdXBlL00KR3VhbGxhdGlyaS9NCkd1YW0vTQpHdWFtYW5pYW4KR3Vhbmd6aG91L00KR3VhbnRhbmFtby9NCkd1YXJhbmkvTQpHdWFybmllcmkvTQpHdWF0ZW1hbGEvTQpHdWF0ZW1hbGFuL01TCkd1YXlhcXVpbC9NCkd1Y2NpL00KR3VlbHBoL00KR3Vlcm5zZXkvTVMKR3VlcnJhL00KR3VlcnJlcm8vTQpHdWV2YXJhL00KR3VnZ2VuaGVpbS9NCkd1aWFuYS9NCkd1aWRvCkd1aWxsZXJtby9NCkd1aW5lYS9NCkd1aW5lYW4vTVMKR3VpbmV2ZXJlL00KR3Vpbm5lc3MvTQpHdWl5YW5nL00KR3Vpem90L00KR3VqYXJhdC9NCkd1amFyYXRpL00KR3VqcmFud2FsYS9NCkd1bGxhaC9NCkd1bGxpdmVyL00KR3VtYmVsL00KR3VudGhlci9NCkd1b2ZlbmcvTQpHdXB0YS9NCkd1cmtoYS9NCkd1cy9NCkd1c3Rhdi9NCkd1c3Rhdm8vTQpHdXN0YXZ1cy9NCkd1dGVuYmVyZy9NCkd1dGhyaWUvTQpHdXRpZXJyZXovTQpHdXkvTQpHdXlhbmEvTQpHdXlhbmVzZS9NCkd1em1hbi9NCkd3YWxpb3IvTQpHd2VuL00KR3dlbmRvbGluZS9NCkd3ZW5kb2x5bi9NCkd3eW4vTQpHeXBzeS9TTQpIL00KSEJPL00KSERECkhETUkKSERUVgpIRi9NCkhIUwpISQpISVYvTQpITQpITU8vTQpITVMKSE9WCkhQL00KSFBWCkhRL00KSFIKSFJICkhTCkhTQkMvTQpIU1QKSFQKSFRNTC9NCkhUVFAKSFVEL00KSGEvTQpIYWFzL00KSGFiYWtrdWsvTQpIYWJlci9NCkhhZGFyL00KSGFkZXMvTQpIYWRyaWFuL00KSGFmaXovTQpIYWdhci9NCkhhZ2dhaS9NCkhhZ2lvZ3JhcGhhL00KSGFndWUvTQpIYWhuL00KSGFpZGEvU00KSGFpZmEvTQpIYWlwaG9uZy9NCkhhaXRpL00KSGFpdGlhbi9NUwpIYWtrYS9NCkhha2x1eXQvTQpIYWwvU00KSGFsZGFuZS9NCkhhbGUvTQpIYWxlYWthbGEvTQpIYWxleS9NCkhhbGlmYXgvTQpIYWxsL00KSGFsbGV5L00KSGFsbGlidXJ0b24vTQpIYWxsaWUvTQpIYWxsbWFyay9NCkhhbGxvd2Vlbi9NUwpIYWxsc3RhdHQvTQpIYWxvbi9NCkhhbHMvTQpIYWxzZXkvTQpIYW0vTQpIYW1hbi9NCkhhbWJ1cmcvTVMKSGFtaHVuZy9NCkhhbWlsY2FyL00KSGFtaWxsL00KSGFtaWx0b24vTQpIYW1pbHRvbmlhbi9NCkhhbWl0aWMvTQpIYW1sZXQvTQpIYW1saW4vTQpIYW1tYXJza2pvbGQvTQpIYW1tZXJzdGVpbi9NCkhhbW1ldHQvTQpIYW1tb25kL00KSGFtbXVyYWJpL00KSGFtcHNoaXJlL00KSGFtcHRvbi9NCkhhbXN1bi9NCkhhbi9TTQpIYW5jb2NrL00KSGFuZGVsL00KSGFuZHkvTQpIYW5leS9NCkhhbmd1bC9NCkhhbmd6aG91L00KSGFuay9NCkhhbm5hL00KSGFubmFoL00KSGFubmliYWwvTQpIYW5vaS9NCkhhbm92ZXIvTQpIYW5vdmVyaWFuL00KSGFucy9NTgpIYW5zZWwvTQpIYW5zZW4vTQpIYW5zb24vTQpIYW51a2EKSGFudWtrYWgvTQpIYW51a2thaHMKSGFwc2J1cmcvTQpIYXJhcmUvTQpIYXJiaW4vTQpIYXJkaW4vTQpIYXJkaW5nL00KSGFyZHkvTQpIYXJncmVhdmVzL00KSGFybGFuL00KSGFybGVtL00KSGFybGVxdWluL00KSGFybGV5L00KSGFybG93L00KSGFybW9uL00KSGFyb2xkL00KSGFycGVyL00KSGFycHkvU00KSGFycmVsbC9NCkhhcnJpZXQvTQpIYXJyaWV0dC9NCkhhcnJpbmd0b24vTQpIYXJyaXMvTQpIYXJyaXNidXJnL00KSGFycmlzb24vTQpIYXJyb2RzL00KSGFycnkvTQpIYXJ0L00KSGFydGUvTQpIYXJ0Zm9yZC9NCkhhcnRsaW5lL00KSGFydG1hbi9NCkhhcnZhcmQvTQpIYXJ2ZXkvTQpIYXNicm8vTQpIYXNpZGltL00KSGFza2VsbC9NCkhhc3RpbmdzL00KSGF0ZmllbGQvTQpIYXRoYXdheS9NCkhhdHNoZXB1dC9NCkhhdHRlcmFzL00KSGF0dGllL00KSGF1cHRtYW5uL00KSGF1c2EvTQpIYXVzZG9yZmYvTQpIYXZhbmEvTVMKSGF2YXJ0aS9NCkhhdmVsL00KSGF2b2xpbmUvTQpIYXcKSGF3YWlpL00KSGF3YWlpYW4vU00KSGF3a2luZy9NCkhhd2tpbnMvTQpIYXdrcwpIYXd0aG9ybmUvTQpIYXkvU00KSGF5ZGVuL00KSGF5ZG4vTQpIYXllay9NCkhheWVzL00KSGF5bmVzL00KSGF5cy9NCkhheXdhcmQvTQpIYXl3b29kL00KSGF5d29ydGgvTQpIYXplbC9NCkhhemxpdHQvTQpIZS9NCkhlYWQvTQpIZWFyc3QvTQpIZWF0aC9NUgpIZWF0aGVyL00KSGVhdmlzaWRlL00KSGViCkhlYmUvTQpIZWJlcnQvTQpIZWJyYWljL00KSGVicmFpc20vU00KSGVicmV3L01TCkhlYnJld3MvTQpIZWJyaWRlcy9NCkhlY2F0ZS9NCkhlY3Rvci9NCkhlY3ViYS9NCkhlZXAvTQpIZWZuZXIvTQpIZWdlbC9NCkhlZ2VsaWFuL00KSGVnaXJhL00KSGVpZGVnZ2VyL00KSGVpZGVsYmVyZy9NCkhlaWRpL00KSGVpZmV0ei9NCkhlaW1saWNoL00KSGVpbmUvTQpIZWluZWtlbi9NCkhlaW5sZWluL00KSGVpbnJpY2gvTQpIZWluei9NCkhlaXNlbmJlcmcvTQpIZWlzbWFuL00KSGVsZW4vTQpIZWxlbmEvTQpIZWxlbmUvTQpIZWxnYS9NCkhlbGljb24vTQpIZWxpb3BvbGlzL00KSGVsaW9zL00KSGVsbGVuZS9TTQpIZWxsZW5pYy9NCkhlbGxlbmlzbS9NUwpIZWxsZW5pc3QKSGVsbGVuaXN0aWMvTQpIZWxsZW5pemF0aW9uL00KSGVsbGVuaXplL00KSGVsbGVyL00KSGVsbGVzcG9udC9NCkhlbGxtYW4vTQpIZWxtaG9sdHovTQpIZWxvaXNlL00KSGVsc2lua2kvTQpIZWx2ZXRpYW4KSGVsdmV0aXVzL00KSGVtaW5nd2F5L00KSGVuY2gvTQpIZW5kZXJzb24vTQpIZW5kcmljay9NUwpIZW5kcmlja3MvTQpIZW5kcml4L00KSGVubGV5L00KSGVubmVzc3kvTQpIZW5yaS9NCkhlbnJpZXR0YS9NCkhlbnJpay9NCkhlbnJ5L00KSGVuc2xleS9NCkhlbnNvbi9NCkhlcGJ1cm4vTQpIZXBoYWVzdHVzL00KSGVwcGxld2hpdGUvTQpIZXJhL00KSGVyYWNsZXMvTQpIZXJhY2xpdHVzL00KSGVyYWtsZXMvTQpIZXJiYXJ0L00KSGVyYmVydC9NCkhlcmN1bGFuZXVtL00KSGVyY3VsZWFuCkhlcmN1bGVzL00KSGVyZGVyL00KSGVyZWZvcmQvU00KSGVyZXJvL00KSGVyaWJlcnRvL00KSGVybWFuL00KSGVybWFwaHJvZGl0dXMvTQpIZXJtZXMvTQpIZXJtaW5pYS9NCkhlcm1pdGFnZS9NCkhlcm1pdGUvTQpIZXJtb3NpbGxvL00KSGVybmFuZGV6L00KSGVyb2QvTQpIZXJvZG90dXMvTQpIZXJyL01HCkhlcnJlcmEvTQpIZXJyaWNrL00KSGVycmluZy9NCkhlcnNjaGVsL00KSGVyc2V5L00KSGVyc2hlbC9NCkhlcnNoZXkvTQpIZXJ0ei9NCkhlcnR6c3BydW5nL00KSGVyemVnb3ZpbmEvTQpIZXJ6bC9NCkhlc2h2YW4vTQpIZXNpb2QvTQpIZXNwZXJ1cy9NCkhlc3MvTQpIZXNzZS9NCkhlc3NpYW4vTQpIZXN0ZXIvTQpIZXN0b24vTQpIZXR0aWUvTQpIZXdpdHQvTQpIZXdsZXR0L00KSGV5ZXJkYWhsL00KSGV5d29vZC9NCkhlemJvbGxhaC9NCkhlemVraWFoL00KSGYvTQpIZy9NCkhpYWxlYWgvTQpIaWF3YXRoYS9NCkhpYmVybmlhL00KSGliZXJuaWFuCkhpY2ttYW4vTQpIaWNrb2svTQpIaWNrcy9NCkhpZXJvbnltdXMvTQpIaWdhc2hpb3Nha2EKSGlnZ2lucy9NCkhpZ2hsYW5kZXIvU00KSGlnaGxhbmRzCkhpZ2huZXNzL00KSGlsYXJpby9NCkhpbGFyeS9NCkhpbGJlcnQvTQpIaWxkYS9NCkhpbGRlYnJhbmQvTQpIaWxmaWdlci9NCkhpbGwvTQpIaWxsYXJ5L00KSGlsbGVsL00KSGlsdG9uL00KSGltYWxheWEvU00KSGltYWxheWFuCkhpbWFsYXlhcy9NCkhpbW1sZXIvTQpIaW5heWFuYS9NCkhpbmRlbWl0aC9NCkhpbmRlbmJ1cmcvTQpIaW5kaS9NCkhpbmR1L1NNCkhpbmR1aXNtL1NNCkhpbmR1c3Rhbi9NCkhpbmR1c3RhbmkvU00KSGluZXMvTQpIaW50b24vTQpIaXBwYXJjaHVzL00KSGlwcG9jcmF0ZXMvTQpIaXBwb2NyYXRpYy9NCkhpcmFtL00KSGlyb2J1bWkvTQpIaXJvaGl0by9NCkhpcm9zaGltYS9NCkhpc3BhbmljL1NNCkhpc3BhbmlvbGEvTQpIaXNzL00KSGl0YWNoaS9NCkhpdGNoY29jay9NCkhpdGxlci9NUwpIaXR0aXRlL1NNCkhtb25nL00KSG8vTQpIb2JhcnQvTQpIb2JiZXMvTQpIb2Jicy9NCkhvY2tuZXkvTQpIb2RnZS9TTQpIb2RnZXMvTQpIb2Rna2luL00KSG9mZi9NCkhvZmZhL00KSG9mZm1hbi9NCkhvZnN0YWR0ZXIvTQpIb2dhbi9NCkhvZ2FydGgvTQpIb2d3YXJ0cy9NCkhvaGVubG9oZS9NCkhvaGVuc3RhdWZlbi9NCkhvaGVuem9sbGVybi9NCkhvaGhvdC9NCkhvaG9rYW0vTQpIb2trYWlkby9NCkhva3VzYWkvTQpIb2xiZWluL00KSG9sY29tYi9NCkhvbGRlbi9NCkhvbGRlci9NCkhvbGlkYXkvTQpIb2xpbmVzcwpIb2xsYW5kL1pTTVIKSG9sbGFuZGVyL00KSG9sbGVyaXRoL00KSG9sbGV5L00KSG9sbGllL00KSG9sbGlzL00KSG9sbG93YXkvTQpIb2xseS9NCkhvbGx5d29vZC9NCkhvbG1hbi9NCkhvbG1lcy9NCkhvbG9jYXVzdC9NCkhvbG9jZW5lL00KSG9sc3QvTQpIb2xzdGVpbi9TTQpIb2x0L00KSG9tZXIvTQpIb21lcmljL00KSG9uCkhvbmRhL00KSG9uZHVyYW4vTVMKSG9uZHVyYXMvTQpIb25lY2tlci9NCkhvbmV5d2VsbC9NCkhvbmcKSG9uaWFyYS9NCkhvbm9sdWx1L00KSG9ub3JhYmxlCkhvbnNodS9NCkhvb2QvTQpIb29rZS9STQpIb29rZXIvTQpIb29wZXIvTQpIb29zaWVyL01TCkhvb3RlcnMvTQpIb292ZXIvTVMKSG9wZS9NCkhvcGV3ZWxsL00KSG9waS9TTQpIb3BraW5zL00KSG9wcGVyL00KSG9yYWNlL00KSG9yYWNpby9NCkhvcmF0aW8vTQpIb3JtZWwvTQpIb3JtdXovTQpIb3JuL00KSG9ybmJsb3dlci9NCkhvcm5lL00KSG9yb3dpdHovTQpIb3J0aHkvTQpIb3J0b24vTQpIb3J1cy9NCkhvc2VhL00KSG9zdC9TTQpIb3Rwb2ludC9NCkhvdHRlbnRvdC9TTQpIb3VkaW5pL00KSG91c2UvTQpIb3VzbWFuL00KSG91c3Rvbi9NCkhvdXlobmhubS9NCkhvdmhhbmVzcy9NCkhvd2FyZC9NCkhvd2UvTQpIb3dlbGwvTVMKSG93ZWxscy9NCkhvd3JhaApIb3lsZS9NCkhyb3RoZ2FyL00KSHRzCkh1YW5nL00KSHViYmFyZC9NCkh1YmJsZS9NCkh1YmVyL00KSHViZXJ0L00KSHVjay9NCkh1ZGRlcnNmaWVsZApIdWRzb24vTQpIdWVydGEvTQpIdWV5L00KSHVmZi9NCkh1ZmZtYW4vTQpIdWdnaW5zL00KSHVnaC9NUwpIdWdoZXMvTQpIdWdvL00KSHVndWVub3QvTVMKSHVpL00KSHVpdHppbG9wb3RjaGxpL00KSHVsbC9NCkh1bWJlcnRvL00KSHVtYm9sZHQvTQpIdW1lL00KSHVtbWVyL00KSHVtcGhyZXkvU00KSHVtdmVlL00KSHVuL1NNCkh1bmcvTQpIdW5nYXJpYW4vU00KSHVuZ2FyeS9NCkh1bnNwZWxsL00KSHVudC9NUgpIdW50ZXIvTQpIdW50aW5ndG9uL00KSHVudGxleS9NCkh1bnRzdmlsbGUvTQpIdXJsZXkvTQpIdXJvbi9NCkh1cnN0L00KSHVzL00KSHVzc2Vpbi9NCkh1c3NlcmwvTQpIdXNzaXRlL00KSHVzdG9uL00KSHV0Y2hpbnNvbi9NCkh1dHRvbi9NCkh1dHUvTQpIdXhsZXkvTQpIdXlnZW5zL00KSHlhZGVzL00KSHlkZS9NCkh5ZGVyYWJhZC9NCkh5ZHJhL00KSHltZW4vTQpIeXBlcmlvbi9NCkh5dW5kYWkvTQpIei9NCkknZApJJ2xsCkknbQpJJ3ZlCkkvTQpJQQpJQk0vTQpJQ0JNL1NNCklDQwpJQ1UKSUQvU00KSURFCklFCklFRApJRUVFCklLRUEvTQpJTApJTUYvTQpJTUhPCklNTlNITwpJTU8KSU4KSU5HL00KSU5SSQpJTlMKSU9VL00KSVAKSVBBCklQTwpJUS9NCklSQS9TTQpJUkMKSVJTL00KSVNCTgpJU0lTCklTTy9NCklTUApJU1MKSVQKSVVECklWL1NNCklWRgpJYQpJYWNjb2NhL00KSWFnby9NCklhbi9NCklhcGV0dXMvTQpJYmFkYW4vTQpJYmVyaWEvTQpJYmVyaWFuL00KSWJpemEvTQpJYmxpcy9NCkliby9NCklic2VuL00KSWNhaG4vTQpJY2FydXMvTQpJY2UKSWNlbGFuZC9NUloKSWNlbGFuZGVyL00KSWNlbGFuZGljL00KSWRhL00KSWRhaG8vU00KSWRhaG9hbi9NUwpJZGFob2VzCklleWFzdS9NCklnbmFjaW8vTQpJZ25hdGl1cy9NCklnb3IvTQpJZ3Vhc3N1L00KSWpzc2VsbWVlci9NCklrZS9NCklraG5hdG9uL00KSWxhL00KSWxlbmUvTQpJbGlhZC9TTQpJbGwKSWxsaW5vaXMvTQpJbGxpbm9pc2FuL01TCklsbHVtaW5hdGkvTQpJbHl1c2hpbi9NCkltZWxkYS9NCkltaG90ZXAvTQpJbW9kaXVtL00KSW1vZ2VuZS9NCkltdXMvTQpJbi9NCkluYS9NCkluYwpJbmNhL1NNCkluY2hvbi9NCkluY29ycG9yYXRlZApJbmQKSW5kZXBlbmRlbmNlL00KSW5kaWEvTQpJbmRpYW4vTVMKSW5kaWFuYS9NCkluZGlhbmFuL1NNCkluZGlhbmFwb2xpcy9NCkluZGlhbmlhbgpJbmRpZXMvTQpJbmRpcmEvTQpJbmRvY2hpbmEvTQpJbmRvY2hpbmVzZS9NCkluZG9uZXNpYS9NCkluZG9uZXNpYW4vU00KSW5kb3JlL00KSW5kcmEvTQpJbmR1cy9NCkluZHkvU00KSW5lcy9NCkluZXovTQpJbmdlL00KSW5nbGV3b29kCkluZ3JhbS9NCkluZ3Jlcy9NCkluZ3JpZC9NCklubm9jZW50L00KSW5uc2JydWNrCklub251L00KSW5xdWlzaXRpb24vTQpJbnN0Ckluc3RhZ3JhbS9NCkluc3RhbWF0aWMvTQpJbnRlbC9NCkludGVsc2F0L00KSW50ZXJuYXRpb25hbGUvTQpJbnRlcm5ldC9TTQpJbnRlcnBvbC9NCkludWl0L01TCkludWt0aXR1dC9NCkludmFyL00KSW8vTQpJb25lc2NvL00KSW9uaWFuL01TCklvbmljL1NNCklvd2EvU00KSW93YW4vTVMKSXBoaWdlbmlhL00KSXBzd2ljaApJcWFsdWl0L00KSXFiYWwvTQpJcXVpdG9zL00KSXIvTQpJcmEvTQpJcmFuL00KSXJhbmlhbi9TTQpJcmFxL00KSXJhcWkvTVMKSXJlbGFuZC9NCklyZW5lL00KSXJpcy9NCklyaXNoL01SCklyaXNobWFuL00KSXJpc2htZW4vTQpJcmlzaHdvbWFuL00KSXJpc2h3b21lbi9NCklya3V0c2svTQpJcm1hL00KSXJvcXVvaWFuL1NNCklyb3F1b2lzL00KSXJyYXdhZGR5L00KSXJ0aXNoL00KSXJ2aW4vTQpJcnZpbmUvTQpJcnZpbmcvTQpJcndpbi9NCklzYWFjL00KSXNhYmVsL00KSXNhYmVsbGEvTQpJc2FiZWxsZS9NCklzYWlhaC9NCklzY2FyaW90L00KSXNmYWhhbi9NCklzaGVyd29vZC9NCklzaGltL00KSXNobWFlbC9NCklzaHRhci9NCklzaWFoL00KSXNpZHJvL00KSXNpcy9NCklzbGFtL01TCklzbGFtYWJhZC9NCklzbGFtaWMvTQpJc2xhbWlzbS9NCklzbGFtaXN0L00KSXNsYW1vcGhvYmlhCklzbGFtb3Bob2JpYwpJc21hZWwvTQpJc21haWwvTQpJc29sZGUvTQpJc3BlbGwvTQpJc3JhZWwvU00KSXNyYWVsaS9TTQpJc3JhZWxpdGUvTQpJc3NhYy9NCklzc2FjaGFyL00KSXN0YW5idWwvTQpJc3V6dS9NCkl0Ckl0YWlwdS9NCkl0YWwKSXRhbGlhbi9TTQpJdGFsaWFuYXRlCkl0YWx5L00KSXRhc2NhL00KSXRoYWNhL00KSXRoYWNhbi9NCkl0by9NCkl2YS9NCkl2YW4vTQpJdmFuaG9lL00KSXZlcy9NCkl2b3JpYW4KSXZvcnkvTQpJdnkvTQpJeWFyL00KSXphYWsvTQpJemFuYWdpL00KSXphbmFtaS9NCkl6aGV2c2svTQpJem1pci9NCkl6b2QvTQpJenZlc3RpYS9NCkovTUQKSkNTCkpECkpGSy9NCkpQCkpQRUcKSlYKSmFjay9NCkphY2tpZS9NCkphY2tseW4vTQpKYWNrc29uL00KSmFja3Nvbmlhbi9NCkphY2tzb252aWxsZS9NCkphY2t5L00KSmFjbHluL00KSmFjb2IvU00KSmFjb2JlYW4vTQpKYWNvYmkvTQpKYWNvYmluL00KSmFjb2JpdGUvTQpKYWNvYnMvTQpKYWNvYnNvbi9NCkphY3F1YXJkL00KSmFjcXVlbGluZS9NCkphY3F1ZWx5bi9NCkphY3F1ZXMvTQpKYWN1enppL00KSmFnZ2VyL00KSmFnaWVsbG9uL00KSmFndWFyL00KSmFoYW5naXIvTQpKYWltZS9NCkphaW4vTQpKYWluaXNtL00KSmFpcHVyL00KSmFrYXJ0YS9NCkpha2UvTQpKYW1hYWwvTQpKYW1haWNhL00KSmFtYWljYW4vU00KSmFtYWwvTQpKYW1hci9NCkphbWUvU00KSmFtZWwvTQpKYW1lcy9NCkphbWVzdG93bi9NCkphbWkvTQpKYW1pZS9NCkphbi9NCkphbmEvTQpKYW5hY2VrL00KSmFuZS9NCkphbmVsbC9NCkphbmVsbGUvTQpKYW5ldC9NCkphbmV0dGUvTQpKYW5pY2UvTQpKYW5pZS9NCkphbmluZS9NCkphbmlzL00KSmFuaXNzYXJ5L00KSmFuamF3ZWVkL00KSmFubmEvTQpKYW5uaWUvTQpKYW5zZW4vTQpKYW5zZW5pc3QvTQpKYW51YXJ5L1NNCkphbnVzL00KSmFwL1NNCkphcGFuL00KSmFwYW5lc2UvTVMKSmFwdXJhL00KSmFyZWQvTQpKYXJsc2JlcmcvTQpKYXJyZWQvTQpKYXJyZXR0L00KSmFycm9kL00KSmFydmlzL00KSmFzbWluZS9NCkphc29uL00KSmFzcGVyL00KSmF0YWthL00KSmF2YS9TTQpKYXZhU2NyaXB0L00KSmF2YW5lc2UvTQpKYXZpZXIvTQpKYXhhcnRlcy9NCkpheS9NCkpheWFwdXJhL00KSmF5YXdhcmRlbmUvTQpKYXljZWUvTVMKSmF5Y2Vlcy9NCkpheW5lL00KSmF5c29uL00KSmVhbi9NCkplYW5ldHRlL00KSmVhbmllL00KSmVhbmluZS9NCkplYW5uZS9NCkplYW5uZXR0ZS9NCkplYW5uaWUvTQpKZWFubmluZS9NCkplZC9NCkplZGkvTQpKZWVwL00KSmVldmVzL00KSmVmZi9NCkplZmZlcmV5L00KSmVmZmVyc29uL00KSmVmZmVyc29uaWFuL00KSmVmZmVyeS9NCkplZmZyZXkvTQpKZWZmcnkvTQpKZWhvc2hhcGhhdC9NCkplaG92YWgvTQpKZWt5bGwvTQpKZW5pZmVyL00KSmVua2lucy9NCkplbm5hL00KSmVubmVyL00KSmVubmllL00KSmVubmlmZXIvTQpKZW5uaW5ncy9NCkplbm55L00KSmVuc2VuL00KSmVwaHRoYWgvTQpKZXJhbGQvTQpKZXJlbWlhaC9NCkplcmVtaWFocwpKZXJlbXkvTQpKZXJpL00KSmVyaWNoby9NCkplcm1haW5lL00KSmVyb2JvYW0vTQpKZXJvbGQvTQpKZXJvbWUvTQpKZXJyaS9NCkplcnJvZC9NCkplcnJvbGQvTQpKZXJyeS9NCkplcnNleS9NUwpKZXJ1c2FsZW0vTQpKZXNzL00KSmVzc2UvTQpKZXNzaWNhL00KSmVzc2llL00KSmVzdWl0L01TCkplc3VzL00KSmV0d2F5L00KSmV3L1NNCkpld2VsL00KSmV3ZWxsL00KSmV3ZXNzL01TCkpld2lzaC9QTQpKZXdyeS9NCkplemViZWwvU00KSmlkZGEvTQpKaWxpbi9NCkppbGwvTQpKaWxsaWFuL00KSmltL00KSmltZW5lei9NCkppbW1pZS9NCkppbW15L00KSmluYW4vTQpKaW5uYWgvTQpKaW5ueS9NCkppdmFyby9NCkpvL00KSm9hbi9NCkpvYW5uL00KSm9hbm5hL00KSm9hbm5lL00KSm9hcXVpbi9NCkpvYi9TTQpKb2JzL00KSm9jYXN0YS9NCkpvY2VseW4vTQpKb2NrL00KSm9ja2V5L00KSm9kaS9NCkpvZGllL00KSm9keS9NCkpvZS9NCkpvZWwvTQpKb2V5L00KSm9namFrYXJ0YS9NCkpvaGFubi9NCkpvaGFubmEvTQpKb2hhbm5lcy9NCkpvaGFubmVzYnVyZy9NCkpvaG4vU00KSm9obmF0aGFuL00KSm9obmF0aG9uL00KSm9obmllL00KSm9obm5pZS9NCkpvaG5ueS9NCkpvaG5zL00KSm9obnNvbi9NCkpvaG5zdG9uL00KSm9sZW5lL00KSm9sc29uL00KSm9uL00KSm9uYWgvTQpKb25haHMKSm9uYXMvTQpKb25hdGhhbi9NCkpvbmF0aG9uL00KSm9uZXMvTQpKb25pL00KSm9uc29uL00KSm9wbGluL00KSm9yZGFuL00KSm9yZGFuaWFuL01TCkpvcmdlL00KSm9zZS9NCkpvc2VmL00KSm9zZWZhL00KSm9zZWZpbmEvTQpKb3NlcGgvTQpKb3NlcGhpbmUvTQpKb3NlcGhzCkpvc2VwaHNvbi9NCkpvc2VwaHVzL00KSm9zaC9NCkpvc2h1YS9NCkpvc2lhaC9NCkpvc2llL00KSm9zdWUvTQpKb3VsZS9NCkpvdmUvTQpKb3ZpYW4vTQpKb3kvTQpKb3ljZS9NCkpveWNlYW4vTQpKb3luZXIvTQpKcG4KSnIvTQpKdWFuL00KSnVhbmEvTQpKdWFuaXRhL00KSnVhcmV6L00KSnViYWwvTQpKdWRhZW8KSnVkYWgvTQpKdWRhaWMKSnVkYWljYWwKSnVkYWlzbS9NUwpKdWRhcy9NUwpKdWRkL00KSnVkZS9NCkp1ZGVhL00KSnVkZ2VzCkp1ZGl0aC9NCkp1ZHNvbi9NCkp1ZHkvTQpKdWdnZXJuYXV0L00KSnVsCkp1bGVzL00KSnVsaWEvTQpKdWxpYW4vTQpKdWxpYW5hL00KSnVsaWFubmUvTQpKdWxpZS9NCkp1bGlldC9NCkp1bGlldHRlL00KSnVsaW8vTQpKdWxpdXMvTQpKdWxsaWFyZC9NCkp1bHkvU00KSnVuL00KSnVuZS9TTQpKdW5lYXUvTQpKdW5nL00KSnVuZ2ZyYXUvTQpKdW5naWFuL00KSnVuaW9yL1NNCkp1bmtlci9TTQpKdW5vL00KSnVwaXRlci9NCkp1cmFzc2ljL00KSnVydWEvTQpKdXN0aWNlL00KSnVzdGluL00KSnVzdGluZS9NCkp1c3Rpbmlhbi9NCkp1dGxhbmQvTQpKdXZlbmFsL00KSy9TTU5HSgpLQi9NCktDCktGQy9NCktHQi9NCktJQQpLS0svTQpLTy9NCktQCktTCktZCkthYWJhL00KS2FidWwvTQpLYWZrYS9NCkthZmthZXNxdWUvTQpLYWdvc2hpbWEvTQpLYWhsdWEvTQpLYWlmZW5nL00KS2Fpc2VyL01TCkthaXRsaW4vTQpLYWxhaGFyaS9NCkthbGFtYXpvby9NCkthbGFzaG5pa292L00KS2FsYi9NCkthbGV2YWxhL00KS2FsZ29vcmxpZS9NCkthbGkvTQpLYWxteWsvTQpLYW1hL00KS2FtY2hhdGthL00KS2FtZWhhbWVoYS9NCkthbXBhbGEvTQpLYW1wdWNoZWEvTQpLYW4vU00KS2FuY2hlbmp1bmdhL00KS2FuZGFoYXIvTQpLYW5kaW5za3kvTQpLYW5lL00KS2FubmFkYS9NCkthbm8vTQpLYW5wdXIvTQpLYW5zYW4vTVMKS2Fuc2FzL00KS2FudC9NCkthbnRpYW4vTQpLYW9oc2l1bmcvTQpLYXBvc2kvTQpLYXJhL00KS2FyYWNoaS9NCkthcmFnYW5kYS9NCkthcmFrb3J1bS9NCkthcmFtYXpvdi9NCkthcmVlbS9NCkthcmVuL00KS2FyZW5pbmEvTQpLYXJpL00KS2FyaW4vTQpLYXJpbmEvTQpLYXJsL00KS2FybGEvTQpLYXJsb2ZmL00KS2Fyby9NCkthcm9sL00KS2Fycm9vL00KS2FyeW4vTQpLYXNhaS9NCkthc2V5L00KS2FzaG1pci9TTQpLYXNwYXJvdi9NCkthdGUvTQpLYXRlbHluL00KS2F0aGFyaW5lL00KS2F0aGVyaW5lL00KS2F0aGVyeW4vTQpLYXRoaWF3YXIvTQpLYXRoaWUvTQpLYXRobGVlbi9NCkthdGhtYW5kdS9NCkthdGhyaW5lL00KS2F0aHJ5bi9NCkthdGh5L00KS2F0aWUvTQpLYXRpbmEvTQpLYXRtYWkvTQpLYXRvd2ljZS9NCkthdHJpbmEvTQpLYXR5L00KS2F1YWkvTQpLYXVmbWFuL00KS2F1bmFzL00KS2F1bmRhL00KS2F3YWJhdGEvTQpLYXdhc2FraS9NCktheS9NCktheWUvTQpLYXlsYS9NCkthemFraC9NCkthemFraHMKS2F6YWtoc3Rhbi9NCkthemFuL00KS2F6YW50emFraXMvTQpLYi9NCktlYXRvbi9NCktlYXRzL00KS2Vjay9NCktlZW5hbi9NCktlZXdhdGluL00KS2VpbGxvci9NCktlaXNoYS9NCktlaXRoL00KS2VsbGVyL00KS2VsbGV5L00KS2VsbGkvTQpLZWxsaWUvTQpLZWxsb2dnL00KS2VsbHkvTQpLZWxzZXkvTQpLZWx2aW4vTQpLZW1lcm92by9NCktlbXAvTQpLZW1waXMvTQpLZW4vTQpLZW5kYWxsL00KS2VuZHJhL00KS2VuZHJpY2svTQpLZW5tb3JlL00KS2VubmFuL00KS2VubmVkeS9NCktlbm5ldGgvTQpLZW5uaXRoL00KS2VubnkvTQpLZW50L00KS2VudG9uL00KS2VudHVja2lhbi9NUwpLZW50dWNreS9NCktlbnlhL00KS2VueWFuL1NNCktlbnlhdHRhL00KS2VueW9uL00KS2VvZ2gvTQpLZW9rdWsvTQpLZXBsZXIvTQpLZXJlbnNreS9NCktlcmkvTQpLZXJtaXQvTQpLZXJuL00KS2Vyb3VhYy9NCktlcnIvTQpLZXJyaS9NCktlcnJ5L00KS2V0dGVyaW5nL00KS2V2ZW4vTQpLZXZpbi9NCktldmxhci9NCktldm9ya2lhbi9NCktld3BpZS9NCktleS9NCktleW5lcy9NCktleW5lc2lhbi9NCktoYWJhcm92c2svTQpLaGFjaGF0dXJpYW4vTQpLaGFsaWQvTQpLaGFuL00KS2hhcmtvdi9NCktoYXJ0b3VtL00KS2hheXlhbS9NCktoYXphci9NCktobWVyL00KS2hvaWtob2kvTQpLaG9pc2FuL00KS2hvbWVpbmkvTQpLaG9yYW5hL00KS2hydXNoY2hldi9NCktodWZ1L00KS2h1bG5hL00KS2h3YXJpem1pL00KS2h5YmVyL00KS2lja2Fwb28vTQpLaWRkL00KS2llbC9NCktpZXJrZWdhYXJkL00KS2lldGgvTQpLaWV2L00KS2lnYWxpL00KS2lrdXl1L00KS2lsYXVlYS9NCktpbGltYW5qYXJvL00KS2lscm95L00KS2ltL00KS2ltYmVybGV5L00KS2ltYmVybHkvTQpLaW5nL00KS2luZ3N0b24vTQpLaW5nc3Rvd24vTQpLaW5rbydzCktpbm5leS9NCktpbnNleS9NCktpbnNoYXNhL00KS2lvd2EvTVMKS2lwL00KS2lwbGluZy9NCktpcmJ5L00KS2lyY2hob2ZmL00KS2lyY2huZXIvTQpLaXJnaGlzdGFuL00KS2lyZ2hpei9NCktpcmdoaXppYS9NCktpcmliYXRpL00KS2lyaW55YWdhL00KS2lyay9NCktpcmtsYW5kL00KS2lya3BhdHJpY2svTQpLaXJvdi9NCktpcnN0ZW4vTQpLaXNhbmdhbmkvTQpLaXNoaW5ldi9NCktpc2xldi9NCktpc3Npbmdlci9NCktpdC9NCktpdGFreXVzaHUvTQpLaXRjaGVuZXIvTQpLaXR0eS9NCktpd2FuaXMvTQpLbGFuL00KS2xhbnNtYW4vTQpLbGF1cy9NCktsZWUvTQpLbGVlbmV4L01TCktsZWluL00KS2xpbXQvTQpLbGluZS9NCktsaW5nb24vTQpLbG9uZGlrZS9NUwpLbWFydC9NCktuYXBwL00KS25lc3NldC9NCktuZ3dhcnJleWUvTQpLbmlja2VyYm9ja2VyL00KS25pZXZlbC9NCktuaWdodC9NCktub3BmL00KS25vc3Nvcy9NCktub3dsZXMvTQpLbm94L00KS25veHZpbGxlL00KS251ZHNlbi9NCktudXRoL00KS251dGhzCktvYmUvTQpLb2NoL00KS29jaGFiL00KS29kYWNocm9tZS9NCktvZGFrL00KS29kYWx5L00KS29kaWFrL00KS29lc3RsZXIvTQpLb2hpbm9vci9NCktvaGwvTQpLb2l6dW1pL00KS29qYWsvTQpLb2x5bWEvTQpLb21tdW5pem1hL00KS29uZy9NCktvbmdvL00KS29ucmFkL00KS29vbnR6L00KS29wcGVsL00KS29yYW4vTVMKS29yYW5pYwpLb3JlYS9NCktvcmVhbi9TTQpLb3JuYmVyZy9NCktvcnkvTQpLb3J6eWJza2kvTQpLb3NjaXVza28vTQpLb3NzdXRoL00KS29zeWdpbi9NCktvdWZheC9NCktvd2xvb24vTQpLci9NCktyYWZ0L00KS3Jha2F0b2EvTQpLcmFrb3cvTQpLcmFtZXIvTQpLcmFzbm9kYXIvTQpLcmFzbm95YXJzay9NCktyZWJzL00KS3JlbWxpbi9NCktyZW1saW5vbG9naXN0CktyZW1saW5vbG9neQpLcmVzZ2UvTQpLcmluZ2xlL00KS3Jpcy9NCktyaXNobmEvTQpLcmlzaG5hbXVydGkvTQpLcmlzdGEvTQpLcmlzdGVuL00KS3Jpc3RpL00KS3Jpc3RpZS9NCktyaXN0aW4vTQpLcmlzdGluYS9NCktyaXN0aW5lL00KS3Jpc3RvcGhlci9NCktyaXN0eS9NCktyb2MvTQpLcm9nZXIvTQpLcm9uZWNrZXIvTQpLcm9wb3RraW4vTQpLcnVnZXIvTQpLcnVnZXJyYW5kL00KS3J1cHAvTQpLcnlzdGFsL00KS3NoYXRyaXlhL00KS3VibGFpL00KS3Vicmljay9NCkt1aG4vTQpLdWlieXNoZXYvTQpLdWx0aHVtbS9NCkt1bm1pbmcvTQpLdW9taW50YW5nL00KS3VyZC9NCkt1cmRpc2gvTQpLdXJkaXN0YW4vTQpLdXJvc2F3YS9NCkt1cnQvTQpLdXJ0aXMvTQpLdXNjaC9NCkt1dHV6b3YvTQpLdXdhaXQvTQpLdXdhaXRpL1NNCkt1em5ldHMvTQpLdXpuZXRzay9NCkt3YWtpdXRsL00KS3dhbi9NCkt3YW5nanUvTQpLd2FuemFhL01TCkt5L01ICkt5bGUvTQpLeW90by9NCkt5cmd5enN0YW4vTQpLeXVzaHUvTQpMJ0Ftb3VyL00KTCdFbmZhbnQKTCdPcmVhbC9NCkwnT3V2ZXJ0dXJlL00KTC9NTgpMQQpMQU4vTQpMQkovTQpMQwpMQ0QvTQpMQ00KTERDCkxFRC9NCkxHL00KTEdCVApMSUZPCkxMCkxMQi9NCkxMRC9NCkxORwpMT0dPCkxQL00KTFBHCkxQTi9TTQpMU0FUCkxTRC9NCkxWTgpMYS9TTQpMYWIKTGFiYW4vTQpMYWJyYWRvci9TTQpMYWJyYWRvcmVhbgpMYWNleS9NCkxhY2hlc2lzL00KTGFjeS9NCkxhZG9nYS9NCkxhZG9ubmEvTQpMYWR5L00KTGFkeXNoaXAvTVMKTGFmYXlldHRlL00KTGFmaXR0ZS9NCkxhZ29zL00KTGFncmFuZ2UvTQpMYWdyYW5naWFuL00KTGFob3JlL00KTGFpdXMvTQpMYWpvcy9NCkxha2Vpc2hhL00KTGFrZXdvb2QKTGFraXNoYS9NCkxha290YS9NCkxha3NobWkvTQpMYW1haXNtL1NNCkxhbWFyL00KTGFtYXJjay9NCkxhbWF6ZS9NCkxhbWIvTQpMYW1iZXJ0L00KTGFtYm9yZ2hpbmkvTQpMYW1icnVzY28vTQpMYW1lbnRhdGlvbnMKTGFtb250L00KTGFuYS9NCkxhbmFpL00KTGFuY2FzaGlyZS9NCkxhbmNhc3Rlci9NCkxhbmNlL00KTGFuY2Vsb3QvTQpMYW5kL00KTGFuZG9uL00KTGFuZHJ5L00KTGFuZHNhdC9NCkxhbmRzdGVpbmVyL00KTGFuZS9NCkxhbmcvTQpMYW5nZXJoYW5zL00KTGFuZ2xhbmQvTQpMYW5nbGV5L00KTGFuZ211aXIvTQpMYW5rYS9NCkxhbmthbi9NCkxhbm55L00KTGFuc2luZy9NCkxhbnpob3UvTQpMYW8vU00KTGFvY29vbi9NCkxhb3MvTQpMYW90aWFuL1NNCkxhcGxhY2UvTQpMYXBsYW5kL01SCkxhcHAvU00KTGFyYS9NCkxhcmFtaWUvTQpMYXJkbmVyL00KTGFyZWRvL00KTGFyb3Vzc2UvTQpMYXJyeS9NCkxhcnMvTU4KTGFyc2VuL00KTGFyc29uL00KTGFzY2F1eC9NCkxhc3NhL00KTGFzc2VuL00KTGFzc2llL00KTGF0L00KTGF0YXNoYS9NCkxhdGVyYW4vTQpMYXRoYW0vTQpMYXRpbi9NUlMKTGF0aW5hCkxhdGluby9TTQpMYXRpc2hhL00KTGF0b255YS9NCkxhdG95YS9NCkxhdHJvYmUvTQpMYXR2aWEvTQpMYXR2aWFuL01TCkxhdWQvTVIKTGF1ZGVyL00KTGF1ZS9NCkxhdW5kcm9tYXQvTQpMYXVyYS9NCkxhdXJhc2lhL00KTGF1cmVsL00KTGF1cmVuL00KTGF1cmVuY2UvTQpMYXVyZW50L00KTGF1cmkvTQpMYXVyaWUvTQpMYXZhbC9NCkxhdmVybi9NCkxhdmVybmUvTQpMYXZvaXNpZXIvTQpMYXZvbm5lL00KTGF3YW5kYS9NCkxhd3JlbmNlL00KTGF3c29uL00KTGF5YW1vbi9NCkxheWxhL00KTGF6YXJvL00KTGF6YXJ1cy9NCkxlL1NNCkxlYS9NCkxlYWNoL00KTGVhZGJlbGx5L00KTGVhaC9NCkxlYWtleS9NCkxlYW4vTQpMZWFuZGVyL00KTGVhbm4vTQpMZWFubmEvTQpMZWFubmUvTQpMZWFyL00KTGVhcmpldC9NCkxlYXJ5L00KTGVhdmVud29ydGgvTQpMZWJhbmVzZS9NCkxlYmFub24vTQpMZWJlc2d1ZS9NCkxlYmxhbmMvTQpMZWRhL00KTGVkZXJiZXJnL00KTGVlL00KTGVlZHMvTQpMZWV1d2VuaG9lay9NCkxlZXdhcmQvTQpMZWZ0CkxlZ2VuZHJlL00KTGVnZXIvTQpMZWdob3JuL00KTGVnby9NCkxlZ3JlZS9NCkxlaG1hbi9NCkxlaWJuaXovTQpMZWljZXN0ZXIvU00KTGVpZGVuL00KTGVpZi9NCkxlaWdoL00KTGVpbGEvTQpMZWlwemlnL00KTGVsYS9NCkxlbGFuZC9NCkxlbGlhL00KTGVtYWl0cmUvTQpMZW11ZWwvTQpMZW11cmlhL00KTGVuL00KTGVuYS9NCkxlbmFyZC9NCkxlbmluL00KTGVuaW5ncmFkL00KTGVuaW5pc20vTQpMZW5pbmlzdC9NCkxlbm5vbi9NCkxlbm55L00KTGVuby9NCkxlbm9pci9NCkxlbm9yYS9NCkxlbm9yZS9NCkxlbnQvU01OCkxlbnRlbi9NCkxlby9TTQpMZW9sYS9NCkxlb24vTQpMZW9uYS9NCkxlb25hcmQvTQpMZW9uYXJkby9NCkxlb25jYXZhbGxvL00KTGVvbmVsL00KTGVvbmlkL00KTGVvbmlkYXMvTQpMZW9ub3IvTQpMZW9wb2xkL00KTGVvcG9sZG8vTQpMZXBpZHVzL00KTGVwa2UvTQpMZXB1cy9NCkxlcm5lci9NCkxlcm95L00KTGVzL00KTGVzYS9NCkxlc2xleS9NCkxlc2xpZS9NCkxlc290aG8vTQpMZXNzZXBzL00KTGVzc2llL00KTGVzdGVyL00KTGVzdHJhZGUvTQpMZXRhL00KTGV0aGEvTQpMZXRoZS9NCkxldGljaWEvTQpMZXRpdGlhL00KTGV0dGVybWFuL00KTGV2YW50L00KTGV2ZXNxdWUvTQpMZXZpL1NNCkxldmlhdGhhbi9NCkxldmluZS9NCkxldml0aWN1cy9NCkxldml0dC9NCkxldnkvTQpMZXcvTQpMZXdpbnNreS9NCkxld2lzL00KTGV4aW5ndG9uL00KTGV4dXMvTQpMaGFzYS9NUwpMaG90c2UvTQpMaS9NWQpMaWJieS9NCkxpYmVyYWNlL00KTGliZXJhbApMaWJlcmlhL00KTGliZXJpYW4vU00KTGlicmEvTVMKTGlicmVPZmZpY2UvTQpMaWJyZXZpbGxlL00KTGlicml1bS9NCkxpYnlhL00KTGlieWFuL1NNCkxpY2h0ZW5zdGVpbi9NCkxpZGlhL00KTGllL00KTGllYmVybWFuL00KTGllYmZyYXVtaWxjaC9NCkxpZWNodGVuc3RlaW4vWk1SCkxpZWNodGVuc3RlaW5lci9NCkxpZWdlL00KTGlldXQKTGlsYS9NCkxpbGlhL00KTGlsaWFuL00KTGlsaWFuYS9NCkxpbGl0aC9NCkxpbGl1b2thbGFuaS9NCkxpbGxlL00KTGlsbGlhbi9NCkxpbGxpZS9NCkxpbGxpcHV0L00KTGlsbGlwdXRpYW4vTVMKTGlsbHkvTQpMaWxvbmd3ZS9NCkxpbHkvTQpMaW1hL00KTGltYmF1Z2gvTQpMaW1ibwpMaW1idXJnZXIvTQpMaW1vZ2VzL00KTGltb3VzaW4vTQpMaW1wb3BvL00KTGluL00KTGluYS9NCkxpbmNvbG4vTVMKTGluZC9NCkxpbmRhL00KTGluZGJlcmdoL00KTGluZHNheS9NCkxpbmRzZXkvTQpMaW5keS9NCkxpbm5hZXVzL00KTGlub3R5cGUvTQpMaW50b24vTQpMaW51cy9NCkxpbnV4L01TCkxpbndvb2QvTQpMaW9uZWwvTQpMaXBpenphbmVyL00KTGlwcGkvTQpMaXBwbWFubi9NCkxpcHNjb21iL00KTGlwdG9uL00KTGlzYS9NCkxpc2Jvbi9NCkxpc3Nham91cy9NCkxpc3Rlci9NCkxpc3RlcmluZS9NCkxpc3Rvbi9NCkxpc3p0L00KTGl0aHVhbmlhL00KTGl0aHVhbmlhbi9NUwpMaXR0bGUvTQpMaXR0b24vTQpMaXZlcnBvb2wvTQpMaXZlcnB1ZGxpYW4vU00KTGl2aWEvTQpMaXZpbmdzdG9uL00KTGl2aW5nc3RvbmUvTQpMaXZvbmlhL00KTGl2eS9NCkxpei9NCkxpemEvTQpMaXp6aWUvTQpMaXp6eS9NCkxqdWJsamFuYS9NCkxsZXdlbGx5bi9NCkxsb3lkL00KTG4KTG9hZmVyL1NNCkxvYmFjaGV2c2t5L00KTG9jaGludmFyL00KTG9ja2UvTQpMb2NrZWFuL00KTG9ja2hlZWQvTQpMb2Nrd29vZC9NCkxvZGdlL00KTG9kei9NCkxvZXdlL00KTG9ld2kvTQpMb2V3cy9NCkxvZ2FuL00KTG9oZW5ncmluL00KTG9pcmUvTQpMb2lzL00KTG9raS9NCkxvbGEvTQpMb2xpdGEvTQpMb2xsYXJkL00KTG9sbG9icmlnaWRhL00KTG9tYmFyZC9NCkxvbWJhcmRpL00KTG9tYmFyZHkvTQpMb21lL00KTG9uL00KTG9uZG9uL01SWgpMb25kb25lci9NCkxvbmcvTQpMb25nZmVsbG93L00KTG9uZ3N0cmVldC9NCkxvbmd1ZXVpbApMb25uaWUvTQpMb3Blei9NCkxvcmEvTQpMb3JhaW5lL00KTG9yZC9TTQpMb3Jkc2hpcC9TTQpMb3JlbGVpL00KTG9yZW4vTQpMb3JlbmEvTQpMb3JlbmUvTQpMb3JlbnR6L00KTG9yZW56L00KTG9yZW56by9NCkxvcmV0dGEvTQpMb3JpL00KTG9yaWUvTQpMb3JuYS9NCkxvcnJhaW5lL00KTG9ycmUvTQpMb3JyaWUvTQpMb3MKTG90L00KTG90aGFyaW8vU00KTG90dC9NCkxvdHRpZS9NCkxvdS9NCkxvdWVsbGEvTQpMb3VpZS9NCkxvdWlzL00KTG91aXNhL00KTG91aXNlL00KTG91aXNpYW5hL00KTG91aXNpYW5hbi9NUwpMb3Vpc2lhbmlhbi9NUwpMb3Vpc3ZpbGxlL00KTG91cmRlcy9NCkxvdXZyZS9NCkxvdmUvTQpMb3ZlY3JhZnQvTQpMb3ZlbGFjZS9NCkxvd2UvTQpMb3dlbGwvTQpMb3dlbmJyYXUvTQpMb3dlcnkvTQpMb3dsYW5kcwpMb3lhbmcvTQpMb3lkL00KTG95b2xhL00KTHIKTHQKTHRkCkx1L00KTHVhbmRhL00KTHVhbm4vTQpMdWJhdml0Y2hlci9NCkx1YmJvY2svTQpMdWJ1bWJhc2hpL00KTHVjYXMvTQpMdWNlL00KTHVjaWEvTQpMdWNpYW4vTQpMdWNpYW5vL00KTHVjaWVuL00KTHVjaWZlci9NCkx1Y2lsZS9NCkx1Y2lsbGUvTQpMdWNpbmRhL00KTHVjaW8vTQpMdWNpdGUvU00KTHVjaXVzL00KTHVja25vdy9NCkx1Y3JldGlhL00KTHVjcmV0aXVzL00KTHVjeS9NCkx1ZGRpdGUvTVMKTHVkaGlhbmEvTQpMdWR3aWcvTQpMdWVsbGEvTQpMdWZ0aGFuc2EvTQpMdWZ0d2FmZmUvTQpMdWdlci9NCkx1Z29zaS9NCkx1aWdpL00KTHVpcy9NCkx1aXNhL00KTHVrZS9NCkx1bGEvTQpMdWxseS9NCkx1bHUvTQpMdW1pZXJlL00KTHVuYS9NCkx1cGUvTQpMdXBlcmNhbGlhL00KTHVwdXMvTQpMdXJpYS9NCkx1c2FrYS9NCkx1c2l0YW5pYS9NCkx1dGhlci9NCkx1dGhlcmFuL1NNCkx1dGhlcmFuaXNtL01TCkx1dnMvTQpMdXhlbWJvdXJnL1pNUgpMdXhlbWJvdXJnZXIvTQpMdXhlbWJvdXJnaWFuCkx1ei9NCkx1em9uL00KTHZvdi9NCkx5WC9NCkx5YWxscHVyCkx5Y3JhL00KTHljdXJndXMvTQpMeWRpYS9NCkx5ZGlhbi9TTQpMeWVsbC9NCkx5bGUvTQpMeWx5L00KTHltYW4vTQpMeW1lL00KTHluY2gvTQpMeW5kYS9NCkx5bmRvbi9NCkx5bmV0dGUvTQpMeW5uL00KTHlubmUvTQpMeW5uZXR0ZS9NCkx5b24vU00KTHlvbnMvTQpMeXJhL00KTHlzZW5rby9NCkx5c2lzdHJhdGEvTQpMeXNvbC9NCk0vU01HQgpNQS9NCk1BU0gKTUIvTQpNQkEvTQpNQwpNQ0kvTQpNRC9NCk1EVApNRQpNRUdPL1MKTUZBL00KTUdNL00KTUh6Ck1JL00KTUlBCk1JREkvTQpNSVBTCk1JUlYKTUlUL00KTU0KTU4KTU8KTU9PQwpNUC9NCk1QRUcKTVJJL00KTVMvTQpNU0cvTQpNU1QvTQpNU1cKTVQvTQpNVFYvTQpNVlAvTQpNVwpNYWFsb3gvTQpNYWJlbC9NCk1hYmxlL00KTWFjL00KTWFjQXJ0aHVyL00KTWFjQnJpZGUvTQpNYWNEb25hbGQvTQpNYWNMZWlzaC9NCk1hY2FvL00KTWFjYXVsYXkvTQpNYWNiZXRoL00KTWFjY2FiZWVzCk1hY2NhYmV1cy9NCk1hY2UvTQpNYWNlZG9uL00KTWFjZWRvbmlhL00KTWFjZWRvbmlhbi9TTQpNYWNoL00KTWFjaGlhdmVsbGkvTQpNYWNoaWF2ZWxsaWFuL00KTWFjaWFzL00KTWFjaW50b3NoL00KTWFjay9NCk1hY2tlbnppZS9NCk1hY2tpbmFjL00KTWFja2luYXcvTQpNYWNtaWxsYW4vTQpNYWNvbi9NCk1hY3VtYmEvTQpNYWN5L00KTWFkYWdhc2Nhbi9TTQpNYWRhZ2FzY2FyL00KTWFkYW0KTWFkZGVuL00KTWFkZG94L00KTWFkZWlyYS9TTQpNYWRlbGVpbmUvTQpNYWRlbGluZS9NCk1hZGVseW4vTQpNYWRnZS9NCk1hZGlzb24vTQpNYWRvbm5hL1NNCk1hZHJhcy9NCk1hZHJpZC9NCk1hZHVyYWkvTQpNYWUvTQpNYWV0ZXJsaW5jay9NCk1hZmlhL01TCk1hZmlvc28vTQpNYWdkYWxlbmEvTQpNYWdkYWxlbmUvTQpNYWdlbGxhbi9NCk1hZ2VsbGFuaWMvTQpNYWdnaWUvTQpNYWdocmViL00KTWFnaQpNYWdpbm90L00KTWFnbml0b2dvcnNrL00KTWFnb2cvTQpNYWdvby9NCk1hZ3JpdHRlL00KTWFnc2F5c2F5L00KTWFndXMKTWFneWFyL1NNCk1haGFiaGFyYXRhL00KTWFoYXJhc2h0cmEvTQpNYWhhdmlyYS9NCk1haGF5YW5hL00KTWFoYXlhbmlzdC9NCk1haGRpL00KTWFoZm91ei9NCk1haGljYW4vU00KTWFobGVyL00KTWFpL00KTWFpZGVuZm9ybS9NCk1haWdyZXQvTQpNYWlsZXIvTQpNYWlsbG9sL00KTWFpbWFuL00KTWFpbW9uaWRlcy9NCk1haW5lL01aUgpNYWluZXIvTQpNYWlzaWUvTQpNYWl0cmV5YS9NCk1hagpNYWplc3R5Ck1ham9yL00KTWFqb3JjYS9NCk1hanVyby9NCk1ha2FyaW9zL00KTWFrZXIvTQpNYWxhYmFyL00KTWFsYWJvL00KTWFsYWNjYS9NCk1hbGFjaGkvTQpNYWxhZ2FzeS9NCk1hbGFtdWQvTQpNYWxhcHJvcC9NCk1hbGF3aS9NCk1hbGF3aWFuL1NNCk1hbGF5L01TCk1hbGF5YS9NCk1hbGF5YWxhbS9NCk1hbGF5YW4vTVMKTWFsYXlzaWEvTQpNYWxheXNpYW4vTVMKTWFsY29sbS9NCk1hbGRpdmUvTVMKTWFsZGl2ZXMvTQpNYWxkaXZpYW4vTVMKTWFsZG9uYWRvL00KTWFsZS9NCk1hbGkvTQpNYWxpYW4vU00KTWFsaWJ1L00KTWFsaW5kYS9NCk1hbGlub3dza2kvTQpNYWxsYXJtZS9NCk1hbGxvbWFycy9NCk1hbGxvcnkvTQpNYWxvbmUvTQpNYWxvcnkvTQpNYWxwbGFxdWV0L00KTWFscmF1eC9NCk1hbHRhL00KTWFsdGVzZS9NCk1hbHRodXMvTQpNYWx0aHVzaWFuL1NNCk1hbWVsdWtlL00KTWFtZXQvTQpNYW1pZS9NCk1hbW9yZS9NCk1hbi9NCk1hbmFndWEvTQpNYW5hbWEvTQpNYW5hc3NlaC9NCk1hbmNoZXN0ZXIvTQpNYW5jaHUvU00KTWFuY2h1cmlhL00KTWFuY2h1cmlhbi9NCk1hbmNpbmkvTQpNYW5jdW5pYW4vTVMKTWFuZGFsYXkvTQpNYW5kYXJpbi9NCk1hbmRlbGEvTQpNYW5kZWxicm90L00KTWFuZGluZ28vTQpNYW5kcmVsbC9NCk1hbmR5L00KTWFuZXQvTQpNYW5mcmVkL00KTWFuaGF0dGFuL1NNCk1hbmkvTQpNYW5pY2hlYW4vTQpNYW5pbGEvU00KTWFuaXRvYmEvTQpNYW5pdG91bGluL00KTWFubGV5L00KTWFubi9HTQpNYW5uaGVpbS9NCk1hbm5pbmcvTQpNYW5zZmllbGQvTQpNYW5zb24vTQpNYW50ZWduYS9NCk1hbnRsZS9NCk1hbnVlbC9NCk1hbnVlbGEvTQpNYW54L00KTWFvL00KTWFvaXNtL1NNCk1hb2lzdC9TTQpNYW9yaS9NUwpNYXBwbGV0aG9ycGUvTQpNYXB1dG8vTQpNYXIvU00KTWFyYS9NCk1hcmFjYWliby9NCk1hcmF0L00KTWFyYXRoYS9NCk1hcmF0aGkvTQpNYXJhdGhvbi9NCk1hcmMvTQpNYXJjZWF1L00KTWFyY2VsL00KTWFyY2VsaW5vL00KTWFyY2VsbGEvTQpNYXJjZWxvL00KTWFyY2gvTVMKTWFyY2kvTQpNYXJjaWEvTQpNYXJjaWFuby9NCk1hcmNpZS9NCk1hcmNvL01TCk1hcmNvbmkvTQpNYXJjb3MvTQpNYXJjdXMvTQpNYXJjdXNlCk1hcmN5L00KTWFyZHVrL00KTWFyZ2FyZXQvTQpNYXJnYXJpdGEvTQpNYXJnYXJpdG8vTQpNYXJnZS9NCk1hcmdlcnkvTQpNYXJnaWUvTQpNYXJnby9NCk1hcmdvdApNYXJncmV0L00KTWFyZ3JldGhlL00KTWFyZ3Vlcml0ZS9NCk1hcmkvU00KTWFyaWEvTQpNYXJpYW4vTQpNYXJpYW5hL1NNCk1hcmlhbmFzL00KTWFyaWFubmUvTQpNYXJpYW5vL00KTWFyaWJlbC9NCk1hcmljZWxhL00KTWFyaWUvTQpNYXJpZXR0YS9NCk1hcmlseW4vTQpNYXJpbi9NCk1hcmluYS9NCk1hcmluZS9TTQpNYXJpby9NCk1hcmlvbi9NCk1hcmlzL00KTWFyaXNhL00KTWFyaXNvbC9NCk1hcmlzc2EvTQpNYXJpdGFpbi9NCk1hcml0emEvTQpNYXJpdXBvbApNYXJpdXMvTQpNYXJqb3JpZS9NCk1hcmpvcnkvTQpNYXJrL1NNCk1hcmthYi9NCk1hcmtoYW0vTQpNYXJrb3YvTQpNYXJrcy9NCk1hcmxhL00KTWFybGJvcm8vTQpNYXJsYm9yb3VnaC9NCk1hcmxlbmUvTQpNYXJsZXkvTQpNYXJsaW4vTQpNYXJsb24vTQpNYXJsb3dlL00KTWFybWFyYS9NCk1hcm5lL00KTWFyb25pdGUvTQpNYXJwbGUvTQpNYXJxdWVzYXMvTQpNYXJxdWV0dGUvTQpNYXJxdWV6L00KTWFycXVpcy9NCk1hcnF1aXRhL00KTWFycmFrZXNoL00KTWFycmlvdHQvTQpNYXJzL01TCk1hcnNhbGEvTQpNYXJzZWlsbGFpc2UvTVMKTWFyc2VpbGxlcy9NCk1hcnNoL00KTWFyc2hhL00KTWFyc2hhbGwvTQpNYXJ0YS9NCk1hcnRlbC9NCk1hcnRoYS9NCk1hcnRpYWwvTQpNYXJ0aWFuL1NNCk1hcnRpbi9NCk1hcnRpbmEvTQpNYXJ0aW5lei9NCk1hcnRpbmlxdWUvTQpNYXJ0eS9NCk1hcnZhL00KTWFydmVsbC9NCk1hcnZpbi9NCk1hcngvTQpNYXJ4aWFuCk1hcnhpc20vU00KTWFyeGlzdC9TTQpNYXJ5L00KTWFyeWFubi9NCk1hcnlhbm5lL00KTWFyeWVsbGVuL00KTWFyeWxhbmQvTVIKTWFyeWxhbmRlci9NCk1hcnlsb3UvTQpNYXNhZGEvTQpNYXNhaS9NCk1hc2FyeWsvTQpNYXNjYWduaS9NCk1hc2VmaWVsZC9NCk1hc2VyYXRpL00KTWFzZXJ1L00KTWFzaGhhZC9NCk1hc29uL01TCk1hc29uaWMvTQpNYXNvbml0ZS9NCk1hc3MvTVMKTWFzc2FjaHVzZXR0cy9NCk1hc3Nhc29pdC9NCk1hc3NlbmV0L00KTWFzc2V5L00KTWFzdGVyL1MKTWFzdGVyQ2FyZC9NCk1hc3RlcnMvTQpNYXRoZXIvTQpNYXRoZXcvU00KTWF0aGV3cy9NCk1hdGhld3Nvbi9NCk1hdGhpYXMvTQpNYXRoaXMvTQpNYXRpbGRhL00KTWF0aXNzZS9NCk1hdHQvTQpNYXR0ZWwvTQpNYXR0ZXJob3JuL00KTWF0dGhldy9TTQpNYXR0aGV3cy9NCk1hdHRoaWFzL00KTWF0dGllL00KTWF1ZC9NCk1hdWRlL00KTWF1Z2hhbS9NCk1hdWkvTQpNYXVwYXNzYW50L00KTWF1cmEvTQpNYXVyZWVuL00KTWF1cmlhYy9NCk1hdXJpY2UvTQpNYXVyaWNpby9NCk1hdXJpbmUvTQpNYXVyaXRhbmlhL00KTWF1cml0YW5pYW4vU00KTWF1cml0aWFuL1NNCk1hdXJpdGl1cy9NCk1hdXJvL00KTWF1cm9pcy9NCk1hdXJ5YW4vTQpNYXVzZXIvTQpNYXZpcy9NCk1heC9NCk1heGltaWxpYW4vTQpNYXhpbmUvTQpNYXh3ZWxsL00KTWF5L1NNUgpNYXlhL1NNCk1heWFuL01TCk1heWVyL00KTWF5ZmFpci9NCk1heWZsb3dlci9NCk1heW5hcmQvTQpNYXlvL00KTWF5cG9sZQpNYXlyYS9NCk1heXMvTQpNYXl0YWcvTQpNYXphbWEvTQpNYXphcmluL00KTWF6YXRsYW4vTQpNYXpkYS9NCk1hem9sYS9NCk1henppbmkvTQpNYi9NCk1iYWJhbmUvTQpNYmluaS9NCk1jQWRhbS9NCk1jQnJpZGUvTQpNY0NhaW4vTQpNY0NhbGwvTQpNY0NhcnRoeS9NCk1jQ2FydGh5aXNtL00KTWNDYXJ0bmV5L00KTWNDYXJ0eS9NCk1jQ2xhaW4vTQpNY0NsZWxsYW4vTQpNY0NsdXJlL00KTWNDb25uZWxsL00KTWNDb3JtaWNrL00KTWNDb3kvTQpNY0NyYXkvTQpNY0N1bGxvdWdoL00KTWNEYW5pZWwvTQpNY0RvbmFsZC9NCk1jRG9ubmVsbC9NCk1jRG93ZWxsL00KTWNFbnJvZS9NCk1jRmFkZGVuL00KTWNGYXJsYW5kL00KTWNHZWUvTQpNY0dvdmVybi9NCk1jR293YW4vTQpNY0d1ZmZleS9NCk1jR3VpcmUvTQpNY0ludG9zaC9NCk1jSW50eXJlL00KTWNLYXkvTQpNY0tlZS9NCk1jS2VuemllL00KTWNLaW5sZXkvTQpNY0tpbm5leS9NCk1jS25pZ2h0L00KTWNMYXVnaGxpbi9NCk1jTGVhbi9NCk1jTGVvZC9NCk1jTHVoYW4vTQpNY01haG9uL00KTWNNaWxsYW4vTQpNY05hbWFyYS9NCk1jTmF1Z2h0b24vTQpNY05laWwvTQpNY1BoZXJzb24vTQpNY1F1ZWVuL00KTWNWZWlnaC9NCk1kL00KTWUKTWVhZC9NCk1lYWRlL00KTWVhZG93cy9NCk1lYWdhbi9NCk1lYW55L00KTWVjY2EvTVMKTWVkYW4vTQpNZWRlYS9NCk1lZGVsbGluL00KTWVkaWEvTQpNZWRpY2FpZC9TTQpNZWRpY2FyZS9TTQpNZWRpY2kvTQpNZWRpbmEvTQpNZWRpdGVycmFuZWFuL01TCk1lZHVzYS9NCk1lZy9NCk1lZ2FuL00KTWVnaGFuL00KTWVpZXIvTQpNZWlnaGVuL00KTWVpamkvTQpNZWlyL00KTWVqaWEvTQpNZWtvbmcvTQpNZWwvTQpNZWxhbmVzaWEvTQpNZWxhbmVzaWFuL00KTWVsYW5pZS9NCk1lbGJhL00KTWVsYm91cm5lL00KTWVsY2hpb3IvTQpNZWxjaGl6ZWRlay9NCk1lbGVuZGV6L00KTWVsaW5kYS9NCk1lbGlzYS9NCk1lbGlzYW5kZS9NCk1lbGlzc2EvTQpNZWxsb24vTQpNZWxvZHkvTQpNZWxwb21lbmUvTQpNZWx0b24vTQpNZWx2YS9NCk1lbHZpbGxlL00KTWVsdmluL00KTWVtbGluZy9NCk1lbXBoaXMvTQpNZW5hbmRlci9NCk1lbmNpdXMvTQpNZW5ja2VuL00KTWVuZGVsL00KTWVuZGVsZWV2L00KTWVuZGVsaWFuL00KTWVuZGVsc3NvaG4vTQpNZW5kZXovTQpNZW5kb2Npbm8vTQpNZW5kb3phL00KTWVuZWxhdXMvTQpNZW5lbGlrL00KTWVuZXMvTQpNZW5nemkKTWVua2FsaW5hbi9NCk1lbmthci9NCk1lbmtlbnQvTQpNZW5uZW4vTQpNZW5ub25pdGUvTVMKTWVub21pbmVlL00KTWVub3R0aS9NCk1lbnNhL00KTWVudGhvbGF0dW0vTQpNZW51aGluL00KTWVuemllcy9NCk1lcGhpc3RvCk1lcGhpc3RvcGhlbGVzL00KTWVyYWsvTQpNZXJjYWRvL00KTWVyY2F0b3IvTQpNZXJjZWRlcy9NCk1lcmNlci9NCk1lcmNpYS9NCk1lcmNrL00KTWVyY3Vyb2Nocm9tZS9NCk1lcmN1cnkvU00KTWVyZWRpdGgvTQpNZXJpbm8vTQpNZXJsZS9NCk1lcmxpbi9NCk1lcmxvdC9NCk1lcm92aW5naWFuL00KTWVycmlhbS9NCk1lcnJpY2svTQpNZXJyaWxsL00KTWVycmltYWNrL00KTWVycml0dC9NCk1lcnRoaW9sYXRlL00KTWVydG9uL00KTWVydmluL00KTWVzYS9NCk1lc2FiaS9NCk1lc21lci9NCk1lc29saXRoaWMvTQpNZXNvcG90YW1pYS9NCk1lc29wb3RhbWlhbgpNZXNvem9pYy9NCk1lc3NlcnNjaG1pZHQvTQpNZXNzaWFlbi9NCk1lc3NpYWgvTQpNZXNzaWFocwpNZXNzaWFuaWMKTWVzc2lldXJzCk1ldGFsbGljYS9NCk1ldGFtdWNpbC9NCk1ldGhvZGlzbS9TTQpNZXRob2Rpc3QvU00KTWV0aHVzZWxhaC9NCk1ldHRlcm5pY2gvTQpNZXVzZS9NCk1leApNZXhpY2FsaS9NCk1leGljYW4vTVMKTWV4aWNvL00KTWV5ZXIvTVMKTWV5ZXJiZWVyL00KTWV5ZXJzL00KTWZ1bWUvTQpNZy9NCk1ncgpNaUcvTQpNaWEvTQpNaWFtaS9NUwpNaWFwbGFjaWR1cy9NCk1pY2FoL00KTWljYXdiZXIvTQpNaWNoL00KTWljaGFlbC9NCk1pY2hhZWxtYXMvTVMKTWljaGVhbC9NCk1pY2hlbC9NCk1pY2hlbGFuZ2Vsby9NCk1pY2hlbGUvTQpNaWNoZWxpbi9NCk1pY2hlbGxlL00KTWljaGVsb2IvTQpNaWNoZWxzb24vTQpNaWNoaWdhbi9NCk1pY2hpZ2FuZGVyL01TCk1pY2hpZ2FuaXRlCk1pY2svTQpNaWNrZXkvTQpNaWNraWUvTQpNaWNreS9NCk1pY21hYy9TTQpNaWNyb25lc2lhL00KTWljcm9uZXNpYW4vTQpNaWNyb3NvZnQvTQpNaWRhcy9NCk1pZGRsZXRvbi9NCk1pZGVhc3QKTWlkZWFzdGVybgpNaWRsYW5kL01TCk1pZHdheS9NCk1pZHdlc3QvTQpNaWR3ZXN0ZXJuL01SCk1pZ3VlbC9NCk1pa2UvTQpNaWtoYWlsL00KTWlrb3lhbi9NCk1pbGFncm9zL00KTWlsYW4vTQpNaWxhbmVzZQpNaWxkcmVkL00KTWlsZXMvTQpNaWxmb3JkL00KTWlsa2VuL00KTWlsbC9TTVIKTWlsbGFyZC9NCk1pbGxheS9NCk1pbGxlci9NCk1pbGxldC9NCk1pbGxpY2VudC9NCk1pbGxpZS9NCk1pbGxpa2FuL00KTWlsbHMvTQpNaWxuZS9NCk1pbG8vTQpNaWxvc2V2aWMvTQpNaWxxdWV0b2FzdC9NCk1pbHRpYWRlcy9NCk1pbHRvbi9NCk1pbHRvbmljL00KTWlsdG93bi9NCk1pbHdhdWtlZS9NCk1pbWkvTQpNaW1vc2EvTQpNaW4vTQpNaW5hbW90by9NCk1pbmRhbmFvL00KTWluZG9yby9NCk1pbmR5L00KTWluZXJ2YS9NCk1pbmcvTQpNaW5ndXMvTQpNaW5uCk1pbm5lYXBvbGlzL00KTWlubmVsbGkvTQpNaW5uZXNvdGEvTQpNaW5uZXNvdGFuL1NNCk1pbm5pZS9NCk1pbm9hbi9NUwpNaW5vbHRhL00KTWlub3MvTQpNaW5vdC9NCk1pbm90YXVyL00KTWluc2svTQpNaW5za3kvTQpNaW50YWthL00KTWludWl0L00KTWludXRlbWFuL00KTWlvY2VuZS9NCk1pci9NCk1pcmEvTQpNaXJhYmVhdS9NCk1pcmFjaC9NCk1pcmFuZGEvTQpNaXJmYWsvTQpNaXJpYW0vTQpNaXJvL00KTWlyemFtL00KTWlza2l0by9NCk1pc3MKTWlzc2lzc2F1Z2EvTQpNaXNzaXNzaXBwaS9NCk1pc3Npc3NpcHBpYW4vU00KTWlzc291cmkvTQpNaXNzb3VyaWFuL01TCk1pc3N5L00KTWlzdGFzc2luaS9NCk1pc3RlcgpNaXN0cmVzcwpNaXN0eS9NCk1pdGNoL00KTWl0Y2hlbC9NCk1pdGNoZWxsL00KTWl0Zm9yZC9NCk1pdGhyYS9NCk1pdGhyaWRhdGVzL00KTWl0c3ViaXNoaS9NCk1pdHRlcnJhbmQvTQpNaXR0eS9NCk1pdHppL00KTWl4dGVjL00KTWl6YXIvTQpNawpNbGxlCk1tZS9TCk1uL00KTW5lbW9zeW5lL00KTW8vTQpNb2JpbC9NCk1vYmlsZS9NCk1vYnV0dS9NCk1vZGVzdG8vTQpNb2RpZ2xpYW5pL00KTW9lL00KTW9ldC9NCk1vZ2FkaXNodS9NCk1vZ3VsL01TCk1vaGFjcy9NCk1vaGFtZWQvTQpNb2hhbW1hZC9NCk1vaGFtbWVkYW4vU00KTW9oYW1tZWRhbmlzbS9TTQpNb2hhdmUvU00KTW9oYXdrL1NNCk1vaGVnYW4KTW9oby9NCk1vaG9yb3ZpY2ljL00KTW9pcmEvTQpNb2lzZXMvTQpNb2lzZXlldi9NCk1vamF2ZS9TTQpNb2xkYXZpYS9NCk1vbGRhdmlhbgpNb2xkb3ZhL00KTW9sZG92YW4KTW9saWVyZS9NCk1vbGluYS9NCk1vbGwvTQpNb2xsaWUvTQpNb2xseS9NCk1vbG5hci9NCk1vbG9jaC9NCk1vbG9rYWkvTQpNb2xvdG92L00KTW9sdWNjYXMvTQpNb21iYXNhL00KTW9uL1NNCk1vbmEvTQpNb25hY2FuCk1vbmFjby9NCk1vbmRhbGUvTQpNb25kYXkvU00KTW9uZHJpYW4vTQpNb25lZ2FzcXVlL1NNCk1vbmVyYS9NCk1vbmV0L00KTW9uZ29sL1NNCk1vbmdvbGlhL00KTW9uZ29saWFuL1NNCk1vbmdvbGljL00KTW9uZ29sb2lkCk1vbmljYS9NCk1vbmlxdWUvTQpNb25rL00KTW9ubW91dGgvTQpNb25vbmdhaGVsYS9NCk1vbnJvZS9NCk1vbnJvdmlhL00KTW9uc2FudG8vTQpNb25zaWV1ci9NCk1vbnNpZ25vci9TTQpNb250L00KTW9udGFndWUvTQpNb250YWlnbmUvTQpNb250YW5hL00KTW9udGFuYW4vU00KTW9udGNhbG0vTQpNb250ZS9NCk1vbnRlbmVncmluL00KTW9udGVuZWdyby9NCk1vbnRlcnJleS9NCk1vbnRlc3F1aWV1L00KTW9udGVzc29yaS9NCk1vbnRldmVyZGkvTQpNb250ZXZpZGVvL00KTW9udGV6dW1hL00KTW9udGdvbGZpZXIvTQpNb250Z29tZXJ5L00KTW9udGljZWxsby9NCk1vbnRveWEvTQpNb250cGVsaWVyL00KTW9udHJhY2hldC9NCk1vbnRyZWFsL00KTW9udHNlcnJhdC9NCk1vbnR5L00KTW9vZHkvTQpNb29nL00KTW9vbi9NCk1vb25leS9NCk1vb3IvU00KTW9vcmUvTQpNb29yaXNoL00KTW9yYWxlcy9NCk1vcmFuL00KTW9yYXZpYS9NCk1vcmF2aWFuL00KTW9yZHJlZC9NCk1vcmUvTQpNb3Jlbm8vTQpNb3JnYW4vU00KTW9yaWFydHkvTQpNb3Jpbi9NCk1vcmlzb24vTQpNb3JpdGEvTQpNb3JsZXkvTQpNb3Jtb24vU00KTW9ybW9uaXNtL1NNCk1vcm8vTQpNb3JvY2Nhbi9TTQpNb3JvY2NvL00KTW9yb25pL00KTW9ycGhldXMvTQpNb3JwaHkvTQpNb3JyaXMvTQpNb3JyaXNvbi9NCk1vcnJvdy9NCk1vcnNlL00KTW9ydC9NCk1vcnRpbWVyL00KTW9ydG9uL00KTW9zYWljL00KTW9zY293L00KTW9zZWxleS9NCk1vc2VsbGUvTQpNb3Nlcy9NCk1vc2xleS9NCk1vc3MvTQpNb3N1bC9NCk1vdG9yb2xhL00KTW90b3duL00KTW90cmluL00KTW90dC9NCk1vdWx0b24vTQpNb3VudC9NCk1vdW50YmF0dGVuL00KTW91bnRpZS9NUwpNb3Vzc29yZ3NreS9NCk1vdXRoZS9NCk1vdXRvbi9NCk1vd2dsaS9NCk1vemFtYmljYW4vU00KTW96YW1iaXF1ZS9NCk1vemFydC9NCk1vemlsbGEvTQpNci9TTQpNcy9TCk1zZ3IKTXQKTXVhd2l5YS9NCk11YmFyYWsvTQpNdWVsbGVyL00KTXVlbnN0ZXIvTVMKTXVnYWJlL00KTXVoYW1tYWQvTQpNdWhhbW1hZGFuL01TCk11aGFtbWFkYW5pc20vU00KTXVpci9NCk11amliL00KTXVsZGVyL00KTXVsbGVuL00KTXVsbGVyL00KTXVsbGlnYW4vTQpNdWxsaWthbi9NCk11bGxpbnMvTQpNdWxyb25leS9NCk11bHRhbi9NCk11bHRpY3MKTXVtYmFpL00KTXVtZm9yZC9NCk11bmNoL00KTXVuY2hoYXVzZW4vTQpNdW5pY2gvTQpNdW5vei9NCk11bnJvL00KTXVuc3Rlci9NCk11cHBldC9NCk11cmFzYWtpL00KTXVyYXQvTQpNdXJjaGlzb24vTQpNdXJjaWEKTXVyZG9jaC9NCk11cmllbC9NCk11cmlsbG8vTQpNdXJpbmUvTQpNdXJtYW5zay9NCk11cnBoeS9NCk11cnJheS9NCk11cnJvdy9NCk11cnJ1bWJpZGdlZS9NCk11c2NhdC9NCk11c2Nvdml0ZS9NCk11c2NvdnkvTQpNdXNlL00KTXVzaGFycmFmL00KTXVzaWFsL00KTXVza29nZWUvTQpNdXNsaW0vTVMKTXVzc29saW5pL00KTXVzc29yZ3NreS9NCk11dHN1aGl0by9NCk11emFrL00KTXlTcGFjZS9NCk15YW5tYXIvTQpNeWNlbmFlL00KTXljZW5hZWFuL00KTXllcnMvTQpNeWxhci9NUwpNeWxlcy9NCk15cmEvTQpNeXJkYWwvTQpNeXJuYS9NCk15cm9uL00KTXlydGxlL00KTXlzb3JlL00KTXlzdC9NCk4nRGphbWVuYQpOL01ECk5BQUNQL00KTkFGVEEvTQpOQVNBL00KTkFTQ0FSL00KTkFTREFRL00KTkFUTy9NCk5CCk5CQS9NCk5CQy9NCk5CUwpOQwpOQ0FBL00KTkNPCk5ECk5FL00KTkVICk5GCk5GQwpORkwvTQpOSApOSEwvTQpOSUgKTklNQlkKTkoKTkxSQgpOTQpOT1JBRC9NCk5PVwpOUApOUFIvTQpOUgpOUkEKTlJDCk5TCk5TQS9NCk5TQwpOU0YKTlNGVwpOVApOVgpOVy9NCk5XVApOWQpOWUMKTllTRQpOWgpOYS9NCk5hYmlzY28vTQpOYWJva292L00KTmFkZXIvTQpOYWRpYS9NCk5hZGluZS9NCk5hZ2FzYWtpL00KTmFnb3lhL00KTmFncHVyL00KTmFneS9NCk5haHVhdGwvTVMKTmFodW0vTQpOYWlwYXVsL00KTmFpci9NCk5haXJvYmkvTQpOYWlzbWl0aC9NCk5hbS9NCk5hbWF0aC9NCk5hbWliaWEvTQpOYW1pYmlhbi9NUwpOYW4vTQpOYW5hay9NCk5hbmNoYW5nL00KTmFuY3kvTQpOYW5ldHRlL00KTmFuamluZy9NCk5hbm5pZS9NCk5hbm9vay9NCk5hbnNlbi9NCk5hbnRlcy9NCk5hbnR1Y2tldC9NCk5hb21pL00KTmFwaHRhbGkvTQpOYXBpZXIvTQpOYXBsZXMvTQpOYXBvbGVvbi9NUwpOYXBvbGVvbmljL00KTmFwc3Rlci9NCk5hcmNpc3N1cy9NCk5hcm1hZGEvTQpOYXJuaWEvTQpOYXJyYWdhbnNldApOYXJyYWdhbnNldHQvTQpOYXNoL00KTmFzaHVhL00KTmFzaHZpbGxlL00KTmFzc2F1L00KTmFzc2VyL00KTmF0L00KTmF0YWxpYS9NCk5hdGFsaWUvTQpOYXRhc2hhL00KTmF0Y2hlei9NCk5hdGUvTU4KTmF0aGFuL1NNCk5hdGhhbmllbC9NCk5hdGhhbnMvTQpOYXRpb24vTQpOYXRpb253aWRlL00KTmF0aXZpdHkvTQpOYXVnYWh5ZGUvTQpOYXVydS9NCk5hdXRpbHVzL00KTmF2YWpvL1NNCk5hdmFqb2VzCk5hdmFycmUvTQpOYXZhcnJvL00KTmF2cmF0aWxvdmEvTQpOYXZ5Ck5hemFyZW5lL00KTmF6YXJldGgvTQpOYXpjYS9NCk5hemkvU00KTmF6aXNtL01TCk5iL00KTmQvTQpOZGphbWVuYS9NCk5lL00KTmVXUwpOZVdTZXMKTmVhbC9NCk5lYW5kZXJ0aGFsL1NNCk5lYXBvbGl0YW4vTQpOZWIKTmVicgpOZWJyYXNrYS9NCk5lYnJhc2thbi9NUwpOZWJ1Y2hhZG5lenphci9NCk5lZC9NCk5lZmVydGl0aS9NCk5lZ2V2L00KTmVncmVzcy9NUwpOZWdyaXR1ZGUKTmVncm8vTVMKTmVncm9lcwpOZWdyb2lkL1NNCk5lZ3Jvcy9NCk5laGVtaWFoL00KTmVocnUvTQpOZWlsL00KTmVsZGEvTQpOZWxsL00KTmVsbGllL00KTmVsbHkvTQpOZWxzZW4vTQpOZWxzb24vTQpOZW1idXRhbC9NCk5lbWVzaXMvTQpOZW9nZW5lL00KTmVvbGl0aGljCk5lcGFsL00KTmVwYWxlc2UvTQpOZXBhbGkvTVMKTmVwdHVuZS9NCk5lcmVpZC9NCk5lcmYvTQpOZXJvL00KTmVydWRhL00KTmVzY2FmZS9NCk5lc3NlbHJvZGUvTQpOZXN0bGUvTQpOZXN0b3IvTQpOZXN0b3JpdXMvTQpOZXRmbGl4L00KTmV0aGVybGFuZGVyL1NNCk5ldGhlcmxhbmRzL00KTmV0c2NhcGUvTQpOZXR0aWUvTQpOZXR6YWh1YWxjb3lvdGwvTQpOZXYvTQpOZXZhL00KTmV2YWRhL00KTmV2YWRhbi9TTQpOZXZhZGlhbgpOZXZpcy9NCk5ldnNreS9NCk5ld2Fyay9NCk5ld2Nhc3RsZS9NCk5ld2ZvdW5kbGFuZC9NUlMKTmV3bWFuL00KTmV3cG9ydC9NCk5ld3N3ZWVrL00KTmV3dG9uL00KTmV3dG9uaWFuL00KTmV4aXMvTQpOZ2FsaWVtYS9NCk5ndXllbi9NCk5pL00KTmlhZ2FyYS9NCk5pYW1leS9NCk5pYmVsdW5nL00KTmljYWVhL00KTmljYXJhZ3VhL00KTmljYXJhZ3Vhbi9TTQpOaWNjb2xvL00KTmljZS9NCk5pY2VuZS9NCk5pY2hpcmVuL00KTmljaG9sYXMvTQpOaWNob2xlL00KTmljaG9scy9NCk5pY2hvbHNvbi9NCk5pY2svTQpOaWNrZWxvZGVvbi9NCk5pY2tsYXVzL00KTmlja29sYXMvTQpOaWNvYmFyL00KTmljb2RlbXVzL00KTmljb2xhL1NNCk5pY29sYXMvTQpOaWNvbGUvTQpOaWNvc2lhL00KTmllYnVoci9NCk5pZWxzZW4vTQpOaWV0enNjaGUvTQpOaWV2ZXMvTQpOaWdlbC9NCk5pZ2VyL00KTmlnZXJpYS9NCk5pZ2VyaWFuL01TCk5pZ2VyaWVuL00KTmlnaHRpbmdhbGUvTQpOaWppbnNreS9NCk5pa2UvTQpOaWtpdGEvTQpOaWtrZWkvTQpOaWtraS9NCk5pa29sYWkvTQpOaWtvbi9NCk5pbGUvTQpOaW1pdHovTQpOaW1yb2QvTQpOaW5hL00KTmluZXZlaC9NCk5pbnRlbmRvL00KTmlvYmUvTQpOaXBwb24vTQpOaXBwb25lc2UvTQpOaXJlbmJlcmcvTQpOaXJ2YW5hL00KTmlzYW4vTQpOaXNlaS9NCk5pc3Nhbi9NCk5pdGEvTQpOaXZlYS9NCk5peG9uL00KTmtydW1haC9NCk5vL1NNCk5vRG96L00KTm9haC9NCk5vYmVsL00KTm9iZWxpc3QvTVMKTm9ibGUvTQpOb2UvTQpOb2VsL1NNCk5vZWxsZS9NCk5vZW1pL00KTm9raWEvTQpOb2xhL00KTm9sYW4vTQpOb21lL00KTm9uYS9NCk5vb3RrYS9NCk5vcmEvTQpOb3JiZXJ0L00KTm9yYmVydG8vTQpOb3JkaWMvTVMKTm9yZWVuL00KTm9yZm9say9NCk5vcmllZ2EvTQpOb3JtYS9NCk5vcm1hbi9NUwpOb3JtYW5kL00KTm9ybWFuZHkvTQpOb3JwbGFudC9NCk5vcnJpcy9NCk5vcnNlL00KTm9yc2VtYW4vTQpOb3JzZW1lbi9NCk5vcnRoL00KTm9ydGhhbXB0b24vTQpOb3J0aGVhc3QvTVMKTm9ydGhlcm5lci9NCk5vcnRocm9wL00KTm9ydGhydXAvTQpOb3J0aHMKTm9ydGh3ZXN0L1NNCk5vcnRvbi9NCk5vcncKTm9yd2F5L00KTm9yd2VnaWFuL1NNCk5vcndpY2gvTQpOb3NmZXJhdHUvTQpOb3N0cmFkYW11cy9NCk5vdHRpbmdoYW0vTQpOb3Vha2Nob3R0L00KTm91bWVhL00KTm92L00KTm92YS9NCk5vdmFydGlzL00KTm92ZW1iZXIvTVMKTm92Z29yb2QvTQpOb3ZvY2Fpbi9NUwpOb3ZvY2FpbmUKTm92b2t1em5ldHNrL00KTm92b3NpYmlyc2svTQpOb3h6ZW1hL00KTm95Y2UvTQpOb3llcy9NCk5wL00KTnViaWEvTQpOdWJpYW4vTQpOdWt1YWxvZmEvTQpOdW1iZXJzL00KTnVuYXZ1dC9NCk51bmV6L00KTnVua2kvTQpOdXJlbWJlcmcvTQpOdXJleWV2L00KTnV0cmFTd2VldC9NCk55UXVpbC9NCk55YXNhL00KTnllcmVyZS9NCk8nQnJpZW4vTQpPJ0Nhc2V5L00KTydDb25uZWxsL00KTydDb25ub3IvTQpPJ0Rvbm5lbGwvTQpPJ0hhcmEvTQpPJ0hpZ2dpbnMvTQpPJ0tlZWZmZS9NCk8nTmVpbC9NCk8nTmVpbGwvTQpPJ1JvdXJrZS9NCk8nVG9vbGUvTQpPL1NNCk9BUy9NCk9CCk9DUgpPRC9TTQpPRQpPRUQKT0gKT0hTQS9NCk9KCk9LL1NNREcKT01CL00KT04KT1BFQy9NCk9SCk9TL00KT1NIQS9NCk9TZXMKT1QKT1RCCk9UQwpPVE9ICk9haHUvTQpPYWtsYW5kL00KT2FrbGV5L00KT2F0ZXMvTQpPYXhhY2EvTQpPYi9NCk9iYWRpYWgvTQpPYmFtYS9NCk9iYW1hY2FyZQpPYmVybGluL00KT2Jlcm9uL00KT2NjYW0vTQpPY2NpZGVudApPY2NpZGVudGFsL01TCk9jZWFuaWEvTQpPY2VhbnNpZGUKT2NlYW51cy9NCk9jaG9hL00KT2N0L00KT2N0YXZpYS9NCk9jdGF2aWFuL00KT2N0YXZpby9NCk9jdG9iZXIvU00KT2RlbGwvTQpPZGVyL00KT2Rlc3NhL00KT2RldHMvTQpPZGluL00KT2Rpcy9NCk9kb20vTQpPZHlzc2V1cy9NCk9keXNzZXkvTQpPZWRpcGFsL00KT2VkaXB1cy9NCk9lcnN0ZWQvTQpPZmVsaWEvTQpPZmZlbmJhY2gvTQpPZmZpY2VNYXgvTQpPZ2JvbW9zaG8vTQpPZ2Rlbi9NCk9naWx2eS9NCk9nbGV0aG9ycGUvTQpPaGlvL00KT2hpb2FuL1NNCk9pc2UvTQpPamlid2EvU00KT2theWFtYQpPa2VlY2hvYmVlL00KT2tlZmVub2tlZS9NCk9raG90c2svTQpPa2luYXdhL00KT2tpbmF3YW4KT2tsYQpPa2xhaG9tYS9NCk9rbGFob21hbi9NCk9rdG9iZXJmZXN0L00KT2xhL00KT2xhZi9NCk9sYWp1d29uL00KT2xhdi9NCk9sZGVuYnVyZy9NCk9sZGZpZWxkL00KT2xkc21vYmlsZS9NCk9sZHV2YWkvTQpPbGVuL00KT2xlbmVrL00KT2xnYS9NCk9saWdvY2VuZS9NCk9saW4vTQpPbGl2ZS9NUgpPbGl2ZXIvTQpPbGl2ZXR0aS9NCk9saXZpYS9NCk9saXZpZXIvTQpPbGxpZS9NCk9sbWVjL00KT2xtc3RlZC9NCk9sc2VuL00KT2xzb24vTQpPbHltcGlhL1NNCk9seW1waWFkL01TCk9seW1waWFuL01TCk9seW1waWMvU00KT2x5bXBpY3MvTQpPbHltcHVzL00KT21haGEvTVMKT21hbi9NCk9tYW5pL01TCk9tYXIvTQpPbWF5eWFkL00KT21kdXJtYW4vTQpPbW5pcG90ZW50Ck9tc2svTQpPbmFzc2lzL00KT25lYWwvTQpPbmVnYS9NCk9uZWdpbi9NCk9uZWlkYS9NUwpPbmlvbi9NCk9uby9NCk9ub25kYWdhL01TCk9uc2FnZXIvTQpPbnQKT250YXJpYW4KT250YXJpby9NCk9vcnQvTQpPcGFsL00KT3BlbC9NCk9wZW5PZmZpY2UvTQpPcGhlbGlhL00KT3BoaXVjaHVzL00KT3BwZW5oZWltZXIvTQpPcHBvc2l0aW9uCk9wcmFoL00KT3JhL00KT3JhY2xlL00KT3Jhbi9NCk9yYW5nZS9NCk9yYW5qZXN0YWQvTQpPcmJpc29uL00KT3Jkb3ZpY2lhbi9NCk9yZS9OCk9yZWcKT3JlZ29uL00KT3JlZ29uaWFuL1NNCk9yZW8vTQpPcmVzdGVzL00KT3JpZW50L00KT3JpZW50YWwvTVMKT3JpZW50YWxpc20KT3Jpbi9NCk9yaW5vY28vTQpPcmlvbi9NCk9yaXlhL00KT3JpemFiYS9NCk9ya25leS9NCk9ybGFuZG8vTQpPcmxlYW5zL00KT3Jsb24vTVMKT3JseS9NCk9ycGhldXMvTQpPcnBoaWMvTQpPcnIvTQpPcnRlZ2EvTQpPcnRob2RveApPcnRpei9NCk9ydmFsL00KT3J2aWxsZS9NCk9yd2VsbC9NCk9yd2VsbGlhbi9NCk9zL00KT3NhZ2UvTVMKT3Nha2EvTQpPc2JlcnQvTQpPc2Jvcm4vTQpPc2Jvcm5lL00KT3NjYXIvTVMKT3NjZW9sYS9NCk9zZ29vZC9NCk9zaGF3YS9NCk9zaGtvc2gvTQpPc2lyaXMvTQpPc2xvL00KT3NtYW4vTQpPc3Ryb2dvdGgvTQpPc3R3YWxkL00KT3N2YWxkby9NCk9zd2FsZC9NCk90aGVsbG8vTQpPdGlzL00KT3R0YXdhL1NNCk90dG8vTQpPdHRvbWFuL00KT3VhZ2Fkb3Vnb3UvTQpPdWlqYS9NUwpPdmlkL00KT3dlbi9TTQpPd2Vucy9NCk94Zm9yZC9TTQpPeG5hcmQvTQpPeG9uaWFuL00KT3h1cy9NCk94eWNvbnRpbi9NCk96L00KT3phcmsvTVMKT3phcmtzL00KT3p5bWFuZGlhcy9NCk96emllL00KUC9NTgpQQS9NClBBQy9NClBBUkMvUwpQQVNDQUwKUEJTL00KUEJYClBDL1NNClBDQgpQQ01DSUEKUENQL00KUEQKUERGClBEUQpQRFQKUEUKUEVUL00KUEZDClBHClBHUApQSU4KUEoncwpQTE8vTQpQTS9TTURHClBNUy9NClBPClBPVy9NClBQClBQUwpQUgpQUkMvTQpQUk8KUFMvTQpQU1QvTQpQVApQVEEvTQpQVE8KUFZDL00KUFcKUFgKUGEvTQpQYWFyL00KUGFibG8vTQpQYWJsdW0vTQpQYWJzdC9NClBhY2UvTQpQYWNoZWNvL00KUGFjaWZpYy9NClBhY2luby9NClBhY2thcmQvTQpQYWRhbmcKUGFkZXJld3NraS9NClBhZGlsbGEvTQpQYWdhbmluaS9NClBhZ2UvTQpQYWdsaWEvTQpQYWhsYXZpL00KUGFpZ2UvTQpQYWluZS9NClBhaXV0ZS9TTQpQYWtpc3Rhbi9NClBha2lzdGFuaS9TTQpQYWxlbWJhbmcvTQpQYWxlb2NlbmUvTQpQYWxlb2dlbmUvTQpQYWxlb2xpdGhpYy9NClBhbGVvem9pYy9NClBhbGVybW8vTQpQYWxlc3RpbmUvTQpQYWxlc3Rpbmlhbi9TTQpQYWxlc3RyaW5hL00KUGFsZXkvTQpQYWxpa2lyL00KUGFsaXNhZGVzL00KUGFsbGFkaW8vTQpQYWxtZXIvTQpQYWxtZXJzdG9uL00KUGFsbW9saXZlL00KUGFsbXlyYS9NClBhbG9tYXIvTQpQYW0vTQpQYW1lbGEvTQpQYW1pcnMvTQpQYW1wZXJzL00KUGFuL00KUGFuYW1hL1NNClBhbmFtYW5pYW4vTVMKUGFuYXNvbmljL00KUGFuZG9yYS9NClBhbmdhZWEvTQpQYW5raHVyc3QvTQpQYW5tdW5qb20vTQpQYW5zeS9NClBhbnRhZ3J1ZWwvTQpQYW50YWxvb24vTQpQYW50aGVvbi9NClBhbnphL00KUGFyYWNlbHN1cy9NClBhcmFjbGV0ZS9NClBhcmFkaXNlClBhcmFndWF5L00KUGFyYWd1YXlhbi9NUwpQYXJhbHltcGljL1MKUGFyYW1hcmliby9NClBhcmFtb3VudC9NClBhcmFuYS9NClBhcmNoZWVzaS9NClBhcmV0by9NClBhcmlzL00KUGFyaXNpYW4vTVMKUGFyay9TTVIKUGFya2VyL00KUGFya2luc29uL00KUGFya2luc29uaXNtClBhcmttYW4vTQpQYXJrcy9NClBhcmxpYW1lbnQvTQpQYXJtZW5pZGVzClBhcm1lc2FuL01TClBhcm5hc3N1cy9NUwpQYXJuZWxsL00KUGFyci9NClBhcnJpc2gvTQpQYXJzaWZhbC9NClBhcnNvbnMvTQpQYXJ0aGVub24vTQpQYXJ0aGlhL00KUGFzYWRlbmEvTQpQYXNjYWwvU00KUGFzcXVhbGUvTQpQYXNzaW9uL1NNClBhc3NvdmVyL01TClBhc3Rlcm5hay9NClBhc3RldXIvTQpQYXQvTQpQYXRhZ29uaWEvTQpQYXRhZ29uaWFuL00KUGF0ZS9NClBhdGVsL00KUGF0ZXJzb24vTQpQYXRuYS9NClBhdHJpY2EvTQpQYXRyaWNlL00KUGF0cmljaWEvTQpQYXRyaWNrL00KUGF0c3kvTQpQYXR0ZXJzb24vTQpQYXR0aS9NClBhdHRvbi9NClBhdHR5L00KUGF1bC9HTQpQYXVsYS9NClBhdWxldHRlL00KUGF1bGkvTQpQYXVsaW5lL00KUGF1bGluZy9NClBhdmFyb3R0aS9NClBhdmxvdi9NClBhdmxvdmEvTQpQYXZsb3ZpYW4vTQpQYXduZWUvU00KUGF5UGFsL00KUGF5bmUvTQpQYi9NClBkL00KUGVhYm9keS9NClBlYWNlL00KUGVhbGUvTQpQZWFybC9NClBlYXJsaWUvTQpQZWFyc29uL00KUGVhcnkvTQpQZWNob3JhL00KUGVjay9NClBlY2tpbnBhaC9NClBlY29zL00KUGVkcm8vTQpQZWVsL00KUGVnL00KUGVnYXN1cy9NUwpQZWdneS9NClBlaS9NClBlaXBpbmcvTQpQZWtpbmcvU00KUGVraW5nZXNlL1NNClBlbGUvTQpQZWxlZS9NClBlbG9wb25uZXNlL00KUGVtYnJva2UvTQpQZW4vTQpQZW5hL00KUGVuZGVyZWNraS9NClBlbmVsb3BlL00KUGVubi9NClBlbm5hClBlbm5leS9NClBlbm5pbmd0b24vTQpQZW5uc3lsdmFuaWEvTQpQZW5uc3lsdmFuaWFuL01TClBlbm55L00KUGVubnpvaWwvTQpQZW5zYWNvbGEvTQpQZW50YWdvbi9NClBlbnRhdGV1Y2gvTQpQZW50YXgvTQpQZW50ZWNvc3QvU00KUGVudGVjb3N0YWwvTVMKUGVudGVjb3N0YWxpc20KUGVudGl1bS9TTQpQZW9yaWEvTQpQZXBpbi9NClBlcHNpL00KUGVweXMvTQpQZXF1b3QvTQpQZXJjaGVyb24vTQpQZXJjaXZhbC9NClBlcmN5L00KUGVyZWxtYW4vTQpQZXJlei9NClBlcmljbGVhbi9NClBlcmljbGVzL00KUGVya2lucy9NClBlcmwvU00KUGVybS9NClBlcm1hbGxveS9NClBlcm1pYW4vTQpQZXJub2QvTQpQZXJvbi9NClBlcm90L00KUGVycmllci9NClBlcnJ5L1JNClBlcnNlaWQvTQpQZXJzZXBob25lL00KUGVyc2Vwb2xpcy9NClBlcnNldXMvTQpQZXJzaGluZy9NClBlcnNpYS9NClBlcnNpYW4vU00KUGVydGgvTQpQZXJ1L00KUGVydXZpYW4vTVMKUGVzaGF3YXIvTQpQZXRhaW4vTQpQZXRlL1JNWgpQZXRlci9NClBldGVycy9NTgpQZXRlcnNlbi9NClBldGVyc29uL00KUGV0cmEvTQpQZXRyYXJjaC9NClBldHR5L00KUGV1Z2VvdC9NClBmYwpQZml6ZXIvTQpQaEQvTQpQaGFlZHJhL00KUGhhZXRob24vTQpQaGFuZXJvem9pYy9NClBoYXJhb2gvTQpQaGFyYW9ocwpQaGFyaXNhaWMKUGhhcmlzYWljYWwKUGhhcmlzZWUvTVMKUGhla2RhL00KUGhlbHBzL00KUGhpZGlhcy9NClBoaWwvTVkKUGhpbGFkZWxwaGlhL00KUGhpbGJ5L00KUGhpbGVtb24vTQpQaGlsaXAvTVMKUGhpbGlwcGUvTQpQaGlsaXBwaWFucy9NClBoaWxpcHBpbmUvU00KUGhpbGlwcGluZXMvTQpQaGlsaXBzL00KUGhpbGlzdGluZS9NClBoaWxsaXAvU00KUGhpbGxpcGEvTQpQaGlsbGlwcy9NClBoaWxseS9NClBoaXBwcy9NClBob2Jvcy9NClBob2ViZS9NClBob2VuaWNpYS9NClBob2VuaWNpYW4vU00KUGhvZW5peC9NClBob3Rvc3RhdC9NUwpQaG90b3N0YXR0ZWQKUGhvdG9zdGF0dGluZwpQaHJ5Z2lhL00KUGh5bGxpcy9NClBpYWYvTQpQaWFnZXQvTQpQaWFub2xhL00KUGljYXNzby9NClBpY2NhZGlsbHkvTQpQaWNrZXJpbmcvTQpQaWNrZXR0L00KUGlja2ZvcmQvTQpQaWNrd2ljay9NClBpY3QvTQpQaWVkbW9udC9NClBpZXJjZS9NClBpZXJyZS9NClBpZXJyb3QvTQpQaWtlL00KUGlsYXRlL01TClBpbGF0ZXMvTQpQaWxjb21heW8vTQpQaWxncmltL1NNClBpbGxzYnVyeS9NClBpbmF0dWJvL00KUGluY3VzL00KUGluZGFyL00KUGlua2VydG9uL00KUGlub2NjaGlvL00KUGlub2NoZXQvTQpQaW50ZXIvTQpQaW55aW4KUGlwcGluL00KUGlyYWV1cy9NClBpcmFuZGVsbG8vTQpQaXNhL00KUGlzY2VzL00KUGlzaXN0cmF0dXMvTQpQaXNzYXJvL00KUGl0Y2Fpcm4vTQpQaXR0L1NNClBpdHRtYW4vTQpQaXR0cy9NClBpdHRzYnVyZ2gvTQpQaXVzL00KUGl6YXJyby9NClBrd3kKUGwKUGxhbmNrL00KUGxhbm8KUGxhbnRhZ2VuZXQvTQpQbGFzdGljaW5lL00KUGxhdGFlYS9NClBsYXRoL00KUGxhdG8vTQpQbGF0b25pYwpQbGF0b25pc20vTQpQbGF0b25pc3QvTQpQbGF0dGUvTQpQbGF1dHVzL00KUGxheVN0YXRpb24vTQpQbGF5Ym95L00KUGxheXRleC9NClBsZWlhZGVzL00KUGxlaXN0b2NlbmUvTQpQbGV4aWdsYXMvTVMKUGxpbnkvTQpQbGlvY2VuZS9TTQpQbHV0YXJjaC9NClBsdXRvL00KUGx5bW91dGgvTQpQbS9NClBvL00KUG9jYWhvbnRhcy9NClBvY29uby9TTQpQb2Nvbm9zL00KUG9kZ29yaWNhL00KUG9kaG9yZXR6L00KUG9kdW5rL00KUG9lL00KUG9nby9NClBvaW5jYXJlL00KUG9pcmV0L00KUG9pcm90L00KUG9pc3Nvbi9NClBvaXRpZXIvTQpQb2tlbW9uL00KUG9sL01ZClBvbGFuZC9NClBvbGFuc2tpL00KUG9sYXJpcy9NClBvbGFyb2lkL01TClBvbGUvU00KUG9saXNoL00KUG9saXRidXJvL00KUG9say9NClBvbGxhcmQvTQpQb2xsb2NrL00KUG9sbHV4L00KUG9sbHkvTQpQb2xseWFubmEvTQpQb2xvL00KUG9sdGF2YS9NClBvbHloeW1uaWEvTQpQb2x5bmVzaWEvTQpQb2x5bmVzaWFuL01TClBvbHlwaGVtdXMvTQpQb21lcmFuaWEvTQpQb21lcmFuaWFuL00KUG9tb25hL00KUG9tcGFkb3VyL00KUG9tcGVpYW4KUG9tcGVpaS9NClBvbXBleS9NClBvbmNlL00KUG9udGNoYXJ0cmFpbi9NClBvbnRpYWMvTQpQb250aWFuYWsvTQpQb29oL00KUG9vbGUvTQpQb29uYS9NClBvcGUvTQpQb3BleWUvTQpQb3BvY2F0ZXBldGwvTQpQb3BwZXIvTQpQb3BwaW5zL00KUG9wc2ljbGUvTQpQb3JmaXJpby9NClBvcnJpbWEvTQpQb3JzY2hlL00KUG9ydC9NUgpQb3J0ZXIvTQpQb3J0aWEvTQpQb3J0bGFuZC9NClBvcnRvL00KUG9ydHNtb3V0aC9NClBvcnR1Z2FsL00KUG9ydHVndWVzZS9NClBvc2VpZG9uL00KUG9zdC9NClBvdGVta2luL00KUG90b21hYy9NClBvdHNkYW0vTQpQb3R0YXdhdG9taWUvTQpQb3R0ZXIvTQpQb3R0cy9NClBvdW5kL00KUG91c3Npbi9NClBvd2VsbC9NClBvd2VyUEMvTQpQb3dlclBvaW50L00KUG93ZXJzL00KUG93aGF0YW4vTQpQb3puYW4vTQpQci9NClByYWRhL00KUHJhZG8vTQpQcmFldG9yaWFuL00KUHJhZ3VlL00KUHJhaWEvTQpQcmFrcml0L00KUHJhdGNoZXR0L00KUHJhdHQvTQpQcmF2ZGEvTQpQcmF4aXRlbGVzL00KUHJlYWtuZXNzL00KUHJlY2FtYnJpYW4vTQpQcmVtaW5nZXIvTQpQcmVteXNsaWQvTQpQcmVuc2EvTQpQcmVudGljZS9NClByZXMKUHJlc2J5dGVyaWFuL1NNClByZXNieXRlcmlhbmlzbS9NUwpQcmVzY290dC9NClByZXNsZXkvTQpQcmVzdG9uL00KUHJldG9yaWEvTQpQcmlhbS9NClByaWJpbG9mL00KUHJpY2UvTQpQcmllc3RsZXkvTQpQcmluY2UvTQpQcmluY2V0b24vTQpQcmluY2lwZS9NClByaXNjaWxsYS9NClByaXVzL00KUHJpdmF0ZQpQcm9jcnVzdGVhbi9NClByb2NydXN0ZXMvTQpQcm9jdGVyL00KUHJvY3lvbi9NClByb2YKUHJvaGliaXRpb24KUHJva29maWV2L00KUHJvbWV0aGVhbi9NClByb21ldGhldXMvTQpQcm9waGV0cwpQcm9zZXJwaW5hL00KUHJvc2VycGluZS9NClByb3RhZ29yYXMvTQpQcm90ZXJvem9pYy9NClByb3Rlc3RhbnQvTVMKUHJvdGVzdGFudGlzbS9TTQpQcm90ZXVzL00KUHJvdWRob24vTQpQcm91c3QvTQpQcm92ZW5jYWwvTVMKUHJvdmVuY2UvTQpQcm92ZXJicwpQcm92aWRlbmNlL1NNClByb3ZvL00KUHJvemFjL01TClBydWRlbmNlL00KUHJ1ZGVudGlhbC9NClBydWl0dC9NClBydXNzaWEvTQpQcnVzc2lhbi9NUwpQcnV0L00KUHJ5b3IvTQpQc2FsbXMvTQpQc2FsdGVyL01TClBzeWNoZS9NClB0L00KUHRhaC9NClB0b2xlbWFpYy9NClB0b2xlbXkvU00KUHUvTQpQdWNjaW5pL00KUHVjay9NClB1Y2tldHQvTQpQdWVibGEvTQpQdWVibG8vTQpQdWVydG8KUHVnZXQvTQpQdWdoL00KUHVsYXNraS9NClB1bGl0emVyL00KUHVsbG1hbi9NUwpQdW5jaC9NClB1bmljL00KUHVuamFiL00KUHVuamFiaS9NClB1cmFuYS9NClB1cmNlbGwvTQpQdXJkdWUvTQpQdXJpbS9NUwpQdXJpbmEvTQpQdXJpdGFuL00KUHVyaXRhbmlzbS9NUwpQdXJ1cy9NClB1c2FuL00KUHVzZXkvTQpQdXNoa2luL00KUHVzaHR1L00KUHV0aW4vTQpQdXRuYW0vTQpQdXpvL00KUHZ0ClB5Z21hbGlvbi9NClB5Z215L1NNClB5bGUvTQpQeW0vTQpQeW5jaG9uL00KUHlvbmd5YW5nL00KUHlvdHIvTQpQeXJlbmVlcy9NClB5cmV4L01TClB5cnJoaWMvTQpQeXRoYWdvcmFzL00KUHl0aGFnb3JlYW4vTQpQeXRoaWFzL00KUHl0aG9uL00KUQpRQQpRQgpRQwpRRUQKUU0KUVdFUlRZClFhZGRhZmkvTQpRYW50YXMvTQpRYXRhci9NClFhdGFyaS9NUwpRaW5nZGFvL00KUWlxaWhhci9NClFvbS9NClF1YWFsdWRlL00KUXVha2VyL01TClF1YWtlcmlzbS9TTQpRdWFvYXIvTQpRdWFzaW1vZG8vTQpRdWF0ZXJuYXJ5L00KUXVheWxlL00KUXVlClF1ZWJlYy9NClF1ZWJlY29pcy9NClF1ZWNodWEvTQpRdWVlbi9NUwpRdWVlbnMvTQpRdWVlbnNsYW5kL00KUXVlbnRpbi9NClF1ZXR6YWxjb2F0bC9NClF1ZXpvbi9NClF1aW5jeS9NClF1aW5uL00KUXVpbnRpbGlhbi9NClF1aW50b24vTQpRdWlyaW5hbC9NClF1aXNsaW5nL00KUXVpdG8vTQpRdWl4b3RlL00KUXVpeG90aXNtL00KUXVtcmFuL00KUXVvbnNldC9NClIvTQpSQUYvTQpSQU0vU00KUkJJClJDClJDQS9NClJDTVAKUkQKUkRBClJFSVQKUkVNL1NNClJGClJGQy9TClJGRApSSQpSSUYKUklQClJJU0MKUk4vTQpSTkEvTQpST0ZMClJPTS9NClJPVEMvTQpSUApSUgpSU0ZTUgpSU0kKUlNWClJTVlAKUlRGTQpSVi9TTQpSYS9NClJhYmF0L00KUmFiZWxhaXMvTQpSYWJlbGFpc2lhbi9NClJhYmluL00KUmFjaGFlbC9NClJhY2hlbC9NClJhY2hlbGxlL00KUmFjaG1hbmlub2ZmL00KUmFjaW5lL00KUmFkY2xpZmZlL00KUmFlL00KUmFmYWVsL00KUmFmZmxlcy9NClJhZ25hcm9rL00KUmFpbmllci9NClJhbGVpZ2gvTQpSYWxwaC9NClJhbWEvTQpSYW1hZGEvTQpSYW1hZGFuL01TClJhbWFrcmlzaG5hL00KUmFtYW51amFuL00KUmFtYXlhbmEvTQpSYW1iby9NClJhbWlyZXovTQpSYW1pcm8vTQpSYW1vbi9NClJhbW9uYS9NClJhbW9zL00KUmFtc2F5L00KUmFtc2VzL00KUmFtc2V5L00KUmFuZC9NClJhbmRhbC9NClJhbmRhbGwvTQpSYW5kZWxsL00KUmFuZGkvTQpSYW5kb2xwaC9NClJhbmR5L00KUmFuZ29vbi9NClJhbmtpbi9NClJhbmtpbmUvTQpSYW91bC9NClJhcGhhZWwvTQpSYXBwYXBvcnQvTQpSYXB1bnplbC9NClJhcXVlbC9NClJhc2FsZ2V0aGkvTQpSYXNhbGhhZ3VlL00KUmFzbXVzc2VuL00KUmFzcHV0aW4vTQpSYXN0YQpSYXN0YWJhbi9NClJhc3RhZmFyaWFuL01TClJhc3RhZmFyaWFuaXNtClJhdGhlci9NClJhdGxpZmYvTQpSYXVsL00KUmF2ZWwvTQpSYXdhbHBpbmRpL00KUmF5L00KUmF5QmFuL00KUmF5YnVybi9NClJheWxlaWdoL00KUmF5bW9uZC9NClJheW11bmRvL00KUmIvTQpSZApSZS9NClJlYWRpbmcvTQpSZWFnYW4vTQpSZWFnYW5vbWljcy9NClJlYWx0b3IvTQpSZWFzb25lci9NClJlYmEvTQpSZWJla2FoL00KUmVjaWZlL00KUmVjb25zdHJ1Y3Rpb24vTQpSZWRlZW1lci9NClJlZGZvcmQvTQpSZWRncmF2ZS9NClJlZG1vbmQvTQpSZWVib2svTQpSZWVkL00KUmVlc2UvTQpSZWV2ZXMvTQpSZWZvcm1hdGlvbi9NUwpSZWZ1Z2lvL00KUmVnZ2llL00KUmVnaW5hL00KUmVnaW5hZS9NClJlZ2luYWxkL00KUmVnb3IvTQpSZWd1bHVzL00KUmVobnF1aXN0L00KUmVpY2gvTQpSZWljaHN0YWcncwpSZWlkL00KUmVpbGx5L00KUmVpbmFsZG8vTQpSZWluaGFyZHQvTQpSZWluaG9sZC9NClJlbWFycXVlL00KUmVtYnJhbmR0L00KUmVtaW5ndG9uL00KUmVtdXMvTQpSZW5hL00KUmVuYWlzc2FuY2UvU00KUmVuYXNjZW5jZQpSZW5hdWx0L00KUmVuZS9NClJlbmVlL00KUmVuby9NClJlbm9pci9NClJlcApSZXByZXNlbnRhdGl2ZQpSZXB1YmxpY2FuL1NNClJlcHVibGljYW5pc20KUmVxdWllbS9NUwpSZXNpc3RhbmNlClJlc3RvcmF0aW9uL00KUmVzdXJyZWN0aW9uClJldWJlbi9NClJldW5pb24vTQpSZXV0ZXJzL00KUmV1dGhlci9NClJldgpSZXZhL00KUmV2ZWxhdGlvbi9TTQpSZXZlbGF0aW9ucy9NClJldmVyZS9NClJldmVyZW5kL00KUmV2bG9uL00KUmV4L00KUmV5ZXMvTQpSZXlramF2aWsvTQpSZXluYS9NClJleW5hbGRvL00KUmV5bm9sZHMvTQpSZi9NClJoL00KUmhlYS9NClJoZWUvTQpSaGVpbmdhdS9NClJoZW5pc2gvTQpSaGlhbm5vbi9NClJoaW5lL00KUmhpbmVsYW5kL00KUmhvZGEvTQpSaG9kZS9TClJob2Rlcy9NClJob2Rlc2lhL00KUmhvZGVzaWFuClJob25kYS9NClJob25lL00KUmliYmVudHJvcC9NClJpY2FyZG8vTQpSaWNlL00KUmljaC9NClJpY2hhcmQvTVMKUmljaGFyZHMvTQpSaWNoYXJkc29uL00KUmljaGVsaWV1L00KUmljaGllL00KUmljaG1vbmQvTQpSaWNodGVyL00KUmljaHRob2Zlbi9NClJpY2svTQpSaWNrZW5iYWNrZXIvTQpSaWNrZXkvTQpSaWNraWUvTQpSaWNrb3Zlci9NClJpY2t5L00KUmljby9NClJpZGRsZS9NClJpZGUvTQpSaWVmZW5zdGFobC9NClJpZWwvTQpSaWVtYW5uL00KUmllc2xpbmcvTVMKUmlnYS9NClJpZ2VsL00KUmlnZ3MvTQpSaWdodApSaWdvYmVydG8vTQpSaWdvbGV0dG8vTQpSaWxleS9NClJpbGtlL00KUmltYmF1ZC9NClJpbmdsaW5nL00KUmluZ28vTQpSaW8vU00KUmlvcy9NClJpcGxleS9NClJpc29yZ2ltZW50by9NClJpdGEvTQpSaXRhbGluL00KUml0ei9NClJpdmFzL00KUml2ZXJhL00KUml2ZXJzL00KUml2ZXJzaWRlClJpdmllcmEvTVMKUml5YWRoL00KUml6YWwvTQpSbi9NClJvYWNoL00KUm9hbm9rZS9NClJvYi9NClJvYmJpZS9NClJvYmJpbi9NUwpSb2JiaW5zL00KUm9iYnkvTQpSb2JlcnNvbi9NClJvYmVydC9NUwpSb2JlcnRhL00KUm9iZXJ0by9NClJvYmVydHMvTQpSb2JlcnRzb24vTQpSb2Jlc29uL00KUm9iZXNwaWVycmUvTQpSb2Jpbi9NClJvYmluc29uL00KUm9iaXR1c3Npbi9NClJvYmxlcy9NClJvYnNvbi9NClJvYnQvTQpSb2J5bi9NClJvY2NvL00KUm9jaGEvTQpSb2NoYW1iZWF1L00KUm9jaGUvTQpSb2NoZWxsZS9NClJvY2hlc3Rlci9NClJvY2svTQpSb2NrZWZlbGxlci9NClJvY2tmb3JkL00KUm9ja2llcy9NClJvY2tuZS9NClJvY2t3ZWxsL00KUm9ja3kvU00KUm9kL00KUm9kZGVuYmVycnkvTQpSb2Rlcmljay9NClJvZGdlci9NUwpSb2RnZXJzL00KUm9kaW4vTQpSb2RuZXkvTQpSb2RvbGZvL00KUm9kcmljay9NClJvZHJpZ28vTQpSb2RyaWd1ZXovTQpSb2RyaXF1ZXovTQpSb2VnL00KUm9lbnRnZW4KUm9nZWxpby9NClJvZ2VyL01TClJvZ2Vycy9NClJvZ2V0L00KUm9qYXMvTQpSb2t1L00KUm9sYWlkcy9NClJvbGFuZC9NClJvbGFuZG8vTQpSb2xleC9NClJvbGxhbmQvTQpSb2xsZXJibGFkZS9NClJvbGxpbnMvTQpSb2xvZGV4L00KUm9sdmFhZy9NClJvbQpSb21hbi9NUwpSb21hbmVzcXVlL01TClJvbWFuaWEvTQpSb21hbmlhbi9NUwpSb21hbm8vTQpSb21hbm92L00KUm9tYW5zL00KUm9tYW5zaC9NClJvbWFudGljaXNtClJvbWFueS9TTQpSb21lL1NNClJvbWVvL00KUm9tZXJvL00KUm9tbWVsL00KUm9tbmV5L00KUm9tdWx1cy9NClJvbi9NClJvbmFsZC9NClJvbmRhL00KUm9ubmllL00KUm9ubnkvTQpSb25zdGFkdC9NClJvbnRnZW4KUm9vbmV5L00KUm9vc2V2ZWx0L00KUm9vdC9NClJvcXVlZm9ydC9TTQpSb3JzY2hhY2gvTQpSb3J5L00KUm9zYS9NClJvc2FsZXMvTQpSb3NhbGllL00KUm9zYWxpbmQvTQpSb3NhbGluZGEvTQpSb3NhbHluL00KUm9zYW5uYS9NClJvc2FubmUvTQpSb3NhcmlvL00KUm9zY29lL00KUm9zZS9NClJvc2Vhbm4vTQpSb3NlYXUvTQpSb3NlY3JhbnMvTQpSb3NlbGxhL00KUm9zZW1hcmllL00KUm9zZW1hcnkvTQpSb3NlbmJlcmcvTQpSb3NlbmRvL00KUm9zZW56d2VpZy9NClJvc2V0dGEvTQpSb3NpY3J1Y2lhbi9NClJvc2llL00KUm9zbHluL00KUm9zcy9NClJvc3NldHRpL00KUm9zc2luaS9NClJvc3RhbmQvTQpSb3N0b3YvTQpSb3N0cm9wb3ZpY2gvTQpSb3N3ZWxsL00KUm90YXJpYW4vTQpSb3RoL00KUm90aGtvL00KUm90aHNjaGlsZC9NClJvdHRlcmRhbS9NClJvdHR3ZWlsZXIvTQpSb3VhdWx0L00KUm91cmtlL00KUm91c3NlYXUvTQpSb3ZlL1JNClJvdmVyL00KUm93ZS9NClJvd2VuYS9NClJvd2xhbmQvTQpSb3dsaW5nL00KUm94YW5uZS9NClJveGllL00KUm94eS9NClJveS9NClJveWFsL00KUm95Y2UvTQpSb3plbGxlL00KUnRlClJ1L01IClJ1YmFpeWF0L00KUnViYmVybWFpZC9NClJ1YmVuL1NNClJ1YmVucy9NClJ1Ymljb24vTVMKUnViaWsvTQpSdWJpbi9NClJ1Ymluc3RlaW4vTQpSdWJ5L00KUnVjaGJhaC9NClJ1ZG9sZi9NClJ1ZG9scGgvTQpSdWR5L00KUnVkeWFyZC9NClJ1ZnVzL00KUnVoci9NClJ1aXovTQpSdWtleXNlci9NClJ1bXBlbHN0aWx0c2tpbi9NClJ1bXNmZWxkL00KUnVubnltZWRlL00KUnVueW9uL00KUnVwZXJ0L00KUnVzaC9NClJ1c2hkaWUvTQpSdXNobW9yZS9NClJ1c2tpbi9NClJ1c3MvTQpSdXNzZWwvTQpSdXNzZWxsL00KUnVzc2lhL00KUnVzc2lhbi9TTQpSdXNzby9NClJ1c3RiZWx0L00KUnVzdHkvTQpSdXRhbi9NClJ1dGdlcnMvTQpSdXRoL00KUnV0aGVyZm9yZC9NClJ1dGhpZS9NClJ1dGxlZGdlL00KUndhbmRhL01TClJ3YW5kYW4vU00KUnd5ClJ4ClJ5ClJ5YW4vTQpSeWRiZXJnL00KUnlkZXIvTQpSeXVreXUvTQpTL01OClNBClNBQwpTQUxUL00KU0FNL00KU0FQL00KU0FSUy9NClNBU0UKU0FUClNCQQpTQy9NClNDU0kvTQpTRApTREkKU0UvTQpTRUFUTwpTRUMvTQpTRgpTR01ML00KU0lEUy9NClNKClNKVwpTSwpTTFIKU08vUwpTT0IvTQpTT1AvTQpTT1MvTQpTT1NlcwpTUENBClNQRgpTUUwKU1JPClNTClNTQQpTU0UvTQpTU1MKU1NUClNTVy9NClNUClNURApTVE9MClNVU0UvTQpTVVYKU1ZOL00KU1cvTQpTV0FLClNXQVQKU2FhYi9NClNhYXIvTQpTYWFyaW5lbi9NClNhYXRjaGkvTQpTYWJiYXRoL00KU2FiYmF0aHMKU2FiaWsvTQpTYWJpbi9NClNhYmluYS9NClNhYmluZS9NClNhYnJlL00KU2FicmluYS9NClNhY2FqYXdlYS9NClNhY2NvL00KU2FjaHMvTQpTYWNyYW1lbnRvL00KU2FkYXQvTQpTYWRkYW0vTQpTYWRkdWNlZS9NClNhZGUvTQpTYWRpZS9NClNhZHIvTQpTYWZhdmlkL00KU2FmZXdheS9NClNhZ2FuL00KU2FnaW5hdy9NClNhZ2l0dGFyaXVzL01TClNhaGFyYS9NClNhaGFyYW4vTQpTYWhlbC9NClNhaWdvbi9NClNhaXBoL00KU2FrYWkvTQpTYWtoYS9NClNha2hhbGluL00KU2FraGFyb3YvTQpTYWtpL00KU2Frcy9NClNhbC9NWQpTYWxhZGluL00KU2FsYWRvL00KU2FsYW1pcy9NClNhbGFzL00KU2FsYXphci9NClNhbGVtL00KU2FsZXJuby9NClNhbGluYXMvTQpTYWxpbmdlci9NClNhbGlzYnVyeS9NClNhbGlzaC9NClNhbGsvTQpTYWxsaWUvTQpTYWxsdXN0L00KU2FsbHkvTQpTYWxvbWUvTQpTYWxvbmlrYS9NClNhbHRvbi9NClNhbHZhZG9yL00KU2FsdmFkb3Jhbi9TTQpTYWx2YWRvcmVhbi9NUwpTYWx2YWRvcmlhbi9NUwpTYWx2YXRvcmUvTQpTYWx3ZWVuL00KU2FseXV0L00KU2FtL00KU2FtYW50aGEvTQpTYW1hci9NClNhbWFyYS9NClNhbWFyaXRhbi9NUwpTYW1hcmthbmQvTQpTYW1taWUvTQpTYW1teS9NClNhbW9hL00KU2Ftb2FuL1NNClNhbW9zZXQvTQpTYW1veWVkL00KU2FtcHNvbi9NClNhbXNvbi9NClNhbXNvbml0ZS9NClNhbXN1bmcvTQpTYW11ZWwvTQpTYW11ZWxzb24vTQpTYW4nYQpTYW4vTQpTYW5hL00KU2FuY2hlei9NClNhbmNoby9NClNhbmQvWk0KU2FuZGJ1cmcvTQpTYW5kZXJzL00KU2FuZGluaXN0YS9NClNhbmRvdmFsL00KU2FuZHJhL00KU2FuZHkvTQpTYW5mb3JkL00KU2FuZm9yaXplZC9NClNhbmcvTVIKU2FuZ2VyL00KU2FuaGVkcmluL00KU2Fua2EvTQpTYW5rYXJhL00KU2Fuc2tyaXQvTQpTYW50YS9NClNhbnRhbmEvTQpTYW50YXlhbmEvTQpTYW50ZXJpYS9NClNhbnRpYWdvL00KU2FudG9zL00KU2FwcGhvL00KU2FwcG9yby9NClNhcmEvTQpTYXJhY2VuL01TClNhcmFnb3NzYS9NClNhcmFoL00KU2FyYWpldm8vTQpTYXJhbi9NClNhcmFzb3RhL00KU2FyYXRvdi9NClNhcmF3YWsvTQpTYXJkaW5pYS9NClNhcmdhc3NvL00KU2FyZ2VudC9NClNhcmdvbi9NClNhcm5vZmYvTQpTYXJveWFuL00KU2FydG8vTQpTYXJ0cmUvTQpTYXNoYS9NClNhc2sKU2Fza2F0Y2hld2FuL00KU2Fza2F0b29uL00KU2FzcXVhdGNoL01TClNhc3Nhbmlhbi9NClNhc3Nvb24vTQpTYXQvTQpTYXRhbi9NClNhdGFuaXNtL00KU2F0YW5pc3QvTQpTYXR1cmRheS9NUwpTYXR1cm4vTQpTYXR1cm5hbGlhL00KU2F1ZGkvTVMKU2F1bC9NClNhdW5kZXJzL00KU2F1bmRyYS9NClNhdXNzdXJlL00KU2F1dGVybmVzClNhdmFnZS9NClNhdmFubmFoL00KU2F2aW9yL00KU2F2b25hcm9sYS9NClNhdm95L00KU2F2b3lhcmQvTQpTYXd5ZXIvTQpTYXhvbi9NUwpTYXhvbnkvTQpTYXllcnMvTQpTYi9NClNjL00KU2NhbGEvTQpTY2FuClNjYW5kaW5hdmlhL00KU2NhbmRpbmF2aWFuL01TClNjYXJhbW91Y2gvTQpTY2FyYm9yb3VnaC9NClNjYXJsYXR0aS9NClNjaGVhdC9NClNjaGVkYXIvTQpTY2hlaGVyYXphZGUvTQpTY2hlbGxpbmcvTQpTY2hlbmVjdGFkeS9NClNjaGlhcGFyZWxsaS9NClNjaGljay9NClNjaGlsbGVyL00KU2NoaW5kbGVyL00KU2NobGVzaW5nZXIvTQpTY2hsaWVtYW5uL00KU2NobGl0ei9NClNjaG1pZHQvTQpTY2huYWJlbC9NClNjaG5hdXplci9NClNjaG5laWRlci9NClNjaG9lbmJlcmcvTQpTY2hvcGVuaGF1ZXIvTQpTY2hyaWVmZmVyL00KU2Nocm9kaW5nZXIvTQpTY2hyb2VkZXIvTQpTY2h1YmVydC9NClNjaHVsdHovTQpTY2h1bHovTQpTY2h1bWFubi9NClNjaHVtcGV0ZXIvTQpTY2h1eWxlci9NClNjaHV5bGtpbGwvTQpTY2h3YXJ0ei9NClNjaHdhcnplbmVnZ2VyL00KU2Nod2FyemtvcGYvTQpTY2h3ZWl0emVyL00KU2Nod2VwcGVzL00KU2Nod2luZ2VyL00KU2Nod2lubi9NClNjaWVudG9sb2dpc3QvU00KU2NpZW50b2xvZ3kvTQpTY2lwaW8vTQpTY29wZXMvTQpTY29ycGlvL1NNClNjb3JwaXVzL00KU2NvcnNlc2UvTQpTY290L1NNClNjb3RjaC9NUwpTY290Y2htYW4vTQpTY290Y2htZW4vTQpTY290Y2h3b21hbi9NClNjb3RjaHdvbWVuL00KU2NvdGlhL00KU2NvdGxhbmQvTQpTY290c21hbi9NClNjb3RzbWVuL00KU2NvdHN3b21hbi9NClNjb3Rzd29tZW4vTQpTY290dC9NClNjb3R0aWUvU00KU2NvdHRpc2gvTQpTY290dHNkYWxlL00KU2NyYWJibGUvTVMKU2NyYW50b24vTQpTY3JpYWJpbi9NClNjcmlibmVyL00KU2NyaXB0dXJlL1NNClNjcm9vZ2UvTQpTY3J1Z2dzL00KU2N1ZC9NClNjdWxsZXkvTQpTY3lsbGEvTQpTY3l0aGlhL00KU2N5dGhpYW4vTQpTZS9NSApTZWFib3JnL00KU2VhZ3JhbS9NClNlYW4vTQpTZWFycy9NClNlYXR0bGUvTQpTZWJhc3RpYW4vTQpTZWMKU2Vjb25hbC9NClNlY3JldGFyaWF0L00KU2VjcmV0YXJ5ClNlZGVyL01TClNlZG5hL00KU2VlYmVjay9NClNlZWdlci9NClNlZ2EvTQpTZWdvdmlhL00KU2VncmUvTQpTZWd1bmRvL00KU2Vpa28vTQpTZWluZS9NClNlaW5mZWxkL00KU2Vqb25nL00KU2VsYXNzaWUvTQpTZWxlY3RyaWMvTQpTZWxlbmEvTQpTZWxldWNpZC9NClNlbGV1Y3VzL00KU2VsaW0vTQpTZWxqdWsvTQpTZWxraXJrL00KU2VsbGVycy9NClNlbG1hL00KU2Vsem5pY2svTQpTZW1hcmFuZy9NClNlbWlub2xlL01TClNlbWlyYW1pcy9NClNlbWl0ZS9NUwpTZW1pdGljL1NNClNlbXRleC9NClNlbmF0ZS9NUwpTZW5kYWkvTQpTZW5lY2EvTVMKU2VuZWdhbC9NClNlbmVnYWxlc2UvTQpTZW5naG9yL00KU2VuaW9yL00KU2VubmFjaGVyaWIvTQpTZW5uZXR0L00KU2Vuc3Vycm91bmQvTQpTZW91bC9NClNlcApTZXBoYXJkaS9NClNlcG95L00KU2VwdC9NClNlcHRlbWJlci9NUwpTZXB0dWFnaW50L01TClNlcXVveWEvTQpTZXJiL1NNClNlcmJpYS9NClNlcmJpYW4vTVMKU2VyZW5hL00KU2VyZW5nZXRpL00KU2VyZ2VpL00KU2VyZ2lvL00KU2VycGVucy9NClNlcnJhL00KU2VycmFuby9NClNldC9NClNldGgvTQpTZXRvbi9NClNldXJhdC9NClNldXNzL00KU2V2YXN0b3BvbC9NClNldmVybi9NClNldmVydXMvTQpTZXZpbGxlL00KU2V2cmVzL00KU2V3YXJkL00KU2V4dGFucy9NClNleHRvbi9NClNleWNoZWxsZXMvTQpTZXlmZXJ0L00KU2V5bW91ci9NClNndApTaGFja2xldG9uL00KU2hhZmZlci9NClNoYWgvTQpTaGFrYS9NClNoYWtlcgpTaGFrZXNwZWFyZS9NClNoYWtlc3BlYXJlYW4vTQpTaGFuYS9NClNoYW5lL00KU2hhbmdoYWkvTQpTaGFua2FyYS9NClNoYW5uYS9NClNoYW5ub24vTQpTaGFudHVuZy9NClNoYXBpcm8vTQpTaGFyaSdhL00KU2hhcmkvTQpTaGFyaWYvTQpTaGFybGVuZS9NClNoYXJvbi9NClNoYXJwL00KU2hhcnBlL00KU2hhcnJvbi9NClNoYXN0YS9NClNoYXVsYS9NClNoYXVuL00KU2hhdW5hL00KU2hhdmlhbi9NClNoYXZ1b3QvTQpTaGF3L00KU2hhd24vTQpTaGF3bmEvTQpTaGF3bmVlL1NNClNoY2hhcmFuc2t5L00KU2hlYS9NClNoZWJhL00KU2hlYmVsaS9NClNoZWVuYS9NClNoZWV0cm9jay9NClNoZWZmaWVsZC9NClNoZWlsYS9NClNoZWxieS9NClNoZWxkb24vTQpTaGVsaWEvTQpTaGVsbC9NClNoZWxsZXkvTQpTaGVsbHkvTQpTaGVsdG9uL00KU2hlbmFuZG9haC9NClNoZW55YW5nL00KU2hlb2wvTQpTaGVwYXJkL00KU2hlcGhlcmQvTQpTaGVwcGFyZC9NClNoZXJhdGFuL00KU2hlcmF0b24vTQpTaGVyZWUvTQpTaGVyaS9NClNoZXJpZGFuL00KU2hlcmxvY2svTQpTaGVybWFuL00KU2hlcnBhL00KU2hlcnJpL00KU2hlcnJpZS9NClNoZXJyeS9NClNoZXJ3b29kL00KU2hlcnlsL00KU2hldGxhbmQvU00KU2hldGxhbmRzL00KU2hldmFyZG5hZHplL00KU2hldmF0L00KU2hpJ2l0ZS9NClNoaWVsZHMvTQpTaGlpdGUvTVMKU2hpamlhemh1YW5nL00KU2hpa29rdS9NClNoaWxsb25nL00KU2hpbG9oL00KU2hpbnRvL01TClNoaW50b2lzbS9NUwpTaGludG9pc3QvTVMKU2hpcmF6L00KU2hpcmxleS9NClNoaXZhL00KU2hvY2tsZXkvTQpTaG9ydC9NClNob3J0aG9ybi9NClNob3Nob25lL1NNClNob3N0YWtvdml0Y2gvTQpTaHJlay9NClNocmV2ZXBvcnQvTQpTaHJpbmVyL00KU2hyb3BzaGlyZS9NClNodWxhL00KU2h5bG9jay9NClNoeWxvY2tpYW4vTQpTaS9NClNpYW0vTQpTaWFtZXNlL00KU2liZWxpdXMvTQpTaWJlcmlhL00KU2liZXJpYW4vTVMKU2lieWwvTQpTaWNpbGlhbi9TTQpTaWNpbHkvTQpTaWQvTQpTaWRkaGFydGhhL00KU2lkbmV5L00KU2llZ2ZyaWVkL00KU2llbWVucy9NClNpZXJwaW5za2kvTQpTaWVycmFzClNpZ2lzbXVuZC9NClNpZ211bmQvTQpTaWd1cmQvTQpTaWhhbm91ay9NClNpa2gvTQpTaWtoaXNtClNpa2hzClNpa2tpbS9NClNpa2tpbWVzZS9NClNpa29yc2t5L00KU2lsYXMvTQpTaWxlc2lhL00KU2lsdXJpYW4vU00KU2lsdmEvTQpTaWx2aWEvTQpTaW1lbm9uL00KU2ltbWVudGFsL00KU2ltbW9ucy9NClNpbW9uL00KU2ltb25lL00KU2ltcHNvbi9TTQpTaW1wc29ucy9NClNpbXMvTQpTaW5haS9NClNpbmF0cmEvTQpTaW5iYWQvTQpTaW5jbGFpci9NClNpbmRiYWQvTQpTaW5kaGkvTQpTaW5nYXBvcmUvTQpTaW5nYXBvcmVhbi9TTQpTaW5nZXIvTQpTaW5naC9NClNpbmdsZXRvbi9NClNpbmhhbGVzZS9NClNpbmtpYW5nL00KU2lvdXgvTQpTaXIvU00KU2lyaXVzL00KU2lzdGluZS9NClNpc3lwaGVhbi9NClNpc3lwaHVzL00KU2l2YS9NClNpdmFuL00KU2phZWxsYW5kL00KU2tpbm5lci9NClNraXBweS9NClNrb3BqZS9NClNreWUvTQpTa3lsYWIvTQpTa3lwZS9NClNsYWNrd2FyZS9NClNsYXNoZG90L00KU2xhdGVyL00KU2xhdi9TTQpTbGF2aWMvTQpTbGF2b25pYy9NClNsaW5reS9NClNsb2FuL00KU2xvYW5lL00KU2xvY3VtL00KU2xvdmFrL1NNClNsb3Zha2lhL00KU2xvdmFraWFuClNsb3ZlbmUvU00KU2xvdmVuaWEvTQpTbG92ZW5pYW4vTVMKU2x1cnBlZS9NClNtL00KU21hbGwvTQpTbWV0YW5hL00KU21pcm5vZmYvTQpTbWl0aC9NClNtaXRoc29uL00KU21pdGhzb25pYW4vTQpTbW9rZXkvTQpTbW9sZW5zay9NClNtb2xsZXR0L00KU211dHMvTQpTbXlybmEKU24vTQpTbmFrZS9NClNuYXBwbGUvTQpTbmVhZC9NClNuZWxsL00KU25pY2tlcnMvTQpTbmlkZXIvTQpTbm9vcHkvTQpTbm93L00KU25vd2JlbHQvTQpTbnlkZXIvTQpTb2F2ZS9NClNvYwpTb2NvcnJvL00KU29jcmF0ZXMvTQpTb2NyYXRpYy9NClNvZGR5L00KU29kb20vTQpTb2ZpYS9NClNvaG8vTQpTb2wvTQpTb2xpcy9NClNvbG9tb24vTQpTb2xvbi9NClNvbHpoZW5pdHN5bi9NClNvbWFsaS9TTQpTb21hbGlhL00KU29tYWxpYW4vTVMKU29tbWUvTQpTb21vemEvTQpTb24vTQpTb25kaGVpbS9NClNvbmRyYS9NClNvbmdoYWkvTQpTb25naHVhL00KU29uaWEvTQpTb25qYS9NClNvbm55L00KU29ub3JhL00KU29udGFnL00KU29ueS9NClNvbnlhL00KU29waGlhL00KU29waGllL00KU29waG9jbGVhbi9NClNvcGhvY2xlcy9NClNvcHdpdGgvTQpTb3Jib25uZS9NClNvc2EvTQpTb3RvL00KU291cGhhbm91dm9uZy9NClNvdXJjZWZvcmdlL00KU291c2EvTQpTb3V0aC9NClNvdXRoYW1wdG9uL00KU291dGhlYXN0L01TClNvdXRoZXJuZXIvU00KU291dGhleS9NClNvdXRocwpTb3V0aHdlc3QvTVMKU292aWV0L00KU293ZXRvL00KU295aW5rYS9NClNveXV6L00KU3AKU3BhYXR6L00KU3BhY2tsZS9NClNwYWhuL00KU3BhaW4vTQpTcGFtL00KU3BhbgpTcGFuZ2xpc2gKU3BhbmlhcmQvU00KU3BhbmlzaC9NClNwYXJrcy9NClNwYXJ0YS9NClNwYXJ0YWN1cy9NClNwYXJ0YW4vTVMKU3BlYXJzL00KU3BlZXIvTQpTcGVuY2UvUk0KU3BlbmNlci9NClNwZW5jZXJpYW4vTQpTcGVuZ2xlci9NClNwZW5nbGVyaWFuL00KU3BlbnNlci9NClNwZW5zZXJpYW4vTQpTcGVycnkvTQpTcGhpbngvTQpTcGljYS9NClNwaWVsYmVyZy9NClNwaWxsYW5lL00KU3Bpbm96YS9NClNwaW54L00KU3Bpcm8vTQpTcGlyb2dyYXBoL00KU3BpdHNiZXJnZW4vTQpTcGl0ei9NClNwb2NrL00KU3Bva2FuZS9NClNwcmluZ2ZpZWxkL00KU3ByaW5nc3RlZW4vTQpTcHJpbnQvTQpTcHJpdGUvTQpTcHV0bmlrL00KU3EKU3F1YW50by9NClNxdWliYi9NClNyL00KU3JpbmFnYXIvTQpTcml2aWpheWEvTQpTdApTdGEKU3RhY2V5L00KU3RhY2kvTQpTdGFjaWUvTQpTdGFjeS9NClN0YWVsL00KU3RhZmZvcmQvTQpTdGFpck1hc3Rlci9NClN0YWxpbi9NClN0YWxpbmdyYWQvTQpTdGFsaW5pc3QvTQpTdGFsbG9uZS9NClN0YW1mb3JkL00KU3Rhbi9NClN0YW5kaXNoL00KU3RhbmZvcmQvTQpTdGFuaXNsYXZza3kvTQpTdGFubGV5L00KU3RhbnRvbi9NClN0YXBsZXMvTQpTdGFyYnVja3MvTQpTdGFyay9NClN0YXJrZXkvTQpTdGFyci9NClN0YXRlbi9NClN0YXRlcwpTdGF1YmFjaC9NClN0ZQpTdGVhZGljYW0vTQpTdGVlbGUvTQpTdGVmYW4vTQpTdGVmYW5pZS9NClN0ZWluL01SClN0ZWluYmVjay9NClN0ZWluZW0vTQpTdGVpbmVyL00KU3RlaW5tZXR6L00KU3RlaW53YXkvTQpTdGVsbGEvTQpTdGVuZGhhbC9NClN0ZW5nZWwvTQpTdGVwaGFuL00KU3RlcGhhbmllL00KU3RlcGhlbi9NUwpTdGVwaGVucy9NClN0ZXBoZW5zb24vTQpTdGVybGluZy9NClN0ZXJuL00KU3Rlcm5lL00KU3Rlcm5vL00KU3RldHNvbi9NClN0ZXViZW4vTQpTdGV2ZS9NClN0ZXZlbi9NUwpTdGV2ZW5zL00KU3RldmVuc29uL00KU3RldmllL00KU3Rld2FydC9NClN0aWVnbGl0ei9NClN0aWx0b24vU00KU3RpbXNvbi9NClN0aW5lL00KU3RpcmxpbmcvTQpTdG9ja2hhdXNlbi9NClN0b2NraG9sbS9NClN0b2NrdG9uL00KU3RvaWMvU00KU3RvaWNpc20vTVMKU3Rva2VzL00KU3RvbGljaG5heWEvTQpTdG9seXBpbi9NClN0b25lL00KU3RvbmVoZW5nZS9NClN0b3BwYXJkL00KU3RvdXQvTQpTdG93ZS9NClN0cmFiby9NClN0cmFkaXZhcmkKU3RyYWRpdmFyaXVzL00KU3RyYXNib3VyZy9NClN0cmF1c3MvTQpTdHJhdmluc2t5L00KU3RyZWlzYW5kL00KU3RyaWNrbGFuZC9NClN0cmluZGJlcmcvTQpTdHJvbWJvbGkvTQpTdHJvbmcvTQpTdHUvTQpTdHVhcnQvTVMKU3R1ZGViYWtlci9NClN0dXR0Z2FydC9NClN0dXl2ZXNhbnQvTQpTdHlnaWFuL00KU3R5cm9mb2FtL1NNClN0eXJvbi9NClN0eXgvTQpTdWFyZXovTQpTdWJhcnUvTQpTdWNyZS9NClN1Y3JldHMvTQpTdWRhbi9NClN1ZGFuZXNlL00KU3VkZXRlbmxhbmQvTQpTdWRva3UvTQpTdWRyYS9NClN1ZS9NClN1ZXRvbml1cy9NClN1ZXovTQpTdWZmb2xrL00KU3VmaS9NClN1ZmlzbS9NClN1aGFydG8vTQpTdWkvTQpTdWthcm5vL00KU3Vra290ClN1bGF3ZXNpL00KU3VsZWltYW4vTQpTdWxsYS9NClN1bGxpdmFuL00KU3VtYXRyYS9NClN1bWF0cmFuL1NNClN1bWVyaWEvTQpTdW1lcmlhbi9TTQpTdW1tZXIvTVMKU3VtbWVycy9NClN1bW5lci9NClN1bXRlci9NClN1bi9TTQpTdW5iZWFtL00KU3VuYmVsdC9NClN1bmRhbmVzZS9NClN1bmRhcy9NClN1bmRheS9NUwpTdW5nL00KU3Vua2lzdC9NClN1bm5pL1NNClN1bm5pdGUvTVMKU3Vubnl2YWxlL00KU3VwZXJib3dsL00KU3VwZXJmdW5kL00KU3VwZXJnbHVlL00KU3VwZXJpb3IvTQpTdXBlcm1hbi9NClN1cHQKU3VyYWJheWEvTQpTdXJhdC9NClN1cmluYW1lL00KU3VyaW5hbWVzZQpTdXJ5YS9NClN1c2FuL00KU3VzYW5hL00KU3VzYW5uYS9NClN1c2FubmUvTQpTdXNpZS9NClN1c3F1ZWhhbm5hL00KU3Vzc2V4L00KU3V0aGVybGFuZC9NClN1dHRvbi9NClN1dmEvTQpTdXdhbmVlL00KU3V6YW5uZS9NClN1emV0dGUvTQpTdXpob3UvTQpTdXp1a2kvTQpTdXp5L00KU3ZhbGJhcmQvTQpTdmVuL00KU3ZlbmdhbGkvTQpTdmVyZGxvdnNrClN3YWhpbGkvU00KU3dhbW1lcmRhbS9NClN3YW5lZS9NClN3YW5zZWEvTQpTd2Fuc29uL00KU3dhemkvU00KU3dhemlsYW5kL00KU3dlZC9OClN3ZWRlL1NNClN3ZWRlbi9NClN3ZWRlbmJvcmcvTQpTd2VkaXNoL00KU3dlZW5leS9NClN3ZWV0L00KU3dpZnQvTQpTd2luYnVybmUvTQpTd2lzcy9NUwpTd2lzc2Fpci9NClN3aXR6ClN3aXR6ZXJsYW5kL00KU3liaWwvTQpTeWRuZXkvTQpTeWtlcy9NClN5bHZlc3Rlci9NClN5bHZpYS9NClN5bHZpZS9NClN5bmdlL00KU3lyYWN1c2UvTQpTeXJpYS9NClN5cmlhYy9NClN5cmlhbi9NUwpTemlsYXJkL00KU3p5bWJvcnNrYS9NClQnYW5nL00KVC9NREcKVEEKVEFSUApUQi9NClRCQQpURApUREQKVEVGTApURUxORVQvUwpURUxORVRUZWQKVEVMTkVUVGluZwpURVNMClRFU09MClRHSUYKVEhDClRLTy9NClRMQy9NClRNClROClROVC9NClRPRUZMClRRTQpUVi9TTQpUVkEKVFdBL00KVFdYClRYClRhL00KVGFiYXNjby9TTQpUYWJhdGhhL00KVGFiZXJuYWNsZS9NUwpUYWJpdGhhL00KVGFicml6L01TClRhY2l0dXMvTQpUYWNvbWEvTQpUYWQvTQpUYWR6aGlrL00KVGFlZ3UvTQpUYWVqb24vTQpUYWZ0L00KVGFnYWxvZy9TTQpUYWdvcmUvTQpUYWd1cy9NClRhaGl0aS9NClRhaGl0aWFuL01TClRhaG9lL00KVGFpY2h1bmcvTQpUYWluYW4KVGFpbmUvTQpUYWlwZWkvTQpUYWlwaW5nL00KVGFpd2FuL00KVGFpd2FuZXNlL00KVGFpeXVhbi9NClRhamlraXN0YW4vTQpUYWtsYW1ha2FuL00KVGFsYm90L00KVGFsaWJhbi9NClRhbGllc2luL00KVGFsbGFoYXNzZWUvTQpUYWxsY2hpZWYvTQpUYWxsZXkvTQpUYWxsZXlyYW5kL00KVGFsbGlubi9NClRhbG11ZC9NUwpUYWxtdWRpYwpUYWxtdWRpc3QKVGFtYXJhL00KVGFtZWthL00KVGFtZXJhL00KVGFtZXJsYW5lL00KVGFtaS9NClRhbWlrYS9NClRhbWlsL01TClRhbW1hbnkvTQpUYW1taS9NClRhbW1pZS9NClRhbW11ei9NClRhbW15L00KVGFtcGEvTQpUYW1wYXgvTQpUYW1yYS9NClRhbXdvcnRoL00KVGFuY3JlZC9NClRhbmV5L00KVGFuZ2FueWlrYS9NClRhbmdpZXIvTVMKVGFuZ3NoYW4vTQpUYW5pYS9NClRhbmlzaGEvTQpUYW5uZXIvTQpUYW5uaGF1c2VyL00KVGFudGFsdXMvTQpUYW55YS9NClRhbnphbmlhL00KVGFuemFuaWFuL1NNClRhby9NClRhb2lzbS9NUwpUYW9pc3QvTVMKVGFyYS9NClRhcmFudGluby9NClRhcmF3YS9NClRhcmF6ZWQvTQpUYXJiZWxsL00KVGFyZ2V0L00KVGFyaW0vTQpUYXJrZW50b24vTQpUYXJraW5ndG9uL00KVGFydGFyeS9NClRhcnR1ZmZlL00KVGFyemFuL00KVGFzaGEvTQpUYXNoa2VudC9NClRhc21hbi9NClRhc21hbmlhL00KVGFzbWFuaWFuL00KVGFzcy9NClRhdGFyL01TClRhdGUvTQpUYXR1bS9NClRhdXJ1cy9NUwpUYXduZXkvTQpUYXlsb3IvTQpUYi9NClRiaWxpc2kvTQpUYy9NClRjaGFpa292c2t5L00KVGUvTQpUZVgKVGVYZXMKVGVhc2RhbGUvTQpUZWNobmljb2xvci9NClRlY3Vtc2VoL00KVGVkL00KVGVkZHkvTQpUZWZsb24vTVMKVGVndWNpZ2FscGEvTQpUZWhyYW4KVGVsZVByb21wVGVyClRlbGVQcm9tcHRlci9NClRlbGVtYWNodXMvTQpUZWxlbWFubi9NClRlbGV0eXBlClRlbGwvTVIKVGVsbGVyL00KVGVsdWd1L00KVGVtcGUKVGVtcGxhci9NClRlbm4vTQpUZW5uZXNzZWFuL1NNClRlbm5lc3NlZS9NClRlbm55c29uL00KVGVub2NodGl0bGFuL00KVGVvdGlodWFjYW4vTQpUZXJlbmNlL00KVGVyZXNhL00KVGVyZXNoa292YS9NClRlcmkvTQpUZXJrZWwvTQpUZXJwc2ljaG9yZS9NClRlcnIvTQpUZXJyYS9NClRlcnJhbi9NClRlcnJhbmNlL00KVGVycmVsbC9NClRlcnJlbmNlL00KVGVycmkvTQpUZXJyaWUvTQpUZXJyeS9NClRlcnRpYXJ5L00KVGVzbGEvTQpUZXNzL00KVGVzc2EvTQpUZXNzaWUvTQpUZXQvTQpUZXRoeXMvTQpUZXRvbnMvTQpUZXV0b24vTVMKVGV1dG9uaWMvTQpUZXZldC9NClRleC9NClRleGFjby9NClRleGFuL01TClRleGFzL00KVGgvTQpUaGFja2VyYXkvTQpUaGFkL00KVGhhZGRldXMvTQpUaGFpL1NNClRoYWlsYW5kL00KVGhhbGVzL00KVGhhbGlhL00KVGhhbWVzL00KVGhhbmgvTQpUaGFua3NnaXZpbmcvTVMKVGhhbnQvTQpUaGFyL00KVGhhcnAvTQpUaGF0Y2hlci9NClRoZWEvTQpUaGViZXMvTQpUaGVpbGVyL00KVGhlbG1hL00KVGhlbWlzdG9jbGVzL00KVGhlb2NyaXR1cy9NClRoZW9kb3JhL00KVGhlb2RvcmUvTQpUaGVvZG9yaWMvTQpUaGVvZG9zaXVzL00KVGhlb3NvcGh5L00KVGhlcmF2YWRhL00KVGhlcmVzYS9NClRoZXJlc2UvTQpUaGVybW9weWxhZS9NClRoZXJtb3MKVGhlcm9uL00KVGhlc2V1cy9NClRoZXNwaWFuL00KVGhlc3Bpcy9NClRoZXNzYWxvbmlhbi9TTQpUaGVzc2Fsb25pa2kvTQpUaGVzc2FseS9NClRoaWV1L00KVGhpbWJ1L00KVGhpbXBodQpUaG9tYXMvTQpUaG9taXNtL00KVGhvbWlzdGljL00KVGhvbXBzb24vTQpUaG9tc29uL00KVGhvci9NClRob3JhemluZS9NClRob3JlYXUvTQpUaG9ybnRvbi9NClRob3JvdWdoYnJlZC9NClRob3JwZS9NClRob3RoL00KVGhyYWNlL00KVGhyYWNpYW4vTQpUaHUKVGh1Y3lkaWRlcy9NClRodWxlL00KVGh1bmRlcmJpcmQvTQpUaHVyL1MKVGh1cmJlci9NClRodXJtYW4vTQpUaHVybW9uZC9NClRodXJzZGF5L1NNClRodXRtb3NlL00KVGkvTQpUaWEvTQpUaWFuamluL00KVGliZXIvTQpUaWJlcml1cy9NClRpYmV0L00KVGliZXRhbi9NUwpUaWNrZXRtYXN0ZXIvTQpUaWNvbmRlcm9nYS9NClRpZGUvTQpUaWVuYW5tZW4vTQpUaWZmYW55L00KVGlncmlzL00KVGlqdWFuYS9NClRpbGxpY2gvTQpUaWxsbWFuL00KVGlsc2l0L00KVGltL00KVGltYnVrdHUvTQpUaW1leC9NClRpbW15L00KVGltb24vTQpUaW1vci9NClRpbW90aHkvTQpUaW11ci9NClRpbXVyaWQvTQpUaW5hL00KVGluZy9NClRpbmtlcmJlbGwvTQpUaW5rZXJ0b3kvTQpUaW5zZWx0b3duL00KVGludG9yZXR0by9NClRpcHBlY2Fub2UvTQpUaXBwZXJhcnkvTQpUaXJhbmUKVGlyZXNpYXMvTQpUaXJvbC9NClRpcm9sZWFuClRpc2hhL00KVGlzaHJpL00KVGl0YW4vU00KVGl0YW5pYS9NClRpdGFuaWMvTQpUaXRpYW4vTQpUaXRpY2FjYS9NClRpdG8vTQpUaXR1cy9NClRsL00KVGxhbG9jL00KVGxpbmdpdC9NClRtL00KVG9iYWdvL00KVG9iaXQvTQpUb2J5L00KVG9jYW50aW5zL00KVG9jcXVldmlsbGUvTQpUb2QvTQpUb2RkL00KVG9nby9NClRvZ29sZXNlL00KVG9qby9NClRva2F5L00KVG9rdWdhd2EvTQpUb2t5by9NClRva3lvaXRlClRvbGVkby9NUwpUb2xraWVuL00KVG9sc3RveS9NClRvbHRlYy9NClRvbHlhdHRpL00KVG9tL00KVG9tYXMvTQpUb21iYXVnaC9NClRvbWxpbi9NClRvbW1pZS9NClRvbW15L00KVG9tcGtpbnMvTQpUb21zay9NClRvbmdhL00KVG9uZ2FuL01TClRvbmkvTQpUb25pYS9NClRvbnRvL00KVG9ueS9NClRvbnlhL00KVG9wZWthL00KVG9wc3kvTQpUb3JhaC9NClRvcmFocwpUb3JvbnRvL00KVG9ycXVlbWFkYS9NClRvcnJhbmNlL00KVG9ycmVucy9NClRvcnJlcy9NClRvcnJpY2VsbGkvTQpUb3J0b2xhL00KVG9ydHVnYS9NClRvcnZhbGRzL00KVG9yeS9TTQpUb3NjYS9NClRvc2NhbmluaS9NClRvc2hpYmEvTQpUb3RvL00KVG91bG91c2UvTQpUb3duZXMvTQpUb3duc2VuZC9NClRveW5iZWUvTQpUb3lvZGEvTQpUb3lvdGEvTQpUcmFjZXkvTQpUcmFjaS9NClRyYWNpZS9NClRyYWN5L00KVHJhZmFsZ2FyL00KVHJhaWx3YXlzL00KVHJhamFuL00KVHJhbi9NClRyYW5zY2F1Y2FzaWEvTQpUcmFuc3ZhYWwvTQpUcmFuc3lsdmFuaWEvTQpUcmFuc3lsdmFuaWFuL00KVHJhcHBpc3QvU00KVHJhdmlzL00KVHJhdm9sdGEvTQpUcmVhc3VyeS9TTQpUcmVibGlua2EvTQpUcmVra2llL00KVHJlbnQvTQpUcmVudG9uL00KVHJldmVseWFuL00KVHJldmluby9NClRyZXZvci9NClRyZXkvTQpUcmlhbmd1bHVtL00KVHJpYXNzaWMvTQpUcmljaWEvTQpUcmlkZW50L00KVHJpZXN0ZS9NClRyaW11cnRpL00KVHJpbmEvTQpUcmluaWRhZC9NClRyaW5pZGFkaWFuL01TClRyaW5pdHkvU00KVHJpcGl0YWthL00KVHJpcG9saS9NClRyaXBwZS9NClRyaXNoYS9NClRyaXN0YW4vTQpUcml0b24vTQpUcm9icmlhbmQvTQpUcm9pbHVzL00KVHJvamFuL01TClRyb2xsb3BlL00KVHJvbmRoZWltL00KVHJvcGljYW5hL00KVHJvdHNreS9NClRyb3kvTQpUcm95ZXMKVHJ1Y2tlZS9NClRydWRlYXUvTQpUcnVkeS9NClRydWZmYXV0L00KVHJ1amlsbG8vTQpUcnVtYW4vTQpUcnVtYnVsbC9NClRydW1wL00KVHJ1dGgvTQpUc2ltc2hpYW4vTQpUc2lvbGtvdnNreS9NClRzaXRzaWhhci9NClRzb25na2hhcGEvTQpUc3dhbmEvTQpUdS9NClR1YW1vdHUvTQpUdWFyZWcvTQpUdWJtYW4vTQpUdWNrZXIvTQpUdWNzb24vTQpUdWN1bWFuL00KVHVkb3IvU00KVHVlL1MKVHVlcy9NClR1ZXNkYXkvTVMKVHVsYW5lL00KVHVsbC9NClR1bHNhL00KVHVsc2lkYXMvTQpUdW1zL00KVHVuZ3VzL00KVHVuZ3Vza2EvTQpUdW5pcy9NClR1bmlzaWEvTQpUdW5pc2lhbi9NUwpUdW5uZXkvTQpUdXBpL00KVHVwcGVyd2FyZS9NClR1cHVuZ2F0by9NClR1cmdlbmV2L00KVHVyaW4vTQpUdXJpbmcvTQpUdXJrL1NNClR1cmtlc3Rhbi9NClR1cmtleS9NClR1cmtpYy9NUwpUdXJraXNoL00KVHVya21lbmlzdGFuL00KVHVybmVyL00KVHVycGluL00KVHVzY2Fsb29zYS9NClR1c2Nhbi9NClR1c2NhbnkvTQpUdXNjYXJvcmEvTVMKVHVzY29uL00KVHVza2VnZWUvTQpUdXNzYXVkL00KVHV0L00KVHV0YW5raGFtZW4vTQpUdXRzaS9NClR1dHUvTQpUdXZhbHUvTQpUdXZhbHVhbgpUd2Fpbi9NClR3ZWVkL00KVHdlZWRsZWRlZS9NClR3ZWVkbGVkdW0vTQpUd2lsYS9NClR3aW5raWVzL00KVHdpdHRlci9NClR3aXp6bGVycy9NClR3cApUeS9NClR5Y2hvL00KVHlsZW5vbC9NClR5bGVyL00KVHluZGFsZS9NClR5bmRhbGwvTQpUeXJlL00KVHlyZWUvTQpUeXJvbGVhbgpUeXJvbmUvTQpUeXNvbi9NClUvTQpVQVIKVUFXClVCUy9NClVDTEEvTQpVRk8vU00KVUhGL00KVUsvTQpVTApVTi9NClVORVNDTy9NClVOSUNFRi9NClVOSVgvTQpVUEMKVVBJL00KVVBTL00KVVJML1MKVVMvTQpVU0EvTQpVU0FGClVTQgpVU0NHClVTREEvTQpVU0lBClVTTUMKVVNOClVTTwpVU1AKVVNQUwpVU1MKVVNTUi9NClVUL00KVVRDClVWL00KVWJhbmdpL00KVWJ1bnR1L00KVWNheWFsaS9NClVjY2VsbG8vTQpVZGFsbC9NClVmYS9NClVnYW5kYS9NClVnYW5kYW4vTVMKVWlnaHVyL00KVWp1bmdwYW5kYW5nL00KVWtyYWluZS9NClVrcmFpbmlhbi9TTQpVbHN0ZXIvTQpVbHRyYXN1ZWRlL00KVWx5YW5vdnNrL00KVWx5c3Nlcy9NClVtYnJpZWwvTQpVbmRlcndvb2QvTQpVbmdhdmEvTQpVbmljb2RlL00KVW5pbGV2ZXIvTQpVbmlvbi9TTQpVbmlvbmlzdApVbmlyb3lhbC9NClVuaXRhcmlhbi9NUwpVbml0YXJpYW5pc20vTVMKVW5pdGFzL00KVW5peC9TClVudWthbGhhaS9NClVwYW5pc2hhZHMvTQpVcGRpa2UvTQpVcGpvaG4vTQpVcHRvbi9NClVyL00KVXJhbC9TTQpVcmFscy9NClVyYW5pYS9NClVyYW51cy9NClVyYmFuL00KVXJkdS9NClVyZXkvTQpVcmlhaC9NClVyaWVsL00KVXJpcy9NClVycXVoYXJ0L00KVXJzYS9NClVyc3VsYS9NClVyc3VsaW5lL00KVXJ1Z3VheS9NClVydWd1YXlhbi9NUwpVcnVtcWkvTQpVc2VuZXQvTVMKVXN0aW5vdi9NClV0ClV0YWgvTQpVdGFoYW4vTVMKVXRlL1NNClV0b3BpYS9TTQpVdG9waWFuL1NNClV0cmVjaHQvTQpVdHJpbGxvL00KVXpiZWsvTQpVemJla2lzdGFuL00KVXppL1NNClYvTQpWQQpWQVQvTQpWQVgKVkFYZXMKVkNSL00KVkQvTQpWRFQKVkRVClZGClZGVy9NClZHClZHQQpWSEYvTQpWSFMKVkkvTQpWSVAvU00KVklTVEEKVkoKVkxGL00KVk9BClZQClZUClZUT0wKVmEvTQpWYWRlci9NClZhZHV6L00KVmFsL00KVmFsYXJpZS9NClZhbGRlei9NClZhbGVuY2lhL1NNClZhbGVudGkvTQpWYWxlbnRpbi9NClZhbGVudGluZS9NClZhbGVudGluby9NClZhbGVuenVlbGEvTQpWYWxlcmlhL00KVmFsZXJpYW4vTQpWYWxlcmllL00KVmFsZXJ5L00KVmFsaGFsbGEvTQpWYWxpdW0vTVMKVmFsa3lyaWUvU00KVmFsbGVqbwpWYWxsZXR0YS9NClZhbG9pcy9NClZhbHBhcmFpc28vTQpWYWx2b2xpbmUvTQpWYW4vTQpWYW5jZS9NClZhbmNvdXZlci9NClZhbmRhbC9NUwpWYW5kZXJiaWx0L00KVmFuZHlrZS9NClZhbmVzc2EvTQpWYW5nL00KVmFudWF0dS9NClZhbnpldHRpL00KVmFyYW5hc2kvTQpWYXJlc2UvTQpWYXJnYXMvTQpWYXNlbGluZS9TTQpWYXNxdWV6L00KVmFzc2FyL00KVmF0aWNhbi9NClZhdWJhbi9NClZhdWdoYW4vTQpWYXVnaG4vTQpWYXpxdWV6L00KVmVibGVuL00KVmVkYS9TTQpWZWRhbnRhL00KVmVnYS9TTQpWZWdhcy9NClZlZ2VtaXRlL00KVmVsYS9NClZlbGFzcXVlei9NClZlbGF6cXVlei9NClZlbGNyby9NUwpWZWxlei9NClZlbG1hL00KVmVsdmVldGEvTQpWZW5ldGlhbi9TTQpWZW5lenVlbGEvTQpWZW5lenVlbGFuL1NNClZlbmljZS9NClZlbm4vTQpWZW50b2xpbi9NClZlbnVzL01TClZlbnVzaWFuL00KVmVyYS9NClZlcmFjcnV6L00KVmVyZGUvTQpWZXJkaS9NClZlcmR1bi9NClZlcml6b24vTQpWZXJsYWluZS9NClZlcm1lZXIvTQpWZXJtb250L1pNUgpWZXJtb250ZXIvTQpWZXJuL00KVmVybmEvTQpWZXJuZS9NClZlcm5vbi9NClZlcm9uYS9NClZlcm9uZXNlL00KVmVyb25pY2EvTQpWZXJzYWlsbGVzL00KVmVzYWxpdXMvTQpWZXNwYXNpYW4vTQpWZXNwdWNjaS9NClZlc3RhL00KVmVzdXZpdXMvTQpWaWFjb20vTQpWaWFncmEvTQpWaWMvTQpWaWNlbnRlL00KVmljaHkvTQpWaWNraS9NClZpY2tpZS9NClZpY2tzYnVyZy9NClZpY2t5L00KVmljdG9yL00KVmljdG9yaWEvTQpWaWN0b3JpYW4vTVMKVmljdG9yaWFuaXNtClZpY3Ryb2xhL00KVmlkYWwvTQpWaWVubmEvTQpWaWVubmVzZS9NClZpZW50aWFuZS9NClZpZXRjb25nL00KVmlldG1pbmgvTQpWaWV0bmFtL00KVmlldG5hbWVzZS9NClZpamF5YW5hZ2FyL00KVmlqYXlhd2FkYS9NClZpa2luZy9NUwpWaWxhL00KVmlsbGEvTQpWaWxsYXJyZWFsL00KVmlsbG9uL00KVmlsbWEvTQpWaWxuaXVzL00KVmlseXVpL00KVmluY2UvTQpWaW5jZW50L00KVmluZGVtaWF0cml4L00KVmluc29uL00KVmlvbGEvTQpWaW9sZXQvTQpWaXJnaWUvTQpWaXJnaWwvTQpWaXJnaW5pYS9NClZpcmdpbmlhbi9TTQpWaXJnby9TTQpWaXNhL00KVmlzYXlhbnMvTQpWaXNobnUvTQpWaXNpZ290aC9NClZpc2lnb3RocwpWaXN0dWxhL00KVml0aW0vTQpWaXRvL00KVml0dXMvTQpWaXZhbGRpL00KVml2ZWthbmFuZGEvTQpWaXZpYW4vTQpWaXZpZW5uZS9NClZsYWQvTQpWbGFkaW1pci9NClZsYWRpdm9zdG9rL00KVmxhbWluY2svTQpWbGFzaWMvTQpWb0lQClZvZ3VlL00KVm9sY2tlci9NClZvbGRlbW9ydC9NClZvbGdhL00KVm9sZ29ncmFkL00KVm9sa3N3YWdlbi9NClZvbHN0ZWFkL00KVm9sdGEvTQpWb2x0YWlyZS9NClZvbHZvL00KVm9uZGEvTQpWb25uZWd1dC9NClZvcm9uZXpoL00KVm9yc3Rlci9NClZveWFnZXIvTQpWdApWdWl0dG9uL00KVnVsY2FuL00KVnVsZwpWdWxnYXRlL1NNClcvTURUCldBCldBQwpXQVNQL00KV0FUUy9NCldDCldITy9NCldJCldNRApXTlcvTQpXUApXU1cvTQpXVE8KV1YKV1cKV1dJCldXSUkKV1dXL00KV1kKV1lTSVdZRwpXYWJhc2gvTQpXYWMKV2Fjby9NCldhZGUvTQpXYWduZXIvTQpXYWduZXJpYW4vTQpXYWhoYWJpL00KV2Fpa2lraS9NCldhaXRlL00KV2FrZS9NCldha3NtYW4vTQpXYWxkL01OCldhbGRlbWFyL00KV2FsZGVuL00KV2FsZGVuc2lhbi9NCldhbGRoZWltL00KV2FsZG8vTQpXYWxkb3JmL00KV2FsZXMvTQpXYWxlc2EvTQpXYWxncmVlbi9NCldhbGtlci9NCldhbGttYW4vTQpXYWxsL1NNUgpXYWxsYWNlL00KV2FsbGVuc3RlaW4vTQpXYWxsZXIvTQpXYWxsaXMvTQpXYWxsb29uL00KV2FsbHMvTQpXYWxtYXJ0L00KV2FscG9sZS9NCldhbHB1cmdpc25hY2h0L00KV2Fsc2gvTQpXYWx0L01SWgpXYWx0ZXIvTQpXYWx0ZXJzL00KV2FsdG9uL00KV2FuYW1ha2VyL00KV2FuZGEvTQpXYW5nL00KV2Fua2VsL00KV2FyZC9NCldhcmUvTUcKV2FyaG9sL00KV2FyaW5nL00KV2FybmVyL00KV2FycmVuL00KV2Fyc2F3L00KV2Fyd2ljay9NCldhc2F0Y2gvTQpXYXNoL00KV2FzaGluZ3Rvbi9NCldhc2hpbmd0b25pYW4vTVMKV2Fzc2VybWFubi9NCldhdGVyYnVyeS9NCldhdGVyZm9yZC9NCldhdGVyZ2F0ZS9NCldhdGVybG9vL01TCldhdGVycy9NCldhdGtpbnMvTQpXYXRzb24vTQpXYXR0L1NNCldhdHRlYXUvTQpXYXR0cy9NCldhdHVzaS9NCldhdWdoL00KV2F2ZQpXYXluZS9NCldlYXZlci9NCldlYi9NUgpXZWJiL00KV2ViZXIvTQpXZWJlcm4vTQpXZWJzdGVyL01TCldlZC9NCldlZGRlbGwvTQpXZWRnd29vZC9NCldlZG5lc2RheS9NUwpXZWVrcy9NCldlaHJtYWNodC9NCldlaS9NCldlaWVyc3RyYXNzL00KV2VpbGwvTQpXZWluYmVyZy9NCldlaXNzL00KV2Vpc3NtdWxsZXIvTQpXZWl6bWFubi9NCldlbGRvbi9NCldlbGxhbmQvTQpXZWxsZXIvTQpXZWxsZXMvTQpXZWxsaW5ndG9uL1NNCldlbGxzL00KV2Vsc2gvTQpXZWxzaG1hbi9NCldlbHNobWVuL00KV2Vsc2h3b21hbgpXZW5kZWxsL00KV2VuZGkvTQpXZW5keS9NCldlc2FrL00KV2VzbGV5L00KV2VzbGV5YW4vTQpXZXNzZXgvTQpXZXNzb24vTQpXZXN0L1NNCldlc3Rlcm4vTVJTCldlc3Rpbmdob3VzZS9NCldlc3RtaW5zdGVyL00KV2VzdG9uL00KV2VzdHBoYWxpYS9NCldleWRlbi9NCldlemVuL00KV2hhcnRvbi9NCldoZWF0aWVzL00KV2hlYXRzdG9uZS9NCldoZWVsZXIvTQpXaGVlbGluZy9NCldoaWcvU00KV2hpcHBsZS9NCldoaXJscG9vbC9NCldoaXN0bGVyL00KV2hpdGFrZXIvTQpXaGl0ZS9TTQpXaGl0ZWZpZWxkL00KV2hpdGVoYWxsL00KV2hpdGVoZWFkL00KV2hpdGVob3JzZS9NCldoaXRlbGV5L00KV2hpdGZpZWxkL00KV2hpdGxleS9NCldoaXRtYW4vTQpXaGl0bmV5L00KV2hpdHN1bmRheS9NUwpXaGl0dGllci9NCldpRmkKV2ljY2EvTQpXaWNoaXRhL00KV2llbWFyL00KV2llc2VsL00KV2llc2VudGhhbC9NCldpZ2dpbnMvTQpXaWduZXIvTQpXaWkvTQpXaWtpbGVha3MKV2lraXBlZGlhL00KV2lsYmVyZm9yY2UvTQpXaWxiZXJ0L00KV2lsYnVyL00KV2lsYnVybi9NCldpbGNveC9NCldpbGRhL00KV2lsZGUvTVIKV2lsZGVyL00KV2lsZXMvTQpXaWxleS9NCldpbGZvcmQvTQpXaWxmcmVkL00KV2lsZnJlZG8vTQpXaWxoZWxtL00KV2lsaGVsbWluYS9NCldpbGtlcnNvbi9NCldpbGtlcy9NCldpbGtpbnMvTQpXaWxraW5zb24vTQpXaWxsL00KV2lsbGEvTQpXaWxsYW1ldHRlL00KV2lsbGFyZC9NCldpbGxlbXN0YWQvTQpXaWxsaWFtL1NNCldpbGxpYW1zL00KV2lsbGlhbXNvbi9NCldpbGxpZS9NCldpbGxpcy9NCldpbGx5L00KV2lsbWEvTQpXaWxtZXIvTQpXaWxtaW5ndG9uL00KV2lsc29uL00KV2lsc29uaWFuL00KV2lsdG9uL00KV2ltYmxlZG9uL00KV2ltc2V5L00KV2luY2hlbGwvTQpXaW5jaGVzdGVyL01TCldpbmRicmVha2VyL00KV2luZGV4L00KV2luZGhvZWsvTQpXaW5kb3dzL00KV2luZHNvci9TTQpXaW5kd2FyZC9NCldpbmVzYXAvTQpXaW5mcmVkL00KV2luZnJleS9NCldpbmlmcmVkL00KV2lua2xlL00KV2lubmViYWdvL00KV2lubmllL00KV2lubmlwZWcvTQpXaW5zdG9uL00KV2ludGVycy9NCldpbnRocm9wL00KV2lzCldpc2MKV2lzY29uc2luL00KV2lzY29uc2luaXRlL01TCldpc2UvTQpXaXR0L00KV2l0dGdlbnN0ZWluL00KV2l0d2F0ZXJzcmFuZC9NCldtL00KV29iZWdvbi9NCldvZGVob3VzZS9NCldvbGYvTQpXb2xmZS9NCldvbGZmL00KV29sZmdhbmcvTQpXb2xsb25nb25nL00KV29sbHN0b25lY3JhZnQvTQpXb2xzZXkvTQpXb2x2ZXJoYW1wdG9uCldvbmRlci9NCldvbmRlcmJyYS9NCldvbmcvTQpXb29kL1NNCldvb2RhcmQvTQpXb29kaHVsbC9NCldvb2Ryb3cvTQpXb29kcy9NCldvb2RzdG9jay9NCldvb2R3YXJkL00KV29vbGYvTQpXb29saXRlL00KV29vbG9uZ29uZy9NCldvb2x3b3J0aC9NCldvb3N0ZXIvTQpXb290ZW4vTQpXb3JjZXN0ZXIvU00KV29yY2VzdGVyc2hpcmUvTQpXb3Jkc3dvcnRoL00KV29ya21hbi9NCldvcm1zL00KV290YW4vTQpXb3Zva2EvTQpXb3puaWFrL00KV296emVjay9NCldyYW5nZWxsL00KV3Jlbi9NCldyaWdodC9NCldyaWdsZXkvTQpXcm9jbGF3L00KV3UvTQpXdWhhbi9NCld1cmxpdHplci9NCld5YXR0L00KV3ljaGVybGV5L00KV3ljbGlmZmUvTQpXeWV0aC9NCld5bGllL00KV3lubi9NCld5bwpXeW9taW5nL00KV3lvbWluZ2l0ZS9TTQpYL00KWEVtYWNzL00KWEwvTQpYTUwKWFMKWFhMClhhbmFkdS9NClhhbnRoaXBwZS9NClhhdmllci9NClhlL1NNClhlbmFraXMvTQpYZW5pYS9NClhlbm9waG9uL00KWGVyb3gvTVMKWGVyeGVzL00KWGhvc2EvTQpYaSdhbi9NClhpYW4vU00KWGlhb3BpbmcvTQpYaW1lbmVzL00KWGluZ3UvTQpYaW9uZ251L00KWG1hcy9NUwpYb2NoaXBpbGxpL00KWHV6aG91L00KWS9NCllNQ0EvTQpZTUhBCllNTVYKWVQKWVdDQS9NCllXSEEKWWFjYy9NCllhaG9vL00KWWFodHplZS9NCllhaHdlaC9NCllha2ltYS9NCllha3V0L00KWWFrdXRzay9NCllhbGUvTQpZYWxvdy9NCllhbHRhL00KWWFsdS9NCllhbWFnYXRhL00KWWFtYWhhL00KWWFtb3Vzc291a3JvL00KWWFuZy9NCllhbmdvbi9NCllhbmd0emUvTQpZYW5rL1NNCllhbmtlZS9TTQpZYW9iYW5nL00KWWFvdW5kZS9NCllhcXVpL00KWWFyZW4KWWFyb3NsYXZsL00KWWF0YXJvL00KWWF0ZXMvTQpZYi9NClllYWdlci9NClllYXRzL00KWWVrYXRlcmluYnVyZy9NClllbGxvd2tuaWZlL00KWWVsbG93c3RvbmUvTQpZZWx0c2luL00KWWVtZW4vTQpZZW1lbmkvU00KWWVtZW5pdGUKWWVuaXNlaS9NClllcmV2YW4vTQpZZXJrZXMvTQpZZXNlbmlhL00KWWV2dHVzaGVua28vTQpZZ2dkcmFzaWwvTQpZaWRkaXNoL00KWW1pci9NCllvZGEvTQpZb2tuYXBhdGF3cGhhL00KWW9rby9NCllva29oYW1hL00KWW9sYW5kYS9NCllvbmcvTQpZb25rZXJzL00KWW9yay9NCllvcmtpZS9NCllvcmtzaGlyZS9NUwpZb3JrdG93bi9NCllvcnViYS9NCllvc2VtaXRlL00KWW9zc2FyaWFuL00KWW91VHViZS9NCllvdW5nL00KWW91bmdzdG93bi9NCllwcmVzL00KWXBzaWxhbnRpL00KWXVhbi9NCll1Y2F0YW4vTQpZdWdvL00KWXVnb3NsYXYvTVMKWXVnb3NsYXZpYS9NCll1Z29zbGF2aWFuL1NNCll1a29uL00KWXVsZS9TTQpZdWxldGlkZS9NUwpZdW1hL1NNCll1bm5hbi9NCll1cmkvTQpZdmVzL00KWXZldHRlL00KWXZvbm5lL00KWi9TTU5YVApaYWNoYXJpYWgvTQpaYWNoYXJ5L00KWmFjaGVyeS9NClphZ3JlYi9NClphaXJlL00KWmFpcmlhbgpaYW1iZXppL00KWmFtYmlhL00KWmFtYmlhbi9TTQpaYW1ib25pL00KWmFtZW5ob2YvTQpaYW1vcmEvTQpaYW5lL00KWmFudWNrL00KWmFuemliYXIvTQpaYXBhdGEvTQpaYXBvcm96aHllL00KWmFwb3RlYy9NClphcHBhL00KWmFyYS9NClphcmF0aHVzdHJhL00KWmVhbGFuZC9NClplYmVkZWUvTQpaZWNoYXJpYWgvTQpaZWRla2lhaC9NClplZG9uZy9NClplZmZpcmVsbGkvTQpaZWtlL00KWmVsaWcvTQpaZWxtYS9NClplbi9NClplbmdlci9NClplbm8vTQpaZXBoYW5pYWgvTQpaZXBoeXJ1cy9NClplc3QvTQpaZXVzL00KWmhkYW5vdgpaaGVuZ3pob3UvTQpaaGl2YWdvL00KWmh1a292L00KWmliby9NClppZWdmZWxkL00KWmllZ2xlci9NClppZ2d5L00KWmlrYQpaaW1iYWJ3ZS9NClppbWJhYndlYW4vU00KWmltbWVybWFuL00KWmluZmFuZGVsL00KWmlvbi9TTQpaaW9uaXNtL1NNClppb25pc3QvU00KWmlwbG9jL00KWm4vTQpab2UvTQpab2xhL00KWm9sbHZlcmVpbi9NClpvbG9mdC9NClpvbWJhL00KWm9ybi9NClpvcm9hc3Rlci9NClpvcm9hc3RyaWFuL01TClpvcm9hc3RyaWFuaXNtL1NNClpvcnJvL00KWm9zbWEvTQpaci9NClpzaWdtb25keS9NClp1YmVuZWxnZW51YmkvTQpadWJlbmVzY2hhbWFsaS9NClp1a29yL00KWnVsdS9TTQpadWx1bGFuZApadW5pL00KWnVyaWNoL00KWndpbmdsaS9NClp3b3J5a2luL00KWnlydGVjL00KWnl1Z2Fub3YvTQpaenoKYS9TCmFhaAphYXJkdmFyay9TTQphYi9TRFkKYWJhY2sKYWJhY3VzL01TCmFiYWZ0CmFiYWxvbmUvU00KYWJhbmRvbi9MU0RHCmFiYW5kb25tZW50L00KYWJhc2UvTEdEUwphYmFzZW1lbnQvTQphYmFzaC9HTERTCmFiYXNoZWQvVVkKYWJhc2htZW50L00KYWJhdGUvTEdEUwphYmF0ZWQvVQphYmF0ZW1lbnQvTQphYmF0dG9pci9NUwphYmJlL1NNCmFiYmVzcy9NUwphYmJleS9NUwphYmJvdC9NUwphYmJyCmFiYnJldi9TCmFiYnJldmlhdGUvRFNHTlgKYWJicmV2aWF0aW9uL00KYWJkaWNhdGUvR05EU1gKYWJkaWNhdGlvbi9NCmFiZG9tZW4vU00KYWJkb21pbmFsCmFiZHVjdC9EU0cKYWJkdWN0ZWUvTVMKYWJkdWN0aW9uL1NNCmFiZHVjdG9yL01TCmFiZWFtCmFiZXJyYW50CmFiZXJyYXRpb24vTVMKYWJlcnJhdGlvbmFsCmFiZXQvUwphYmV0dGVkCmFiZXR0aW5nCmFiZXR0b3IvU00KYWJleWFuY2UvTQphYmhvci9TCmFiaG9ycmVkCmFiaG9ycmVuY2UvTQphYmhvcnJlbnQvWQphYmhvcnJpbmcKYWJpZGFuY2UvTQphYmlkZS9HUwphYmlkaW5nL1kKYWJpbGl0eS9JRU1TCmFiamVjdC9ZUAphYmplY3Rpb24vTQphYmplY3RuZXNzL00KYWJqdXJhdGlvbi9TTQphYmp1cmF0b3J5CmFianVyZS9aR0RSUwphYmp1cmVyL00KYWJsYXRlL1hHTlZEUwphYmxhdGlvbi9NCmFibGF0aXZlL01TCmFibGF6ZQphYmxlL1VUCmFibGVyCmFibG9vbQphYmx1dGlvbi9TTQphYm5lZ2F0ZS9HTkRTCmFibmVnYXRpb24vTQphYm5vcm1hbC9ZCmFibm9ybWFsaXR5L1NNCmFib2FyZAphYm9kZS9NUwphYm9saXNoL0dEUwphYm9saXRpb24vTQphYm9saXRpb25pc20vTQphYm9saXRpb25pc3QvU00KYWJvbWluYWJsZQphYm9taW5hYmx5CmFib21pbmF0ZS9EU0dOWAphYm9taW5hdGlvbi9NCmFib3JpZ2luYWwvTVMKYWJvcmlnaW5lL1NNCmFib3JuaW5nCmFib3J0L0dWRFMKYWJvcnRpb24vTVMKYWJvcnRpb25pc3QvTVMKYWJvcnRpdmUvWQphYm91bmQvRFNHCmFib3V0CmFib3ZlL00KYWJvdmVib2FyZAphYnJhY2FkYWJyYS9NCmFicmFkZS9HRFMKYWJyYXNpb24vTVMKYWJyYXNpdmUvTVlQUwphYnJhc2l2ZW5lc3MvTQphYnJlYXN0CmFicmlkZ2UvRFNHCmFicmlkZ21lbnQvTVMKYWJyb2FkCmFicm9nYXRlL1hHTkRTCmFicm9nYXRpb24vTQphYnJvZ2F0b3IvTVMKYWJydXB0L1RQUlkKYWJydXB0bmVzcy9NCmFicy9NCmFic2Nlc3MvTURTRwphYnNjaXNzYS9TTQphYnNjaXNzaW9uL00KYWJzY29uZC9aR1NEUgphYnNjb25kZXIvTQphYnNlaWwvTURTRwphYnNlbmNlL1NNCmFic2VudC9EWVNHCmFic2VudGVlL01TCmFic2VudGVlaXNtL00KYWJzZW50bWluZGVkL1lQCmFic2VudG1pbmRlZG5lc3MvTQphYnNpbnRoZS9NCmFic29sdXRlL1BNWVROUwphYnNvbHV0ZW5lc3MvTQphYnNvbHV0aW9uL00KYWJzb2x1dGlzbS9NCmFic29sdXRpc3QvTVMKYWJzb2x2ZS9EU0cKYWJzb3JiL0FHRFMKYWJzb3JiYW5jZQphYnNvcmJlbmN5L00KYWJzb3JiZW50L1NNCmFic29yYmluZy9ZCmFic29ycHRpb24vTQphYnNvcnB0aXZlCmFic3RhaW4vRFJaR1MKYWJzdGFpbmVyL00KYWJzdGVtaW91cy9QWQphYnN0ZW1pb3VzbmVzcy9NCmFic3RlbnRpb24vTVMKYWJzdGluZW5jZS9NCmFic3RpbmVudAphYnN0cmFjdC9HU1BNRFkKYWJzdHJhY3RlZC9ZUAphYnN0cmFjdGVkbmVzcy9NCmFic3RyYWN0aW9uL1NNCmFic3RyYWN0bmVzcy9NUwphYnN0cnVzZS9ZUAphYnN0cnVzZW5lc3MvTQphYnN1cmQvVFBSWQphYnN1cmRpc3QvTVMKYWJzdXJkaXR5L1NNCmFic3VyZG5lc3MvTQphYnVuZGFuY2UvU00KYWJ1bmRhbnQvWQphYnVzZSdzCmFidXNlL0VHVkRTCmFidXNlci9NUwphYnVzaXZlL1lQCmFidXNpdmVuZXNzL00KYWJ1dC9TTAphYnV0bWVudC9NUwphYnV0dGVkCmFidXR0aW5nCmFidXp6CmFieXNtYWwvWQphYnlzcy9NUwphYnlzc2FsCmFjCmFjYWNpYS9NUwphY2FkZW1lL00KYWNhZGVtaWEvTQphY2FkZW1pYy9TTQphY2FkZW1pY2FsL1kKYWNhZGVtaWNpYW4vTVMKYWNhZGVteS9TTQphY2FudGh1cy9NUwphY2NlZGUvR0RTCmFjY2VsZXJhdGUvR05YRFMKYWNjZWxlcmF0aW9uL00KYWNjZWxlcmF0b3IvU00KYWNjZW50L01EU0cKYWNjZW50ZWQvVQphY2NlbnR1YWwKYWNjZW50dWF0ZS9HTkRTCmFjY2VudHVhdGlvbi9NCmFjY2VwdC9EU0JHCmFjY2VwdGFiaWxpdHkvTQphY2NlcHRhYmxlbmVzcy9NCmFjY2VwdGFibHkvVQphY2NlcHRhbmNlL1NNCmFjY2VwdGF0aW9uL01TCmFjY2VwdGVkL1UKYWNjZXNzL01EU0cKYWNjZXNzaWJpbGl0eS9JTQphY2Nlc3NpYmxlL0kKYWNjZXNzaWJseS9JCmFjY2Vzc2lvbi9NREdTCmFjY2Vzc29yaXplL0RTRwphY2Nlc3NvcnkvU00KYWNjaWRlbnQvTVMKYWNjaWRlbnRhbC9TTVkKYWNjbGFpbS9NREdTCmFjY2xhbWF0aW9uL00KYWNjbGltYXRlL0RTR04KYWNjbGltYXRpb24vTQphY2NsaW1hdGl6YXRpb24vTQphY2NsaW1hdGl6ZS9EU0cKYWNjbGl2aXR5L1NNCmFjY29sYWRlL1NNCmFjY29tbW9kYXRlL1hHTkRTCmFjY29tbW9kYXRpbmcvWQphY2NvbW1vZGF0aW9uL00KYWNjb21wYW5pZWQvVQphY2NvbXBhbmltZW50L01TCmFjY29tcGFuaXN0L1NNCmFjY29tcGFueS9EU0cKYWNjb21wbGljZS9TTQphY2NvbXBsaXNoL0RTTEcKYWNjb21wbGlzaGVkL1UKYWNjb21wbGlzaG1lbnQvTVMKYWNjb3JkL0dNRFMKYWNjb3JkYW5jZS9NCmFjY29yZGFudAphY2NvcmRpbmcvWQphY2NvcmRpb24vTVMKYWNjb3JkaW9uaXN0L01TCmFjY29zdC9HTURTCmFjY291bnQvTURTQkcKYWNjb3VudGFiaWxpdHkvTQphY2NvdW50YWJsZS9VCmFjY291bnRhbmN5L00KYWNjb3VudGFudC9NUwphY2NvdW50ZWQvVQphY2NvdW50aW5nL00KYWNjb3V0ZXIvU0dECmFjY291dGVybWVudHMvTQphY2NyZWRpdC9TR0QKYWNjcmVkaXRhdGlvbi9NCmFjY3JlZGl0ZWQvVQphY2NyZXRpb24vTVMKYWNjcnVhbC9NUwphY2NydWUvR0RTCmFjY3QKYWNjdWx0dXJhdGUvRFNHTgphY2N1bHR1cmF0aW9uL00KYWNjdW11bGF0ZS9YR05WRFMKYWNjdW11bGF0aW9uL00KYWNjdW11bGF0b3IvTVMKYWNjdXJhY3kvSU0KYWNjdXJhdGUvSVkKYWNjdXJhdGVuZXNzL00KYWNjdXJzZWQvUAphY2N1cnNlZG5lc3MvTQphY2N1c2F0aW9uL01TCmFjY3VzYXRpdmUvTVMKYWNjdXNhdG9yeQphY2N1c2UvWkdEUlMKYWNjdXNlci9NCmFjY3VzaW5nL1kKYWNjdXN0b20vRFNHCmFjY3VzdG9tZWQvVQphY2UvRFNNRwphY2VyYmF0ZS9EU0cKYWNlcmJpYwphY2VyYmljYWxseQphY2VyYml0eS9NCmFjZXRhbWlub3BoZW4vTQphY2V0YXRlL01TCmFjZXRpYwphY2V0b25lL00KYWNldG9uaWMKYWNldHlsCmFjZXR5bGVuZS9NCmFjaGUvRFNNRwphY2hlbmUvTVMKYWNoaWV2ZS9CTFpHRFJTCmFjaGlldmVtZW50L1NNCmFjaGlldmVyL00KYWNoaW5nL1kKYWNob28vTQphY2hyb21hdGljCmFjaHkvVFIKYWNpZC9TTVkKYWNpZGljCmFjaWRpZnkvR0RTCmFjaWRpdHkvTQphY2lkb3Npcy9NCmFjaWR1bG91cwphY2tub3dsZWRnZS9EU0cKYWNrbm93bGVkZ2VkL1UKYWNrbm93bGVkZ21lbnQvU00KYWNtZS9TTQphY25lL00KYWNvbHl0ZS9NUwphY29uaXRlL01TCmFjb3JuL01TCmFjb3VzdGljL1MKYWNvdXN0aWNhbC9ZCmFjb3VzdGljcy9NCmFjcXVhaW50L0FHU0QKYWNxdWFpbnRhbmNlL1NNCmFjcXVhaW50YW5jZXNoaXAvTQphY3F1YWludGVkL1UKYWNxdWllc2NlL0RTRwphY3F1aWVzY2VuY2UvTQphY3F1aWVzY2VudC9ZCmFjcXVpcmUvWkdCRFJTTAphY3F1aXJlbWVudC9NCmFjcXVpc2l0aW9uL01TCmFjcXVpc2l0aXZlL1lQCmFjcXVpc2l0aXZlbmVzcy9NCmFjcXVpdC9TCmFjcXVpdHRhbC9NUwphY3F1aXR0ZWQKYWNxdWl0dGluZwphY3JlL1NNCmFjcmVhZ2UvTVMKYWNyaWQvUFRSWQphY3JpZGl0eS9NCmFjcmlkbmVzcy9NCmFjcmltb25pb3VzL1lQCmFjcmltb25pb3VzbmVzcy9NCmFjcmltb255L00KYWNyb2JhdC9NUwphY3JvYmF0aWMvUwphY3JvYmF0aWNhbGx5CmFjcm9iYXRpY3MvTQphY3JvbnltL01TCmFjcm9waG9iaWEvTQphY3JvcG9saXMvTVMKYWNyb3NzCmFjcm9zdGljL1NNCmFjcnlsYW1pZGUKYWNyeWxpYy9NUwphY3QncwphY3QvQVNER1YKYWN0aW5nL00KYWN0aW5pdW0vTQphY3Rpb24vQVNNCmFjdGlvbmFibGUKYWN0aXZhdGUvSUNBTkdTRAphY3RpdmF0aW9uL0lDQU0KYWN0aXZhdG9yL01TCmFjdGl2ZSdzCmFjdGl2ZS9JS1kKYWN0aXZlbmVzcy9NCmFjdGl2ZXMKYWN0aXZpc20vTQphY3RpdmlzdC9NUwphY3Rpdml0aWVzCmFjdGl2aXR5L0lNCmFjdG9yL0FNUwphY3RyZXNzL01TCmFjdHVhbC9ZCmFjdHVhbGl0eS9TTQphY3R1YWxpemF0aW9uL00KYWN0dWFsaXplL0dEUwphY3R1YXJpYWwKYWN0dWFyeS9TTQphY3R1YXRlL0dORFMKYWN0dWF0aW9uL00KYWN0dWF0b3IvU00KYWN1aXR5L00KYWN1bWVuL00KYWN1cHJlc3N1cmUvTQphY3VwdW5jdHVyZS9NCmFjdXB1bmN0dXJpc3QvU00KYWN1dGUvUE1ZVFJTCmFjdXRlbmVzcy9NCmFjeWNsb3Zpci9NCmFjeWwKYWQvU00KYWRhZ2UvTVMKYWRhZ2lvL01TCmFkYW1hbnQvTVkKYWRhcHQvQlpHVkRSUwphZGFwdGFiaWxpdHkvTQphZGFwdGF0aW9uL01TCmFkYXB0ZXIvTQphZGFwdGlvbi9TCmFkZC9TRFJCWkcKYWRkZW5kL01TCmFkZGVuZGEKYWRkZW5kdW0vTQphZGRlci9NCmFkZGljdC9HVk1EUwphZGRpY3Rpb24vU00KYWRkaXRpb24vU00KYWRkaXRpb25hbC9ZCmFkZGl0aXZlL1NNCmFkZGxlL0dEUwphZGRyZXNzJ3MKYWRkcmVzcy9BR0RTCmFkZHJlc3NhYmxlCmFkZHJlc3NlZC9VCmFkZHJlc3NlZS9TTQphZGR1Y2UvR0RTCmFkZW5pbmUvTQphZGVub2NhcmNpbm9tYQphZGVub2lkL1NNCmFkZW5vaWRhbAphZGVwdC9NWVBTCmFkZXB0bmVzcy9NCmFkZXF1YWN5L0lNCmFkZXF1YXRlL0lZCmFkZXF1YXRlbmVzcy9NCmFkaGVyZS9HRFMKYWRoZXJlbmNlL00KYWRoZXJlbnQvU00KYWRoZXNpb24vTQphZGhlc2l2ZS9QU00KYWRoZXNpdmVuZXNzL00KYWRpYWJhdGljCmFkaWV1L01TCmFkaW9zCmFkaXBvc2UKYWRqCmFkamFjZW5jeS9NCmFkamFjZW50L1kKYWRqZWN0aXZhbC9ZCmFkamVjdGl2ZS9NUwphZGpvaW4vR0RTCmFkam91cm4vREdMUwphZGpvdXJubWVudC9TTQphZGp1ZGdlL0dEUwphZGp1ZGljYXRlL0dOVlhEUwphZGp1ZGljYXRpb24vTQphZGp1ZGljYXRvci9TTQphZGp1ZGljYXRvcnkKYWRqdW5jdC9NUwphZGp1cmF0aW9uL01TCmFkanVyZS9HRFMKYWRqdXN0L0FHRFNMCmFkanVzdGFibGUKYWRqdXN0ZXIvU00KYWRqdXN0bWVudC9BTVMKYWRqdXRhbnQvU00KYWRtYW4vTQphZG1lbgphZG1pbi9TCmFkbWluaXN0ZXIvREdTCmFkbWluaXN0cmF0ZS9YRFNHTlYKYWRtaW5pc3RyYXRpb24vTQphZG1pbmlzdHJhdGl2ZS9ZCmFkbWluaXN0cmF0b3IvTVMKYWRtaXJhYmx5CmFkbWlyYWwvTVMKYWRtaXJhbHR5L00KYWRtaXJhdGlvbi9NCmFkbWlyZS9CWkdEUlMKYWRtaXJlci9NCmFkbWlyaW5nL1kKYWRtaXNzaWJpbGl0eS9JTQphZG1pc3NpYmxlL0kKYWRtaXNzaWJseQphZG1pc3Npb24vQU0KYWRtaXNzaW9ucwphZG1pdC9BUwphZG1pdHRhbmNlL00KYWRtaXR0ZWQvWQphZG1pdHRpbmcvQQphZG1peC9HRFMKYWRtaXh0dXJlL1NNCmFkbW9uaXNoL0xEU0cKYWRtb25pc2htZW50L01TCmFkbW9uaXRpb24vTVMKYWRtb25pdG9yeQphZG8vTQphZG9iZS9NUwphZG9sZXNjZW5jZS9TTQphZG9sZXNjZW50L1NNCmFkb3B0L0FHVkRTCmFkb3B0YWJsZQphZG9wdGVyL01TCmFkb3B0aW9uL1NNCmFkb3JhYmxlbmVzcy9NCmFkb3JhYmx5CmFkb3JhdGlvbi9NCmFkb3JlL0JaR0RSUwphZG9yZXIvTQphZG9yaW5nL1kKYWRvcm4vTEdEUwphZG9ybmVkL1UKYWRvcm5tZW50L01TCmFkcmVuYWwvTVMKYWRyZW5hbGluJ3MKYWRyZW5hbGluZS9NCmFkcmVuZXJnaWMKYWRyaWZ0CmFkcm9pdC9QWQphZHJvaXRuZXNzL00KYWRzb3JiL1NERwphZHNvcmJlbnQvTVMKYWRzb3JwdGlvbi9TTQphZHVsYXRlL0RTR04KYWR1bGF0aW9uL00KYWR1bGF0b3IvTVMKYWR1bGF0b3J5CmFkdWx0L01TCmFkdWx0ZXJhbnQvTVMKYWR1bHRlcmF0ZS9HTkRTCmFkdWx0ZXJhdGVkL1UKYWR1bHRlcmF0aW9uL00KYWR1bHRlcmVyL1NNCmFkdWx0ZXJlc3MvTVMKYWR1bHRlcm91cwphZHVsdGVyeS9TTQphZHVsdGhvb2QvTQphZHVtYnJhdGUvR05EUwphZHVtYnJhdGlvbi9NCmFkdgphZHZhbmNlL0xEU01HCmFkdmFuY2VtZW50L1NNCmFkdmFudGFnZS9FRFNNRwphZHZhbnRhZ2VvdXMvRVkKYWR2ZW50L1NNCmFkdmVudGl0aW91cy9ZCmFkdmVudHVyZS9EUlNNWkcKYWR2ZW50dXJlci9NCmFkdmVudHVyZXNvbWUKYWR2ZW50dXJlc3MvTVMKYWR2ZW50dXJpc20KYWR2ZW50dXJpc3QvUwphZHZlbnR1cm91cy9ZUAphZHZlbnR1cm91c25lc3MvTQphZHZlcmIvU00KYWR2ZXJiaWFsL1NNWQphZHZlcnNhcmlhbAphZHZlcnNhcnkvU00KYWR2ZXJzZS9QUllUCmFkdmVyc2VuZXNzL00KYWR2ZXJzaXR5L1NNCmFkdmVydC9TTURHCmFkdmVydGlzZS9MWkdEUlMKYWR2ZXJ0aXNlZC9VCmFkdmVydGlzZW1lbnQvTVMKYWR2ZXJ0aXNlci9NCmFkdmVydGlzaW5nL00KYWR2ZXJ0b3JpYWwvU00KYWR2aWNlL00KYWR2aXNhYmlsaXR5L0lNCmFkdmlzYWJsZS9JCmFkdmlzYWJseQphZHZpc2UvTERSU1pHQgphZHZpc2VkL1VZCmFkdmlzZW1lbnQvTQphZHZpc2VyL00KYWR2aXNvcnkvU00KYWR2b2NhY3kvTQphZHZvY2F0ZS9NR0RTCmFkdnQKYWR3YXJlCmFkemUvU00KYWVnaXMvTQphZXJhdGUvRFNHTgphZXJhdGlvbi9NCmFlcmF0b3IvU00KYWVyaWFsL1NNWQphZXJpYWxpc3QvTVMKYWVyaWUvTVMKYWVyb2JhdGljL1MKYWVyb2JhdGljcy9NCmFlcm9iaWMvUwphZXJvYmljYWxseQphZXJvYmljcy9NCmFlcm9kcm9tZS9NUwphZXJvZHluYW1pYy9TCmFlcm9keW5hbWljYWxseQphZXJvZHluYW1pY3MvTQphZXJvZ3JhbS9TCmFlcm9uYXV0aWMvUwphZXJvbmF1dGljYWwKYWVyb25hdXRpY3MvTQphZXJvc29sL01TCmFlcm9zcGFjZS9NCmFlc3RoZXRlL01TCmFlc3RoZXRpYy9TCmFlc3RoZXRpY2FsbHkKYWVzdGhldGljaXNtL00KYWVzdGhldGljcy9NCmFmYXIKYWZmYWJpbGl0eS9NCmFmZmFibGUKYWZmYWJseQphZmZhaXIvTVMKYWZmZWN0J3MKYWZmZWN0L0VHRFMKYWZmZWN0YXRpb24vU00KYWZmZWN0ZWQvVVkKYWZmZWN0aW5nL1kKYWZmZWN0aW9uL0VNCmFmZmVjdGlvbmF0ZS9ZCmFmZmVjdGlvbnMKYWZmZXJlbnQKYWZmaWFuY2UvR0RTCmFmZmlkYXZpdC9TTQphZmZpbGlhdGUncwphZmZpbGlhdGUvRUdORFMKYWZmaWxpYXRlZC9VCmFmZmlsaWF0aW9uL0VNCmFmZmlsaWF0aW9ucwphZmZpbml0eS9TTQphZmZpcm0vQUdEUwphZmZpcm1hdGlvbi9BTVMKYWZmaXJtYXRpdmUvTVlTCmFmZml4L0dNRFMKYWZmbGF0dXMvTQphZmZsaWN0L0dEUwphZmZsaWN0aW9uL1NNCmFmZmx1ZW5jZS9NCmFmZmx1ZW50L1kKYWZmb3JkL0dEU0IKYWZmb3JkYWJpbGl0eQphZmZvcmRhYmx5CmFmZm9yZXN0L0VHU0QKYWZmb3Jlc3RhdGlvbi9NCmFmZnJheS9NUwphZmZyb250L0dNRFMKYWZnaGFuL01TCmFmaWNpb25hZG8vTVMKYWZpZWxkCmFmaXJlCmFmbGFtZQphZmxvYXQKYWZsdXR0ZXIKYWZvb3QKYWZvcmVtZW50aW9uZWQKYWZvcmVzYWlkCmFmb3JldGhvdWdodAphZm91bAphZnJhaWQvVQphZnJlc2gKYWZ0L1JaCmFmdGVyYmlydGgvTQphZnRlcmJpcnRocwphZnRlcmJ1cm5lci9NUwphZnRlcmNhcmUvTQphZnRlcmVmZmVjdC9NUwphZnRlcmdsb3cvU00KYWZ0ZXJpbWFnZS9NUwphZnRlcmxpZmUvTQphZnRlcmxpdmVzCmFmdGVybWFya2V0L01TCmFmdGVybWF0aC9NCmFmdGVybWF0aHMKYWZ0ZXJub29uL01TCmFmdGVyc2hhdmUvU00KYWZ0ZXJzaG9jay9TTQphZnRlcnRhc3RlL1NNCmFmdGVydGhvdWdodC9TTQphZnRlcndhcmQvUwphZnRlcndvcmQvTVMKYWdhaW4KYWdhaW5zdAphZ2FwZS9NCmFnYXIvTQphZ2F0ZS9NUwphZ2F2ZS9NCmFnZS9EU01HSgphZ2Vpc20vTQphZ2Vpc3QvU00KYWdlbGVzcy9ZUAphZ2VsZXNzbmVzcy9NCmFnZW5jeS9TTQphZ2VuZGEvU00KYWdlbnQvQU1TCmFnZXJhdHVtL00KYWdnbG9tZXJhdGUvRFNNR05YCmFnZ2xvbWVyYXRpb24vTQphZ2dsdXRpbmF0ZS9EU1hHTgphZ2dsdXRpbmF0aW9uL00KYWdncmFuZGl6ZS9HTERTCmFnZ3JhbmRpemVtZW50L00KYWdncmF2YXRlL0dOWERTCmFnZ3JhdmF0aW5nL1kKYWdncmF2YXRpb24vTQphZ2dyZWdhdGUvTUdORFNYCmFnZ3JlZ2F0aW9uL00KYWdncmVzc2lvbi9NCmFnZ3Jlc3NpdmUvUFkKYWdncmVzc2l2ZW5lc3MvTQphZ2dyZXNzb3IvU00KYWdncmlldmUvRFNHCmFnZ3JvCmFnaGFzdAphZ2lsZS9ZCmFnaWxpdHkvTQphZ2luZy9NCmFnaXRhdGUvWEdORFMKYWdpdGF0aW9uL00KYWdpdGF0b3IvTVMKYWdpdHByb3AvTQphZ2xlYW0KYWdsaXR0ZXIKYWdsb3cKYWdub3N0aWMvTVMKYWdub3N0aWNpc20vTQphZ28KYWdvZwphZ29uaXN0L1MKYWdvbml6ZS9HRFMKYWdvbml6aW5nL1kKYWdvbnkvU00KYWdvcmFwaG9iaWEvTQphZ29yYXBob2JpYy9NUwphZ3Jhcmlhbi9NUwphZ3JhcmlhbmlzbS9NCmFncmVlL0VCTERTCmFncmVlYWJsZW5lc3MvRU0KYWdyZWVhYmx5L0UKYWdyZWVpbmcvRQphZ3JlZW1lbnQvRVNNCmFncmlidXNpbmVzcy9NUwphZ3JpY3VsdHVyYWwvWQphZ3JpY3VsdHVyYWxpc3QvTVMKYWdyaWN1bHR1cmUvTQphZ3JpY3VsdHVyaXN0L01TCmFncm9ub21pYwphZ3Jvbm9taXN0L01TCmFncm9ub215L00KYWdyb3VuZAphZ3VlL00KYWgKYWhhCmFoY2hvbwphaGVhZAphaGVtCmFob3kKYWlkL1NNREcKYWlkZS9TTQphaWRlZC9VCmFpZ3JldHRlL01TCmFpbC9TRExHCmFpbGVyb24vU00KYWlsbWVudC9TTQphaW0vU01ERwphaW1sZXNzL1lQCmFpbWxlc3NuZXNzL00KYWluJ3QKYWlyL1NNREpHCmFpcmJhZy9NUwphaXJiYXNlL1NNCmFpcmJlZC9TCmFpcmJvcm5lCmFpcmJydXNoL01EU0cKYWlyYnVzL01TCmFpcmNyYWZ0L00KYWlyY3JhZnRtYW4KYWlyY3JhZnRtZW4KYWlyY3Jldy9TCmFpcmRyb21lL1MKYWlyZHJvcC9TTQphaXJkcm9wcGVkCmFpcmRyb3BwaW5nCmFpcmZhcmUvU00KYWlyZmllbGQvU00KYWlyZmxvdy9NCmFpcmZvaWwvU00KYWlyZnJlaWdodC9NCmFpcmd1bnMKYWlyaGVhZC9TTQphaXJpbHkKYWlyaW5lc3MvTQphaXJpbmcvTQphaXJsZXNzL1AKYWlybGVzc25lc3MvTQphaXJsZXR0ZXJzCmFpcmxpZnQvU0dNRAphaXJsaW5lL1JTTVoKYWlybGluZXIvTQphaXJsb2NrL1NNCmFpcm1haWwvR1NNRAphaXJtYW4vTQphaXJtZW4KYWlycGxhbmUvTVMKYWlycGxheS9NCmFpcnBvcnQvU00KYWlyc2hpcC9TTQphaXJzaG93L1MKYWlyc2ljay9QCmFpcnNpY2tuZXNzL00KYWlyc3BhY2UvTQphaXJzcGVlZAphaXJzdHJpa2UvTVMKYWlyc3RyaXAvU00KYWlydGlnaHQKYWlydGltZS9NCmFpcndhdmVzL00KYWlyd2F5L01TCmFpcndvbWFuCmFpcndvbWVuCmFpcndvcnRoaW5lc3MvTQphaXJ3b3J0aHkvUAphaXJ5L1BUUgphaXNsZS9NUwphaXRjaC9NUwphamFyCmFrYQpha2ltYm8KYWtpbgphbGFiYXN0ZXIvTQphbGFjawphbGFjcml0eS9NCmFsYXJtL0dNRFMKYWxhcm1pbmcvWQphbGFybWlzdC9TTQphbGFzCmFsYi9TTQphbGJhY29yZS9TTQphbGJhdHJvc3MvTVMKYWxiZWl0CmFsYmluaXNtL00KYWxiaW5vL01TCmFsYnVtL01OUwphbGJ1bWVuL00KYWxidW1pbi9NCmFsYnVtaW5vdXMKYWxjaGVtaXN0L1NNCmFsY2hlbXkvTQphbGNvaG9sL1NNCmFsY29ob2xpYy9NUwphbGNvaG9saWNhbGx5CmFsY29ob2xpc20vTQphbGNvdmUvTVMKYWxkZXIvTVMKYWxkZXJtYW4vTQphbGRlcm1lbgphbGRlcndvbWFuL00KYWxkZXJ3b21lbgphbGUvU01WCmFsZWF0b3J5CmFsZWhvdXNlL1NNCmFsZW1iaWMvU00KYWxlcnQvR01EWVBTCmFsZXJ0bmVzcy9NCmFsZXdpZmUvTQphbGV3aXZlcwphbGZhbGZhL00KYWxmcmVzY28KYWxnYS9NCmFsZ2FlCmFsZ2FsCmFsZ2VicmEvU00KYWxnZWJyYWljCmFsZ2VicmFpY2FsbHkKYWxnb3JpdGhtL1NNCmFsZ29yaXRobWljCmFsaWFzL0dNRFMKYWxpYmkvR01EUwphbGllbi9CR01EUwphbGllbmFibGUvSVUKYWxpZW5hdGUvRFNHTgphbGllbmF0aW9uL00KYWxpZW5pc3QvU00KYWxpZ2h0L0dEUwphbGlnbi9BTEdEUwphbGlnbmVkL1UKYWxpZ25lci9NUwphbGlnbm1lbnQvQU1TCmFsaWtlL1UKYWxpbWVudC9NRFNHCmFsaW1lbnRhcnkKYWxpbW9ueS9NCmFsaXZlbmVzcy9NCmFsaXlhaC9NCmFsaXlhaHMKYWxrYWxpL00KYWxrYWxpZXMKYWxrYWxpbmUKYWxrYWxpbml0eS9NCmFsa2FsaXplL0RTRwphbGthbG9pZC9TTQphbGt5ZC9NUwphbGwvTQphbGxheS9HRFMKYWxsZWdhdGlvbi9NUwphbGxlZ2UvR0RTCmFsbGVnZWQvWQphbGxlZ2lhbmNlL01TCmFsbGVnb3JpYwphbGxlZ29yaWNhbC9ZCmFsbGVnb3Jpc3QvTVMKYWxsZWdvcnkvU00KYWxsZWdyZXR0by9NUwphbGxlZ3JvL01TCmFsbGVsZS9NUwphbGxlbHVpYS9TTQphbGxlcmdlbi9TTQphbGxlcmdlbmljCmFsbGVyZ2ljCmFsbGVyZ2ljYWxseQphbGxlcmdpc3QvU00KYWxsZXJneS9TTQphbGxldmlhdGUvRFNHTgphbGxldmlhdGlvbi9NCmFsbGV5L01TCmFsbGV5d2F5L1NNCmFsbGlhbmNlL1NNCmFsbGlnYXRvci9NUwphbGxpdGVyYXRlL0RTWEdOVgphbGxpdGVyYXRpb24vTQphbGxpdGVyYXRpdmUvWQphbGxvY2F0ZS9BRFNHTgphbGxvY2F0aW9uL0FNCmFsbG9jYXRpb25zCmFsbG90L0xTCmFsbG90bWVudC9TTQphbGxvdHRlZAphbGxvdHRpbmcKYWxsb3ZlcgphbGxvdy9FR0RTCmFsbG93YWJsZS9VCmFsbG93YWJseQphbGxvd2FuY2UvU00KYWxsb3kvR01EUwphbGxveWVkL1UKYWxsc3BpY2UvTQphbGx1ZGUvR0RTCmFsbHVyZS9NR0xEUwphbGx1cmVtZW50L01TCmFsbHVyaW5nL1kKYWxsdXNpb24vU00KYWxsdXNpdmUvUFkKYWxsdXNpdmVuZXNzL00KYWxsdXZpYWwvTQphbGx1dml1bS9TTQphbGx5L0dEU00KYWxtYW5hYy9TTQphbG1pZ2h0eQphbG1vbmQvTVMKYWxtb25lci9TTQphbG1vc3QKYWxtcy9NCmFsbXNob3VzZS9NUwphbG9lL1NNCmFsb2Z0CmFsb2hhL01TCmFsb25lCmFsb25nCmFsb25nc2hvcmUKYWxvbmdzaWRlCmFsb29mL1BZCmFsb29mbmVzcy9NCmFsb3VkCmFscC9TTQphbHBhY2EvTVMKYWxwaGEvTVMKYWxwaGFiZXQvU00KYWxwaGFiZXRpYwphbHBoYWJldGljYWwvWQphbHBoYWJldGl6YXRpb24vU00KYWxwaGFiZXRpemUvWkdEUlMKYWxwaGFiZXRpemVyL00KYWxwaGFudW1lcmljCmFscGhhbnVtZXJpY2FsL1kKYWxwaW5lL1MKYWxyZWFkeQphbHJpZ2h0CmFsc28KYWx0L1MKYWx0YXIvTVMKYWx0YXJwaWVjZS9TTQphbHRlci9HREJTCmFsdGVyYWJsZS9VCmFsdGVyYXRpb24vTVMKYWx0ZXJjYXRpb24vU00KYWx0ZXJlZC9VCmFsdGVybmF0ZS9EU01ZR05WWAphbHRlcm5hdGlvbi9NCmFsdGVybmF0aXZlL01ZUwphbHRlcm5hdG9yL1NNCmFsdGhvdWdoCmFsdGltZXRlci9NUwphbHRpdHVkZS9NUwphbHRvL1NNCmFsdG9nZXRoZXIKYWx0cnVpc20vTQphbHRydWlzdC9TTQphbHRydWlzdGljCmFsdHJ1aXN0aWNhbGx5CmFsdW0vU00KYWx1bWluYS9NCmFsdW1pbnVtL00KYWx1bW5hL00KYWx1bW5hZQphbHVtbmkKYWx1bW51cy9NCmFsdmVvbGFyL1MKYWx3YXlzCmFtL04KYW1hbGdhbS9TTQphbWFsZ2FtYXRlL1hHTkRTCmFtYWxnYW1hdGlvbi9NCmFtYW51ZW5zZXMKYW1hbnVlbnNpcy9NCmFtYXJhbnRoL00KYW1hcmFudGhzCmFtYXJldHRvL00KYW1hcnlsbGlzL01TCmFtYXNzL0dEUwphbWF0ZXVyL1NNCmFtYXRldXJpc2gvWVAKYW1hdGV1cmlzaG5lc3MvTQphbWF0ZXVyaXNtL00KYW1hdG9yeQphbWF6ZS9MTUdEUwphbWF6ZW1lbnQvTQphbWF6aW5nL1kKYW1hem9uL01TCmFtYXpvbmlhbgphbWJhc3NhZG9yL1NNCmFtYmFzc2Fkb3JpYWwKYW1iYXNzYWRvcnNoaXAvTVMKYW1iYXNzYWRyZXNzL01TCmFtYmVyL00KYW1iZXJncmlzL00KYW1iaWFuY2UvTVMKYW1iaWRleHRlcml0eS9NCmFtYmlkZXh0cm91cy9ZCmFtYmllbnQKYW1iaWd1aXR5L1NNCmFtYmlndW91cy9VWQphbWJpdAphbWJpdGlvbi9NUwphbWJpdGlvdXMvWVAKYW1iaXRpb3VzbmVzcy9NCmFtYml2YWxlbmNlL00KYW1iaXZhbGVudC9ZCmFtYmxlL01aR0RSUwphbWJsZXIvTQphbWJyb3NpYS9NCmFtYnJvc2lhbAphbWJ1bGFuY2UvTVMKYW1idWxhbmNlbWFuCmFtYnVsYW5jZW1lbgphbWJ1bGFuY2V3b21hbgphbWJ1bGFuY2V3b21lbgphbWJ1bGFudAphbWJ1bGF0ZS9EU1hHTgphbWJ1bGF0aW9uL00KYW1idWxhdG9yeS9TTQphbWJ1c2NhZGUvTUdEUwphbWJ1c2gvR01EUwphbWVsaW9yYXRlL0dOVkRTCmFtZWxpb3JhdGlvbi9NCmFtZW4vQgphbWVuYWJpbGl0eS9NCmFtZW5hYmx5CmFtZW5kL0JMR0RTCmFtZW5kbWVudC9TTQphbWVuaXR5L1NNCmFtZXJjZS9HTERTCmFtZXJjZW1lbnQvU00KYW1lcmljaXVtL00KYW1ldGh5c3QvU00KYW1pYWJpbGl0eS9NCmFtaWFibGUKYW1pYWJseQphbWljYWJpbGl0eS9NCmFtaWNhYmxlCmFtaWNhYmx5CmFtaWQKYW1pZGUvTVMKYW1pZHNoaXAvUwphbWlnby9NUwphbWlubwphbWlzcwphbWl0eS9NCmFtbWV0ZXIvU00KYW1tby9NCmFtbW9uaWEvTQphbW1vbml1bQphbW11bml0aW9uL00KYW1uZXNpYS9NCmFtbmVzaWFjL01TCmFtbmVzaWMvU00KYW1uZXN0eS9HRFNNCmFtbmlvY2VudGVzZXMKYW1uaW9jZW50ZXNpcy9NCmFtbmlvbi9NUwphbW5pb3RpYwphbW9lYmEvTVMKYW1vZWJhZQphbW9lYmljCmFtb2sKYW1vbmcKYW1vbnRpbGxhZG8vU00KYW1vcmFsL1kKYW1vcmFsaXR5L00KYW1vcm91cy9ZUAphbW9yb3VzbmVzcy9NCmFtb3JwaG91cy9QWQphbW9ycGhvdXNuZXNzL00KYW1vcnRpemF0aW9uL1NNCmFtb3J0aXplL0RTR0IKYW1vdW50L0dNRFMKYW1vdXIvTVMKYW1veGljaWxsaW4KYW1wL1NNWQphbXBlcmFnZS9NCmFtcGVyZS9NUwphbXBlcnNhbmQvTVMKYW1waGV0YW1pbmUvU00KYW1waGliaWFuL01TCmFtcGhpYmlvdXMvWQphbXBoaXRoZWF0ZXIvU00KYW1waG9yYS9NCmFtcGhvcmFlCmFtcGljaWxsaW4KYW1wbGUvVFIKYW1wbGlmaWNhdGlvbi9NCmFtcGxpZmllci9NCmFtcGxpZnkvTkRSU1haRwphbXBsaXR1ZGUvU00KYW1wdWxlL01TCmFtcHV0YXRlL0dORFNYCmFtcHV0YXRpb24vTQphbXB1dGVlL01TCmFtdAphbXVsZXQvTVMKYW11c2UvTEdEUwphbXVzZW1lbnQvTVMKYW11c2luZy9ZCmFteWxhc2UvTQphbi9DUwphbmFib2xpc20vTQphbmFjaHJvbmlzbS9TTQphbmFjaHJvbmlzdGljCmFuYWNocm9uaXN0aWNhbGx5CmFuYWNvbmRhL1NNCmFuYWVyb2JlL1NNCmFuYWVyb2JpYwphbmFlcm9iaWNhbGx5CmFuYWdyYW0vTVMKYW5hbC9ZCmFuYWxnZXNpYS9NCmFuYWxnZXNpYy9TTQphbmFsb2cvTVMKYW5hbG9naWNhbC9ZCmFuYWxvZ2l6ZS9HRFMKYW5hbG9nb3VzL1lQCmFuYWxvZ291c25lc3MvTQphbmFsb2d1ZS9TTQphbmFsb2d5L1NNCmFuYWx5c2FuZC9NUwphbmFseXNlcy9BCmFuYWx5c2lzL0FNCmFuYWx5c3QvU00KYW5hbHl0aWMKYW5hbHl0aWNhbC9ZCmFuYWx5emFibGUKYW5hbHl6ZS9BRFNHCmFuYWx5emVyL1NNCmFuYXBlc3QvU00KYW5hcGVzdGljL01TCmFuYXJjaGljCmFuYXJjaGljYWxseQphbmFyY2hpc20vTQphbmFyY2hpc3QvTVMKYW5hcmNoaXN0aWMKYW5hcmNoeS9NCmFuYXRoZW1hL1NNCmFuYXRoZW1hdGl6ZS9EU0cKYW5hdG9taWMKYW5hdG9taWNhbC9ZCmFuYXRvbWlzdC9TTQphbmF0b21pemUvRFNHCmFuYXRvbXkvU00KYW5jZXN0b3IvU00KYW5jZXN0cmFsL1kKYW5jZXN0cmVzcy9NUwphbmNlc3RyeS9TTQphbmNob3IvTURHUwphbmNob3JhZ2UvTVMKYW5jaG9yaXRlL01TCmFuY2hvcm1hbi9NCmFuY2hvcm1lbgphbmNob3JwZW9wbGUKYW5jaG9ycGVyc29uL1NNCmFuY2hvcndvbWFuL00KYW5jaG9yd29tZW4KYW5jaG92eS9TTQphbmNpZW50L1NQTVJZVAphbmNpZW50bmVzcy9NCmFuY2lsbGFyeS9TTQphbmQKYW5kYW50ZS9TTQphbmRpcm9uL1NNCmFuZHJvZ2VuL00KYW5kcm9nZW5pYwphbmRyb2d5bm91cwphbmRyb2d5bnkvTQphbmRyb2lkL1NNCmFuZWNkb3RhbC9ZCmFuZWNkb3RlL01TCmFuZW1pYS9NCmFuZW1pYwphbmVtaWNhbGx5CmFuZW1vbWV0ZXIvU00KYW5lbW9uZS9TTQphbmVudAphbmVzdGhlc2lhL00KYW5lc3RoZXNpb2xvZ2lzdC9TTQphbmVzdGhlc2lvbG9neS9NCmFuZXN0aGV0aWMvU00KYW5lc3RoZXRpc3QvTVMKYW5lc3RoZXRpemF0aW9uL00KYW5lc3RoZXRpemUvR0RTCmFuZXVyeXNtL1NNCmFuZXcKYW5nZWwvTVMKYW5nZWxmaXNoL01TCmFuZ2VsaWMKYW5nZWxpY2EvTQphbmdlbGljYWwvWQphbmdlci9HTURTCmFuZ2luYS9NCmFuZ2lvcGxhc3R5L1NNCmFuZ2lvc3Blcm0vU00KYW5nbGUvTVpHRFJTCmFuZ2xlci9NCmFuZ2xld29ybS9NUwphbmdsaWNpc20vUwphbmdsaWNpemUvR0RTCmFuZ2xpbmcvTQphbmdsb3BoaWxlL1MKYW5nbG9waG9uZS9TCmFuZ29yYS9NUwphbmdvc3R1cmEKYW5ncmlseQphbmdyeS9UUgphbmdzdC9NCmFuZ3N0cm9tL01TCmFuZ3Vpc2gvR01EUwphbmd1bGFyCmFuZ3VsYXJpdHkvU00KYW5ndWxhdGlvbgphbmh5ZHJvdXMKYW5pbGluZS9NCmFuaW1hZHZlcnNpb24vTVMKYW5pbWFkdmVydC9HU0QKYW5pbWFsL01TCmFuaW1hbGN1bGUvU00KYW5pbWF0ZS9BRFNHTgphbmltYXRlZC9ZCmFuaW1hdGlvbi9BTQphbmltYXRpb25zCmFuaW1hdG9yL01TCmFuaW1lL00KYW5pbWlzbS9NCmFuaW1pc3QvU00KYW5pbWlzdGljCmFuaW1vc2l0eS9TTQphbmltdXMvTQphbmlvbi9NUwphbmlvbmljCmFuaXNlL00KYW5pc2VlZC9NCmFuaXNldHRlL00KYW5raC9NCmFua2hzCmFua2xlL01TCmFua2xlYm9uZS9NUwphbmtsZXQvTVMKYW5uYWxpc3QvU00KYW5uYWxzL00KYW5uZWFsL0dEUwphbm5lbGlkL01TCmFubmV4L0dNRFMKYW5uZXhhdGlvbi9NUwphbm5paGlsYXRlL0RTR04KYW5uaWhpbGF0aW9uL00KYW5uaWhpbGF0b3IvU00KYW5uaXZlcnNhcnkvU00KYW5ub3RhdGUvRFNYR05WCmFubm90YXRpb24vTQphbm5vdGF0b3IvTVMKYW5ub3VuY2UvRFJTTFpHCmFubm91bmNlZC9VCmFubm91bmNlbWVudC9NUwphbm5vdW5jZXIvTQphbm5veS9HRFMKYW5ub3lhbmNlL01TCmFubm95aW5nL1kKYW5udWFsL01ZUwphbm51YWxpemVkCmFubnVpdGFudC9TTQphbm51aXR5L1NNCmFubnVsL0xTCmFubnVsYXIKYW5udWxsZWQKYW5udWxsaW5nCmFubnVsbWVudC9TTQphbm51bmNpYXRpb24vU00KYW5vZGUvTVMKYW5vZGl6ZS9HRFMKYW5vZHluZS9NUwphbm9pbnQvR0RMUwphbm9pbnRtZW50L00KYW5vbWFsb3VzL1kKYW5vbWFseS9TTQphbm9uL1MKYW5vbnltaXR5L00KYW5vbnltb3VzL1kKYW5vcGhlbGVzL00KYW5vcmFrL01TCmFub3JlY3RpYy9TTQphbm9yZXhpYS9NCmFub3JleGljL01TCmFub3RoZXIKYW5zd2VyL0JNREdTCmFuc3dlcmFibGUvVQphbnN3ZXJlZC9VCmFuc3dlcnBob25lL1MKYW50L1NNRAphbnRhY2lkL1NNCmFudGFnb25pc20vU00KYW50YWdvbmlzdC9TTQphbnRhZ29uaXN0aWMKYW50YWdvbmlzdGljYWxseQphbnRhZ29uaXplL0RTRwphbnRhcmN0aWMKYW50ZS9TTQphbnRlYXRlci9NUwphbnRlYmVsbHVtCmFudGVjZWRlbmNlL00KYW50ZWNlZGVudC9TTQphbnRlY2hhbWJlci9TTQphbnRlZGF0ZS9HRFMKYW50ZWRpbHV2aWFuCmFudGVpbmcKYW50ZWxvcGUvTVMKYW50ZW5hdGFsCmFudGVubmEvU00KYW50ZW5uYWUKYW50ZXJpb3IKYW50ZXJvb20vTVMKYW50aGVtL01TCmFudGhlci9NUwphbnRoaWxsL1NNCmFudGhvbG9naXN0L1NNCmFudGhvbG9naXplL0RTRwphbnRob2xvZ3kvU00KYW50aHJhY2l0ZS9NCmFudGhyYXgvTQphbnRocm9wb2NlbnRyaWMKYW50aHJvcG9pZC9NUwphbnRocm9wb2xvZ2ljYWwvWQphbnRocm9wb2xvZ2lzdC9TTQphbnRocm9wb2xvZ3kvTQphbnRocm9wb21vcnBoaWMKYW50aHJvcG9tb3JwaGljYWxseQphbnRocm9wb21vcnBoaXNtL00KYW50aHJvcG9tb3JwaGl6ZQphbnRocm9wb21vcnBob3VzCmFudGkvU00KYW50aWFib3J0aW9uCmFudGlhYm9ydGlvbmlzdC9NUwphbnRpYWlyY3JhZnQKYW50aWJhY3RlcmlhbC9NUwphbnRpYmlvdGljL01TCmFudGlib2R5L1NNCmFudGljL01TCmFudGljYW5jZXIKYW50aWNpcGF0ZS9HTlhEUwphbnRpY2lwYXRlZC9VCmFudGljaXBhdGlvbi9NCmFudGljaXBhdG9yeQphbnRpY2tlZAphbnRpY2tpbmcKYW50aWNsZXJpY2FsCmFudGljbGltYWN0aWMKYW50aWNsaW1hY3RpY2FsbHkKYW50aWNsaW1heC9NUwphbnRpY2xpbmUvU00KYW50aWNsb2Nrd2lzZQphbnRpY29hZ3VsYW50L01TCmFudGljb21tdW5pc20vTQphbnRpY29tbXVuaXN0L1NNCmFudGljeWNsb25lL1NNCmFudGljeWNsb25pYwphbnRpZGVtb2NyYXRpYwphbnRpZGVwcmVzc2FudC9NUwphbnRpZG90ZS9NUwphbnRpZmFzY2lzdC9NUwphbnRpZnJlZXplL00KYW50aWdlbi9TTQphbnRpZ2VuaWMKYW50aWdlbmljaXR5L00KYW50aWhlcm8vTQphbnRpaGVyb2VzCmFudGloaXN0YW1pbmUvU00KYW50aWtub2NrL00KYW50aWxhYm9yCmFudGlsb2dhcml0aG0vU00KYW50aW1hY2Fzc2FyL01TCmFudGltYWxhcmlhbAphbnRpbWF0dGVyL00KYW50aW1pY3JvYmlhbAphbnRpbWlzc2lsZQphbnRpbW9ueS9NCmFudGludWNsZWFyCmFudGlveGlkYW50L01TCmFudGlwYXJ0aWNsZS9TTQphbnRpcGFzdGkKYW50aXBhc3RvL01TCmFudGlwYXRoZXRpYwphbnRpcGF0aHkvU00KYW50aXBlcnNvbm5lbAphbnRpcGVyc3BpcmFudC9TTQphbnRpcGhvbi9TTQphbnRpcGhvbmFsL01ZUwphbnRpcG9kYWwvUwphbnRpcG9kZWFuL01TCmFudGlwb2Rlcy9NCmFudGlwb2xsdXRpb24KYW50aXBvdmVydHkKYW50aXF1YXJpYW4vU00KYW50aXF1YXJpYW5pc20vTQphbnRpcXVhcnkvU00KYW50aXF1YXRlL0dEUwphbnRpcXVlL0RTTUcKYW50aXF1aXR5L1NNCmFudGlycmhpbnVtL1MKYW50aXNjaWVuY2UKYW50aXNlbWl0aWMKYW50aXNlbWl0aXNtL00KYW50aXNlcHNpcy9NCmFudGlzZXB0aWMvU00KYW50aXNlcHRpY2FsbHkKYW50aXNlcnVtL01TCmFudGlzbGF2ZXJ5CmFudGlzb2NpYWwvWQphbnRpc3Bhc21vZGljL01TCmFudGlzdWJtYXJpbmUKYW50aXRhbmsKYW50aXRoZXNlcwphbnRpdGhlc2lzL00KYW50aXRoZXRpYwphbnRpdGhldGljYWwvWQphbnRpdG94aW4vTVMKYW50aXRydXN0CmFudGl2ZW5pbi9NUwphbnRpdmVub20KYW50aXZpcmFsL01TCmFudGl2aXJ1cwphbnRpdml2aXNlY3Rpb25pc3QvTVMKYW50aXdhcgphbnRsZXIvTURTCmFudG9ueW0vU00KYW50b255bW91cwphbnRydW0KYW50c3kvVFIKYW51cy9NUwphbnZpbC9NUwphbnhpZXR5L1NNCmFueGlvdXMvWVAKYW54aW91c25lc3MvTQphbnkKYW55Ym9keS9TTQphbnlob3cKYW55bW9yZQphbnlvbmUvTQphbnlwbGFjZQphbnl0aGluZy9TTQphbnl0aW1lCmFueXdheS9TCmFueXdoZXJlCmFueXdpc2UKYW9ydGEvTVMKYW9ydGljCmFwYWNlCmFwYXJ0CmFwYXJ0aGVpZC9NCmFwYXJ0bWVudC9NUwphcGF0aGV0aWMKYXBhdGhldGljYWxseQphcGF0aHkvTQphcGF0aXRlL00KYXBlL0RTTUcKYXBlbGlrZQphcGVyaXRpZi9NUwphcGVydHVyZS9TTQphcGV4L01TCmFwaGFzaWEvTQphcGhhc2ljL01TCmFwaGVsaWEKYXBoZWxpb24vU00KYXBoaWQvTVMKYXBob3Jpc20vTVMKYXBob3Jpc3RpYwphcGhvcmlzdGljYWxseQphcGhyb2Rpc2lhYy9TTQphcGlhcmlzdC9TTQphcGlhcnkvU00KYXBpY2FsL1kKYXBpZWNlCmFwaXNoL1kKYXBsZW50eQphcGxvbWIvTQphcG9jYWx5cHNlL1NNCmFwb2NhbHlwdGljCmFwb2NyeXBoYS9NCmFwb2NyeXBoYWwvWQphcG9nZWUvTVMKYXBvbGl0aWNhbC9ZCmFwb2xvZ2V0aWMvVQphcG9sb2dldGljYWxseQphcG9sb2dpYS9TTQphcG9sb2dpc3QvTVMKYXBvbG9naXplL0dEUwphcG9sb2d5L1NNCmFwb3BsZWN0aWMKYXBvcGxleHkvU00KYXBvcHRvc2lzCmFwb3B0b3RpYwphcG9zdGFzeS9TTQphcG9zdGF0ZS9TTQphcG9zdGF0aXplL0dEUwphcG9zdGxlL01TCmFwb3N0bGVzaGlwL00KYXBvc3RvbGljCmFwb3N0cm9waGUvTVMKYXBvdGhlY2FyeS9TTQphcG90aGVnbS9TTQphcG90aGVvc2VzCmFwb3RoZW9zaXMvTQphcHAvU00KYXBwYWxsL0dEUwphcHBhbGxpbmcvWQphcHBhbG9vc2EvTVMKYXBwYXJhdGNoaWsvUwphcHBhcmF0dXMvTVMKYXBwYXJlbC9NREdTCmFwcGFyZW50L1kKYXBwYXJpdGlvbi9TTQphcHBlYWwvR01EUwphcHBlYWxpbmcvVVkKYXBwZWFyL0FFU0RHCmFwcGVhcmFuY2UvRUFNUwphcHBlYXNlL0xaR0RSUwphcHBlYXNlbWVudC9TTQphcHBlYXNlci9NCmFwcGVsbGFudC9TTQphcHBlbGxhdGUvWE4KYXBwZWxsYXRpb24vTQphcHBlbmQvR0RTCmFwcGVuZGFnZS9TTQphcHBlbmRlY3RvbXkvU00KYXBwZW5kaWNlcwphcHBlbmRpY2l0aXMvTQphcHBlbmRpeC9NUwphcHBlcnRhaW4vR0RTCmFwcGV0aXRlL1NNCmFwcGV0aXplci9NUwphcHBldGl6aW5nL1kKYXBwbGF1ZC9aR0RSUwphcHBsYXVkZXIvTQphcHBsYXVzZS9NCmFwcGxlL01TCmFwcGxlamFjay9NCmFwcGxlc2F1Y2UvTQphcHBsZXQvTVMKYXBwbGlhbmNlL1NNCmFwcGxpY2FiaWxpdHkvTQphcHBsaWNhYmxlL0kKYXBwbGljYWJseQphcHBsaWNhbnQvU00KYXBwbGljYXRpb24vQU0KYXBwbGljYXRvci9TTQphcHBsaWVyL01TCmFwcGxpcXVlL0RTTQphcHBsaXF1ZWluZwphcHBseS9BTlhHRFMKYXBwb2ludC9BRUxTVkdECmFwcG9pbnRlZS9TTQphcHBvaW50bWVudCdzL0EKYXBwb2ludG1lbnQvRVNNCmFwcG9ydGlvbi9BR0RMUwphcHBvcnRpb25tZW50L0FNCmFwcG9zZS9HRFMKYXBwb3NpdGUvWU5WUAphcHBvc2l0ZW5lc3MvTQphcHBvc2l0aW9uL00KYXBwb3NpdGl2ZS9TTQphcHByYWlzYWwvQU1TCmFwcHJhaXNlL0FEU0cKYXBwcmFpc2VyL01TCmFwcHJlY2lhYmxlL0kKYXBwcmVjaWFibHkvSQphcHByZWNpYXRlL0RTWEdOVgphcHByZWNpYXRlZC9VCmFwcHJlY2lhdGlvbi9NCmFwcHJlY2lhdGl2ZS9ZCmFwcHJlY2lhdG9yL01TCmFwcHJlY2lhdG9yeQphcHByZWhlbmQvR0RTCmFwcHJlaGVuc2lvbi9NUwphcHByZWhlbnNpdmUvWVAKYXBwcmVoZW5zaXZlbmVzcy9NCmFwcHJlbnRpY2UvRFNNRwphcHByZW50aWNlc2hpcC9NUwphcHByaXNlL0dEUwphcHByb2FjaC9HQk1EUwphcHByb2FjaGFibGUvVUkKYXBwcm9iYXRpb24vRU0KYXBwcm9iYXRpb25zCmFwcHJvcHJpYXRlL1BZR05YRFMKYXBwcm9wcmlhdGVkL1UKYXBwcm9wcmlhdGVuZXNzL0lNCmFwcHJvcHJpYXRpb24vTQphcHByb3ByaWF0b3IvU00KYXBwcm92YWwvRU0KYXBwcm92YWxzCmFwcHJvdmUvRUdEUwphcHByb3ZlZC9VCmFwcHJvdmluZy9FWQphcHByb3gKYXBwcm94aW1hdGUvRFNYWUdOCmFwcHJveGltYXRpb24vTQphcHB1cnRlbmFuY2UvU00KYXBwdXJ0ZW5hbnQKYXByaWNvdC9NUwphcHJvbi9NUwphcHJvcG9zCmFwc2UvU00KYXB0L0lZUFQKYXB0ZXIKYXB0aXR1ZGUvU00KYXB0bmVzcy9JTQphcXVhL1NNCmFxdWFjdWx0dXJlL00KYXF1YWx1bmcvTVMKYXF1YW1hcmluZS9TTQphcXVhbmF1dC9NUwphcXVhcGxhbmUvTUdEUwphcXVhcml1bS9NUwphcXVhdGljL1NNCmFxdWF0aWNhbGx5CmFxdWF0aWNzL00KYXF1YXRpbnQvUwphcXVhdml0L00KYXF1ZWR1Y3QvTVMKYXF1ZW91cwphcXVpZmVyL1NNCmFxdWlsaW5lCmFyYWJlc3F1ZS9NUwphcmFiaWxpdHkvTQphcmFjaG5pZC9NUwphcmFjaG5vcGhvYmlhCmFyYml0ZXIvU00KYXJiaXRyYWdlL01aR0RSUwphcmJpdHJhZ2VyL00KYXJiaXRyYWdldXIvU00KYXJiaXRyYW1lbnQvU00KYXJiaXRyYXJpbHkKYXJiaXRyYXJpbmVzcy9NCmFyYml0cmFyeS9QCmFyYml0cmF0ZS9HTkRTCmFyYml0cmF0aW9uL00KYXJiaXRyYXRvci9NUwphcmJvci9NUwphcmJvcmVhbAphcmJvcmV0dW0vU00KYXJib3J2aXRhZS9TTQphcmJ1dHVzL01TCmFyYy9TTURHCmFyY2FkZS9NUwphcmNhbmUKYXJjaC9QWlRHVk1EUlNZCmFyY2hhZW9sb2dpY2FsL1kKYXJjaGFlb2xvZ2lzdC9TTQphcmNoYWVvbG9neS9NCmFyY2hhaWMKYXJjaGFpY2FsbHkKYXJjaGFpc20vTVMKYXJjaGFpc3QvTVMKYXJjaGFuZ2VsL01TCmFyY2hiaXNob3AvU00KYXJjaGJpc2hvcHJpYy9TTQphcmNoZGVhY29uL1NNCmFyY2hkaW9jZXNhbgphcmNoZGlvY2VzZS9NUwphcmNoZHVjaGVzcy9NUwphcmNoZHVrZS9NUwphcmNoZW5lbXkvU00KYXJjaGVyL00KYXJjaGVyeS9NCmFyY2hldHlwYWwKYXJjaGV0eXBlL01TCmFyY2hmaWVuZC9NUwphcmNoaWVwaXNjb3BhbAphcmNoaXBlbGFnby9NUwphcmNoaXRlY3QvU00KYXJjaGl0ZWN0b25pYy9TCmFyY2hpdGVjdG9uaWNzL00KYXJjaGl0ZWN0dXJhbC9ZCmFyY2hpdGVjdHVyZS9NUwphcmNoaXRyYXZlL1NNCmFyY2hpdmFsCmFyY2hpdmUvRFNNRwphcmNoaXZpc3QvTVMKYXJjaG5lc3MvTQphcmNod2F5L1NNCmFyY3RpYy9NUwphcmRlbnQvWQphcmRvci9NUwphcmR1b3VzL1lQCmFyZHVvdXNuZXNzL00KYXJlL1NNQgphcmVhL1NNCmFyZWFsCmFyZW4ndAphcmVuYS9NUwphcmdlbnQvTQphcmdpbmluZQphcmdvbi9NCmFyZ29zeS9TTQphcmdvdC9NUwphcmd1YWJsZS9JVQphcmd1YWJseS9VCmFyZ3VlL1pHRFJTCmFyZ3Vlci9NCmFyZ3VtZW50L01TCmFyZ3VtZW50YXRpb24vTQphcmd1bWVudGF0aXZlL1BZCmFyZ3VtZW50YXRpdmVuZXNzL00KYXJneWxlL01TCmFyaWEvU00KYXJpZC9ZCmFyaWRpdHkvTQphcmlnaHQKYXJpc2UvR1MKYXJpc2VuCmFyaXN0b2NyYWN5L1NNCmFyaXN0b2NyYXQvU00KYXJpc3RvY3JhdGljCmFyaXN0b2NyYXRpY2FsbHkKYXJpdGhtZXRpYy9NCmFyaXRobWV0aWNhbC9ZCmFyaXRobWV0aWNpYW4vTVMKYXJrL1NNCmFybSdzCmFybS9FQUdEUwphcm1hZGEvTVMKYXJtYWRpbGxvL1NNCmFybWFtZW50L0FFTQphcm1hbWVudHMKYXJtYXR1cmUvTVMKYXJtYmFuZC9NUwphcm1jaGFpci9NUwphcm1lZC9VCmFybWZ1bC9NUwphcm1ob2xlL1NNCmFybWlzdGljZS9TTQphcm1sZXQvTVMKYXJtbG9hZC9TCmFybW9yL1pHTURSUwphcm1vcmVkL1UKYXJtb3Jlci9NCmFybW9yaWFsCmFybW9yeS9TTQphcm1waXQvTVMKYXJtcmVzdC9TTQphcm15L1NNCmFyb21hL01TCmFyb21hdGhlcmFwaXN0L01TCmFyb21hdGhlcmFweS9NCmFyb21hdGljL01TCmFyb21hdGljYWxseQphcm9zZQphcm91bmQKYXJvdXNhbC9NCmFyb3VzZS9HRFMKYXJwZWdnaW8vTVMKYXJyCmFycmFpZ24vREdTTAphcnJhaWdubWVudC9TTQphcnJhbmdlL0FFU0RMRwphcnJhbmdlbWVudCdzL0UKYXJyYW5nZW1lbnQvQVNNCmFycmFuZ2VyL1NNCmFycmFudAphcnJhcy9NUwphcnJheS9FR01EUwphcnJlYXJzL00KYXJyZXN0L0FHTURTCmFycmh5dGhtaWEvTQphcnJoeXRobWljCmFycmh5dGhtaWNhbAphcnJpdmFsL01TCmFycml2ZS9HRFMKYXJyb2dhbmNlL00KYXJyb2dhbnQvWQphcnJvZ2F0ZS9HTkRTCmFycm9nYXRpb24vTQphcnJvdy9NUwphcnJvd2hlYWQvTVMKYXJyb3dyb290L00KYXJyb3lvL01TCmFyc2VkCmFyc2VuYWwvTVMKYXJzZW5pYy9NCmFyc2luZwphcnNvbi9NCmFyc29uaXN0L1NNCmFydC9TTQphcnRlcmlhbAphcnRlcmlvbGUvTVMKYXJ0ZXJpb3NjbGVyb3Npcy9NCmFydGVyeS9TTQphcnRmdWwvUFkKYXJ0ZnVsbmVzcy9NCmFydGhyaXRpYy9NUwphcnRocml0aXMvTQphcnRocm9wb2QvTVMKYXJ0aHJvc2NvcGUvU00KYXJ0aHJvc2NvcGljCmFydGhyb3Njb3B5CmFydGljaG9rZS9TTQphcnRpY2xlL01EUwphcnRpY3VsYWN5L0kKYXJ0aWN1bGFyCmFydGljdWxhdGUvWUdOUERTWAphcnRpY3VsYXRlbmVzcy9JTQphcnRpY3VsYXRpb24vTQphcnRpZmFjdC9TTQphcnRpZmljZS9SU01aCmFydGlmaWNlci9NCmFydGlmaWNpYWwvWQphcnRpZmljaWFsaXR5L00KYXJ0aWxsZXJ5L00KYXJ0aWxsZXJ5bWFuL00KYXJ0aWxsZXJ5bWVuCmFydGluZXNzL00KYXJ0aXNhbi9NUwphcnRpc3QvTVMKYXJ0aXN0ZS9NUwphcnRpc3RpYy9JCmFydGlzdGljYWxseQphcnRpc3RyeS9NCmFydGxlc3MvUFkKYXJ0bGVzc25lc3MvTQphcnRzeS9UUgphcnR3b3JrL01TCmFydHkvUFRSCmFydWd1bGEKYXJ1bS9TTQphc2FwCmFzYmVzdG9zL00KYXNjZW5kL0FHRFMKYXNjZW5kYW5jZS9NCmFzY2VuZGFuY3kvTQphc2NlbmRhbnQvU00KYXNjZW5zaW9uL01TCmFzY2VudC9NUwphc2NlcnRhaW4vR0RTQkwKYXNjZXJ0YWlubWVudC9NCmFzY2V0aWMvTVMKYXNjZXRpY2FsbHkKYXNjZXRpY2lzbS9NCmFzY290L01TCmFzY3JpYmUvR0JEUwphc2NyaXB0aW9uL00KYXNlcHRpYwphc2VwdGljYWxseQphc2V4dWFsL1kKYXNleHVhbGl0eS9NCmFzaC9NRE5TRwphc2hhbWVkL1VZCmFzaGNhbi9NUwphc2hsYXIvTVMKYXNob3JlCmFzaHJhbS9NUwphc2h0cmF5L1NNCmFzaHkvVFIKYXNpZGUvTVMKYXNpbmluZS9ZCmFzaW5pbml0eS9TTQphc2svU0RHCmFza2FuY2UKYXNrZWQvVQphc2tldwphc2xhbnQKYXNsZWVwCmFzb2NpYWwKYXNwL1NNTlgKYXNwYXJhZ3VzL00KYXNwYXJ0YW1lL00KYXNwZWN0L01TCmFzcGVuL00KYXNwZXJpdHkvU00KYXNwZXJzaW9uL01TCmFzcGhhbHQvTURHUwphc3Bob2RlbC9TTQphc3BoeXhpYS9NCmFzcGh5eGlhdGUvRFNYR04KYXNwaHl4aWF0aW9uL00KYXNwaWMvTVMKYXNwaWRpc3RyYS9NUwphc3BpcmFudC9NUwphc3BpcmF0ZS9NR05EU1gKYXNwaXJhdGlvbi9NCmFzcGlyYXRvci9TTQphc3BpcmUvR0RTCmFzcGlyaW4vTVMKYXNzL01TCmFzc2FpbC9HQkRTCmFzc2FpbGFibGUvVQphc3NhaWxhbnQvU00KYXNzYXNzaW4vU00KYXNzYXNzaW5hdGUvR05YRFMKYXNzYXNzaW5hdGlvbi9NCmFzc2F1bHQvTURSR1MKYXNzYXkvWkdNRFJTCmFzc2F5ZXIvTQphc3NlbWJsYWdlL1NNCmFzc2VtYmxlL0FFR1NECmFzc2VtYmxlci9NUwphc3NlbWJsaWVzCmFzc2VtYmx5L0FNCmFzc2VtYmx5bWFuL00KYXNzZW1ibHltZW4KYXNzZW1ibHl3b21hbi9NCmFzc2VtYmx5d29tZW4KYXNzZW50L0dNRFMKYXNzZXJ0L0FHVkRTCmFzc2VydGlvbi9BTQphc3NlcnRpb25zCmFzc2VydGl2ZS9ZUAphc3NlcnRpdmVuZXNzL00KYXNzZXNzL0FMR0RTCmFzc2Vzc21lbnQvQVNNCmFzc2Vzc29yL01TCmFzc2V0L01TCmFzc2V2ZXJhdGUvRFNHTgphc3NldmVyYXRpb24vTQphc3Nob2xlL01TIQphc3NpZHVpdHkvTQphc3NpZHVvdXMvUFkKYXNzaWR1b3VzbmVzcy9NCmFzc2lnbidzCmFzc2lnbi9BTEdEUwphc3NpZ25hYmxlCmFzc2lnbmF0aW9uL01TCmFzc2lnbmVkL1UKYXNzaWduZWUvTQphc3NpZ25lci9NUwphc3NpZ25tZW50L0FNUwphc3NpZ25vci9NUwphc3NpbWlsYXRlL0RTR04KYXNzaW1pbGF0aW9uL00KYXNzaXN0L0dNRFMKYXNzaXN0YW5jZS9NCmFzc2lzdGFudC9TTQphc3Npc3RlZC9VCmFzc2l6ZS9NUwphc3NuCmFzc29jCmFzc29jaWF0ZSdzCmFzc29jaWF0ZS9FRFNHTlYKYXNzb2NpYXRpb24vRU0KYXNzb2NpYXRpb25zCmFzc29uYW5jZS9NCmFzc29uYW50L01TCmFzc29ydC9HTERTCmFzc29ydG1lbnQvTVMKYXNzdAphc3N1YWdlL0dEUwphc3N1bWUvQkdEUwphc3N1bXB0aW9uL1NNCmFzc3VtcHRpdmUKYXNzdXJhbmNlL0FTTQphc3N1cmUvQUdEUwphc3N1cmVkL01ZUwphc3RhdGluZS9NCmFzdGVyL0VNUwphc3Rlcmlzay9HTURTCmFzdGVybgphc3Rlcm9pZC9NUwphc3RobWEvTQphc3RobWF0aWMvU00KYXN0aG1hdGljYWxseQphc3RpZ21hdGljCmFzdGlnbWF0aXNtL1NNCmFzdGlyCmFzdG9uaXNoL0RTTEcKYXN0b25pc2hpbmcvWQphc3RvbmlzaG1lbnQvTQphc3RvdW5kL0dEUwphc3RvdW5kaW5nL1kKYXN0cmFkZGxlCmFzdHJha2hhbi9NCmFzdHJhbAphc3RyYXkKYXN0cmlkZQphc3RyaW5nZW5jeS9NCmFzdHJpbmdlbnQvU01ZCmFzdHJvbGFiZS9TTQphc3Ryb2xvZ2VyL1NNCmFzdHJvbG9naWNhbC9ZCmFzdHJvbG9naXN0L01TCmFzdHJvbG9neS9NCmFzdHJvbmF1dC9NUwphc3Ryb25hdXRpYy9TCmFzdHJvbmF1dGljYWwKYXN0cm9uYXV0aWNzL00KYXN0cm9ub21lci9TTQphc3Ryb25vbWljCmFzdHJvbm9taWNhbC9ZCmFzdHJvbm9teS9NCmFzdHJvcGh5c2ljYWwKYXN0cm9waHlzaWNpc3QvTVMKYXN0cm9waHlzaWNzL00KYXN0dXRlL1BZVFIKYXN0dXRlbmVzcy9NCmFzdW5kZXIKYXN5bHVtL1NNCmFzeW1tZXRyaWMKYXN5bW1ldHJpY2FsL1kKYXN5bW1ldHJ5L1NNCmFzeW1wdG9tYXRpYwphc3ltcHRvdGljCmFzeW1wdG90aWNhbGx5CmFzeW5jaHJvbm91cy9ZCmF0CmF0YXZpc20vTQphdGF2aXN0L1NNCmF0YXZpc3RpYwphdGF4aWEvTQphdGF4aWMvTVMKYXRlCmF0ZWxpZXIvU00KYXRoZWlzbS9NCmF0aGVpc3QvTVMKYXRoZWlzdGljCmF0aGVyb3NjbGVyb3Npcy9NCmF0aGVyb3NjbGVyb3RpYwphdGhpcnN0CmF0aGxldGUvTVMKYXRobGV0aWMvUwphdGhsZXRpY2FsbHkKYXRobGV0aWNpc20KYXRobGV0aWNzL00KYXRod2FydAphdGlsdAphdGlzaG9vCmF0bGFzL01TCmF0bW9zcGhlcmUvTVMKYXRtb3NwaGVyaWMvUwphdG1vc3BoZXJpY2FsbHkKYXRtb3NwaGVyaWNzL00KYXRvbGwvTVMKYXRvbS9TTQphdG9taWMKYXRvbWljYWxseQphdG9taXplL1pHRFJTCmF0b21pemVyL00KYXRvbmFsL1kKYXRvbmFsaXR5L00KYXRvbmUvTEdEUwphdG9uZW1lbnQvTQphdG9wCmF0cmlhCmF0cmlhbAphdHJpb3ZlbnRyaWN1bGFyCmF0cml1bS9NCmF0cm9jaW91cy9QWQphdHJvY2lvdXNuZXNzL00KYXRyb2NpdHkvU00KYXRyb3BoeS9EU01HCmF0cm9waW5lL00KYXR0YWNoL0FMR0RTCmF0dGFjaGUvQk0KYXR0YWNoZWQvVQphdHRhY2htZW50L0FNCmF0dGFjaG1lbnRzCmF0dGFjay9aR01EUlMKYXR0YWNrZXIvTQphdHRhaW4vQUdEUwphdHRhaW5hYmlsaXR5L00KYXR0YWluYWJsZS9VCmF0dGFpbmRlci9NCmF0dGFpbm1lbnQvU00KYXR0YXIvTQphdHRlbXB0J3MKYXR0ZW1wdC9BU0RHCmF0dGVuZC9TRFJaRwphdHRlbmRhbmNlL1NNCmF0dGVuZGFudC9TTQphdHRlbmRlZC9VCmF0dGVuZGVlL1NNCmF0dGVudGlvbi9JTQphdHRlbnRpb25zCmF0dGVudGl2ZS9JUFkKYXR0ZW50aXZlbmVzcy9JTQphdHRlbnVhdGUvRFNHTgphdHRlbnVhdGlvbi9NCmF0dGVzdC9TREcKYXR0ZXN0YXRpb24vU00KYXR0ZXN0ZWQvVQphdHRpYy9TTQphdHRpcmUvRFNNRwphdHRpdHVkZS9TTQphdHRpdHVkaW5hbAphdHRpdHVkaW5pemUvR0RTCmF0dG4KYXR0b3JuZXkvTVMKYXR0cmFjdC9TR1ZEQgphdHRyYWN0YW50L01TCmF0dHJhY3Rpb24vTVMKYXR0cmFjdGl2ZS9VWQphdHRyYWN0aXZlbmVzcy9NCmF0dHJpYnV0ZS9EU01HTlZCWAphdHRyaWJ1dGVkL1UKYXR0cmlidXRpb24vTQphdHRyaWJ1dGl2ZS9NWVMKYXR0cml0aW9uL00KYXR0dW5lL0RTRwphdHR5CmF0d2l0dGVyCmF0eXBpY2FsL1kKYXViZXJnaW5lL1MKYXVidXJuL00KYXVjdGlvbi9NREdTCmF1Y3Rpb25lZXIvU00KYXVkYWNpb3VzL1lQCmF1ZGFjaW91c25lc3MvTQphdWRhY2l0eS9NCmF1ZGliaWxpdHkvSU0KYXVkaWJsZS9NUwphdWRpYmx5L0kKYXVkaWVuY2UvTVMKYXVkaW8vTVMKYXVkaW9sb2dpY2FsCmF1ZGlvbG9naXN0L1NNCmF1ZGlvbG9neS9NCmF1ZGlvbWV0ZXIvU00KYXVkaW9waGlsZS9TTQphdWRpb3RhcGUvU00KYXVkaW92aXN1YWwvUwphdWRpb3Zpc3VhbHMvTQphdWRpdC9HTURTCmF1ZGl0aW9uL1NNREcKYXVkaXRvci9NUwphdWRpdG9yaXVtL1NNCmF1ZGl0b3J5CmF1Z2VyL01TCmF1Z2h0L01TCmF1Z21lbnQvRFJaR1MKYXVnbWVudGF0aW9uL01TCmF1Z21lbnRhdGl2ZQphdWdtZW50ZXIvTQphdWd1ci9HTURTCmF1Z3VyeS9TTQphdWd1c3QvUFRSWQphdWd1c3RuZXNzL00KYXVrL1NNCmF1bnQvU00KYXVudGllL1NNCmF1cmEvTVMKYXVyYWwvWQphdXJlb2xlL1NNCmF1cmV1cwphdXJpY2xlL1NNCmF1cmljdWxhcgphdXJvcmEvU00KYXVzY3VsdGF0ZS9HTkRTWAphdXNjdWx0YXRpb24vTQphdXNwaWNlL1NNCmF1c3BpY2lvdXMvSVkKYXVzcGljaW91c25lc3MvTQphdXN0ZXJlL1JZVAphdXN0ZXJpdHkvU00KYXVzdHJhbAphdXRoZW50aWMvSVUKYXV0aGVudGljYWxseQphdXRoZW50aWNhdGUvWEdORFMKYXV0aGVudGljYXRlZC9VCmF1dGhlbnRpY2F0aW9uL00KYXV0aGVudGljaXR5L00KYXV0aG9yL1NNREcKYXV0aG9yZXNzL01TCmF1dGhvcmlhbAphdXRob3JpdGFyaWFuL01TCmF1dGhvcml0YXJpYW5pc20vTQphdXRob3JpdGF0aXZlL1lQCmF1dGhvcml0YXRpdmVuZXNzL00KYXV0aG9yaXR5L1NNCmF1dGhvcml6YXRpb24vTVMKYXV0aG9yaXplL0FHRFMKYXV0aG9yaXplZC9VCmF1dGhvcnNoaXAvTQphdXRpc20vTQphdXRpc3RpYwphdXRvL01TCmF1dG9iYWhuL1NNCmF1dG9iaW9ncmFwaGVyL1NNCmF1dG9iaW9ncmFwaGljCmF1dG9iaW9ncmFwaGljYWwvWQphdXRvYmlvZ3JhcGh5L1NNCmF1dG9jbGF2ZS9NUwphdXRvY3JhY3kvU00KYXV0b2NyYXQvU00KYXV0b2NyYXRpYwphdXRvY3JhdGljYWxseQphdXRvY3Jvc3MKYXV0b2RpZGFjdC9TTQphdXRvZ3JhcGgvTURHCmF1dG9ncmFwaHMKYXV0b2ltbXVuZQphdXRvaW1tdW5pdHkvTQphdXRvbWFrZXIvU00KYXV0b21hdGUvR05EUwphdXRvbWF0aWMvU00KYXV0b21hdGljYWxseQphdXRvbWF0aW9uL00KYXV0b21hdGlzbS9NCmF1dG9tYXRpemUvR0RTCmF1dG9tYXRvbi9TTQphdXRvbW9iaWxlL0RTTUcKYXV0b21vdGl2ZQphdXRvbm9taWMKYXV0b25vbW91cy9ZCmF1dG9ub215L00KYXV0b3BpbG90L1NNCmF1dG9wc3kvR0RTTQphdXRvc3VnZ2VzdGlvbgphdXRvd29ya2VyL01TCmF1dHVtbi9TTQphdXR1bW5hbAphdXgKYXV4aWxpYXJ5L1NNCmF1eGluL00KYXYvUloKYXZhaWwvQkdNRFMKYXZhaWxhYmlsaXR5L1VNCmF2YWlsYWJsZS9VCmF2YWxhbmNoZS9TTQphdmFyaWNlL00KYXZhcmljaW91cy9ZCmF2YXN0CmF2YXRhci9NUwphdmF1bnQKYXZkcAphdmUKYXZlbmdlL1pHRFJTCmF2ZW5nZXIvTQphdmVudWUvTVMKYXZlcmFnZS9NWUdEUwphdmVycmVkCmF2ZXJyaW5nCmF2ZXJzZS9YTgphdmVyc2lvbi9NCmF2ZXJ0L0dEUwphdmcKYXZpYW4KYXZpYXJ5L1NNCmF2aWF0aW9uL00KYXZpYXRvci9NUwphdmlhdHJpY2VzCmF2aWF0cml4L01TCmF2aWQvWQphdmlkaXR5L00KYXZpb25pYy9TCmF2aW9uaWNzL00KYXZpdGFtaW5vc2lzL00KYXZvY2Fkby9TTQphdm9jYXRpb24vTVMKYXZvY2F0aW9uYWwKYXZvaWQvU0RHQgphdm9pZGFibGUvVQphdm9pZGFibHkvVQphdm9pZGFuY2UvTQphdm9pcmR1cG9pcy9NCmF2b3VjaC9EU0cKYXZvdy9FREdTCmF2b3dhbC9FU00KYXZvd2VkL1kKYXZ1bmN1bGFyL1kKYXcKYXdhaXQvR0RTCmF3YWtlL0dTCmF3YWtlbi9BR0RTCmF3YWtlbmluZy9TTQphd2FyZC9HTURTCmF3YXJkZWUvUwphd2FyZS9VUAphd2FyZW5lc3MvVU0KYXdhc2gKYXdheQphd2UvRFNNRwphd2VpZ2gKYXdlc29tZS9ZUAphd2Vzb21lbmVzcy9NCmF3ZXN0cnVjawphd2Z1bC9ZUAphd2Z1bGxlcgphd2Z1bGxlc3QKYXdmdWxuZXNzL00KYXdoaWxlCmF3a3dhcmQvUllQVAphd2t3YXJkbmVzcy9NCmF3bC9TTQphd24vR0pTTQphd25pbmcvTQphd29rZQphd29rZW4KYXdyeQpheC9NRFNHCmF4aWFsL1kKYXhpb20vU00KYXhpb21hdGljCmF4aW9tYXRpY2FsbHkKYXhpcy9NCmF4bGUvTVMKYXhsZXRyZWUvU00KYXhvbG90bC9TTQpheG9uL01TCmF5YWgvTQpheWFocwpheWF0b2xsYWgvTQpheWF0b2xsYWhzCmF5ZS9TTQphemFsZWEvU00KYXppbXV0aC9NCmF6aW11dGhzCmF6dXJlL1NNCmIvS0RUCmJhYS9TTURHCmJhYmJsZS9NWkdEUlMKYmFiYmxlci9NCmJhYmUvU00KYmFiZWwvTVMKYmFib29uL01TCmJhYnVzaGthL1NNCmJhYnkvVEdEUlNNCmJhYnlob29kL00KYmFieWlzaApiYWJ5c2F0CmJhYnlzaXQvUwpiYWJ5c2l0dGVyL01TCmJhYnlzaXR0aW5nL00KYmFjY2FsYXVyZWF0ZS9TTQpiYWNjYXJhdC9NCmJhY2NoYW5hbC9NUwpiYWNjaGFuYWxpYS9NCmJhY2NoYW5hbGlhbi9NUwpiYWNjeQpiYWNoZWxvci9TTQpiYWNoZWxvcmhvb2QvTQpiYWNpbGxhcnkKYmFjaWxsaQpiYWNpbGx1cy9NCmJhY2svU0paR01EUgpiYWNrYWNoZS9NUwpiYWNrYmVuY2gvUwpiYWNrYml0CmJhY2tiaXRlL1pHUlMKYmFja2JpdGVyL00KYmFja2JpdHRlbgpiYWNrYm9hcmQvU00KYmFja2JvbmUvTVMKYmFja2JyZWFraW5nCmJhY2tjaGF0CmJhY2tjbG90aApiYWNrY2xvdGhzCmJhY2tjb21iL0RTRwpiYWNrZGF0ZS9HRFMKYmFja2Rvb3IKYmFja2Ryb3AvTVMKYmFja2VyL00KYmFja2ZpZWxkL1NNCmJhY2tmaXJlL01HRFMKYmFja2dhbW1vbi9NCmJhY2tncm91bmQvTVJaUwpiYWNrZ3JvdW5kZXIvTQpiYWNraGFuZC9NRFJTWkcKYmFja2hhbmRlZC9ZCmJhY2toYW5kZXIvTQpiYWNraG9lL01TCmJhY2tpbmcvTQpiYWNrbGFzaC9NUwpiYWNrbGVzcwpiYWNrbG9nL01TCmJhY2tsb2dnZWQKYmFja2xvZ2dpbmcKYmFja3BhY2svWkdNRFJTCmJhY2twYWNrZXIvTQpiYWNrcGFja2luZy9NCmJhY2twZWRhbC9TREcKYmFja3Jlc3QvU00KYmFja3Jvb20vUwpiYWNrc2NyYXRjaGluZy9NCmJhY2tzZWF0L1NNCmJhY2tzaWRlL1NNCmJhY2tzbGFwcGVyL1NNCmJhY2tzbGFwcGluZy9NCmJhY2tzbGFzaC9NUwpiYWNrc2xpZApiYWNrc2xpZGUvUlNaRwpiYWNrc2xpZGVyL00KYmFja3NwYWNlL0RTTUcKYmFja3NwaW4vTQpiYWNrc3RhYmJlci9NUwpiYWNrc3RhYmJpbmcKYmFja3N0YWdlL00KYmFja3N0YWlyL1MKYmFja3N0b3AvU00KYmFja3N0b3BwZWQKYmFja3N0b3BwaW5nCmJhY2tzdG9yeS9TCmJhY2tzdHJlZXQvUwpiYWNrc3RyZXRjaC9NUwpiYWNrc3Ryb2tlL01HRFMKYmFja3RhbGsvTQpiYWNrdHJhY2svU0RHCmJhY2t1cC9NUwpiYWNrd2FyZC9QU1kKYmFja3dhcmRuZXNzL00KYmFja3dhc2gvTQpiYWNrd2F0ZXIvU00KYmFja3dvb2RzL00KYmFja3dvb2RzbWFuL00KYmFja3dvb2RzbWVuCmJhY2t5YXJkL1NNCmJhY29uL00KYmFjdGVyaWEvTQpiYWN0ZXJpYWwKYmFjdGVyaWNpZGFsCmJhY3RlcmljaWRlL1NNCmJhY3RlcmlvbG9naWMKYmFjdGVyaW9sb2dpY2FsCmJhY3RlcmlvbG9naXN0L1NNCmJhY3RlcmlvbG9neS9NCmJhY3Rlcml1bS9NCmJhZC9NWVAKYmFkZGVyCmJhZGRlc3QKYmFkZGllL01TCmJhZGUKYmFkZ2UvTVpSUwpiYWRnZXIvR01ECmJhZGluYWdlL00KYmFkbGFuZHMvTQpiYWRtYW4vTQpiYWRtZW4KYmFkbWludG9uL00KYmFkbW91dGgvR0QKYmFkbW91dGhzCmJhZG5lc3MvTQpiYWZmbGUvTVpHRFJTTApiYWZmbGVtZW50L00KYmFmZmxlci9NCmJhZy9TTQpiYWdhdGVsbGUvU00KYmFnZWwvTVMKYmFnZnVsL01TCmJhZ2dhZ2UvTQpiYWdnZWQKYmFnZ2llL00KYmFnZ2lseQpiYWdnaW5lc3MvTQpiYWdnaW5nCmJhZ2d5L1BUUlMKYmFncGlwZS9NWlJTCmJhZ3BpcGVyL00KYmFndWV0dGUvTVMKYmFoCmJhaHQvU00KYmFpbC9TQkdNRApiYWlsZXkvUwpiYWlsaWZmL1MKYmFpbGl3aWNrL01TCmJhaWxvdXQvU00KYmFpbHNtYW4vTQpiYWlsc21lbgpiYWlybi9NUwpiYWl0L1NHTUQKYmFpemUvTQpiYWtlL0RSU01aRwpiYWtlZC9VCmJha2VyL00KYmFrZXJ5L1NNCmJha2VzaG9wL01TCmJha2xhdmEvTQpiYWtzaGVlc2gvTQpiYWxhY2xhdmEvTVMKYmFsYWxhaWthL01TCmJhbGFuY2UncwpiYWxhbmNlL1VEU0cKYmFsYm9hL1NNCmJhbGNvbnkvU00KYmFsZC9TVEdQRFJZCmJhbGRlcmRhc2gvTQpiYWxkZmFjZWQKYmFsZG5lc3MvTQpiYWxkcmljL1NNCmJhbGR5L1MKYmFsZS9EUlNNWkcKYmFsZWVuL00KYmFsZWZ1bC9QWQpiYWxlZnVsbmVzcy9NCmJhbGVyL00KYmFsay9TR01ECmJhbGt5L1JUCmJhbGwvU0dNRApiYWxsYWQvU00KYmFsbGFkZWVyL01TCmJhbGxhZHJ5L00KYmFsbGFzdC9HU01ECmJhbGxjb2NrL01TCmJhbGxlcmluYS9TTQpiYWxsZXQvU00KYmFsbGV0aWMKYmFsbGdhbWUvTVMKYmFsbGdpcmwvUwpiYWxsZ293bi9TCmJhbGxpc3RpYy9TCmJhbGxpc3RpY3MvTQpiYWxsb29uL1NHTUQKYmFsbG9vbmlzdC9NUwpiYWxsb3QvU01ERwpiYWxscGFyay9NUwpiYWxscGxheWVyL01TCmJhbGxwb2ludC9NUwpiYWxscm9vbS9NUwpiYWxscy9EU0cKYmFsbHN5L1JUCmJhbGx5CmJhbGx5aG9vL1NNREcKYmFsbS9TTQpiYWxtaW5lc3MvTQpiYWxteS9SVFAKYmFsb25leS9NCmJhbHNhL01TCmJhbHNhbS9TTQpiYWxzYW1pYwpiYWx1c3Rlci9TTQpiYWx1c3RyYWRlL01TCmJhbWJvby9TTQpiYW1ib296bGUvRFNHCmJhbi9TTQpiYW5hbC9ZCmJhbmFsaXR5L1NNCmJhbmFuYS9TTQpiYW5kJ3MKYmFuZC9FU0dECmJhbmRhZ2UvRFNNRwpiYW5kYW5uYS9NUwpiYW5kYm94L01TCmJhbmRlYXUvTQpiYW5kZWF1eApiYW5kaXQvU00KYmFuZGl0cnkvTQpiYW5kbGVhZGVyL1MKYmFuZG1hc3Rlci9TTQpiYW5kb2xlZXIvU00KYmFuZHNtYW4vTQpiYW5kc21lbgpiYW5kc3RhbmQvU00KYmFuZHdhZ29uL1NNCmJhbmR3aWR0aApiYW5kd2lkdGhzCmJhbmR5L0RSU1RHCmJhbmUvU00KYmFuZWZ1bApiYW5nL1NHTURSCmJhbmdsZS9TTQpiYW5pCmJhbmlzaC9HTERTCmJhbmlzaG1lbnQvTQpiYW5pc3Rlci9TTQpiYW5qby9NUwpiYW5qb2lzdC9TTQpiYW5rL1NaR0JNRFIKYmFua2Jvb2svU00KYmFua2NhcmQvU00KYmFua2VyL00KYmFua2luZy9NCmJhbmtub3RlL1NNCmJhbmtyb2xsL1NHTUQKYmFua3J1cHQvU0dNRApiYW5rcnVwdGN5L1NNCmJhbm5lZApiYW5uZXIvU00KYmFubmluZwpiYW5ub2NrL01TCmJhbm5zL00KYmFucXVldC9aR01EUlMKYmFucXVldGVyL00KYmFucXVldHRlL1NNCmJhbnNoZWUvTVMKYmFudGFtL1NNCmJhbnRhbXdlaWdodC9TTQpiYW50ZXIvR1NNRApiYW50ZXJpbmcvWQpiYW55YW4vU00KYmFuemFpL1NNCmJhb2JhYi9TTQpiYXAvUwpiYXB0aXNtL01TCmJhcHRpc21hbApiYXB0aXN0L1MKYmFwdGlzdGVyeS9TTQpiYXB0aXplL1pHRFJTCmJhcHRpemVkL1UKYmFwdGl6ZXIvTQpiYXIncwpiYXIvRUNVVFMKYmFyYi9TWkdNRFIKYmFyYmFjb2EKYmFyYmFyaWFuL1NNCmJhcmJhcmlhbmlzbS9NUwpiYXJiYXJpYwpiYXJiYXJpY2FsbHkKYmFyYmFyaXNtL1NNCmJhcmJhcml0eS9TTQpiYXJiYXJpemUvRFNHCmJhcmJhcm91cy9ZCmJhcmJlY3VlL0RTTUcKYmFyYmVsL1NNCmJhcmJlbGwvTVMKYmFyYmVyL0dNRApiYXJiZXJyeS9TTQpiYXJiZXJzaG9wL01TCmJhcmJpZS9TCmJhcmJpdHVyYXRlL1NNCmJhcmJ3aXJlL00KYmFyY2Fyb2xlL1NNCmJhcmQvU00KYmFyZGljCmJhcmUvRFJTUFlHCmJhcmViYWNrL0QKYmFyZWZhY2VkL1kKYmFyZWZvb3QvRApiYXJlaGFuZGVkCmJhcmVoZWFkZWQKYmFyZWxlZ2dlZApiYXJlbmVzcy9NCmJhcmYvU0dNRFkKYmFyZmx5L1NNCmJhcmdhaW4vTURSWkdTCmJhcmdhaW5lci9NCmJhcmdlL01HRFMKYmFyZ2VtYW4vTQpiYXJnZW1lbgpiYXJob3AvUwpiYXJob3BwZWQKYmFyaG9wcGluZwpiYXJpc3RhL01TCmJhcml0b25lL01TCmJhcml1bS9NCmJhcmsncwpiYXJrL0NTR0QKYmFya2VlcC9aTVJTCmJhcmtlZXBlci9NCmJhcmtlci9TTQpiYXJsZXkvTQpiYXJtYWlkL01TCmJhcm1hbi9NCmJhcm1lbgpiYXJteS9SVApiYXJuL1NNCmJhcm5hY2xlL01EUwpiYXJuZXkvUwpiYXJuc3Rvcm0vU0RSWkcKYmFybnN0b3JtZXIvTQpiYXJueWFyZC9TTQpiYXJvbWV0ZXIvTVMKYmFyb21ldHJpYwpiYXJvbWV0cmljYWxseQpiYXJvbi9NUwpiYXJvbmFnZS9NUwpiYXJvbmVzcy9NUwpiYXJvbmV0L01TCmJhcm9uZXRjeS9TTQpiYXJvbmlhbApiYXJvbnkvU00KYmFyb3F1ZS9NCmJhcnF1ZS9TTQpiYXJyYWNrL01ER1MKYmFycmFjdWRhL1NNCmJhcnJhZ2UvTUdEUwpiYXJyZS9NR0pEUwpiYXJyZWQvVUVDCmJhcnJlbC9HU01ECmJhcnJlbi9UUFNNUgpiYXJyZW5uZXNzL00KYmFycmV0dGUvU00KYmFycmljYWRlL01HRFMKYmFycmllci9NUwpiYXJyaW5nL0VDVQpiYXJyaW8vU00KYmFycmlzdGVyL01TCmJhcnJvb20vTVMKYmFycm93L1NNCmJhcnRlbmRlci9TTQpiYXJ0ZXIvWkdTTURSCmJhcnRlcmVyL00KYmFyeW9uL1NNCmJhc2FsL1kKYmFzYWx0L00KYmFzYWx0aWMKYmFzZSdzCmJhc2UvQ0RTTFRHCmJhc2ViYWxsL1NNCmJhc2Vib2FyZC9NUwpiYXNlbGVzcwpiYXNlbGluZS9NUwpiYXNlbHkKYmFzZW1hbi9NCmJhc2VtZW4KYmFzZW1lbnQvQ01TCmJhc2VuZXNzL00KYmFzZXIKYmFzaC9HTURTCmJhc2hmdWwvUFkKYmFzaGZ1bG5lc3MvTQpiYXNoaW5nL00KYmFzaWMvTVMKYmFzaWNhbGx5CmJhc2lsL00KYmFzaWxpY2EvTVMKYmFzaWxpc2svTVMKYmFzaW4vTVMKYmFzaW5mdWwvTVMKYmFzaXMvTQpiYXNrL1NHRApiYXNrZXQvU00KYmFza2V0YmFsbC9NUwpiYXNrZXRyeS9NCmJhc2tldHdvcmsvTQpiYXNxdWUvUwpiYXNzL01TCmJhc3NldC9TTQpiYXNzaW5ldC9NUwpiYXNzaXN0L01TCmJhc3NvL01TCmJhc3Nvb24vTVMKYmFzc29vbmlzdC9TTQpiYXNzd29vZC9NUwpiYXN0L00KYmFzdGFyZC9NUwpiYXN0YXJkaXphdGlvbi9NUwpiYXN0YXJkaXplL0dEUwpiYXN0YXJkeS9NCmJhc3RlL1pHTlhEUlMKYmFzdGVyL00KYmFzdGlvbi9NCmJhdC9TTQpiYXRjaC9NRFNHCmJhdGUvS0FDR1NECmJhdGgvWkdNRFJTCmJhdGhlL00KYmF0aGVyL00KYmF0aGV0aWMKYmF0aGhvdXNlL01TCmJhdGhpbmcvTQpiYXRobWF0L01TCmJhdGhvcy9NCmJhdGhyb2JlL1NNCmJhdGhyb29tL1NNCmJhdGhzCmJhdGh0dWIvTVMKYmF0aHdhdGVyCmJhdGh5c2NhcGhlL1NNCmJhdGh5c3BoZXJlL01TCmJhdGlrL01TCmJhdGlzdGUvTQpiYXRtYW4vTQpiYXRtZW4KYmF0b24vTVMKYmF0c21hbi9NCmJhdHNtZW4KYmF0dGFsaW9uL1NNCmJhdHRlZApiYXR0ZW4vR1NNRApiYXR0ZXIvSlpHU01EUgpiYXR0ZXJlci9NCmJhdHRlcnkvU00KYmF0dGluZy9NCmJhdHRsZS9MRFJTTVpHCmJhdHRsZWF4ZS9NUwpiYXR0bGVkb3JlL1NNCmJhdHRsZWRyZXNzCmJhdHRsZWZpZWxkL01TCmJhdHRsZWZyb250L01TCmJhdHRsZWdyb3VuZC9NUwpiYXR0bGVtZW50L1NNCmJhdHRsZXIvTQpiYXR0bGVzaGlwL1NNCmJhdHR5L1JUCmJhdWJsZS9TTQpiYXVkL1NNCmJhdXhpdGUvTQpiYXdkL1NNCmJhd2RpbHkKYmF3ZGluZXNzL00KYmF3ZHkvUFJUCmJhd2wvU0dNRApiYXkvU01ERwpiYXliZXJyeS9TTQpiYXlvbmV0L1NNREcKYmF5b3UvTVMKYmF6YWFyL1NNCmJhemlsbGlvbi9TCmJhem9va2EvU00KYmJsCmJkcm0KYmUKYmVhY2gvTURTRwpiZWFjaGNvbWJlci9TTQpiZWFjaGZyb250CmJlYWNoaGVhZC9NUwpiZWFjaHdlYXIvTQpiZWFjb24vU00KYmVhZC9TR01ECmJlYWRpbmcvTQpiZWFkbGUvU00KYmVhZHkvUlQKYmVhZ2xlL1NNCmJlYWsvU1pNRFIKYmVha2VyL00KYmVhbS9TR01ECmJlYW4vU0dNRApiZWFuYmFnL01TCmJlYW5mZWFzdC9TCmJlYW5pZS9TTQpiZWFucG9sZS9NUwpiZWFuc3Byb3V0L1MKYmVhbnN0YWxrL01TCmJlYXIvU1pHQkpNUgpiZWFyYWJsZS9VCmJlYXJhYmx5L1UKYmVhcmQvTURHUwpiZWFyZGxlc3MKYmVhcmVyL00KYmVhcmluZy9NCmJlYXJpc2gvUFkKYmVhcmlzaG5lc3MvTQpiZWFybGlrZQpiZWFyc2tpbi9NUwpiZWFzdC9NUwpiZWFzdGxpbmVzcy9NCmJlYXN0bHkvVFBSTQpiZWF0L1NaR0JNTlJKCmJlYXRhYmxlL1UKYmVhdGVuL1UKYmVhdGVyL00KYmVhdGlmaWMKYmVhdGlmaWNhbGx5CmJlYXRpZmljYXRpb24vTQpiZWF0aWZ5L0dYTkRTCmJlYXRpbmcvTQpiZWF0aXR1ZGUvU00KYmVhdG5pay9NUwpiZWF1L1NNCmJlYXV0L01TCmJlYXV0ZW91cy9ZCmJlYXV0aWNpYW4vU00KYmVhdXRpZmljYXRpb24vTQpiZWF1dGlmaWVyL00KYmVhdXRpZnVsL1kKYmVhdXRpZnkvTkRSU1pHCmJlYXV0eS9TTQpiZWF2ZXIvU0dNRApiZWJvcC9NUwpiZWNhbG0vR1NECmJlY2FtZQpiZWNhdXNlCmJlY2svU00KYmVja29uL1NHRApiZWNsb3VkL0dEUwpiZWNvbWUvUwpiZWNvbWluZy9VWQpiZWNxdWVyZWwvUwpiZWQvU00KYmVkYXViL0dTRApiZWRhenpsZS9HRFNMCmJlZGF6emxlbWVudC9NCmJlZGJ1Zy9TTQpiZWRjaGFtYmVyL1MKYmVkY2xvdGhlcy9NCmJlZGRlZApiZWRkZXIKYmVkZGluZy9NCmJlZGVjay9HU0QKYmVkZXZpbC9MR0RTCmJlZGV2aWxtZW50L00KYmVkZmVsbG93L1NNCmJlZGhlYWQvUwpiZWRpbS9TCmJlZGltbWVkCmJlZGltbWluZwpiZWRpemVuL0dEUwpiZWRsYW0vU00KYmVkcGFuL1NNCmJlZHBvc3QvU00KYmVkcmFnZ2xlL0dEUwpiZWRyaWRkZW4KYmVkcm9jay9TTQpiZWRyb2xsL1NNCmJlZHJvb20vU00KYmVkc2lkZS9TTQpiZWRzaXQvUwpiZWRzaXR0ZXIvUwpiZWRzb3JlL1NNCmJlZHNwcmVhZC9TTQpiZWRzdGVhZC9TTQpiZWR0aW1lL1NNCmJlZS9SU01aR0oKYmVlYnJlYWQvTQpiZWVjaC9NUwpiZWVjaG51dC9NUwpiZWVmL1NHTUQKYmVlZmJ1cmdlci9TTQpiZWVmY2FrZS9NUwpiZWVmaW5lc3MvTQpiZWVmc3RlYWsvTVMKYmVlZnkvUlBUCmJlZWhpdmUvTVMKYmVla2VlcGVyL01TCmJlZWtlZXBpbmcvTQpiZWVsaW5lL01TCmJlZW4KYmVlcC9TWkdNRFIKYmVlcGVyL00KYmVlci9NCmJlZXJ5L1RSCmJlZXN3YXgvTQpiZWV0L1NNCmJlZXRsZS9NR0RTCmJlZXRyb290L1MKYmVldmVzCmJlZmFsbC9TR04KYmVmZWxsCmJlZml0L1MKYmVmaXR0ZWQKYmVmaXR0aW5nL1kKYmVmb2cvUwpiZWZvZ2dlZApiZWZvZ2dpbmcKYmVmb3JlCmJlZm9yZWhhbmQKYmVmb3VsL0RHUwpiZWZyaWVuZC9TR0QKYmVmdWRkbGUvR0xEUwpiZWZ1ZGRsZW1lbnQvTQpiZWcvUwpiZWdhbgpiZWdhdApiZWdldC9TCmJlZ2V0dGVyL1MKYmVnZXR0aW5nCmJlZ2dhci9NRFlHUwpiZWdnYXJ5L00KYmVnZ2VkCmJlZ2dpbmcKYmVnaW4vUwpiZWdpbm5lci9TTQpiZWdpbm5pbmcvTVMKYmVnb25lCmJlZ29uaWEvU00KYmVnb3QKYmVnb3R0ZW4KYmVncmltZS9EU0cKYmVncnVkZ2UvRFNHCmJlZ3J1ZGdpbmcvWQpiZWd1aWxlL0RSU1pHTApiZWd1aWxlbWVudC9NCmJlZ3VpbGVyL00KYmVndWlsaW5nL1kKYmVndWluZS9TTQpiZWd1bS9NUwpiZWd1bgpiZWhhbGYvTQpiZWhhbHZlcwpiZWhhdmUvR0RTCmJlaGF2aW9yL1NNCmJlaGF2aW9yYWwvWQpiZWhhdmlvcmlzbS9NCmJlaGF2aW9yaXN0L01TCmJlaGVhZC9ER1MKYmVoZWxkCmJlaGVtb3RoL00KYmVoZW1vdGhzCmJlaGVzdC9NUwpiZWhpbmQvTVMKYmVoaW5kaGFuZApiZWhvbGQvTlJaR1MKYmVob2xkZXIvTQpiZWhvb3ZlL0RTRwpiZWlnZS9NCmJlaW5nL00KYmVqZXdlbC9TREcKYmVsYWJvci9TREcKYmVsYXRlZC9ZCmJlbGF5L0dEUwpiZWxjaC9HTURTCmJlbGVhZ3Vlci9HU0QKYmVsZnJ5L1NNCmJlbGllL0RTCmJlbGllZi9FVU0KYmVsaWVmcwpiZWxpZXZhYmxlL1UKYmVsaWV2YWJseS9VCmJlbGlldmUvRURSU1pHCmJlbGlldmVyL0VVTVMKYmVsaWV2aW5nL1UKYmVsaXR0bGUvTERTRwpiZWxpdHRsZW1lbnQvTQpiZWxsL1NHTUQKYmVsbGFkb25uYS9NCmJlbGxib3kvU00KYmVsbGUvTVMKYmVsbGVkL0EKYmVsbGV0cmlzdC9NUwpiZWxsZXRyaXN0aWMKYmVsbGhvcC9TTQpiZWxsaWNvc2UKYmVsbGljb3NpdHkvTQpiZWxsaWdlcmVuY2UvTQpiZWxsaWdlcmVuY3kvTQpiZWxsaWdlcmVudC9NWVMKYmVsbGluZy9BCmJlbGxtYW4vTQpiZWxsbWVuCmJlbGxvdy9NREdTCmJlbGx3ZXRoZXIvTVMKYmVsbHkvR0RTTQpiZWxseWFjaGUvTUdEUwpiZWxseWJ1dHRvbi9TTQpiZWxseWZ1bC9NUwpiZWxvbmcvSkRHUwpiZWxvbmdpbmcvTQpiZWxvdmVkL1NNCmJlbG93CmJlbHQvU0dNRApiZWx0d2F5L1NNCmJlbHVnYS9NUwpiZWx5aW5nCmJlbWlyZS9HRFMKYmVtb2FuL0RHUwpiZW11c2UvTEdEUwpiZW11c2VkL1kKYmVtdXNlbWVudC9NCmJlbmNoL0dNRFMKYmVuY2htYXJrL01TCmJlbmQvQlNaR01SCmJlbmRlci9NCmJlbmR5L1RSCmJlbmVhdGgKYmVuZWRpY3RpbmUKYmVuZWRpY3Rpb24vU00KYmVuZWRpY3RvcnkKYmVuZWZhY3Rpb24vU00KYmVuZWZhY3Rvci9NUwpiZW5lZmFjdHJlc3MvTVMKYmVuZWZpY2UvU00KYmVuZWZpY2VuY2UvTQpiZW5lZmljZW50L1kKYmVuZWZpY2lhbC9ZCmJlbmVmaWNpYXJ5L1NNCmJlbmVmaXQvU01ERwpiZW5ldm9sZW5jZS9TTQpiZW5ldm9sZW50L1kKYmVuaWdodGVkL1kKYmVuaWduL1kKYmVuaWduYW50CmJlbmlnbml0eS9NCmJlbnQvU00KYmVudHdvb2QvTQpiZW51bWIvRFNHCmJlbnplbmUvTQpiZW56aW5lL00KYmVuenlsCmJlcXVlYXRoL0RHCmJlcXVlYXRocwpiZXF1ZXN0L01TCmJlcmF0ZS9HRFMKYmVyZWF2ZS9EU0xHCmJlcmVhdmVtZW50L01TCmJlcmVmdApiZXJldC9NUwpiZXJnL1NNCmJlcmliZXJpL00KYmVyay9TCmJlcmtlbGl1bS9NCmJlcm0vU00KYmVycnkvR0RTTQpiZXJyeWxpa2UKYmVyc2VyawpiZXJ0aC9HTUQKYmVydGhzCmJlcnlsL01TCmJlcnlsbGl1bS9NCmJlc2VlY2gvWkdSUwpiZXNlZWNoZXIvTQpiZXNlZWNoaW5nL1kKYmVzZWVtL0RTRwpiZXNldC9TCmJlc2V0dGluZwpiZXNpZGUvUwpiZXNpZWdlL1pHRFJTCmJlc2llZ2VyL00KYmVzbWVhci9EU0cKYmVzbWlyY2gvR0RTCmJlc29tL01TCmJlc290L1MKYmVzb3R0ZWQKYmVzb3R0aW5nCmJlc291Z2h0CmJlc3BhbmdsZS9EU0cKYmVzcGF0dGVyL0dTRApiZXNwZWFrL1NHCmJlc3BlY3RhY2xlZApiZXNwb2tlCmJlc3Bva2VuCmJlc3QvU0dNRApiZXN0aWFsL1kKYmVzdGlhbGl0eS9NCmJlc3RpYXJ5L1NNCmJlc3Rpci9TCmJlc3RpcnJlZApiZXN0aXJyaW5nCmJlc3Rvdy9ER1MKYmVzdG93YWwvU00KYmVzdHJldy9TREcKYmVzdHJld24KYmVzdHJpZGRlbgpiZXN0cmlkZS9TRwpiZXN0cm9kZQpiZXN0c2VsbGVyL01TCmJlc3RzZWxsaW5nCmJldC9TTQpiZXRhL1NNCmJldGFrZS9HUwpiZXRha2VuCmJldGNoYQpiZXRlbC9NCmJldGhpbmsvU0cKYmV0aG91Z2h0CmJldGlkZS9HRFMKYmV0aW1lcwpiZXRva2VuL0dEUwpiZXRvb2sKYmV0cmF5L0RSWkdTCmJldHJheWFsL1NNCmJldHJheWVyL00KYmV0cm90aC9ERwpiZXRyb3RoYWwvU00KYmV0cm90aGVkL00KYmV0cm90aHMKYmV0dGVyL01ER0xTCmJldHRlcm1lbnQvTQpiZXR0aW5nCmJldHRvci9NUwpiZXR3ZWVuCmJldHdpeHQKYmV2ZWwvR01EUwpiZXZlcmFnZS9TTQpiZXZ2eS9TCmJldnkvU00KYmV3YWlsL0RHUwpiZXdhcmUvR0RTCmJld2hpc2tlcmVkCmJld2lnZ2VkCmJld2lsZGVyL0xTR0QKYmV3aWxkZXJpbmcvWQpiZXdpbGRlcm1lbnQvTQpiZXdpdGNoL0dMRFMKYmV3aXRjaGluZy9ZCmJld2l0Y2htZW50L00KYmV5L1NNCmJleW9uZApiZXplbC9NUwpiZgpiaGFqaQpiaS9TTVJaCmJpYW5udWFsL1kKYmlhcy9HTURTCmJpYXNlZC9VCmJpYXRobG9uL1NNCmJpYi9TTQpiaWJsZS9NUwpiaWJsaWNhbApiaWJsaW9ncmFwaGVyL01TCmJpYmxpb2dyYXBoaWMKYmlibGlvZ3JhcGhpY2FsL1kKYmlibGlvZ3JhcGh5L1NNCmJpYmxpb3BoaWxlL1NNCmJpYnVsb3VzCmJpY2FtZXJhbApiaWNhbWVyYWxpc20vTQpiaWNhcmIvTVMKYmljYXJib25hdGUvTVMKYmljZW50ZW5hcnkvU00KYmljZW50ZW5uaWFsL1NNCmJpY2VwL01TCmJpY2Vwcy9NCmJpY2tlci9NRFJaR1MKYmlja2VyZXIvTQpiaWNvbmNhdmUKYmljb252ZXgKYmljdXNwaWQvTVMKYmljeWNsZS9EUlNNWkcKYmljeWNsZXIvTQpiaWN5Y2xpc3QvU00KYmlkL1NNRwpiaWRkYWJsZQpiaWRkZW4vVQpiaWRkZXIvTVMKYmlkZGluZy9NCmJpZGR5L1NNCmJpZGUvUwpiaWRldC9NUwpiaWRpcmVjdGlvbmFsL1kKYmllbm5pYWwvTVlTCmJpZW5uaXVtL01TCmJpZXIvTQpiaWZmL1NHRApiaWZvY2FsL1MKYmlmb2NhbHMvTQpiaWZ1cmNhdGUvWERTR04KYmlmdXJjYXRpb24vTQpiaWcvUApiaWdhbWlzdC9TTQpiaWdhbW91cwpiaWdhbXkvTQpiaWdnZXIKYmlnZ2VzdApiaWdnaWUvTVMKYmlnZ2lzaApiaWdoZWFkL1NNCmJpZ2hlYXJ0ZWQvUApiaWdoZWFydGVkbmVzcy9NCmJpZ2hvcm4vU00KYmlnaHQvTVMKYmlnbW91dGgvTQpiaWdtb3V0aHMKYmlnbmVzcy9NCmJpZ290L01EUwpiaWdvdHJ5L1NNCmJpZ3dpZy9NUwpiaWpvdS9NCmJpam91eApiaWtlL0RSU01aRwpiaWtlci9NCmJpa2luaS9NUwpiaWxhYmlhbC9NUwpiaWxhdGVyYWwvWQpiaWxiZXJyeS9TCmJpbGUvTQpiaWxnZS9NUwpiaWxpbmd1YWwvU01ZCmJpbGluZ3VhbGlzbS9NCmJpbGlvdXMvUApiaWxpb3VzbmVzcy9NCmJpbGlydWJpbgpiaWxrL1NaR0RSCmJpbGtlci9NCmJpbGwvU0JKR01ECmJpbGxib2FyZC9NUwpiaWxsZXQvR01EUwpiaWxsZm9sZC9TTQpiaWxsaG9vay9TCmJpbGxpYXJkL1MKYmlsbGlhcmRzL00KYmlsbGluZy9NCmJpbGxpbmdzZ2F0ZS9NCmJpbGxpb24vTUhTCmJpbGxpb25haXJlL1NNCmJpbGxpb250aC9NCmJpbGxpb250aHMKYmlsbG93L0dNRFMKYmlsbG93eQpiaWxseS9TTQpiaWxseWNhbi9TCmJpbWJvL01TCmJpbWV0YWxsaWMvU00KYmltZXRhbGxpc20vTQpiaW1vbnRobHkvU00KYmluL1NNCmJpbmFyeS9TTQpiaW5kJ3MKYmluZC9BVUdTCmJpbmRlci9NUwpiaW5kZXJ5L1NNCmJpbmRpbmcvTVMKYmluZHdlZWQvTQpiaW5nZS9NRFMKYmluZ28vTQpiaW5tYW4KYmlubWVuCmJpbm5hY2xlL1NNCmJpbm5lZApiaW5uaW5nCmJpbm9jdWxhci9NUwpiaW5vbWlhbC9TTQpiaW8vU00KYmlvY2hlbWljYWwvU01ZCmJpb2NoZW1pc3QvTVMKYmlvY2hlbWlzdHJ5L00KYmlvZGVncmFkYWJpbGl0eS9NCmJpb2RlZ3JhZGUvRFNHQgpiaW9kaXZlcnNpdHkvTQpiaW9ldGhpY3MvTQpiaW9mZWVkYmFjay9NCmJpb2cKYmlvZ3JhcGhlci9TTQpiaW9ncmFwaGljCmJpb2dyYXBoaWNhbC9ZCmJpb2dyYXBoeS9TTQpiaW9sCmJpb2xvZ2ljCmJpb2xvZ2ljYWwvWQpiaW9sb2dpc3QvTVMKYmlvbG9neS9NCmJpb21hc3MvTQpiaW9tZWRpY2FsCmJpb25pYy9TCmJpb25pY2FsbHkKYmlvbmljcy9NCmJpb3BoeXNpY2FsCmJpb3BoeXNpY2lzdC9NUwpiaW9waHlzaWNzL00KYmlvcGljL01TCmJpb3BzeS9HRFNNCmJpb3JlYWN0b3IvUwpiaW9yaHl0aG0vTVMKYmlvc2Vuc29yL1MKYmlvc3BoZXJlL1NNCmJpb3N5bnRoZXNpcwpiaW90ZWNoCmJpb3RlY2hub2xvZ2ljYWwKYmlvdGVjaG5vbG9neS9NCmJpb3Rpbi9NCmJpcGFydGlzYW4KYmlwYXJ0aXNhbnNoaXAvTQpiaXBhcnRpdGUKYmlwZWQvTVMKYmlwZWRhbApiaXBsYW5lL01TCmJpcG9sYXIKYmlwb2xhcml0eS9NCmJpcmFjaWFsCmJpcmNoL0dNRFMKYmlyZC9TWkdNRFIKYmlyZGJhdGgvTQpiaXJkYmF0aHMKYmlyZGJyYWluL1NNRApiaXJkY2FnZS9TCmJpcmRlci9NCmJpcmRob3VzZS9NUwpiaXJkaWUvTURTCmJpcmRpZWluZwpiaXJkbGlrZQpiaXJkbGltZS9NCmJpcmRzZWVkL00KYmlyZHNvbmcKYmlyZHdhdGNoZXIvU00KYmlyZHlpbmcKYmlyZXR0YS9TTQpiaXJ0aC9aR01EUgpiaXJ0aGRheS9NUwpiaXJ0aGVyL00KYmlydGhtYXJrL01TCmJpcnRocGxhY2UvTVMKYmlydGhyYXRlL01TCmJpcnRocmlnaHQvTVMKYmlydGhzL0EKYmlydGhzdG9uZS9TTQpiaXNjdWl0L1NNCmJpc2VjdC9ER1MKYmlzZWN0aW9uL01TCmJpc2VjdG9yL1NNCmJpc2V4dWFsL01ZUwpiaXNleHVhbGl0eS9NCmJpc2hvcC9NUwpiaXNob3ByaWMvU00KYmlzbXV0aC9NCmJpc29uL00KYmlzcXVlL00KYmlzdHJvL01TCmJpdC9DU01HCmJpdGNoL0dNRFMKYml0Y2hpbHkKYml0Y2hpbmVzcy9NCmJpdGNoeS9QUlQKYml0Y29pbi9TTQpiaXRlL1JTTVoKYml0ZXIvTQpiaXRpbmcvWQpiaXRtYXAvUwpiaXR0ZW4KYml0dGVyL1BNUllUUwpiaXR0ZXJuL1NNCmJpdHRlcm5lc3MvTQpiaXR0ZXJzL00KYml0dGVyc3dlZXQvTVMKYml0dHkvVFIKYml0dW1lbi9NCmJpdHVtaW5vdXMKYml2YWxlbnQKYml2YWx2ZS9TTQpiaXZvdWFjL01TCmJpdm91YWNrZWQKYml2b3VhY2tpbmcKYml3ZWVrbHkvU00KYml5ZWFybHkKYml6L00KYml6YXJyZS9ZCmJrCmJsL0RHCmJsYWIvU00KYmxhYmJlZApibGFiYmVyL0RHUwpibGFiYmVybW91dGgvTQpibGFiYmVybW91dGhzCmJsYWJiaW5nCmJsYWNrL1BYVEdNRE5SWVMKYmxhY2thbW9vci9NUwpibGFja2JhbGwvU0dNRApibGFja2JlcnJ5L0dTTQpibGFja2JpcmQvU00KYmxhY2tib2FyZC9NUwpibGFja2N1cnJhbnQvUwpibGFja2VuL0RHCmJsYWNrZmFjZQpibGFja2d1YXJkL1NNCmJsYWNraGVhZC9NUwpibGFja2luZy9NCmJsYWNraXNoCmJsYWNramFjay9NREdTCmJsYWNrbGVnL1MKYmxhY2tsaXN0L01EU0cKYmxhY2ttYWlsL01EUlNaRwpibGFja21haWxlci9NCmJsYWNrbmVzcy9NCmJsYWNrb3V0L1NNCmJsYWNrc21pdGgvTQpibGFja3NtaXRocwpibGFja3NuYWtlL1NNCmJsYWNrdGhvcm4vU00KYmxhY2t0b3AvU00KYmxhY2t0b3BwZWQKYmxhY2t0b3BwaW5nCmJsYWRkZXIvTVMKYmxhZGUvTURTCmJsYWcvUwpibGFnZ2VkCmJsYWdnaW5nCmJsYWgvTQpibGFocy9NCmJsYW1lL0JNR0RSUwpibGFtZWxlc3MvWVAKYmxhbWVsZXNzbmVzcy9NCmJsYW1ld29ydGhpbmVzcy9NCmJsYW1ld29ydGh5L1AKYmxhbW1vCmJsYW5jaC9HRFMKYmxhbmNtYW5nZS9NUwpibGFuZC9QVFJZCmJsYW5kaXNoL0RTTEcKYmxhbmRpc2htZW50L1NNCmJsYW5kbmVzcy9NCmJsYW5rL1RHUE1EUllTCmJsYW5rZXQvR01EUwpibGFua25lc3MvTQpibGFyZS9NR0RTCmJsYXJuZXkvU01ERwpibGFzZQpibGFzcGhlbWUvWkdEUlMKYmxhc3BoZW1lci9NCmJsYXNwaGVtb3VzL1kKYmxhc3BoZW15L1NNCmJsYXN0L1pHTURSUwpibGFzdGVyL00KYmxhc3RvZmYvTVMKYmxhdC9TCmJsYXRhbmN5L1NNCmJsYXRhbnQvWQpibGF0aGVyL1NNREcKYmxhemUvTVpHRFJTCmJsYXplci9NCmJsYXpvbi9NREdTCmJsZGcKYmxlYWNoL01EUlNaRwpibGVhY2hlZC9VCmJsZWFjaGVyL00KYmxlYWsvVFBSWQpibGVha25lc3MvTQpibGVhcgpibGVhcmlseQpibGVhcmluZXNzL00KYmxlYXJ5L1BSVApibGVhdC9HTURTCmJsZWVkL1pHUlMKYmxlZWRlci9NCmJsZWVkaW5nL00KYmxlZXAvWkdNRFJTCmJsZWVwZXIvTQpibGVtaXNoL0dNRFMKYmxlbWlzaGVkL1UKYmxlbmNoL0RTRwpibGVuZC9aR01EUlMKYmxlbmRlci9NCmJsZXNzL0dEU0oKYmxlc3NlZC9ZUApibGVzc2VkbmVzcy9NCmJsZXNzaW5nL00KYmxldGNoCmJsZXcKYmxpZ2h0L1pHTURSUwpibGltZXkKYmxpbXAvTVMKYmxpbXBpc2gKYmxpbmQvUFpUR01EUllTCmJsaW5kZXIvTQpibGluZGZvbGQvU01ERwpibGluZGluZy9ZCmJsaW5kbmVzcy9NCmJsaW5kc2lkZS9EU0cKYmxpbmkvTVMKYmxpbmsvWkdNRFJTCmJsaW5rZXIvTURHCmJsaW50ei9NUwpibGludHplL00KYmxpcC9TTQpibGlzcy9NCmJsaXNzZnVsL1lQCmJsaXNzZnVsbmVzcy9NCmJsaXN0ZXIvR01EUwpibGlzdGVyaW5nL1kKYmxpc3RlcnkKYmxpdGhlL1BZVFIKYmxpdGhlbmVzcy9NCmJsaXRoZXIvRwpibGl0aGVzb21lCmJsaXR6L0dNRFMKYmxpdHprcmllZy9NUwpibGl2ZXQvUwpibGl6emFyZC9TTQpibG9hdC9aR0RSUwpibG9hdHdhcmUKYmxvYi9TTQpibG9iYmVkCmJsb2JiaW5nCmJsb2MvU00KYmxvY2sncwpibG9jay9VR0RTCmJsb2NrYWRlL01aR0RSUwpibG9ja2FkZXIvTQpibG9ja2FnZS9NUwpibG9ja2J1c3Rlci9TTQpibG9ja2J1c3RpbmcvTQpibG9ja2VyL01TCmJsb2NraGVhZC9TTQpibG9ja2hvdXNlL01TCmJsb2cvU00KYmxvZ2dlZApibG9nZ2VyL01TCmJsb2dnaW5nCmJsb2tlL01TCmJsb2tpc2gKYmxvbmQvUFRNUlMKYmxvbmRlL01TCmJsb25kaXNoCmJsb25kbmVzcy9NCmJsb29kL0dNRFMKYmxvb2RiYXRoL00KYmxvb2RiYXRocwpibG9vZGN1cmRsaW5nCmJsb29kaG91bmQvU00KYmxvb2RpbHkKYmxvb2RpbmVzcy9NCmJsb29kbGVzcy9ZUApibG9vZGxlc3NuZXNzL00KYmxvb2RsZXR0aW5nL00KYmxvb2RsaW5lL1NNCmJsb29kbW9iaWxlL01TCmJsb29kc2hlZC9NCmJsb29kc2hvdApibG9vZHN0YWluL1NNRApibG9vZHN0b2NrL00KYmxvb2RzdHJlYW0vU00KYmxvb2RzdWNrZXIvU00KYmxvb2RzdWNraW5nCmJsb29kdGhpcnN0aWx5CmJsb29kdGhpcnN0aW5lc3MvTQpibG9vZHRoaXJzdHkvUlBUCmJsb29keS9QVEdEUlMKYmxvb20vWkdNRFJTCmJsb29tZXIvTQpibG9vcC9aR01EUlMKYmxvb3Blci9NCmJsb3Nzb20vR01EUwpibG9zc29teQpibG90L1NNCmJsb3RjaC9HTURTCmJsb3RjaHkvVFIKYmxvdHRlZApibG90dGVyL01TCmJsb3R0aW5nCmJsb3R0bwpibG91c2UvTUdEUwpibG93L1NaR01SCmJsb3dlci9NCmJsb3dmbHkvU00KYmxvd2d1bi9NUwpibG93aGFyZC9NUwpibG93aG9sZS9TCmJsb3dqb2IKYmxvd2xhbXAvUwpibG93bgpibG93b3V0L1NNCmJsb3dwaXBlL1NNCmJsb3d0b3JjaC9NUwpibG93dXAvTVMKYmxvd3kvVFIKYmxvd3p5L1JUCmJsdWJiZXIvR1NNRApibHViYmVyeQpibHVkZ2Vvbi9NREdTCmJsdWUvRFJTUE1URwpibHVlYmVsbC9NUwpibHVlYmVycnkvU00KYmx1ZWJpcmQvTVMKYmx1ZWJvbm5ldC9TTQpibHVlYm90dGxlL1NNCmJsdWVmaXNoL01TCmJsdWVnaWxsL01TCmJsdWVncmFzcy9NCmJsdWVpc2gKYmx1ZWphY2tldC9TTQpibHVlamVhbnMvTQpibHVlbmVzcy9NCmJsdWVub3NlL01TCmJsdWVwb2ludC9NUwpibHVlcHJpbnQvTURHUwpibHVlc3RvY2tpbmcvU00KYmx1ZXN5L1JUCmJsdWV0L01TCmJsdWZmL1pUR1BNRFJZUwpibHVmZmVyL00KYmx1ZmZuZXNzL00KYmx1aW5nL00KYmx1aXNoCmJsdW5kZXIvTURSWkdTCmJsdW5kZXJidXNzL01TCmJsdW5kZXJlci9NCmJsdW50L1BUR0RSWVMKYmx1bnRuZXNzL00KYmx1ci9TTQpibHVyYi9NUwpibHVycmVkCmJsdXJyaW5lc3MvTQpibHVycmluZwpibHVycnkvVFJQCmJsdXJ0L0dEUwpibHVzaC9aR01EUlMKYmx1c2hlci9NCmJsdXN0ZXIvTURSU1pHCmJsdXN0ZXJlci9NCmJsdXN0ZXJvdXMKYmx1c3RlcnkKYmx2ZApib2EvU00KYm9hci9TTQpib2FyZC9aR01EUlMKYm9hcmRlci9NCmJvYXJkaW5nL00KYm9hcmRpbmdob3VzZS9NUwpib2FyZHJvb20vTVMKYm9hcmR3YWxrL01TCmJvYXN0L1pHTURSUwpib2FzdGVyL00KYm9hc3RmdWwvUFkKYm9hc3RmdWxuZXNzL00KYm9hdC9TWkdNRFIKYm9hdGVyL00KYm9hdGhvdXNlL01TCmJvYXRpbmcvTQpib2F0bG9hZC9TCmJvYXRtYW4vTQpib2F0bWVuCmJvYXRzd2Fpbi9TTQpib2F0eWFyZC9TCmJvYi9TTQpib2JiZWQKYm9iYmluL01TCmJvYmJpbmcKYm9iYmxlL01HRFMKYm9iYnkvU00KYm9iYnlzb3hlci9TTQpib2JjYXQvTVMKYm9ib2xpbmsvU00KYm9ic2xlZC9TTQpib2JzbGVkZGVkCmJvYnNsZWRkZXIvTVMKYm9ic2xlZGRpbmcKYm9ic2xlaWdoL00KYm9ic2xlaWdocwpib2J0YWlsL1NNCmJvYndoaXRlL01TCmJvY2NpZS9NCmJvY2svTQpib2QvU01ERwpib2RhY2lvdXMKYm9kZS9TCmJvZGVnYS9NUwpib2RnZS9HRFMKYm9kaWNlL01TCmJvZGlseQpib2RraW4vTVMKYm9keS9EU00KYm9keWJ1aWxkZXIvU00KYm9keWJ1aWxkaW5nL00KYm9keWd1YXJkL01TCmJvZHlzdWl0L1NNCmJvZHl3b3JrL00KYm9mZmluL1MKYm9mZm8KYm9nL1NNCmJvZ2EKYm9nZXkvR01EUwpib2dleW1hbi9NCmJvZ2V5bWVuCmJvZ2dlZApib2dnaW5nCmJvZ2dsZS9HRFMKYm9nZ3kvVFIKYm9naWUvTVMKYm9nb24KYm9nb3NpdHkKYm9ndXMKYm9neW1hbi9NCmJvZ3ltZW4KYm9oZW1pYW4vU00KYm9oZW1pYW5pc20vTQpib2lsL1NKWkdNRFIKYm9pbGVyL00KYm9pbGVybWFrZXIvU00KYm9pbGVycGxhdGUvTQpib2luay9HRFMKYm9pc3Rlcm91cy9ZUApib2lzdGVyb3VzbmVzcy9NCmJvbGEvU00KYm9sZC9QVFJZCmJvbGRmYWNlL0RNCmJvbGRuZXNzL00KYm9sZS9TTQpib2xlcm8vTVMKYm9saXZhci9NUwpib2xpdmFyZXMKYm9sbC9TTQpib2xsYXJkL1MKYm9sbGl4L0dNRFMKYm9sbG9ja2luZy9TCmJvbGxvY2tzCmJvbG9nbmEvTQpib2xzaGllCmJvbHN0ZXIvR01EUwpib2x0J3MKYm9sdC9VU0dECmJvbHRob2xlL1MKYm9sdXMvTVMKYm9tYi9TSlpHTURSCmJvbWJhcmQvR0RMUwpib21iYXJkaWVyL01TCmJvbWJhcmRtZW50L1NNCmJvbWJhc3QvTQpib21iYXN0aWMKYm9tYmFzdGljYWxseQpib21iZXIvTQpib21icHJvb2YKYm9tYnNoZWxsL1NNCmJvbWJzaXRlL1MKYm9uYW56YS9NUwpib25ib24vTVMKYm9uY2UvUwpib25kL1NHTUQKYm9uZGFnZS9NCmJvbmRob2xkZXIvTVMKYm9uZGluZy9NCmJvbmRtYW4vTQpib25kbWVuCmJvbmRzbWFuL00KYm9uZHNtZW4KYm9uZHdvbWFuL00KYm9uZHdvbWVuCmJvbmUvRFJTTVpHCmJvbmVoZWFkL1NNRApib25lbGVzcwpib25lci9NCmJvbmVzaGFrZXIvUwpib25leWFyZApib25maXJlL01TCmJvbmcvU0dNRApib25nby9NUwpib25ob21pZS9NCmJvbmluZXNzL00KYm9uaXRvL01TCmJvbmsvU1pHRApib25uZXQvTVMKYm9ubnkvVFIKYm9ub2JvL01TCmJvbnNhaS9NCmJvbnVzL01TCmJvbnkvUFRSCmJvby9TTURIRwpib29iL1NHTUQKYm9vYnkvU00KYm9vZGxlL01TCmJvb2dlci9TCmJvb2dleW1hbi9NCmJvb2dleW1lbgpib29naWUvTURTCmJvb2dpZWluZwpib29naWVtYW4vTQpib29ob28vR01EUwpib29rL1NCSkdNRApib29rYmluZGVyL1NNCmJvb2tiaW5kZXJ5L1NNCmJvb2tiaW5kaW5nL00KYm9va2Nhc2UvTVMKYm9va2VuZC9NUwpib29raWUvTVMKYm9va2luZy9NCmJvb2tpc2gKYm9va2tlZXBlci9NUwpib29ra2VlcGluZy9NCmJvb2tsZXQvTVMKYm9va21ha2VyL1NNCmJvb2ttYWtpbmcvTQpib29rbWFyay9TTURHCmJvb2ttb2JpbGUvU00KYm9va3BsYXRlL01TCmJvb2tzZWxsZXIvTVMKYm9va3NoZWxmL00KYm9va3NoZWx2ZXMKYm9va3Nob3AvU00KYm9va3N0YWxsL1MKYm9va3N0b3JlL01TCmJvb2t3b3JtL1NNCmJvb20vU1pHTURSCmJvb21ib3gvTVMKYm9vbWVyYW5nL01ER1MKYm9vbi9TTQpib29uZG9ja3MvTQpib29uZG9nZ2xlL01aR0RSUwpib29uZG9nZ2xlci9NCmJvb25pZXMvTQpib29yL1NNCmJvb3Jpc2gvUFkKYm9vcmlzaG5lc3MvTVMKYm9vc3QvWkdNRFJTCmJvb3N0ZXIvTQpib290J3MKYm9vdC9BU0dECmJvb3RibGFjay9TTQpib290ZWUvTVMKYm9vdGgvTQpib290aHMKYm9vdGxhY2UvUwpib290bGVnL01TCmJvb3RsZWdnZWQKYm9vdGxlZ2dlci9NUwpib290bGVnZ2luZy9NCmJvb3RsZXNzCmJvb3RzdHJhcC9NUwpib290c3RyYXBwZWQKYm9vdHN0cmFwcGluZwpib290eS9TTQpib296ZS9NWkdEUlMKYm9vemVyL00KYm9venkvVFIKYm9wL1NNCmJvcHBlZApib3BwaW5nCmJvcmF4L00KYm9yZGVsbG8vTVMKYm9yZGVyL0dNRFMKYm9yZGVybGFuZC9NUwpib3JkZXJsaW5lL01TCmJvcmUvRFJTTVpHCmJvcmVkb20vTQpib3JlaG9sZS9TCmJvcmVyL00KYm9yaW5nL1kKYm9ybi9JQVUKYm9ybmUKYm9yb24vTQpib3JvdWdoL00KYm9yb3VnaHMKYm9ycm93L1NEUlpHSgpib3Jyb3dlci9NCmJvcnJvd2luZy9NCmJvcnNjaHQvTQpib3JzdGFsL1MKYm9yem9pL1NNCmJvc2gvTQpib3NvbSdzCmJvc29tL1VTCmJvc29teQpib3NzL0RTR00KYm9zc2lseQpib3NzaW5lc3MvTQpib3NzaXNtL00KYm9zc3kvUlRQCmJvdC9TCmJvdGFuaWMKYm90YW5pY2FsL1kKYm90YW5pc3QvU00KYm90YW55L00KYm90Y2gvRFJTWkdNCmJvdGNoZXIvTQpib3RoCmJvdGhlci9TTURHCmJvdGhlcmF0aW9uCmJvdGhlcnNvbWUKYm90bmV0L1NNCmJvdHRsZS9EUlNNWkcKYm90dGxlbmVjay9NUwpib3R0bGVyL00KYm90dG9tL1NNREcKYm90dG9tbGVzcwpib3R1bGludW0KYm90dWxpc20vTQpib3Vkb2lyL1NNCmJvdWZmYW50L1NNCmJvdWdhaW52aWxsZWEvTVMKYm91Z2gvTQpib3VnaHMKYm91Z2h0CmJvdWlsbGFiYWlzc2UvU00KYm91aWxsb24vTVMKYm91bGRlci9TTQpib3VsZXMKYm91bGV2YXJkL1NNCmJvdW5jZS9EUlNNWkcKYm91bmNlci9NCmJvdW5jaWx5CmJvdW5jaW5lc3MvTQpib3VuY3kvUlRQCmJvdW5kL0FTTUdECmJvdW5kYXJ5L1NNCmJvdW5kZW4KYm91bmRlci9TTQpib3VuZGxlc3MvUFkKYm91bmRsZXNzbmVzcy9NCmJvdW50ZW91cy9ZUApib3VudGVvdXNuZXNzL00KYm91bnRpZnVsL1lQCmJvdW50aWZ1bG5lc3MvTQpib3VudHkvU00KYm91cXVldC9TTQpib3VyYm9uL1NNCmJvdXJnZW9pcy9NCmJvdXJnZW9pc2llL00KYm91c3Ryb3BoZWRvbgpib3V0L01TCmJvdXRpcXVlL1NNCmJvdXRvbm5pZXJlL01TCmJvdXpvdWtpL01TCmJvdmluZS9TTQpib3Z2ZXIKYm93L1pHU01EUgpib3dkbGVyaXphdGlvbi9NUwpib3dkbGVyaXplL0RTRwpib3dlZC9VCmJvd2VsL1NNCmJvd2VyL00KYm93bC9NRFJaR1MKYm93bGVnL1NNCmJvd2xlZ2dlZApib3dsZXIvTQpib3dsZnVsL1NNCmJvd2xpbmUvU00KYm93bGluZy9NCmJvd21hbi9NCmJvd21lbgpib3dzcHJpdC9TTQpib3dzdHJpbmcvU00KYm93d293L1NNCmJveC9aR01ETlJTCmJveGNhci9TTQpib3hlci9NCmJveGluZy9NCmJveGxpa2UKYm94cm9vbS9TCmJveHdvb2QvTQpib3h5L1JUCmJveS9TTQpib3ljb3R0L1NHTUQKYm95ZnJpZW5kL01TCmJveWhvb2QvU00KYm95aXNoL1lQCmJveWlzaG5lc3MvTQpib3lzZW5iZXJyeS9TTQpib3pvL01TCmJwbQpicHMKYnJhL1NNCmJyYWNlL01aR0RSUwpicmFjZWxldC9NUwpicmFjZXIvTQpicmFjZXJvL01TCmJyYWNrZW4vTQpicmFja2V0L0dNRFMKYnJhY2tpc2gvUApicmFja2lzaG5lc3MvTQpicmFjdC9NUwpicmFkL1NNCmJyYWRhd2wvUwpicmFkeWNhcmRpYQpicmFlL1NNCmJyYWcvU00KYnJhZ2dhZG9jaW8vU00KYnJhZ2dhcnQvU00KYnJhZ2dlZApicmFnZ2VyL01TCmJyYWdnaW5nCmJyYWlkL0dNRFMKYnJhaWRpbmcvTQpicmFpbGxlL00KYnJhaW4vR01EUwpicmFpbmNoaWxkL00KYnJhaW5jaGlsZHJlbi9NCmJyYWluaW5lc3MvTQpicmFpbmxlc3MvWQpicmFpbnBvd2VyCmJyYWluc3Rvcm0vU01ERwpicmFpbnN0b3JtaW5nL00KYnJhaW50ZWFzZXIvU00KYnJhaW53YXNoL0RTRwpicmFpbndhc2hpbmcvTQpicmFpbndhdmUvUwpicmFpbnkvUFRSCmJyYWlzZS9HRFMKYnJha2UvTUdEUwpicmFrZW1hbi9NCmJyYWtlbWVuCmJyYW1ibGUvTVMKYnJhbWJseQpicmFuL00KYnJhbmNoL0dNRFMKYnJhbmNobGlrZQpicmFuZC9aR01EUlMKYnJhbmRlZC9VCmJyYW5kZXIvTQpicmFuZGlzaC9EU0cKYnJhbmR5L0dEU00KYnJhc2gvUFRSWQpicmFzaG5lc3MvTQpicmFzcy9NUwpicmFzc2VyaWUvTVMKYnJhc3NpZXJlL01TCmJyYXNzaWx5CmJyYXNzaW5lc3MvTQpicmFzc3kvUFRSCmJyYXQvU00KYnJhdHR5L1JUCmJyYXR3dXJzdC9TTQpicmF2YWRvL00KYnJhdmUvR1BNWURUUlMKYnJhdmVuZXNzL00KYnJhdmVyeS9NCmJyYXZvL1NNCmJyYXZ1cmEvU00KYnJhd2wvU0RSWkdNCmJyYXdsZXIvTQpicmF3bi9NCmJyYXduaW5lc3MvTQpicmF3bnkvUlRQCmJyYXkvREdTTQpicmF6ZS9EUlNaRwpicmF6ZW4vU0RZR1AKYnJhemVubmVzcy9NCmJyYXplci9NCmJyYXppZXIvU00KYnJlYWNoL0dNRFMKYnJlYWQvR01ESFMKYnJlYWRiYXNrZXQvU00KYnJlYWRib2FyZC9TTQpicmVhZGJveC9NUwpicmVhZGNydW1iL01TCmJyZWFkZnJ1aXQvU00KYnJlYWRsaW5lL01TCmJyZWFkdGgvTQpicmVhZHRocwpicmVhZHdpbm5lci9TTQpicmVhay9CTVpHUlMKYnJlYWthYmxlL01TCmJyZWFrYWdlL01TCmJyZWFrYXdheS9NUwpicmVha2Rvd24vTVMKYnJlYWtlci9NCmJyZWFrZmFzdC9NREdTCmJyZWFrZnJvbnQvTVMKYnJlYWtuZWNrCmJyZWFrb3V0L01TCmJyZWFrcG9pbnRzCmJyZWFrdGhyb3VnaC9NCmJyZWFrdGhyb3VnaHMKYnJlYWt1cC9TTQpicmVha3dhdGVyL1NNCmJyZWFtL01TCmJyZWFzdC9TTURHCmJyZWFzdGJvbmUvTVMKYnJlYXN0ZmVkCmJyZWFzdGZlZWQvR1MKYnJlYXN0cGxhdGUvU00KYnJlYXN0c3Ryb2tlL1NNCmJyZWFzdHdvcmsvTVMKYnJlYXRoL01EUlNaR0IKYnJlYXRoYWx5emUvWkdEUlMKYnJlYXRoZQpicmVhdGhlci9NCmJyZWF0aGluZy9NCmJyZWF0aGxlc3MvUFkKYnJlYXRobGVzc25lc3MvTQpicmVhdGhzCmJyZWF0aHRha2luZy9ZCmJyZWF0aHkvUlQKYnJlZC9JCmJyZWVjaC9NUwpicmVlZC9TUlpHTQpicmVlZGVyL00KYnJlZWRpbmcvSU0KYnJlZXplL0RTTUcKYnJlZXpld2F5L1NNCmJyZWV6aWx5CmJyZWV6aW5lc3MvTQpicmVlenkvUlRQCmJyZXRocmVuCmJyZXZlL1NNCmJyZXZldC9TTQpicmV2ZXR0ZWQKYnJldmV0dGluZwpicmV2aWFyeS9TTQpicmV2aXR5L00KYnJldy9NRFJaR1MKYnJld2VyL00KYnJld2VyeS9TTQpicmV3cHViL1NNCmJyaWJlL0RSU01aRwpicmliZXIvTQpicmliZXJ5L00KYnJpY2svU01ERwpicmlja2JhdC9TTQpicmlja2llL1MKYnJpY2tsYXllci9NUwpicmlja2xheWluZy9NCmJyaWNrd29yay9NCmJyaWNreWFyZC9TCmJyaWRhbC9TTQpicmlkZS9TTQpicmlkZWdyb29tL1NNCmJyaWRlc21haWQvTVMKYnJpZGdlL0RTTUcKYnJpZGdlYWJsZS9VCmJyaWRnZWhlYWQvU00KYnJpZGdld29yay9NCmJyaWRsZS9EU01HCmJyaWRsZWQvVQpicmlkbGV3YXkvUwpicmllL01aUgpicmllZidzCmJyaWVmL0NTRFRHSgpicmllZmNhc2UvU00KYnJpZWZlcgpicmllZmluZy9DTQpicmllZmx5CmJyaWVmbmVzcy9NCmJyaWVyL00KYnJpZy9NUwpicmlnYWRlL1NNCmJyaWdhZGllci9NUwpicmlnYW5kL1NNCmJyaWdhbmRhZ2UvTQpicmlnYW50aW5lL01TCmJyaWdodC9TUE5SWVhUCmJyaWdodGVuL0RSWkcKYnJpZ2h0ZW5lci9NCmJyaWdodG5lc3MvTQpicmlnaHRzL00KYnJpbGwKYnJpbGxpYW5jZS9NCmJyaWxsaWFuY3kvTQpicmlsbGlhbnQvTVlTCmJyaWxsaWFudGluZS9NCmJyaW0vTVMKYnJpbWZ1bApicmltbGVzcwpicmltbWVkCmJyaW1taW5nCmJyaW1zdG9uZS9NCmJyaW5kbGUvRE0KYnJpbmUvTQpicmluZy9TUlpHCmJyaW5nZXIvTQpicmluaW5lc3MvTQpicmluay9TTQpicmlua21hbnNoaXAvTQpicmlueS9SVFAKYnJpb2NoZS9TTQpicmlxdWV0dGUvTVMKYnJpc2svU0RSWVRHUApicmlza2V0L1NNCmJyaXNrbmVzcy9NCmJyaXN0bGUvRFNNRwpicmlzdGx5L1RSCmJyaXRjaGVzL00KYnJpdHRsZS9QUk1UCmJyaXR0bGVuZXNzL00KYnJvL1NNSApicm9hY2gvTURTRwpicm9hZC9TTU5SWVhUUApicm9hZGJhbmQvTQpicm9hZGNhc3QvQU1HUwpicm9hZGNhc3Rlci9NUwpicm9hZGNhc3RpbmcvTQpicm9hZGNsb3RoL00KYnJvYWRlbi9ERwpicm9hZGxvb20vTQpicm9hZG1pbmRlZApicm9hZG5lc3MvTQpicm9hZHNoZWV0L1NNCmJyb2Fkc2lkZS9NR0RTCmJyb2Fkc3dvcmQvU00KYnJvY2FkZS9EU01HCmJyb2Njb2xpL00KYnJvY2hldHRlL1NNCmJyb2NodXJlL01TCmJyb2dhbi9TTQpicm9ndWUvU00KYnJvaWwvU01EUlpHCmJyb2lsZXIvTQpicm9rZQpicm9rZW4vWVAKYnJva2VuaGVhcnRlZC9ZCmJyb2tlbm5lc3MvTQpicm9rZXIvU01ERwpicm9rZXJhZ2UvTVMKYnJvbGx5L1MKYnJvbWlkZS9TTQpicm9taWRpYwpicm9taW5lL00KYnJvbmMvU00KYnJvbmNoaQpicm9uY2hpYWwKYnJvbmNoaXRpYwpicm9uY2hpdGlzL00KYnJvbmNodXMvTQpicm9uY28vU00KYnJvbmNvYnVzdGVyL1NNCmJyb250b3NhdXIvTVMKYnJvbnRvc2F1cnVzL01TCmJyb256ZS9EU01HCmJyb29jaC9NUwpicm9vZC9TTURSWkcKYnJvb2Rlci9NCmJyb29kaWx5CmJyb29kaW5nL01ZCmJyb29kbWFyZS9NUwpicm9vZHkvUk1QVApicm9vay9TTURHCmJyb29rbGV0L1NNCmJyb29tL1NNCmJyb29tc3RpY2svTVMKYnJvdGgvTVJaCmJyb3RoZWwvTVMKYnJvdGhlci9NWQpicm90aGVyaG9vZC9NUwpicm90aGVybGluZXNzL00KYnJvdGhzCmJyb3VnaGFtL1NNCmJyb3VnaHQKYnJvdWhhaGEvU00KYnJvdy9NUwpicm93YmVhdC9TTkcKYnJvd24vU01EUlBURwpicm93bmZpZWxkCmJyb3duaWUvTVMKYnJvd25pc2gKYnJvd25uZXNzL00KYnJvd25vdXQvU00KYnJvd25zdG9uZS9NUwpicm93c2UvRFJTTVpHCmJyb3dzZXIvTQpicnIKYnJ1aW4vU00KYnJ1aXNlL0RSU01aRwpicnVpc2VyL00KYnJ1aXNpbmcvTQpicnVpdC9TREcKYnJ1bmNoL01EU0cKYnJ1bmV0L1NNCmJydW5ldHRlL01TCmJydW50L00KYnJ1c2gvTURTRwpicnVzaG9mZi9TTQpicnVzaHN0cm9rZS9TCmJydXNod29vZC9NCmJydXNod29yay9NCmJydXNxdWUvUlBZVApicnVzcXVlbmVzcy9NCmJydXRhbC9ZCmJydXRhbGl0eS9TTQpicnV0YWxpemF0aW9uL00KYnJ1dGFsaXplL0dEUwpicnV0ZS9TTQpicnV0aXNoL1BZCmJydXRpc2huZXNzL00KYnUKYnViL1NNCmJ1YmJsZS9EU01HCmJ1YmJsZWd1bS9NCmJ1YmJseS9STVQKYnViby9NCmJ1Ym9lcwpidWNjYW5lZXIvU0dNRApidWNrL01ER1MKYnVja2Fyb28vU00KYnVja2JvYXJkL01TCmJ1Y2tldC9TR01ECmJ1Y2tldGZ1bC9NUwpidWNrZXllL01TCmJ1Y2tsZSdzCmJ1Y2tsZS9VRFNHCmJ1Y2tsZXIvTVMKYnVja3JhbS9NCmJ1Y2tzYXcvTVMKYnVja3Nob3QvTQpidWNrc2tpbi9NUwpidWNrdGVldGgKYnVja3Rvb3RoL01ECmJ1Y2t3aGVhdC9NCmJ1Y2t5YmFsbC9TTQpidWNvbGljL01TCmJ1Y29saWNhbGx5CmJ1ZC9TTQpidWRkZWQKYnVkZGluZy9TCmJ1ZGR5L1NNCmJ1ZGdlL0RTRwpidWRnZXJpZ2FyL01TCmJ1ZGdldC9TR01ECmJ1ZGdldGFyeQpidWRnaWUvU00KYnVmZi9BTURHUwpidWZmYWxvL01ERwpidWZmYWxvZXMKYnVmZmVyL1NNREcKYnVmZmV0L1NNREdKCmJ1ZmZvb24vU00KYnVmZm9vbmVyeS9NCmJ1ZmZvb25pc2gKYnVnJ3MKYnVnL0NTCmJ1Z2Fib28vU00KYnVnYmVhci9TTQpidWdnZWQvQwpidWdnZXIvU01ERwpidWdnZXJ5CmJ1Z2dpbmcvQwpidWdneS9SU01UCmJ1Z2xlL0RSU01aRwpidWdsZXIvTQpidWlsZC9TTVJaR0oKYnVpbGRlci9NCmJ1aWxkaW5nL00KYnVpbGR1cC9TTQpidWlsdC9BSQpidWlsdGluCmJ1bGIvTVMKYnVsYm91cwpidWxnZS9EU01HCmJ1bGd5L1JUCmJ1bGltYXJleGlhL00KYnVsaW1pYS9NCmJ1bGltaWMvU00KYnVsay9NREdTCmJ1bGtoZWFkL01TCmJ1bGtpbmVzcy9NCmJ1bGt5L1JUUApidWxsL01ER1MKYnVsbGRvZy9TTQpidWxsZG9nZ2VkCmJ1bGxkb2dnaW5nCmJ1bGxkb3plL1pHRFJTCmJ1bGxkb3plci9NCmJ1bGxldC9TTQpidWxsZXRpbi9NREdTCmJ1bGxldHByb29mL1NERwpidWxsZmlnaHQvU01SWkcKYnVsbGZpZ2h0ZXIvTQpidWxsZmlnaHRpbmcvTQpidWxsZmluY2gvTVMKYnVsbGZyb2cvTVMKYnVsbGhlYWQvTURTCmJ1bGxoZWFkZWQvUFkKYnVsbGhlYWRlZG5lc3MvTQpidWxsaG9ybi9NUwpidWxsaW9uL00KYnVsbGlzaC9ZUApidWxsaXNobmVzcy9NCmJ1bGxvY2svU00KYnVsbHBlbi9TTQpidWxscmluZy9NUwpidWxsc2hpdC9NUyEKYnVsbHNoaXR0ZWQvIQpidWxsc2hpdHRlci9TTSEKYnVsbHNoaXR0aW5nLyEKYnVsbHdoaXAvUwpidWxseS9EU01HCmJ1bHJ1c2gvTVMKYnVsd2Fyay9NUwpidW0vU00KYnVtYmFnL1MKYnVtYmxlL0RSU1pHCmJ1bWJsZWJlZS9TTQpidW1ibGVyL00KYnVtZgpidW1tZWQKYnVtbWVyL1NNCmJ1bW1lc3QKYnVtbWluZwpidW1wL01EUlpHUwpidW1wZXIvTQpidW1waApidW1waW5lc3MvTQpidW1wa2luL01TCmJ1bXB0aW91cy9QWQpidW1wdGlvdXNuZXNzL00KYnVtcHkvUFJUCmJ1bi9TTQpidW5jaC9NRFNHCmJ1bmNoeS9SVApidW5jby9TTURHCmJ1bmRsZS9EU01HCmJ1bmcvTURHUwpidW5nYWxvdy9NUwpidW5nZWUvU00KYnVuZ2hvbGUvTVMKYnVuZ2xlL0RSU01aRwpidW5nbGVyL00KYnVuaW9uL1NNCmJ1bmsncwpidW5rL0NER1MKYnVua2VyL1NNCmJ1bmtob3VzZS9TTQpidW5rdW0vTQpidW5ueS9TTQpidW50L01ER1NKCmJ1bnRpbmcvTQpidW95L01ER1MKYnVveWFuY3kvTQpidW95YW50L1kKYnVyL1NNWQpidXJibGUvRFNNRwpidXJicy9NCmJ1cmRlbidzCmJ1cmRlbi9VU0dECmJ1cmRlbnNvbWUKYnVyZG9jay9NCmJ1cmVhdS9TTQpidXJlYXVjcmFjeS9TTQpidXJlYXVjcmF0L01TCmJ1cmVhdWNyYXRpYwpidXJlYXVjcmF0aWNhbGx5CmJ1cmVhdWNyYXRpemF0aW9uL00KYnVyZWF1Y3JhdGl6ZS9HRFMKYnVyZy9NUlpTCmJ1cmdlb24vRFNHCmJ1cmdlci9NCmJ1cmdoL01SWgpidXJnaGVyL00KYnVyZ2hzCmJ1cmdsYXIvTVMKYnVyZ2xhcml6ZS9HRFMKYnVyZ2xhcnByb29mCmJ1cmdsYXJ5L1NNCmJ1cmdsZS9EU0cKYnVyZ29tYXN0ZXIvU00KYnVyZ3VuZHkvU00KYnVyaWFsL0FTTQpidXJrYS9TTQpidXJsL01EUwpidXJsYXAvTQpidXJsZXNxdWUvTUdEUwpidXJsaW5lc3MvTQpidXJseS9SUFQKYnVybi9NRFJaR1NCCmJ1cm5hYmxlL1NNCmJ1cm5lci9NCmJ1cm5pc2gvWkdNRFJTCmJ1cm5pc2hlci9NCmJ1cm5vb3NlL01TCmJ1cm5vdXQvTVMKYnVybnQKYnVycC9NREdTCmJ1cnFhL1NNCmJ1cnIvTURHUwpidXJyaXRvL01TCmJ1cnJvL1NNCmJ1cnJvdy9TTURSWkcKYnVycm93ZXIvTQpidXJzYS9NCmJ1cnNhZQpidXJzYXIvU00KYnVyc2FyeS9TTQpidXJzaXRpcy9NCmJ1cnN0L1NNRwpidXJ5L0FEU0cKYnVzL0FNUwpidXNib3kvU00KYnVzYnkvU00KYnVzZWQKYnVzZ2lybC9NUwpidXNoL01EU0dKCmJ1c2hlbC9TR01ECmJ1c2hpbmVzcy9NCmJ1c2hpbmcvTQpidXNobWFuL00KYnVzaG1hc3Rlci9TTQpidXNobWVuCmJ1c2h3aGFjay9EUlNaRwpidXNod2hhY2tlci9NCmJ1c2h5L1JQVApidXNpbHkKYnVzaW5lc3MvTVMKYnVzaW5lc3NsaWtlCmJ1c2luZXNzbWFuL00KYnVzaW5lc3NtZW4KYnVzaW5lc3NwZXJzb24vU00KYnVzaW5lc3N3b21hbi9NCmJ1c2luZXNzd29tZW4KYnVzaW5nL00KYnVzay9EUlpHUwpidXNraW4vU00KYnVzbG9hZC9TCmJ1c3MvTQpidXN0L01EUlpHUwpidXN0ZXIvTQpidXN0bGUvRFNNRwpidXN0eS9SWlQKYnVzeS9EUlNUR1AKYnVzeWJvZHkvU00KYnVzeW5lc3MvTQpidXN5d29yay9NCmJ1dC9BQ1MKYnV0YW5lL00KYnV0Y2gvTVJTWgpidXRjaGVyL01ERwpidXRjaGVyeS9TTQpidXRsZXIvU00KYnV0dC9NRFJaR1MKYnV0dGUvU00KYnV0dGVkL0EKYnV0dGVyL01ERwpidXR0ZXJiYWxsL01TCmJ1dHRlcmNyZWFtCmJ1dHRlcmN1cC9TTQpidXR0ZXJmYXQvTQpidXR0ZXJmaW5nZXJlZApidXR0ZXJmaW5nZXJzL00KYnV0dGVyZmx5L0dEU00KYnV0dGVybWlsay9NCmJ1dHRlcm51dC9TTQpidXR0ZXJzY290Y2gvTQpidXR0ZXJ5L1RSU00KYnV0dGluZy9BCmJ1dHRvY2svU00KYnV0dG9uJ3MKYnV0dG9uL1VTREcKYnV0dG9uaG9sZS9EU01HCmJ1dHRvbndvb2QvTVMKYnV0dHJlc3MvTURTRwpidXR0eS9TCmJ1eG9tCmJ1eS9aR1NNUgpidXliYWNrL1NNCmJ1eWVyL00KYnV5b3V0L1NNCmJ1enovTURSU1pHCmJ1enphcmQvTVMKYnV6emVyL00KYnV6emtpbGwvU00KYnV6endvcmQvU00KYngKYnhzCmJ5L00KYnllL1NNCmJ5Z29uZS9TTQpieWxhdy9TTQpieWxpbmUvU00KYnlwYXNzL0dNRFMKYnlwYXRoL00KYnlwYXRocwpieXBsYXkvTQpieXByb2R1Y3QvTVMKYnlyZS9TCmJ5cm9hZC9TTQpieXN0YW5kZXIvTVMKYnl0ZS9NUwpieXdheS9TTQpieXdvcmQvU00KYnl6YW50aW5lCmMvSUVTCmNhCmNhYi9TTVJaCmNhYmFsL01TCmNhYmFsYSdzCmNhYmFsbGVyby9NUwpjYWJhbmEvU00KY2FiYXJldC9TTQpjYWJiYWdlL01TCmNhYmJlZApjYWJiaW5nCmNhYmJ5L1NNCmNhYmRyaXZlci9TTQpjYWJpbi9NUwpjYWJpbmV0L1NNCmNhYmluZXRtYWtlci9NUwpjYWJpbmV0bWFraW5nL00KY2FiaW5ldHJ5L00KY2FiaW5ldHdvcmsvTQpjYWJsZS9NR0RTCmNhYmxlY2FzdC9HTVMKY2FibGVncmFtL01TCmNhYm9jaG9uL1NNCmNhYm9vZGxlL00KY2Fib29zZS9TTQpjYWJyaW9sZXQvU00KY2Fic3RhbmQvU00KY2FjYW8vTVMKY2FjaGUvTUdEUwpjYWNoZXBvdC9TTQpjYWNoZXQvTVMKY2Fja2xlL01aR0RSUwpjYWNrbGVyL00KY2Fjb3Bob25vdXMKY2Fjb3Bob255L1NNCmNhY3RpCmNhY3R1cy9NCmNhZC9TTQpjYWRhdmVyL1NNCmNhZGF2ZXJvdXMKY2FkZGllL01EUwpjYWRkaXNoL1lQCmNhZGRpc2huZXNzL00KY2FkZHlpbmcKY2FkZW5jZS9EU00KY2FkZW56YS9TTQpjYWRldC9NUwpjYWRnZS9aR0RSUwpjYWRnZXIvTQpjYWRtaXVtL00KY2FkcmUvTVMKY2FkdWNlaQpjYWR1Y2V1cy9NCmNhZXN1cmEvU00KY2FmZS9TTQpjYWZldGVyaWEvTVMKY2FmZXRpZXJlL1MKY2FmZi9DUwpjYWZmZWluYXRlZApjYWZmZWluZS9NCmNhZnRhbi9NUwpjYWdlL0RTTUcKY2FnZXkKY2FnaWVyCmNhZ2llc3QKY2FnaWx5CmNhZ2luZXNzL00KY2Fnb3VsZS9TCmNhaG9vdC9NUwpjYWltYW4vTVMKY2Fpcm4vTVMKY2Fpc3Nvbi9TTQpjYWl0aWZmL1NNCmNham9sZS9aR0xEUlMKY2Fqb2xlbWVudC9NCmNham9sZXIvTQpjYWpvbGVyeS9NCmNha2UvRFNNRwpjYWtld2Fsay9TTQpjYWwKY2FsYWJhc2gvTVMKY2FsYWJvb3NlL1NNCmNhbGFtYXJpL1NNCmNhbGFtaW5lL00KY2FsYW1pdG91cy9ZCmNhbGFtaXR5L1NNCmNhbGNhcmVvdXMKY2FsY2lmZXJvdXMKY2FsY2lmaWNhdGlvbi9NCmNhbGNpZnkvR05EUwpjYWxjaW1pbmUvRFNNRwpjYWxjaW5lL0RTRwpjYWxjaXRlL00KY2FsY2l1bS9NCmNhbGN1bGFibGUvSQpjYWxjdWxhdGUvQUdOVkRTWApjYWxjdWxhdGVkL1kKY2FsY3VsYXRpbmcvWQpjYWxjdWxhdGlvbi9BTQpjYWxjdWxhdG9yL1NNCmNhbGN1bGkKY2FsY3VsdXMvTQpjYWxkZXJhL1NNCmNhbGVuZGFyL01ER1MKY2FsZW5kZXIncwpjYWxmL00KY2FsZnNraW4vTQpjYWxpYmVyL1NNCmNhbGlicmF0ZS9HTkRTWApjYWxpYnJhdGlvbi9NCmNhbGlicmF0b3IvU00KY2FsaWNvL00KY2FsaWNvZXMKY2FsaWZvcm5pdW0vTQpjYWxpcGVyL1NHTUQKY2FsaXBoL00KY2FsaXBoYXRlL01TCmNhbGlwaHMKY2FsaXN0aGVuaWMvUwpjYWxpc3RoZW5pY3MvTQpjYWxrL1NHTUQKY2FsbC9BU0dNRApjYWxsYS9NUwpjYWxsYWJsZQpjYWxsYmFjay9NUwpjYWxsZWQvVQpjYWxsZXIvTVMKY2FsbGlncmFwaGVyL1NNCmNhbGxpZ3JhcGhpYwpjYWxsaWdyYXBoaXN0L01TCmNhbGxpZ3JhcGh5L00KY2FsbGluZy9TTQpjYWxsaW9wZS9NUwpjYWxsb3NpdHkvU00KY2FsbG91cy9QR0RTWQpjYWxsb3VzbmVzcy9NCmNhbGxvdy9SUFQKY2FsbG93bmVzcy9NCmNhbGx1cy9NRFNHCmNhbG0vUFNUR01EUlkKY2FsbW5lc3MvTQpjYWxvcmljCmNhbG9yaWUvTVMKY2Fsb3JpZmljCmNhbHVtZXQvTVMKY2FsdW1uaWF0ZS9HTkRTCmNhbHVtbmlhdGlvbi9NCmNhbHVtbmlhdG9yL01TCmNhbHVtbmlvdXMKY2FsdW1ueS9TTQpjYWx2ZS9HRFMKY2FseXBzby9NUwpjYWx5eC9NUwpjYW0vU00KY2FtYXJhZGVyaWUvTQpjYW1iZXIvTURTRwpjYW1iaWFsCmNhbWJpdW0vU00KY2FtYnJpYy9NCmNhbWNvcmRlci9TTQpjYW1lCmNhbWVsL01TCmNhbWVsaGFpcgpjYW1lbGxpYS9NUwpjYW1lby9NUwpjYW1lcmEvTVMKY2FtZXJhbWFuL00KY2FtZXJhbWVuCmNhbWVyYXdvbWFuL00KY2FtZXJhd29tZW4KY2FtZXJhd29yawpjYW1pa25pY2tlcnMKY2FtaXNvbGUvU00KY2Ftb3VmbGFnZS9NWkdEUlMKY2Ftb3VmbGFnZXIvTQpjYW1wJ3MKY2FtcC9DU0dECmNhbXBhaWduL1NNRFJaRwpjYW1wYWlnbmVyL00KY2FtcGFuaWxlL1NNCmNhbXBhbm9sb2dpc3QvTVMKY2FtcGFub2xvZ3kvTQpjYW1wZXIvTVMKY2FtcGZpcmUvU00KY2FtcGdyb3VuZC9TTQpjYW1waG9yL00KY2FtcGluZy9NCmNhbXBzaXRlL1NNCmNhbXB1cy9NUwpjYW1weS9UUgpjYW1zaGFmdC9TTQpjYW4ndApjYW4vU01EUlpHCmNhbmFsL01TCmNhbmFsaXphdGlvbi9NCmNhbmFsaXplL0dEUwpjYW5hcGUvTVMKY2FuYXJkL01TCmNhbmFyeS9TTQpjYW5hc3RhL00KY2FuY2FuL01TCmNhbmNlbC9EUlNaRwpjYW5jZWxlci9NCmNhbmNlbGxhdGlvbi9TTQpjYW5jZXIvTVMKY2FuY2Vyb3VzCmNhbmRlbGFicmEvU00KY2FuZGVsYWJydW0vTQpjYW5kaWQvWVAKY2FuZGlkYQpjYW5kaWRhY3kvU00KY2FuZGlkYXRlL01TCmNhbmRpZGF0dXJlL1NNCmNhbmRpZG5lc3MvTQpjYW5kbGUvTVpHRFJTCmNhbmRsZWxpZ2h0L00KY2FuZGxlbGl0CmNhbmRsZXBvd2VyL00KY2FuZGxlci9NCmNhbmRsZXN0aWNrL01TCmNhbmRsZXdpY2svU00KY2FuZG9yL00KY2FuZHkvR0RTTQpjYW5keWZsb3NzCmNhbmUvU00KY2FuZWJyYWtlL01TCmNhbmVyL00KY2FuaW5lL01TCmNhbmlzdGVyL1NNCmNhbmtlci9HTURTCmNhbmtlcm91cwpjYW5uYWJpcy9NUwpjYW5uZWQKY2FubmVsbG9uaS9NCmNhbm5lcnkvU00KY2FubmliYWwvU00KY2FubmliYWxpc20vTQpjYW5uaWJhbGlzdGljCmNhbm5pYmFsaXphdGlvbi9NCmNhbm5pYmFsaXplL0dEUwpjYW5uaWx5L1UKY2FubmluZXNzL00KY2FubmluZwpjYW5ub24vR01EUwpjYW5ub25hZGUvTUdEUwpjYW5ub25iYWxsL1NNCmNhbm5vdApjYW5ueS9VVFIKY2Fub2UvTURTCmNhbm9laW5nCmNhbm9laXN0L1NNCmNhbm9sYS9NCmNhbm9uL01TCmNhbm9uaWNhbC9ZCmNhbm9uaXphdGlvbi9TTQpjYW5vbml6ZS9EU0cKY2Fub29kbGUvRFNHCmNhbm9weS9HRFNNCmNhbnN0CmNhbnQncwpjYW50L0NaUkRHUwpjYW50YWJpbGUKY2FudGFsb3VwZS9TTQpjYW50YW5rZXJvdXMvUFkKY2FudGFua2Vyb3VzbmVzcy9NCmNhbnRhdGEvTVMKY2FudGVlbi9NUwpjYW50ZXIvQ00KY2FudGVyZWQKY2FudGVyaW5nCmNhbnRpY2xlL01TCmNhbnRpbGV2ZXIvTURHUwpjYW50by9NUwpjYW50b24vTUxTCmNhbnRvbmFsCmNhbnRvbm1lbnQvTVMKY2FudG9yL01TCmNhbnZhcy9NR0RTCmNhbnZhc2JhY2svU00KY2FudmFzcy9NRFJTWkcKY2FudmFzc2VyL00KY2FueW9uL01HUwpjYXAvU01EUkJaCmNhcGFiaWxpdGllcwpjYXBhYmlsaXR5L0lNCmNhcGFibGUvSQpjYXBhYmx5L0kKY2FwYWNpb3VzL1BZCmNhcGFjaW91c25lc3MvTQpjYXBhY2l0YW5jZS9NCmNhcGFjaXRpZXMKY2FwYWNpdG9yL1NNCmNhcGFjaXR5L0lNCmNhcGFyaXNvbi9NREdTCmNhcGUvU00KY2FwZXIvR01ECmNhcGVza2luL00KY2FwaWxsYXJpdHkvTQpjYXBpbGxhcnkvU00KY2FwaXRhbC9NU1kKY2FwaXRhbGlzbS9NCmNhcGl0YWxpc3QvU00KY2FwaXRhbGlzdGljCmNhcGl0YWxpc3RpY2FsbHkKY2FwaXRhbGl6YXRpb24vTQpjYXBpdGFsaXplL0FEU0cKY2FwaXRhdGlvbi9DU00KY2FwaXRvbC9TTQpjYXBpdHVsYXRlL0FEU1hHTgpjYXBpdHVsYXRpb24vQU0KY2FwbGV0L01TCmNhcG8vU00KY2Fwb24vTVMKY2FwcGVkL1VBCmNhcHBpbmcvVUEKY2FwcHVjY2luby9TTQpjYXByaWNlL1NNCmNhcHJpY2lvdXMvUFkKY2FwcmljaW91c25lc3MvTQpjYXBzaWN1bS9TTQpjYXBzaXplL0RTRwpjYXBzdGFuL1NNCmNhcHN0b25lL01TCmNhcHN1bGFyCmNhcHN1bGUvRFNNRwpjYXBzdWxpemUvRFNHCmNhcHQKY2FwdGFpbi9TTURHCmNhcHRhaW5jeS9TTQpjYXB0aW9uL1NNREcKY2FwdGlvdXMvWVAKY2FwdGlvdXNuZXNzL00KY2FwdGl2YXRlL0RTR04KY2FwdGl2YXRpb24vTQpjYXB0aXZhdG9yL1NNCmNhcHRpdmUvU00KY2FwdGl2aXR5L1NNCmNhcHRvci9NUwpjYXB0dXJlL0FEU01HCmNhci9TTURSWkcKY2FyYWZlL01TCmNhcmFtZWwvU00KY2FyYW1lbGl6ZS9EU0cKY2FyYXBhY2UvU00KY2FyYXQvTVMKY2FyYXZhbi9TTQpjYXJhdmFuc2FyeS9TTQpjYXJhdmVsL1NNCmNhcmF3YXkvU00KY2FyYmlkZS9TTQpjYXJiaW5lL1NNCmNhcmJvaHlkcmF0ZS9TTQpjYXJib2xpYwpjYXJib24vTVMKY2FyYm9uYWNlb3VzCmNhcmJvbmF0ZS9NR05EUwpjYXJib25hdGlvbi9NCmNhcmJvbmlmZXJvdXMKY2FyYm9uaXplL0dEUwpjYXJib3J1bmR1bS9NCmNhcmJveS9NUwpjYXJicwpjYXJidW5jbGUvU00KY2FyYnVuY3VsYXIKY2FyYnVyZXRvci9TTQpjYXJjYXNzL01TCmNhcmNpbm9nZW4vU00KY2FyY2lub2dlbmljL01TCmNhcmNpbm9nZW5pY2l0eS9NCmNhcmNpbm9tYS9NUwpjYXJkL0VTR01ECmNhcmRhbW9tL1NNCmNhcmRhbW9uL1MKY2FyZGJvYXJkL00KY2FyZGVyL01TCmNhcmRob2xkZXIvUwpjYXJkaWFjCmNhcmRpZS9TCmNhcmRpZ2FuL1NNCmNhcmRpbmFsL1NNWQpjYXJkaW8KY2FyZGlvZ3JhbS9TTQpjYXJkaW9ncmFwaC9NCmNhcmRpb2dyYXBocwpjYXJkaW9sb2dpc3QvTVMKY2FyZGlvbG9neS9NCmNhcmRpb215b3BhdGh5CmNhcmRpb3B1bG1vbmFyeQpjYXJkaW92YXNjdWxhcgpjYXJkc2hhcnAvTVJaUwpjYXJkc2hhcnBlci9NCmNhcmUvU00KY2FyZWVuL0RHUwpjYXJlZXIvTURHUwpjYXJlZXJpc20KY2FyZWVyaXN0L1NNCmNhcmVmcmVlCmNhcmVmdWwvWVAKY2FyZWZ1bGxlcgpjYXJlZnVsbGVzdApjYXJlZnVsbmVzcy9NCmNhcmVnaXZlci9TTQpjYXJlbGVzcy9QWQpjYXJlbGVzc25lc3MvTQpjYXJlci9NCmNhcmVzcy9NRFNHCmNhcmV0L01TCmNhcmV0YWtlci9NUwpjYXJld29ybgpjYXJmYXJlL00KY2FyZ28vTQpjYXJnb2VzCmNhcmhvcC9NUwpjYXJpYm91L1NNCmNhcmljYXR1cmUvTUdEUwpjYXJpY2F0dXJpc3QvU00KY2FyaWVzL00KY2FyaWxsb24vU00KY2FyaW5nL00KY2FyaW91cwpjYXJqYWNrL0pTRFJaRwpjYXJqYWNrZXIvTQpjYXJqYWNraW5nL00KY2FybG9hZC9TTQpjYXJtaW5lL1NNCmNhcm5hZ2UvTQpjYXJuYWwvWQpjYXJuYWxpdHkvTQpjYXJuYXRpb24vSU1TCmNhcm5lbGlhbi9NUwpjYXJuaXZhbC9NUwpjYXJuaXZvcmEKY2Fybml2b3JlL1NNCmNhcm5pdm9yb3VzL1BZCmNhcm5pdm9yb3VzbmVzcy9NCmNhcm55L1NNCmNhcm9iL01TCmNhcm9sL1pHTURSUwpjYXJvbGVyL00KY2Fyb20vR01EUwpjYXJvdGVuZS9NCmNhcm90aWQvU00KY2Fyb3VzYWwvU00KY2Fyb3VzZS9EUlNNWkcKY2Fyb3VzZWwvU00KY2Fyb3VzZXIvTQpjYXJwL1NaR01EUgpjYXJwYWwvTVMKY2FycGVsL01TCmNhcnBlbnRlci9NREdTCmNhcnBlbnRyeS9NCmNhcnBlci9NCmNhcnBldC9NREdTCmNhcnBldGJhZy9NUwpjYXJwZXRiYWdnZWQKY2FycGV0YmFnZ2VyL01TCmNhcnBldGJhZ2dpbmcKY2FycGV0aW5nL00KY2FycGkKY2FycG9vbC9TTURHCmNhcnBvcnQvU00KY2FycHVzL00KY2FycmVsL01TCmNhcnJpYWdlL1NNCmNhcnJpYWdld2F5L1MKY2Fycmllci9NCmNhcnJpb24vTQpjYXJyb3QvTVMKY2Fycm90eQpjYXJyeS9aR0RSU00KY2FycnlhbGwvU00KY2Fycnljb3QvUwpjYXJyeW91dApjYXJyeW92ZXIvTVMKY2Fyc2ljay9QCmNhcnNpY2tuZXNzL00KY2FydC9TWkdNRFIKY2FydGFnZS9NCmNhcnRlbC9NUwpjYXJ0ZXIvTQpjYXJ0aG9yc2UvU00KY2FydGlsYWdlL1NNCmNhcnRpbGFnaW5vdXMKY2FydGxvYWQvU00KY2FydG9ncmFwaGVyL1NNCmNhcnRvZ3JhcGhpYwpjYXJ0b2dyYXBoeS9NCmNhcnRvbi9NUwpjYXJ0b29uL1NNREcKY2FydG9vbmlzdC9NUwpjYXJ0cmlkZ2UvTVMKY2FydHdoZWVsL0dNRFMKY2FydmUvSlpHRFJTCmNhcnZlci9NCmNhcnZlcnkvUwpjYXJ2aW5nL00KY2FyeWF0aWQvTVMKY2FzYWJhL01TCmNhc2NhZGUvRFNNRwpjYXNjYXJhL1NNCmNhc2UvTERTSk1HCmNhc2Vib29rL1MKY2FzZWQvVQpjYXNlaGFyZGVuL0RHUwpjYXNlaW4vTQpjYXNlbG9hZC9NUwpjYXNlbWVudC9NUwpjYXNld29yay9aTVIKY2FzZXdvcmtlci9NCmNhc2gvR01EUwpjYXNoYmFjay9NCmNhc2hib29rL01TCmNhc2hldy9NUwpjYXNoaWVyL0dTTUQKY2FzaGxlc3MKY2FzaG1lcmUvTQpjYXNpbmcvTQpjYXNpbm8vTVMKY2Fzay9TTQpjYXNrZXQvTVMKY2Fzc2F2YS9TTQpjYXNzZXJvbGUvRFNNRwpjYXNzZXR0ZS9NUwpjYXNzaWEvTVMKY2Fzc29jay9TTQpjYXNzb3dhcnkvU00KY2FzdC9BU0dNCmNhc3RhbmV0L01TCmNhc3Rhd2F5L01TCmNhc3RlL0pNWlJTCmNhc3RlbGxhdGVkCmNhc3Rlci9NCmNhc3RpZ2F0ZS9EU0dOCmNhc3RpZ2F0aW9uL00KY2FzdGlnYXRvci9TTQpjYXN0aW5nL0FNCmNhc3RsZS9NR0RTCmNhc3RvZmYvU00KY2FzdG9yL01TCmNhc3RyYXRlL0dOWERTCmNhc3RyYXRpb24vTQpjYXN1YWwvUE1ZUwpjYXN1YWxuZXNzL00KY2FzdWFsdHkvU00KY2FzdWlzdC9TTQpjYXN1aXN0aWMKY2FzdWlzdHJ5L00KY2F0L1NNCmNhdGFjbHlzbS9NUwpjYXRhY2x5c21hbApjYXRhY2x5c21pYwpjYXRhY29tYi9TTQpjYXRhZmFscXVlL01TCmNhdGFsZXBzeS9NCmNhdGFsZXB0aWMvTVMKY2F0YWxvZy9aR1NNRFIKY2F0YWxvZ2VyL00KY2F0YWxwYS9TTQpjYXRhbHlzZXMKY2F0YWx5c2lzL00KY2F0YWx5c3QvTVMKY2F0YWx5dGljL00KY2F0YWx5emUvR0RTCmNhdGFtYXJhbi9TTQpjYXRhcHVsdC9HTURTCmNhdGFyYWN0L01TCmNhdGFycmgvTQpjYXRhc3Ryb3BoZS9NUwpjYXRhc3Ryb3BoaWMKY2F0YXN0cm9waGljYWxseQpjYXRhdG9uaWEvTQpjYXRhdG9uaWMvU00KY2F0YmlyZC9TTQpjYXRib2F0L1NNCmNhdGNhbGwvR1NNRApjYXRjaC9aR0pMTVJTCmNhdGNoYWxsL01TCmNhdGNoZXIvTQpjYXRjaG1lbnQvTVMKY2F0Y2hwZW5ueQpjYXRjaHBocmFzZS9TTQpjYXRjaHdvcmQvTVMKY2F0Y2h5L1JUCmNhdGVjaGlzbS9TTQpjYXRlY2hpc3QvU00KY2F0ZWNoaXplL0RTRwpjYXRlZ29yaWNhbC9ZCmNhdGVnb3JpemF0aW9uL01TCmNhdGVnb3JpemUvR0RTCmNhdGVnb3J5L1NNCmNhdGVyL1pHSkRSUwpjYXRlcmNvcm5lcgpjYXRlcmVyL00KY2F0ZXJwaWxsYXIvTVMKY2F0ZXJ3YXVsL1NNREcKY2F0ZmlzaC9NUwpjYXRndXQvTQpjYXRoYXJzZXMKY2F0aGFyc2lzL00KY2F0aGFydGljL1NNCmNhdGhlZHJhbC9TTQpjYXRoZXRlci9TTQpjYXRoZXRlcml6ZS9EU0cKY2F0aG9kZS9TTQpjYXRob2RpYwpjYXRob2xpYwpjYXRob2xpY2l0eS9NCmNhdGlvbi9NUwpjYXRraW4vTVMKY2F0bGlrZQpjYXRuYXAvTVMKY2F0bmFwcGVkCmNhdG5hcHBpbmcKY2F0bmlwL00KY2F0c3VpdC9TCmNhdHRhaWwvU00KY2F0dGVkCmNhdHRlcnkvUwpjYXR0aWx5CmNhdHRpbmVzcy9NCmNhdHRpbmcKY2F0dGxlL00KY2F0dGxlbWFuL00KY2F0dGxlbWVuCmNhdHR5L1RQUgpjYXR3YWxrL1NNCmNhdWN1cy9NRFNHCmNhdWRhbC9ZCmNhdWdodC9VCmNhdWxkcm9uL01TCmNhdWxpZmxvd2VyL1NNCmNhdWxrL1pHTURSUwpjYXVsa2VyL00KY2F1c2FsL1kKY2F1c2FsaXR5L1NNCmNhdXNhdGlvbi9NCmNhdXNhdGl2ZQpjYXVzZS9NWkdEUlMKY2F1c2VsZXNzCmNhdXNlci9NCmNhdXNlcmllL1NNCmNhdXNld2F5L1NNCmNhdXN0aWMvU00KY2F1c3RpY2FsbHkKY2F1c3RpY2l0eS9NCmNhdXRlcml6YXRpb24vTQpjYXV0ZXJpemUvR0RTCmNhdXRpb24vU01ERwpjYXV0aW9uYXJ5CmNhdXRpb3VzL0lZCmNhdXRpb3VzbmVzcy9NCmNhdmFsY2FkZS9NUwpjYXZhbGllci9TTVkKY2F2YWxyeS9TTQpjYXZhbHJ5bWFuL00KY2F2YWxyeW1lbgpjYXZlL0RSU01aRwpjYXZlYXQvTVMKY2F2ZW1hbi9NCmNhdmVtZW4KY2F2ZXJuL01TCmNhdmVybm91cy9ZCmNhdmlhci9NCmNhdmlsL1pHSk1EUlMKY2F2aWxlci9NCmNhdmluZy9NCmNhdml0eS9GU00KY2F2b3J0L0RHUwpjYXcvU01ERwpjYXkvQ1NNCmNheWVubmUvTQpjYXl1c2UvTVMKY2MKY2Vhc2UvQ01HRFMKY2Vhc2VmaXJlL01TCmNlYXNlbGVzcy9ZUApjZWFzZWxlc3NuZXNzL00KY2VjYQpjZWNhbApjZWN1bS9NCmNlZGFyL01TCmNlZGUvRkFHU0QKY2VkZXIvTVMKY2VkaWxsYS9TTQpjZWlsaWRoCmNlaWxpZGhzCmNlaWxpbmcvTVMKY2VsYW5kaW5lL00KY2VsZWIvUwpjZWxlYnJhbnQvU00KY2VsZWJyYXRlL0RTR05YCmNlbGVicmF0aW9uL00KY2VsZWJyYXRvci9TTQpjZWxlYnJhdG9yeQpjZWxlYnJpdHkvU00KY2VsZXJpYWMKY2VsZXJpdHkvTQpjZWxlcnkvTQpjZWxlc3RhL01TCmNlbGVzdGlhbC9ZCmNlbGliYWN5L00KY2VsaWJhdGUvTVMKY2VsbC9TTUQKY2VsbGFyL01TCmNlbGxpc3QvU00KY2VsbG1hdGUvU00KY2VsbG8vTVMKY2VsbG9waGFuZS9NCmNlbGxwaG9uZS9NUwpjZWxsdWxhci9TTQpjZWxsdWxpdGUvTQpjZWxsdWxpdGlzCmNlbGx1bG9pZC9NCmNlbGx1bG9zZS9NCmNlbWVudC9NRFJaR1MKY2VtZW50ZXIvTQpjZW1lbnR1bS9NCmNlbWV0ZXJ5L1NNCmNlbm9iaXRlL01TCmNlbm9iaXRpYwpjZW5vdGFwaC9NCmNlbm90YXBocwpjZW5zZXIvTVMKY2Vuc29yL01ER1MKY2Vuc29yZWQvVQpjZW5zb3JpYWwKY2Vuc29yaW91cy9QWQpjZW5zb3Jpb3VzbmVzcy9NCmNlbnNvcnNoaXAvTQpjZW5zdXJlL0JEUlNNWkcKY2Vuc3VyZXIvTQpjZW5zdXMvTURTRwpjZW50L1NaTVIKY2VudGF1ci9TTQpjZW50YXZvL1NNCmNlbnRlbmFyaWFuL01TCmNlbnRlbmFyeS9TTQpjZW50ZW5uaWFsL01ZUwpjZW50ZXIvTURHCmNlbnRlcmJvYXJkL1NNCmNlbnRlcmZvbGQvTVMKY2VudGVycGllY2UvTVMKY2VudGlncmFkZQpjZW50aWdyYW0vU00KY2VudGlsaXRlci9NUwpjZW50aW1lL1NNCmNlbnRpbWV0ZXIvTVMKY2VudGlwZWRlL1NNCmNlbnRyYWwvU01ZCmNlbnRyYWxpc20KY2VudHJhbGlzdApjZW50cmFsaXR5L00KY2VudHJhbGl6YXRpb24vQ00KY2VudHJhbGl6ZS9DR0RTCmNlbnRyYWxpemVyL01TCmNlbnRyaWZ1Z2FsL1kKY2VudHJpZnVnZS9EU01HCmNlbnRyaXBldGFsL1kKY2VudHJpc20vTQpjZW50cmlzdC9NUwpjZW50dXJpb24vU00KY2VudHVyeS9TTQpjZXBoYWxpYwpjZXJhbWljL1NNCmNlcmFtaWNpc3QvU00KY2VyYW1pY3MvTQpjZXJhbWlzdC9NUwpjZXJlYWwvTVMKY2VyZWJlbGxhcgpjZXJlYmVsbHVtL1NNCmNlcmVicmEKY2VyZWJyYWwKY2VyZWJyYXRlL0dORFMKY2VyZWJyYXRpb24vTQpjZXJlYnJvdmFzY3VsYXIKY2VyZWJydW0vTVMKY2VyZW1lbnQvTVMKY2VyZW1vbmlhbC9TTVkKY2VyZW1vbmlvdXMvVVkKY2VyZW1vbmlvdXNuZXNzL00KY2VyZW1vbnkvU00KY2VyaXNlL00KY2VyaXVtL00KY2VybWV0L00KY2VydC9TCmNlcnRhaW4vVVkKY2VydGFpbnR5L1VTTQpjZXJ0aWZpYWJsZQpjZXJ0aWZpYWJseQpjZXJ0aWZpY2F0ZS9NR05YRFMKY2VydGlmaWNhdGlvbi9NCmNlcnRpZnkvRFNHCmNlcnRpdHVkZS9JTQpjZXJ0aXR1ZGVzCmNlcnVsZWFuL00KY2VydmljYWwKY2VydmljZXMKY2Vydml4L00KY2VzYXJlYW4vTVMKY2VzaXVtL00KY2Vzc2F0aW9uL01TCmNlc3Npb24vS0FGU00KY2Vzc3BpdC9TCmNlc3Nwb29sL01TCmNldGFjZWFuL01TCmNmCmNnCmNoL0lGVlQKY2hhZC9TCmNoYWZlL0dEUwpjaGFmZi9HTURTCmNoYWZmaW5jaC9NUwpjaGFncmluL0dTTUQKY2hhaW4ncwpjaGFpbi9VR0RTCmNoYWluc2F3L01ER1MKY2hhaXIvR01EUwpjaGFpcmxpZnQvTVMKY2hhaXJtYW4vTQpjaGFpcm1hbnNoaXAvU00KY2hhaXJtZW4KY2hhaXJwZXJzb24vU00KY2hhaXJ3b21hbi9NCmNoYWlyd29tZW4KY2hhaXNlL01TCmNoYWxjZWRvbnkvTQpjaGFsZXQvTVMKY2hhbGljZS9TTQpjaGFsay9HTURTCmNoYWxrYm9hcmQvU00KY2hhbGtpbmVzcy9NCmNoYWxreS9QUlQKY2hhbGxlbmdlL0RSU01aRwpjaGFsbGVuZ2VkL1UKY2hhbGxlbmdlci9NCmNoYWxsaXMvTQpjaGFtYmVyL1NNRApjaGFtYmVybGFpbi9NUwpjaGFtYmVybWFpZC9NUwpjaGFtYnJheS9NCmNoYW1lbGVvbi9TTQpjaGFtb2lzL00KY2hhbW9taWxlL01TCmNoYW1wL1pHTURTCmNoYW1wYWduZS9NUwpjaGFtcGlvbi9HTURTCmNoYW1waW9uc2hpcC9NUwpjaGFuY2UvTUdEUwpjaGFuY2VsL1NNCmNoYW5jZWxsZXJ5L1NNCmNoYW5jZWxsb3IvTVMKY2hhbmNlbGxvcnNoaXAvTQpjaGFuY2VyeS9TTQpjaGFuY2luZXNzL00KY2hhbmNyZS9TTQpjaGFuY3kvUFJUCmNoYW5kZWxpZXIvU00KY2hhbmRsZXIvTVMKY2hhbmdlL01aR0RSUwpjaGFuZ2VhYmlsaXR5L00KY2hhbmdlYWJsZS9QCmNoYW5nZWFibGVuZXNzL00KY2hhbmdlYWJseQpjaGFuZ2VkL1UKY2hhbmdlbGVzcy9ZCmNoYW5nZWxpbmcvU00KY2hhbmdlb3Zlci9TTQpjaGFuZ2VyL00KY2hhbmdpbmcvVQpjaGFubmVsL0dTTUQKY2hhbm5lbGl6YXRpb24vTQpjaGFubmVsaXplL0RTRwpjaGFuc29uL1NNCmNoYW50L1pHTURSUwpjaGFudGVyL00KY2hhbnRldXNlL01TCmNoYW50ZXkvU00KY2hhbnRpY2xlZXIvTVMKY2hhb3MvTQpjaGFvdGljCmNoYW90aWNhbGx5CmNoYXAvU00KY2hhcGFycmFsL1NNCmNoYXBhdGkvUwpjaGFwYXR0aS9TCmNoYXBib29rL01TCmNoYXBlYXUvU00KY2hhcGVsL01TCmNoYXBlcm9uL01ER1MKY2hhcGVyb25hZ2UvTQpjaGFwZXJvbmVkL1UKY2hhcGxhaW4vTVMKY2hhcGxhaW5jeS9TTQpjaGFwbGV0L1NNCmNoYXBwZWQKY2hhcHBpbmcKY2hhcHB5L1MKY2hhcHRlci9TTQpjaGFyL1NNCmNoYXJhYmFuYy9NUwpjaGFyYWN0ZXIvTVMKY2hhcmFjdGVyZnVsCmNoYXJhY3RlcmlzdGljL1NNCmNoYXJhY3RlcmlzdGljYWxseS9VCmNoYXJhY3Rlcml6YXRpb24vTVMKY2hhcmFjdGVyaXplL0RTRwpjaGFyYWN0ZXJsZXNzCmNoYXJhZGUvU00KY2hhcmJyb2lsL0dEUwpjaGFyY29hbC9NUwpjaGFyZC9NCmNoYXJkb25uYXkvU00KY2hhcmdlL0FFU0RHTQpjaGFyZ2VhYmxlL0EKY2hhcmdlZC9VCmNoYXJnZXIvU00KY2hhcmlseQpjaGFyaW5lc3MvTQpjaGFyaW90L1NNCmNoYXJpb3RlZXIvTVMKY2hhcmlzbWEvTQpjaGFyaXNtYXRpYy9NUwpjaGFyaXRhYmxlL1AKY2hhcml0YWJsZW5lc3MvTQpjaGFyaXRhYmx5L1UKY2hhcml0eS9TTQpjaGFybGFkeS9TCmNoYXJsYXRhbi9TTQpjaGFybGF0YW5pc20vTQpjaGFybGF0YW5yeS9NCmNoYXJsaWUvUwpjaGFybS9aR01EUlMKY2hhcm1lci9NCmNoYXJtaW5nL1kKY2hhcm1sZXNzCmNoYXJyZWQKY2hhcnJpbmcKY2hhcnQvR01EUwpjaGFydGVkL1UKY2hhcnRlcidzCmNoYXJ0ZXIvQVNHRApjaGFydGVyZXIvTVMKY2hhcnRyZXVzZS9NCmNoYXJ3b21hbi9NCmNoYXJ3b21lbgpjaGFyeS9UUlAKY2hhc2UvTVpHRFJTCmNoYXNlci9NCmNoYXNtL01TCmNoYXNzaXMvTQpjaGFzdGUvUFlUUgpjaGFzdGVuL0RHUwpjaGFzdGVuZXNzL00KY2hhc3Rpc2UvRFJTWkdMCmNoYXN0aXNlbWVudC9TTQpjaGFzdGlzZXIvTQpjaGFzdGl0eS9NCmNoYXN1YmxlL1NNCmNoYXQvU00KY2hhdGVhdS9TTQpjaGF0ZWF1eApjaGF0ZWxhaW5lL1NNCmNoYXRsaW5lL1MKY2hhdHJvb20vTQpjaGF0dGVkCmNoYXR0ZWwvTVMKY2hhdHRlci9NRFJaR1MKY2hhdHRlcmJveC9NUwpjaGF0dGVyZXIvTQpjaGF0dGlseQpjaGF0dGluZXNzL00KY2hhdHRpbmcKY2hhdHR5L1RQUgpjaGF1ZmZldXIvR01EUwpjaGF1dmluaXNtL00KY2hhdXZpbmlzdC9TTQpjaGF1dmluaXN0aWMKY2hhdXZpbmlzdGljYWxseQpjaGVhcC9QWFROUlkKY2hlYXBlbi9ERwpjaGVhcG5lc3MvTQpjaGVhcG8KY2hlYXBza2F0ZS9NUwpjaGVhdC9aR01EUlMKY2hlYXRlci9NCmNoZWNrL0FHTURTCmNoZWNrYm9vay9TTQpjaGVja2JveApjaGVja2VkL1UKY2hlY2tlci9NREdTCmNoZWNrZXJib2FyZC9TTQpjaGVja2Vycy9NCmNoZWNrbGlzdC9NUwpjaGVja21hdGUvTUdEUwpjaGVja29mZi9TTQpjaGVja291dC9TTQpjaGVja3BvaW50L1NNCmNoZWNrcm9vbS9NUwpjaGVja3N1bQpjaGVja3VwL01TCmNoZWRkYXIvTQpjaGVlay9HTURTCmNoZWVrYm9uZS9TTQpjaGVla2lseQpjaGVla2luZXNzL00KY2hlZWt5L1RQUgpjaGVlcC9HTURTCmNoZWVyL1pHTURSUwpjaGVlcmVyL00KY2hlZXJmdWwvWVAKY2hlZXJmdWxsZXIKY2hlZXJmdWxsZXN0CmNoZWVyZnVsbmVzcy9NCmNoZWVyaWx5CmNoZWVyaW5lc3MvTQpjaGVlcmlvL01TCmNoZWVybGVhZGVyL1NNCmNoZWVybGVzcy9QWQpjaGVlcmxlc3NuZXNzL00KY2hlZXJ5L1RQUgpjaGVlc2UvTUdEUwpjaGVlc2Vib2FyZC9TCmNoZWVzZWJ1cmdlci9TTQpjaGVlc2VjYWtlL1NNCmNoZWVzZWNsb3RoL00KY2hlZXNlcGFyaW5nL00KY2hlZXNpbmVzcy9NCmNoZWVzeS9UUFIKY2hlZXRhaC9NCmNoZWV0YWhzCmNoZWYvU00KY2hlbQpjaGVtaWNhbC9TTVkKY2hlbWlzZS9NUwpjaGVtaXN0L01TCmNoZW1pc3RyeS9NCmNoZW1vL00KY2hlbW90aGVyYXBldXRpYwpjaGVtb3RoZXJhcHkvTQpjaGVtdXJneS9NCmNoZW5pbGxlL00KY2hlcmlzaC9EU0cKY2hlcm9vdC9NUwpjaGVycnkvU00KY2hlcnQvTQpjaGVydWIvTVMKY2hlcnViaWMKY2hlcnViaW0KY2hlcnZpbC9NCmNoZXNzL00KY2hlc3Nib2FyZC9NUwpjaGVzc21hbi9NCmNoZXNzbWVuCmNoZXN0L01EUwpjaGVzdGVyZmllbGQvU00KY2hlc3RmdWwvU00KY2hlc3RudXQvU00KY2hlc3R5L1RSCmNoZXZhbGllci9TTQpjaGV2aW90L00KY2hldnJvbi9NUwpjaGV3L1NaR01EUgpjaGV3ZXIvTQpjaGV3aW5lc3MvTQpjaGV3eS9QVFIKY2hnCmNoZ2UKY2hpL1NNCmNoaWFyb3NjdXJvL00KY2hpYy9QVE1SCmNoaWNhbmUvTVMKY2hpY2FuZXJ5L1NNCmNoaWNoaS9NUwpjaGljay9YTU5TCmNoaWNrYWRlZS9TTQpjaGlja2VuL01ERwpjaGlja2VuZmVlZC9NCmNoaWNrZW5oZWFydGVkCmNoaWNrZW5wb3gvTQpjaGlja2Vuc2hpdC9TIQpjaGlja3BlYS9TTQpjaGlja3dlZWQvTQpjaGljbGUvTQpjaGljbmVzcy9NCmNoaWNvcnkvU00KY2hpZGUvR0RTCmNoaWRpbmcvWQpjaGllZi9UTVJZUwpjaGllZmRvbS9NCmNoaWVmdGFpbi9NUwpjaGllZnRhaW5zaGlwL1NNCmNoaWZmb24vTQpjaGlmZm9uaWVyL01TCmNoaWdnZXIvTVMKY2hpZ25vbi9NUwpjaGlodWFodWEvU00KY2hpbGJsYWluL1NNCmNoaWxkL00KY2hpbGRiZWFyaW5nL00KY2hpbGRiaXJ0aC9NCmNoaWxkYmlydGhzCmNoaWxkY2FyZS9NCmNoaWxkaG9vZC9TTQpjaGlsZGlzaC9ZUApjaGlsZGlzaG5lc3MvTQpjaGlsZGxlc3MvUApjaGlsZGxlc3NuZXNzL00KY2hpbGRsaWtlCmNoaWxkbWluZGVyL1MKY2hpbGRtaW5kaW5nCmNoaWxkcHJvb2YvR1NECmNoaWxkcmVuL00KY2hpbGkvTQpjaGlsaWVzCmNoaWxsL0pQWlRHTURSUwpjaGlsbGVyL00KY2hpbGxpbmVzcy9NCmNoaWxsaW5nL1kKY2hpbGxuZXNzL00KY2hpbGx5L1RQUgpjaGltZS9NWkdEUlMKY2hpbWVyL00KY2hpbWVyYS9NUwpjaGltZXJpYwpjaGltZXJpY2FsCmNoaW1uZXkvTVMKY2hpbXAvTVMKY2hpbXBhbnplZS9TTQpjaGluL1NNCmNoaW5hL00KY2hpbmF3YXJlL00KY2hpbmNoaWxsYS9NUwpjaGluZS9NUwpjaGluay9HTURTCmNoaW5sZXNzCmNoaW5uZWQKY2hpbm5pbmcKY2hpbm8vTVMKY2hpbnN0cmFwL01TCmNoaW50ei9NCmNoaW50enkvUlQKY2hpbndhZy9TCmNoaXAvU00KY2hpcGJvYXJkCmNoaXBtdW5rL1NNCmNoaXBvbGF0YS9TCmNoaXBwZWQKY2hpcHBlci9NUwpjaGlwcGllCmNoaXBwaW5nL1MKY2hpcHB5L1MKY2hpcm9ncmFwaHkvTQpjaGlyb3BvZGlzdC9NUwpjaGlyb3BvZHkvTQpjaGlyb3ByYWN0aWMvU00KY2hpcm9wcmFjdG9yL1NNCmNoaXJwL0dNRFMKY2hpcnBpbHkKY2hpcnB5L1BUUgpjaGlycnVwL0dNRFMKY2hpc2VsL1pHTURSUwpjaGlzZWxlci9NCmNoaXQvU00KY2hpdGNoYXQvU00KY2hpdGNoYXR0ZWQKY2hpdGNoYXR0aW5nCmNoaXRpbi9NCmNoaXRpbm91cwpjaGl0b3NhbgpjaGl0dGVybGluZ3MvTQpjaGl2YWxyb3VzL1BZCmNoaXZhbHJvdXNuZXNzL00KY2hpdmFscnkvTQpjaGl2ZS9NUwpjaGl2eS9HRFMKY2hsYW15ZGlhL01TCmNobGFteWRpYWUKY2hsb3JhbC9NCmNobG9yZGFuZS9NCmNobG9yaWRlL01TCmNobG9yaW5hdGUvR05EUwpjaGxvcmluYXRpb24vTQpjaGxvcmluZS9NCmNobG9yb2ZsdW9yb2NhcmJvbi9TTQpjaGxvcm9mb3JtL1NHTUQKY2hsb3JvcGh5bGwvTQpjaGxvcm9wbGFzdC9NUwpjaG0KY2hvYy9TCmNob2NrL0dNRFMKY2hvY2thYmxvY2sKY2hvY29ob2xpYy9TTQpjaG9jb2xhdGUvTVMKY2hvY29sYXR5CmNob2ljZS9NVFJTCmNob2lyL01TCmNob2lyYm95L01TCmNob2lybWFzdGVyL1NNCmNob2tlL01aR0RSUwpjaG9rZWNoZXJyeS9TTQpjaG9rZXIvTQpjaG9sZWN5c3RlY3RvbXkKY2hvbGVjeXN0aXRpcwpjaG9sZXIvTQpjaG9sZXJhL00KY2hvbGVyaWMKY2hvbGVzdGVyb2wvTQpjaG9tcC9aR01EUlMKY2hvb3NlL1pHUlMKY2hvb3Nlci9NCmNob29zaW5lc3MvTQpjaG9vc3kvVFBSCmNob3AvU00KY2hvcGhvdXNlL1NNCmNob3BwZWQKY2hvcHBlci9NREdTCmNob3BwaWx5CmNob3BwaW5lc3MvTQpjaG9wcGluZwpjaG9wcHkvVFBSCmNob3BzdGljay9TTQpjaG9yYWwvTVlTCmNob3JhbGUvTVMKY2hvcmQvTVMKY2hvcmRhbApjaG9yZGF0ZS9TTQpjaG9yZS9NUwpjaG9yZWEvTQpjaG9yZW9ncmFwaC9EUlpHCmNob3Jlb2dyYXBoZXIvTQpjaG9yZW9ncmFwaGljCmNob3Jlb2dyYXBoaWNhbGx5CmNob3Jlb2dyYXBocwpjaG9yZW9ncmFwaHkvTQpjaG9yaXN0ZXIvU00KY2hvcm9pZC9NUwpjaG9ydGxlL01aR0RSUwpjaG9ydGxlci9NCmNob3J1cy9HTURTCmNob3NlCmNob3NlbgpjaG93L1NHTUQKY2hvd2Rlci9NUwpjaHJpc20vTQpjaHJpc3Rlbi9BU0dECmNocmlzdGVuaW5nL01TCmNocmlzdGlhbi9VCmNocmlzdG9sb2d5CmNocm9tYXRpYwpjaHJvbWF0aWNhbGx5CmNocm9tYXRpbi9NCmNocm9tYXRvZ3JhcGh5CmNocm9tZS9NR0RTCmNocm9taXVtL00KY2hyb21vc29tYWwKY2hyb21vc29tZS9NUwpjaHJvbmljCmNocm9uaWNhbGx5CmNocm9uaWNsZS9EUlNNWkcKY2hyb25pY2xlci9NCmNocm9ub2dyYXBoL00KY2hyb25vZ3JhcGhzCmNocm9ub2xvZ2ljYWwvWQpjaHJvbm9sb2dpc3QvTVMKY2hyb25vbG9neS9TTQpjaHJvbm9tZXRlci9TTQpjaHJ5c2FsaXMvTVMKY2hyeXNhbnRoZW11bS9NUwpjaHViL1NNCmNodWJiaW5lc3MvTQpjaHViYnkvVFBSCmNodWNrL0dNRFMKY2h1Y2tob2xlL1NNCmNodWNrbGUvTUdEUwpjaHVmZmVkCmNodWcvU00KY2h1Z2dlZApjaHVnZ2luZwpjaHVra2EvTVMKY2h1bS9TTQpjaHVtbWVkCmNodW1taWx5CmNodW1taW5lc3MvTQpjaHVtbWluZwpjaHVtbXkvUFRSCmNodW1wL01TCmNodW5kZXIvR0RTCmNodW5rL0dNRFMKY2h1bmtpbmVzcy9NCmNodW5reS9QVFIKY2h1bnRlci9ER1MKY2h1cmNoL01TCmNodXJjaGdvZXIvU00KY2h1cmNoZ29pbmcvTQpjaHVyY2htYW4vTQpjaHVyY2htZW4KY2h1cmNod2FyZGVuL01TCmNodXJjaHdvbWFuCmNodXJjaHdvbWVuCmNodXJjaHlhcmQvU00KY2h1cmwvTVMKY2h1cmxpc2gvUFkKY2h1cmxpc2huZXNzL00KY2h1cm4vWkdNRFJTCmNodXJuZXIvTQpjaHV0ZS9NUwpjaHV0bmV5L01TCmNodXR6cGFoL00KY2h5bWUvTQpjaWFiYXR0YS9TTQpjaWFvL1MKY2ljYWRhL01TCmNpY2F0cmljZXMKY2ljYXRyaXgvTQpjaWNlcm9uZS9TTQpjaWNlcm9uaQpjaWRlcidzCmNpZGVyL1MKY2lnYXIvTVMKY2lnYXJldHRlL01TCmNpZ2FyaWxsby9NUwpjaWxhbnRyby9NCmNpbGlhCmNpbGl1bS9NCmNpbmNoL0dNRFMKY2luY2hvbmEvU00KY2luY3R1cmUvU00KY2luZGVyL0dNRFMKY2luZQpjaW5lbWEvTVMKY2luZW1hdGljCmNpbmVtYXRvZ3JhcGhlci9NUwpjaW5lbWF0b2dyYXBoaWMKY2luZW1hdG9ncmFwaHkvTQpjaW5uYWJhci9NCmNpbm5hbW9uL00KY2lwaGVyJ3MKY2lwaGVyL0NHRFMKY2lyCmNpcmNhCmNpcmNhZGlhbgpjaXJjbGUvTUdEUwpjaXJjbGV0L01TCmNpcmN1aXQvTURHUwpjaXJjdWl0YWwKY2lyY3VpdG91cy9ZUApjaXJjdWl0b3VzbmVzcy9NCmNpcmN1aXRyeS9NCmNpcmN1aXR5L00KY2lyY3VsYXIvU01ZCmNpcmN1bGFyaXR5L00KY2lyY3VsYXJpemUvRFNHCmNpcmN1bGF0ZS9BRFNHCmNpcmN1bGF0aW9uL1NNCmNpcmN1bGF0b3J5CmNpcmN1bWNpc2UvWERTR04KY2lyY3VtY2lzZWQvVQpjaXJjdW1jaXNpb24vTQpjaXJjdW1mZXJlbmNlL01TCmNpcmN1bWZlcmVudGlhbApjaXJjdW1mbGV4L01TCmNpcmN1bWxvY3V0aW9uL01TCmNpcmN1bWxvY3V0b3J5CmNpcmN1bW5hdmlnYXRlL1hHTkRTCmNpcmN1bW5hdmlnYXRpb24vTQpjaXJjdW1wb2xhcgpjaXJjdW1zY3JpYmUvR0RTCmNpcmN1bXNjcmlwdGlvbi9NUwpjaXJjdW1zcGVjdC9ZCmNpcmN1bXNwZWN0aW9uL00KY2lyY3Vtc3RhbmNlL01HRFMKY2lyY3Vtc3RhbnRpYWwvWQpjaXJjdW12ZW50L0RTRwpjaXJjdW12ZW50aW9uL00KY2lyY3VzL01TCmNpcnF1ZS9NUwpjaXJyaG9zaXMvTQpjaXJyaG90aWMvU00KY2lycmkKY2lycnVzL00KY2lzdGVybi9NUwpjaXQKY2l0YWRlbC9NUwpjaXRhdGlvbi9BTVMKY2l0ZSdzCmNpdGUvSUFHU0QKY2l0aWZpZWQKY2l0aXplbi9NUwpjaXRpemVucnkvTQpjaXRpemVuc2hpcC9NCmNpdHJpYwpjaXRyb24vTVMKY2l0cm9uZWxsYS9NCmNpdHJ1cy9NUwpjaXR5L1NNCmNpdHl3aWRlCmNpdmV0L01TCmNpdmljL1MKY2l2aWNhbGx5CmNpdmljcy9NCmNpdmlsL1VZCmNpdmlsaWFuL01TCmNpdmlsaXR5L0lTTQpjaXZpbGl6YXRpb24vTVMKY2l2aWxpemUvR0RTCmNpdmlsaXplZC9VCmNpdnZpZXMvTQpjawpjbApjbGFjay9HTURTCmNsYWQvVQpjbGFkZGluZy9NCmNsYWltJ3MKY2xhaW0vQ0tFQUdEUwpjbGFpbWFibGUvQQpjbGFpbWFudC9NUwpjbGFpbWVkL1UKY2xhaW1lci9FQ1NNCmNsYWlydm95YW5jZS9NCmNsYWlydm95YW50L01TCmNsYW0vU00KY2xhbWJha2UvTVMKY2xhbWJlci9aR01EUlMKY2xhbWJlcmVyL00KY2xhbW1lZApjbGFtbWlseQpjbGFtbWluZXNzL00KY2xhbW1pbmcKY2xhbW15L1BUUgpjbGFtb3IvR01EUwpjbGFtb3JvdXMKY2xhbXAvR01EUwpjbGFtcGRvd24vTVMKY2xhbi9TTQpjbGFuZGVzdGluZS9ZCmNsYW5nL1pHTURSUwpjbGFuZ29yL00KY2xhbmdvcm91cy9ZCmNsYW5rL0dNRFMKY2xhbm5pc2gvUApjbGFubmlzaG5lc3MvTQpjbGFuc21hbi9NCmNsYW5zbWVuCmNsYW5zd29tYW4KY2xhbnN3b21lbgpjbGFwL1NNCmNsYXBib2FyZC9NREdTCmNsYXBwZWQKY2xhcHBlci9NUwpjbGFwcGVyYm9hcmQvUwpjbGFwcGluZy9NCmNsYXB0cmFwL00KY2xhcXVlL01TCmNsYXJldC9NUwpjbGFyaWZpY2F0aW9uL00KY2xhcmlmeS9YRFNORwpjbGFyaW5ldC9TTQpjbGFyaW5ldGlzdC9TTQpjbGFyaW9uL01ER1MKY2xhcml0eS9NCmNsYXNoL0dNRFMKY2xhc3AncwpjbGFzcC9VR0RTCmNsYXNzL0dNRFMKY2xhc3NpYy9NUwpjbGFzc2ljYWwvTVkKY2xhc3NpY2lzbS9NCmNsYXNzaWNpc3QvTVMKY2xhc3NpZmlhYmxlCmNsYXNzaWZpY2F0aW9uL0NBTQpjbGFzc2lmaWNhdGlvbnMKY2xhc3NpZmllZCdzCmNsYXNzaWZpZWQvVQpjbGFzc2lmaWVkcwpjbGFzc2lmaWVyL01TCmNsYXNzaWZ5L0FDU0RHTgpjbGFzc2luZXNzL00KY2xhc3NsZXNzL1AKY2xhc3NtYXRlL01TCmNsYXNzcm9vbS9NUwpjbGFzc3dvcmsvTQpjbGFzc3kvVFJQCmNsYXR0ZXIvR01EUwpjbGF1c2FsCmNsYXVzZS9NUwpjbGF1c3Ryb3Bob2JpYS9NCmNsYXVzdHJvcGhvYmljCmNsYXZpY2hvcmQvU00KY2xhdmljbGUvTVMKY2xhdmllci9NUwpjbGF3J3MKY2xhdy9DU0dECmNsYXkvTQpjbGF5ZXkKY2xheWllcgpjbGF5aWVzdApjbGVhbi9CSlBaVEdEUllTCmNsZWFuZXIvTQpjbGVhbmluZy9NCmNsZWFubGluZXNzL1VNCmNsZWFubHkvVVRQUgpjbGVhbm5lc3MvVU0KY2xlYW5zZS9aR0RSUwpjbGVhbnNlci9NCmNsZWFudXAvTVMKY2xlYXIvSlBUR01EUllTCmNsZWFyYW5jZS9TTQpjbGVhcmhlYWRlZApjbGVhcmluZy9NCmNsZWFyaW5naG91c2UvU00KY2xlYXJuZXNzL00KY2xlYXJ3YXkvUwpjbGVhdC9NUwpjbGVhdmFnZS9NUwpjbGVhdmUvWkdEUlMKY2xlYXZlci9NCmNsZWYvU00KY2xlZnQvTVMKY2xlbWF0aXMvTVMKY2xlbWVuY3kvSU0KY2xlbWVudC9ZCmNsZW1lbnRpbmUvUwpjbGVuY2gvR01EUwpjbGVyZXN0b3J5L1NNCmNsZXJneS9TTQpjbGVyZ3ltYW4vTQpjbGVyZ3ltZW4KY2xlcmd5d29tYW4vTQpjbGVyZ3l3b21lbgpjbGVyaWMvTVMKY2xlcmljYWwvWQpjbGVyaWNhbGlzbS9NCmNsZXJrL0dNRFMKY2xlcmtzaGlwL00KY2xldmVyL1BUUlkKY2xldmVybmVzcy9NCmNsZXZpcy9NUwpjbGV3L1NHTUQKY2xpY2hlL01EUwpjbGljay9CWkdNRFJTCmNsaWNrZXIvTQpjbGllbnQvTVMKY2xpZW50ZWxlL01TCmNsaWZmL01TCmNsaWZmaGFuZ2VyL1NNCmNsaWZmaGFuZ2luZwpjbGlmZnRvcC9TCmNsaWkKY2xpbWFjdGVyaWMvTQpjbGltYWN0aWMKY2xpbWF0ZS9TTQpjbGltYXRpYwpjbGltYXRpY2FsbHkKY2xpbWF0b2xvZ2lzdC9TTQpjbGltYXRvbG9neS9NCmNsaW1heC9NRFNHCmNsaW1iL1NNRFJaR0IKY2xpbWJlci9NCmNsaW1iaW5nL00KY2xpbWUvU00KY2xpbmNoL01EUlNaRwpjbGluY2hlci9NCmNsaW5nL1NNUlpHCmNsaW5nZXIvTQpjbGluZ2ZpbG0KY2xpbmd5L1JUCmNsaW5pYy9TTQpjbGluaWNhbC9ZCmNsaW5pY2lhbi9TTQpjbGluay9TTURSWkcKY2xpbmtlci9NCmNsaW9tZXRyaWMvUwpjbGlvbWV0cmljaWFuL01TCmNsaW9tZXRyaWNzL00KY2xpcC9TTQpjbGlwYm9hcmQvTVMKY2xpcHBlZApjbGlwcGVyL1NNCmNsaXBwaW5nL1NNCmNsaXF1ZS9TTQpjbGlxdWV5CmNsaXF1aXNoL1lQCmNsaXF1aXNobmVzcy9NCmNsaXQvU00KY2xpdG9yYWwKY2xpdG9yaWRlcwpjbGl0b3Jpcy9NUwpjbGl4CmNsb2FjYS9NCmNsb2FjYWUKY2xvYWsncwpjbG9hay9VU0RHCmNsb2Frcm9vbS9NUwpjbG9iYmVyL1NNREcKY2xvY2hlL1NNCmNsb2NrL1NNREcKY2xvY2t3aXNlCmNsb2Nrd29yay9TTQpjbG9kL01TCmNsb2RkaXNoCmNsb2Rob3BwZXIvTVMKY2xvZydzCmNsb2cvVVMKY2xvZ2dlZC9VCmNsb2dnaW5nL1UKY2xvaXNvbm5lL00KY2xvaXN0ZXIvU01ERwpjbG9pc3RyYWwKY2xvbXAvU0RHCmNsb25hbApjbG9uZS9EU01HCmNsb25rL1NNREcKY2xvcC9NUwpjbG9wcGVkCmNsb3BwaW5nCmNsb3NlL0RSU01ZVEdKUApjbG9zZWZpc3RlZApjbG9zZW1vdXRoZWQKY2xvc2VuZXNzL00KY2xvc2VvdXQvTVMKY2xvc2V0L1NNREcKY2xvc2V1cC9TTQpjbG9zaW5nL00KY2xvc3VyZS9FU00KY2xvdC9NUwpjbG90aC9NCmNsb3RoZS9VRFNHCmNsb3RoZXNob3JzZS9NUwpjbG90aGVzbGluZS9TTQpjbG90aGVzcGluL1NNCmNsb3RoaWVyL01TCmNsb3RoaW5nL00KY2xvdGhzCmNsb3R0ZWQKY2xvdHRpbmcKY2xvdHVyZS9TTQpjbG91ZC9TTURHCmNsb3VkYnVyc3QvU00KY2xvdWRlZC9VCmNsb3VkaW5lc3MvTQpjbG91ZGxlc3MKY2xvdWR5L1JQVApjbG91dC9TTURHCmNsb3ZlL1JTTVoKY2xvdmVuCmNsb3Zlci9NCmNsb3ZlcmxlYWYvU00KY2xvdmVybGVhdmVzCmNsb3duL1NNREcKY2xvd25pc2gvWVAKY2xvd25pc2huZXNzL00KY2xveS9ER1MKY2xveWluZy9ZCmNsdWIvTVMKY2x1YmJhYmxlCmNsdWJiZWQKY2x1YmJlci9TCmNsdWJiaW5nCmNsdWJmZWV0CmNsdWJmb290L01ECmNsdWJob3VzZS9TTQpjbHVibGFuZApjbHVjay9TTURHCmNsdWUvTUdEUwpjbHVlbGVzcwpjbHVtcC9TTURHCmNsdW1weS9UUgpjbHVtc2lseQpjbHVtc2luZXNzL00KY2x1bXN5L1RSUApjbHVuZwpjbHVuay9TTURSWkcKY2x1bmtlci9NCmNsdW5reS9UUgpjbHVzdGVyL01EU0cKY2x1dGNoL0dNRFMKY2x1dHRlci9NRFNHCmNsdXR0ZXJlZC9VCmNsdmkKY2x2aWkKY2x4aQpjbHhpaQpjbHhpdgpjbHhpeApjbHh2aQpjbHh2aWkKY20KY25pZGFyaWFuL01TCmNvL0VTRApjb2FjaC9NRFNHCmNvYWNobG9hZC9TCmNvYWNobWFuL00KY29hY2htZW4KY29hY2h3b3JrCmNvYWRqdXRvci9NUwpjb2FndWxhbnQvTVMKY29hZ3VsYXRlL0dORFMKY29hZ3VsYXRpb24vTQpjb2FndWxhdG9yL01TCmNvYWwvTURHUwpjb2FsZXNjZS9HRFMKY29hbGVzY2VuY2UvTQpjb2FsZXNjZW50CmNvYWxmYWNlL01TCmNvYWxmaWVsZC9TCmNvYWxpdGlvbi9NUwpjb2FsaXRpb25pc3QvTVMKY29hbG1pbmUvUwpjb2Fyc2UvUllUUApjb2Fyc2VuL1NERwpjb2Fyc2VuZXNzL00KY29hc3QvU01EUlpHCmNvYXN0YWwKY29hc3Rlci9NCmNvYXN0Z3VhcmQvUwpjb2FzdGxpbmUvTVMKY29hdC9NREdKUwpjb2F0aW5nL00KY29hdHJvb20vUwpjb2F0dGFpbC9TTQpjb2F1dGhvci9NREdTCmNvYXgvRFJTWkcKY29heGVyL00KY29heGlhbApjb2F4aW5nL1kKY29iL1NNCmNvYmFsdC9NCmNvYmJlci9TCmNvYmJsZS9EUlNNWkcKY29iYmxlci9NCmNvYmJsZXN0b25lL1NNCmNvYm51dC9TCmNvYnJhL1NNCmNvYndlYi9TTQpjb2J3ZWJiZWQKY29id2ViYnkvUlQKY29jYS9NCmNvY2FpbmUvTQpjb2NjaS9TCmNvY2N1cy9NCmNvY2N5Z2VzCmNvY2N5eC9NCmNvY2hpbmVhbC9NCmNvY2hsZWEvU00KY29jaGxlYWUKY29jaGxlYXIKY29jay9NREdTCmNvY2thZGUvU00KY29ja2FtYW1pZQpjb2NrYXRvby9TTQpjb2NrYXRyaWNlL1NNCmNvY2tjaGFmZXIvUwpjb2NrY3Jvdy9TTQpjb2NrZXJlbC9TTQpjb2NrZXllZApjb2NrZmlnaHQvTUdTCmNvY2tmaWdodGluZy9NCmNvY2tpbHkKY29ja2luZXNzL00KY29ja2xlL1NNCmNvY2tsZXNoZWxsL1NNCmNvY2tuZXkvU00KY29ja3BpdC9TTQpjb2Nrcm9hY2gvTVMKY29ja3Njb21iL1NNCmNvY2tzdWNrZXIvTVMhCmNvY2tzdXJlCmNvY2t0YWlsL01TCmNvY2t5L1JUUApjb2NvL01TCmNvY29hL1NNCmNvY29udXQvU00KY29jb29uL1NNREcKY29kL1NNCmNvZGEvTVMKY29kZGVkCmNvZGRpbmcKY29kZGxlL0RTRwpjb2RlJ3MKY29kZS9DWkdEUlMKY29kZWluZS9NCmNvZGVwZW5kZW5jeS9NCmNvZGVwZW5kZW50L1NNCmNvZGVyL0NNCmNvZGV4L00KY29kZmlzaC9NUwpjb2RnZXIvU00KY29kaWNlcwpjb2RpY2lsL1NNCmNvZGlmaWNhdGlvbi9NCmNvZGlmaWVyL00KY29kaWZ5L1hEUlNOWkcKY29kb24vUwpjb2RwaWVjZS9NUwpjb2Rzd2FsbG9wCmNvZWQvTVMKY29lZHVjYXRpb24vTQpjb2VkdWNhdGlvbmFsCmNvZWZmaWNpZW50L01TCmNvZWxlbnRlcmF0ZS9NUwpjb2VxdWFsL01ZUwpjb2VyY2UvRFJTWkdOVgpjb2VyY2VyL00KY29lcmNpb24vTQpjb2V2YWwvU01ZCmNvZXhpc3QvRFNHCmNvZXhpc3RlbmNlL00KY29leGlzdGVudApjb2V4dGVuc2l2ZQpjb2ZmZWUvU00KY29mZmVlY2FrZS9TTQpjb2ZmZWVob3VzZS9NUwpjb2ZmZWVtYWtlci9TTQpjb2ZmZWVwb3QvTVMKY29mZmVyL1NNCmNvZmZlcmRhbS9NUwpjb2ZmaW4vU01ERwpjb2cvU00KY29nZW5jeS9NCmNvZ2VudC9ZCmNvZ2l0YXRlL0RTWEdOVgpjb2dpdGF0aW9uL00KY29naXRhdG9yL01TCmNvZ25hYy9TTQpjb2duYXRlL01TCmNvZ25pdGlvbi9BTQpjb2duaXRpb25hbApjb2duaXRpdmUvWQpjb2duaXphYmxlCmNvZ25pemFuY2UvQU0KY29nbml6YW50CmNvZ25vbWVuL1NNCmNvZ25vc2NlbnRlL00KY29nbm9zY2VudGkKY29nd2hlZWwvU00KY29oYWJpdC9TR0QKY29oYWJpdGFudC9NUwpjb2hhYml0YXRpb24vTQpjb2hlaXIvU00KY29oZXJlL0RTRwpjb2hlcmVuY2UvSU0KY29oZXJlbmN5L00KY29oZXJlbnQvSVkKY29oZXNpb24vTQpjb2hlc2l2ZS9ZUApjb2hlc2l2ZW5lc3MvTQpjb2hvL01TCmNvaG9ydC9TTQpjb2lmL01TCmNvaWZmZWQKY29pZmZpbmcKY29pZmZ1cmUvRFNNRwpjb2lsJ3MvQQpjb2lsL1VBREdTCmNvaW4vTURSWkdTCmNvaW5hZ2UvU00KY29pbmNpZGUvRFNHCmNvaW5jaWRlbmNlL01TCmNvaW5jaWRlbnQKY29pbmNpZGVudGFsL1kKY29pbmVyL00KY29pbnN1cmFuY2UvTQpjb2lyCmNvaXRhbApjb2l0dXMvTQpjb2tlL01HRFMKY29sL1MKY29sYS9NUwpjb2xhbmRlci9TTQpjb2xkL01SWVRQUwpjb2xkYmxvb2RlZApjb2xkbmVzcy9NCmNvbGVzbGF3L00KY29sZXVzL01TCmNvbGV5L1MKY29saWMvTQpjb2xpY2t5CmNvbGlzZXVtL01TCmNvbGl0aXMvTQpjb2xsCmNvbGxhYm9yYXRlL0RTWEdOVgpjb2xsYWJvcmF0aW9uL00KY29sbGFib3JhdGlvbmlzdApjb2xsYWJvcmF0aXZlL1kKY29sbGFib3JhdG9yL01TCmNvbGxhZ2UvU00KY29sbGFnZW4KY29sbGFwc2UvTUdEUwpjb2xsYXBzaWJsZQpjb2xsYXIvU01ERwpjb2xsYXJib25lL1NNCmNvbGxhcmQvU00KY29sbGFybGVzcwpjb2xsYXRlL0RTWEdOCmNvbGxhdGVyYWwvTVkKY29sbGF0ZXJhbGl6ZQpjb2xsYXRpb24vTQpjb2xsYXRvci9NUwpjb2xsZWFndWUvTVMKY29sbGVjdCdzCmNvbGxlY3QvQVNHVkQKY29sbGVjdGVkL1UKY29sbGVjdGVkbHkKY29sbGVjdGlibGUvU00KY29sbGVjdGlvbi9BTVMKY29sbGVjdGl2ZS9NWVMKY29sbGVjdGl2aXNtL00KY29sbGVjdGl2aXN0L1NNCmNvbGxlY3Rpdml6YXRpb24vTQpjb2xsZWN0aXZpemUvRFNHCmNvbGxlY3Rvci9NUwpjb2xsZWVuL1NNCmNvbGxlZ2UvU00KY29sbGVnaWFsaXR5L00KY29sbGVnaWFuL01TCmNvbGxlZ2lhdGUKY29sbGlkZS9EU0cKY29sbGllL1JTTVoKY29sbGllci9NCmNvbGxpZXJ5L1NNCmNvbGxpc2lvbi9TTQpjb2xsb2NhdGUvTUdORFNYCmNvbGxvY2F0aW9uL00KY29sbG9pZC9TTQpjb2xsb2lkYWwKY29sbG9xCmNvbGxvcXVpYWwvWQpjb2xsb3F1aWFsaXNtL1NNCmNvbGxvcXVpZXMKY29sbG9xdWl1bS9NUwpjb2xsb3F1eS9NCmNvbGx1ZGUvRFNHCmNvbGx1c2lvbi9NCmNvbGx1c2l2ZQpjb2xvZ25lL1NNCmNvbG9uL1NNCmNvbG9uZWwvU00KY29sb25lbGN5L00KY29sb25lcwpjb2xvbmlhbC9TTVkKY29sb25pYWxpc20vTQpjb2xvbmlhbGlzdC9NUwpjb2xvbmlzdC9TTQpjb2xvbml6YXRpb24vQUNNCmNvbG9uaXplL0NBR1NECmNvbG9uaXplci9NUwpjb2xvbm5hZGUvTURTCmNvbG9ub3Njb3B5L1NNCmNvbG9ueS9TTQpjb2xvcGhvbi9TTQpjb2xvcidzCmNvbG9yL0FFR0RTCmNvbG9yYW50L1NNCmNvbG9yYXRpb24vRU0KY29sb3JhdHVyYS9NUwpjb2xvcmJsaW5kL1AKY29sb3JibGluZG5lc3MvTQpjb2xvcmVkJ3MKY29sb3JlZC9VCmNvbG9yZWRzCmNvbG9yZmFzdC9QCmNvbG9yZmFzdG5lc3MvTQpjb2xvcmZ1bC9QWQpjb2xvcmZ1bG5lc3MvTQpjb2xvcmluZydzCmNvbG9yaXN0L1MKY29sb3JpemF0aW9uL00KY29sb3JpemUvRFNHCmNvbG9ybGVzcy9QWQpjb2xvcmxlc3NuZXNzL00KY29sb3J3YXkvUwpjb2xvc3NhbC9ZCmNvbG9zc2kKY29sb3NzdXMvTQpjb2xvc3RvbXkvU00KY29sb3N0cnVtL00KY29sdC9NUwpjb2x0aXNoCmNvbHVtYmluZS9TTQpjb2x1bW4vU01ECmNvbHVtbmFyCmNvbHVtbmlzdC9TTQpjb20vSkwKY29tYS9NUwpjb21ha2VyL1NNCmNvbWF0b3NlCmNvbWIvTURSWkdKUwpjb21iYXQvU01ER1YKY29tYmF0YW50L1NNCmNvbWJhdGl2ZW5lc3MvTQpjb21iZWQvVQpjb21iZXIvTQpjb21iaW5hdGlvbi9TTQpjb21iaW5lJ3MKY29tYmluZS9BRFNHCmNvbWJpbmVkL1UKY29tYmluZXIvTVMKY29tYmluZ3MvTQpjb21iby9TTQpjb21idXN0aWJpbGl0eS9NCmNvbWJ1c3RpYmxlL01TCmNvbWJ1c3Rpb24vTQpjb21idXN0aXZlCmNvbWUvSU1aR1JTCmNvbWViYWNrL01TCmNvbWVkaWFuL01TCmNvbWVkaWMKY29tZWRpZW5uZS9NUwpjb21lZG93bi9NUwpjb21lZHkvU00KY29tZWxpbmVzcy9NCmNvbWVseS9SUFQKY29tZXIncwpjb21lc3RpYmxlL1NNCmNvbWV0L1NNCmNvbWV1cHBhbmNlL1NNCmNvbWZpdCdzCmNvbWZpdC9FUwpjb21mb3J0L0VTTURHCmNvbWZvcnRhYmxlL1AKY29tZm9ydGFibGVuZXNzL00KY29tZm9ydGFibHkvVQpjb21mb3J0ZXIvTVMKY29tZm9ydGluZy9ZCmNvbWZvcnRsZXNzCmNvbWZ5L1JUCmNvbWljL1NNCmNvbWljYWwvWQpjb21pY2FsaXR5L00KY29taW5nL00KY29taXR5L00KY29tbQpjb21tYS9TTQpjb21tYW5kL1NNRFJMWkcKY29tbWFuZGFudC9NUwpjb21tYW5kZWVyL0dEUwpjb21tYW5kZXIvTQpjb21tYW5kbWVudC9NUwpjb21tYW5kby9TTQpjb21tZW1vcmF0ZS9YR05WRFMKY29tbWVtb3JhdGlvbi9NCmNvbW1lbW9yYXRvci9NUwpjb21tZW5jZS9BRFNMRwpjb21tZW5jZW1lbnQvQU0KY29tbWVuY2VtZW50cwpjb21tZW5kL0FTREJHCmNvbW1lbmRhYmx5CmNvbW1lbmRhdGlvbi9BTVMKY29tbWVuZGF0b3J5CmNvbW1lbnN1cmFibGUKY29tbWVuc3VyYXRlL0lZCmNvbW1lbnQvR1NNRApjb21tZW50YXJ5L1NNCmNvbW1lbnRhdGUvRFNHCmNvbW1lbnRhdG9yL1NNCmNvbW1lcmNlL00KY29tbWVyY2lhbC9TTVkKY29tbWVyY2lhbGlzbS9NCmNvbW1lcmNpYWxpemF0aW9uL00KY29tbWVyY2lhbGl6ZS9HRFMKY29tbWllL1NNCmNvbW1pbmdsZS9EU0cKY29tbWlzZXJhdGUvR05WRFNYCmNvbW1pc2VyYXRpb24vTQpjb21taXNzYXIvU00KY29tbWlzc2FyaWF0L1NNCmNvbW1pc3NhcnkvU00KY29tbWlzc2lvbidzCmNvbW1pc3Npb24vQUNTR0QKY29tbWlzc2lvbmFpcmUvUwpjb21taXNzaW9uZXIvU00KY29tbWl0L0FTCmNvbW1pdG1lbnQvTVMKY29tbWl0dGFsL1NNCmNvbW1pdHRlZC9BVQpjb21taXR0ZWUvU00KY29tbWl0dGVlbWFuL00KY29tbWl0dGVlbWVuCmNvbW1pdHRlZXdvbWFuL00KY29tbWl0dGVld29tZW4KY29tbWl0dGVyL1MKY29tbWl0dGluZy9BCmNvbW1vZGUncwpjb21tb2RlL0VJUwpjb21tb2RpZmljYXRpb24KY29tbW9kaW91cy9ZCmNvbW1vZGl0eS9TTQpjb21tb2RvcmUvU00KY29tbW9uJ3MKY29tbW9uL1VQUllUCmNvbW1vbmFsaXR5L1MKY29tbW9uYWx0eS9NCmNvbW1vbmVyL01TCmNvbW1vbm5lc3MvVU0KY29tbW9ucGxhY2UvTVMKY29tbW9ucwpjb21tb25zZW5zZQpjb21tb253ZWFsL01ICmNvbW1vbndlYWx0aC9NCmNvbW1vbndlYWx0aHMKY29tbW90aW9uL1NNCmNvbW11bmFsL1kKY29tbXVuZS9YRFNNR04KY29tbXVuaWNhYmlsaXR5L00KY29tbXVuaWNhYmxlL0kKY29tbXVuaWNhYmx5CmNvbW11bmljYW50L01TCmNvbW11bmljYXRlL0dOVkRTWApjb21tdW5pY2F0aW9uL00KY29tbXVuaWNhdGl2ZS9VCmNvbW11bmljYXRvci9TTQpjb21tdW5pb24vTQpjb21tdW5pcXVlL1NNCmNvbW11bmlzbS9NCmNvbW11bmlzdC9TTQpjb21tdW5pc3RpYwpjb21tdW5pdHkvU00KY29tbXV0YXRpb24vTVMKY29tbXV0YXRpdmUKY29tbXV0YXRvci9TTQpjb21tdXRlL0JEUlNNWkcKY29tbXV0ZXIvTQpjb21wL01EWUdTCmNvbXBhY3QvVEdTTURSWVAKY29tcGFjdGlvbgpjb21wYWN0bmVzcy9NCmNvbXBhY3Rvci9TTQpjb21wYW5pb24vU0JNCmNvbXBhbmlvbmFibHkKY29tcGFuaW9uc2hpcC9NCmNvbXBhbmlvbndheS9NUwpjb21wYW55L1NNCmNvbXBhcmFiaWxpdHkvTQpjb21wYXJhYmxlL0kKY29tcGFyYWJseS9JCmNvbXBhcmF0aXZlL01ZUwpjb21wYXJlL0JEU01HCmNvbXBhcmlzb24vTVMKY29tcGFydG1lbnQvU00KY29tcGFydG1lbnRhbApjb21wYXJ0bWVudGFsaXphdGlvbi9NCmNvbXBhcnRtZW50YWxpemUvRFNHCmNvbXBhc3MvR01EUwpjb21wYXNzaW9uL00KY29tcGFzc2lvbmF0ZS9ZCmNvbXBhdGliaWxpdHkvSU0KY29tcGF0aWJsZS9JTVMKY29tcGF0aWJseS9JCmNvbXBhdHJpb3QvTVMKY29tcGVlci9TTQpjb21wZWwvUwpjb21wZWxsZWQKY29tcGVsbGluZy9ZCmNvbXBlbmRpb3VzCmNvbXBlbmRpdW0vU00KY29tcGVuc2F0ZS9EU1hHTgpjb21wZW5zYXRlZC9VCmNvbXBlbnNhdGlvbi9NCmNvbXBlbnNhdG9yeQpjb21wZXJlL0RTRwpjb21wZXRlL0RTRwpjb21wZXRlbmNlL0lNCmNvbXBldGVuY2VzCmNvbXBldGVuY2llcwpjb21wZXRlbmN5L0lNCmNvbXBldGVudC9JWQpjb21wZXRpdGlvbi9TTQpjb21wZXRpdGl2ZS9QWQpjb21wZXRpdGl2ZW5lc3MvTQpjb21wZXRpdG9yL1NNCmNvbXBpbGF0aW9uL1NNCmNvbXBpbGUvRFJTWkcKY29tcGlsZXIvTQpjb21wbGFjZW5jZS9NCmNvbXBsYWNlbmN5L00KY29tcGxhY2VudC9ZCmNvbXBsYWluL0RSWkdTCmNvbXBsYWluYW50L01TCmNvbXBsYWluZXIvTQpjb21wbGFpbnQvU00KY29tcGxhaXNhbmNlL00KY29tcGxhaXNhbnQvWQpjb21wbGVjdGVkCmNvbXBsZW1lbnQvU0dNRApjb21wbGVtZW50YXJ5CmNvbXBsZXRlL1BZVEdOWERSUwpjb21wbGV0ZWQvVQpjb21wbGV0ZW5lc3MvSU0KY29tcGxldGlvbi9NCmNvbXBsZXgvTVNZCmNvbXBsZXhpb24vTURTCmNvbXBsZXhpb25hbApjb21wbGV4aXR5L1NNCmNvbXBsaWFuY2UvTQpjb21wbGlhbnQvWQpjb21wbGljYXRlL0dEUwpjb21wbGljYXRlZC9ZCmNvbXBsaWNhdGlvbi9NCmNvbXBsaWNpdApjb21wbGljaXR5L00KY29tcGxpbWVudC9NREdTCmNvbXBsaW1lbnRhcnkvVQpjb21wbHkvTkRTWEcKY29tcG8vUwpjb21wb25lbnQvU00KY29tcG9ydC9MU0dECmNvbXBvcnRtZW50L00KY29tcG9zZS9BRUNHU0QKY29tcG9zZWRseQpjb21wb3Nlci9NUwpjb21wb3NpdGUvTVlHTlhEUwpjb21wb3NpdGlvbi9DTQpjb21wb3NpdG9yL1NNCmNvbXBvc3QvU0dNRApjb21wb3N1cmUvRU0KY29tcG90ZS9TTQpjb21wb3VuZC9HTURCUwpjb21wb3VuZGVkL1UKY29tcHJlaGVuZC9TREcKY29tcHJlaGVuc2liaWxpdHkvSU0KY29tcHJlaGVuc2libGUvSQpjb21wcmVoZW5zaWJseS9JCmNvbXByZWhlbnNpb24vSU0KY29tcHJlaGVuc2lvbnMKY29tcHJlaGVuc2l2ZS9QTVlTCmNvbXByZWhlbnNpdmVuZXNzL00KY29tcHJlc3Mncwpjb21wcmVzcy9DR0RTCmNvbXByZXNzZWQvVQpjb21wcmVzc2libGUKY29tcHJlc3Npb24vQ00KY29tcHJlc3Nvci9TTQpjb21wcmlzZS9HRFMKY29tcHJvbWlzZS9NR0RTCmNvbXB0cm9sbGVyL01TCmNvbXB1bHNpb24vTVMKY29tcHVsc2l2ZS9ZUApjb21wdWxzaXZlbmVzcy9NCmNvbXB1bHNvcmlseQpjb21wdWxzb3J5L1NNCmNvbXB1bmN0aW9uL1NNCmNvbXB1dGF0aW9uL1NNCmNvbXB1dGF0aW9uYWwvWQpjb21wdXRlL0FEU0cKY29tcHV0ZXIvTVMKY29tcHV0ZXJhdGUKY29tcHV0ZXJpemF0aW9uL00KY29tcHV0ZXJpemUvR0RTCmNvbXB1dGluZy9NCmNvbXJhZGUvU01ZCmNvbXJhZGVzaGlwL00KY29uL0dTTQpjb25jYXRlbmF0ZS9YRFNHTgpjb25jYXRlbmF0aW9uL00KY29uY2F2ZS9ZUApjb25jYXZlbmVzcy9NCmNvbmNlYWwvU0RSWkdCTApjb25jZWFsZWQvVQpjb25jZWFsZXIvTQpjb25jZWFsbWVudC9NCmNvbmNlaXQvU01ECmNvbmNlaXRlZC9QWQpjb25jZWl0ZWRuZXNzL00KY29uY2VpdmFibGUvSQpjb25jZWl2YWJseS9JCmNvbmNlaXZlL0RTR0IKY29uY2VudHJhdGUvRFNNR05YCmNvbmNlbnRyYXRpb24vTQpjb25jZW50cmljCmNvbmNlbnRyaWNhbGx5CmNvbmNlcHQvU00KY29uY2VwdGlvbi9TTQpjb25jZXB0aW9uYWwKY29uY2VwdHVhbC9ZCmNvbmNlcHR1YWxpemF0aW9uL01TCmNvbmNlcHR1YWxpemUvRFNHCmNvbmNlcm4vVU1ECmNvbmNlcm5lZC9VWQpjb25jZXJuaW5nCmNvbmNlcm5zCmNvbmNlcnQncwpjb25jZXJ0L0VTREcKY29uY2VydGVkL1kKY29uY2VydGdvZXIvUwpjb25jZXJ0aW5hL1NHTUQKY29uY2VydGl6ZS9EU0cKY29uY2VydG1hc3Rlci9NUwpjb25jZXJ0by9TTQpjb25jZXNzaW9uYWlyZS9NUwpjb25jZXNzaW9uYWwKY29uY2Vzc2lvbmFyeQpjb25jaC9NCmNvbmNoaWUvUwpjb25jaHMKY29uY2llcmdlL01TCmNvbmNpbGlhdGUvRFNHTgpjb25jaWxpYXRpb24vQU0KY29uY2lsaWF0b3IvU00KY29uY2lsaWF0b3J5CmNvbmNpc2UvUlBZVE4KY29uY2lzZW5lc3MvTQpjb25jaXNpb24vTQpjb25jbGF2ZS9TTQpjb25jbHVkZS9EU0cKY29uY2x1c2lvbi9NUwpjb25jbHVzaXZlL0lZUApjb25jbHVzaXZlbmVzcy9JTQpjb25jb2N0L1NERwpjb25jb2N0aW9uL01TCmNvbmNvbWl0YW50L01ZUwpjb25jb3JkL00KY29uY29yZGFuY2UvU00KY29uY29yZGFudApjb25jb3JkYXQvU00KY29uY291cnNlL1NNCmNvbmNyZXRlL0RTUE1ZR05YCmNvbmNyZXRlbmVzcy9NCmNvbmNyZXRpb24vTQpjb25jdWJpbmFnZS9NCmNvbmN1YmluZS9NUwpjb25jdXBpc2NlbmNlL00KY29uY3VwaXNjZW50CmNvbmN1ci9TCmNvbmN1cnJlZApjb25jdXJyZW5jZS9TTQpjb25jdXJyZW5jeQpjb25jdXJyaW5nCmNvbmN1c3MvVgpjb25jdXNzaW9uL1NNCmNvbmRlbW4vU0RSWkcKY29uZGVtbmF0aW9uL01TCmNvbmRlbW5hdG9yeQpjb25kZW1uZXIvTQpjb25kZW5zYXRlL01OWFMKY29uZGVuc2F0aW9uL00KY29uZGVuc2UvRFJTWkcKY29uZGVuc2VyL00KY29uZGVzY2VuZGluZy9ZCmNvbmRlc2NlbnNpb24vTQpjb25kaWduCmNvbmRpbWVudC9NUwpjb25kaXRpb24ncwpjb25kaXRpb24vQUdTRApjb25kaXRpb25hbC9TTVkKY29uZGl0aW9uZWQvVQpjb25kaXRpb25lci9TTQpjb25kaXRpb25pbmcvTQpjb25kby9TTQpjb25kb2xlbmNlL1NNCmNvbmRvbS9TTQpjb25kb21pbml1bS9NUwpjb25kb25lL0RTRwpjb25kb3IvU00KY29uZHVjZS9EU0dWCmNvbmR1Y3QvTURHVgpjb25kdWN0YW5jZS9NCmNvbmR1Y3RpYmlsaXR5L00KY29uZHVjdGlibGUKY29uZHVjdGlvbi9NCmNvbmR1Y3Rpdml0eS9NCmNvbmR1Y3Rvci9NUwpjb25kdWN0cmVzcy9NUwpjb25kdWl0L1NNCmNvbmUvTQpjb25leXMKY29uZmFiL1NNCmNvbmZhYmJlZApjb25mYWJiaW5nCmNvbmZhYnVsYXRlL1hEU0dOCmNvbmZhYnVsYXRpb24vTQpjb25mZWN0aW9uL1NaTVIKY29uZmVjdGlvbmVyL00KY29uZmVjdGlvbmVyeS9TTQpjb25mZWRlcmFjeS9TTQpjb25mZWRlcmF0ZS9NCmNvbmZlci9TCmNvbmZlcmVlL1NNCmNvbmZlcmVuY2UvTUdTCmNvbmZlcnJhYmxlCmNvbmZlcnJhbC9NCmNvbmZlcnJlZApjb25mZXJyZXIvTVMKY29uZmVycmluZwpjb25mZXNzZWQvWQpjb25mZXNzaW9uL1NNCmNvbmZlc3Npb25hbC9TTQpjb25mZXNzb3IvTVMKY29uZmV0dGkvTQpjb25maWRhbnQvTVMKY29uZmlkYW50ZS9TTQpjb25maWRlL0RSU1pHCmNvbmZpZGVuY2UvU00KY29uZmlkZW50L1kKY29uZmlkZW50aWFsL1kKY29uZmlkZW50aWFsaXR5L00KY29uZmlkZXIvTQpjb25maWRpbmcvWQpjb25maWd1cmF0aW9uL1MKY29uZmlndXJlL0IKY29uZmluZWQvVQpjb25maW5lbWVudC9NUwpjb25maXJtL0FTREcKY29uZmlybWF0aW9uL0FTTQpjb25maXJtYXRvcnkKY29uZmlybWVkL1UKY29uZmlzY2F0ZS9EU0dOWApjb25maXNjYXRpb24vTQpjb25maXNjYXRvci9TTQpjb25maXNjYXRvcnkKY29uZmxhZ3JhdGlvbi9NUwpjb25mbGF0ZS9YRFNHTgpjb25mbGF0aW9uL00KY29uZmxpY3QvU0dNRApjb25mbHVlbmNlL01TCmNvbmZsdWVudApjb25mb3JtL1pCCmNvbmZvcm1hYmxlL1UKY29uZm9ybWFuY2UvTQpjb25mb3JtaXNtL00KY29uZm9ybWlzdC9TTQpjb25mb3JtaXR5L00KY29uZnJlcmUvTVMKY29uZnJvbnRhdGlvbi9TTQpjb25mcm9udGF0aW9uYWwKY29uZnVzZS9SWgpjb25mdXNlZC9ZCmNvbmZ1c2luZy9ZCmNvbmZ1dGF0aW9uL00KY29uZnV0ZS9EU0cKY29uZ2EvU01ERwpjb25nZWFsL1NMREcKY29uZ2VhbG1lbnQvTQpjb25nZXIvU00KY29uZ2VyaWVzL00KY29uZ2VzdC9TREdWCmNvbmdlc3Rpb24vTQpjb25nbG9tZXJhdGUvRFNYTUdOCmNvbmdsb21lcmF0aW9uL00KY29uZ3JhdHMvTQpjb25ncmF0dWxhdGUvWEdORFMKY29uZ3JhdHVsYXRpb24vTQpjb25ncmF0dWxhdG9yeQpjb25ncmVnYW50L01TCmNvbmdyZWdhdGUvR05EU1gKY29uZ3JlZ2F0aW9uL00KY29uZ3JlZ2F0aW9uYWwKY29uZ3JlZ2F0aW9uYWxpc20vTQpjb25ncmVnYXRpb25hbGlzdC9NUwpjb25ncmVzcy9NUwpjb25ncmVzc2lvbmFsCmNvbmdyZXNzbWFuL00KY29uZ3Jlc3NtZW4KY29uZ3Jlc3NwZW9wbGUKY29uZ3Jlc3NwZXJzb24vTVMKY29uZ3Jlc3N3b21hbi9NCmNvbmdyZXNzd29tZW4KY29uZ3J1ZW5jZS9NCmNvbmdydWVudC9ZCmNvbmdydWl0eS9JU00KY29uZ3J1b3VzCmNvbmljL1NNCmNvbmljYWwvWQpjb25pZmVyL1NNCmNvbmlmZXJvdXMKY29uamVjdHVyYWwKY29uamVjdHVyZS9NR0RTCmNvbmpvaW50CmNvbmp1Z2FsL1kKY29uanVnYXRlL0RTWEdOCmNvbmp1Z2F0aW9uL00KY29uanVuY3QvVk1TCmNvbmp1bmN0aXZhL1NNCmNvbmp1bmN0aXZlL1NNCmNvbmp1bmN0aXZpdGlzL00KY29uanVyYXRpb24vTVMKY29uanVyZS9EUlNaRwpjb25qdXJlci9NCmNvbmsvTURSWgpjb25tYW4KY29ubmVjdC9BRURWR1MKY29ubmVjdGFibGUKY29ubmVjdGVkL1UKY29ubmVjdGlvbi9FTVMKY29ubmVjdGl2ZS9NUwpjb25uZWN0aXZpdHkvTQpjb25uZWN0b3IvTVMKY29ubmVkCmNvbm5pbmcKY29ubmlwdGlvbi9NUwpjb25uaXZhbmNlL00KY29ubml2ZS9EUlNaRwpjb25uaXZlci9NCmNvbm5vaXNzZXVyL1NNCmNvbm5vdGF0aXZlCmNvbm51YmlhbApjb25xdWVyL0FTREcKY29ucXVlcmFibGUvVQpjb25xdWVyZWQvVQpjb25xdWVyb3IvTVMKY29ucXVlc3QvQU0KY29ucXVpc3RhZG9yL1NNCmNvbnMvRFNHCmNvbnNhbmd1aW5lb3VzCmNvbnNhbmd1aW5pdHkvTQpjb25zY2llbmNlbGVzcwpjb25zY2llbnRpb3VzL1BZCmNvbnNjaWVudGlvdXNuZXNzL00KY29uc2Npb3VzL1VZUApjb25zY2lvdXNuZXNzL1VNCmNvbnNjaW91c25lc3Nlcwpjb25zY3JpcHRpb24vTQpjb25zZWNyYXRlL0FEU0dOCmNvbnNlY3JhdGVkL1UKY29uc2VjcmF0aW9uL0FNCmNvbnNlY3JhdGlvbnMKY29uc2VjdXRpdmUvWQpjb25zZW5zdWFsCmNvbnNlbnN1cy9NUwpjb25zZW50L1NNREcKY29uc2VxdWVuY2UvU00KY29uc2VxdWVudC9ZCmNvbnNlcXVlbnRpYWwvSVkKY29uc2VydmFuY3kvU00KY29uc2VydmF0aW9uL00KY29uc2VydmF0aW9uaXNtL00KY29uc2VydmF0aW9uaXN0L1NNCmNvbnNlcnZhdGlzbS9NCmNvbnNlcnZhdGl2ZS9NWVMKY29uc2VydmF0b2lyZS9TCmNvbnNlcnZhdG9yL1NNCmNvbnNlcnZhdG9yeS9TTQpjb25zaWRlci9BR1NECmNvbnNpZGVyYWJsZS9JCmNvbnNpZGVyYWJseQpjb25zaWRlcmF0ZS9JUFlOCmNvbnNpZGVyYXRlbmVzcy9JTQpjb25zaWRlcmF0aW9uL0FJTQpjb25zaWRlcmF0aW9ucwpjb25zaWRlcmVkL1UKY29uc2lnbi9BU0RHCmNvbnNpZ25lZS9NUwpjb25zaWdubWVudC9NUwpjb25zaXN0L1NERwpjb25zaXN0ZW5jZS9NUwpjb25zaXN0ZW5jeS9JU00KY29uc2lzdGVudC9JWQpjb25zaXN0b3J5L1NNCmNvbnNvbGFibGUvSQpjb25zb2xhdGlvbi9NUwpjb25zb2xhdG9yeQpjb25zb2xpZGF0ZS9YRFNHTgpjb25zb2xpZGF0ZWQvVQpjb25zb2xpZGF0aW9uL00KY29uc29saWRhdG9yL01TCmNvbnNvbGluZy9ZCmNvbnNvbW1lL00KY29uc29uYW5jZS9TTQpjb25zb25hbnQvU01ZCmNvbnNvcnRpYQpjb25zb3J0aXVtL00KY29uc3BlY3R1cy9NUwpjb25zcGljdW91cy9JUFkKY29uc3BpY3VvdXNuZXNzL0lNCmNvbnNwaXJhY3kvU00KY29uc3BpcmF0b3IvTVMKY29uc3BpcmF0b3JpYWwvWQpjb25zcGlyZS9HRApjb25zdGFibGUvU00KY29uc3RhYnVsYXJ5L1NNCmNvbnN0YW5jeS9JTQpjb25zdGFudC9NWVMKY29uc3RlbGxhdGlvbi9TTQpjb25zdGVybmF0aW9uL00KY29uc3RpcGF0ZS9HTkRTCmNvbnN0aXBhdGlvbi9NCmNvbnN0aXR1ZW5jeS9TTQpjb25zdGl0dWVudC9TTQpjb25zdGl0dXRlL0FEU0dOVgpjb25zdGl0dXRpb24vQU0KY29uc3RpdHV0aW9uYWwvTVlTCmNvbnN0aXR1dGlvbmFsaXNtCmNvbnN0aXR1dGlvbmFsaXR5L1VNCmNvbnN0aXR1dGlvbnMKY29uc3RyYWluZWQvVQpjb25zdHJhaW50L1NNCmNvbnN0cmljdC9HVlNECmNvbnN0cmljdGlvbi9TTQpjb25zdHJpY3Rvci9TTQpjb25zdHJ1YWJsZQpjb25zdHJ1Y3Qncwpjb25zdHJ1Y3QvQ0FEVkdTCmNvbnN0cnVjdGlvbi9DQU1TCmNvbnN0cnVjdGlvbmFsCmNvbnN0cnVjdGlvbmlzdCdzCmNvbnN0cnVjdGlvbmlzdC9DUwpjb25zdHJ1Y3RpdmUvWVAKY29uc3RydWN0aXZlbmVzcy9NCmNvbnN0cnVjdG9yL01TCmNvbnN0cnVlL0dEUwpjb25zdWwvS1NNCmNvbnN1bGFyL0sKY29uc3VsYXRlL1NNCmNvbnN1bHNoaXAvTQpjb25zdWx0L0dTRApjb25zdWx0YW5jeS9TTQpjb25zdWx0YW50L01TCmNvbnN1bHRhdGlvbi9NUwpjb25zdWx0YXRpdmUKY29uc3VtYWJsZS9TTQpjb25zdW1lL0JEUlNaRwpjb25zdW1lZC9VCmNvbnN1bWVyL00KY29uc3VtZXJpc20vTQpjb25zdW1lcmlzdC9NUwpjb25zdW1tYXRlL1lHTlhEUwpjb25zdW1tYXRlZC9VCmNvbnN1bXB0aW9uL00KY29uc3VtcHRpdmUvU00KY29udApjb250YWN0L0FTREcKY29udGFjdGFibGUKY29udGFnaW9uL01TCmNvbnRhZ2lvdXMvUFkKY29udGFnaW91c25lc3MvTQpjb250YWluL1NCTERSWkcKY29udGFpbmVyL00KY29udGFpbmVyaXphdGlvbi9NCmNvbnRhaW5lcml6ZS9EU0cKY29udGFpbm1lbnQvTQpjb250YW1pbmFudC9TTQpjb250YW1pbmF0ZS9BQ0RTRwpjb250YW1pbmF0ZWQvVQpjb250YW1pbmF0aW9uL0NNCmNvbnRhbWluYXRvci9TTQpjb250ZApjb250ZW1uL1NERwpjb250ZW1wbGF0ZS9EU0dOVgpjb250ZW1wbGF0aW9uL00KY29udGVtcGxhdGl2ZS9TTVkKY29udGVtcG9yYW5laXR5L00KY29udGVtcG9yYW5lb3VzL1kKY29udGVtcHQvTQpjb250ZW1wdGlibGUKY29udGVtcHRpYmx5CmNvbnRlbXB0dW91cy9ZUApjb250ZW1wdHVvdXNuZXNzL00KY29udGVuZGVyL01TCmNvbnRlbnQvRVNMTURHCmNvbnRlbnRlZC9FWQpjb250ZW50ZWRuZXNzL00KY29udGVudGlvbi9TTQpjb250ZW50aW91cy9ZUApjb250ZW50aW91c25lc3MvTQpjb250ZW50bHkKY29udGVudG1lbnQvRU0KY29udGVybWlub3VzL1kKY29udGVzdGFibGUvSQpjb250ZXN0YW50L01TCmNvbnRlc3RlZC9VCmNvbnRleHR1YWxpemF0aW9uCmNvbnRleHR1YWxpemUvRFNHCmNvbnRpZ3VpdHkvTQpjb250aWd1b3VzL1kKY29udGluZW5jZS9JTQpjb250aW5lbnQvU00KY29udGluZW50YWwvU00KY29udGluZ2VuY3kvU00KY29udGluZ2VudC9TTVkKY29udGludWEKY29udGludWFsL1kKY29udGludWFuY2UvRU1TCmNvbnRpbnVhdGlvbi9FTVMKY29udGludWUvRUdEUwpjb250aW51aXR5L0VTTQpjb250aW51b3VzL0VZCmNvbnRpbnV1bS9NCmNvbnRvcnQvR0QKY29udG9ydGlvbi9NUwpjb250b3J0aW9uaXN0L1NNCmNvbnRyYWJhbmQvTQpjb250cmFiYXNzb29uL1MKY29udHJhY2VwdGlvbi9NCmNvbnRyYWNlcHRpdmUvU00KY29udHJhY3QvTURHCmNvbnRyYWN0aWJsZQpjb250cmFjdGlsZQpjb250cmFjdGlsaXR5CmNvbnRyYWN0aW9uL1MKY29udHJhY3R1YWwvWQpjb250cmFkaWN0L1NERwpjb250cmFkaWN0aW9uL1NNCmNvbnRyYWRpY3RvcnkKY29udHJhZGlzdGluY3Rpb24vTVMKY29udHJhZmxvdy9TCmNvbnRyYWlsL01TCmNvbnRyYWluZGljYXRlL0dOWERTCmNvbnRyYWluZGljYXRpb24vTQpjb250cmFsdG8vU00KY29udHJhcHRpb24vU00KY29udHJhcHVudGFsL1kKY29udHJhcmlhbi9TTQpjb250cmFyaWFuaXNtCmNvbnRyYXJpZXR5L00KY29udHJhcmlseQpjb250cmFyaW5lc3MvTQpjb250cmFyaXdpc2UKY29udHJhcnkvUFNNCmNvbnRyYXN0L01ER1MKY29udHJhdmVuZS9HRFMKY29udHJhdmVudGlvbi9TTQpjb250cmV0ZW1wcy9NCmNvbnRyaWJ1dGUvWEdORApjb250cmlidXRpb24vTQpjb250cmlidXRvci9NUwpjb250cmlidXRvcnkKY29udHJpdGlvbi9NCmNvbnRyaXZhbmNlL01TCmNvbnRyaXZlL1pHRFJTCmNvbnRyaXZlci9NCmNvbnRyb2wncwpjb250cm9sL0NTCmNvbnRyb2xsYWJsZS9VCmNvbnRyb2xsZWQvVUMKY29udHJvbGxlci9NUwpjb250cm9sbGluZy9DCmNvbnRyb3ZlcnNpYWwvWQpjb250cm92ZXJzeS9TTQpjb250cm92ZXJ0L0RTRwpjb250cm92ZXJ0aWJsZS9JCmNvbnR1bWFjaW91cy9ZCmNvbnR1bWFjeS9NCmNvbnR1bWVsaW91cwpjb250dW1lbHkvU00KY29udHVzZS9YRFNHTgpjb250dXNpb24vTQpjb251bmRydW0vU00KY29udXJiYXRpb24vTVMKY29udmFsZXNjZS9EU0cKY29udmFsZXNjZW5jZS9NUwpjb252YWxlc2NlbnQvU00KY29udmVjdGlvbi9NCmNvbnZlY3Rpb25hbApjb252ZWN0aXZlCmNvbnZlY3Rvci9TCmNvbnZlbmUvQURTRwpjb252ZW5lci9NUwpjb252ZW5pZW5jZS9JTVMKY29udmVuaWVudC9JWQpjb252ZW50L1NNCmNvbnZlbnRpY2xlL01TCmNvbnZlbnRpb24vU00KY29udmVudGlvbmFsL1VZCmNvbnZlbnRpb25hbGl0eS9VTQpjb252ZW50aW9uYWxpemUvR0RTCmNvbnZlbnRpb25lZXIvUwpjb252ZXJnZW5jZS9NUwpjb252ZXJnZW50CmNvbnZlcnNhbnQKY29udmVyc2F0aW9uL01TCmNvbnZlcnNhdGlvbmFsL1kKY29udmVyc2F0aW9uYWxpc3QvU00KY29udmVyc2UvWQpjb252ZXJ0J3MKY29udmVydC9BR1NECmNvbnZlcnRlZC9VCmNvbnZlcnRlci9TTQpjb252ZXJ0aWJpbGl0eS9NCmNvbnZlcnRpYmxlL1NNCmNvbnZleC9ZCmNvbnZleGl0eS9NCmNvbnZleS9TQkRHCmNvbnZleWFuY2UvTUdTCmNvbnZleW9yL01TCmNvbnZpY3QvR1NNRApjb252aWN0aW9uL01TCmNvbnZpbmNlL0dEUwpjb252aW5jZWQvVQpjb252aW5jaW5nL1VZCmNvbnZpdmlhbC9ZCmNvbnZpdmlhbGl0eS9NCmNvbnZva2UvRFNHCmNvbnZvbHV0ZWQKY29udm9sdXRpb24vTVMKY29udm95L1NNREcKY29udnVsc2UvR05WWERTCmNvbnZ1bHNpb24vTQpjb252dWxzaXZlL1kKY29ueS9NCmNvby9HU01ECmNvb2sncwpjb29rL0FER1MKY29va2Jvb2svTVMKY29va2VkL1UKY29va2VyL1NNCmNvb2tlcnkvU00KY29va2hvdXNlL1MKY29va2llL1NNCmNvb2tpbmcvTQpjb29rb3V0L1NNCmNvb2t3YXJlL1NNCmNvb2wvTURSWVpUR1BTCmNvb2xhbnQvU00KY29vbGVyL00KY29vbGllL1NNCmNvb2xuZXNzL00KY29vbi9NUyEKY29vbnNraW4vTVMKY29vcC9NRFJaR1MKY29vcGVyL01ERwpjb29wZXJhZ2UvTQpjb29wZXJhdGUvRFNHTlYKY29vcGVyYXRpb24vTQpjb29wZXJhdGl2ZS9QTVlTCmNvb3BlcmF0aXZlbmVzcy9NCmNvb3BlcmF0b3IvU00KY29vcmRpbmF0ZS9EU01ZR04KY29vcmRpbmF0ZWQvVQpjb29yZGluYXRpb24vTQpjb29yZGluYXRvci9NUwpjb290L01TCmNvb3RpZS9TTQpjb3AvR0pTTUQKY29wYWNldGljCmNvcGF5L00KY29wZS9NUwpjb3BpZXIvU00KY29waWxvdC9TTQpjb3BpbmcvTQpjb3Bpb3VzL1BZCmNvcGlvdXNuZXNzL00KY29wcGVkCmNvcHBlci9TTQpjb3BwZXJoZWFkL1NNCmNvcHBlcnBsYXRlL00KY29wcGVyeQpjb3BwaW5nCmNvcHJhL00KY29wc2UvU00KY29wdGVyL1NNCmNvcHVsYS9TTQpjb3B1bGF0ZS9HTlZEUwpjb3B1bGF0aW9uL00KY29wdWxhdGl2ZS9TTQpjb3B5J3MKY29weS9BRFNHCmNvcHlib29rL1NNCmNvcHljYXQvTVMKY29weWNhdHRlZApjb3B5Y2F0dGluZwpjb3B5aXN0L01TCmNvcHlsZWZ0CmNvcHlyaWdodC9HU01ECmNvcHl3cml0ZXIvTVMKY29xdWV0cnkvU00KY29xdWV0dGUvRFNNRwpjb3F1ZXR0aXNoL1kKY29yCmNvcmFjbGUvU00KY29yYWwvU00KY29yYmVsL1NNCmNvcmQvRUFTR0RNCmNvcmRhZ2UvTQpjb3JkaWFsL1NNWQpjb3JkaWFsaXR5L00KY29yZGlsbGVyYS9NUwpjb3JkaXRlL00KY29yZGxlc3MKY29yZG9uL1NNREcKY29yZG92YW4vTQpjb3JkdXJveS9NUwpjb3JkdXJveXMvTQpjb3JlL01aR0RSUwpjb3JlbGlnaW9uaXN0L1MKY29yZXIvTQpjb3Jlc3BvbmRlbnQvTVMKY29yZ2kvU00KY29yaWFuZGVyL00KY29yaydzCmNvcmsvVURHUwpjb3JrYWdlCmNvcmtlci9TTQpjb3Jrc2NyZXcvU01ERwpjb3JtL01TCmNvcm1vcmFudC9TTQpjb3JuL01EUlpHUwpjb3JuYmFsbC9NUwpjb3JuYnJlYWQvTQpjb3JuY29iL01TCmNvcm5jcmFrZS9TCmNvcm5lYS9TTQpjb3JuZWFsCmNvcm5lci9HTUQKY29ybmVyc3RvbmUvU00KY29ybmV0L1NNCmNvcm5maWVsZC9TCmNvcm5mbGFrZXMvTQpjb3JuZmxvdXIKY29ybmZsb3dlci9TTQpjb3JuaWNlL01TCmNvcm5pbHkKY29ybmluZXNzL00KY29ybm1lYWwvTQpjb3Jucm93L01ER1MKY29ybnN0YWxrL1NNCmNvcm5zdGFyY2gvTQpjb3JudWNvcGlhL01TCmNvcm55L1BSVApjb3JvbGxhL01TCmNvcm9sbGFyeS9TTQpjb3JvbmEvU00KY29yb25hbC9NUwpjb3JvbmFyeS9TTQpjb3JvbmF0aW9uL1NNCmNvcm9uZXIvTVMKY29yb25ldC9NUwpjb3JwCmNvcnBvcmEKY29ycG9yYWwvU00KY29ycG9yYXRlL1hZTgpjb3Jwb3JhdGlvbi9JTQpjb3Jwb3JhdGlzbQpjb3Jwb3JlYWwvWQpjb3Jwb3JlYWxpdHkvTQpjb3Jwcy9NUwpjb3Jwc2UvTQpjb3Jwc21hbi9NCmNvcnBzbWVuCmNvcnB1bGVuY2UvTQpjb3JwdWxlbnQKY29ycHVzL00KY29ycHVzY2xlL01TCmNvcnB1c2N1bGFyCmNvcnIKY29ycmFsL1NNCmNvcnJhbGxlZApjb3JyYWxsaW5nCmNvcnJlY3QvRFJZVEdWU0JQCmNvcnJlY3RlZC9VCmNvcnJlY3Rpb24vU00KY29ycmVjdGlvbmFsCmNvcnJlY3RpdmUvU00KY29ycmVjdG5lc3MvSU0KY29ycmVjdG9yCmNvcnJlbGF0ZS9YRFNNR05WCmNvcnJlbGF0ZWQvVQpjb3JyZWxhdGlvbi9NCmNvcnJlbGF0aXZlL01TCmNvcnJlc3BvbmQvU0RHCmNvcnJlc3BvbmRlbmNlL1NNCmNvcnJlc3BvbmRlbnQvU00KY29ycmVzcG9uZGluZy9ZCmNvcnJpZG9yL1NNCmNvcnJpZS9TCmNvcnJvYm9yYXRlL0dOVkRTWApjb3Jyb2JvcmF0ZWQvVQpjb3Jyb2JvcmF0aW9uL00KY29ycm9ib3JhdG9yL1NNCmNvcnJvYm9yYXRvcnkKY29ycm9kZS9HRFMKY29ycm9zaW9uL00KY29ycm9zaXZlL1NNWQpjb3JydWdhdGUvR05YRFMKY29ycnVnYXRpb24vTQpjb3JydXB0L0RSWVBTVEcKY29ycnVwdGliaWxpdHkvSU0KY29ycnVwdGlibGUvSQpjb3JydXB0aW9uL01TCmNvcnJ1cHRuZXNzL00KY29yc2FnZS9NUwpjb3JzYWlyL01TCmNvcnNldC9TR01ECmNvcnRlZ2UvTVMKY29ydGV4L00KY29ydGljYWwKY29ydGljZXMKY29ydGlzb25lL00KY29ydW5kdW0vTQpjb3J1c2NhdGUvR05EUwpjb3J1c2NhdGlvbi9NCmNvcnZldHRlL1NNCmNvcy9NCmNvc2gvRFNHCmNvc2lnbi9aR1NEUgpjb3NpZ25hdG9yeS9TTQpjb3NpZ25lci9NCmNvc2luZS9TTQpjb3NtZXRpYy9TTQpjb3NtZXRpY2FsbHkKY29zbWV0aWNpYW4vTVMKY29zbWV0b2xvZ2lzdC9NUwpjb3NtZXRvbG9neS9NCmNvc21pYwpjb3NtaWNhbGx5CmNvc21vZ29uaXN0L1NNCmNvc21vZ29ueS9TTQpjb3Ntb2xvZ2ljYWwKY29zbW9sb2dpc3QvU00KY29zbW9sb2d5L1NNCmNvc21vbmF1dC9TTQpjb3Ntb3BvbGl0YW4vTVMKY29zbW9wb2xpdGFuaXNtL00KY29zbW9zL01TCmNvc3BsYXkKY29zcG9uc29yL0dTTUQKY29zc2V0L1NHRApjb3NzZXR0ZWQKY29zc2V0dGluZwpjb3N0L01EWUdTSgpjb3N0YXIvU00KY29zdGFycmVkCmNvc3RhcnJpbmcKY29zdGxpbmVzcy9NCmNvc3RseS9QVFIKY29zdHVtZS9NWkdEUlMKY29zdHVtZXIvTQpjb3N0dW1pZXIvUwpjb3QvU00KY290YW5nZW50L01TCmNvdGUvTVMKY290ZXJpZS9NUwpjb3Rlcm1pbm91cwpjb3RpbGxpb24vU00KY290dGFnZS9NWkdSUwpjb3R0YWdlci9NCmNvdHRhci9TTQpjb3R0ZXIvU00KY290dG9uL1NHTUQKY290dG9ubW91dGgvTQpjb3R0b25tb3V0aHMKY290dG9uc2VlZC9NUwpjb3R0b250YWlsL01TCmNvdHRvbndvb2QvU00KY290dG9ueQpjb3R5bGVkb24vTVMKY291Y2gvTURTRwpjb3VjaGV0dGUvUwpjb3VnYXIvU00KY291Z2gvTURHCmNvdWdocwpjb3VsZApjb3VsZCd2ZQpjb3VsZG4ndApjb3VsZWUvU00KY291bGlzCmNvdWxvbWIvTVMKY291bmNpbC9NUwpjb3VuY2lsbWFuL00KY291bmNpbG1lbgpjb3VuY2lsb3IvTVMKY291bmNpbHBlcnNvbi9TTQpjb3VuY2lsd29tYW4vTQpjb3VuY2lsd29tZW4KY291bnNlbC9KTURHUwpjb3Vuc2Vsb3IvTVMKY291bnQvRUFTTURHCmNvdW50YWJsZS9VCmNvdW50YWJseQpjb3VudGRvd24vTVMKY291bnRlZC9VCmNvdW50ZW5hbmNlJ3MKY291bnRlbmFuY2UvRUdEUwpjb3VudGVyL0VNUwpjb3VudGVyYWN0L1NHVkQKY291bnRlcmFjdGlvbi9NUwpjb3VudGVyYXJndW1lbnQvUwpjb3VudGVyYXR0YWNrL0dNRFMKY291bnRlcmJhbGFuY2UvTUdEUwpjb3VudGVyYmxhc3QvUwpjb3VudGVyY2xhaW0vR1NNRApjb3VudGVyY2xvY2t3aXNlCmNvdW50ZXJjdWx0dXJlL1NNCmNvdW50ZXJlZApjb3VudGVyZXNwaW9uYWdlL00KY291bnRlcmV4YW1wbGUvUwpjb3VudGVyZmFjdHVhbApjb3VudGVyZmVpdC9aR01EUlMKY291bnRlcmZlaXRlci9NCmNvdW50ZXJmb2lsL01TCmNvdW50ZXJpbmcKY291bnRlcmluc3VyZ2VuY3kvU00KY291bnRlcmludGVsbGlnZW5jZS9NCmNvdW50ZXJtYW4vTQpjb3VudGVybWFuZC9HTURTCmNvdW50ZXJtZWFzdXJlL1NNCmNvdW50ZXJtZWxvZHkvUwpjb3VudGVybWVuCmNvdW50ZXJtb3ZlL1MKY291bnRlcm9mZmVuc2l2ZS9TTQpjb3VudGVyb2ZmZXIvU00KY291bnRlcnBhbmUvU00KY291bnRlcnBhcnQvU00KY291bnRlcnBldGl0aW9uCmNvdW50ZXJwb2ludC9NREdTCmNvdW50ZXJwb2lzZS9NR0RTCmNvdW50ZXJwcm9kdWN0aXZlCmNvdW50ZXJyZXZvbHV0aW9uL1NNCmNvdW50ZXJyZXZvbHV0aW9uYXJ5L1NNCmNvdW50ZXJzaWduL0dTTUQKY291bnRlcnNpZ25hdHVyZS9NUwpjb3VudGVyc2luay9HU00KY291bnRlcnNweS9TTQpjb3VudGVyc3Vuawpjb3VudGVydGVub3IvTVMKY291bnRlcnZhaWwvR1NECmNvdW50ZXJ3ZWlnaHQvTVMKY291bnRlc3MvTVMKY291bnRsZXNzCmNvdW50cmlmaWVkCmNvdW50cnkvU00KY291bnRyeW1hbi9NCmNvdW50cnltZW4KY291bnRyeXNpZGUvTVMKY291bnRyeXdpZGUKY291bnRyeXdvbWFuL00KY291bnRyeXdvbWVuCmNvdW50eS9TTQpjb3VudHl3aWRlCmNvdXAncwpjb3VwL0FTCmNvdXBlL1NNCmNvdXBsZSdzCmNvdXBsZS9VQ0dTRApjb3VwbGV0L01TCmNvdXBsaW5nL1NNCmNvdXBvbi9TTQpjb3VyYWdlL00KY291cmFnZW91cy9ZUApjb3VyYWdlb3VzbmVzcy9NCmNvdXJnZXR0ZS9TCmNvdXJpZXIvTURTRwpjb3Vyc2UvRURHTVMKY291cnNlYm9vay9TCmNvdXJzZXIvTVMKY291cnNld29yawpjb3VydC9TTURZRwpjb3VydGVvdXMvRVkKY291cnRlb3VzbmVzcy9NCmNvdXJ0ZXNhbi9TTQpjb3VydGVzeS9FU00KY291cnRob3VzZS9NUwpjb3VydGllci9TTQpjb3VydGxpbmVzcy9NCmNvdXJ0bHkvUFJUCmNvdXJ0cm9vbS9NUwpjb3VydHNoaXAvTVMKY291cnR5YXJkL01TCmNvdXNjb3VzL00KY291c2luL1NNCmNvdXR1cmUvTQpjb3V0dXJpZXIvTVMKY292ZS9NUwpjb3Zlbi9TTQpjb3ZlbmFudC9NRFNHCmNvdmVyJ3MKY292ZXIvQUVVR0RTCmNvdmVyYWdlL00KY292ZXJhbGwvTVMKY292ZXJpbmcncwpjb3ZlcmluZ3MKY292ZXJsZXQvTVMKY292ZXJ0L1NQTVkKY292ZXJ0bmVzcy9NCmNvdmV0L1NERwpjb3ZldG91cy9ZUApjb3ZldG91c25lc3MvTQpjb3ZleS9TTQpjb3cvWkdTTURSCmNvd2FyZC9TTVkKY293YXJkaWNlL00KY293YXJkbGluZXNzL00KY293YmVsbC9NUwpjb3diaXJkL01TCmNvd2JveS9TTQpjb3djYXRjaGVyL01TCmNvd2VyL0RHCmNvd2dpcmwvTVMKY293aGFuZC9NUwpjb3doZXJkL01TCmNvd2hpZGUvTVMKY293bC9NR1NKCmNvd2xpY2svTVMKY293bGluZy9NCmNvd21hbi9NCmNvd21lbgpjb3dvcmtlci9NUwpjb3dwYXQvUwpjb3dwb2tlL01TCmNvd3BveC9NCmNvd3B1bmNoZXIvU00KY293cmllL1NNCmNvd3NoZWQvUwpjb3dzbGlwL1NNCmNveC9HRFMKY294Y29tYi9NUwpjb3hzd2Fpbi9NUwpjb3kvVFBSWQpjb3luZXNzL00KY295b3RlL1NNCmNveXB1L1NNCmNvemVuL1NERwpjb3plbmFnZS9NCmNvemlseQpjb3ppbmVzcy9NCmNvenkvUlNNVFAKY3BkCmNwbApjcHMKY3JhYi9NUwpjcmFiYmVkCmNyYWJiZXIvU00KY3JhYmJpbHkKY3JhYmJpbmVzcy9NCmNyYWJiaW5nCmNyYWJieS9QUlQKY3JhYmdyYXNzL00KY3JhYmxpa2UKY3JhYndpc2UKY3JhY2svU01EUllaR0oKY3JhY2tkb3duL01TCmNyYWNrZXIvTQpjcmFja2VyamFjay9NUwpjcmFja2hlYWQvTVMKY3JhY2tsZS9EU0pNRwpjcmFja2xpbmcvTQpjcmFja3BvdC9NUwpjcmFja3VwL1NNCmNyYWRsZS9EU01HCmNyYWZ0L1NNREcKY3JhZnRpbHkKY3JhZnRpbmVzcy9NCmNyYWZ0c21hbi9NCmNyYWZ0c21hbnNoaXAvTQpjcmFmdHNtZW4KY3JhZnRzcGVvcGxlCmNyYWZ0c3dvbWFuL00KY3JhZnRzd29tZW4KY3JhZnR5L1JUUApjcmFnL01TCmNyYWdnaW5lc3MvTQpjcmFnZ3kvUlBUCmNyYW0vUwpjcmFtbWVkCmNyYW1tZXIvUwpjcmFtbWluZwpjcmFtcC9TTURHCmNyYW1waW5nL00KY3JhbXBvbi9TTQpjcmFuYmVycnkvU00KY3JhbmUvRFNNRwpjcmFuaWFsCmNyYW5pdW0vU00KY3JhbmsvU01ERwpjcmFua2Nhc2UvU00KY3JhbmtpbHkKY3JhbmtpbmVzcy9NCmNyYW5rc2hhZnQvTVMKY3Jhbmt5L1BSVApjcmFubnkvRFNNCmNyYXAvTVMKY3JhcGUvU00KY3JhcHBlZApjcmFwcGVyL1MKY3JhcHBpZS9SU01UCmNyYXBwaW5nCmNyYXBweQpjcmFwcy9NCmNyYXBzaG9vdGVyL01TCmNyYXNoL01EU0cKY3Jhc3MvUllUUApjcmFzc25lc3MvTQpjcmF0ZS9EUlNNWkcKY3JhdGVyL01ERwpjcmF2YXQvU00KY3JhdmUvRFNHSgpjcmF2ZW4vU01ZUApjcmF2ZW5uZXNzL00KY3JhdmluZy9NCmNyYXcvTVMKY3Jhd2RhZC9TTQpjcmF3bC9TTURSWkcKY3Jhd2xlci9NCmNyYXdsc3BhY2UvU00KY3Jhd2x5L1RSU00KY3JheS9TCmNyYXlmaXNoL01TCmNyYXlvbGEvUwpjcmF5b24vR1NNRApjcmF6ZS9EU01HCmNyYXppbHkKY3JhemluZXNzL00KY3JhenkvUFJTTVQKY3JlYWsvU01ERwpjcmVha2lseQpjcmVha2luZXNzL00KY3JlYWt5L1JQVApjcmVhbS9TTURSWkcKY3JlYW1lci9NCmNyZWFtZXJ5L1NNCmNyZWFtaWx5CmNyZWFtaW5lc3MvTQpjcmVhbXkvUlBUCmNyZWFzZS9JQ0dNU0QKY3JlYXRlL0tBRFNHTlYKY3JlYXRpb24ncy9LCmNyZWF0aW9uL0FTTQpjcmVhdGlvbmlzbS9TTQpjcmVhdGlvbmlzdC9TTQpjcmVhdGl2ZS9TTVlQCmNyZWF0aXZlbmVzcy9NCmNyZWF0aXZpdHkvTQpjcmVhdG9yL01TCmNyZWF0dXJlL1NNCmNyZWNoZS9TTQpjcmVkCmNyZWRlbmNlL00KY3JlZGVudGlhbC9TR01ECmNyZWRlbnphL1NNCmNyZWRpYmlsaXR5L0lNCmNyZWRpYmxlL0kKY3JlZGlibHkvSQpjcmVkaXQvRUdTQk1ECmNyZWRpdGFibHkvRQpjcmVkaXRvci9TTQpjcmVkaXR3b3J0aHkvUApjcmVkby9TTQpjcmVkdWxpdHkvSU0KY3JlZHVsb3VzL0lZCmNyZWR1bG91c25lc3MvTQpjcmVlZC9TTQpjcmVlay9TTQpjcmVlbC9TTQpjcmVlcC9TTVJaRwpjcmVlcGVyL00KY3JlZXBpbHkKY3JlZXBpbmVzcy9NCmNyZWVweS9UUFIKY3JlbWFpbnMvTQpjcmVtYXRlL0dORFNYCmNyZW1hdGlvbi9NCmNyZW1hdG9yaWEKY3JlbWF0b3JpdW0vTVMKY3JlbWF0b3J5L1NNCmNyZW1lL1NNCmNyZW5lbGF0ZS9YR05EUwpjcmVuZWxhdGlvbi9NCmNyZW9sZS9TTQpjcmVvc290ZS9NR0RTCmNyZXBlL1NNCmNyZXB0CmNyZXB1c2N1bGFyCmNyZXNjZW5kby9DU00KY3Jlc2NlbnQvTVMKY3Jlc3MvTQpjcmVzdC9TTURHCmNyZXN0ZmFsbGVuCmNyZXN0bGVzcwpjcmV0YWNlb3VzCmNyZXRpbi9TTQpjcmV0aW5pc20vTQpjcmV0aW5vdXMKY3JldG9ubmUvTQpjcmV2YXNzZS9TTQpjcmV2aWNlL01TCmNyZXcvTURHUwpjcmV3ZWwvTQpjcmV3ZWx3b3JrL00KY3Jld21hbi9NCmNyZXdtZW4KY3JpYi9NUwpjcmliYmFnZS9NCmNyaWJiZWQKY3JpYmJlci9NUwpjcmliYmluZwpjcmljay9TTURHCmNyaWNrZXQvTVJTWkcKY3JpY2tldGVyL00KY3JpZXIvTQpjcmlrZXkKY3JpbWUvU00KY3JpbWluYWwvTVlTCmNyaW1pbmFsaXR5L00KY3JpbWluYWxpemUvQ0dEUwpjcmltaW5vbG9naXN0L01TCmNyaW1pbm9sb2d5L00KY3JpbXAvU01ERwpjcmltc29uL1NNREcKY3JpbmdlL0RTTUcKY3JpbmtsZS9EU01HCmNyaW5rbHkvUlQKY3Jpbm9saW5lL1NNCmNyaXBlcwpjcmlwcGxlL0RSU01aRwpjcmlwcGxlci9NCmNyaXBwbGV3YXJlCmNyaXBwbGluZy9ZCmNyaXNlcwpjcmlzaXMvTQpjcmlzcC9TTURSWVRHUApjcmlzcGJyZWFkL1MKY3Jpc3BpbmVzcy9NCmNyaXNwbmVzcy9NCmNyaXNweS9QUlQKY3Jpc3Njcm9zcy9HTURTCmNyaXRlcmlhCmNyaXRlcmlvbi9NCmNyaXRpYy9TTQpjcml0aWNhbC9VWQpjcml0aWNpc20vTVMKY3JpdGljaXplL1pHRFJTCmNyaXRpY2l6ZXIvTQpjcml0aXF1ZS9NR0RTCmNyaXR0ZXIvU00KY3JvYWsvU01ERwpjcm9ha3kvUlQKY3JvY2hldC9TTURSWkcKY3JvY2hldGVyL00KY3JvY2hldGluZy9NCmNyb2NrL1NNRApjcm9ja2VyeS9NCmNyb2NvZGlsZS9TTQpjcm9jdXMvTVMKY3JvZnQvU1JaRwpjcm9pc3NhbnQvTVMKY3JvbmUvU00KY3JvbnkvU00KY3Jvbnlpc20vTQpjcm9vay9TTURHCmNyb29rZWQvUFRSWQpjcm9va2VkbmVzcy9NCmNyb29rbmVjay9TTQpjcm9vbi9TTURSWkcKY3Jvb25lci9NCmNyb3AvTVMKY3JvcGxhbmQvU00KY3JvcHBlZApjcm9wcGVyL01TCmNyb3BwaW5nCmNyb3F1ZXQvTQpjcm9xdWV0dGUvU00KY3Jvc2llci9NUwpjcm9zcydzCmNyb3NzL0FVR1RTRApjcm9zc2Jhci9TTQpjcm9zc2JlYW0vTVMKY3Jvc3Nib25lcy9NCmNyb3NzYm93L1NNCmNyb3NzYm93bWFuL00KY3Jvc3Nib3dtZW4KY3Jvc3NicmVkCmNyb3NzYnJlZWQvU0dNCmNyb3NzY2hlY2svU01ERwpjcm9zc2N1cnJlbnQvTVMKY3Jvc3NjdXQvU00KY3Jvc3NjdXR0aW5nCmNyb3NzZXIKY3Jvc3NmaXJlL01TCmNyb3NzaGF0Y2gvR0RTCmNyb3NzaW5nL1NNCmNyb3NzbHkKY3Jvc3NuZXNzL00KY3Jvc3NvdmVyL01TCmNyb3NzcGF0Y2gvTVMKY3Jvc3NwaWVjZS9TTQpjcm9zc3JvYWQvTVMKY3Jvc3Nyb2Fkcy9NCmNyb3NzdG93bgpjcm9zc3dhbGsvTVMKY3Jvc3N3aW5kL01TCmNyb3Nzd2lzZQpjcm9zc3dvcmQvTVMKY3JvdGNoL01TCmNyb3RjaGV0L1NNCmNyb3RjaGV0eQpjcm91Y2gvR01EUwpjcm91cC9NCmNyb3VwaWVyL00KY3JvdXB5L1pUUgpjcm91dG9uL01TCmNyb3cvTURHUwpjcm93YmFyL01TCmNyb3dkL1NNREcKY3Jvd2RlZC9VCmNyb3dkZnVuZC9TREcKY3Jvd2ZlZXQKY3Jvd2Zvb3QvU00KY3Jvd24vU01ERwpjcm93bmVkL1UKY3J1Y2lhbC9ZCmNydWNpYmxlL1NNCmNydWNpZml4L01TCmNydWNpZml4aW9uL1NNCmNydWNpZm9ybS9TTQpjcnVjaWZ5L0RTRwpjcnVkL00KY3J1ZGR5L1RSCmNydWRlL1JNWVRQCmNydWRlbmVzcy9NCmNydWRpdGVzL00KY3J1ZGl0eS9TTQpjcnVlbC9SWVBUCmNydWVsbmVzcy9NCmNydWVsdHkvU00KY3J1ZXQvU00KY3J1ZnQvU0QKY3J1ZnR5CmNydWlzZS9EUlNNWkcKY3J1aXNlci9NCmNydWxsZXIvTVMKY3J1bWIvU01EWUcKY3J1bWJsZS9NR0RTCmNydW1ibGluZXNzL00KY3J1bWJseS9UUFIKY3J1bWJ5L1RSCmNydW1taW5lc3MvTQpjcnVtbXkvUFRSCmNydW1wZXQvTVMKY3J1bXBsZS9NR0RTCmNydW5jaC9HTURSUwpjcnVuY2hpbmVzcy9NCmNydW5jaHkvVFJQCmNydXBwZXIvTVMKY3J1c2FkZS9NWkdEUlMKY3J1c2FkZXIvTQpjcnVzZS9TTQpjcnVzaC9NRFJTWkcKY3J1c2hlci9NCmNydXNoaW5nL1kKY3J1c3QvU01ERwpjcnVzdGFjZWFuL1NNCmNydXN0YWwKY3J1c3RpbHkKY3J1c3RpbmVzcy9NCmNydXN0eS9UUlAKY3J1dGNoL01TCmNydXgvTVMKY3J5L1pHSkRSU00KY3J5YmFieS9TTQpjcnlvZ2VuaWMvUwpjcnlvZ2VuaWNzL00KY3J5b25pY3MKY3J5b3N1cmdlcnkvTQpjcnlwdC9TTQpjcnlwdGljCmNyeXB0aWNhbGx5CmNyeXB0b2dyYW0vU00KY3J5cHRvZ3JhcGhlci9TTQpjcnlwdG9ncmFwaHkvTQpjcnlzdGFsL1NNCmNyeXN0YWxsaW5lCmNyeXN0YWxsaXphdGlvbi9NCmNyeXN0YWxsaXplL0FEU0cKY3J5c3RhbGxvZ3JhcGhpYwpjcnlzdGFsbG9ncmFwaHkKY3QKY3RuCmN0cgpjdQpjdWIvWkdTTURSCmN1YmJ5aG9sZS9NUwpjdWJlL01TCmN1YmVyL00KY3ViaWMKY3ViaWNhbApjdWJpY2xlL01TCmN1YmlzbS9NCmN1YmlzdC9TTQpjdWJpdC9TTQpjdWJvaWQvUwpjdWNrb2xkL01EU0cKY3Vja29sZHJ5L00KY3Vja29vL1NNCmN1Y3VtYmVyL1NNCmN1ZC9TTQpjdWRkbGUvRFNNRwpjdWRkbHkvVFIKY3VkZ2VsL1NHTURKCmN1ZS9EU01HCmN1ZmYvTURHUwpjdWlzaW5lL1NNCmN1bGluYXJ5CmN1bGwvTURHUwpjdWxtaW5hdGUvWERTR04KY3VsbWluYXRpb24vTQpjdWxvdHRlL1NNCmN1bHBhYmlsaXR5L00KY3VscGFibGUvSQpjdWxwYWJseQpjdWxwcml0L1NNCmN1bHQvTVMKY3VsdGlzbS9NCmN1bHRpc3QvTVMKY3VsdGl2YWJsZQpjdWx0aXZhci9TCmN1bHRpdmF0ZS9CRFNHTgpjdWx0aXZhdGVkL1UKY3VsdGl2YXRpb24vTQpjdWx0aXZhdG9yL01TCmN1bHR1cmFsL1kKY3VsdHVyZS9NR0RTCmN1bHR1cmVkL1UKY3VsdmVydC9NUwpjdW0vU00KY3VtYmVyL1NERwpjdW1iZXJzb21lL1AKY3VtYmVyc29tZW5lc3MvTQpjdW1icm91cwpjdW1pbi9NCmN1bW1lcmJ1bmQvTVMKY3VtbWluZwpjdW11bGF0aXZlL1kKY3VtdWxpCmN1bXVsb25pbWJpCmN1bXVsb25pbWJ1cy9NCmN1bXVsdXMvTQpjdW5laWZvcm0vTQpjdW5uaWxpbmd1cy9NCmN1bm5pbmcvTVJZVApjdW50L01TIQpjdXAvU00KY3VwYm9hcmQvU00KY3VwY2FrZS9NUwpjdXBmdWwvU00KY3VwaWQvU00KY3VwaWRpdHkvTQpjdXBvbGEvU01ECmN1cHBhL1MKY3VwcGVkCmN1cHBpbmcKY3VwcmljCmN1ci9TTVkKY3VyYWJpbGl0eS9NCmN1cmFjYW8KY3VyYWN5L1NNCmN1cmFyZS9NCmN1cmF0ZS9EU01HVgpjdXJhdGl2ZS9NUwpjdXJhdG9yL0tNUwpjdXJhdG9yaWFsCmN1cmIvTURHUwpjdXJiaW5nL00KY3VyYnNpZGUKY3VyYnN0b25lL1NNCmN1cmQvTVMKY3VyZGxlL0RTRwpjdXJlJ3MKY3VyZS9LWkdCRFJTCmN1cmVkL1UKY3VyZXIvS00KY3VyZXR0YWdlL00KY3VyZmV3L1NNCmN1cmlhL00KY3VyaWFlCmN1cmllL1NNCmN1cmlvL1NNCmN1cmlvc2l0eS9TTQpjdXJpb3VzL1lQCmN1cmlvdXNuZXNzL00KY3VyaXVtL00KY3VybCdzCmN1cmwvVURHUwpjdXJsZXIvU00KY3VybGV3L1NNCmN1cmxpY3VlL0RTTUcKY3VybGluZXNzL00KY3VybGluZy9NCmN1cmx5L1JQVApjdXJtdWRnZW9uL01ZUwpjdXJyYW50L01TCmN1cnJlbmN5L1NNCmN1cnJlbnQncwpjdXJyZW50L0ZBWQpjdXJyZW50cwpjdXJyaWN1bGEKY3VycmljdWxhcgpjdXJyaWN1bHVtL00KY3VycnkvRFNNRwpjdXJyeWNvbWIvU0dNRApjdXJzZS9EU01HVgpjdXJzZWQvWQpjdXJzaXZlJ3MKY3Vyc2l2ZS9FQVkKY3Vyc29yL1NNCmN1cnNvcmlseQpjdXJzb3JpbmVzcy9NCmN1cnNvcnkvUApjdXJ0L1JZVFAKY3VydGFpbC9HRFNMCmN1cnRhaWxtZW50L1NNCmN1cnRhaW4vR01EUwpjdXJ0bmVzcy9NCmN1cnRzeS9HRFNNCmN1cnZhY2VvdXMvUApjdXJ2YWNlb3VzbmVzcy9NCmN1cnZhdHVyZS9TTQpjdXJ2ZS9EU01HCmN1cnZ5L1JUCmN1c2hpb24vTURTRwpjdXNoeS9SVApjdXNwL01TCmN1c3BpZC9TTQpjdXNwaWRvci9TTQpjdXNzJ3MKY3Vzcy9GRUdTRApjdXNzZWQvUFkKY3VzdGFyZC9NUwpjdXN0b2RpYWwKY3VzdG9kaWFuL01TCmN1c3RvZGlhbnNoaXAvTQpjdXN0b2R5L00KY3VzdG9tL1NaTVIKY3VzdG9tYXJpbHkKY3VzdG9tYXJ5L1UKY3VzdG9tZXIvTQpjdXN0b21ob3VzZS9TTQpjdXN0b21pemF0aW9uL00KY3VzdG9taXplL0RTRwpjdXQvVFNNUgpjdXRhbmVvdXMKY3V0YXdheS9NUwpjdXRiYWNrL01TCmN1dGUvWVAKY3V0ZW5lc3MvTQpjdXRlc3kvVFIKY3V0ZXkvUwpjdXRpY2xlL01TCmN1dGllL1NNCmN1dGxhc3MvTVMKY3V0bGVyL1NNCmN1dGxlcnkvTQpjdXRsZXQvU00KY3V0b2ZmL1NNCmN1dG91dC9TTQpjdXR0ZXIvU00KY3V0dGhyb2F0L1NNCmN1dHRpbmcvTVlTCmN1dHRsZWZpc2gvTVMKY3V0dXAvU00KY3V0d29ybS9NUwpjdwpjd3QKY3lhbi9NCmN5YW5pZGUvTQpjeWJlcmJ1bGx5L1NNCmN5YmVyY2FmZS9TCmN5YmVybmV0aWMvUwpjeWJlcm5ldGljcy9NCmN5YmVycHVuay9TTQpjeWJlcnNleApjeWJlcnNwYWNlL01TCmN5Ym9yZy9TTQpjeWNsYW1lbi9NUwpjeWNsZS9BRFNNRwpjeWNsaWMKY3ljbGljYWwvWQpjeWNsaXN0L01TCmN5Y2xvbWV0ZXIvTVMKY3ljbG9uZS9NUwpjeWNsb25pYwpjeWNsb3BlZGlhL01TCmN5Y2xvcGVzCmN5Y2xvcHMvTQpjeWNsb3Ryb24vTVMKY3lnbmV0L01TCmN5bGluZGVyL01TCmN5bGluZHJpY2FsCmN5bWJhbC9NUwpjeW1iYWxpc3QvTVMKY3luaWMvU00KY3luaWNhbC9ZCmN5bmljaXNtL00KY3lub3N1cmUvTVMKY3lwcmVzcy9NUwpjeXN0L01TCmN5c3RpYwpjeXN0aXRpcwpjeXRva2luZXMKY3l0b2xvZ2lzdC9TTQpjeXRvbG9neS9NCmN5dG9wbGFzbS9NCmN5dG9wbGFzbWljCmN5dG9zaW5lL00KY3phci9NUwpjemFyaW5hL1NNCmN6YXJpc20KY3phcmlzdC9TTQpkJ0FyZXp6by9NCmQnRXN0YWluZy9NCmQvTlhHSgpkQgpkYWIvU00KZGFiYmVkCmRhYmJlci9NUwpkYWJiaW5nCmRhYmJsZS9aR0RSUwpkYWJibGVyL00KZGFjZS9TTQpkYWNoYS9NUwpkYWNoc2h1bmQvTVMKZGFjdHlsL01TCmRhY3R5bGljL01TCmRhZC9TTQpkYWRhaXNtL00KZGFkYWlzdC9NUwpkYWRkeS9TTQpkYWRvL00KZGFkb2VzCmRhZW1vbi9NUwpkYWVtb25pYwpkYWZmaW5lc3MvTQpkYWZmb2RpbC9TTQpkYWZmeS9QVFIKZGFmdC9QVFJZCmRhZnRuZXNzL00KZGFnL1MKZGFnZ2VyL01TCmRhZ28vUwpkYWdvZXMKZGFndWVycmVvdHlwZS9EU01HCmRhaGxpYS9NUwpkYWlsaW5lc3MvTQpkYWlseS9QU00KZGFpbnRpbHkKZGFpbnRpbmVzcy9NCmRhaW50eS9SU01UUApkYWlxdWlyaS9NUwpkYWlyeS9HU00KZGFpcnlpbmcvTQpkYWlyeW1haWQvTVMKZGFpcnltYW4vTQpkYWlyeW1lbgpkYWlyeXdvbWFuL00KZGFpcnl3b21lbgpkYWlzL01TCmRhaXN5L1NNCmRhbGUvU00KZGFsbGlhbmNlL01TCmRhbGxpZXIvTQpkYWxseS9aR0RSUwpkYWxtYXRpYW4vTVMKZGFtL1NNCmRhbWFnZS9NR0RTCmRhbWFnZWFibGUKZGFtYWdlZC9VCmRhbWFnZXMvTQpkYW1hc2svTURHUwpkYW1lL1NNCmRhbW1lZApkYW1taW5nCmRhbW1pdApkYW1uL1NCR01ECmRhbW5hYmx5CmRhbW5hdGlvbi9NCmRhbW5lZC9UCmRhbXAvU1BYWlRHTUROUlkKZGFtcGVuL1pHRFIKZGFtcGVuZXIvTQpkYW1wZXIvTQpkYW1wbmVzcy9NCmRhbXNlbC9NUwpkYW1zZWxmbHkvU00KZGFtc29uL01TCmRhbmNlL01aR0RSUwpkYW5jZXIvTQpkYW5jaW5nL00KZGFuZGVsaW9uL1NNCmRhbmRlci9NCmRhbmRpZnkvR0RTCmRhbmRsZS9HRFMKZGFuZHJ1ZmYvTQpkYW5keS9UUlNNCmRhbmcvU1pHRFIKZGFuZ2VyL00KZGFuZ2Vyb3VzL1kKZGFuZ2xlL1pHRFJTCmRhbmdsZXIvTQpkYW5pc2gvTVMKZGFuay9QVFJZCmRhbmtuZXNzL00KZGFuc2V1c2UvTVMKZGFwcGVyL1RSCmRhcHBsZS9NR0RTCmRhcmUvRFJTTVpHCmRhcmVkZXZpbC9NUwpkYXJlZGV2aWxyeS9NCmRhcmVyL00KZGFyZXNheQpkYXJpbmcvTVkKZGFyay9QWFRNTlJZCmRhcmtlbi9aR0RSCmRhcmtlbmVyL00KZGFya2llL1MKZGFya25lc3MvTQpkYXJrcm9vbS9NUwpkYXJsaW5nL01TCmRhcm4vU1pHTURSCmRhcm5lZC9UUgpkYXJuZXIvTQpkYXJ0L1NaR01EUgpkYXJ0Ym9hcmQvTVMKZGFydGVyL00KZGFzaC9aR01EUlMKZGFzaGJvYXJkL1NNCmRhc2hlci9NCmRhc2hpa2kvTVMKZGFzaGluZy9ZCmRhc3RhcmQvTVlTCmRhc3RhcmRsaW5lc3MvTQpkYXRhCmRhdGFiYXNlL1NNCmRhdGF0eXBlCmRhdGUvRFJTTVpHVgpkYXRlYm9vay9TCmRhdGVkL1UKZGF0ZWxlc3MKZGF0ZWxpbmUvTUdEUwpkYXRlci9NCmRhdGl2ZS9NUwpkYXR1bS9NCmRhdWIvU1pHTURSCmRhdWJlci9NCmRhdWdodGVyL1NNWQpkYXVudC9HRFMKZGF1bnRpbmcvWQpkYXVudGxlc3MvWVAKZGF1bnRsZXNzbmVzcy9NCmRhdXBoaW4vTVMKZGF2ZW5wb3J0L01TCmRhdml0L01TCmRhd2RsZS9aR0RSUwpkYXdkbGVyL00KZGF3bi9TR01ECmRheS9TTQpkYXliZWQvTVMKZGF5YnJlYWsvTQpkYXljYXJlL00KZGF5ZHJlYW0vTURSWkdTCmRheWRyZWFtZXIvTQpkYXlsaWdodC9NUwpkYXlsaWdodHMvTQpkYXlsb25nCmRheXRpbWUvTQpkYXplL0RTTUcKZGF6ZWQvWQpkYXp6bGUvTVpHRFJTCmRhenpsZXIvTQpkYXp6bGluZy9ZCmRiCmRibApkYwpkZC9TREcKZGRlZC9LCmRkaW5nL0sKZGVhY29uL01TCmRlYWNvbmVzcy9NUwpkZWFkL1hUTU5SWQpkZWFkYmVhdC9NUwpkZWFkYm9sdC9TTQpkZWFkZW4vR0QKZGVhZGhlYWQvU0RHCmRlYWRsaW5lL1NNCmRlYWRsaW5lc3MvTQpkZWFkbG9jay9HU01ECmRlYWRseS9UUFIKZGVhZHBhbi9NUwpkZWFkcGFubmVkCmRlYWRwYW5uaW5nCmRlYWR3b29kL00KZGVhZi9QWFROUgpkZWFmZW4vR0QKZGVhZmVuaW5nL1kKZGVhZm5lc3MvTQpkZWFsL1NKWkdNUgpkZWFsZXIvTQpkZWFsZXJzaGlwL1NNCmRlYWxpbmcvTQpkZWFsdApkZWFuL00KZGVhbmVyeS9TTQpkZWFuc2hpcC9NCmRlYXIvU1BUTVJZSApkZWFyZXN0L1MKZGVhcm5lc3MvTQpkZWFydGgvTQpkZWFydGhzCmRlYXJ5L1NNCmRlYXRoL01ZCmRlYXRoYmVkL1NNCmRlYXRoYmxvdy9NUwpkZWF0aGxlc3MvWQpkZWF0aGxpa2UKZGVhdGhzCmRlYXRodHJhcC9NUwpkZWF0aHdhdGNoL01TCmRlYXZlcwpkZWIvU00KZGViYWNsZS9NUwpkZWJhcmthdGlvbi9NCmRlYmFybWVudC9NCmRlYmF0ZS9CTVpSCmRlYmF0ZXIvTQpkZWJhdGluZy9NCmRlYmF1Y2gvTURTRwpkZWJhdWNoZWUvTVMKZGViYXVjaGVyeS9TTQpkZWJlbnR1cmUvTVMKZGViaWxpdGF0ZS9EU0dOCmRlYmlsaXRhdGlvbi9NCmRlYmlsaXR5L1NNCmRlYml0L0QKZGVib25haXIvUFkKZGVib25haXJuZXNzL00KZGVib3VjaC9HRFMKZGVicmlkZW1lbnQKZGVicmlzL00KZGVidC9TTQpkZWJ0b3IvTVMKZGVidWdnZXIvUwpkZWJ1dC9HTUQKZGVidXRhbnRlL1NNCmRlY2FkZS9NUwpkZWNhZGVuY2UvTQpkZWNhZGVuY3kvTQpkZWNhZGVudC9NWVMKZGVjYWYvTVMKZGVjYWZmZWluYXRlL0RTRwpkZWNhZ29uL01TCmRlY2FsL01TCmRlY2FtcG1lbnQvTQpkZWNhcGl0YXRlL1hHTkRTCmRlY2FwaXRhdG9yL01TCmRlY2F0aGxldGUvUwpkZWNhdGhsb24vU00KZGVjYXkvR0QKZGVjZWFzZWQvTQpkZWNlZGVudC9NUwpkZWNlaXQvTVMKZGVjZWl0ZnVsL1lQCmRlY2VpdGZ1bG5lc3MvTQpkZWNlaXZlL1VHRFMKZGVjZWl2ZXIvTVMKZGVjZWl2aW5nL1kKZGVjZWxlcmF0ZS9HTkRTCmRlY2VsZXJhdGlvbi9NCmRlY2VsZXJhdG9yL1NNCmRlY2VuY3kvSVNNCmRlY2VubmlhbC9TTQpkZWNlbnQvSVkKZGVjZXB0aW9uL01TCmRlY2VwdGl2ZS9ZUApkZWNlcHRpdmVuZXNzL00KZGVjaWJlbC9NUwpkZWNpZGFibGUvVQpkZWNpZGUvQlpHRFJTCmRlY2lkZWQvWQpkZWNpZHVvdXMKZGVjaWxpdGVyL01TCmRlY2ltYWwvU00KZGVjaW1hbGl6YXRpb24KZGVjaW1hdGUvRFNHTgpkZWNpbWF0aW9uL00KZGVjaW1ldGVyL01TCmRlY2lwaGVyYWJsZS9VSQpkZWNpc2lvbi9JTQpkZWNpc2lvbnMKZGVjaXNpdmUvSVBZCmRlY2lzaXZlbmVzcy9JTQpkZWNrL1NHTUQKZGVja2NoYWlyL1MKZGVja2hhbmQvU00KZGVja2xlL1MKZGVjbGFtYXRpb24vTVMKZGVjbGFtYXRvcnkKZGVjbGFyYXRpb24vTVMKZGVjbGFyYXRpdmUKZGVjbGFyYXRvcnkKZGVjbGFyZS9EUlNaR0IKZGVjbGFyZWQvVQpkZWNsYXJlci9NCmRlY2xlbnNpb24vU00KZGVjbGluYXRpb24vTQpkZWNsaW5lL0RSU01aRwpkZWNsaW5lci9NCmRlY2xpdml0eS9TTQpkZWNvbGxldGFnZS9TTQpkZWNvbGxldGUKZGVjb25nZXN0YW50L01TCmRlY29uc3RydWN0aW9uaXNtCmRlY29yL01TCmRlY29yYXRlL0FHTlZEUwpkZWNvcmF0aW5nL00KZGVjb3JhdGlvbi9BTQpkZWNvcmF0aW9ucwpkZWNvcmF0aXZlL1kKZGVjb3JhdG9yL01TCmRlY29yb3VzL0lZCmRlY29yb3VzbmVzcy9NCmRlY29ydW0vTQpkZWNvdXBhZ2UvRFNNRwpkZWNveS9HTURTCmRlY3JlYXNpbmcvWQpkZWNyZWUvTURTCmRlY3JlZWluZwpkZWNyZW1lbnRlZApkZWNyZW1lbnRzCmRlY3JlcGl0CmRlY3JlcGl0dWRlL00KZGVjcmltaW5hbGl6YXRpb24vTQpkZWNyeS9HRFMKZGVjcnlwdGlvbgpkZWRpY2F0ZS9BR0RTCmRlZGljYXRpb24vU00KZGVkaWNhdG9yL1NNCmRlZGljYXRvcnkKZGVkdWNlL0dEUwpkZWR1Y2libGUKZGVkdWN0L0dWRApkZWR1Y3RpYmxlL1NNCmRlZHVjdGlvbi9TTQpkZWR1Y3RpdmUvWQpkZWVkL0dECmRlZWpheS9NUwpkZWVtL0FTR0QKZGVlcC9TUFhUTU5SWQpkZWVwZW4vR0QKZGVlcG5lc3MvTQpkZWVyL00KZGVlcnNraW4vTQpkZWVyc3RhbGtlci9TCmRlZi9aCmRlZmFjZW1lbnQvTQpkZWZhY2VyL1NNCmRlZmFsY2F0ZS9EU1hHTgpkZWZhbGNhdGlvbi9NCmRlZmFtYXRpb24vTQpkZWZhbWF0b3J5CmRlZmFtZS9aR0RSUwpkZWZhbWVyL00KZGVmYXVsdGVyL1NNCmRlZmVhdC9NRFJaR1MKZGVmZWF0ZWQvVQpkZWZlYXRlci9NCmRlZmVhdGlzbS9NCmRlZmVhdGlzdC9NUwpkZWZlY2F0ZS9HTkRTCmRlZmVjYXRpb24vTQpkZWZlY3QvTURHVlMKZGVmZWN0aW9uL01TCmRlZmVjdGl2ZS9NUFlTCmRlZmVjdGl2ZW5lc3MvTQpkZWZlY3Rvci9NUwpkZWZlbmRhbnQvU00KZGVmZW5kZWQvVQpkZWZlbmVzdHJhdGlvbi9TCmRlZmVuc2UvRFNNR1YKZGVmZW5zZWxlc3MvWVAKZGVmZW5zZWxlc3NuZXNzL00KZGVmZW5zaWJsZS9JCmRlZmVuc2libHkvSQpkZWZlbnNpdmUvTVlQCmRlZmVuc2l2ZW5lc3MvTQpkZWZlcmVuY2UvTQpkZWZlcmVudGlhbC9ZCmRlZmVycmFsL01TCmRlZmVycmVkCmRlZmVycmluZwpkZWZmZXIKZGVmZmVzdApkZWZpYW50L1kKZGVmaWJyaWxsYXRpb24KZGVmaWJyaWxsYXRvci9TCmRlZmljaWVuY3kvU00KZGVmaWNpZW50CmRlZmljaXQvU00KZGVmaWxlbWVudC9NCmRlZmluYWJsZS9JVQpkZWZpbmUvQUdEUwpkZWZpbmVkL1UKZGVmaW5lci9NUwpkZWZpbml0ZS9JWVZQCmRlZmluaXRlbmVzcy9JTQpkZWZpbml0aW9uL0FNCmRlZmluaXRpb25zCmRlZmluaXRpdmUvWQpkZWZsYXRlL0dORFMKZGVmbGF0aW9uL00KZGVmbGF0aW9uYXJ5CmRlZmxlY3QvREdWUwpkZWZsZWN0aW9uL01TCmRlZmxlY3Rvci9TTQpkZWZvZ2dlci9TTQpkZWZvbGlhbnQvU00KZGVmb2xpYXRlL0RTR04KZGVmb2xpYXRpb24vTQpkZWZvbGlhdG9yL01TCmRlZm9ybWl0eS9TTQpkZWZyYXVkL0RSWkdTCmRlZnJhdWRlci9NCmRlZnJheWFsL00KZGVmcm9jay9ERwpkZWZyb3N0ZXIvTVMKZGVmdC9QVFJZCmRlZnRuZXNzL00KZGVmdW5jdApkZWZ5L0dEUwpkZWcKZGVnZW5lcmFjeS9NCmRlZ2VuZXJhdGUvTVYKZGVncmFkZS9CCmRlZ3JlZS9NUwpkZWh5ZHJhdG9yL1NNCmRlaHlkcm9nZW5hc2UKZGVpY2VyL01TCmRlaWZpY2F0aW9uL00KZGVpZnkvTkdEUwpkZWlnbi9HRFMKZGVpc3QvTVMKZGVpc3RpYwpkZWl0eS9TTQpkZWplY3QvR0RTCmRlamVjdGVkL1kKZGVqZWN0aW9uL00KZGVsYXkvWkRSCmRlbGVjdGFibGUKZGVsZWN0YWJseQpkZWxlY3RhdGlvbi9NCmRlbGVnYXRlL0dECmRlbGV0ZS9YR05EUwpkZWxldGVyaW91cwpkZWxldGlvbi9NCmRlbGZ0L00KZGVsZnR3YXJlL00KZGVsaS9TTQpkZWxpYmVyYXRlL1hZVlAKZGVsaWJlcmF0ZW5lc3MvTQpkZWxpY2FjeS9JU00KZGVsaWNhdGUvSVkKZGVsaWNhdGVuZXNzL00KZGVsaWNhdGVzc2VuL1NNCmRlbGljaW91cy9QWQpkZWxpY2lvdXNuZXNzL00KZGVsaWdodGVkL1kKZGVsaWdodGZ1bC9ZCmRlbGltaW5hdG9yCmRlbGluZWF0ZS9HTlhEUwpkZWxpbmVhdGlvbi9NCmRlbGlucXVlbmN5L1NNCmRlbGlucXVlbnQvU01ZCmRlbGlxdWVzY2UvRFNHCmRlbGlxdWVzY2VudApkZWxpcmlvdXMvWVAKZGVsaXJpb3VzbmVzcy9NCmRlbGlyaXVtL1NNCmRlbGl2ZXIvQURHUwpkZWxpdmVyYWJsZQpkZWxpdmVyYW5jZS9NCmRlbGl2ZXJlZC9VCmRlbGl2ZXJlci9TTQpkZWxsL1NNCmRlbHBoaW5pdW0vTVMKZGVsdGEvTVMKZGVsdWRlL0dEUwpkZWx1Z2UvTUdEUwpkZWx1c2lvbi9NUwpkZWx1c2lvbmFsCmRlbHVzaXZlL1kKZGVsdXhlCmRlbHZlL1pHRFJTCmRlbHZlci9NCmRlbWFnb2dpYwpkZW1hZ29naWNhbGx5CmRlbWFnb2d1ZS9TTQpkZW1hZ29ndWVyeS9NCmRlbWFnb2d5L00KZGVtYW5kL0dNRFMKZGVtYW5kaW5nL1UKZGVtYXJjYXRlL0RTR05YCmRlbWFyY2F0aW9uL00KZGVtZWFuL0dEUwpkZW1lYW5vci9NCmRlbWVudGVkL1kKZGVtZW50aWEvTQpkZW1lc25lL01TCmRlbWlnb2QvTVMKZGVtaWdvZGRlc3MvTVMKZGVtaWpvaG4vU00KZGVtaW1vbmRhaW5lL1NNCmRlbWltb25kZS9NCmRlbWlzZS9NR0RTCmRlbWl0YXNzZS9NUwpkZW1vL0dNRApkZW1vY3JhY3kvU00KZGVtb2NyYXQvTVMKZGVtb2NyYXRpYy9VCmRlbW9jcmF0aWNhbGx5CmRlbW9jcmF0aXphdGlvbi9NCmRlbW9jcmF0aXplL0dEUwpkZW1vZGUKZGVtb2dyYXBoZXIvU00KZGVtb2dyYXBoaWMvU00KZGVtb2dyYXBoaWNhbGx5CmRlbW9ncmFwaGljcy9NCmRlbW9ncmFwaHkvTQpkZW1vbGlzaC9EU0cKZGVtb2xpdGlvbi9NUwpkZW1vbi9NUwpkZW1vbmV0aXphdGlvbi9NCmRlbW9uaWFjCmRlbW9uaWFjYWwvWQpkZW1vbmljCmRlbW9uaWNhbGx5CmRlbW9uaXplL0dEUwpkZW1vbm9sb2d5L1NNCmRlbW9uc3RyYWJpbGl0eQpkZW1vbnN0cmFibGUvSQpkZW1vbnN0cmFibHkKZGVtb25zdHJhdGUvWEdOVkRTCmRlbW9uc3RyYXRpb24vTQpkZW1vbnN0cmF0aXZlL01ZU1AKZGVtb25zdHJhdGl2ZW5lc3MvTQpkZW1vbnN0cmF0b3IvTVMKZGVtb3RlL0dECmRlbW90aWMKZGVtb3VudApkZW11bGNlbnQvU00KZGVtdXIvVE1SUwpkZW11cmUvUFkKZGVtdXJlbmVzcy9NCmRlbXVycmFsL1NNCmRlbXVycmVkCmRlbXVycmVyL1NNCmRlbXVycmluZwpkZW4vTQpkZW5hdGlvbmFsaXphdGlvbgpkZW5hdHVyYXRpb24KZGVuYXR1cmUvREcKZGVuZHJpdGUvU00KZGVuZ3VlL00KZGVuaWFiaWxpdHkKZGVuaWFibGUvVQpkZW5pYWwvTVMKZGVuaWVyL00KZGVuaWdyYXRlL0RTR04KZGVuaWdyYXRpb24vTQpkZW5pbS9NUwpkZW5pdHJpZmljYXRpb24KZGVuaXplbi9NUwpkZW5vbWluYXRpb25hbApkZW5vdGF0aXZlCmRlbm91ZW1lbnQvTVMKZGVub3VuY2UvTERTRwpkZW5vdW5jZW1lbnQvU00KZGVuc2UvUFlUUgpkZW5zZW5lc3MvTQpkZW5zaXR5L1NNCmRlbnQvSVNHTUQKZGVudGFsL1kKZGVudGlmcmljZS9TTQpkZW50aW4vTQpkZW50aXN0L01TCmRlbnRpc3RyeS9NCmRlbnRpdGlvbi9NCmRlbnR1cmUvSU1TCmRlbnVjbGVhcml6ZS9HRFMKZGVudWRhdGlvbi9NCmRlbnVkZS9HRFMKZGVudW5jaWF0aW9uL1NNCmRlbnkvWkdEUlMKZGVvZG9yYW50L1NNCmRlb2Rvcml6YXRpb24vTQpkZW9kb3JpemUvRFJTWkcKZGVvZG9yaXplci9NCmRlcGFydGVkL00KZGVwYXJ0bWVudC9NUwpkZXBhcnRtZW50YWwvWQpkZXBhcnRtZW50YWxpemF0aW9uL00KZGVwYXJ0bWVudGFsaXplL0dEUwpkZXBhcnR1cmUvU00KZGVwZW5kYWJpbGl0eS9NCmRlcGVuZGFibGUvVQpkZXBlbmRhYmx5CmRlcGVuZGVuY2UvSU0KZGVwZW5kZW5jeS9TTQpkZXBlbmRlbnQvSU1ZUwpkZXBpY3QvR0RTCmRlcGljdGlvbi9NUwpkZXBpbGF0b3J5L1NNCmRlcGxldGUvR05EUwpkZXBsZXRpb24vTQpkZXBsb3JhYmx5CmRlcGxvcmUvQkdEUwpkZXBsb3kvQUxHRFMKZGVwbG95bWVudC9BTQpkZXBsb3ltZW50cwpkZXBvbmVudC9NUwpkZXBvcnRhdGlvbi9NUwpkZXBvcnRlZS9NUwpkZXBvcnRtZW50L00KZGVwb3NpdC9BR01EUwpkZXBvc2l0b3IvTVMKZGVwb3NpdG9yeS9TTQpkZXByYXZlL0dEUwpkZXByYXZpdHkvU00KZGVwcmVjYXRlL0dORFMKZGVwcmVjYXRpbmcvWQpkZXByZWNhdGlvbi9NCmRlcHJlY2F0b3J5CmRlcHJlY2lhdGUvRFNHTgpkZXByZWNpYXRpb24vTQpkZXByZWRhdGlvbi9TTQpkZXByZXNzYW50L1NNCmRlcHJlc3NpbmcvWQpkZXByZXNzaW9uL1NNCmRlcHJlc3NpdmUvU00KZGVwcmVzc29yL01TCmRlcHJlc3N1cml6YXRpb24KZGVwcml2ZS9HRFMKZGVwcm9ncmFtbWluZwpkZXB0aC9NCmRlcHRocwpkZXB1dGF0aW9uL01TCmRlcHV0ZS9EU0cKZGVwdXRpemUvRFNHCmRlcHV0eS9TTQpkZXJhaWxsZXVyL1NNCmRlcmFpbG1lbnQvU00KZGVyYW5nZW1lbnQvTQpkZXJieS9TTQpkZXJlbGljdC9NUwpkZXJlbGljdGlvbi9NCmRlcmlkZS9HRFMKZGVyaXNpb24vTQpkZXJpc2l2ZS9QWQpkZXJpc2l2ZW5lc3MvTQpkZXJpc29yeQpkZXJpdmF0aW9uL01TCmRlcml2YXRpdmUvTVMKZGVyaXZlL0IKZGVybWFsCmRlcm1hdGl0aXMvTQpkZXJtYXRvbG9naWNhbApkZXJtYXRvbG9naXN0L1NNCmRlcm1hdG9sb2d5L00KZGVybWlzL00KZGVyb2dhdGUvRFNHTgpkZXJvZ2F0aW9uL00KZGVyb2dhdG9yaWx5CmRlcm9nYXRvcnkKZGVycmljay9TTQpkZXJyaWVyZS9TTQpkZXJyaW5nZXIvU00KZGVydgpkZXJ2aXNoL01TCmRlc2FsaW5hdGUvR05EUwpkZXNhbGluYXRpb24vTQpkZXNhbGluaXphdGlvbi9NCmRlc2FsaW5pemUvR0RTCmRlc2NhbnQvTQpkZXNjZW5kL0ZHRFMKZGVzY2VuZGFudC9NUwpkZXNjZW5kZXIKZGVzY3JpYmFibGUvSQpkZXNjcmliZS9CWkdEUgpkZXNjcmliZXIvTQpkZXNjcmlwdGlvbi9TTQpkZXNjcmlwdGl2ZS9QWQpkZXNjcmlwdGl2ZW5lc3MvTQpkZXNjcmlwdG9yL1MKZGVzY3J5L0dEUwpkZXNlY3JhdGUvRFNHTgpkZXNlY3JhdGlvbi9NCmRlc2VsZWN0aW9uCmRlc2VydC9TRFJaR00KZGVzZXJ0ZXIvTQpkZXNlcnRpZmljYXRpb24KZGVzZXJ0aW9uL1NNCmRlc2VydmVkL1VZCmRlc2VydmluZy9VCmRlc2ljY2FudC9TTQpkZXNpY2NhdGUvRFNHTgpkZXNpY2NhdGlvbi9NCmRlc2ljY2F0b3IvU00KZGVzaWRlcmF0YQpkZXNpZGVyYXR1bS9NCmRlc2lnbi9BU0RHCmRlc2lnbmF0ZS9EU0dOWApkZXNpZ25hdGlvbi9NCmRlc2lyYWJpbGl0eS9VTQpkZXNpcmFibGVuZXNzL00KZGVzaXJhYmx5L1UKZGVzaXJlL0IKZGVzaXJlZC9VCmRlc2lyb3VzCmRlc2lzdC9TREcKZGVzay9TTQpkZXNraWxsL0cKZGVza3RvcC9TTQpkZXNvbGF0ZS9QRFNZR04KZGVzb2xhdGVuZXNzL00KZGVzb2xhdGlvbi9NCmRlc3BhaXIvU01ERwpkZXNwYWlyaW5nL1kKZGVzcGVyYWRvL00KZGVzcGVyYWRvZXMKZGVzcGVyYXRlL1lOUApkZXNwZXJhdGVuZXNzL00KZGVzcGVyYXRpb24vTQpkZXNwaWNhYmxlCmRlc3BpY2FibHkKZGVzcGlzZS9EU0cKZGVzcGl0ZQpkZXNwb2lsbWVudC9NCmRlc3BvbmRlbmNlL00KZGVzcG9uZGVuY3kvTQpkZXNwb25kZW50L1kKZGVzcG90aWMKZGVzcG90aWNhbGx5CmRlc3BvdGlzbS9NCmRlc3NlcnQvU00KZGVzc2VydHNwb29uL1MKZGVzc2VydHNwb29uZnVsL1MKZGVzdGluYXRpb24vU00KZGVzdGluZS9EU0cKZGVzdGlueS9TTQpkZXN0aXR1dGUvTgpkZXN0aXR1dGlvbi9NCmRlc3Ryb3kvU1pHRFIKZGVzdHJveWVyL00KZGVzdHJ1Y3QvR1ZNRFMKZGVzdHJ1Y3RpYmlsaXR5L0lNCmRlc3RydWN0aWJsZS9JCmRlc3RydWN0aW9uL00KZGVzdHJ1Y3RpdmUvUFkKZGVzdHJ1Y3RpdmVuZXNzL00KZGVzdWV0dWRlL00KZGVzdWx0b3JpbHkKZGVzdWx0b3J5CmRldGFjaC9CTEdEUwpkZXRhY2htZW50L01TCmRldGFpbi9MR0RTCmRldGFpbmVlL01TCmRldGFpbm1lbnQvTQpkZXRlY3QvU0RHVkIKZGV0ZWN0YWJsZS9VCmRldGVjdGVkL1UKZGV0ZWN0aW9uL00KZGV0ZWN0aXZlL1NNCmRldGVjdG9yL1NNCmRldGVudGUvU01OWApkZXRlbnRpb24vTQpkZXRlci9TTApkZXRlcmdlbnQvU00KZGV0ZXJpb3JhdGUvRFNHTgpkZXRlcmlvcmF0aW9uL00KZGV0ZXJtZW50L00KZGV0ZXJtaW5hYmxlL0kKZGV0ZXJtaW5hbnQvU00KZGV0ZXJtaW5hdGUKZGV0ZXJtaW5lL0FHRFMKZGV0ZXJtaW5lZC9VCmRldGVybWluZWRseQpkZXRlcm1pbmVyL1NNCmRldGVybWluaXNtL00KZGV0ZXJtaW5pc3RpYwpkZXRlcnJlZC9VCmRldGVycmVuY2UvTQpkZXRlcnJlbnQvTVMKZGV0ZXJyaW5nCmRldGVzdGFibHkKZGV0ZXN0YXRpb24vTQpkZXRocm9uZS9EU0xHCmRldGhyb25lbWVudC9NCmRldG9uYXRlL0dORFNYCmRldG9uYXRpb24vTQpkZXRvbmF0b3IvU00KZGV0b3gvTURTRwpkZXRveGlmaWNhdGlvbi9NCmRldG94aWZ5L0RTR04KZGV0cmFjdC9HRApkZXRyaW1lbnQvU00KZGV0cmltZW50YWwvWQpkZXRyaXR1cy9NCmRldWNlL1NNCmRldXRlcml1bS9NCmRldmFzdGF0ZS9HTkRTCmRldmFzdGF0aW5nL1kKZGV2YXN0YXRpb24vTQpkZXZhc3RhdG9yL01TCmRldmVsb3AvQVNHREwKZGV2ZWxvcGVkL1UKZGV2ZWxvcGVyL1NNCmRldmVsb3BtZW50L0FTTQpkZXZlbG9wbWVudGFsL1kKZGV2aWFuY2UvTQpkZXZpYW5jeS9NCmRldmlhbnQvU00KZGV2aWF0ZS9EU01HTlgKZGV2aWF0aW5nL1UKZGV2aWF0aW9uL00KZGV2aWwvU01ER0wKZGV2aWxpc2gvWVAKZGV2aWxpc2huZXNzL00KZGV2aWxtZW50L00KZGV2aWxyeS9TTQpkZXZpbHRyeS9TTQpkZXZpb3VzL1lQCmRldmlvdXNuZXNzL00KZGV2b2lkCmRldm9sdXRpb24vTQpkZXZvbHZlL0RTRwpkZXZvdGVkL1kKZGV2b3RlZS9TTQpkZXZvdGlvbi9NUwpkZXZvdGlvbmFsL1NNCmRldm91ci9TREcKZGV2b3V0L1BSWVQKZGV2b3V0bmVzcy9NCmRldy9NCmRld2JlcnJ5L1NNCmRld2NsYXcvU00KZGV3ZHJvcC9TTQpkZXdpbmVzcy9NCmRld2xhcC9TTQpkZXd5L1JUUApkZXh0ZXJpdHkvTQpkZXh0ZXJvdXMvWVAKZGV4dGVyb3VzbmVzcy9NCmRleHRyb3NlL00KZGhhcm1hCmRob3RpL1NNCmRob3cvTVMKZGlhYmV0ZXMvTQpkaWFiZXRpYy9TTQpkaWFib2xpYwpkaWFib2xpY2FsL1kKZGlhY3JpdGljL01TCmRpYWNyaXRpY2FsCmRpYWRlbS9TTQpkaWFlcmVzZXMKZGlhZXJlc2lzL00KZGlhZ25vc2UvRFNHCmRpYWdub3Npcy9NCmRpYWdub3N0aWMvUwpkaWFnbm9zdGljYWxseQpkaWFnbm9zdGljaWFuL1NNCmRpYWdub3N0aWNzL00KZGlhZ29uYWwvU01ZCmRpYWdyYW0vU00KZGlhZ3JhbW1hdGljCmRpYWdyYW1tYXRpY2FsbHkKZGlhZ3JhbW1lZApkaWFncmFtbWluZwpkaWFsL0FNREdTCmRpYWxlY3QvU00KZGlhbGVjdGFsCmRpYWxlY3RpYy9TTQpkaWFsZWN0aWNhbApkaWFsZWN0aWNzL00KZGlhbGluZy9TCmRpYWxvZwpkaWFsb2d1ZS9TTQpkaWFseXNlcwpkaWFseXNpcy9NCmRpYWx5emVzCmRpYW0KZGlhbWFudGUKZGlhbWV0ZXIvU00KZGlhbWV0cmljCmRpYW1ldHJpY2FsL1kKZGlhbW9uZC9TTQpkaWFtb25kYmFjay9NUwpkaWFwYXNvbi9TTQpkaWFwZXIvU01ERwpkaWFwaGFub3VzCmRpYXBocmFnbS9TTQpkaWFwaHJhZ21hdGljCmRpYXJpc3QvU00KZGlhcnJoZWEvTQpkaWFyeS9TTQpkaWFzcG9yYS9TTQpkaWFzdGFzZS9NCmRpYXN0b2xlL00KZGlhc3RvbGljCmRpYXRoZXJteS9NCmRpYXRvbS9TTQpkaWF0b21pYwpkaWF0b25pYwpkaWF0cmliZS9TTQpkaWJibGUvRFNNRwpkaWJzL00KZGljZS9HRFMKZGljZXMvSQpkaWNleQpkaWNob3RvbW91cwpkaWNob3RvbXkvU00KZGljaWVyCmRpY2llc3QKZGljay9NUlhaUwpkaWNrZXIvREcKZGlja2V5L1NNCmRpY2toZWFkL1MKZGlja3liaXJkL1MKZGljb3R5bGVkb24vTVMKZGljb3R5bGVkb25vdXMKZGljdApkaWN0YQpkaWN0YXRlL0RTTUdOWApkaWN0YXRpb24vTQpkaWN0YXRvci9TTQpkaWN0YXRvcmlhbC9ZCmRpY3RhdG9yc2hpcC9TTQpkaWN0aW9uL00KZGljdGlvbmFyeS9TTQpkaWN0dW0vTQpkaWQvQVUKZGlkYWN0aWMKZGlkYWN0aWNhbGx5CmRpZGRsZS9EUlNaRwpkaWRkbGVyL00KZGlkZGx5CmRpZGRseXNxdWF0CmRpZGR1bXMKZGlkZ2VyaWRvby9TCmRpZG4ndApkaWRvL00KZGlkb2VzCmRpZHN0CmRpZS9EU00KZGllbGVjdHJpYy9NUwpkaWVyZXNlcwpkaWVyZXNpcy9NCmRpZXNlbC9TTURHCmRpZXQvTURSWkdTCmRpZXRhcnkvU00KZGlldGVyL00KZGlldGV0aWMvUwpkaWV0ZXRpY3MvTQpkaWV0aXRpYW4vTVMKZGlmZi9EUlpHUwpkaWZmZXIvREcKZGlmZmVyZW5jZS9JTQpkaWZmZXJlbmNlcwpkaWZmZXJlbnQvSVkKZGlmZmVyZW50aWFsL1NNCmRpZmZlcmVudGlhdGUvRFNHTgpkaWZmZXJlbnRpYXRlZC9VCmRpZmZlcmVudGlhdGlvbi9NCmRpZmZpY3VsdC9ZCmRpZmZpY3VsdHkvU00KZGlmZmlkZW5jZS9NCmRpZmZpZGVudC9ZCmRpZmZyYWN0L0dTRApkaWZmcmFjdGlvbi9NCmRpZmZ1c2UvRFNZR05WUApkaWZmdXNlbmVzcy9NCmRpZmZ1c2lvbi9NCmRpZy9TTQpkaWdlcmF0aS9NCmRpZ2VzdC9TTURHVgpkaWdlc3RlZC9VCmRpZ2VzdGliaWxpdHkvTQpkaWdlc3RpYmxlL0kKZGlnZXN0aW9uL0lNCmRpZ2VzdGlvbnMKZGlnZXN0aXZlL1MKZGlnZ2VyL1NNCmRpZ2dpbmcvUwpkaWdnaW5ncy9NCmRpZ2ljYW0vUwpkaWdpdC9TTQpkaWdpdGFsL1kKZGlnaXRhbGlzL00KZGlnaXRpemF0aW9uCmRpZ2l0aXplL0dEUwpkaWduaWZpZWQvVQpkaWduaWZ5L0RTRwpkaWduaXRhcnkvU00KZGlnbml0eS9JU00KZGlncmFwaC9NCmRpZ3JhcGhzCmRpZ3Jlc3MvR1ZEUwpkaWdyZXNzaW9uL01TCmRpa2UvTUdEUwpkaWt0YXQvUwpkaWxhcGlkYXRlZApkaWxhcGlkYXRpb24vTQpkaWxhdGF0aW9uL00KZGlsYXRlL0RTR04KZGlsYXRpb24vTQpkaWxhdG9yL1NNCmRpbGF0b3J5CmRpbGRvL1MKZGlsZW1tYS9NUwpkaWxldHRhbnRlL1NNCmRpbGV0dGFudGlzaApkaWxldHRhbnRpc20vTQpkaWxpZ2VuY2UvTQpkaWxpZ2VudC9ZCmRpbGwvTVMKZGlsbHkvU00KZGlsbHlkYWxseS9EU0cKZGlsdXRlL0RTR05YCmRpbHV0ZWQvVQpkaWx1dGlvbi9NCmRpbS9QU1JZCmRpbWUvTVMKZGltZW5zaW9uL1NNCmRpbWVuc2lvbmFsCmRpbWVuc2lvbmxlc3MKZGltaW5pc2gvR0RTCmRpbWluaXNoZWQvVQpkaW1pbnVlbmRvL1NNCmRpbWludXRpb24vU00KZGltaW51dGl2ZS9TTQpkaW1pdHkvTQpkaW1tZWQvVQpkaW1tZXIvU00KZGltbWVzdApkaW1taW5nCmRpbW5lc3MvTQpkaW1wbGUvRFNNRwpkaW1wbHkKZGltd2l0L1NNCmRpbXdpdHRlZApkaW4vWkdTTURSCmRpbmFyL1NNCmRpbmUvUwpkaW5lci9NCmRpbmV0dGUvTVMKZGluZy9NREcKZGluZ2JhdC9NUwpkaW5naHkvU00KZGluZ2lseQpkaW5naW5lc3MvTQpkaW5nbGUvU00KZGluZ28vTQpkaW5nb2VzCmRpbmd1cy9NUwpkaW5neS9SUFQKZGluay9SCmRpbmt5L1JTTVQKZGlubmVkCmRpbm5lci9TTURHCmRpbm5lcnRpbWUvTQpkaW5uZXJ3YXJlL00KZGlubmluZwpkaW5vc2F1ci9TTQpkaW50L00KZGlvY2VzYW4vTVMKZGlvY2VzZS9NUwpkaW9kZS9TTQpkaW9yYW1hL1NNCmRpb3hpZGUvU00KZGlveGluL1NNCmRpcC9TTQpkaXBodGhlcmlhL00KZGlwaHRob25nL1NNCmRpcGxvaWQvU00KZGlwbG9tYS9TTQpkaXBsb21hY3kvTQpkaXBsb21hdC9NUwpkaXBsb21hdGEKZGlwbG9tYXRpYy9VCmRpcGxvbWF0aWNhbGx5CmRpcGxvbWF0aXN0L01TCmRpcGxvcGlhCmRpcG9sZS9TTQpkaXBwZWQKZGlwcGVyL1NNCmRpcHBpbmcKZGlwcHkvUlQKZGlwc28vUwpkaXBzb21hbmlhL00KZGlwc29tYW5pYWMvTVMKZGlwc3RpY2svU00KZGlwdGVyb3VzCmRpcHR5Y2gvTQpkaXB0eWNocwpkaXJlL1lUUgpkaXJlY3QvQVNER1ZUCmRpcmVjdGVyCmRpcmVjdGlvbi9JTQpkaXJlY3Rpb25hbApkaXJlY3Rpb25sZXNzCmRpcmVjdGlvbnMKZGlyZWN0aXZlL1NNCmRpcmVjdGx5CmRpcmVjdG5lc3MvSU0KZGlyZWN0b3IvTVMKZGlyZWN0b3JhdGUvU00KZGlyZWN0b3JpYWwKZGlyZWN0b3JzaGlwL1NNCmRpcmVjdG9yeS9TTQpkaXJlZnVsCmRpcmdlL1NNCmRpcmlnaWJsZS9NUwpkaXJrL01TCmRpcm5kbC9TTQpkaXJ0L00KZGlydGJhbGwvUwpkaXJ0aWx5CmRpcnRpbmVzcy9NCmRpcnR5L0RSU1RHUApkaXMvTQpkaXNhYmxlL0RTR0wKZGlzYWJsZW1lbnQvTQpkaXNhbWJpZ3VhdGUvTgpkaXNhcHBvaW50aW5nL1kKZGlzYXJtaW5nL1kKZGlzYXNzZW1ibHkKZGlzYXN0cm91cy9ZCmRpc2JhbmRtZW50L00KZGlzYmFybWVudC9NCmRpc2JlbGlldmluZy9ZCmRpc2J1cnNhbC9NCmRpc2J1cnNlL0RTR0wKZGlzYnVyc2VtZW50L01TCmRpc2MvTQpkaXNjZXJuL0xTREcKZGlzY2VybmlibGUvSQpkaXNjZXJuaWJseQpkaXNjZXJuaW5nL1kKZGlzY2Vybm1lbnQvTQpkaXNjaGFyZ2VkL1UKZGlzY2lwbGUvU00KZGlzY2lwbGVzaGlwL00KZGlzY2lwbGluYXJpYW4vU00KZGlzY2lwbGluYXJ5CmRpc2NpcGxpbmUvRFNNRwpkaXNjaXBsaW5lZC9VCmRpc2Nsb3NlL0RTRwpkaXNjbG9zZWQvVQpkaXNjby9NRwpkaXNjb2dyYXBoeS9TTQpkaXNjb2xvcmF0aW9uL1MKZGlzY29tYm9idWxhdGUvRFNHTgpkaXNjb21ib2J1bGF0aW9uL00KZGlzY29tZml0L0RHCmRpc2NvbWZpdHVyZS9NCmRpc2NvbW1vZGUvREcKZGlzY29uY2VydGluZy9ZCmRpc2Nvbm5lY3RlZC9QWQpkaXNjb25uZWN0ZWRuZXNzL00KZGlzY29uc29sYXRlL1kKZGlzY29yZGFuY2UvTQpkaXNjb3JkYW50L1kKZGlzY290aGVxdWUvU00KZGlzY291cmFnZS9MR0RTCmRpc2NvdXJhZ2VtZW50L1NNCmRpc2NvdXJhZ2luZy9ZCmRpc2NvdmVyL0FTREcKZGlzY292ZXJlZC9VCmRpc2NvdmVyZXIvTVMKZGlzY292ZXJ5L0FTTQpkaXNjcmVldC9QUllUCmRpc2NyZWV0bmVzcy9NCmRpc2NyZXBhbmN5L1NNCmRpc2NyZXBhbnQKZGlzY3JldGUvUFlOCmRpc2NyZXRlbmVzcy9NCmRpc2NyZXRpb24vSU0KZGlzY3JldGlvbmFyeQpkaXNjcmltaW5hbnQKZGlzY3JpbWluYXRlL0dORFMKZGlzY3JpbWluYXRpbmcvVQpkaXNjcmltaW5hdGlvbi9NCmRpc2NyaW1pbmF0b3IvTVMKZGlzY3JpbWluYXRvcnkKZGlzY3Vyc2l2ZW5lc3MvTQpkaXNjdXMvTVMKZGlzY3Vzc2FudC9TTQpkaXNjdXNzaW9uL1NNCmRpc2RhaW4vU01ERwpkaXNkYWluZnVsL1kKZGlzZW1ib3dlbC9TRExHCmRpc2VtYm93ZWxtZW50L00KZGlzZmlndXJlbWVudC9TTQpkaXNmcmFuY2hpc2VtZW50L00KZGlzZ29yZ2VtZW50L00KZGlzZ3J1bnRsZS9MR0RTCmRpc2dydW50bGVtZW50L00KZGlzZ3Vpc2UvR0QKZGlzZ3Vpc2VkL1UKZGlzZ3VzdGVkL1kKZGlzZ3VzdGluZy9ZCmRpc2gvTURTRwpkaXNoYWJpbGxlL00KZGlzaGFybW9uaW91cwpkaXNoY2xvdGgvTQpkaXNoY2xvdGhzCmRpc2hlYXJ0ZW5pbmcvWQpkaXNoZXZlbC9ER0xTCmRpc2hldmVsbWVudC9NCmRpc2hwYW4vU00KZGlzaHJhZy9TTQpkaXNodG93ZWwvTVMKZGlzaHdhcmUvTQpkaXNod2FzaGVyL01TCmRpc2h3YXRlci9NCmRpc2h5CmRpc2lsbHVzaW9uL0dMRApkaXNpbGx1c2lvbm1lbnQvTQpkaXNpbmZlY3RhbnQvTVMKZGlzaW5mZWN0aW9uL00KZGlzaW50ZXJlc3RlZC9QWQpkaXNpbnRlcmVzdGVkbmVzcy9NCmRpc2pvaW50ZWQvWVAKZGlzam9pbnRlZG5lc3MvTQpkaXNqdW5jdGl2ZQpkaXNqdW5jdHVyZQpkaXNrL01TCmRpc2tldHRlL01TCmRpc2xvZGdlL0dEUwpkaXNtYWwvWQpkaXNtYW50bGVtZW50L00KZGlzbWF5L1NNREcKZGlzbWF5ZWQvVQpkaXNtZW1iZXIvTEdECmRpc21lbWJlcm1lbnQvTQpkaXNtaXNzaXZlL1kKZGlzb3JkZXIvWQpkaXNvcmdhbml6YXRpb24vTQpkaXNwYXJhZ2UvRFNHTApkaXNwYXJhZ2VtZW50L00KZGlzcGFyYWdpbmcvWQpkaXNwYXJhdGUvWQpkaXNwYXRjaGVyL01TCmRpc3BlbC9TCmRpc3BlbGxlZApkaXNwZWxsaW5nCmRpc3BlbnNhcnkvU00KZGlzcGVuc2F0aW9uL01TCmRpc3BlbnNlL0JaR0RSUwpkaXNwZW5zZXIvTQpkaXNwZXJzYWwvTQpkaXNwZXJzZS9HTkRTCmRpc3BlcnNpb24vTQpkaXNwaXJpdC9HRFMKZGlzcGxlYXN1cmUvTQpkaXNwb3NhYmxlL1NNCmRpc3Bvc2FsL1NNCmRpc3Bvc2VkL0kKZGlzcG9zaXRpb24vSVNNCmRpc3Bvc3Nlc3Npb24vTQpkaXNwcm9vZi9TTQpkaXNwcm9wb3J0aW9uYWwKZGlzcHJvdmUvQgpkaXNwdXRhYmxlL0kKZGlzcHV0YWJseS9JCmRpc3B1dGFudC9NUwpkaXNwdXRhdGlvbi9TTQpkaXNwdXRhdGlvdXMvWQpkaXNwdXRlL0RSU01aR0IKZGlzcHV0ZWQvVQpkaXNwdXRlci9NCmRpc3F1aWV0L0dTTUQKZGlzcXVpc2l0aW9uL01TCmRpc3JlZ2FyZGZ1bApkaXNyZXBhaXIvTQpkaXNyZXB1dGUvTUIKZGlzcnVwdC9HVlNECmRpc3J1cHRpb24vU00KZGlzcnVwdGl2ZS9ZCmRpc3NlY3QvU0RHCmRpc3NlZApkaXNzZW1ibGFuY2UvTQpkaXNzZW1ibGUvWkdEUlMKZGlzc2VtYmxlci9NCmRpc3NlbWluYXRlL0dORFMKZGlzc2VtaW5hdGlvbi9NCmRpc3NlbnNpb24vU00KZGlzc2VudC9TTURSWkcKZGlzc2VudGVyL00KZGlzc2VydGF0aW9uL1NNCmRpc3NpZGVuY2UvTQpkaXNzaWRlbnQvTVMKZGlzc2ltaWxhcgpkaXNzaW1pbGl0dWRlL1MKZGlzc2luZwpkaXNzaXBhdGUvR05EUwpkaXNzaXBhdGlvbi9NCmRpc3NvY2lhdGUvR05EUwpkaXNzb2NpYXRpb24vTQpkaXNzb2x1YmxlL0kKZGlzc29sdXRlL1lOUApkaXNzb2x1dGVuZXNzL00KZGlzc29sdmUvQUdEUwpkaXNzb2x2ZWQvVQpkaXNzb25hbmNlL1NNCmRpc3NvbmFudApkaXNzdWFkZS9HRFMKZGlzc3Vhc2l2ZQpkaXN0CmRpc3RhZmYvU00KZGlzdGFsL1kKZGlzdGFuY2UvRFNNRwpkaXN0YW50L1kKZGlzdGFzdGUvU00KZGlzdGVtcGVyL00KZGlzdGVudGlvbi9TTQpkaXN0aWxsYXRlL1NNTlgKZGlzdGlsbGF0aW9uL00KZGlzdGlsbGVyeS9TTQpkaXN0aW5jdC9JWVRWUApkaXN0aW5jdGVyCmRpc3RpbmN0aW9uL1NNCmRpc3RpbmN0aXZlL1lQCmRpc3RpbmN0aXZlbmVzcy9NCmRpc3RpbmN0bmVzcy9JTQpkaXN0aW5ndWlzaC9HRFNCCmRpc3Rpbmd1aXNoYWJsZS9JCmRpc3Rpbmd1aXNoZWQvVQpkaXN0b3J0L0dEUgpkaXN0b3J0aW9uL01TCmRpc3RyYWN0L0RHCmRpc3RyYWN0ZWQvWQpkaXN0cmFjdGlvbi9TCmRpc3RyYWl0CmRpc3RyYXVnaHQKZGlzdHJlc3MvREcKZGlzdHJlc3NmdWwKZGlzdHJlc3NpbmcvWQpkaXN0cmlidXRlL0FHTlZEUwpkaXN0cmlidXRlZC9VCmRpc3RyaWJ1dGlvbi9BTQpkaXN0cmlidXRpb25hbApkaXN0cmlidXRpb25zCmRpc3RyaWJ1dGl2ZS9ZCmRpc3RyaWJ1dG9yJ3MKZGlzdHJpYnV0b3IvQVMKZGlzdHJpYnV0b3JzaGlwL1MKZGlzdHJpY3QncwpkaXN0cmljdC9BUwpkaXN0dXJiL1pHU0RSCmRpc3R1cmJhbmNlL1NNCmRpc3R1cmJlZC9VCmRpc3R1cmJlci9NCmRpc3R1cmJpbmcvWQpkaXN1bmlvbi9NCmRpc3lsbGFiaWMKZGl0Y2gvTURTRwpkaXRoZXIvU01EUlpHCmRpdGhlcmVyL00KZGl0cmFuc2l0aXZlCmRpdHN5CmRpdHRvL1NNREcKZGl0dHkvU00KZGl0ei9NUwpkaXVyZXRpYy9NUwpkaXVybmFsL1kKZGl2CmRpdmEvTVMKZGl2YWxlbnQKZGl2YW4vU00KZGl2ZS9NWlRHRFJTCmRpdmVyL00KZGl2ZXJnZS9EU0cKZGl2ZXJnZW5jZS9NUwpkaXZlcmdlbnQKZGl2ZXJzZS9YWU5QCmRpdmVyc2VuZXNzL00KZGl2ZXJzaWZpY2F0aW9uL00KZGl2ZXJzaWZ5L0dORFMKZGl2ZXJzaW9uL00KZGl2ZXJzaW9uYXJ5CmRpdmVyc2l0eS9TTQpkaXZlcnQvU0RHCmRpdmVydGljdWxpdGlzL00KZGl2ZXN0L1NMREcKZGl2ZXN0aXR1cmUvTVMKZGl2ZXN0bWVudC9NCmRpdmlkZS9EUlNNWkdCCmRpdmlkZWQvVQpkaXZpZGVuZC9NUwpkaXZpZGVyL00KZGl2aW5hdGlvbi9NCmRpdmluZS9EUlNNWVpURwpkaXZpbmVyL00KZGl2aW5nL00KZGl2aW5pdHkvU00KZGl2aXNpYmlsaXR5L0lNCmRpdmlzaWJsZS9JCmRpdmlzaW9uL01TCmRpdmlzaW9uYWwKZGl2aXNpdmUvUFkKZGl2aXNpdmVuZXNzL00KZGl2aXNvci9TTQpkaXZvcmNlL0RTTE1HCmRpdm9yY2VlL01TCmRpdm9yY2VtZW50L01TCmRpdm90L1NNCmRpdnVsZ2UvR0RTCmRpdnZ5L0RTTUcKZGl4aWVsYW5kL00KZGl6emlseQpkaXp6aW5lc3MvTQpkaXp6eS9EUlNQVEcKZGplbGxhYmEvTVMKZG8vU0pNUkhaRwpkb2FibGUKZG9iL1MKZG9iYmVkCmRvYmJpbi9TTQpkb2JiaW5nCmRvYmVybWFuL01TCmRvYnJvCmRvYy9TTQpkb2NlbnQvU00KZG9jaWxlL1kKZG9jaWxpdHkvTQpkb2NrL01EUlpHUwpkb2NrZXQvU01ERwpkb2NrbGFuZC9TCmRvY2tzaWRlCmRvY2t3b3JrZXIvTVMKZG9ja3lhcmQvTVMKZG9jdG9yL1NNREcKZG9jdG9yYWwKZG9jdG9yYXRlL01TCmRvY3RyaW5haXJlL01TCmRvY3RyaW5hbApkb2N0cmluZS9NUwpkb2N1ZHJhbWEvU00KZG9jdW1lbnQvR01EUwpkb2N1bWVudGFyeS9TTQpkb2N1bWVudGF0aW9uL1NNCmRvY3VtZW50ZWQvVQpkb2RkZXIvU01ERwpkb2RkZXJ5CmRvZGRsZQpkb2RnZS9EUlNNWkcKZG9kZ2VtL1MKZG9kZ2VyL00KZG9kZ3kvUlQKZG9kby9NUwpkb2UvU00KZG9lci9NCmRvZXMvQVUKZG9lc2tpbi9NUwpkb2Vzbid0CmRvZmYvREdTCmRvZy9TTQpkb2djYXJ0L1NNCmRvZ2NhdGNoZXIvU00KZG9nZS9NUwpkb2dlYXJlZApkb2dmaWdodC9TTQpkb2dmaXNoL01TCmRvZ2dlZC9QWQpkb2dnZWRuZXNzL00KZG9nZ2VyZWwvTQpkb2dnaW5nCmRvZ2dvbmUvVEdSUwpkb2dneS9SU01UCmRvZ2hvdXNlL1NNCmRvZ2llL1NNCmRvZ2xlZy9TTQpkb2dsZWdnZWQKZG9nbGVnZ2luZwpkb2dsaWtlCmRvZ21hL1NNCmRvZ21hdGljCmRvZ21hdGljYWxseQpkb2dtYXRpc20vTQpkb2dtYXRpc3QvU00KZG9nbmFwcGVyCmRvZ3Nib2R5L1MKZG9nc2xlZC9TCmRvZ3Ryb3QvTVMKZG9ndHJvdHRlZApkb2d0cm90dGluZwpkb2d3b29kL01TCmRvaWx5L1NNCmRvaW5nL1VTTQpkb2xkcnVtcy9NCmRvbGUncwpkb2xlL0ZHRFMKZG9sZWZ1bC9ZUApkb2xlZnVsbmVzcy9NCmRvbGwvTURHUwpkb2xsYXIvU00KZG9sbGhvdXNlL1NNCmRvbGxvcC9TR01ECmRvbGx5L1NNCmRvbG1lbi9TTQpkb2xvbWl0ZS9NCmRvbG9yL00KZG9sb3JvdXMvWQpkb2xwaGluL01TCmRvbHQvTVMKZG9sdGlzaC9ZUApkb2x0aXNobmVzcy9NCmRvbWFpbi9TTQpkb21lL01HRFMKZG9tZXN0aWMvU00KZG9tZXN0aWNhbGx5CmRvbWVzdGljYXRlL0RTR04KZG9tZXN0aWNhdGVkL1UKZG9tZXN0aWNhdGlvbi9NCmRvbWVzdGljaXR5L00KZG9taWNpbGUvRFNNRwpkb21pY2lsaWFyeQpkb21pbmFuY2UvTQpkb21pbmFudC9TTVkKZG9taW5hdGUvRFNHTgpkb21pbmF0aW9uL00KZG9taW5hdHJpY2VzCmRvbWluYXRyaXgvTQpkb21pbmVlci9TR0QKZG9taW5lZXJpbmcvWQpkb21pbmlvbi9TTQpkb21pbm8vTQpkb21pbm9lcwpkb24ndApkb24vU00KZG9uYS9NUwpkb25hdGUvRFNYR04KZG9uYXRpb24vTQpkb25lL0ZBVQpkb25nL01ER1MKZG9uZ2xlL1NNCmRvbmtleS9TTQpkb25uZWQKZG9ubmluZwpkb25uaXNoCmRvbm55YnJvb2svTVMKZG9ub3IvU00KZG9udXRzCmRvb2RhZC9TTQpkb29kYWgKZG9vZGFocwpkb29kbGUvRFJTTVpHCmRvb2RsZWJ1Zy9TTQpkb29kbGVyL00KZG9vaGlja2V5L1NNCmRvb2xhbGx5CmRvb20vTURHUwpkb29tc2F5ZXIvTVMKZG9vbXNkYXkvTQpkb29tc3Rlci9TCmRvb3Incwpkb29yL0lTCmRvb3JiZWxsL01TCmRvb3JqYW1iL1MKZG9vcmtlZXBlci9NUwpkb29ya25vYi9NUwpkb29ya25vY2tlci9TCmRvb3JtYW4vTQpkb29ybWF0L1NNCmRvb3JtZW4KZG9vcnBsYXRlL1NNCmRvb3Jwb3N0L1MKZG9vcnN0ZXAvTVMKZG9vcnN0ZXBwZWQKZG9vcnN0ZXBwaW5nCmRvb3JzdG9wL01TCmRvb3J3YXkvU00KZG9vcnlhcmQvTVMKZG9wYS9NCmRvcGFtaW5lCmRvcGUvTVpHRFJTCmRvcGVyL00KZG9wZXkKZG9waWVyCmRvcGllc3QKZG9waW5lc3MvTQpkb3BpbmcvTQpkb3BwZWxnYW5nZXIvUwpkb3JrL01TCmRvcmt5L1JUCmRvcm0vTVJaUwpkb3JtYW5jeS9NCmRvcm1hbnQKZG9ybWVyL00KZG9ybWljZQpkb3JtaXRvcnkvU00KZG9ybW91c2UvTQpkb3JzYWwvWQpkb3J5L1NNCmRvc2FnZS9TTQpkb3NlL01HRFMKZG9zaApkb3NpbWV0ZXIvU00KZG9zcy9EUlNaRwpkb3NzaG91c2UvUwpkb3NzaWVyL01TCmRvc3QKZG90L1pHU01EUgpkb3RhZ2UvTQpkb3RhcmQvU00KZG90Y29tL1NNCmRvdGUvUwpkb3Rlci9NCmRvdGluZy9ZCmRvdHRlZApkb3R0aW5nCmRvdHR5L1JUCmRvdWJsZSdzCmRvdWJsZS9BRFNHCmRvdWJsZWhlYWRlci9NUwpkb3VibGVzcGVhay9NCmRvdWJsZXQvTVMKZG91Ymxvb24vU00KZG91Ymx5CmRvdWJ0L1NNRFJaRwpkb3VidGVyL00KZG91YnRmdWwvUFkKZG91YnRmdWxuZXNzL00KZG91YnRpbmcvWQpkb3VidGxlc3MvWQpkb3VjaGUvRFNNRwpkb3VnaC9NCmRvdWdobnV0L1NNCmRvdWdodHkvUlQKZG91Z2h5L1RSCmRvdXIvUllUUApkb3VybmVzcy9NCmRvdXNlL0RTRwpkb3ZlL01TCmRvdmVjb3QvUwpkb3ZlY290ZS9TTQpkb3ZldGFpbC9NRFNHCmRvdmlzaApkb3dhZ2VyL01TCmRvd2RpbHkKZG93ZGluZXNzL00KZG93ZHkvUlNQVApkb3dlbC9TTURHCmRvd2VyL1NNREcKZG93bi9NRFJaR1MKZG93bmJlYXQvU00KZG93bmNhc3QKZG93bmRyYWZ0L01TCmRvd25lci9NCmRvd25mYWxsL1NNTgpkb3duZmllbGQKZG93bmdyYWRlL0RTTUcKZG93bmhlYXJ0ZWQvUFkKZG93bmhlYXJ0ZWRuZXNzL00KZG93bmhpbGwvTVMKZG93bmxvYWQvTURCU0cKZG93bm1hcmtldApkb3ducGxheS9EU0cKZG93bnBvdXIvTVMKZG93bnJhbmdlCmRvd25yaWdodApkb3ducml2ZXIKZG93bnNjYWxlCmRvd25zaGlmdC9TR0QKZG93bnNpZGUvTVMKZG93bnNpemUvR0RTCmRvd25zaXppbmcvTQpkb3duc3BvdXQvTVMKZG93bnN0YWdlCmRvd25zdGFpcnMvTQpkb3duc3RhdGUvTQpkb3duc3RyZWFtCmRvd25zd2luZy9NUwpkb3dudGltZS9NCmRvd250b3duL00KZG93bnRyZW5kL01TCmRvd250cm9kZGVuCmRvd250dXJuL01TCmRvd253YXJkL1MKZG93bndpbmQKZG93bnkvUlQKZG93cnkvU00KZG93c2UvRFJTWkcKZG93c2VyL00KZG94b2xvZ3kvU00KZG95ZW4vU00KZG95ZW5uZS9NUwpkb3ovWEdETlMKZG96ZS9NCmRvemVuL01ICmRvemlseQpkb3p5L1JUUApkcGkKZHB0CmRyYWIvTVlTUApkcmFiYmVyCmRyYWJiZXN0CmRyYWJuZXNzL00KZHJhY2htYS9NUwpkcmFjb25pYW4KZHJhZnQncwpkcmFmdC9BU0RHCmRyYWZ0ZWUvU00KZHJhZnRlci9TTQpkcmFmdGlseQpkcmFmdGluZXNzL00KZHJhZnRpbmcvTQpkcmFmdHNtYW4vTQpkcmFmdHNtYW5zaGlwL00KZHJhZnRzbWVuCmRyYWZ0c3dvbWFuL00KZHJhZnRzd29tZW4KZHJhZnR5L1JUUApkcmFnL01TCmRyYWdnZWQKZHJhZ2dpbmcKZHJhZ2d5L1RSCmRyYWduZXQvU00KZHJhZ29uL1NNCmRyYWdvbmZseS9TTQpkcmFnb29uL1NNREcKZHJhZ3N0ZXIvUwpkcmFpbi9TTURSWkcKZHJhaW5hZ2UvTQpkcmFpbmJvYXJkL1NNCmRyYWluZXIvTQpkcmFpbnBpcGUvTVMKZHJha2UvU00KZHJhbS9NUwpkcmFtYS9TTQpkcmFtYXRpYy9TCmRyYW1hdGljYWxseQpkcmFtYXRpY3MvTQpkcmFtYXRpc3QvU00KZHJhbWF0aXphdGlvbi9TTQpkcmFtYXRpemUvRFNHCmRyYW5rCmRyYXBlL0RSU01aRwpkcmFwZXIvTQpkcmFwZXJ5L1NNCmRyYXN0aWMKZHJhc3RpY2FsbHkKZHJhdApkcmF0dGVkCmRyYXVnaHRib2FyZC9TCmRyYXcvTVJaR1NKCmRyYXdiYWNrL01TCmRyYXdicmlkZ2UvTVMKZHJhd2VyL00KZHJhd2luZy9NCmRyYXdsL1NNREcKZHJhd24vQQpkcmF3c3RyaW5nL01TCmRyYXkvTVMKZHJlYWQvU01ERwpkcmVhZGZ1bC9QWQpkcmVhZGZ1bG5lc3MvTQpkcmVhZGxvY2tzL00KZHJlYWRub3VnaHQvTVMKZHJlYW0vU01EUlpHCmRyZWFtYm9hdC9NUwpkcmVhbWVkL1UKZHJlYW1lci9NCmRyZWFtaWx5CmRyZWFtaW5lc3MvTQpkcmVhbWxhbmQvTQpkcmVhbWxlc3MKZHJlYW1saWtlCmRyZWFtd29ybGQvU00KZHJlYW15L1JQVApkcmVhcgpkcmVhcmlseQpkcmVhcmluZXNzL00KZHJlYXJ5L1JQVApkcmVkZ2UvRFJTTVpHCmRyZWRnZXIvTQpkcmVncy9NCmRyZW5jaC9HRFMKZHJlc3MvQVVHU0RNCmRyZXNzYWdlL00KZHJlc3Nlci9NUwpkcmVzc2luZXNzL00KZHJlc3NpbmcvU00KZHJlc3NtYWtlci9TTQpkcmVzc21ha2luZy9NCmRyZXNzeS9UUFIKZHJldy9BCmRyaWJibGUvTVpHRFJTCmRyaWJibGVyL00KZHJpYmxldC9NUwpkcmllci9NCmRyaWZ0L1NNRFJaRwpkcmlmdGVyL00KZHJpZnRuZXQvUwpkcmlmdHdvb2QvTQpkcmlsbC9TTURSWkcKZHJpbGxlci9NCmRyaWxsbWFzdGVyL1NNCmRyaW5rL1NNUkJKWkcKZHJpbmthYmxlL1UKZHJpbmtlci9NCmRyaXAvTVMKZHJpcHBlZApkcmlwcGluZy9TTQpkcmlwcHkvVFIKZHJpdmUvUlNNWkdKCmRyaXZlbC9TWkdNRFIKZHJpdmVsZXIvTQpkcml2ZW4KZHJpdmVyL00KZHJpdmVzaGFmdC9TTQpkcml2ZXdheS9NUwpkcml6emxlL01HRFMKZHJpenpseQpkcm9ndWUvU00KZHJvaWQvUwpkcm9sbC9SUFQKZHJvbGxlcnkvU00KZHJvbGxuZXNzL00KZHJvbGx5CmRyb21lZGFyeS9TTQpkcm9uZS9EU01HCmRyb29sL1NNREcKZHJvb3AvR1NNRApkcm9vcGluZXNzL00KZHJvb3B5L1RQUgpkcm9wL01TCmRyb3BraWNrL01TCmRyb3BsZXQvU00KZHJvcG91dC9TTQpkcm9wcGVkCmRyb3BwZXIvU00KZHJvcHBpbmcvUwpkcm9wcGluZ3MvTQpkcm9wc2ljYWwKZHJvcHN5L00KZHJvc3MvTQpkcm91Z2h0L1NNCmRyb3ZlL1JTTVoKZHJvdmVyL00KZHJvd24vR1NKRApkcm93bmluZy9NCmRyb3dzZS9NR0RTCmRyb3dzaWx5CmRyb3dzaW5lc3MvTQpkcm93c3kvUlRQCmRydWIvUwpkcnViYmVkCmRydWJiZXIvU00KZHJ1YmJpbmcvTVMKZHJ1ZGdlL01HRFMKZHJ1ZGdlcnkvTQpkcnVnL01TCmRydWdnZWQKZHJ1Z2dpZS9TTQpkcnVnZ2luZwpkcnVnZ2lzdC9TTQpkcnVnZ3kKZHJ1Z3N0b3JlL01TCmRydWlkL1NNCmRydWlkaXNtL00KZHJ1bS9NUwpkcnVtYmVhdC9TTQpkcnVtbGluL1NNCmRydW1tZWQKZHJ1bW1lci9TTQpkcnVtbWluZwpkcnVtc3RpY2svU00KZHJ1bmsvU1RNTlIKZHJ1bmthcmQvTVMKZHJ1bmtlbi9QWQpkcnVua2VubmVzcy9NCmRydXBlL1NNCmRydXRoZXJzL00KZHJ5L1pUR0RSU01ZCmRyeWFkL1NNCmRyeWVyL1NNCmRyeW5lc3MvTQpkcnlzCmRyeXdhbGwvTQpkdWFsCmR1YWxpc20vTQpkdWFsaXR5L00KZHViL1NNCmR1YmJlZApkdWJiZXIvU00KZHViYmluL00KZHViYmluZwpkdWJpZXR5L00KZHViaW91cy9ZUApkdWJpb3VzbmVzcy9NCmR1Y2FsCmR1Y2F0L1NNCmR1Y2hlc3MvTVMKZHVjaHkvU00KZHVjay9NREdTCmR1Y2tiaWxsL1NNCmR1Y2tib2FyZHMKZHVja2xpbmcvU00KZHVja3BpbnMvTQpkdWNrd2VlZC9NCmR1Y2t5L1RSU00KZHVjdCdzL0sKZHVjdC9DS0lGUwpkdWN0aWxlCmR1Y3RpbGl0eS9NCmR1Y3RpbmcKZHVjdGxlc3MKZHVkL0dTTUQKZHVkZS9NUwpkdWRnZW9uL00KZHVlL1NNCmR1ZWwvTURSSlpHUwpkdWVsZXIvTQpkdWVsaXN0L1NNCmR1ZW5uYS9NUwpkdWV0L01TCmR1ZmYvTURSWkdTCmR1ZmZlci9NCmR1ZwpkdWdvdXQvTVMKZHVoCmR1a2UvTVMKZHVrZWRvbS9TTQpkdWxjZXQKZHVsY2ltZXIvTVMKZHVsbC9EUlBUR1MKZHVsbGFyZC9TTQpkdWxsbmVzcy9NCmR1bGx5CmR1bHkvVQpkdW1iL1JZUFQKZHVtYmJlbGwvU00KZHVtYmZvdW5kL1NERwpkdW1ibmVzcy9NCmR1bWJvL1MKZHVtYnN0cnVjawpkdW1id2FpdGVyL1NNCmR1bWR1bS9NUwpkdW1teS9TTQpkdW1wL01EUlpHUwpkdW1waW5lc3MvTQpkdW1wbGluZy9TTQpkdW1wc2l0ZS9TCmR1bXBzdGVyL1NNCmR1bXB5L1BUUgpkdW4vU00KZHVuY2UvU00KZHVuZGVyaGVhZC9NUwpkdW5lL01TCmR1bmcvTURHUwpkdW5nYXJlZS9NUwpkdW5nZW9uL1NNCmR1bmdoaWxsL01TCmR1bmsvTURHUwpkdW5uZWQKZHVubmVyCmR1bm5lc3QKZHVubmluZwpkdW5ubwpkdW8vU00KZHVvZGVjaW1hbApkdW9kZW5hCmR1b2RlbmFsCmR1b2RlbnVtL00KZHVvcG9seS9TCmR1cGUvTVpHRFJTCmR1cGVyL00KZHVwbGUKZHVwbGV4L01TCmR1cGxpY2F0ZSdzCmR1cGxpY2F0ZS9BR05EUwpkdXBsaWNhdGlvbi9BTQpkdXBsaWNhdG9yL01TCmR1cGxpY2l0b3VzCmR1cGxpY2l0eS9NCmR1cmFiaWxpdHkvTQpkdXJhYmxlCmR1cmFibHkKZHVyYW5jZS9NCmR1cmF0aW9uL00KZHVyZXNzL00KZHVyaW5nCmR1cnN0CmR1cnVtL00KZHVzay9NCmR1c2tpbmVzcy9NCmR1c2t5L1JUUApkdXN0L01EUlpHUwpkdXN0YmluL1NNCmR1c3RjYXJ0L1MKZHVzdGVyL00KZHVzdGluZXNzL00KZHVzdGxlc3MKZHVzdG1hbgpkdXN0bWVuCmR1c3RwYW4vU00KZHVzdHNoZWV0L1MKZHVzdHkvUlRQCmR1dGNoCmR1dGVvdXMvWQpkdXRpYWJsZQpkdXRpZnVsL1lQCmR1dGlmdWxuZXNzL00KZHV0eS9TTQpkdXZldC9TTQpkd2FyZi9TR01ECmR3YXJmaXNoCmR3YXJmaXNtL00KZHdlZWIvU00KZHdlbGwvU0paR1IKZHdlbGxlci9NCmR3ZWxsaW5nL00KZHdlbHQvSQpkd2luZGxlL0RTRwpkeWFkaWMKZHliYnVrL1NNCmR5YmJ1a2ltCmR5ZS9EUlNNWkcKZHllaW5nL0EKZHllci9NCmR5ZXN0dWZmL00KZHlpbmcvTQpkeWtlL01TCmR5bmFtaWMvTVMKZHluYW1pY2FsL1kKZHluYW1pY3MvTQpkeW5hbWlzbS9NCmR5bmFtaXRlL01aR0RSUwpkeW5hbWl0ZXIvTQpkeW5hbW8vU00KZHluYXN0aWMKZHluYXN0eS9TTQpkeXNlbnRlcnkvTQpkeXNmdW5jdGlvbi9NUwpkeXNmdW5jdGlvbmFsCmR5c2xlY3RpYy9TTQpkeXNsZXhpYS9NCmR5c2xleGljL1NNCmR5c3BlcHNpYS9NCmR5c3BlcHRpYy9NUwpkeXNwaGFnaWEKZHlzcHJvc2l1bS9NCmR5c3RvbmlhCmR6CmUnZW4KZSdlcgplL0ZEU1QKZUJheS9NCmVNdXNpYy9NCmVhCmVhY2gKZWFnZXIvUFRSWQplYWdlcm5lc3MvTQplYWdsZS9NUwplYWdsZXQvTVMKZWFyL1NNRFkKZWFyYWNoZS9TTQplYXJidWQvU00KZWFyZHJ1bS9TTQplYXJmdWwvU00KZWFybC9NUwplYXJsZG9tL1NNCmVhcmxpbmVzcy9NCmVhcmxvYmUvU00KZWFybHkvUlRQCmVhcm1hcmsvU01ERwplYXJtdWZmL1NNCmVhcm4vRFJaVEdKUwplYXJuZWQvVQplYXJuZXIvTQplYXJuZXN0L1NNWVAKZWFybmVzdG5lc3MvTQplYXJuaW5ncy9NCmVhcnBob25lL01TCmVhcnBpZWNlL1MKZWFycGx1Zy9TTQplYXJyaW5nL1NNCmVhcnNob3QvTQplYXJzcGxpdHRpbmcKZWFydGgncwplYXJ0aC9VRFlHCmVhcnRoYm91bmQKZWFydGhlbgplYXJ0aGVud2FyZS9NCmVhcnRoaW5lc3MvTQplYXJ0aGxpbmcvTVMKZWFydGhseS9SVAplYXJ0aHF1YWtlL1NNCmVhcnRocy9VCmVhcnRoc2hha2luZwplYXJ0aHdhcmQvUwplYXJ0aHdvcmsvTVMKZWFydGh3b3JtL01TCmVhcnRoeS9SVFAKZWFyd2F4L00KZWFyd2lnL1NNCmVhc2UvRURTTQplYXNlbC9TTQplYXNlbWVudC9TTQplYXNpbHkvVQplYXNpbmVzcy9VTQplYXNpbmcKZWFzdC9NCmVhc3Rib3VuZAplYXN0ZXJseS9TTQplYXN0ZXJuL1pSCmVhc3Rlcm5lci9NCmVhc3Rlcm5tb3N0CmVhc3R3YXJkL1MKZWFzeS9VUlRQCmVhc3lnb2luZwplYXQvWkdCU05SCmVhdGFibGUvU00KZWF0ZW4vVQplYXRlci9NCmVhdGVyeS9TTQplYXZlL01TCmVhdmVzZHJvcC9TCmVhdmVzZHJvcHBlZAplYXZlc2Ryb3BwZXIvU00KZWF2ZXNkcm9wcGluZwplYmIvU01ERwplYm9ueS9TTQplYnVsbGllbmNlL00KZWJ1bGxpZW50L1kKZWJ1bGxpdGlvbi9NCmVjY2VudHJpYy9TTQplY2NlbnRyaWNhbGx5CmVjY2VudHJpY2l0eS9TTQplY2NsCmVjY2xlc2lhbAplY2NsZXNpYXN0aWMvU00KZWNjbGVzaWFzdGljYWwvWQplY2hlbG9uL1NNCmVjaGlub2Rlcm0vU00KZWNobydzCmVjaG8vQURHCmVjaG9lcy9BCmVjaG9pYwplY2hvbG9jYXRpb24vTQplY2hvcwplY2xhaXIvU00KZWNsYXQvTQplY2xlY3RpYy9TTQplY2xlY3RpY2FsbHkKZWNsZWN0aWNpc20vTQplY2xpcHNlL0RTTUcKZWNsaXB0aWMvTQplY2xvZ3VlL1NNCmVjb2NpZGUvTQplY29sCmVjb2xvZ2ljCmVjb2xvZ2ljYWwvWQplY29sb2dpc3QvTVMKZWNvbG9neS9NCmVjb24KZWNvbm9tZXRyaWMKZWNvbm9taWMvUwplY29ub21pY2FsL1VZCmVjb25vbWljcy9NCmVjb25vbWlzdC9TTQplY29ub21pemUvRFJTWkcKZWNvbm9taXplci9NCmVjb25vbXkvU00KZWNvc3lzdGVtL01TCmVjb3RvdXJpc20vTQplY290b3VyaXN0L01TCmVjcnUvTQplY3N0YXN5L1NNCmVjc3RhdGljCmVjc3RhdGljYWxseQplY3UvUwplY3VtZW5pY2FsL1kKZWN1bWVuaWNpc20vTQplY3VtZW5pc20vTQplY3plbWEvTQplZC9BQ1NNCmVkYW1hbWUKZWRkeS9EU01HCmVkZWx3ZWlzcy9NCmVkZW1hL1NNCmVkZ2UvTVpHSkRSUwplZGdlci9NCmVkZ2V3aXNlCmVkZ2lseQplZGdpbmVzcy9NCmVkZ2luZy9NCmVkZ3kvUlRQCmVkaWJpbGl0eS9NCmVkaWJsZS9TTVAKZWRpYmxlbmVzcy9NCmVkaWN0L1NNCmVkaWZpY2F0aW9uL00KZWRpZmljZS9TTQplZGlmaWVyL00KZWRpZnkvRFJTWkdOCmVkaWZ5aW5nL1UKZWRpdCdzCmVkaXQvQURHUwplZGl0YWJsZQplZGl0ZWQvVQplZGl0aW9uL01TCmVkaXRvci9TTQplZGl0b3JpYWwvU01ZCmVkaXRvcmlhbGl6ZS9EU0cKZWRpdG9yc2hpcC9NCmVkdWMKZWR1Y2FiaWxpdHkvTQplZHVjYWJsZS9JCmVkdWNhdGUvQURTR05WCmVkdWNhdGVkL1UKZWR1Y2F0aW9uL0FNCmVkdWNhdGlvbmFsL1kKZWR1Y2F0aW9uYWxpc3QvUwplZHVjYXRpb25pc3QvUwplZHVjYXRpb25zCmVkdWNhdG9yL01TCmVkdWNlL0RTR0IKZWR1dGFpbm1lbnQvTQplZWsKZWVsL1NNCmVlcmllL1JUCmVlcmlseQplZXJpbmVzcy9NCmVmZi9HU0QKZWZmYWNlL0RTTEcKZWZmYWNlbWVudC9NCmVmZmVjdC9TTURHVgplZmZlY3RpdmUvSVBZCmVmZmVjdGl2ZW5lc3MvSU0KZWZmZWN0dWFsL0lZCmVmZmVjdHVhdGUvRFNHCmVmZmVtaW5hY3kvTQplZmZlbWluYXRlL1kKZWZmZW5kaS9TTQplZmZlcmVudAplZmZlcnZlc2NlL0dEUwplZmZlcnZlc2NlbmNlL00KZWZmZXJ2ZXNjZW50L1kKZWZmZXRlL1lQCmVmZmV0ZW5lc3MvTQplZmZpY2FjaW91cy9ZCmVmZmljYWN5L0lNCmVmZmljaWVuY3kvSVNNCmVmZmljaWVudC9JWQplZmZpZ3kvU00KZWZmbG9yZXNjZW5jZS9NCmVmZmxvcmVzY2VudAplZmZsdWVuY2UvTQplZmZsdWVudC9NUwplZmZsdXZpYQplZmZsdXZpdW0vTQplZmZvcnQvU00KZWZmb3J0bGVzcy9ZUAplZmZvcnRsZXNzbmVzcy9NCmVmZnJvbnRlcnkvTQplZmZ1bGdlbmNlL00KZWZmdWxnZW50CmVmZnVzZS9EU0dOVlgKZWZmdXNpb24vTQplZmZ1c2l2ZS9ZUAplZmZ1c2l2ZW5lc3MvTQplZ2FkCmVnYWxpdGFyaWFuL1NNCmVnYWxpdGFyaWFuaXNtL00KZWdnL0dTTUQKZWdnYmVhdGVyL01TCmVnZ2N1cC9TTQplZ2doZWFkL1NNCmVnZ25vZy9NCmVnZ3BsYW50L01TCmVnZ3NoZWxsL1NNCmVnbGFudGluZS9TTQplZ28vU00KZWdvY2VudHJpYy9NUwplZ29jZW50cmljYWxseQplZ29jZW50cmljaXR5L00KZWdvaXNtL00KZWdvaXN0L1NNCmVnb2lzdGljCmVnb2lzdGljYWwvWQplZ29tYW5pYS9NCmVnb21hbmlhYy9NUwplZ290aXNtL00KZWdvdGlzdC9TTQplZ290aXN0aWMKZWdvdGlzdGljYWwvWQplZ3JlZ2lvdXMvUFkKZWdyZWdpb3VzbmVzcy9NCmVncmVzcy9NUwplZ3JldC9TTQplaAplaWRlci9TTQplaWRlcmRvd24vTVMKZWlnZW52YWx1ZS9TCmVpZ2h0L1NNCmVpZ2h0ZWVuL01IUwplaWdodGVlbnRoL00KZWlnaHRlZW50aHMKZWlnaHRoL00KZWlnaHRocwplaWdodGlldGgvTQplaWdodGlldGhzCmVpZ2h0eS9TTUgKZWluc3RlaW5pdW0vTQplaXN0ZWRkZm9kL1MKZWl0aGVyCmVqYWN1bGF0ZS9HTlhEUwplamFjdWxhdGlvbi9NCmVqYWN1bGF0b3J5CmVqZWN0L1NERwplamVjdGlvbi9NUwplamVjdG9yL1NNCmVrZS9EU0cKZWxhYm9yYXRlL1lHTkRTUFgKZWxhYm9yYXRlbmVzcy9NCmVsYWJvcmF0aW9uL00KZWxhbi9NCmVsYW5kL1NNCmVsYXBzZS9EU0cKZWxhc3RpYy9NUwplbGFzdGljYWxseQplbGFzdGljYXRlZAplbGFzdGljaXR5L00KZWxhc3RpY2l6ZS9EU0cKZWxhdGUvRFNHTgplbGF0ZWQvWQplbGF0aW9uL00KZWxib3cvU01ERwplbGJvd3Jvb20vTQplbGRlci9TTVkKZWxkZXJiZXJyeS9TTQplbGRlcmNhcmUvTQplbGRlc3QKZWxkcml0Y2gKZWxlY3QncwplbGVjdC9BU0RHVgplbGVjdGFibGUKZWxlY3Rpb24vQU1TCmVsZWN0aW9uZWVyL0RHUwplbGVjdGl2ZS9NUwplbGVjdG9yL01TCmVsZWN0b3JhbC9ZCmVsZWN0b3JhdGUvTVMKZWxlY3RyaWMvUwplbGVjdHJpY2FsL1kKZWxlY3RyaWNpYW4vTVMKZWxlY3RyaWNpdHkvTQplbGVjdHJpZmljYXRpb24vTQplbGVjdHJpZmllci9NCmVsZWN0cmlmeS9aR05EUlMKZWxlY3Ryb2NhcmRpb2dyYW0vTVMKZWxlY3Ryb2NhcmRpb2dyYXBoL00KZWxlY3Ryb2NhcmRpb2dyYXBocwplbGVjdHJvY2FyZGlvZ3JhcGh5L00KZWxlY3Ryb2N1dGUvRFNYR04KZWxlY3Ryb2N1dGlvbi9NCmVsZWN0cm9kZS9TTQplbGVjdHJvZHluYW1pY3MKZWxlY3Ryb2VuY2VwaGFsb2dyYW0vTVMKZWxlY3Ryb2VuY2VwaGFsb2dyYXBoL00KZWxlY3Ryb2VuY2VwaGFsb2dyYXBoaWMKZWxlY3Ryb2VuY2VwaGFsb2dyYXBocwplbGVjdHJvZW5jZXBoYWxvZ3JhcGh5L00KZWxlY3Ryb2xvZ2lzdC9TTQplbGVjdHJvbHlzaXMvTQplbGVjdHJvbHl0ZS9NUwplbGVjdHJvbHl0aWMKZWxlY3Ryb21hZ25ldC9NUwplbGVjdHJvbWFnbmV0aWMKZWxlY3Ryb21hZ25ldGljYWxseQplbGVjdHJvbWFnbmV0aXNtL00KZWxlY3Ryb21vdGl2ZQplbGVjdHJvbi9NUwplbGVjdHJvbmljL1MKZWxlY3Ryb25pY2EvTQplbGVjdHJvbmljYWxseQplbGVjdHJvbmljcy9NCmVsZWN0cm9wbGF0ZS9EU0cKZWxlY3Ryb3Njb3BlL1NNCmVsZWN0cm9zY29waWMKZWxlY3Ryb3Nob2NrL00KZWxlY3Ryb3N0YXRpYy9TCmVsZWN0cm9zdGF0aWNzL00KZWxlY3Ryb3R5cGUvTVMKZWxlZW1vc3luYXJ5CmVsZWdhbmNlL0lNCmVsZWdhbnQvSVkKZWxlZ2lhYy9NUwplbGVnaWFjYWwKZWxlZ3kvU00KZWxlbQplbGVtZW50L01TCmVsZW1lbnRhbC9ZCmVsZW1lbnRhcnkKZWxlcGhhbnQvU00KZWxlcGhhbnRpYXNpcy9NCmVsZXBoYW50aW5lCmVsZXYKZWxldmF0ZS9YRFNHTgplbGV2YXRpb24vTQplbGV2YXRvci9NUwplbGV2ZW4vU01ICmVsZXZlbnMvUwplbGV2ZW50aC9NCmVsZXZlbnRocwplbGYvTQplbGZpbgplbGZpc2gKZWxpY2l0L1NERwplbGljaXRhdGlvbi9NCmVsaWRlL0RTRwplbGlnaWJpbGl0eS9JTQplbGlnaWJsZQplbGltaW5hdGUvWERTR04KZWxpbWluYXRpb24vTQplbGltaW5hdG9yL1MKZWxpc2lvbi9NUwplbGl0ZS9TTQplbGl0aXNtL00KZWxpdGlzdC9NUwplbGl4aXIvU00KZWxrL1NNCmVsbC9TTQplbGxpcHNlL01TCmVsbGlwc2lzL00KZWxsaXBzb2lkL1NNCmVsbGlwc29pZGFsCmVsbGlwdGljCmVsbGlwdGljYWwvWQplbG0vU00KZWxvY3V0aW9uL00KZWxvY3V0aW9uYXJ5CmVsb2N1dGlvbmlzdC9TTQplbG9kZWEvU00KZWxvbmdhdGUvRFNHTlgKZWxvbmdhdGlvbi9NCmVsb3BlL0RTR0wKZWxvcGVtZW50L01TCmVsb3F1ZW5jZS9NCmVsb3F1ZW50L1kKZWxzZQplbHNld2hlcmUKZWx1Y2lkYXRlL0RTR05YCmVsdWNpZGF0aW9uL00KZWx1ZGUvRFNHCmVsdXNpdmUvWVAKZWx1c2l2ZW5lc3MvTQplbHZlci9TTQplbHZlcwplbHZpc2gKZW0ncwplbS9TCmVtYWNpYXRlL0dORFMKZW1hY2lhdGlvbi9NCmVtYWlsL1NNREcKZW1hbmF0ZS9YRFNHTgplbWFuYXRpb24vTQplbWFuY2lwYXRlL0RTR04KZW1hbmNpcGF0aW9uL00KZW1hbmNpcGF0b3IvTVMKZW1hc2N1bGF0ZS9HTkRTCmVtYXNjdWxhdGlvbi9NCmVtYmFsbS9TWkdEUgplbWJhbG1lci9NCmVtYmFuay9TTEdECmVtYmFua21lbnQvU00KZW1iYXJnby9NREcKZW1iYXJnb2VzCmVtYmFyay9BRUdEUwplbWJhcmthdGlvbi9FTQplbWJhcmthdGlvbnMKZW1iYXJyYXNzL0dMRFMKZW1iYXJyYXNzZWQvVQplbWJhcnJhc3NpbmcvWQplbWJhcnJhc3NtZW50L1NNCmVtYmFzc3kvU00KZW1iYXR0bGVkCmVtYmVkL1MKZW1iZWRkZWQKZW1iZWRkaW5nCmVtYmVsbGlzaC9MR0RTCmVtYmVsbGlzaG1lbnQvU00KZW1iZXIvU00KZW1iZXp6bGUvWkdMRFJTCmVtYmV6emxlbWVudC9NCmVtYmV6emxlci9NCmVtYml0dGVyL0dMRFMKZW1iaXR0ZXJtZW50L00KZW1ibGF6b24vR0RMUwplbWJsYXpvbm1lbnQvTQplbWJsZW0vU00KZW1ibGVtYXRpYwplbWJsZW1hdGljYWxseQplbWJvZGltZW50L0VNCmVtYm9keS9BRUdTRAplbWJvbGRlbi9ER1MKZW1ib2xpc20vTVMKZW1ib2xpemF0aW9uCmVtYm9zcy9EUlNaRwplbWJvc3Nlci9NCmVtYm91Y2h1cmUvTQplbWJvd2VyL1NHRAplbWJyYWNlL0RTTUcKZW1icmFjZWFibGUKZW1icmFzdXJlL01TCmVtYnJvY2F0aW9uL01TCmVtYnJvaWRlci9TRFJaRwplbWJyb2lkZXJlci9NCmVtYnJvaWRlcnkvU00KZW1icm9pbC9ER0xTCmVtYnJvaWxtZW50L00KZW1icnlvL1NNCmVtYnJ5b2xvZ2ljYWwKZW1icnlvbG9naXN0L01TCmVtYnJ5b2xvZ3kvTQplbWJyeW9uaWMKZW1jZWUvRFNNCmVtY2VlaW5nCmVtZW5kL1NERwplbWVuZGF0aW9uL01TCmVtZXJhbGQvTVMKZW1lcmdlL0FEU0cKZW1lcmdlbmNlL0FNCmVtZXJnZW5jeS9TTQplbWVyZ2VudAplbWVyaXRhCmVtZXJpdHVzCmVtZXJ5L00KZW1ldGljL1NNCmVtZi9TCmVtaWdyYW50L1NNCmVtaWdyYXRlL0RTWEdOCmVtaWdyYXRpb24vTQplbWlncmUvU00KZW1pbmVuY2UvTVMKZW1pbmVudC9ZCmVtaXIvTVMKZW1pcmF0ZS9NUwplbWlzc2FyeS9TTQplbWlzc2lvbi9TTQplbWl0L1MKZW1pdHRlZAplbWl0dGVyL01TCmVtaXR0aW5nCmVtby9TTQplbW9qaS9TTQplbW9sbGllbnQvTVMKZW1vbHVtZW50L01TCmVtb3RlL1hEU0dOVgplbW90aWNvbi9TTQplbW90aW9uL00KZW1vdGlvbmFsL1VZCmVtb3Rpb25hbGlzbS9NCmVtb3Rpb25hbGl6ZS9HRFMKZW1vdGlvbmxlc3MKZW1vdGl2ZS9ZCmVtcGF0aGV0aWMKZW1wYXRoaXplL0RTRwplbXBhdGh5L00KZW1wZXJvci9NUwplbXBoYXNlcwplbXBoYXNpcy9NCmVtcGhhc2l6ZS9BR0RTCmVtcGhhdGljL1UKZW1waGF0aWNhbGx5CmVtcGh5c2VtYS9NCmVtcGlyZS9TTQplbXBpcmljCmVtcGlyaWNhbC9ZCmVtcGlyaWNpc20vTQplbXBpcmljaXN0L1NNCmVtcGxhY2VtZW50L1NNCmVtcGxveSdzCmVtcGxveS9BREdMUwplbXBsb3lhYmxlL1UKZW1wbG95ZWUvU00KZW1wbG95ZXIvU00KZW1wbG95bWVudC9VQU0KZW1wbG95bWVudHMKZW1wb3JpdW0vU00KZW1wb3dlci9TREdMCmVtcG93ZXJtZW50L00KZW1wcmVzcy9NUwplbXB0aWx5CmVtcHRpbmVzcy9NCmVtcHR5L1RHUERSU00KZW1weXJlYW4vTQplbXUvU00KZW11bGF0ZS9EU0dOVlgKZW11bGF0aW9uL00KZW11bGF0b3IvU00KZW11bHNpZmljYXRpb24vTQplbXVsc2lmaWVyL00KZW11bHNpZnkvTkRSU1pHCmVtdWxzaW9uL01TCmVuL1NNCmVuYWJsZS9EUlNaRwplbmFibGVyL00KZW5hY3QvQVNMREcKZW5hY3RtZW50L0FTTQplbmFtZWwvSlNaR01EUgplbmFtZWxlci9NCmVuYW1lbHdhcmUvTQplbmFtb3IvU0dECmVuYwplbmNhbXAvTFNHRAplbmNhbXBtZW50L01TCmVuY2Fwc3VsYXRlL1hHTkRTCmVuY2Fwc3VsYXRpb24vTQplbmNhc2UvTERTRwplbmNhc2VtZW50L00KZW5jZXBoYWxpdGljCmVuY2VwaGFsaXRpcy9NCmVuY2hhaW4vREdTCmVuY2hhbnQvRUxER1MKZW5jaGFudGVyL01TCmVuY2hhbnRpbmcvWQplbmNoYW50bWVudC9FTQplbmNoYW50bWVudHMKZW5jaGFudHJlc3MvTVMKZW5jaGlsYWRhL1NNCmVuY2lwaGVyL1NHRAplbmNpcmNsZS9EU0dMCmVuY2lyY2xlbWVudC9NCmVuY2wKZW5jbGF2ZS9NUwplbmNsb3NlL0dEUwplbmNsb3NlZC9VCmVuY2xvc3VyZS9TTQplbmNvZGUvRFJTWkcKZW5jb2Rlci9NCmVuY29taXVtL01TCmVuY29tcGFzcy9HRFMKZW5jb3JlL0RTTUcKZW5jb3VudGVyL0dTTUQKZW5jb3VyYWdlL0RTTEcKZW5jb3VyYWdlbWVudC9TTQplbmNvdXJhZ2luZy9ZCmVuY3JvYWNoL0dMRFMKZW5jcm9hY2htZW50L1NNCmVuY3J1c3QvREdTCmVuY3J1c3RhdGlvbi9TTQplbmNyeXB0L0RHUwplbmNyeXB0aW9uCmVuY3VtYmVyL0VHU0QKZW5jdW1iZXJlZC9VCmVuY3VtYnJhbmNlL01TCmVuY3kKZW5jeWNsaWNhbC9TTQplbmN5Y2xvcGVkaWEvTVMKZW5jeWNsb3BlZGljCmVuY3lzdC9MU0dECmVuY3lzdG1lbnQvTQplbmQvR1ZTSk1ECmVuZGFuZ2VyL1NHREwKZW5kYW5nZXJtZW50L00KZW5kZWFyL1NHTEQKZW5kZWFyaW5nL1kKZW5kZWFybWVudC9TTQplbmRlYXZvci9HU01ECmVuZGVtaWMvTVMKZW5kZW1pY2FsbHkKZW5kZ2FtZS9TCmVuZGluZy9NCmVuZGl2ZS9TTQplbmRsZXNzL1BZCmVuZGxlc3NuZXNzL00KZW5kbW9zdAplbmRvY2FyZGl0aXMKZW5kb2NyaW5lL01TCmVuZG9jcmlub2xvZ2lzdC9NUwplbmRvY3Jpbm9sb2d5L00KZW5kb2dlbm91cy9ZCmVuZG9tZXRyaWFsCmVuZG9tZXRyaW9zaXMKZW5kb21ldHJpdW0KZW5kb3JwaGluL01TCmVuZG9yc2UvTFpHRFJTCmVuZG9yc2VtZW50L01TCmVuZG9yc2VyL00KZW5kb3Njb3BlL01TCmVuZG9zY29waWMKZW5kb3Njb3B5L00KZW5kb3RoZWxpYWwKZW5kb3RoZXJtaWMKZW5kb3cvU0RMRwplbmRvd21lbnQvTVMKZW5kcG9pbnQvU00KZW5kdWUvRFNHCmVuZHVyYWJsZS9VCmVuZHVyYW5jZS9NCmVuZHVyZS9EU0JHCmVuZHdheXMKZW5lbWEvU00KZW5lbXkvU00KZW5lcmdldGljCmVuZXJnZXRpY2FsbHkKZW5lcmdpemUvWkdEUlMKZW5lcmdpemVyL00KZW5lcmd5L1NNCmVuZXJ2YXRlL0dORFMKZW5lcnZhdGlvbi9NCmVuZmVlYmxlL0dEU0wKZW5mZWVibGVtZW50L00KZW5maWxhZGUvRFNNRwplbmZvbGQvU0dECmVuZm9yY2UvTFpHRFJTCmVuZm9yY2VhYmxlL1UKZW5mb3JjZWQvVQplbmZvcmNlbWVudC9NCmVuZm9yY2VyL00KZW5mcmFuY2hpc2UvRUdEU0wKZW5mcmFuY2hpc2VtZW50L0VNCmVuZ2FnZS9FQURTRwplbmdhZ2VtZW50L0VNUwplbmdhZ2luZ2x5CmVuZ2VuZGVyL1NHRAplbmdpbmUvU00KZW5naW5lZXIvTURHUwplbmdpbmVlcmluZy9NCmVuZ29yZ2UvTEdEUwplbmdvcmdlbWVudC9NCmVuZ3JhbS9TTQplbmdyYXZlL1pHSkRSUwplbmdyYXZlci9NCmVuZ3JhdmluZy9NCmVuZ3Jvc3MvR0xEUwplbmdyb3NzbWVudC9NCmVuZ3VsZi9TTEdECmVuZ3VsZm1lbnQvTQplbmhhbmNlL0xaR0RSUwplbmhhbmNlbWVudC9TTQplbmlnbWEvU00KZW5pZ21hdGljCmVuaWdtYXRpY2FsbHkKZW5qYW1ibWVudC9TTQplbmpvaW4vU0dECmVuam95L0dCTFNECmVuam95YWJseQplbmpveW1lbnQvU00KZW5sYXJnZS9MWkdEUlMKZW5sYXJnZWFibGUKZW5sYXJnZW1lbnQvTVMKZW5sYXJnZXIvTQplbmxpZ2h0ZW4vU0dMRAplbmxpZ2h0ZW5lZC9VCmVubGlnaHRlbm1lbnQvTQplbmxpc3QvQURHU0wKZW5saXN0ZWUvU00KZW5saXN0bWVudC9BTQplbmxpc3RtZW50cwplbmxpdmVuL1NMREcKZW5saXZlbm1lbnQvTQplbm1lc2gvRFNHTAplbm1lc2htZW50L00KZW5taXR5L1NNCmVubm9ibGUvRFNHTAplbm5vYmxlbWVudC9NCmVubnVpL00KZW5vcm1pdHkvU00KZW5vcm1vdXMvUFkKZW5vcm1vdXNuZXNzL00KZW5vdWdoL00KZW5wbGFuZS9EU0cKZW5xdWlyZXIvUwplbnF1aXJpbmdseQplbnJhZ2UvR0RTCmVucmFwdHVyZS9EU0cKZW5yaWNoL0RTTEcKZW5yaWNobWVudC9NCmVucm9sbC9ETFNHCmVucm9sbG1lbnQvTVMKZW5zY29uY2UvRFNHCmVuc2VtYmxlL1NNCmVuc2hyaW5lL0dMRFMKZW5zaHJpbmVtZW50L00KZW5zaHJvdWQvREdTCmVuc2lnbi9NUwplbnNpbGFnZS9NCmVuc2xhdmUvRFNHTAplbnNsYXZlbWVudC9NCmVuc25hcmUvRFNMRwplbnNuYXJlbWVudC9NCmVuc3VlL0RTRwplbnN1cmUvWkdEUlMKZW5zdXJlci9NCmVudGFpbC9EU0dMCmVudGFpbG1lbnQvTQplbnRhbmdsZS9FRFNMRwplbnRhbmdsZW1lbnQvRU0KZW50YW5nbGVtZW50cwplbnRlbnRlL1NNCmVudGVyL0FTR0QKZW50ZXJpYwplbnRlcml0aXMvTQplbnRlcnByaXNlL01HUwplbnRlcnByaXNpbmcvWQplbnRlcnRhaW4vWkdEUlNMCmVudGVydGFpbmVyL00KZW50ZXJ0YWluaW5nL01ZCmVudGVydGFpbm1lbnQvTVMKZW50aHJhbGwvR0RTTAplbnRocmFsbG1lbnQvTQplbnRocm9uZS9HRFNMCmVudGhyb25lbWVudC9TTQplbnRodXNlL0RTRwplbnRodXNpYXNtL01TCmVudGh1c2lhc3QvTVMKZW50aHVzaWFzdGljL1UKZW50aHVzaWFzdGljYWxseQplbnRpY2UvR0RTTAplbnRpY2VtZW50L01TCmVudGljaW5nL1kKZW50aXJlL1kKZW50aXJldHkvTQplbnRpdGxlL0RTR0wKZW50aXRsZW1lbnQvU00KZW50aXR5L1NNCmVudG9tYi9EU0dMCmVudG9tYm1lbnQvTQplbnRvbW9sb2dpY2FsCmVudG9tb2xvZ2lzdC9NUwplbnRvbW9sb2d5L00KZW50b3VyYWdlL1NNCmVudHInYWN0ZQplbnRyYWlscy9NCmVudHJhbmNlL0xEU01HCmVudHJhbmNlbWVudC9NCmVudHJhbmNpbmcvWQplbnRyYW50L1NNCmVudHJhcC9MUwplbnRyYXBtZW50L00KZW50cmFwcGVkCmVudHJhcHBpbmcKZW50cmVhdC9HU0QKZW50cmVhdGluZy9ZCmVudHJlYXR5L1NNCmVudHJlZS9NUwplbnRyZW5jaC9EU0dMCmVudHJlbmNobWVudC9NUwplbnRyZXByZW5ldXIvU00KZW50cmVwcmVuZXVyaWFsCmVudHJlcHJlbmV1cnNoaXAKZW50cm9weS9NCmVudHJ1c3QvU0dECmVudHJ5L0FTTQplbnRyeXBob25lL1MKZW50cnl3YXkvTVMKZW50d2luZS9EU0cKZW51bWVyYWJsZQplbnVtZXJhdGUvRFNHTlgKZW51bWVyYXRpb24vTQplbnVtZXJhdG9yL1NNCmVudW5jaWF0ZS9EU0dOCmVudW5jaWF0aW9uL00KZW51cmVzaXMvTQplbnZlbG9wL1NMRFJaRwplbnZlbG9wZS9TTQplbnZlbG9wZXIvTQplbnZlbG9wbWVudC9NCmVudmVub20vU0RHCmVudmlhYmxlL1UKZW52aWFibHkKZW52aW91cy9QWQplbnZpb3VzbmVzcy9NCmVudmlyb25tZW50L01TCmVudmlyb25tZW50YWwvWQplbnZpcm9ubWVudGFsaXNtL00KZW52aXJvbm1lbnRhbGlzdC9TTQplbnZpcm9ucy9NCmVudmlzYWdlL0dEUwplbnZpc2lvbi9ER1MKZW52b3kvU00KZW52eS9EU01HCmVudnlpbmcvWQplbnp5bWF0aWMKZW56eW1lL1NNCmVvbGlhbgplb24vU00KZW9zaW5vcGhpbC9TCmVvc2lub3BoaWxpYwplcGF1bGV0L1NNCmVwZWUvTVMKZXBoZWRyaW5lL00KZXBoZW1lcmEvTQplcGhlbWVyYWwvWQplcGljL01TCmVwaWNlbnRlci9NUwplcGljdXJlL1NNCmVwaWN1cmVhbi9NUwplcGlkZW1pYy9TTQplcGlkZW1pY2FsbHkKZXBpZGVtaW9sb2dpY2FsCmVwaWRlbWlvbG9naXN0L1NNCmVwaWRlbWlvbG9neS9NCmVwaWRlcm1hbAplcGlkZXJtaWMKZXBpZGVybWlzL01TCmVwaWR1cmFsL1MKZXBpZ2xvdHRpcy9NUwplcGlncmFtL1NNCmVwaWdyYW1tYXRpYwplcGlncmFwaC9NCmVwaWdyYXBocwplcGlncmFwaHkvTQplcGlsZXBzeS9NCmVwaWxlcHRpYy9TTQplcGlsb2d1ZS9NUwplcGluZXBocmluZS9NCmVwaXBoYW55L1NNCmVwaXNjb3BhY3kvTQplcGlzY29wYWwKZXBpc2NvcGF0ZS9NCmVwaXNvZGUvU00KZXBpc29kaWMKZXBpc29kaWNhbGx5CmVwaXN0ZW1pYwplcGlzdGVtb2xvZ2ljYWwKZXBpc3RlbW9sb2d5CmVwaXN0bGUvU00KZXBpc3RvbGFyeQplcGl0YXBoL00KZXBpdGFwaHMKZXBpdGhlbGlhbAplcGl0aGVsaXVtL00KZXBpdGhldC9TTQplcGl0b21lL1NNCmVwaXRvbWl6ZS9HRFMKZXBvY2gvTQplcG9jaGFsCmVwb2NocwplcG9ueW1vdXMKZXBveHkvRFNNRwplcHNpbG9uL1NNCmVxdWFiaWxpdHkvTQplcXVhYmxlCmVxdWFibHkKZXF1YWwvU01EWUcKZXF1YWxpdHkvSU0KZXF1YWxpemF0aW9uL00KZXF1YWxpemUvWkdEUlMKZXF1YWxpemVyL00KZXF1YW5pbWl0eS9NCmVxdWF0ZS9EU0dOQlgKZXF1YXRpb24vTQplcXVhdG9yL1NNCmVxdWF0b3JpYWwKZXF1ZXJyeS9TTQplcXVlc3RyaWFuL1NNCmVxdWVzdHJpYW5pc20vTQplcXVlc3RyaWVubmUvU00KZXF1aWRpc3RhbnQvWQplcXVpbGF0ZXJhbC9TTQplcXVpbGlicml1bS9FTQplcXVpbmUvU00KZXF1aW5vY3RpYWwKZXF1aW5veC9NUwplcXVpcC9BUwplcXVpcGFnZS9NUwplcXVpcG1lbnQvTQplcXVpcG9pc2UvTQplcXVpcHBlZC9VQQplcXVpcHBpbmcvQQplcXVpdGFibGUvSQplcXVpdGFibHkvSQplcXVpdGF0aW9uL00KZXF1aXR5L0lTTQplcXVpdgplcXVpdmFsZW5jZS9NUwplcXVpdmFsZW5jeS9TTQplcXVpdmFsZW50L01ZUwplcXVpdm9jYWwvVVkKZXF1aXZvY2FsbmVzcy9NCmVxdWl2b2NhdGUvR05YRFMKZXF1aXZvY2F0aW9uL00KZXF1aXZvY2F0b3IvU00KZXIvQwplcmEvU00KZXJhZGljYWJsZS9JCmVyYWRpY2F0ZS9EU0dOCmVyYWRpY2F0aW9uL00KZXJhZGljYXRvci9NUwplcmFzZS9EUlNCWkcKZXJhc2VyL00KZXJhc3VyZS9TTQplcmJpdW0vTQplcmUKZXJlY3QvUFNHRFkKZXJlY3RpbGUKZXJlY3Rpb24vU00KZXJlY3RuZXNzL00KZXJlY3Rvci9NUwplcmVsb25nCmVyZW1pdGUvTVMKZXJnL1NNCmVyZ28KZXJnb25vbWljL1MKZXJnb25vbWljYWxseQplcmdvbm9taWNzL00KZXJnb3N0ZXJvbC9NCmVyZ290L00KZXJtaW5lL1NNCmVyb2RlL0RTRwplcm9kaWJsZQplcm9nZW5vdXMKZXJvc2lvbi9NCmVyb3NpdmUKZXJvdGljL1MKZXJvdGljYS9NCmVyb3RpY2FsbHkKZXJvdGljaXNtL00KZXJyL0dTRAplcnJhbmQvU00KZXJyYW50L0kKZXJyYXRhL1NNCmVycmF0aWMKZXJyYXRpY2FsbHkKZXJyYXR1bS9NCmVycm9uZW91cy9ZCmVycm9yL1NNCmVyc2F0ei9NUwplcnN0CmVyc3R3aGlsZQplcnVjdC9TREcKZXJ1Y3RhdGlvbi9TTQplcnVkaXRlL1lOCmVydWRpdGlvbi9NCmVydXB0L1NER1YKZXJ1cHRpb24vTVMKZXJ5c2lwZWxhcy9NCmVyeXRocm9jeXRlL1NNCmVyeXRocm9teWNpbgplc2NhbGF0ZS9DRFNHTgplc2NhbGF0aW9uL0NNCmVzY2FsYXRpb25zCmVzY2FsYXRvci9NUwplc2NhbGxvcC9TR01ECmVzY2Fsb3BlL1MKZXNjYXBhZGUvTVMKZXNjYXBlL0xNR0RTCmVzY2FwZWUvTVMKZXNjYXBlbWVudC9TTQplc2NhcGlzbS9NCmVzY2FwaXN0L01TCmVzY2Fwb2xvZ2lzdC9TCmVzY2Fwb2xvZ3kKZXNjYXJnb3QvTVMKZXNjYXJvbGUvTVMKZXNjYXJwbWVudC9NUwplc2NoYXRvbG9naWNhbAplc2NoYXRvbG9neQplc2NoZXcvU0RHCmVzY29ydC9TTURHCmVzY3JpdG9pcmUvTVMKZXNjcm93L1NNCmVzY3Vkby9TTQplc2N1dGNoZW9uL1NNCmVzb3BoYWdlYWwKZXNvcGhhZ2kKZXNvcGhhZ3VzL00KZXNvdGVyaWMKZXNvdGVyaWNhbGx5CmVzcAplc3BhZHJpbGxlL01TCmVzcGFsaWVyL01EU0cKZXNwZWNpYWwvWQplc3Bpb25hZ2UvTQplc3BsYW5hZGUvTVMKZXNwb3VzYWwvTQplc3BvdXNlL0dEUwplc3ByZXNzby9NUwplc3ByaXQvTQplc3B5L0RTRwplc3F1aXJlL1NNCmVzc2F5L1NNRFJaRwplc3NheWVyL00KZXNzYXlpc3QvU00KZXNzZW5jZS9TTQplc3NlbnRpYWwvSU1TCmVzc2VudGlhbGx5CmVzdGFibGlzaC9BRVNER0wKZXN0YWJsaXNobWVudC9BRU0KZXN0YWJsaXNobWVudHMKZXN0YXRlL1NNCmVzdGVlbS9FU01ERwplc3Rlci9TTQplc3RpbWFibGUvSQplc3RpbWF0ZS9NR05EU1gKZXN0aW1hdGlvbi9NCmVzdGltYXRvci9TTQplc3RvcHBlbAplc3RyYW5nZS9MRFNHCmVzdHJhbmdlbWVudC9NUwplc3Ryb2dlbi9NCmVzdHJvdXMKZXN0cnVzL01TCmVzdHVhcnkvU00KZXRhL1NNCmV0YwpldGNoL0RSU1pHSgpldGNoZXIvTQpldGNoaW5nL00KZXRlcm5hbC9ZUApldGVybmFsbmVzcy9NCmV0ZXJuaXR5L1NNCmV0aGFuZS9NCmV0aGFub2wvTQpldGhlci9NCmV0aGVyZWFsL1kKZXRoaWMvU00KZXRoaWNhbC9VWQpldGhpY3MvTQpldGhuaWMvU00KZXRobmljYWxseQpldGhuaWNpdHkvTQpldGhub2NlbnRyaWMKZXRobm9jZW50cmlzbS9NCmV0aG5vZ3JhcGhlci9TCmV0aG5vZ3JhcGhpYwpldGhub2dyYXBoaWNhbGx5CmV0aG5vZ3JhcGh5CmV0aG5vbG9naWNhbC9ZCmV0aG5vbG9naXN0L1NNCmV0aG5vbG9neS9NCmV0aG9sb2dpY2FsCmV0aG9sb2dpc3QvTVMKZXRob2xvZ3kvTQpldGhvcy9NCmV0aHlsL00KZXRoeWxlbmUvTQpldGlvbGF0ZWQKZXRpb2xvZ2ljCmV0aW9sb2dpY2FsCmV0aW9sb2d5L1NNCmV0aXF1ZXR0ZS9NCmV0dWRlL1NNCmV0eW1vbG9naWNhbC9ZCmV0eW1vbG9naXN0L1NNCmV0eW1vbG9neS9TTQpldWNhbHlwdGkKZXVjYWx5cHR1cy9NUwpldWNocmUvRFNNRwpldWNsaWRlYW4KZXVnZW5pYy9TCmV1Z2VuaWNhbGx5CmV1Z2VuaWNpc3QvTVMKZXVnZW5pY3MvTQpldWxvZ2lzdC9NUwpldWxvZ2lzdGljCmV1bG9naXplL1pHRFJTCmV1bG9naXplci9NCmV1bG9neS9TTQpldW51Y2gvTQpldW51Y2hzCmV1cGhlbWlzbS9TTQpldXBoZW1pc3RpYwpldXBoZW1pc3RpY2FsbHkKZXVwaG9uaW91cy9ZCmV1cGhvbnkvTQpldXBob3JpYS9NCmV1cGhvcmljCmV1cGhvcmljYWxseQpldXJla2EKZXVyby9NUwpldXJvcGl1bS9NCmV1dGVjdGljCmV1dGhhbmFzaWEvTQpldXRoYW5pemUvRFNHCmV1dGhlbmljcy9NCmV2YWN1YXRlL1hEU0dOCmV2YWN1YXRpb24vTQpldmFjdWVlL01TCmV2YWRlL0RSU1pHCmV2YWRlci9NCmV2YWx1YXRlL0FHTlZEU1gKZXZhbHVhdGlvbi9BTQpldmFuZXNjZW5jZS9NCmV2YW5lc2NlbnQKZXZhbmdlbGljCmV2YW5nZWxpY2FsL1NNWQpldmFuZ2VsaWNhbGlzbS9NCmV2YW5nZWxpc20vTQpldmFuZ2VsaXN0L01TCmV2YW5nZWxpc3RpYwpldmFuZ2VsaXplL0dEUwpldmFwb3JhdGUvR05EUwpldmFwb3JhdGlvbi9NCmV2YXBvcmF0b3IvU00KZXZhc2lvbi9TTQpldmFzaXZlL1lQCmV2YXNpdmVuZXNzL00KZXZlL0FTTQpldmVuL01EUllUR1NKUApldmVuaGFuZGVkL1kKZXZlbmluZy9NCmV2ZW5uZXNzL1VNCmV2ZW5zb25nL00KZXZlbnQvU00KZXZlbnRmdWwvVVkKZXZlbnRmdWxuZXNzL00KZXZlbnRpZGUvTQpldmVudHVhbC9ZCmV2ZW50dWFsaXR5L1NNCmV2ZW50dWF0ZS9HRFMKZXZlcgpldmVyZ2xhZGUvU00KZXZlcmdyZWVuL1NNCmV2ZXJsYXN0aW5nL01ZUwpldmVybW9yZQpldmVyeQpldmVyeWJvZHkvTQpldmVyeWRheQpldmVyeW9uZS9NCmV2ZXJ5cGxhY2UKZXZlcnl0aGluZy9NCmV2ZXJ5d2hlcmUKZXZpY3QvU0RHCmV2aWN0aW9uL01TCmV2aWRlbmNlL01HRFMKZXZpZGVudC9ZCmV2aWwvTVJZVFNQCmV2aWxkb2VyL1NNCmV2aWxkb2luZy9NCmV2aWxsZXIKZXZpbGxlc3QKZXZpbG5lc3MvTQpldmluY2UvRFNHCmV2aXNjZXJhdGUvRFNHTgpldmlzY2VyYXRpb24vTQpldm9jYXRpb24vTVMKZXZvY2F0aXZlL1kKZXZva2UvRFNHCmV2b2x1dGlvbi9NCmV2b2x1dGlvbmFyeQpldm9sdXRpb25pc3QvU00KZXZvbHZlL0RTRwpld2UvUlNNWgpld2VyL00KZXgvTVMKZXhhYnl0ZS9NUwpleGFjZXJiYXRlL0dORFMKZXhhY2VyYmF0aW9uL00KZXhhY3QvU1BEUllURwpleGFjdGluZy9ZCmV4YWN0aW9uL00KZXhhY3RpdHVkZS9NCmV4YWN0bmVzcy9JTQpleGFnZ2VyYXRlL1hEU0dOCmV4YWdnZXJhdGVkL1kKZXhhZ2dlcmF0aW9uL00KZXhhZ2dlcmF0b3IvTVMKZXhhbHQvU0RHCmV4YWx0YXRpb24vTQpleGFtL01TCmV4YW1pbmF0aW9uL0FNUwpleGFtaW5lL0FHRFMKZXhhbWluZXIvTVMKZXhhbXBsZS9NR0RTCmV4YW1wbGVkL1UKZXhhc3BlcmF0ZS9EU0dOCmV4YXNwZXJhdGVkL1kKZXhhc3BlcmF0aW5nL1kKZXhhc3BlcmF0aW9uL00KZXhjYXZhdGUvR05EU1gKZXhjYXZhdGlvbi9NCmV4Y2F2YXRvci9TTQpleGNlZWQvR1NECmV4Y2VlZGluZy9ZCmV4Y2VsL1MKZXhjZWxsZWQKZXhjZWxsZW5jZS9NCmV4Y2VsbGVuY3kvU00KZXhjZWxsZW50L1kKZXhjZWxsaW5nCmV4Y2Vsc2lvci9NCmV4Y2VwdC9HU0QKZXhjZXB0aW9uL0JTTQpleGNlcHRpb25hYmxlL1UKZXhjZXB0aW9uYWwvVVkKZXhjZXB0aW9uYWxpc20KZXhjZXJwdC9NREdTCmV4Y2Vzcy9WTVMKZXhjZXNzaXZlL1kKZXhjaGFuZ2UvRFNNRwpleGNoYW5nZWFibGUKZXhjaGVxdWVyL1NNCmV4Y2lzZS9YRFNNR04KZXhjaXNpb24vTQpleGNpdGFiaWxpdHkvTQpleGNpdGFibHkKZXhjaXRhdGlvbi9NCmV4Y2l0ZS9CRFJTTFpHCmV4Y2l0ZWQvWQpleGNpdGVtZW50L1NNCmV4Y2l0ZXIvTQpleGNpdGluZy9ZCmV4Y2wKZXhjbGFpbS9ER1MKZXhjbGFtYXRpb24vU00KZXhjbGFtYXRvcnkKZXhjbHVkZS9HRFMKZXhjbHVzaW9uL01TCmV4Y2x1c2lvbmFyeQpleGNsdXNpdmUvUE1ZUwpleGNsdXNpdmVuZXNzL00KZXhjbHVzaXZpdHkvTQpleGNvbW11bmljYXRlL0dORFNYCmV4Y29tbXVuaWNhdGlvbi9NCmV4Y29yaWF0ZS9EU0dOWApleGNvcmlhdGlvbi9NCmV4Y3JlbWVudC9NCmV4Y3JlbWVudGFsCmV4Y3Jlc2NlbmNlL01TCmV4Y3Jlc2NlbnQKZXhjcmV0YS9NCmV4Y3JldGUvWEdORFMKZXhjcmV0aW9uL00KZXhjcmV0b3J5CmV4Y3J1Y2lhdGluZy9ZCmV4Y3VscGF0ZS9EU0dOCmV4Y3VscGF0aW9uL00KZXhjdWxwYXRvcnkKZXhjdXJzaW9uL01TCmV4Y3Vyc2lvbmlzdC9NUwpleGN1cnNpdmUvWVAKZXhjdXJzaXZlbmVzcy9NCmV4Y3VzYWJsZS9JCmV4Y3VzYWJseS9JCmV4Y3VzZS9EU0JNRwpleGN1c2VkL1UKZXhlYy9NUwpleGVjcmFibGUKZXhlY3JhYmx5CmV4ZWNyYXRlL0RTR04KZXhlY3JhdGlvbi9NCmV4ZWN1dGUvQlhHTlZEUwpleGVjdXRpb24vWk1SCmV4ZWN1dGlvbmVyL00KZXhlY3V0aXZlL1NNCmV4ZWN1dG9yL01TCmV4ZWN1dHJpY2VzCmV4ZWN1dHJpeC9NCmV4ZWdlc2VzCmV4ZWdlc2lzL00KZXhlZ2V0aWMKZXhlZ2V0aWNhbApleGVtcGxhci9TTQpleGVtcGxhcnkKZXhlbXBsaWZpY2F0aW9uL00KZXhlbXBsaWZ5L0dEU1hOCmV4ZW1wdC9TR0QKZXhlbXB0aW9uL1NNCmV4ZXJjaXNlL0RSU01aRwpleGVyY2lzZXIvTQpleGVydC9TREcKZXhlcnRpb24vTVMKZXhldW50CmV4Zm9saWF0ZS9HTkRTCmV4aGFsYXRpb24vTVMKZXhoYWxlL0RTRwpleGhhdXN0L0dWTURTCmV4aGF1c3RpYmxlL0kKZXhoYXVzdGlvbi9NCmV4aGF1c3RpdmUvWVAKZXhoYXVzdGl2ZW5lc3MvTQpleGhpYml0L0dNRFMKZXhoaWJpdGlvbi9NUwpleGhpYml0aW9uaXNtL00KZXhoaWJpdGlvbmlzdC9NUwpleGhpYml0b3IvU00KZXhoaWxhcmF0ZS9EU0dOCmV4aGlsYXJhdGlvbi9NCmV4aG9ydC9TREcKZXhob3J0YXRpb24vTVMKZXhodW1hdGlvbi9NUwpleGh1bWUvRFNHCmV4aWdlbmNlL01TCmV4aWdlbmN5L1NNCmV4aWdlbnQKZXhpZ3VpdHkvTQpleGlndW91cwpleGlsZS9EU01HCmV4aXN0L1NERwpleGlzdGVuY2UvTVMKZXhpc3RlbnQKZXhpc3RlbnRpYWwvWQpleGlzdGVudGlhbGlzbS9NCmV4aXN0ZW50aWFsaXN0L01TCmV4aXQvTURHUwpleG9iaW9sb2d5L00KZXhvZHVzL01TCmV4b2dlbm91cwpleG9uCmV4b25lcmF0ZS9HTkRTCmV4b25lcmF0aW9uL00KZXhvcGxhbmV0L01TCmV4b3JiaXRhbmNlL00KZXhvcmJpdGFudC9ZCmV4b3JjaXNlL0RTRwpleG9yY2lzbS9TTQpleG9yY2lzdC9TTQpleG9za2VsZXRvbi9TTQpleG9zcGhlcmUvU00KZXhvdGhlcm1pYwpleG90aWMvU00KZXhvdGljYQpleG90aWNhbGx5CmV4b3RpY2lzbS9NCmV4cApleHBhbmQvQkdTRApleHBhbnNlL1hNTlZTCmV4cGFuc2libGUKZXhwYW5zaW9uL00KZXhwYW5zaW9uYXJ5CmV4cGFuc2lvbmlzbS9NCmV4cGFuc2lvbmlzdC9NUwpleHBhbnNpdmUvWVAKZXhwYW5zaXZlbmVzcy9NCmV4cGF0L1MKZXhwYXRpYXRlL0dORFMKZXhwYXRpYXRpb24vTQpleHBhdHJpYXRlL0RTTUdOCmV4cGF0cmlhdGlvbi9NCmV4cGVjdC9HU0QKZXhwZWN0YW5jeS9NCmV4cGVjdGFudC9ZCmV4cGVjdGF0aW9uL1NNCmV4cGVjdG9yYW50L1NNCmV4cGVjdG9yYXRlL0RTR04KZXhwZWN0b3JhdGlvbi9NCmV4cGVkaWVuY2UvSU0KZXhwZWRpZW5jZXMKZXhwZWRpZW5jaWVzCmV4cGVkaWVuY3kvSU0KZXhwZWRpZW50L1NNWQpleHBlZGl0ZS9EUlNaR05YCmV4cGVkaXRlci9NCmV4cGVkaXRpb24vTQpleHBlZGl0aW9uYXJ5CmV4cGVkaXRpb3VzL1BZCmV4cGVkaXRpb3VzbmVzcy9NCmV4cGVsL1MKZXhwZWxsZWQKZXhwZWxsaW5nCmV4cGVuZC9HU0JECmV4cGVuZGFibGUvU00KZXhwZW5kaXR1cmUvU00KZXhwZW5zZS9NUwpleHBlbnNpdmUvSVlQCmV4cGVuc2l2ZW5lc3MvSU0KZXhwZXJpZW5jZS9JTUQKZXhwZXJpZW5jZXMKZXhwZXJpZW5jaW5nCmV4cGVyaWVudGlhbApleHBlcmltZW50L01EUlNaRwpleHBlcmltZW50YWwvWQpleHBlcmltZW50YXRpb24vTQpleHBlcmltZW50ZXIvTQpleHBlcnQvU1BNWQpleHBlcnRpc2UvTQpleHBlcnRuZXNzL00KZXhwaWF0ZS9HTkRTCmV4cGlhdGlvbi9NCmV4cGlhdG9yeQpleHBpcmF0aW9uL00KZXhwaXJlL0RTRwpleHBpcmVkL1UKZXhwaXJ5L00KZXhwbGFpbi9BREdTCmV4cGxhaW5hYmxlCmV4cGxhaW5lZC9VCmV4cGxhbmF0aW9uL01TCmV4cGxhbmF0b3J5CmV4cGxldGl2ZS9NUwpleHBsaWNhYmxlL0kKZXhwbGljYXRlL1hHTkRTCmV4cGxpY2F0aW9uL00KZXhwbGljaXQvUFkKZXhwbGljaXRuZXNzL00KZXhwbG9kZS9HRFMKZXhwbG9pdC9aR0JNRFJTCmV4cGxvaXRhdGlvbi9NCmV4cGxvaXRhdGl2ZQpleHBsb2l0ZWQvVQpleHBsb2l0ZXIvTQpleHBsb3JhdGlvbi9NUwpleHBsb3JhdG9yeQpleHBsb3JlL1pHRFJTCmV4cGxvcmVkL1UKZXhwbG9yZXIvTQpleHBsb3Npb24vU00KZXhwbG9zaXZlL1NQTVkKZXhwbG9zaXZlbmVzcy9NCmV4cG8vTVMKZXhwb25lbnQvTVMKZXhwb25lbnRpYWwvWQpleHBvbmVudGlhdGlvbgpleHBvcnQvQlNaR01EUgpleHBvcnRhdGlvbi9NCmV4cG9ydGVyL00KZXhwb3NlL0RTTUcKZXhwb3NlZC9VCmV4cG9zaXRpb24vU00KZXhwb3NpdG9yL1NNCmV4cG9zaXRvcnkKZXhwb3N0dWxhdGUvR05YRFMKZXhwb3N0dWxhdGlvbi9NCmV4cG9zdXJlL01TCmV4cG91bmQvWkdEUlMKZXhwb3VuZGVyL00KZXhwcmVzcy9HVk1EU1kKZXhwcmVzc2VkL1UKZXhwcmVzc2libGUvSQpleHByZXNzaW9uL1NNCmV4cHJlc3Npb25pc20vTQpleHByZXNzaW9uaXN0L1NNCmV4cHJlc3Npb25pc3RpYwpleHByZXNzaW9ubGVzcy9ZCmV4cHJlc3NpdmUvUFkKZXhwcmVzc2l2ZW5lc3MvTQpleHByZXNzd2F5L1NNCmV4cHJvcHJpYXRlL0dOWERTCmV4cHJvcHJpYXRpb24vTQpleHByb3ByaWF0b3IvU00KZXhwdWxzaW9uL01TCmV4cHVuZ2UvR0RTCmV4cHVyZ2F0ZS9EU0dOWApleHB1cmdhdGVkL1UKZXhwdXJnYXRpb24vTQpleHF1aXNpdGUvWVAKZXhxdWlzaXRlbmVzcy9NCmV4dApleHRhbnQKZXh0ZW1wb3JhbmVvdXMvUFkKZXh0ZW1wb3JhbmVvdXNuZXNzL00KZXh0ZW1wb3JlCmV4dGVtcG9yaXphdGlvbi9NCmV4dGVtcG9yaXplL0dEUwpleHRlbmQvU1pHRFJCCmV4dGVuZGVyL00KZXh0ZW5zaWJsZQpleHRlbnNpb24vU00KZXh0ZW5zaW9uYWwKZXh0ZW5zaXZlL1lQCmV4dGVuc2l2ZW5lc3MvTQpleHRlbnQvU00KZXh0ZW51YXRlL0RTR04KZXh0ZW51YXRpb24vTQpleHRlcmlvci9NUwpleHRlcm1pbmF0ZS9EU1hHTgpleHRlcm1pbmF0aW9uL00KZXh0ZXJtaW5hdG9yL01TCmV4dGVybmFsL01ZUwpleHRlcm5hbGl6YXRpb24vU00KZXh0ZXJuYWxpemUvRFNHCmV4dGluY3QvR0RTCmV4dGluY3Rpb24vTVMKZXh0aW5ndWlzaC9aR0JEUlMKZXh0aW5ndWlzaGFibGUvSQpleHRpbmd1aXNoZXIvTQpleHRpcnBhdGUvR05EUwpleHRpcnBhdGlvbi9NCmV4dG9sL1MKZXh0b2xsZWQKZXh0b2xsaW5nCmV4dG9ydC9TR0QKZXh0b3J0aW9uL01SWgpleHRvcnRpb25hdGUvWQpleHRvcnRpb25lci9NCmV4dG9ydGlvbmlzdC9NUwpleHRyYS9TTQpleHRyYWNlbGx1bGFyCmV4dHJhY3QvTURHUwpleHRyYWN0aW9uL1NNCmV4dHJhY3Rvci9NUwpleHRyYWN1cnJpY3VsYXIKZXh0cmFkaXRlL0dOQlhEUwpleHRyYWRpdGlvbi9NCmV4dHJhanVkaWNpYWwKZXh0cmFsZWdhbApleHRyYW1hcml0YWwKZXh0cmFtdXJhbApleHRyYW5lb3VzL1kKZXh0cmFvcmRpbmFpcmUKZXh0cmFvcmRpbmFyaWx5CmV4dHJhb3JkaW5hcnkKZXh0cmFwb2xhdGUvWEdORFMKZXh0cmFwb2xhdGlvbi9NCmV4dHJhc2Vuc29yeQpleHRyYXRlcnJlc3RyaWFsL01TCmV4dHJhdGVycml0b3JpYWwKZXh0cmF0ZXJyaXRvcmlhbGl0eS9NCmV4dHJhdmFnYW5jZS9NUwpleHRyYXZhZ2FudC9ZCmV4dHJhdmFnYW56YS9NUwpleHRyYXZlaGljdWxhcgpleHRyZW1lL1BNWVRSUwpleHRyZW1lbmVzcy9NCmV4dHJlbWlzbS9NCmV4dHJlbWlzdC9NUwpleHRyZW1pdHkvU00KZXh0cmljYWJsZS9JCmV4dHJpY2F0ZS9HTkRTCmV4dHJpY2F0aW9uL00KZXh0cmluc2ljCmV4dHJpbnNpY2FsbHkKZXh0cm92ZXJzaW9uL00KZXh0cm92ZXJ0L1NNRApleHRydWRlL0dEUwpleHRydXNpb24vU00KZXh0cnVzaXZlCmV4dWJlcmFuY2UvTQpleHViZXJhbnQvWQpleHVkYXRpb24vTQpleHVkZS9EU0cKZXh1bHQvU0RHCmV4dWx0YW50L1kKZXh1bHRhdGlvbi9NCmV4dXJiL1NNCmV4dXJiYW4KZXh1cmJhbml0ZS9TTQpleHVyYmlhL00KZXllL0RTTQpleWViYWxsL0dNRFMKZXllYnJvdy9TTQpleWVkcm9wcGVyL1NNCmV5ZWZ1bC9TTQpleWVnbGFzcy9NUwpleWVpbmcKZXllbGFzaC9NUwpleWVsZXNzCmV5ZWxldC9TTQpleWVsaWQvU00KZXllbGluZXIvTVMKZXllb3BlbmVyL01TCmV5ZW9wZW5pbmcKZXllcGllY2UvTVMKZXllc2lnaHQvTQpleWVzb3JlL01TCmV5ZXN0cmFpbi9NCmV5ZXRlZXRoCmV5ZXRvb3RoL00KZXlld2FzaC9NCmV5ZXdpdG5lc3MvTVMKZi9DSUFWVFIKZmEvTQpmYWIKZmFibGUvRFNNCmZhYnJpYy9TTQpmYWJyaWNhdGUvRFNHTlgKZmFicmljYXRpb24vTQpmYWJyaWNhdG9yL1NNCmZhYnVsb3VzL1kKZmFjYWRlL1NNCmZhY2UncwpmYWNlL0FDU0RHCmZhY2VjbG90aC9NCmZhY2VjbG90aHMKZmFjZWxlc3MKZmFjZXQvU01ERwpmYWNldGlvdXMvWVAKZmFjZXRpb3VzbmVzcy9NCmZhY2lhbC9TTVkKZmFjaWxlL1kKZmFjaWxpdGF0ZS9HTkRTCmZhY2lsaXRhdGlvbi9NCmZhY2lsaXRhdG9yL01TCmZhY2lsaXR5L1NNCmZhY2luZy9TTQpmYWNzaW1pbGUvRFNNCmZhY3NpbWlsZWluZwpmYWN0L01TCmZhY3Rpb24vU00KZmFjdGlvbmFsCmZhY3Rpb25hbGlzbS9NCmZhY3Rpb3VzCmZhY3RpdGlvdXMKZmFjdG9pZC9TTQpmYWN0b3IncwpmYWN0b3IvQVNERwpmYWN0b3JpYWwvTVMKZmFjdG9yaXphdGlvbgpmYWN0b3JpemUvR0RTCmZhY3RvcnkvU00KZmFjdG90dW0vU00KZmFjdHVhbC9ZCmZhY3VsdHkvU00KZmFkL0dTTUQKZmFkZGlzaC9QCmZhZGRpc3QvTVMKZmFkZHkvUApmYWRlL01TCmZhZGluZy9VCmZhZXJpZS9TTQpmYWZmL0RHUwpmYWcvU00KZmFnZ2VkCmZhZ2dpbmcKZmFnZ290L1NNCmZhZ290L1NNRwpmYWllbmNlL00KZmFpbC9NREdKUwpmYWlsaW5nL00KZmFpbGxlL00KZmFpbHVyZS9TTQpmYWluL1JUCmZhaW50L1NNRFJZVEdQCmZhaW50aGVhcnRlZApmYWludG5lc3MvTQpmYWlyL01SWVRHSlBTCmZhaXJncm91bmQvTVMKZmFpcmluZy9NCmZhaXJuZXNzL1VNCmZhaXJ3YXkvU00KZmFpcnkvU00KZmFpcnlsYW5kL1NNCmZhaXRoL00KZmFpdGhmdWwncwpmYWl0aGZ1bC9VUFkKZmFpdGhmdWxuZXNzL1VNCmZhaXRoZnVscwpmYWl0aGxlc3MvUFkKZmFpdGhsZXNzbmVzcy9NCmZhaXRocwpmYWppdGEvU00KZmFqaXRhcy9NCmZha2UvTVpHRFJTCmZha2VyL00KZmFraXIvU00KZmFsY29uL1NNUloKZmFsY29uZXIvTQpmYWxjb25yeS9NCmZhbGwvTU5HUwpmYWxsYWNpb3VzL1kKZmFsbGFjeS9TTQpmYWxsYmFjawpmYWxsaWJpbGl0eS9JTQpmYWxsaWJsZS9QCmZhbGxpYmxlbmVzcy9NCmZhbGxpYmx5L0kKZmFsbG9mZi9TTQpmYWxsb3V0L00KZmFsbG93L1NNREcKZmFsc2UvUFJZVApmYWxzZWhvb2QvU00KZmFsc2VuZXNzL00KZmFsc2V0dG8vU00KZmFsc2llL1NNCmZhbHNpZmlhYmxlCmZhbHNpZmljYXRpb24vTQpmYWxzaWZpZXIvTQpmYWxzaWZ5L0RSU1pHTlgKZmFsc2l0eS9TTQpmYWx0ZXIvR1NKTUQKZmFsdGVyaW5nL1kKZmFtZSdzCmZhbWUvRApmYW1pbGlhbApmYW1pbGlhci9NWVMKZmFtaWxpYXJpdHkvVU0KZmFtaWxpYXJpemF0aW9uL00KZmFtaWxpYXJpemUvR0RTCmZhbWlseS9TTQpmYW1pbmUvU00KZmFtaXNoL0RTRwpmYW1vdXMvSVkKZmFuL1NNCmZhbmF0aWMvU00KZmFuYXRpY2FsL1kKZmFuYXRpY2lzbS9NCmZhbmJveS9TTQpmYW5jaWFibGUKZmFuY2llci9NCmZhbmNpZnVsL1lQCmZhbmNpZnVsbmVzcy9NCmZhbmNpbHkKZmFuY2luZXNzL00KZmFuY3kvRFJTTVpUR1AKZmFuY3l3b3JrL00KZmFuZGFuZ28vTVMKZmFuZG9tCmZhbmZhcmUvU00KZmFuZy9NRFMKZmFubGlnaHQvU00KZmFubmVkCmZhbm5pbmcKZmFubnkvU00KZmFudGFpbC9NUwpmYW50YXNpYS9TTQpmYW50YXNpc3QvUwpmYW50YXNpemUvR0RTCmZhbnRhc3RpYwpmYW50YXN0aWNhbC9ZCmZhbnRhc3kvRFNNRwpmYW56aW5lL01TCmZhcgpmYXJhZC9TTQpmYXJhZGl6ZS9ERwpmYXJhd2F5CmZhcmNlL1NNCmZhcmNpY2FsL1kKZmFyZS9NR0RTCmZhcmV3ZWxsL1NNCmZhcmluYS9NCmZhcmluYWNlb3VzCmZhcm0vTURSWkdTSgpmYXJtZXIvTQpmYXJtaGFuZC9TTQpmYXJtaG91c2UvU00KZmFybWluZy9NCmZhcm1sYW5kL01TCmZhcm1zdGVhZC9NUwpmYXJteWFyZC9NUwpmYXJvL00KZmFycmFnby9NCmZhcnJhZ29lcwpmYXJyaWVyL01TCmZhcnJvdy9TTURHCmZhcnNlZWluZwpmYXJzaWdodGVkL1AKZmFyc2lnaHRlZG5lc3MvTQpmYXJ0L01ER1MKZmFydGhlcgpmYXJ0aGVybW9zdApmYXJ0aGVzdApmYXJ0aGluZy9TTQpmYXNjaWEvU00KZmFzY2ljbGUvU00KZmFzY2luYXRlL0dORFNYCmZhc2NpbmF0aW5nL1kKZmFzY2luYXRpb24vTQpmYXNjaXNtL00KZmFzY2lzdC9NUwpmYXNjaXN0aWMKZmFzaGlvbi9aR0JNRFJTCmZhc2hpb25hYmxlL1UKZmFzaGlvbmFibHkvVQpmYXNoaW9uZXIvTQpmYXNoaW9uaXN0YS9NUwpmYXN0L01EUlRHU1AKZmFzdGJhY2svU00KZmFzdGJhbGwvU00KZmFzdGVuL1VBR0RTCmZhc3RlbmVyL1NNCmZhc3RlbmluZy9NUwpmYXN0aWRpb3VzL1BZCmZhc3RpZGlvdXNuZXNzL00KZmFzdG5lc3MvTVMKZmF0L0dTUE1ECmZhdGFsL1kKZmF0YWxpc20vTQpmYXRhbGlzdC9TTQpmYXRhbGlzdGljCmZhdGFsaXN0aWNhbGx5CmZhdGFsaXR5L1NNCmZhdGJhY2svTQpmYXRlL01TCmZhdGVmdWwvWVAKZmF0ZWZ1bG5lc3MvTQpmYXRoZWFkL01EUwpmYXRoZXIvU0dNRFkKZmF0aGVyaG9vZC9NCmZhdGhlcmxhbmQvTVMKZmF0aGVybGVzcwpmYXRob20vU01ER0IKZmF0aG9tYWJsZS9VCmZhdGhvbWxlc3MKZmF0aWd1ZS9NRFNHCmZhdGlndWVzL00KZmF0bmVzcy9NCmZhdHNvL1MKZmF0dGVuL1NERwpmYXR0ZXIKZmF0dGVzdApmYXR0aW5lc3MvTQpmYXR0eS9SU01UUApmYXR1aXR5L00KZmF0dW91cy9ZUApmYXR1b3VzbmVzcy9NCmZhdHdhL1NNCmZhdWNldC9TTQpmYXVsdC9DU01ERwpmYXVsdGZpbmRlci9TTQpmYXVsdGZpbmRpbmcvTQpmYXVsdGlseQpmYXVsdGluZXNzL00KZmF1bHRsZXNzL1BZCmZhdWx0bGVzc25lc3MvTQpmYXVsdHkvUFJUCmZhdW4vTVMKZmF1bmEvU00KZmF1dmlzbS9NCmZhdXZpc3QvU00KZmF1eApmYXZlL1MKZmF2b3IvRVNNREcKZmF2b3JhYmxlL1UKZmF2b3JhYmx5L1UKZmF2b3JpdGUvU00KZmF2b3JpdGlzbS9NCmZhd24vTURSWkdTCmZhd25lci9NCmZheC9HTURTCmZheS9UU01SCmZhemUvR0RTCmZhemVkL1UKZmVhbHR5L00KZmVhci9NREdTCmZlYXJmdWwvWVAKZmVhcmZ1bG5lc3MvTQpmZWFybGVzcy9QWQpmZWFybGVzc25lc3MvTQpmZWFyc29tZQpmZWFzaWJpbGl0eS9NCmZlYXNpYmxlL0lVCmZlYXNpYmx5CmZlYXN0L1NNRFJaRwpmZWFzdGVyL00KZmVhdC9NUwpmZWF0aGVyL1NHTUQKZmVhdGhlcmJlZGRpbmcvTQpmZWF0aGVyYnJhaW5lZApmZWF0aGVybGVzcwpmZWF0aGVyd2VpZ2h0L01TCmZlYXRoZXJ5L1RSCmZlYXR1cmUvRFNNRwpmZWF0dXJlbGVzcwpmZWJyaWxlCmZlY2FsCmZlY2VzL00KZmVja2xlc3MvUFkKZmVjdW5kCmZlY3VuZGF0ZS9HTkRTCmZlY3VuZGF0aW9uL00KZmVjdW5kaXR5L00KZmVkL1NNCmZlZGVyYWwvU01ZCmZlZGVyYWxpc20vTQpmZWRlcmFsaXN0L01TCmZlZGVyYWxpemF0aW9uL00KZmVkZXJhbGl6ZS9HRFMKZmVkZXJhdGUvRlhEU0dOCmZlZGVyYXRpb24vRk0KZmVkb3JhL1NNCmZlZS9TTQpmZWVibGUvUlRQCmZlZWJsZW5lc3MvTQpmZWVibHkKZmVlZC9NUlpHU0oKZmVlZGJhY2svTQpmZWVkYmFnL1NNCmZlZWRlci9NCmZlZWRpbmcvTQpmZWVkbG90L1NNCmZlZWwvTVJaR1NKCmZlZWxlci9NCmZlZWxnb29kCmZlZWxpbmcvTVkKZmVldApmZWlnbi9TREcKZmVpZ25lZC9VCmZlaW50L1NNREcKZmVpc3R5L1RSCmZlbGRzcGFyL00KZmVsaWNpdGF0ZS9HTlhEUwpmZWxpY2l0YXRpb24vTQpmZWxpY2l0b3VzL1kKZmVsaWNpdHkvSVNNCmZlbGluZS9TTQpmZWxsL01EUlpUR1MKZmVsbGEvUwpmZWxsYXRpby9NCmZlbGxvdy9TTQpmZWxsb3dtYW4vTQpmZWxsb3dtZW4KZmVsbG93c2hpcC9NUwpmZWxvbi9TTQpmZWxvbmlvdXMKZmVsb255L1NNCmZlbHQvTURHUwpmZW0KZmVtYWxlL1BTTQpmZW1hbGVuZXNzL00KZmVtaW5pbmUvU01ZCmZlbWluaW5pdHkvTQpmZW1pbmlzbS9NCmZlbWluaXN0L1NNCmZlbWluaXplL0RTRwpmZW1vcmFsCmZlbXVyL1NNCmZlbi9TTQpmZW5jZS9EUlNNWkcKZmVuY2VyL00KZmVuY2luZy9NCmZlbmQvQ0RSWkdTCmZlbmRlci9DTQpmZW5lc3RyYXRpb24vTQpmZW5uZWwvTQpmZXJhbApmZXJtZW50L0ZDTVMKZmVybWVudGF0aW9uL00KZmVybWVudGVkCmZlcm1lbnRpbmcKZmVybWl1bS9NCmZlcm4vTVMKZmVybnkvUlQKZmVyb2Npb3VzL1BZCmZlcm9jaW91c25lc3MvTQpmZXJvY2l0eS9NCmZlcnJldC9HU01ECmZlcnJpYwpmZXJyb21hZ25ldGljCmZlcnJvdXMKZmVycnVsZS9NUwpmZXJyeS9EU01HCmZlcnJ5Ym9hdC9TTQpmZXJyeW1hbi9NCmZlcnJ5bWVuCmZlcnRpbGUvSQpmZXJ0aWxpdHkvSU0KZmVydGlsaXphdGlvbi9NCmZlcnRpbGl6ZS9EUlNaRwpmZXJ0aWxpemVkL1UKZmVydGlsaXplci9NCmZlcnVsZS9TTQpmZXJ2ZW5jeS9NCmZlcnZlbnQvWQpmZXJ2aWQvWQpmZXJ2b3IvTQpmZXNzL0ZLR1NECmZlc3QvTVJaVlMKZmVzdGFsCmZlc3Rlci9HTUQKZmVzdGl2YWwvU00KZmVzdGl2ZS9ZUApmZXN0aXZlbmVzcy9NCmZlc3Rpdml0eS9TTQpmZXN0b29uL0dNRFMKZmV0YS9NCmZldGFsCmZldGNoL0RSU1pHCmZldGNoZXIvTQpmZXRjaGluZy9ZCmZldGUvTUdEUwpmZXRpZC9QCmZldGlkbmVzcy9NCmZldGlzaC9NUwpmZXRpc2hpc20vTQpmZXRpc2hpc3QvU00KZmV0aXNoaXN0aWMKZmV0bG9jay9NUwpmZXR0ZXIncwpmZXR0ZXIvVVNHRApmZXR0bGUvTQpmZXR0dWNjaW5lL00KZmV0dXMvTVMKZmV1ZC9NREdTCmZldWRhbApmZXVkYWxpc20vTQpmZXVkYWxpc3RpYwpmZXZlci9TTUQKZmV2ZXJpc2gvWVAKZmV2ZXJpc2huZXNzL00KZmV3L1RQTVIKZmV3bmVzcy9NCmZleQpmZXovTQpmZXp6ZXMKZmYKZmlhbmNlL0NNCmZpYW5jZWUvTVMKZmlhbmNlcwpmaWFzY28vTQpmaWFzY29lcwpmaWF0L01TCmZpYi9aU01SCmZpYmJlZApmaWJiZXIvU00KZmliYmluZwpmaWJlci9NCmZpYmVyYm9hcmQvTQpmaWJlcmZpbGwvTQpmaWJlcmdsYXNzL00KZmlicmlsL1NNCmZpYnJpbGxhdGUvR05EUwpmaWJyaWxsYXRpb24vTQpmaWJyaW4vTQpmaWJyb2lkCmZpYnJvc2lzL00KZmlicm91cwpmaWJ1bGEvTQpmaWJ1bGFlCmZpYnVsYXIKZmljaGUvU00KZmljaHUvU00KZmlja2xlL1JQVApmaWNrbGVuZXNzL00KZmljdGlvbi9NUwpmaWN0aW9uYWwvWQpmaWN0aW9uYWxpemF0aW9uL1NNCmZpY3Rpb25hbGl6ZS9EU0cKZmljdGl0aW91cy9ZCmZpY3RpdmUKZmljdXMvTQpmaWRkbGUvRFJTTVpHCmZpZGRsZXIvTQpmaWRkbGVzdGlja3MKZmlkZGx5L1RSCmZpZGVsaXR5L0lNCmZpZGdldC9TR01ECmZpZGdldHkKZmlkdWNpYXJ5L1NNCmZpZQpmaWVmL01TCmZpZWZkb20vTVMKZmllbGQvSVNNUloKZmllbGRlZApmaWVsZGVyL0lNCmZpZWxkaW5nCmZpZWxkc21hbgpmaWVsZHNtZW4KZmllbGR3b3JrL01SWgpmaWVsZHdvcmtlci9NCmZpZW5kL1NNCmZpZW5kaXNoL1kKZmllcmNlL1BSWVQKZmllcmNlbmVzcy9NCmZpZXJpbmVzcy9NCmZpZXJ5L1JQVApmaWVzdGEvU00KZmlmZS9NWlJTCmZpZmVyL00KZmlmdGVlbi9NSFMKZmlmdGVlbnRoL00KZmlmdGVlbnRocwpmaWZ0aC9NWQpmaWZ0aHMKZmlmdGlldGgvTQpmaWZ0aWV0aHMKZmlmdHkvU01ICmZpZy9TTE0KZmlnaHQvU01SWkcKZmlnaHRiYWNrCmZpZ2h0ZXIvSU1TCmZpZ2h0aW5nL0lNCmZpZ21lbnQvTVMKZmlndXJhdGlvbi9GTQpmaWd1cmF0aXZlL1kKZmlndXJlJ3MKZmlndXJlL0ZFR1NECmZpZ3VyZWhlYWQvU00KZmlndXJpbmUvTVMKZmlsYW1lbnQvTVMKZmlsYW1lbnRvdXMKZmlsYmVydC9NUwpmaWxjaC9EU0cKZmlsZSdzL0tDCmZpbGUvQ0FLR0RTCmZpbGVuYW1lL1MKZmlsZXIvQ1NNCmZpbGV0CmZpbGlhbApmaWxpYnVzdGVyL01EUlNaRwpmaWxpYnVzdGVyZXIvTQpmaWxpZ3JlZS9EU00KZmlsaWdyZWVpbmcKZmlsaW5nJ3MKZmlsaW5ncwpmaWxsJ3MKZmlsbC9BSURHUwpmaWxsZWQvVQpmaWxsZXIvTVMKZmlsbGV0L01ER1MKZmlsbGluZy9TTQpmaWxsaXAvTURHUwpmaWxseS9TTQpmaWxtL01ER1MKZmlsbWluZXNzL00KZmlsbW1ha2VyL1NNCmZpbG1zdHJpcC9NUwpmaWxteS9UUFIKZmlsbwpmaWx0ZXIvTURSQlNaRwpmaWx0ZXJlZC9VCmZpbHRlcmVyL00KZmlsdGgvTQpmaWx0aGlseQpmaWx0aGluZXNzL00KZmlsdGh5L1JQVApmaWx0cmF0ZSdzCmZpbHRyYXRlL0lHTkRTCmZpbHRyYXRpb24vSU0KZmluL1NNUgpmaW5hZ2xlL0RSU1pHCmZpbmFnbGVyL00KZmluYWwvU01ZCmZpbmFsZS9NUwpmaW5hbGlzdC9TTQpmaW5hbGl0eS9NCmZpbmFsaXphdGlvbi9NCmZpbmFsaXplL0RTRwpmaW5hbmNlJ3MKZmluYW5jZS9BRFNHCmZpbmFuY2lhbC9ZCmZpbmFuY2llci9NUwpmaW5hbmNpbmcvTQpmaW5jaC9NUwpmaW5kL0pNUlpHUwpmaW5kZXIvTQpmaW5kaW5nL00KZmluZGluZ3MvTQpmaW5lJ3MvRgpmaW5lL0NBRlRHRFMKZmluZWx5CmZpbmVuZXNzL00KZmluZXJ5L0FNCmZpbmVzcHVuCmZpbmVzc2UvRFNNRwpmaW5nZXIvTURHU0oKZmluZ2VyYm9hcmQvU00KZmluZ2VyaW5nL00KZmluZ2VybGluZy9TTQpmaW5nZXJtYXJrL1MKZmluZ2VybmFpbC9TTQpmaW5nZXJwcmludC9TR01ECmZpbmdlcnRpcC9NUwpmaW5pYWwvTVMKZmluaWNhbApmaW5pY2tpbmVzcy9NCmZpbmlja3kvUlBUCmZpbmlzL01TCmZpbmlzaCdzCmZpbmlzaC9BRFNHCmZpbmlzaGVkL1UKZmluaXNoZXIvTVMKZmluaXRlL0lZCmZpbmsvTURHUwpmaW5uZWQKZmlubnkKZmlyL1pHU0pNRFJICmZpcmUvTVMKZmlyZWFybS9TTQpmaXJlYmFsbC9NUwpmaXJlYm9tYi9NRFNKRwpmaXJlYm94L01TCmZpcmVicmFuZC9TTQpmaXJlYnJlYWsvU00KZmlyZWJyaWNrL1NNCmZpcmVidWcvU00KZmlyZWNyYWNrZXIvU00KZmlyZWRhbXAvTQpmaXJlZmlnaHQvTVJTWkcKZmlyZWZpZ2h0ZXIvTQpmaXJlZmlnaHRpbmcvTQpmaXJlZmx5L1NNCmZpcmVndWFyZC9TCmZpcmVob3VzZS9TTQpmaXJlbGlnaHQvWk1SCmZpcmVtYW4vTQpmaXJlbWVuCmZpcmVwbGFjZS9TTQpmaXJlcGx1Zy9NUwpmaXJlcG93ZXIvTQpmaXJlcHJvb2YvRFNHCmZpcmVyL00KZmlyZXNjcmVlbi9TCmZpcmVzaWRlL01TCmZpcmVzdG9ybS9NUwpmaXJldHJhcC9NUwpmaXJldHJ1Y2svTVMKZmlyZXdhbGwvTVMKZmlyZXdhdGVyL00KZmlyZXdvb2QvTQpmaXJld29yay9TTQpmaXJtL01EUllQVEdTCmZpcm1hbWVudC9TTQpmaXJtbmVzcy9NCmZpcm13YXJlL00KZmlyc3QvU01ZCmZpcnN0Ym9ybi9TTQpmaXJzdGhhbmQKZmlydGgvTQpmaXJ0aHMKZmlzY2FsL01ZUwpmaXNoL01EUlNaRwpmaXNoYm93bC9TTQpmaXNoY2FrZS9TTQpmaXNoZXIvTQpmaXNoZXJtYW4vTQpmaXNoZXJtZW4KZmlzaGVyeS9TTQpmaXNoaG9vay9TTQpmaXNoaWx5CmZpc2hpbmVzcy9NCmZpc2hpbmcvTQpmaXNobW9uZ2VyL01TCmZpc2huZXQvU00KZmlzaHBvbmQvTVMKZmlzaHRhaWwvREdTCmZpc2h3aWZlL00KZmlzaHdpdmVzCmZpc2h5L1RSUApmaXNzaWxlCmZpc3Npb24vQk0KZmlzc3VyZS9TTQpmaXN0L01TCmZpc3RmaWdodC9NUwpmaXN0ZnVsL1NNCmZpc3RpY3VmZnMvTQpmaXN0dWxhL1NNCmZpc3R1bG91cy9NCmZpdC9LQU1TCmZpdGZ1bC9ZUApmaXRmdWxuZXNzL00KZml0bHkKZml0bWVudC9TCmZpdG5lc3MvVU0KZml0dGVkL1VBCmZpdHRlci9NUwpmaXR0ZXN0CmZpdHRpbmcvU01ZCmZpdmUvTVpSUwpmaXgvWkdCSk1EUlMKZml4YXRlL0dOVkRTWApmaXhhdGlvbi9NCmZpeGF0aXZlL01TCmZpeGVkL1kKZml4ZXIvTQpmaXhpbmdzL00KZml4aXR5L00KZml4dHVyZS9NUwpmaXp6L01EU0cKZml6emxlL0RTTUcKZml6enkvUlQKZmpvcmQvU00KZmwvSkRHCmZsYWIvTQpmbGFiYmVyZ2FzdC9TR0QKZmxhYmJpbHkKZmxhYmJpbmVzcy9NCmZsYWJieS9SUFQKZmxhY2NpZC9ZCmZsYWNjaWRpdHkvTQpmbGFjay9TTQpmbGFnL01TCmZsYWdlbGxhCmZsYWdlbGxhbnQvUwpmbGFnZWxsYXRlL0dORFMKZmxhZ2VsbGF0aW9uL00KZmxhZ2VsbHVtL00KZmxhZ2dlZApmbGFnZ2luZy9VCmZsYWdtYW4vTQpmbGFnbWVuCmZsYWdvbi9NUwpmbGFncG9sZS9TTQpmbGFncmFuY2UvTQpmbGFncmFuY3kvTQpmbGFncmFudC9ZCmZsYWdzaGlwL1NNCmZsYWdzdGFmZi9NUwpmbGFnc3RvbmUvTVMKZmxhaWwvU0dNRApmbGFpci9TTQpmbGFrL00KZmxha2UvRFNNRwpmbGFraW5lc3MvTQpmbGFreS9UUlAKZmxhbWFnZQpmbGFtYmUvTVMKZmxhbWJlZWQKZmxhbWJlaW5nCmZsYW1ib3lhbmNlL00KZmxhbWJveWFuY3kvTQpmbGFtYm95YW50L1kKZmxhbWUvRFJTSk1aRwpmbGFtZW5jby9NUwpmbGFtZXByb29mL0RHUwpmbGFtZXRocm93ZXIvU00KZmxhbWluZ28vTVMKZmxhbW1hYmlsaXR5L0lNCmZsYW1tYWJsZS9TTQpmbGFuL01TCmZsYW5nZS9NUwpmbGFuay9TWkdNRFIKZmxhbmtlci9NCmZsYW5uZWwvU0dNRApmbGFubmVsZXR0ZS9NCmZsYXAvTVMKZmxhcGphY2svTVMKZmxhcHBlZApmbGFwcGVyL1NNCmZsYXBwaW5nCmZsYXJlL0RTTUcKZmxhcmV1cC9TTQpmbGFzaC9aVEdNRFJTCmZsYXNoYmFjay9TTQpmbGFzaGJ1bGIvU00KZmxhc2hjYXJkL1NNCmZsYXNoY3ViZS9TTQpmbGFzaGVyL00KZmxhc2hndW4vU00KZmxhc2hpbHkKZmxhc2hpbmVzcy9NCmZsYXNoaW5nL00KZmxhc2hsaWdodC9NUwpmbGFzaHkvUlRQCmZsYXNrL1NNCmZsYXQvTVlQUwpmbGF0YmVkL1NNCmZsYXRib2F0L1NNCmZsYXRicmVhZApmbGF0Y2FyL1NNCmZsYXRmZWV0CmZsYXRmaXNoL01TCmZsYXRmb290L1NNRApmbGF0aXJvbi9TTQpmbGF0bGFuZC9NCmZsYXRsZXQvUwpmbGF0bWF0ZS9TCmZsYXRuZXNzL00KZmxhdHRlZApmbGF0dGVuL1NERwpmbGF0dGVyL1NEUlpHCmZsYXR0ZXJlci9NCmZsYXR0ZXJpbmcvWQpmbGF0dGVyeS9NCmZsYXR0ZXN0CmZsYXR0aW5nCmZsYXR0aXNoCmZsYXR0b3AvU00KZmxhdHVsZW5jZS9NCmZsYXR1bGVudApmbGF0dXMvTQpmbGF0d2FyZS9NCmZsYXR3b3JtL1NNCmZsYXVudC9NRFNHCmZsYXVudGluZy9ZCmZsYXZvci9NRFNHSgpmbGF2b3JlZC9VCmZsYXZvcmZ1bApmbGF2b3JpbmcvTQpmbGF2b3JsZXNzCmZsYXZvcnNvbWUKZmxhdy9NREdTCmZsYXdsZXNzL1BZCmZsYXdsZXNzbmVzcy9NCmZsYXgvTU4KZmxheS9ER1MKZmxlYS9NUwpmbGVhYmFnL1NNCmZsZWFiaXRlL1MKZmxlYXBpdC9TCmZsZWNrL1NHTUQKZmxlZGdlZC9VCmZsZWRnbGluZy9NUwpmbGVlL1MKZmxlZWNlL01aR0RSUwpmbGVlY2VyL00KZmxlZWNpbmVzcy9NCmZsZWVjeS9SVFAKZmxlZWluZwpmbGVldC9TVEdNRFJZUApmbGVldGluZ2x5L00KZmxlZXRpbmduZXNzL00KZmxlZXRuZXNzL00KZmxlc2gvR01EU1kKZmxlc2hseS9UUgpmbGVzaHBvdC9NUwpmbGVzaHkvUlQKZmxldwpmbGV4L0FNUwpmbGV4ZWQKZmxleGliaWxpdHkvSU0KZmxleGlibGUvSQpmbGV4aWJseS9JCmZsZXhpbmcKZmxleGlvbgpmbGV4dGltZS9NCmZsaWJiZXJ0aWdpYmJldC9TTQpmbGljay9TWkdNRFIKZmxpY2tlci9HTUQKZmxpZXIvTQpmbGlnaHQvTVMKZmxpZ2h0aW5lc3MvTQpmbGlnaHRsZXNzCmZsaWdodHkvUFRSCmZsaW1mbGFtL1NNCmZsaW1mbGFtbWVkCmZsaW1mbGFtbWluZwpmbGltc2lseQpmbGltc2luZXNzL00KZmxpbXN5L1RSUApmbGluY2gvR01EUwpmbGluZy9HTQpmbGludC9TTQpmbGludGxvY2svU00KZmxpbnR5L1RSCmZsaXAvTVMKZmxpcHBhbmN5L00KZmxpcHBhbnQvWQpmbGlwcGVkCmZsaXBwZXIvTVMKZmxpcHBlc3QKZmxpcHBpbmcKZmxpcHB5L1MKZmxpcnQvU0dNRApmbGlydGF0aW9uL01TCmZsaXJ0YXRpb3VzL1lQCmZsaXJ0YXRpb3VzbmVzcy9NCmZsaXJ0eQpmbGl0L01TCmZsaXR0ZWQKZmxpdHRpbmcKZmxvYXQvU01EUlpHCmZsb2F0ZXIvTQpmbG9jay9TTURHCmZsb2NraW5nL00KZmxvZS9NUwpmbG9nL1MKZmxvZ2dlZApmbG9nZ2VyL1NNCmZsb2dnaW5nL01TCmZsb29kL1NNRFJHCmZsb29kZ2F0ZS9NUwpmbG9vZGxpZ2h0L01EU0cKZmxvb2RsaXQKZmxvb2RwbGFpbi9NUwpmbG9vZHdhdGVyL01TCmZsb29yL1NNREcKZmxvb3Jib2FyZC9NUwpmbG9vcmluZy9NCmZsb29yd2Fsa2VyL1NNCmZsb296eS9TTQpmbG9wL01TCmZsb3Bob3VzZS9NUwpmbG9wcGVkCmZsb3BwaWx5CmZsb3BwaW5lc3MvTQpmbG9wcGluZwpmbG9wcHkvUFJTTVQKZmxvcmEvU00KZmxvcmFsCmZsb3Jlc2NlbmNlL0lNCmZsb3Jlc2NlbnQvSQpmbG9yZXQvU00KZmxvcmlkL1BZCmZsb3JpZG5lc3MvTQpmbG9yaW4vU00KZmxvcmlzdC9TTQpmbG9zcy9NRFNHCmZsb3NzeS9SVApmbG90YXRpb24vU00KZmxvdGlsbGEvTVMKZmxvdHNhbS9NCmZsb3VuY2UvRFNNRwpmbG91bmN5CmZsb3VuZGVyL01EU0cKZmxvdXIvU01ERwpmbG91cmlzaC9HTURTCmZsb3VyeQpmbG91dC9TTURSWkcKZmxvdXRlci9NCmZsb3cvTURHUwpmbG93Y2hhcnQvU00KZmxvd2VyJ3MKZmxvd2VyL0NTREcKZmxvd2VyYmVkL01TCmZsb3dlcmluZXNzL00KZmxvd2VyaW5nL1MKZmxvd2VybGVzcwpmbG93ZXJwb3QvTVMKZmxvd2VyeS9QVFIKZmxvd24KZmx0CmZsdS9NCmZsdWIvTVMKZmx1YmJlZApmbHViYmluZwpmbHVjdHVhdGUvR05EU1gKZmx1Y3R1YXRpb24vTQpmbHVlL01TCmZsdWVuY3kvTQpmbHVlbnQvWQpmbHVmZi9TTURHCmZsdWZmaW5lc3MvTQpmbHVmZnkvUlBUCmZsdWlkL1NNWQpmbHVpZGl0eS9NCmZsdWtlL1NNCmZsdWt5L1JUCmZsdW1lL1NNCmZsdW1tb3gvRFNHCmZsdW5nCmZsdW5rL1NNREcKZmx1bmt5L1NNCmZsdW9yZXNjZS9EU0cKZmx1b3Jlc2NlbmNlL00KZmx1b3Jlc2NlbnQKZmx1b3JpZGF0ZS9HTkRTCmZsdW9yaWRhdGlvbi9NCmZsdW9yaWRlL1NNCmZsdW9yaW5lL00KZmx1b3JpdGUvTQpmbHVvcm9jYXJib24vTVMKZmx1b3Jvc2NvcGUvU00KZmx1b3Jvc2NvcGljCmZsdXJyeS9HRFNNCmZsdXNoL01EUlNURwpmbHVzdGVyL01EU0cKZmx1dGUvRFNNRwpmbHV0aW5nL00KZmx1dGlzdC9NUwpmbHV0dGVyL01EU0cKZmx1dHRlcnkKZmx1dmlhbApmbHV4L0lNUwpmbHV4ZWQKZmx1eGluZwpmbHkvWlRHQkRSU00KZmx5YXdheQpmbHlibG93bgpmbHlieS9NCmZseWJ5cwpmbHljYXRjaGVyL01TCmZseWluZy9NCmZseWxlYWYvTQpmbHlsZWF2ZXMKZmx5b3Zlci9NUwpmbHlwYXBlci9TTQpmbHlwYXN0L1MKZmx5c2hlZXQvUwpmbHlzcGVjay9HTURTCmZseXN3YXR0ZXIvTVMKZmx5dHJhcC9TCmZseXdheS9TTQpmbHl3ZWlnaHQvU00KZmx5d2hlZWwvTVMKZm9hbC9NREdTCmZvYW0vTURHUwpmb2FtaW5lc3MvTQpmb2FteS9SVFAKZm9iL1NNCmZvYmJlZApmb2JiaW5nCmZvY2FsL1kKZm9jdXMncwpmb2N1cy9BRFNHCmZvY3VzZWQvVQpmb2RkZXIvU00KZm9lL1NNCmZvZydzCmZvZy9DUwpmb2dib3VuZApmb2dnZWQvQwpmb2dnaWx5CmZvZ2dpbmVzcy9NCmZvZ2dpbmcvQwpmb2dneS9SVFAKZm9naG9ybi9NUwpmb2d5L1NNCmZvZ3lpc2gKZm9pYmxlL1NNCmZvaWwvTURHUwpmb2lzdC9TREcKZm9sCmZvbGQncwpmb2xkL0FVU0dECmZvbGRhd2F5CmZvbGRlci9TTQpmb2xkb3V0L01TCmZvbGlhZ2UvTQpmb2xpYwpmb2xpby9TTQpmb2xrL01TCmZvbGtsb3JlL00KZm9sa2xvcmljCmZvbGtsb3Jpc3QvTVMKZm9sa3NpbmVzcy9NCmZvbGtzaW5nZXIvU00KZm9sa3NpbmdpbmcvTQpmb2xrc3kvUFRSCmZvbGt0YWxlL01TCmZvbGt3YXkvTVMKZm9sbApmb2xsaWNsZS9NUwpmb2xsb3cvU0RSWkdKCmZvbGxvd2VyL00KZm9sbG93aW5nL00KZm9sbG93dXAvUwpmb2xseS9TTQpmb21lbnQvU0dECmZvbWVudGF0aW9uL00KZm9uZC9SWVRQCmZvbmRhbnQvTVMKZm9uZGxlL0RTRwpmb25kbmVzcy9NCmZvbmR1ZS9TTQpmb250L01TCmZvbnRhbmVsL01TCmZvbwpmb29iYXIKZm9vZC9NUwpmb29kaWUvU00KZm9vZHN0dWZmL1NNCmZvb2wvTURHUwpmb29sZXJ5L1NNCmZvb2xoYXJkaWx5CmZvb2xoYXJkaW5lc3MvTQpmb29saGFyZHkvVFBSCmZvb2xpc2gvWVAKZm9vbGlzaG5lc3MvTQpmb29scHJvb2YKZm9vbHNjYXAvTQpmb290L01EUlpHU0oKZm9vdGFnZS9NCmZvb3RiYWxsL01SWkdTCmZvb3RiYWxsZXIvTQpmb290YnJpZGdlL1NNCmZvb3RmYWxsL01TCmZvb3RoaWxsL01TCmZvb3Rob2xkL01TCmZvb3RpZQpmb290aW5nL00KZm9vdGxlc3MKZm9vdGxpZ2h0cy9NCmZvb3RsaW5nL01TCmZvb3Rsb2NrZXIvU00KZm9vdGxvb3NlCmZvb3RtYW4vTQpmb290bWVuCmZvb3Rub3RlL01HRFMKZm9vdHBhdGgvTQpmb290cGF0aHMKZm9vdHBsYXRlL1MKZm9vdHByaW50L1NNCmZvb3RyYWNlL01TCmZvb3RyZXN0L01TCmZvb3RzaWUvU00KZm9vdHNsb2dnaW5nCmZvb3Rzb3JlCmZvb3RzdGVwL01TCmZvb3RzdG9vbC9TTQpmb290d2Vhci9NCmZvb3R3b3JrL00KZm9vdHkKZm9wL1NNCmZvcHBlcnkvTQpmb3BwaXNoL1AKZm9wcGlzaG5lc3MvTQpmb3IvSApmb3JhCmZvcmFnZS9EUlNNWkcKZm9yYWdlci9NCmZvcmF5L1NNREcKZm9yYmFkZQpmb3JiZWFyL1NNRwpmb3JiZWFyYW5jZS9NCmZvcmJpZC9TCmZvcmJpZGRlbgpmb3JiaWRkaW5nL1lTCmZvcmJvcmUKZm9yYm9ybmUKZm9yY2UvRFNNRwpmb3JjZWQvVQpmb3JjZWZ1bC9QWQpmb3JjZWZ1bG5lc3MvTQpmb3JjZXBzL00KZm9yY2libGUKZm9yY2libHkKZm9yZC9NREdTQgpmb3JlL01TCmZvcmVhcm0vR1NNRApmb3JlYmVhci9NUwpmb3JlYm9kZS9HSkRTCmZvcmVib2RpbmcvTQpmb3JlY2FzdC9NUlpHUwpmb3JlY2FzdGVyL00KZm9yZWNhc3RsZS9NUwpmb3JlY2xvc2UvRFNHCmZvcmVjbG9zdXJlL01TCmZvcmVjb3VydC9TTQpmb3JlZG9vbS9ER1MKZm9yZWZhdGhlci9NUwpmb3JlZmVldApmb3JlZmluZ2VyL1NNCmZvcmVmb290L00KZm9yZWZyb250L1NNCmZvcmVnby9HCmZvcmVnb2VzCmZvcmVnb25lCmZvcmVncm91bmQvR01EUwpmb3JlaGFuZC9NUwpmb3JlaGVhZC9NUwpmb3JlaWduL1pSUApmb3JlaWduZXIvTQpmb3JlaWdubmVzcy9NCmZvcmVrbmV3CmZvcmVrbm93L0dTCmZvcmVrbm93bGVkZ2UvTQpmb3Jla25vd24KZm9yZWxlZy9TTQpmb3JlbGltYi9NUwpmb3JlbG9jay9NUwpmb3JlbWFuL00KZm9yZW1hc3QvTVMKZm9yZW1lbgpmb3JlbW9zdApmb3JlbmFtZS9NRFMKZm9yZW5vb24vTVMKZm9yZW5zaWMvTVMKZm9yZW5zaWNhbGx5CmZvcmVuc2ljcy9NCmZvcmVvcmRhaW4vR1NECmZvcmVwYXJ0L01TCmZvcmVwZXJzb24vU00KZm9yZXBsYXkvTQpmb3JlcXVhcnRlci9NUwpmb3JlcnVubmVyL01TCmZvcmVzYWlsL01TCmZvcmVzYXcKZm9yZXNlZS9SU0JaCmZvcmVzZWVhYmxlL1UKZm9yZXNlZWluZwpmb3Jlc2Vlbi9VCmZvcmVzZWVyL00KZm9yZXNoYWRvdy9HRFMKZm9yZXNob3JlL1MKZm9yZXNob3J0ZW4vRFNHCmZvcmVzaWdodC9NRApmb3Jlc2lnaHRlZG5lc3MvTQpmb3Jlc2tpbi9NUwpmb3Jlc3Qncwpmb3Jlc3QvQUNHRFMKZm9yZXN0YWxsL1NHRApmb3Jlc3RhdGlvbi9BQ00KZm9yZXN0ZXIvTVMKZm9yZXN0bGFuZC9NCmZvcmVzdHJ5L00KZm9yZXRhc3RlL0RTTUcKZm9yZXRlbGwvR1MKZm9yZXRob3VnaHQvTQpmb3JldG9sZApmb3JldmVyL00KZm9yZXZlcm1vcmUKZm9yZXdhcm4vRFNHCmZvcmV3ZW50CmZvcmV3b21hbi9NCmZvcmV3b21lbgpmb3Jld29yZC9NUwpmb3JmZWl0L0dTTUQKZm9yZmVpdHVyZS9TTQpmb3JnYXRoZXIvU0RHCmZvcmdhdmUKZm9yZ2UvRFJTTVpHVkoKZm9yZ2VyL00KZm9yZ2VyeS9TTQpmb3JnZXQvUwpmb3JnZXRmdWwvWVAKZm9yZ2V0ZnVsbmVzcy9NCmZvcmdldHRhYmxlL1UKZm9yZ2V0dGluZwpmb3JnaW5nL00KZm9yZ2l2YWJsZS9VCmZvcmdpdmUvQlJTWkdQCmZvcmdpdmVuCmZvcmdpdmVuZXNzL00KZm9yZ2l2ZXIvTQpmb3JnaXZpbmcvVQpmb3Jnby9SWkcKZm9yZ29lci9NCmZvcmdvZXMKZm9yZ29uZQpmb3Jnb3QKZm9yZ290dGVuL1UKZm9yay9NREdTCmZvcmtmdWwvU00KZm9ya2xpZnQvTVMKZm9ybG9ybi9ZCmZvcm0ncwpmb3JtL0NBSUZER1MKZm9ybWFsL1NNWQpmb3JtYWxkZWh5ZGUvTQpmb3JtYWxpbgpmb3JtYWxpc20vTQpmb3JtYWxpc3QvTVMKZm9ybWFsaXRpZXMKZm9ybWFsaXR5L0lNCmZvcm1hbGl6YXRpb24vTQpmb3JtYWxpemUvR0RTCmZvcm1hdC9TTVYKZm9ybWF0aW9uL0NGQVNNCmZvcm1hdHRlZC9BCmZvcm1hdHRpbmcvTQpmb3JtZWQvVQpmb3JtZXIvRklBTQpmb3JtZXJseQpmb3JtZml0dGluZwpmb3JtaWMKZm9ybWlkYWJsZQpmb3JtaWRhYmx5CmZvcm1sZXNzL1BZCmZvcm1sZXNzbmVzcy9NCmZvcm11bGEvTVMKZm9ybXVsYWljCmZvcm11bGF0ZS9BRFNHTlgKZm9ybXVsYXRlZC9VCmZvcm11bGF0aW9uL0FNCmZvcm11bGF0b3IvU00KZm9ybmljYXRlL0dORFMKZm9ybmljYXRpb24vTQpmb3JuaWNhdG9yL01TCmZvcnNha2UvR1MKZm9yc2FrZW4KZm9yc29vawpmb3Jzb290aApmb3Jzd2Vhci9TRwpmb3Jzd29yZQpmb3Jzd29ybgpmb3JzeXRoaWEvU00KZm9ydC9NUwpmb3J0ZS9TTQpmb3J0aGNvbWluZy9NCmZvcnRocmlnaHQvWVAKZm9ydGhyaWdodG5lc3MvTQpmb3J0aHdpdGgKZm9ydGlldGgvTQpmb3J0aWV0aHMKZm9ydGlmaWNhdGlvbi9NCmZvcnRpZmllZC9VCmZvcnRpZmllci9NCmZvcnRpZnkvRFJTTlpHWApmb3J0aXNzaW1vCmZvcnRpdHVkZS9NCmZvcnRuaWdodC9NWVMKZm9ydHJlc3MvTVMKZm9ydHVpdG91cy9ZUApmb3J0dWl0b3VzbmVzcy9NCmZvcnR1aXR5L00KZm9ydHVuYXRlL1VZCmZvcnR1bmUvTVMKZm9ydHVuZXRlbGxlci9TTQpmb3J0dW5ldGVsbGluZy9NCmZvcnR5L1NNSApmb3J1bS9TTQpmb3J3YXJkL01EUllaVEdTUApmb3J3YXJkZXIvTQpmb3J3YXJkbmVzcy9NCmZvcndlbnQKZm9zc2EKZm9zc2lsL1NNCmZvc3NpbGl6YXRpb24vTQpmb3NzaWxpemUvR0RTCmZvc3Rlci9HU0QKZm91Z2h0CmZvdWwvTURSWVRHU1AKZm91bGFyZC9NCmZvdWxtb3V0aGVkCmZvdWxuZXNzL00KZm91bmQvRlNERwpmb3VuZGF0aW9uL1NNCmZvdW5kZWQvVQpmb3VuZGVyL0dNRFMKZm91bmRsaW5nL1NNCmZvdW5kcnkvU00KZm91bnQvU00KZm91bnRhaW4vU00KZm91bnRhaW5oZWFkL01TCmZvdXIvTUhTCmZvdXJmb2xkCmZvdXJwb3N0ZXIvU00KZm91cnNjb3JlL00KZm91cnNvbWUvU00KZm91cnNxdWFyZQpmb3VydGVlbi9TTUgKZm91cnRlZW50aC9NCmZvdXJ0ZWVudGhzCmZvdXJ0aC9NWQpmb3VydGhzCmZvd2wvTURHUwpmb3gvR01EUwpmb3hmaXJlL00KZm94Z2xvdmUvU00KZm94aG9sZS9NUwpmb3hob3VuZC9TTQpmb3hodW50L0dTCmZveGlseQpmb3hpbmVzcy9NCmZveHRyb3QvTVMKZm94dHJvdHRlZApmb3h0cm90dGluZwpmb3h5L1JUUApmb3llci9TTQpmcHMKZnIKZnJhY2FzL01TCmZyYWNrL1NERwpmcmFjdGFsL1NNCmZyYWN0aW9uL0lTTQpmcmFjdGlvbmFsL1kKZnJhY3Rpb3VzL1lQCmZyYWN0aW91c25lc3MvTQpmcmFjdHVyZS9NR0RTCmZyYWcvUwpmcmFnaWxlL1JUCmZyYWdpbGl0eS9NCmZyYWdtZW50L0dNRFMKZnJhZ21lbnRhcnkvTQpmcmFnbWVudGF0aW9uL00KZnJhZ3JhbmNlL01TCmZyYWdyYW50L1kKZnJhaWwvUllUUApmcmFpbG5lc3MvTQpmcmFpbHR5L1NNCmZyYW1lL0RSU01aRwpmcmFtZWQvVQpmcmFtZXIvTQpmcmFtZXdvcmsvU00KZnJhbmMvU00KZnJhbmNoaXNlJ3MKZnJhbmNoaXNlL0VEU0cKZnJhbmNoaXNlZS9TTQpmcmFuY2hpc2VyL1NNCmZyYW5jaXVtL00KZnJhbmNvcGhvbmUKZnJhbmdpYmlsaXR5L00KZnJhbmdpYmxlCmZyYW5rL1NNRFJZVEdQCmZyYW5rZnVydGVyL01TCmZyYW5raW5jZW5zZS9NCmZyYW5rbmVzcy9NCmZyYW50aWMKZnJhbnRpY2FsbHkKZnJhcHBlL1NNCmZyYXQvTVMKZnJhdGVybmFsL1kKZnJhdGVybml0eS9GU00KZnJhdGVybml6YXRpb24vTQpmcmF0ZXJuaXplL1pHRFJTCmZyYXRlcm5pemVyL00KZnJhdHJpY2lkYWwKZnJhdHJpY2lkZS9NUwpmcmF1ZCdzCmZyYXVkL1MKZnJhdWRzdGVyL1MKZnJhdWR1bGVuY2UvTQpmcmF1ZHVsZW50L1kKZnJhdWdodApmcmF5J3MKZnJheS9DREdTCmZyYXp6bGUvTUdEUwpmcmVhay9TTURHCmZyZWFraXNoL1lQCmZyZWFraXNobmVzcy9NCmZyZWFreS9SVApmcmVja2xlL0RTTUcKZnJlY2tseQpmcmVlL1lURFJTCmZyZWViYXNlL01HRFMKZnJlZWJpZS9TTQpmcmVlYm9vdGVyL1NNCmZyZWVib3JuCmZyZWVkbWFuL00KZnJlZWRtZW4KZnJlZWRvbS9TTQpmcmVlaGFuZApmcmVlaG9sZC9aTVJTCmZyZWVob2xkZXIvTQpmcmVlaW5nCmZyZWVsYW5jZS9EUlNNWkcKZnJlZWxhbmNlci9NCmZyZWVsb2FkL1NEUlpHCmZyZWVsb2FkZXIvTQpmcmVlbWFuL00KZnJlZW1hc29ucnkKZnJlZW1lbgpmcmVlcGhvbmUKZnJlZXNpYS9TCmZyZWVzdGFuZGluZwpmcmVlc3RvbmUvU00KZnJlZXN0eWxlL1NNCmZyZWV0aGlua2VyL1NNCmZyZWV0aGlua2luZy9NCmZyZWV3YXJlL00KZnJlZXdheS9NUwpmcmVld2hlZWwvREdTCmZyZWV3aWxsCmZyZWV6YWJsZQpmcmVlemUncwpmcmVlemUvVUFHUwpmcmVlemVyL01TCmZyZWV6aW5nJ3MKZnJlaWdodC9NRFJaR1MKZnJlaWdodGVyL00KZnJlbmNoCmZyZW5ldGljCmZyZW5ldGljYWxseQpmcmVuemllZC9ZCmZyZW56eS9EU00KZnJlcQpmcmVxdWVuY2llcwpmcmVxdWVuY3kvSU0KZnJlcXVlbnQvRFJZU1pURwpmcmVxdWVudGVkL1UKZnJlcXVlbnRlci9NCmZyZXNjby9NCmZyZXNjb2VzCmZyZXNoL1BOUllYWlQKZnJlc2hlbi9aR0RSCmZyZXNoZW5lci9NCmZyZXNoZXQvTVMKZnJlc2htYW4vTQpmcmVzaG1lbgpmcmVzaG5lc3MvTQpmcmVzaHdhdGVyL00KZnJldC9NUwpmcmV0ZnVsL1lQCmZyZXRmdWxuZXNzL00KZnJldHNhdy9NUwpmcmV0dGVkCmZyZXR0aW5nCmZyZXR3b3JrL00KZnJpYWJsZQpmcmlhci9TTQpmcmlhcnkvU00KZnJpY2Fzc2VlL0RTTQpmcmljYXNzZWVpbmcKZnJpY2F0aXZlL1NNCmZyaWN0aW9uL1NNCmZyaWN0aW9uYWwKZnJpZGdlL1NNCmZyaWVkY2FrZS9NUwpmcmllbmQncwpmcmllbmQvVUdTRFkKZnJpZW5kbGVzcwpmcmllbmRsaWVzCmZyaWVuZGxpbmVzcy9VTQpmcmllbmRseSdzCmZyaWVuZGx5L1VQVFIKZnJpZW5kc2hpcC9NUwpmcmllemUvU00KZnJpZy9TCmZyaWdhdGUvTVMKZnJpZ2dlZApmcmlnZ2luZwpmcmlnaHQvU1hHTUROCmZyaWdodGVuL0RHCmZyaWdodGVuaW5nL1kKZnJpZ2h0ZnVsL1BZCmZyaWdodGZ1bG5lc3MvTQpmcmlnaWQvWVAKZnJpZ2lkaXR5L00KZnJpZ2lkbmVzcy9NCmZyaWxsL1NNRApmcmlsbHkvVFIKZnJpbmdlJ3MKZnJpbmdlL0lEU0cKZnJpcHBlcnkvU00KZnJpc2svU0RHCmZyaXNraWx5CmZyaXNraW5lc3MvTQpmcmlza3kvVFJQCmZyaXNzb24vUwpmcml0dGVyL01EU0cKZnJpdHovTQpmcml2b2xpdHkvU00KZnJpdm9sb3VzL1BZCmZyaXZvbG91c25lc3MvTQpmcml6ei9NRFNZRwpmcml6emxlL01HRFMKZnJpenp5L1RSCmZybwpmcm9jaydzCmZyb2NrL0NVUwpmcm9nL01TCmZyb2dnaW5nL1MKZnJvZ21hbi9NCmZyb2dtYXJjaC9HRFMKZnJvZ21lbgpmcm9nc3Bhd24KZnJvbGljL1NNCmZyb2xpY2tlZApmcm9saWNrZXIvU00KZnJvbGlja2luZwpmcm9saWNzb21lCmZyb20KZnJvbmQvU00KZnJvbnQncwpmcm9udC9GU0RHCmZyb250YWdlL01TCmZyb250YWwvWQpmcm9udGJlbmNoL1pSUwpmcm9udGllci9NUwpmcm9udGllcnNtYW4vTQpmcm9udGllcnNtZW4KZnJvbnRpZXJzd29tYW4KZnJvbnRpZXJzd29tZW4KZnJvbnRpc3BpZWNlL01TCmZyb250d2FyZC9TCmZyb3NoL00KZnJvc3Qncwpmcm9zdC9DU0RHCmZyb3N0Yml0CmZyb3N0Yml0ZS9NR1MKZnJvc3RiaXR0ZW4KZnJvc3RpbHkKZnJvc3RpbmVzcy9NCmZyb3N0aW5nL1NNCmZyb3N0eS9UUFIKZnJvdGgvTURHCmZyb3RoaW5lc3MvTQpmcm90aHMKZnJvdGh5L1RQUgpmcm91ZnJvdS9NCmZyb3dhcmQvUApmcm93YXJkbmVzcy9NCmZyb3duL1NNREcKZnJvd3ppbHkKZnJvd3ppbmVzcy9NCmZyb3d6eS9UUFIKZnJvemUvQVUKZnJvemVuL1VBCmZydWN0aWZ5L0RTRwpmcnVjdG9zZS9NCmZydWdhbC9ZCmZydWdhbGl0eS9NCmZydWl0L1NNREcKZnJ1aXRjYWtlL01TCmZydWl0ZXJlci9TCmZydWl0ZnVsL1lQCmZydWl0ZnVsbmVzcy9NCmZydWl0aW5lc3MvTQpmcnVpdGlvbi9NCmZydWl0bGVzcy9QWQpmcnVpdGxlc3NuZXNzL00KZnJ1aXR5L1RQUgpmcnVtcC9TTQpmcnVtcGlzaApmcnVtcHkvVFIKZnJ1c3RyYXRlL0dOWERTCmZydXN0cmF0aW5nL1kKZnJ1c3RyYXRpb24vTQpmcnVzdHVtL01TCmZyeS9HRFNNCmZyeWVyL1NNCmZ0CmZ0cC9aR1MKZnVjaHNpYS9NUwpmdWNrL1NNR0RSWiEKZnVja2VyL00hCmZ1Y2toZWFkL1MhCmZ1ZGRsZS9EU01HCmZ1ZGdlL0RTTUcKZnVlaHJlci9NUwpmdWVsJ3MKZnVlbC9BREdTCmZ1ZwpmdWdhbApmdWdneQpmdWdpdGl2ZS9NUwpmdWd1ZS9TTQpmdWhyZXIvU00KZnVsY3J1bS9NUwpmdWxmaWxsL0xER1MKZnVsZmlsbGVkL1UKZnVsZmlsbGluZy9VCmZ1bGZpbGxtZW50L00KZnVsbC9NRFJaVEdTUApmdWxsYmFjay9NUwpmdWxsZXIvTQpmdWxsbmVzcy9NCmZ1bGx5CmZ1bG1pbmF0ZS9EU1hHTgpmdWxtaW5hdGlvbi9NCmZ1bHNvbWUvUFkKZnVsc29tZW5lc3MvTQpmdW0vUwpmdW1ibGUvRFJTTVpHCmZ1bWJsZXIvTQpmdW1ibGluZy9ZCmZ1bWUvTUdEUwpmdW1pZ2FudC9NUwpmdW1pZ2F0ZS9HTkRTCmZ1bWlnYXRpb24vTQpmdW1pZ2F0b3IvU00KZnVteS9SVApmdW4vTQpmdW5jdGlvbi9NREdTCmZ1bmN0aW9uYWwvWQpmdW5jdGlvbmFsaXNtCmZ1bmN0aW9uYWxpc3QvUwpmdW5jdGlvbmFsaXR5L1MKZnVuY3Rpb25hcnkvU00KZnVuZC9BTURHUwpmdW5kYW1lbnRhbC9TTVkKZnVuZGFtZW50YWxpc20vTQpmdW5kYW1lbnRhbGlzdC9TTQpmdW5kZWQvVQpmdW5kaW5nL00KZnVuZHJhaXNlci9NUwpmdW5kcmFpc2luZwpmdW5lcmFsL01TCmZ1bmVyYXJ5CmZ1bmVyZWFsL1kKZnVuZmFpci9TCmZ1bmdhbApmdW5naQpmdW5naWJsZS9NUwpmdW5naWNpZGFsCmZ1bmdpY2lkZS9NUwpmdW5nb2lkCmZ1bmdvdXMKZnVuZ3VzL00KZnVuaWN1bGFyL1NNCmZ1bmsvTURHUwpmdW5raW5lc3MvTQpmdW5reS9QUlQKZnVubmVsL01ER1MKZnVubmVyCmZ1bm5lc3QKZnVubmlseQpmdW5uaW5lc3MvTQpmdW5ueS9UUFJTTQpmdW5ueW1hbi9NCmZ1bm55bWVuCmZ1ci9TTQpmdXJiZWxvdy9NCmZ1cmJpc2gvQURTRwpmdXJpb3VzL1kKZnVybCdzCmZ1cmwvVURHUwpmdXJsb25nL1NNCmZ1cmxvdWdoL0dNRApmdXJsb3VnaHMKZnVybgpmdXJuYWNlL1NNCmZ1cm5pc2gvQURTRwpmdXJuaXNoZWQvVQpmdXJuaXNoaW5ncy9NCmZ1cm5pdHVyZS9NCmZ1cm9yL1NNCmZ1cnJlZApmdXJyaWVyL00KZnVycmluZXNzL00KZnVycmluZy9NCmZ1cnJvdy9NRFNHCmZ1cnJ5L1pUUlAKZnVydGhlci9TR0QKZnVydGhlcmFuY2UvTQpmdXJ0aGVybW9yZQpmdXJ0aGVybW9zdApmdXJ0aGVzdApmdXJ0aXZlL1lQCmZ1cnRpdmVuZXNzL00KZnVyeS9TTQpmdXJ6ZS9NCmZ1c2Uncy9BCmZ1c2UvQ0FJRkdEUwpmdXNlZS9TTQpmdXNlbGFnZS9TTQpmdXNpYmlsaXR5L00KZnVzaWJsZQpmdXNpbGllci9TTQpmdXNpbGxhZGUvTVMKZnVzaW9uL0lGS1NNCmZ1c3MvTURTRwpmdXNzYnVkZ2V0L01TCmZ1c3NpbHkKZnVzc2luZXNzL00KZnVzc3BvdC9TTQpmdXNzeS9UUlAKZnVzdGlhbi9NCmZ1c3RpbmVzcy9NCmZ1c3R5L1RSUApmdXQKZnV0aWxlL1kKZnV0aWxpdHkvTQpmdXRvbi9TTQpmdXR1cmUvTVMKZnV0dXJpc20vTQpmdXR1cmlzdC9NUwpmdXR1cmlzdGljCmZ1dHVyaXR5L1NNCmZ1dHVyb2xvZ2lzdC9NUwpmdXR1cm9sb2d5L00KZnV0ei9EU0cKZnV6ei9NRFNHCmZ1enpiYWxsL1MKZnV6emlseQpmdXp6aW5lc3MvTQpmdXp6eS9QVFIKZndkCmZ3eQpnL1NOWFZCCmdhYi9TTQpnYWJhcmRpbmUvU00KZ2FiYmVkCmdhYmJpbmVzcy9NCmdhYmJpbmcKZ2FiYmxlL0RTTUcKZ2FiYnkvUlRQCmdhYmVyZGluZS9TTQpnYWJmZXN0L01TCmdhYmxlL0RTTQpnYWQvUwpnYWRhYm91dC9TTQpnYWRkZWQKZ2FkZGVyL1NNCmdhZGRpbmcKZ2FkZmx5L1NNCmdhZGdldC9TTQpnYWRnZXRyeS9NCmdhZG9saW5pdW0vTQpnYWZmL01EUlpHUwpnYWZmZS9TTQpnYWZmZXIvTQpnYWcvU00KZ2FnYQpnYWdnZWQKZ2FnZ2luZwpnYWdnbGUvU00KZ2FpZXR5L00KZ2FpbHkKZ2FpbidzCmdhaW4vQURHUwpnYWluZXIvU00KZ2FpbmZ1bC9ZCmdhaW5zYWlkCmdhaW5zYXkvWkdSUwpnYWluc2F5ZXIvTQpnYWl0L01SWlMKZ2FpdGVyL00KZ2FsL1NNCmdhbGEvTVMKZ2FsYWN0aWMKZ2FsYXh5L1NNCmdhbGUncwpnYWxlL0FTCmdhbGVuYS9NCmdhbGwvTURHUwpnYWxsYW50L1NNWQpnYWxsYW50cnkvTQpnYWxsYmxhZGRlci9NUwpnYWxsZW9uL1NNCmdhbGxlcmlhL01TCmdhbGxlcnkvU00KZ2FsbGV5L1NNCmdhbGxpbWF1ZnJ5L1NNCmdhbGxpdW0vTQpnYWxsaXZhbnQvR1NECmdhbGxvbi9TTQpnYWxsb3AvU01ERwpnYWxsb3dzL00KZ2FsbHN0b25lL01TCmdhbG9vdC9TTQpnYWxvcmUKZ2Fsb3NoL01TCmdhbHVtcGgvREcKZ2FsdW1waHMKZ2FsdmFuaWMKZ2FsdmFuaXNtL00KZ2FsdmFuaXphdGlvbi9NCmdhbHZhbml6ZS9EU0cKZ2FsdmFub21ldGVyL01TCmdhbWJpdC9TTQpnYW1ibGUvRFJTTVpHCmdhbWJsZXIvTQpnYW1ibGluZy9NCmdhbWJvbC9TTURHCmdhbWUvTVlUR0RSU1AKZ2FtZWNvY2svTVMKZ2FtZWtlZXBlci9NUwpnYW1lbmVzcy9NCmdhbWVzbWFuc2hpcC9NCmdhbWVzdGVyL01TCmdhbWV0ZS9TTQpnYW1ldGljCmdhbWluL1NNCmdhbWluZS9TTQpnYW1pbmVzcy9NCmdhbWluZy9NCmdhbW1hL1NNCmdhbW1vbi9NCmdhbW15CmdhbXV0L1NNCmdhbXkvUlRQCmdhbmRlci9TTQpnYW5nL01ER1MKZ2FuZ2J1c3RlcnMvTQpnYW5nbGFuZC9NCmdhbmdsaWEKZ2FuZ2xpbmcKZ2FuZ2xpb24vTQpnYW5nbGlvbmljCmdhbmdwbGFuay9TTQpnYW5ncmVuZS9EU01HCmdhbmdyZW5vdXMKZ2FuZ3N0YS9TCmdhbmdzdGVyL1NNCmdhbmd3YXkvTVMKZ2FuamEKZ2FubmV0L1NNCmdhbnRsZXQvTVMKZ2FudHJ5L1NNCmdhcC9HU01ECmdhcGUvTVMKZ2FyL1NMTQpnYXJhZ2UvRFNNRwpnYXJiL01ER1MKZ2FyYmFnZS9NCmdhcmJhZ2VtYW4KZ2FyYmFuem8vU00KZ2FyYmxlL0RTRwpnYXJjb24vU00KZ2FyZGVuL1NaR01EUgpnYXJkZW5lci9NCmdhcmRlbmlhL01TCmdhcmRlbmluZy9NCmdhcmZpc2gvTVMKZ2FyZ2FudHVhbgpnYXJnbGUvRFNNRwpnYXJnb3lsZS9TTQpnYXJpc2gvUFkKZ2FyaXNobmVzcy9NCmdhcmxhbmQvTURHUwpnYXJsaWMvTQpnYXJsaWNreQpnYXJtZW50L01TCmdhcm5lci9TR0QKZ2FybmV0L1NNCmdhcm5pc2gvR0xNRFMKZ2FybmlzaGVlL0RTTQpnYXJuaXNoZWVpbmcKZ2FybmlzaG1lbnQvU00KZ2FycmV0L1NNCmdhcnJpc29uL01EU0cKZ2Fycm90ZS9NWkdEUlMKZ2Fycm90ZXIvTQpnYXJydWxpdHkvTQpnYXJydWxvdXMvUFkKZ2FycnVsb3VzbmVzcy9NCmdhcnRlci9TTQpnYXMncwpnYXMvQ1MKZ2FzYmFnL1NNCmdhc2VvdXMKZ2FzaC9NRFNHCmdhc2hvbGRlci9TCmdhc2tldC9TTQpnYXNsaWdodC9NUwpnYXNtYW4KZ2FzbWVuCmdhc29ob2wvTQpnYXNvbGluZS9NCmdhc29tZXRlci9TCmdhc3AvTURHUwpnYXNzZWQvQwpnYXNzZXMKZ2Fzc2luZy9DCmdhc3N5L1JUCmdhc3RyaWMKZ2FzdHJpdGlzL00KZ2FzdHJvZW50ZXJpdGlzL00KZ2FzdHJvaW50ZXN0aW5hbApnYXN0cm9ub21lL1MKZ2FzdHJvbm9taWMKZ2FzdHJvbm9taWNhbC9ZCmdhc3Ryb25vbXkvTQpnYXN0cm9wb2QvU00KZ2Fzd29ya3MvTQpnYXRlL01HRFMKZ2F0ZWF1CmdhdGVhdXgKZ2F0ZWNyYXNoL0RSU1pHCmdhdGVjcmFzaGVyL00KZ2F0ZWhvdXNlL1NNCmdhdGVrZWVwZXIvTVMKZ2F0ZXBvc3QvTVMKZ2F0ZXdheS9NUwpnYXRoZXIvU0paR01EUgpnYXRoZXJlci9NCmdhdGhlcmluZy9NCmdhdG9yL1NNCmdhdWNoZS9SUFlUCmdhdWNoZW5lc3MvTQpnYXVjaGVyaWUvTQpnYXVjaG8vU00KZ2F1ZGlseQpnYXVkaW5lc3MvTQpnYXVkeS9SUFQKZ2F1Z2UvRFNNRwpnYXVudC9SUFQKZ2F1bnRsZXQvTVMKZ2F1bnRuZXNzL00KZ2F1emUvTQpnYXV6aW5lc3MvTQpnYXV6eS9SUFQKZ2F2ZQpnYXZlbC9TTQpnYXZvdHRlL01TCmdhd2QKZ2F3ay9ER1MKZ2F3a2lseQpnYXdraW5lc3MvTQpnYXdreS9SUFQKZ2F3cC9ER1MKZ2F5L1RTUE1SCmdheW5lc3MvTQpnYXplL01aR0RSUwpnYXplYm8vU00KZ2F6ZWxsZS9NUwpnYXplci9NCmdhemV0dGUvTUdEUwpnYXpldHRlZXIvTVMKZ2F6aWxsaW9uL1MKZ2F6cGFjaG8vTQpnYXp1bXAvREdTCmdlYXIvTURHUwpnZWFyYm94L01TCmdlYXJpbmcvTQpnZWFyc2hpZnQvTVMKZ2VhcndoZWVsL1NNCmdlY2tvL1NNCmdlZGRpdApnZWUvRFMKZ2VlaW5nCmdlZWsvTVMKZ2Vla3kvUlQKZ2Vlc2UKZ2VlemVyL01TCmdlaXNoYS9NCmdlbC9TTQpnZWxhdGluL00KZ2VsYXRpbm91cwpnZWxjYXAvTQpnZWxkL0RKR1MKZ2VsZGluZy9NCmdlbGlkCmdlbGlnbml0ZS9NCmdlbGxlZApnZWxsaW5nCmdlbS9TTQpnZW1vbG9naWNhbApnZW1vbG9naXN0L01TCmdlbW9sb2d5L00KZ2Vtc3RvbmUvTVMKZ2VuZGFybWUvTVMKZ2VuZGVyL01EUwpnZW5lL01TCmdlbmVhbG9naWNhbC9ZCmdlbmVhbG9naXN0L01TCmdlbmVhbG9neS9TTQpnZW5lcmEKZ2VuZXJhbC9TTVkKZ2VuZXJhbGlzc2ltby9NUwpnZW5lcmFsaXN0L01TCmdlbmVyYWxpdHkvU00KZ2VuZXJhbGl6YXRpb24vTVMKZ2VuZXJhbGl6ZS9HRFMKZ2VuZXJhbHNoaXAvTQpnZW5lcmF0ZS9DQVZOR1NECmdlbmVyYXRpb24vQUNNCmdlbmVyYXRpb25hbApnZW5lcmF0aW9ucwpnZW5lcmF0b3IvU00KZ2VuZXJpYy9TTQpnZW5lcmljYWxseQpnZW5lcm9zaXR5L1NNCmdlbmVyb3VzL1BZCmdlbmVyb3VzbmVzcy9NCmdlbmVzL1MKZ2VuZXNpcy9NCmdlbmV0aWMvUwpnZW5ldGljYWxseQpnZW5ldGljaXN0L01TCmdlbmV0aWNzL00KZ2VuaWFsL0ZZCmdlbmlhbGl0eS9GTQpnZW5pY3VsYXRlCmdlbmllL1NNCmdlbmlpCmdlbml0YWwvRlkKZ2VuaXRhbGlhL00KZ2VuaXRhbHMvTQpnZW5pdGl2ZS9NUwpnZW5pdG91cmluYXJ5Cmdlbml1cy9NUwpnZW5uZWQKZ2VubmluZwpnZW5vY2lkYWwKZ2Vub2NpZGUvTVMKZ2Vub21lL01TCmdlbm9taWNzCmdlbnJlL1NNCmdlbnQvQU1TCmdlbnRlZWwvWVAKZ2VudGVlbG5lc3MvTQpnZW50aWFuL1NNCmdlbnRpbGUvU00KZ2VudGlsaXR5L00KZ2VudGxlL1RHRFJTUApnZW50bGVmb2xrL01TCmdlbnRsZWZvbGtzL00KZ2VudGxlbWFuL01ZCmdlbnRsZW1hbmx5L1UKZ2VudGxlbWVuCmdlbnRsZW5lc3MvTQpnZW50bGV3b21hbi9NCmdlbnRsZXdvbWVuCmdlbnRseQpnZW50cmlmaWNhdGlvbi9NCmdlbnRyaWZ5L0RTR04KZ2VudHJ5L1NNCmdlbnVmbGVjdC9ER1MKZ2VudWZsZWN0aW9uL01TCmdlbnVpbmUvUFkKZ2VudWluZW5lc3MvTQpnZW51cy9NCmdlb2NhY2hlL0RTRwpnZW9jZW50cmljCmdlb2NlbnRyaWNhbGx5Cmdlb2NoZW1pc3RyeS9NCmdlb2RlL1NNCmdlb2Rlc2ljL1NNCmdlb2Rlc3kvTQpnZW9kZXRpYwpnZW9lbmdpbmVlcmluZwpnZW9nCmdlb2dyYXBoZXIvU00KZ2VvZ3JhcGhpYwpnZW9ncmFwaGljYWwvWQpnZW9ncmFwaHkvU00KZ2VvbG9naWMKZ2VvbG9naWNhbC9ZCmdlb2xvZ2lzdC9NUwpnZW9sb2d5L1NNCmdlb20KZ2VvbWFnbmV0aWMKZ2VvbWFnbmV0aXNtL00KZ2VvbWV0ZXIKZ2VvbWV0cmljCmdlb21ldHJpY2FsL1kKZ2VvbWV0cnkvU00KZ2VvcGh5c2ljYWwKZ2VvcGh5c2ljaXN0L1NNCmdlb3BoeXNpY3MvTQpnZW9wb2xpdGljYWwKZ2VvcG9saXRpY3MvTQpnZW9zdGF0aW9uYXJ5Cmdlb3N5bmNocm9ub3VzCmdlb3N5bmNsaW5lL01TCmdlb3RoZXJtYWwKZ2VvdGhlcm1pYwpnZXJhbml1bS9NUwpnZXJiaWwvTVMKZ2VyaWF0cmljL1MKZ2VyaWF0cmljaWFuL1MKZ2VyaWF0cmljcy9NCmdlcm0vTVMKZ2VybWFuZQpnZXJtYW5pdW0vTQpnZXJtaWNpZGFsCmdlcm1pY2lkZS9NUwpnZXJtaW5hbC9NCmdlcm1pbmF0ZS9HTkRTCmdlcm1pbmF0aW9uL00KZ2Vyb250b2xvZ2ljYWwKZ2Vyb250b2xvZ2lzdC9NUwpnZXJvbnRvbG9neS9NCmdlcnJ5bWFuZGVyL0dNRFMKZ2VycnltYW5kZXJpbmcvTQpnZXJ1bmQvTVMKZ2VzdGFsdC9TCmdlc3RhcG8vTVMKZ2VzdGF0ZS9HTkRTCmdlc3RhdGlvbi9NCmdlc3RhdGlvbmFsCmdlc3RpY3VsYXRlL0RTR05YCmdlc3RpY3VsYXRpb24vTQpnZXN0dXJhbApnZXN0dXJlL01HRFMKZ2VzdW5kaGVpdApnZXQvUwpnZXRhd2F5L1NNCmdldHRpbmcKZ2V0dXAvTQpnZXdnYXcvU00KZ2V5c2VyL1NNCmdoYXN0bGluZXNzL00KZ2hhc3RseS9UUFIKZ2hhdC9NUwpnaGVlCmdoZXJraW4vTVMKZ2hldHRvL1NNCmdoZXR0b2l6ZS9HRFMKZ2hvc3QvU01EWUcKZ2hvc3RsaW5lc3MvTQpnaG9zdGx5L1JUUApnaG9zdHdyaXRlL1pHUlMKZ2hvc3R3cml0ZXIvTQpnaG9zdHdyaXR0ZW4KZ2hvc3R3cm90ZQpnaG91bC9TTQpnaG91bGlzaC9ZUApnaG91bGlzaG5lc3MvTQpnaWFudC9TTQpnaWFudGVzcy9NUwpnaWJiZXIvR0RTCmdpYmJlcmlzaC9NCmdpYmJldC9HTURTCmdpYmJvbi9NUwpnaWJib3VzCmdpYmUvTUdEUwpnaWJsZXQvU00KZ2lkZGlseQpnaWRkaW5lc3MvTQpnaWRkeS9SVFAKZ2lmdC9NREdTCmdpZy9TTQpnaWdhYml0L1NNCmdpZ2FieXRlL01TCmdpZ2FoZXJ0ei9NCmdpZ2FudGljCmdpZ2FudGljYWxseQpnaWdhcGl4ZWwvTVMKZ2lnYXdhdHQvU00KZ2lnZ2VkCmdpZ2dpbmcKZ2lnZ2xlL0RSU01aRwpnaWdnbGVyL00KZ2lnZ2x5L1JUCmdpZ29sby9TTQpnaWxkL01EUlpHUwpnaWxkZXIvTQpnaWxkaW5nL00KZ2lsbC9NUwpnaWxsaWUvUwpnaWxsaW9uL1MKZ2lsdC9NUwpnaW1iYWxzL00KZ2ltY3JhY2svU00KZ2ltY3JhY2tlcnkvTQpnaW1sZXQvR1NNRApnaW1tZS9TTQpnaW1taWNrL01TCmdpbW1pY2tyeS9NCmdpbW1pY2t5CmdpbXAvTURHUwpnaW1weQpnaW4vU00KZ2luZ2VyL0dTTURZCmdpbmdlcmJyZWFkL00KZ2luZ2Vyc25hcC9TTQpnaW5nZXJ5CmdpbmdoYW0vTQpnaW5naXZpdGlzL00KZ2lua2dvL00KZ2lua2dvZXMKZ2lubmVkCmdpbm5pbmcKZ2lub3Jtb3VzCmdpbnNlbmcvTQpnaXJhZmZlL01TCmdpcmQvRFJaR1MKZ2lyZGVyL00KZ2lyZGxlL0RTTUcKZ2lybC9NUwpnaXJsZnJpZW5kL01TCmdpcmxob29kL1NNCmdpcmxpc2gvWVAKZ2lybGlzaG5lc3MvTQpnaXJseQpnaXJvL1MKZ2lydC9NREdTCmdpcnRoL00KZ2lydGhzCmdpc3QvTQpnaXQvUwpnaXRlL1MKZ2l2ZS9aR0pSUwpnaXZlYXdheS9NUwpnaXZlYmFjay9NUwpnaXZlbi9TTQpnaXZlci9NCmdpem1vL1NNCmdpenphcmQvTVMKZ2xhY2UvUwpnbGFjZWVkCmdsYWNlaW5nCmdsYWNpYWwvWQpnbGFjaWF0ZS9YR05EUwpnbGFjaWF0aW9uL00KZ2xhY2llci9NUwpnbGFkL01ZU1AKZ2xhZGRlbi9HRFMKZ2xhZGRlcgpnbGFkZGVzdApnbGFkZS9TTQpnbGFkaWF0b3IvU00KZ2xhZGlhdG9yaWFsCmdsYWRpb2xhL1NNCmdsYWRpb2xpCmdsYWRpb2x1cy9NCmdsYWRuZXNzL00KZ2xhZHNvbWUKZ2xhbQpnbGFtb3JpemF0aW9uL00KZ2xhbW9yaXplL0RTRwpnbGFtb3JvdXMvWQpnbGFtb3VyL0dNRFMKZ2xhbmNlL0RTTUcKZ2xhbmQvU00KZ2xhbmRlcwpnbGFuZHVsYXIKZ2xhbnMvTQpnbGFyZS9EU01HCmdsYXJpbmcvWQpnbGFzbm9zdC9NCmdsYXNzL01EU0cKZ2xhc3NibG93ZXIvTVMKZ2xhc3NibG93aW5nL00KZ2xhc3NmdWwvU00KZ2xhc3Nob3VzZS9TCmdsYXNzaWx5CmdsYXNzaW5lc3MvTQpnbGFzc3dhcmUvTQpnbGFzc3kvUlRQCmdsYXVjb21hL00KZ2xhemUvRFNNRwpnbGF6aWVyL1NNCmdsYXppbmcvTQpnbGVhbS9TTURHSgpnbGVhbi9TRFJaR0oKZ2xlYW5lci9NCmdsZWFuaW5ncy9NCmdsZWUvTQpnbGVlZnVsL1lQCmdsZWVmdWxuZXNzL00KZ2xlbi9NUwpnbGVub2h1bWVyYWwKZ2xlbm9pZApnbGliL1lQCmdsaWJiZXIKZ2xpYmJlc3QKZ2xpYm5lc3MvTQpnbGlkZS9EUlNNWkcKZ2xpZGVyL00KZ2xpZGluZy9NCmdsaW1tZXIvTURHSlMKZ2xpbW1lcmluZy9NCmdsaW1wc2UvTUdEUwpnbGludC9TTURHCmdsaXNzYW5kaQpnbGlzc2FuZG8vTQpnbGlzdGVuL01EU0cKZ2xpc3Rlci9EU0cKZ2xpdGNoL0dNRFMKZ2xpdHRlci9NRFNHCmdsaXR0ZXJhdGkKZ2xpdHRlcnkKZ2xpdHovTQpnbGl0enkvVFIKZ2xvYW1pbmcvU00KZ2xvYXQvU01ERwpnbG9hdGluZy9ZCmdsb2IvTURHUwpnbG9iYWwvWQpnbG9iYWxpc20vTQpnbG9iYWxpc3QvTVMKZ2xvYmFsaXphdGlvbi9NCmdsb2JhbGl6ZS9HRFMKZ2xvYmUvU00KZ2xvYmV0cm90dGVyL01TCmdsb2JldHJvdHRpbmcKZ2xvYnVsYXIKZ2xvYnVsZS9NUwpnbG9idWxpbi9NCmdsb2NrZW5zcGllbC9TTQpnbG9vbS9NCmdsb29taWx5Cmdsb29taW5lc3MvTQpnbG9vbXkvVFJQCmdsb3AvTQpnbG9wcHkKZ2xvcmlmaWNhdGlvbi9NCmdsb3JpZnkvR0RTTgpnbG9yaW91cy9JWQpnbG9yeS9EU01HCmdsb3NzL01EU0cKZ2xvc3NhcnkvU00KZ2xvc3NpbHkKZ2xvc3NpbmVzcy9NCmdsb3Nzb2xhbGlhL00KZ2xvc3N5L1BUUlNNCmdsb3R0YWwKZ2xvdHRpcy9NUwpnbG92ZS9EU01HCmdsb3cvTURSWkdTCmdsb3dlci9HTUQKZ2xvd2luZy9ZCmdsb3d3b3JtL01TCmdsdWNhZ29uCmdsdWNvc2UvTQpnbHVlL01HRFMKZ2x1ZWQvVQpnbHVleQpnbHVpZXIKZ2x1aWVzdApnbHVtL1lQCmdsdW1tZXIKZ2x1bW1lc3QKZ2x1bW5lc3MvTQpnbHV0L01OUwpnbHV0ZW4vTQpnbHV0ZW5vdXMKZ2x1dGlub3VzL1kKZ2x1dHRlZApnbHV0dGluZwpnbHV0dG9uL01TCmdsdXR0b25vdXMvWQpnbHV0dG9ueS9NCmdseWNlcmluL00KZ2x5Y2Vyb2wvTQpnbHljb2dlbi9NCmdseXBoCmdtCmduYXJsL1NNREcKZ25hcmx5L1RSCmduYXNoL01EU0cKZ25hdC9NUwpnbmF3L0RHUwpnbmVpc3MvTQpnbm9jY2hpCmdub21lL1NNCmdub21pYwpnbm9taXNoCmdudS9TTQpnby9KTVJIWkcKZ29hZC9NREdTCmdvYWwvTVMKZ29hbGllL1NNCmdvYWxrZWVwZXIvTVMKZ29hbGtlZXBpbmcvTQpnb2FsbGVzcwpnb2FsbW91dGgKZ29hbG1vdXRocwpnb2FscG9zdC9NUwpnb2Fsc2NvcmVyL1MKZ29hbHRlbmRlci9NUwpnb2F0L01TCmdvYXRlZS9TTQpnb2F0aGVyZC9NUwpnb2F0c2tpbi9NUwpnb2IvU00KZ29iYmVkCmdvYmJldC9TTQpnb2JiaW5nCmdvYmJsZS9EUlNNWkcKZ29iYmxlZHlnb29rL00KZ29iYmxlci9NCmdvYmxldC9TTQpnb2JsaW4vU00KZ29ic21hY2tlZApnb2JzdG9wcGVyL1MKZ29kL1NNCmdvZGF3ZnVsCmdvZGNoaWxkL00KZ29kY2hpbGRyZW4vTQpnb2RkYW1taXQKZ29kZGFtbi9ECmdvZGRhdWdodGVyL01TCmdvZGRlc3MvTVMKZ29kZmF0aGVyL1NNCmdvZGZvcnNha2VuCmdvZGhlYWQvTQpnb2Rob29kL00KZ29kbGVzcy9QWQpnb2RsZXNzbmVzcy9NCmdvZGxpa2UKZ29kbGluZXNzL1VNCmdvZGx5L1VSVFAKZ29kbW90aGVyL1NNCmdvZHBhcmVudC9TTQpnb2RzZW5kL1NNCmdvZHNvbi9TTQpnb2RzcGVlZApnb2VyL00KZ29lcwpnb2Zlci9TTQpnb2dnbGUvRFNNRwpnb2dnbGVzL00KZ29pbmcvTQpnb2l0ZXIvU00KZ29sZC9NTlMKZ29sZGJyaWNrL1pHU01EUgpnb2xkYnJpY2tlci9NCmdvbGRlbi9UUgpnb2xkZW5yb2QvTQpnb2xkZmllbGQvUwpnb2xkZmluY2gvTVMKZ29sZGZpc2gvTVMKZ29sZG1pbmUvU00KZ29sZHNtaXRoL00KZ29sZHNtaXRocwpnb2xmL01EUlpHUwpnb2xmZXIvTQpnb2xsaXdvZy9TCmdvbGx5L1NNCmdvbmFkL1NNCmdvbmFkYWwKZ29uZG9sYS9NUwpnb25kb2xpZXIvU00KZ29uZS9aUgpnb25lci9NCmdvbmcvTURHUwpnb25rL1MKZ29ubmEKZ29ub3JyaGVhL00KZ29ub3JyaGVhbApnb256bwpnb28vTQpnb29iZXIvU00KZ29vZC9NWVNQCmdvb2RieWUvTVMKZ29vZGhlYXJ0ZWQKZ29vZGlzaApnb29kbHkvVFIKZ29vZG5lc3MvTQpnb29kbmlnaHQKZ29vZHMvTQpnb29kd2lsbC9NCmdvb2R5L1NNCmdvb2V5Cmdvb2YvTURHUwpnb29mYmFsbC9TTQpnb29maW5lc3MvTQpnb29meS9SUFQKZ29vZ2xlL0RTTUcKZ29vZ2x5L1MKZ29vaWVyCmdvb2llc3QKZ29vay9NUwpnb29uL01TCmdvb3AvTQpnb29zZS9EU01HCmdvb3NlYmVycnkvU00KZ29vc2VidW1wcy9NCmdvb3Nlc3RlcC9TCmdvb3Nlc3RlcHBlZApnb29zZXN0ZXBwaW5nCmdvcGhlci9TTQpnb3JlL01HRFMKZ29yZ2Uncwpnb3JnZS9FRFNHCmdvcmdlb3VzL1lQCmdvcmdlb3VzbmVzcy9NCmdvcmdvbi9TTQpnb3JpbGxhL01TCmdvcmlseQpnb3JpbmVzcy9NCmdvcm1hbmRpemUvRFJTWkcKZ29ybWFuZGl6ZXIvTQpnb3JtbGVzcwpnb3JwL01TCmdvcnNlL00KZ29yeS9SVFAKZ29zaApnb3NoYXdrL01TCmdvc2xpbmcvU00KZ29zcGVsL01TCmdvc3NhbWVyL00KZ29zc2lwL01EUlpHUwpnb3NzaXBlci9NCmdvc3NpcHkKZ290CmdvdGNoYS9TCmdvdGhzCmdvdHRhCmdvdHRlbgpnb3VhY2hlL1MKZ291Z2UvRFJTTVpHCmdvdWdlci9NCmdvdWxhc2gvTVMKZ291cmQvU00KZ291cmRlL01TCmdvdXJtYW5kL1NNCmdvdXJtZXQvU00KZ291dC9NCmdvdXR5L1RSCmdvdgpnb3Zlcm4vREdTQkwKZ292ZXJuYWJsZS9VCmdvdmVybmFuY2UvTQpnb3Zlcm5lZC9VCmdvdmVybmVzcy9NUwpnb3Zlcm5tZW50L01TCmdvdmVybm1lbnRhbApnb3Zlcm5vci9TTQpnb3Zlcm5vcnNoaXAvTQpnb3Z0Cmdvd24vTURHUwpncgpncmFiL01TCmdyYWJiZWQKZ3JhYmJlci9NUwpncmFiYmluZwpncmFiYnkvVFIKZ3JhY2UvRURTTUcKZ3JhY2VmdWwvRVBZCmdyYWNlZnVsbmVzcy9FTQpncmFjZWxlc3MvUFkKZ3JhY2VsZXNzbmVzcy9NCmdyYWNpb3VzL1VZCmdyYWNpb3VzbmVzcy9NCmdyYWNrbGUvTVMKZ3JhZC9NUlpTQgpncmFkYXRlL1hHTkRTCmdyYWRhdGlvbi9DTQpncmFkZSdzCmdyYWRlL0NBRFNHCmdyYWRlZC9VCmdyYWRlci9NCmdyYWRpZW50L01TCmdyYWR1YWwvUFkKZ3JhZHVhbGlzbS9NCmdyYWR1YWxuZXNzL00KZ3JhZHVhdGUvWE1HTkRTCmdyYWR1YXRpb24vTQpncmFmZml0aQpncmFmZml0by9NCmdyYWZ0L1NNRFJaRwpncmFmdGVyL00KZ3JhaGFtL1MKZ3JhaWwKZ3JhaW4vSVNNRApncmFpbmluZXNzL00KZ3JhaW55L1BUUgpncmFtL0tNUwpncmFtbWFyL01TCmdyYW1tYXJpYW4vU00KZ3JhbW1hdGljYWwvVVkKZ3JhbW9waG9uZS9NUwpncmFtcHVzL01TCmdyYW4vUwpncmFuYXJ5L1NNCmdyYW5kL1NNUllQVApncmFuZGFtL01TCmdyYW5kYXVudC9NUwpncmFuZGNoaWxkL00KZ3JhbmRjaGlsZHJlbi9NCmdyYW5kZGFkL1NNCmdyYW5kZGFkZHkvU00KZ3JhbmRkYXVnaHRlci9TTQpncmFuZGVlL01TCmdyYW5kZXVyL00KZ3JhbmRmYXRoZXIvR01EWVMKZ3JhbmRpbG9xdWVuY2UvTQpncmFuZGlsb3F1ZW50CmdyYW5kaW9zZS9ZCmdyYW5kaW9zaXR5L00KZ3JhbmRtYS9NUwpncmFuZG1vdGhlci9NWVMKZ3JhbmRuZXBoZXcvTVMKZ3JhbmRuZXNzL00KZ3JhbmRuaWVjZS9NUwpncmFuZHBhL01TCmdyYW5kcGFyZW50L01TCmdyYW5kc29uL01TCmdyYW5kc3RhbmQvU0dNRApncmFuZHVuY2xlL1NNCmdyYW5nZS9TTQpncmFuaXRlL00KZ3Jhbml0aWMKZ3Jhbm55L1NNCmdyYW5vbGEvTQpncmFudC9TTURSWkcKZ3JhbnRlZS9NUwpncmFudGVyL00KZ3JhbnRzbWFuc2hpcC9NCmdyYW51bGFyCmdyYW51bGFyaXR5L00KZ3JhbnVsYXRlL0dORFMKZ3JhbnVsYXRpb24vTQpncmFudWxlL01TCmdyYXBlL1NNCmdyYXBlZnJ1aXQvTVMKZ3JhcGVzaG90L00KZ3JhcGV2aW5lL1NNCmdyYXBoL01ERwpncmFwaGljL01TCmdyYXBoaWNhbC9ZCmdyYXBoaXRlL00KZ3JhcGhvbG9naXN0L01TCmdyYXBob2xvZ3kvTQpncmFwaHMKZ3JhcG5lbC9NUwpncmFwcGxlL01HRFMKZ3Jhc3AvU01EQkcKZ3Jhc3MvTURTRwpncmFzc2hvcHBlci9NUwpncmFzc2xhbmQvTVMKZ3Jhc3Nyb290cwpncmFzc3kvVFIKZ3JhdGUvRFJTTVpHSgpncmF0ZWZ1bC9VWVAKZ3JhdGVmdWxuZXNzL1VNCmdyYXRlci9NCmdyYXRpZmljYXRpb24vTQpncmF0aWZ5L0dOWERTCmdyYXRpZnlpbmcvWQpncmF0aW4vUwpncmF0aW5nL01ZCmdyYXRpcwpncmF0aXR1ZGUvSU0KZ3JhdHVpdG91cy9ZUApncmF0dWl0b3VzbmVzcy9NCmdyYXR1aXR5L1NNCmdyYXZhbWVuL01TCmdyYXZlL0RSU01ZVEdQCmdyYXZlZGlnZ2VyL1NNCmdyYXZlbC9TR01EWQpncmF2ZW4KZ3JhdmVuZXNzL00KZ3JhdmVzaWRlL01TCmdyYXZlc3RvbmUvU00KZ3JhdmV5YXJkL01TCmdyYXZpZApncmF2aW1ldGVyL01TCmdyYXZpdGFzCmdyYXZpdGF0ZS9HTkRTCmdyYXZpdGF0aW9uL00KZ3Jhdml0YXRpb25hbApncmF2aXR5L00KZ3JhdnkvU00KZ3JheS9NRFJUR1NQCmdyYXliZWFyZC9TTQpncmF5aXNoCmdyYXluZXNzL00KZ3JhemUvRFJTTVpHCmdyYXplci9NCmdyZWFzZS9EUlNNWkcKZ3JlYXNlcGFpbnQvTQpncmVhc2lseQpncmVhc2luZXNzL00KZ3JlYXN5L1BUUgpncmVhdC9TTVJZUFQKZ3JlYXRjb2F0L1NNCmdyZWF0aGVhcnRlZApncmVhdG5lc3MvTQpncmViZS9TTQpncmVlZC9NCmdyZWVkaWx5CmdyZWVkaW5lc3MvTQpncmVlZHkvUFRSCmdyZWVuL0dQU01EUllUCmdyZWVuYmFjay9NUwpncmVlbmJlbHQvTVMKZ3JlZW5lcnkvTQpncmVlbmZpZWxkCmdyZWVuZmx5L1MKZ3JlZW5nYWdlL01TCmdyZWVuZ3JvY2VyL1NNCmdyZWVuaG9ybi9TTQpncmVlbmhvdXNlL1NNCmdyZWVuaXNoCmdyZWVubWFpbC9NCmdyZWVubmVzcy9NCmdyZWVucm9vbS9TTQpncmVlbnN3YXJkL00KZ3JlZW53b29kL00KZ3JlZXQvWkdKU0RSCmdyZWV0ZXIvTQpncmVldGluZy9NCmdyZWdhcmlvdXMvUFkKZ3JlZ2FyaW91c25lc3MvTQpncmVtbGluL1NNCmdyZW5hZGUvU00KZ3JlbmFkaWVyL01TCmdyZW5hZGluZS9NCmdyZXAvUwpncmVwcGVkCmdyZXBwaW5nCmdyZXcvQQpncmV5aG91bmQvU00KZ3JpYmJsZS9TCmdyaWQvTVMKZ3JpZGRsZS9TTQpncmlkZGxlY2FrZS9TTQpncmlkaXJvbi9TTQpncmlkbG9jay9TTUQKZ3JpZWYvU00KZ3JpZXZhbmNlL01TCmdyaWV2ZS9aR0RSUwpncmlldmVyL00KZ3JpZXZvdXMvUFkKZ3JpZXZvdXNuZXNzL00KZ3JpZmZpbi9TTQpncmlmZm9uL1NNCmdyaWxsL1NHTURKCmdyaWxsZS9NUwpncmltL0RZUEcKZ3JpbWFjZS9EU01HCmdyaW1lL1NNCmdyaW1pbmVzcy9NCmdyaW1tZXIKZ3JpbW1lc3QKZ3JpbW5lc3MvTQpncmlteS9UUlAKZ3Jpbi9NUwpncmluZC9TWkdNUkoKZ3JpbmRlci9NCmdyaW5kc3RvbmUvTVMKZ3JpbmdvL01TCmdyaW5uZWQKZ3Jpbm5pbmcKZ3JpcC9NRFJTWkcKZ3JpcGUvU00KZ3JpcGVyL00KZ3JpcHBlL01aR0RSCmdyaXBwZXIvTQpncmlzbGluZXNzL00KZ3Jpc2x5L1JUUApncmlzdC9NWQpncmlzdGxlL00KZ3Jpc3RtaWxsL01TCmdyaXQvTVMKZ3JpdHMvTQpncml0dGVkCmdyaXR0ZXIvU00KZ3JpdHRpbmVzcy9NCmdyaXR0aW5nCmdyaXR0eS9SVFAKZ3JpenpsZS9EU0cKZ3JpenpseS9UUlNNCmdyb2FuL1NHTUQKZ3JvYXQvU00KZ3JvY2VyL01TCmdyb2NlcnkvU00KZ3JvZy9NCmdyb2dnaWx5Cmdyb2dnaW5lc3MvTQpncm9nZ3kvUFJUCmdyb2luL1NNCmdyb2svUwpncm9ra2VkCmdyb2traW5nCmdyb21tZXQvU00KZ3Jvb20vU1pHTURSCmdyb29tZXIvTQpncm9vbWluZy9NCmdyb29tc21hbi9NCmdyb29tc21lbgpncm9vdmUvTUdEUwpncm9vdnkvUlQKZ3JvcGUvRFJTTVpHCmdyb3Blci9NCmdyb3NiZWFrL01TCmdyb3NncmFpbi9NCmdyb3NzL1BUR01EUlNZCmdyb3NzbmVzcy9NCmdyb3Rlc3F1ZS9TUE1ZCmdyb3Rlc3F1ZW5lc3MvTQpncm90dG8vTQpncm90dG9lcwpncm90dHkvVFIKZ3JvdWNoL0dNRFMKZ3JvdWNoaWx5Cmdyb3VjaGluZXNzL00KZ3JvdWNoeS9SVFAKZ3JvdW5kL1pHTURSSlMKZ3JvdW5kYnJlYWtpbmcvTVMKZ3JvdW5kY2xvdGgKZ3JvdW5kY2xvdGhzCmdyb3VuZGVyL00KZ3JvdW5kaG9nL01TCmdyb3VuZGluZy9NCmdyb3VuZGxlc3MvWQpncm91bmRudXQvTVMKZ3JvdW5kc2hlZXQvUwpncm91bmRza2VlcGVyL1MKZ3JvdW5kc21hbgpncm91bmRzbWVuCmdyb3VuZHN3ZWxsL1NNCmdyb3VuZHdhdGVyL00KZ3JvdW5kd29yay9NCmdyb3VwL0pTWkdNRFIKZ3JvdXBlci9NCmdyb3VwaWUvTVMKZ3JvdXBpbmcvTQpncm91cHdhcmUvTQpncm91c2UvTVpHRFJTCmdyb3VzZXIvTQpncm91dC9TR01ECmdyb3ZlL1NNCmdyb3ZlbC9aR0RSUwpncm92ZWxlci9NCmdyb3ZlbGxlZApncm92ZWxsaW5nCmdyb3cvQUhTRwpncm93ZXIvTVMKZ3Jvd2luZy9JCmdyb3dsL1NaR01EUgpncm93bGVyL00KZ3Jvd24vQUkKZ3Jvd251cC9NUwpncm93dGgvQU0KZ3Jvd3RocwpncnViL01TCmdydWJiZWQKZ3J1YmJlci9NUwpncnViYmlseQpncnViYmluZXNzL00KZ3J1YmJpbmcKZ3J1YmJ5L1RSUApncnVic3Rha2UvTQpncnVkZ2UvTUdEUwpncnVkZ2luZy9ZCmdydWUvUwpncnVlbC9HSk0KZ3J1ZWxpbmcvWQpncnVlc29tZS9SWVRQCmdydWVzb21lbmVzcy9NCmdydWZmL1RQUlkKZ3J1ZmZuZXNzL00KZ3J1bWJsZS9EUlNNWkdKCmdydW1ibGVyL00KZ3J1bXAvU00KZ3J1bXBpbHkKZ3J1bXBpbmVzcy9NCmdydW1weS9QUlQKZ3J1bmdlL01TCmdydW5neS9SVApncnVuaW9uL1NNCmdydW50L1NHTUQKZ3QKZ3VhY2Ftb2xlL00KZ3VhbmluZS9NCmd1YW5vL00KZ3VhcmFuaS9NUwpndWFyYW50ZWUvTURTCmd1YXJhbnRlZWluZwpndWFyYW50b3IvTVMKZ3VhcmFudHkvR0RTTQpndWFyZC9TWkdNRFIKZ3VhcmRlZC9ZCmd1YXJkZXIvTQpndWFyZGhvdXNlL1NNCmd1YXJkaWFuL1NNCmd1YXJkaWFuc2hpcC9NCmd1YXJkcmFpbC9TTQpndWFyZHJvb20vU00KZ3VhcmRzbWFuL00KZ3VhcmRzbWVuCmd1YXZhL1NNCmd1YmVybmF0b3JpYWwKZ3VlcnJpbGxhL1NNCmd1ZXNzL1pHQk1EUlMKZ3Vlc3Nlci9NCmd1ZXNzdGltYXRlL0RTTUcKZ3Vlc3N3b3JrL00KZ3Vlc3QvU0dNRApndWVzdGJvb2svU00KZ3Vlc3Rob3VzZS9TCmd1ZXN0cm9vbS9TCmd1ZmYvTQpndWZmYXcvTURHUwpndWlkYW5jZS9NCmd1aWRlL0RSU01aRwpndWlkZWJvb2svU00KZ3VpZGVkL1UKZ3VpZGVsaW5lL1NNCmd1aWRlcG9zdC9TTQpndWlkZXIvTQpndWlsZC9TWk1SCmd1aWxkZXIvTQpndWlsZGhhbGwvTVMKZ3VpbGUvTQpndWlsZWZ1bApndWlsZWxlc3MvWVAKZ3VpbGVsZXNzbmVzcy9NCmd1aWxsZW1vdC9TCmd1aWxsb3RpbmUvRFNNRwpndWlsdC9NCmd1aWx0aWx5Cmd1aWx0aW5lc3MvTQpndWlsdGxlc3MKZ3VpbHR5L1BSVApndWluZWEvTVMKZ3Vpc2UvRVNNCmd1aXRhci9NUwpndWl0YXJpc3QvU00KZ3VsYWcvU00KZ3VsY2gvTVMKZ3VsZGVuL01TCmd1bGYvTVMKZ3VsbC9NRFNHCmd1bGxldC9NUwpndWxsaWJpbGl0eS9NCmd1bGxpYmxlCmd1bGx5L1NNCmd1bHAvTURSU1pHCmd1bHBlci9NCmd1bS9TTQpndW1iYWxsL1MKZ3VtYm8vU00KZ3VtYm9pbC9TTQpndW1ib290L1MKZ3VtZHJvcC9TTQpndW1tZWQKZ3VtbWluZwpndW1teS9UUgpndW1wdGlvbi9NCmd1bXNob2UvTURTCmd1bXNob2VpbmcKZ3VuL1NNCmd1bmJvYXQvU00KZ3VuZmlnaHQvTVJaUwpndW5maWdodGVyL00KZ3VuZmlyZS9NCmd1bmdlCmd1bmd5Cmd1bmsvTQpndW5reQpndW5tYW4vTQpndW5tZW4KZ3VubWV0YWwvTQpndW5uZWQKZ3VubmVsL01TCmd1bm5lci9NUwpndW5uZXJ5L00KZ3VubmluZwpndW5ueS9NCmd1bm55c2Fjay9NUwpndW5wb2ludC9NCmd1bnBvd2Rlci9NCmd1bnJ1bm5lci9NUwpndW5ydW5uaW5nL00KZ3Vuc2hpcC9NUwpndW5zaG90L01TCmd1bnNsaW5nZXIvU00KZ3Vuc21pdGgvTQpndW5zbWl0aHMKZ3Vud2FsZS9NUwpndXBweS9TTQpndXJnbGUvTUdEUwpndXJuZXkvTVMKZ3VydS9NUwpndXNoL01EUlNaRwpndXNoZXIvTQpndXNoaW5nL1kKZ3VzaHkvVFIKZ3Vzc2V0L01TREcKZ3Vzc3kvRFNHCmd1c3QvRU1EU0cKZ3VzdGF0b3J5Cmd1c3RpbHkKZ3VzdG8vTQpndXN0eS9SVApndXQvU00KZ3V0bGVzcy9QCmd1dGxlc3NuZXNzL00KZ3V0c3kvUlQKZ3V0dGVkCmd1dHRlci9TTURHCmd1dHRlcnNuaXBlL01TCmd1dHRpbmcKZ3V0dHVyYWwvTVMKZ3V0dHkvUlQKZ3V2L1MKZ3V2bm9yL1MKZ3V5L1NHTUQKZ3V6emxlL0RSU1pHCmd1enpsZXIvTQpneW0vU00KZ3lta2hhbmEvTVMKZ3ltbmFzaXVtL01TCmd5bW5hc3QvTVMKZ3ltbmFzdGljL1MKZ3ltbmFzdGljYWxseQpneW1uYXN0aWNzL00KZ3ltbm9zcGVybS9TTQpneW1zbGlwL1MKZ3luZWNvbG9naWMKZ3luZWNvbG9naWNhbApneW5lY29sb2dpc3QvU00KZ3luZWNvbG9neS9NCmd5cC9TTQpneXBwZWQKZ3lwcGVyL1NNCmd5cHBpbmcKZ3lwc3Rlci9TTQpneXBzdW0vTQpneXBzeS9TTQpneXJhdGUvRFNHTlgKZ3lyYXRpb24vTQpneXJhdG9yL1NNCmd5cmZhbGNvbi9NUwpneXJvL01TCmd5cm9zY29wZS9NUwpneXJvc2NvcGljCmd5dmUvTUdEUwpoJ20KaC9OUlNYWkdWSgpoYS9TSApoYWJlcmRhc2hlci9TTQpoYWJlcmRhc2hlcnkvU00KaGFiaWxpbWVudC9TTQpoYWJpdCdzCmhhYml0L0lTQgpoYWJpdGFiaWxpdHkvTQpoYWJpdGF0L1NNCmhhYml0YXRpb24vTVMKaGFiaXR1YWwvWVAKaGFiaXR1YWxuZXNzL00KaGFiaXR1YXRlL0dORFMKaGFiaXR1YXRpb24vTQpoYWJpdHVlL1NNCmhhY2llbmRhL1NNCmhhY2svTURSWkdTCmhhY2tlci9NCmhhY2tpbmcvTQpoYWNraXNoCmhhY2tsZS9NUwpoYWNrbmV5L1NNREcKaGFja3Nhdy9TTQpoYWNrdGl2aXN0L01TCmhhY2t3b3JrL00KaGFkCmhhZGRvY2svU00KaGFkbid0CmhhZHN0CmhhZm5pdW0vTQpoYWZ0L01TCmhhZy9TTQpoYWdnYXJkL1lQCmhhZ2dhcmRuZXNzL00KaGFnZ2lzL01TCmhhZ2dpc2gKaGFnZ2xlL01aR0RSUwpoYWdnbGVyL00KaGFnaW9ncmFwaGVyL1NNCmhhZ2lvZ3JhcGh5L1NNCmhhaG5pdW0vTQpoYWlrdS9NCmhhaWwvTURHUwpoYWlsc3RvbmUvTVMKaGFpbHN0b3JtL01TCmhhaXIvTURTCmhhaXJiYWxsL01TCmhhaXJiYW5kL1MKaGFpcmJyZWFkdGgvTQpoYWlyYnJlYWR0aHMKaGFpcmJydXNoL01TCmhhaXJjbG90aC9NCmhhaXJjdXQvU00KaGFpcmRvL01TCmhhaXJkcmVzc2VyL1NNCmhhaXJkcmVzc2luZy9NCmhhaXJkcnllci9NUwpoYWlyZ3JpcC9TCmhhaXJpbmVzcy9NCmhhaXJsZXNzCmhhaXJsaWtlCmhhaXJsaW5lL1NNCmhhaXJuZXQvU00KaGFpcnBpZWNlL01TCmhhaXJwaW4vU00KaGFpcnNicmVhZHRoL00KaGFpcnNicmVhZHRocwpoYWlyc3BsaXR0ZXIvU00KaGFpcnNwbGl0dGluZy9NCmhhaXJzcHJheS9TCmhhaXJzcHJpbmcvTVMKaGFpcnN0eWxlL01TCmhhaXJzdHlsaXN0L1NNCmhhaXJ5L1RSUApoYWoKaGFqai9NCmhhamplcwpoYWpqaS9TTQpoYWtlL01TCmhhbGFsL00KaGFsYmVyZC9TTQpoYWxjeW9uCmhhbGUvSVRHRFJTCmhhbGYvTQpoYWxmYmFjay9TTQpoYWxmaGVhcnRlZC9QWQpoYWxmaGVhcnRlZG5lc3MvTQpoYWxmcGVuY2UKaGFsZnBlbm55L1NNCmhhbGZ0aW1lL01TCmhhbGZ0b25lL01TCmhhbGZ3YXkKaGFsZndpdC9TTQpoYWxpYnV0L1NNCmhhbGl0ZS9NCmhhbGl0b3Npcy9NCmhhbGwvTVMKaGFsbGVsdWphaC9NCmhhbGxlbHVqYWhzCmhhbGxtYXJrL0dNRFMKaGFsbG9vL01TRwpoYWxsb3cvRFNHCmhhbGxvd2VkL1UKaGFsbHVjaW5hdGUvR05YRFMKaGFsbHVjaW5hdGlvbi9NCmhhbGx1Y2luYXRvcnkKaGFsbHVjaW5vZ2VuL1NNCmhhbGx1Y2lub2dlbmljL1NNCmhhbGx3YXkvU00KaGFsby9NREdTCmhhbG9nZW4vU00KaGFsb24KaGFsdC9NRFJaR1MKaGFsdGVyL0dNRApoYWx0ZXJuZWNrL1MKaGFsdGluZy9ZCmhhbHZlL0RTRwpoYWx5YXJkL01TCmhhbS9TTQpoYW1idXJnL1NaTVIKaGFtYnVyZ2VyL00KaGFtbGV0L01TCmhhbW1lZApoYW1tZXIvTURSU0paRwpoYW1tZXJlci9NCmhhbW1lcmhlYWQvU00KaGFtbWVybG9jay9TTQpoYW1tZXJ0b2UvTVMKaGFtbWluZwpoYW1tb2NrL1NNCmhhbW15L1RSCmhhbXBlci9HTURTCmhhbXBlcmVkL1UKaGFtc3Rlci9NUwpoYW1zdHJpbmcvR1NNCmhhbXN0cnVuZwpoYW5kJ3MKaGFuZC9VREdTCmhhbmRiYWcvU00KaGFuZGJhbGwvTVMKaGFuZGJhcnJvdy9TTQpoYW5kYmlsbC9NUwpoYW5kYm9vay9NUwpoYW5kYnJha2UvUwpoYW5kY2FyL1NNCmhhbmRjYXJ0L01TCmhhbmRjbGFzcC9NUwpoYW5kY3JhZnQvU01ERwpoYW5kY3VmZi9NREdTCmhhbmRlZC9QCmhhbmRmdWwvU00KaGFuZGd1bi9TTQpoYW5kaGVsZC9NUwpoYW5kaG9sZC9NUwpoYW5kaWNhcC9NUwpoYW5kaWNhcHBlZApoYW5kaWNhcHBlci9NUwpoYW5kaWNhcHBpbmcKaGFuZGljcmFmdC9NUwpoYW5kaWx5CmhhbmRpbmVzcy9NCmhhbmRpd29yay9NCmhhbmRrZXJjaGllZi9NUwpoYW5kbGUvTVpHRFJTCmhhbmRsZWJhci9NUwpoYW5kbGVyL00KaGFuZG1hZGUKaGFuZG1haWQvWE1OUwpoYW5kbWFpZGVuL00KaGFuZG91dC9TTQpoYW5kb3Zlci9TCmhhbmRwaWNrL0dEUwpoYW5kcmFpbC9NUwpoYW5kc2F3L1NNCmhhbmRzZXQvU00KaGFuZHNoYWtlL0pNR1MKaGFuZHNvbWUvUFlUUgpoYW5kc29tZW5lc3MvTQpoYW5kc3ByaW5nL01TCmhhbmRzdGFuZC9TTQpoYW5kd29yay9NCmhhbmR3b3ZlbgpoYW5kd3JpdGluZy9NCmhhbmR3cml0dGVuCmhhbmR5L1VUUgpoYW5keW1hbi9NCmhhbmR5bWVuCmhhbmcvTURSSlpHUwpoYW5nYXIvTVMKaGFuZ2RvZwpoYW5nZXIvTQpoYW5naW5nL00KaGFuZ21hbi9NCmhhbmdtZW4KaGFuZ25haWwvTVMKaGFuZ291dC9TTQpoYW5nb3Zlci9NUwpoYW5ndXAvTVMKaGFuay9NUlpTCmhhbmtlci9HSkQKaGFua2VyaW5nL00KaGFua2llL01TCmhhbnNvbS9NUwpoYXAvTVkKaGFwaGF6YXJkL1lQCmhhcGhhemFyZG5lc3MvTQpoYXBsZXNzL1lQCmhhcGxlc3NuZXNzL00KaGFwbG9pZC9NUwpoYXBwZW4vU0RHSgpoYXBwZW5pbmcvTQpoYXBwZW5zdGFuY2UvU00KaGFwcGlseS9VCmhhcHBpbmVzcy9VTQpoYXBweS9VUlRQCmhhcmFuZ3VlL01HRFMKaGFyYXNzL0xaR0RSUwpoYXJhc3Nlci9NCmhhcmFzc21lbnQvTQpoYXJiaW5nZXIvU00KaGFyYm9yL0dNRFMKaGFyYm9ybWFzdGVyL1MKaGFyZC9OUllYVFAKaGFyZGJhY2svTVMKaGFyZGJhbGwvTQpoYXJkYm9hcmQvTQpoYXJkYm91bmQKaGFyZGNvcmUKaGFyZGNvdmVyL1NNCmhhcmRlbi9aR0RSCmhhcmRlbmVkL1UKaGFyZGVuZXIvTQpoYXJkaGF0L01TCmhhcmRoZWFkZWQvUFkKaGFyZGhlYWRlZG5lc3MvTQpoYXJkaGVhcnRlZC9QWQpoYXJkaGVhcnRlZG5lc3MvTQpoYXJkaWhvb2QvTQpoYXJkaWx5CmhhcmRpbmVzcy9NCmhhcmRsaW5lci9NUwpoYXJkbmVzcy9NCmhhcmRzY3JhYmJsZQpoYXJkc2hpcC9TTQpoYXJkc3RhbmQvU00KaGFyZHRhY2svTQpoYXJkdG9wL1NNCmhhcmR3YXJlL00KaGFyZHdpcmVkCmhhcmR3b29kL1NNCmhhcmR3b3JraW5nCmhhcmR5L1BUUgpoYXJlL01HRFMKaGFyZWJlbGwvTVMKaGFyZWJyYWluZWQKaGFyZWxpcC9TTQpoYXJlbGlwcGVkCmhhcmVtL1NNCmhhcmljb3QvUwpoYXJrL0RHUwpoYXJsZXF1aW4vU00KaGFybG90L1NNCmhhcmxvdHJ5L00KaGFybS9NREdTCmhhcm1lZC9VCmhhcm1mdWwvWVAKaGFybWZ1bG5lc3MvTQpoYXJtbGVzcy9QWQpoYXJtbGVzc25lc3MvTQpoYXJtb25pYy9TTQpoYXJtb25pY2EvTVMKaGFybW9uaWNhbGx5Cmhhcm1vbmllcwpoYXJtb25pb3VzL1BZCmhhcm1vbmlvdXNuZXNzL00KaGFybW9uaXVtL01TCmhhcm1vbml6YXRpb24vTQpoYXJtb25pemUvWkdEUlMKaGFybW9uaXplci9NCmhhcm1vbnkvRU0KaGFybmVzcydzCmhhcm5lc3MvVURTRwpoYXJwL01ER1MKaGFycGlzdC9TTQpoYXJwb29uL1pHU01EUgpoYXJwb29uZXIvTQpoYXJwc2ljaG9yZC9NUwpoYXJwc2ljaG9yZGlzdC9TTQpoYXJweS9TTQpoYXJyaWRhbi9NUwpoYXJyaWVyL00KaGFycm93L1NNREcKaGFycnVtcGgvR0QKaGFycnVtcGhzCmhhcnJ5L0RSU1pHCmhhcnNoL1JZVFAKaGFyc2huZXNzL00KaGFydC9NUwpoYXJ2ZXN0L1NNRFJaRwpoYXJ2ZXN0ZWQvVQpoYXJ2ZXN0ZXIvTQpoYXNoL0FNRFNHCmhhc2hpc2gvTQpoYXNodGFnL1NNCmhhc24ndApoYXNwL01TCmhhc3NsZS9EU01HCmhhc3NvY2svU00KaGFzdC9ETlhHCmhhc3RlL1NNCmhhc3Rlbi9ERwpoYXN0aWx5Cmhhc3RpbmVzcy9NCmhhc3R5L1JUUApoYXQvWkdTTURSCmhhdGJhbmQvUwpoYXRib3gvTVMKaGF0Y2gvTURTRwpoYXRjaGJhY2svTVMKaGF0Y2hlY2svU00KaGF0Y2hlZC9VCmhhdGNoZXJ5L1NNCmhhdGNoZXQvU00KaGF0Y2hpbmcvTQpoYXRjaHdheS9TTQpoYXRlL01TCmhhdGVmdWwvUFkKaGF0ZWZ1bG5lc3MvTQpoYXRlbW9uZ2VyL01TCmhhdGVyL00KaGF0cGluL1MKaGF0cmVkL1NNCmhhdHN0YW5kL1MKaGF0dGVkCmhhdHRlci9TTQpoYXR0aW5nCmhhdWJlcmsvU00KaGF1Z2h0aWx5CmhhdWdodGluZXNzL00KaGF1Z2h0eS9QUlQKaGF1bC9NRFJaR1MKaGF1bGFnZS9NCmhhdWxlci9NCmhhdWxpZXIvUwpoYXVuY2gvTVMKaGF1bnQvU01EUlpHCmhhdW50ZXIvTQpoYXVudGluZy9ZCmhhdXRldXIvTQpoYXZlL01HUwpoYXZlbid0CmhhdmVuL1NNCmhhdmVyc2Fjay9TTQpoYXZvYy9NCmhhdy9HU01ECmhhd2svTURSWkdTCmhhd2tlci9NCmhhd2tpc2gvUApoYXdraXNobmVzcy9NCmhhd3Nlci9TTQpoYXd0aG9ybi9NUwpoYXkvR1NNRApoYXljb2NrL1NNCmhheWxvZnQvU00KaGF5bWFraW5nCmhheW1vdy9TTQpoYXlyaWNrL01TCmhheXJpZGUvTVMKaGF5c2VlZC9NUwpoYXlzdGFjay9TTQpoYXl3aXJlCmhhemFyZC9TTURHCmhhemFyZG91cy9ZCmhhemUvTVpHSkRSUwpoYXplbC9TTQpoYXplbG51dC9NUwpoYXplci9NCmhhemlseQpoYXppbmVzcy9NCmhhemluZy9NCmhhem1hdApoYXp5L1JUUApoZHFycwpoZSdkCmhlJ2xsCmhlL00KaGVhZC9NRFJaR0pTCmhlYWRhY2hlL01TCmhlYWRiYW5kL01TCmhlYWRiYW5nZXIvUwpoZWFkYmFuZ2luZwpoZWFkYm9hcmQvU00KaGVhZGJ1dHQvRFNHCmhlYWRjYXNlL1MKaGVhZGNoZWVzZQpoZWFkY291bnQvUwpoZWFkZHJlc3MvTVMKaGVhZGVyL00KaGVhZGZpcnN0CmhlYWRnZWFyL00KaGVhZGh1bnQvRFJTWkcKaGVhZGh1bnRlci9NCmhlYWRodW50aW5nL00KaGVhZGlseQpoZWFkaW5lc3MvTQpoZWFkaW5nL00KaGVhZGxhbXAvTVMKaGVhZGxhbmQvTVMKaGVhZGxlc3MKaGVhZGxpZ2h0L01TCmhlYWRsaW5lL01aR0RSUwpoZWFkbGluZXIvTQpoZWFkbG9jay9NUwpoZWFkbG9uZwpoZWFkbWFuL00KaGVhZG1hc3Rlci9TTQpoZWFkbWVuCmhlYWRtaXN0cmVzcy9NUwpoZWFkcGhvbmUvTVMKaGVhZHBpZWNlL01TCmhlYWRwaW4vU00KaGVhZHF1YXJ0ZXIvU0RHCmhlYWRxdWFydGVycy9NCmhlYWRyZXN0L01TCmhlYWRyb29tL00KaGVhZHNjYXJmCmhlYWRzY2FydmVzCmhlYWRzZXQvU00KaGVhZHNoaXAvU00KaGVhZHNocmlua2VyL1NNCmhlYWRzbWFuL00KaGVhZHNtZW4KaGVhZHN0YWxsL1NNCmhlYWRzdGFuZC9TTQpoZWFkc3RvbmUvU00KaGVhZHN0cm9uZwpoZWFkdGVhY2hlci9TCmhlYWR3YWl0ZXIvU00KaGVhZHdhdGVycy9NCmhlYWR3YXkvTQpoZWFkd2luZC9TTQpoZWFkd29yZC9TTQpoZWFkeS9SVFAKaGVhbC9EUkhaR1MKaGVhbGVkL1UKaGVhbGVyL00KaGVhbHRoL00KaGVhbHRoY2FyZQpoZWFsdGhmdWwvUFkKaGVhbHRoZnVsbmVzcy9NCmhlYWx0aGlseS9VCmhlYWx0aGluZXNzL1VNCmhlYWx0aHkvVVRSUApoZWFwL01ER1MKaGVhci9BSEdKUwpoZWFyZC9BVQpoZWFyZXIvU00KaGVhcmluZy9BTQpoZWFya2VuL1NHRApoZWFyc2F5L00KaGVhcnNlJ3MKaGVhcnNlL0FTCmhlYXJ0L1NNCmhlYXJ0YWNoZS9NUwpoZWFydGJlYXQvTVMKaGVhcnRicmVhay9TTUcKaGVhcnRicm9rZW4KaGVhcnRidXJuL00KaGVhcnRlbi9FU0dECmhlYXJ0ZmVsdApoZWFydGgvTQpoZWFydGhydWcvUwpoZWFydGhzCmhlYXJ0aHN0b25lL1NNCmhlYXJ0aWx5CmhlYXJ0aW5lc3MvTQpoZWFydGxhbmQvTVMKaGVhcnRsZXNzL1BZCmhlYXJ0bGVzc25lc3MvTQpoZWFydHJlbmRpbmcvWQpoZWFydHNpY2svUApoZWFydHNpY2tuZXNzL00KaGVhcnRzdHJpbmdzL00KaGVhcnR0aHJvYi9NUwpoZWFydHdhcm1pbmcKaGVhcnR3b29kL00KaGVhcnR5L1JTTVBUCmhlYXQncwpoZWF0L0FER1MKaGVhdGVkL1UKaGVhdGVkbHkKaGVhdGVyL1NNCmhlYXRoL01OUlgKaGVhdGhlbi9NCmhlYXRoZW5kb20vTQpoZWF0aGVuaXNoCmhlYXRoZW5pc20vTQpoZWF0aGVyL00KaGVhdGhzCmhlYXRpbmcvTQpoZWF0cHJvb2YKaGVhdHN0cm9rZS9NCmhlYXR3YXZlL1MKaGVhdmUvRFJTTVpHCmhlYXZlbi9TTVkKaGVhdmVubHkvVFIKaGVhdmVucy9NCmhlYXZlbndhcmQvUwpoZWF2ZXIvTQpoZWF2aWx5CmhlYXZpbmVzcy9NCmhlYXZ5L1JTTVRQCmhlYXZ5aGVhcnRlZApoZWF2eXNldApoZWF2eXdlaWdodC9NUwpoZWNrL00KaGVja2xlL0RSU01aRwpoZWNrbGVyL00KaGVja2xpbmcvTQpoZWN0YXJlL1NNCmhlY3RpYwpoZWN0aWNhbGx5CmhlY3RvZ3JhbS9TTQpoZWN0b21ldGVyL01TCmhlY3Rvci9TTURHCmhlZGdlL0RSU01aRwpoZWRnZWhvZy9NUwpoZWRnZWhvcC9TCmhlZGdlaG9wcGVkCmhlZGdlaG9wcGluZwpoZWRnZXIvTQpoZWRnZXJvdy9TTQpoZWRvbmlzbS9NCmhlZG9uaXN0L01TCmhlZG9uaXN0aWMKaGVlZC9NREdTCmhlZWRlZC9VCmhlZWRmdWwvWQpoZWVkbGVzcy9QWQpoZWVkbGVzc25lc3MvTQpoZWVoYXcvU01ERwpoZWVsL01ER1MKaGVlbGxlc3MKaGVmdC9NREdTCmhlZnRpbHkKaGVmdGluZXNzL00KaGVmdHkvUFJUCmhlZ2Vtb25pYwpoZWdlbW9ueS9NCmhlZ2lyYS9TTQpoZWlmZXIvU00KaGVpZ2h0L1hTTU4KaGVpZ2h0ZW4vREcKaGVpbm91cy9ZUApoZWlub3VzbmVzcy9NCmhlaXIvTVMKaGVpcmVzcy9NUwpoZWlybG9vbS9TTQpoZWlzdC9TTURHCmhlbGQKaGVsaWNhbApoZWxpY2VzCmhlbGljb3B0ZXIvU0dNRApoZWxpb2NlbnRyaWMKaGVsaW90cm9wZS9TTQpoZWxpcGFkL1MKaGVsaXBvcnQvTVMKaGVsaXVtL00KaGVsaXgvTQpoZWxsL00KaGVsbGJlbnQKaGVsbGNhdC9NUwpoZWxsZWJvcmUvTQpoZWxsZmlyZQpoZWxsaG9sZS9NUwpoZWxsaW9uL01TCmhlbGxpc2gvWVAKaGVsbGlzaG5lc3MvTQpoZWxsby9TTQpoZWxsdXZhCmhlbG0vTVMKaGVsbWV0L1NNRApoZWxtc21hbi9NCmhlbG1zbWVuCmhlbG90L1NNCmhlbHAvTURSWkdTSgpoZWxwZXIvTQpoZWxwZnVsL1VZCmhlbHBmdWxuZXNzL00KaGVscGluZy9NCmhlbHBsZXNzL1BZCmhlbHBsZXNzbmVzcy9NCmhlbHBsaW5lL1NNCmhlbHBtYXRlL1NNCmhlbHZlL1NNCmhlbS9TTQpoZW1hdGl0ZS9NCmhlbWF0b2xvZ2ljCmhlbWF0b2xvZ2ljYWwKaGVtYXRvbG9naXN0L01TCmhlbWF0b2xvZ3kvTQpoZW1lL00KaGVtaXNwaGVyZS9TTQpoZW1pc3BoZXJpYwpoZW1pc3BoZXJpY2FsCmhlbWxpbmUvU00KaGVtbG9jay9TTQpoZW1tZWQKaGVtbWVyL1NNCmhlbW1pbmcKaGVtb2dsb2Jpbi9NCmhlbW9waGlsaWEvTQpoZW1vcGhpbGlhYy9NUwpoZW1vcnJoYWdlL01HRFMKaGVtb3JyaGFnaWMKaGVtb3JyaG9pZC9NUwpoZW1vc3RhdC9NUwpoZW1wL01OCmhlbXN0aXRjaC9NRFNHCmhlbi9NCmhlbmNlCmhlbmNlZm9ydGgKaGVuY2Vmb3J3YXJkCmhlbmNobWFuL00KaGVuY2htZW4KaGVubmEvU01ERwpoZW5wZWNrL0dTRApoZXAKaGVwYXJpbi9NCmhlcGF0aWMKaGVwYXRpdGlzL00KaGVwYXRvY3l0ZS9TCmhlcHBlcgpoZXBwZXN0CmhlcHRhZ29uL01TCmhlcHRhZ29uYWwKaGVwdGF0aGxvbi9TTQpoZXJhbGQvU01ERwpoZXJhbGRlZC9VCmhlcmFsZGljCmhlcmFsZHJ5L00KaGVyYi9NUwpoZXJiYWNlb3VzCmhlcmJhZ2UvTQpoZXJiYWwvUwpoZXJiYWxpc3QvTVMKaGVyYmljaWRhbApoZXJiaWNpZGUvTVMKaGVyYml2b3JlL1NNCmhlcmJpdm9yb3VzCmhlcmN1bGVhbgpoZXJkL01EUlpHUwpoZXJkZXIvTQpoZXJkc21hbi9NCmhlcmRzbWVuCmhlcmUvTQpoZXJlYWJvdXQvUwpoZXJlYWZ0ZXIvU00KaGVyZWJ5CmhlcmVkaXRhcnkKaGVyZWRpdHkvTQpoZXJlaW4KaGVyZWluYWZ0ZXIKaGVyZW9mCmhlcmVvbgpoZXJlc3kvU00KaGVyZXRpYy9TTQpoZXJldGljYWwKaGVyZXRvCmhlcmV0b2ZvcmUKaGVyZXVudG8KaGVyZXVwb24KaGVyZXdpdGgKaGVyaXRhYmxlL0kKaGVyaXRhZ2UvTVMKaGVybWFwaHJvZGl0ZS9TTQpoZXJtYXBocm9kaXRpYwpoZXJtZXRpYwpoZXJtZXRpY2FsL1kKaGVybWl0L1NNCmhlcm1pdGFnZS9NUwpoZXJuaWEvU00KaGVybmlhbApoZXJuaWF0ZS9HTkRTCmhlcm5pYXRpb24vTQpoZXJvL00KaGVyb2VzCmhlcm9pYy9TCmhlcm9pY2FsbHkKaGVyb2ljcy9NCmhlcm9pbi9TTQpoZXJvaW5lL1NNCmhlcm9pc20vTQpoZXJvbi9TTQpoZXJwZXMvTQpoZXJwZXRvbG9naXN0L1NNCmhlcnBldG9sb2d5L00KaGVycmluZy9NUwpoZXJyaW5nYm9uZS9NCmhlcnNlbGYKaGVydHovTQpoZXNpdGFuY2UvTQpoZXNpdGFuY3kvTQpoZXNpdGFudC9ZCmhlc2l0YXRlL0RTR05YCmhlc2l0YXRpbmcvVVkKaGVzaXRhdGlvbi9NCmhlc3NpYW4KaGV0ZXJvL1NNCmhldGVyb2RveApoZXRlcm9kb3h5L00KaGV0ZXJvZ2VuZWl0eS9NCmhldGVyb2dlbmVvdXMvWQpoZXRlcm9zZXh1YWwvTVlTCmhldGVyb3NleHVhbGl0eS9NCmhldXJpc3RpYy9NUwpoZXVyaXN0aWNhbGx5CmhldXJpc3RpY3MvTQpoZXcvWkdTRFIKaGV3ZXIvTQpoZXgvR01EUwpoZXhhZGVjaW1hbC9TCmhleGFnb24vTVMKaGV4YWdvbmFsCmhleGFncmFtL1NNCmhleGFtZXRlci9TTQpoZXkKaGV5ZGF5L1NNCmhmCmhndApoZ3d5CmhpL1NECmhpYXR1cy9NUwpoaWJhY2hpL01TCmhpYmVybmF0ZS9HTkRTCmhpYmVybmF0aW9uL00KaGliZXJuYXRvci9NUwpoaWJpc2N1cy9NUwpoaWNjb3VnaC9ERwpoaWNjb3VnaHMKaGljY3VwL0dTTUQKaGljay9NUwpoaWNrZXkvU00KaGlja29yeS9TTQpoaWQKaGlkZGVuCmhpZGUvTVpHSkRSUwpoaWRlYXdheS9TTQpoaWRlYm91bmQKaGlkZW91cy9ZUApoaWRlb3VzbmVzcy9NCmhpZGVvdXQvTVMKaGlkZXIvTQpoaWRpbmcvTQpoaWUvUwpoaWVpbmcKaGllcmFyY2hpYwpoaWVyYXJjaGljYWwvWQpoaWVyYXJjaHkvU00KaGllcm9nbHlwaC9NCmhpZXJvZ2x5cGhpYy9NUwpoaWVyb2dseXBocwpoaWdoL01SWVpUUApoaWdoYmFsbC9TTQpoaWdoYm9ybgpoaWdoYm95L01TCmhpZ2hicm93L1NNCmhpZ2hjaGFpci9NUwpoaWdoZmFsdXRpbgpoaWdoaGFuZGVkL1BZCmhpZ2hoYW5kZWRuZXNzL00KaGlnaGxhbmQvTVJaUwpoaWdobGFuZGVyL00KaGlnaGxpZ2h0L1NNRFJaRwpoaWdobGlnaHRlci9NCmhpZ2huZXNzL00KaGlnaHJvYWQvTVMKaGlnaHMKaGlnaHRhaWwvRFNHCmhpZ2h3YXkvTVMKaGlnaHdheW1hbi9NCmhpZ2h3YXltZW4KaGlqYWIKaGlqYWNrL1NKWkdNRFIKaGlqYWNrZXIvTQpoaWphY2tpbmcvTQpoaWtlL01aR0RSUwpoaWtlci9NCmhpa2luZy9NCmhpbGFyaW91cy9QWQpoaWxhcmlvdXNuZXNzL00KaGlsYXJpdHkvTQpoaWxsL01TCmhpbGxiaWxseS9TTQpoaWxsaW5lc3MvTQpoaWxsb2NrL01TCmhpbGxzaWRlL1NNCmhpbGx0b3AvTVMKaGlsbHkvUFJUCmhpbHQvTVMKaGltL1MKaGltc2VsZgpoaW5kL01SWlMKaGluZGVyL0dECmhpbmRlcmVkL1UKaGluZG1vc3QKaGluZHF1YXJ0ZXIvTVMKaGluZHJhbmNlL1NNCmhpbmRzaWdodC9NCmhpbmdlJ3MKaGluZ2UvVURTRwpoaW50L01EUlpHUwpoaW50ZXIvTQpoaW50ZXJsYW5kL1NNCmhpcC9TUE0KaGlwYmF0aApoaXBiYXRocwpoaXBib25lL01TCmhpcGh1Z2dlcnMKaGlwbmVzcy9NCmhpcHBlZApoaXBwZXIKaGlwcGVzdApoaXBwaWUvU00KaGlwcGluZwpoaXBwby9TTQpoaXBwb2Ryb21lL1NNCmhpcHBvcG90YW11cy9NUwpoaXBweQpoaXBzdGVyL01TCmhpcmFnYW5hCmhpcmUncwpoaXJlL0FHRFMKaGlyZWxpbmcvTVMKaGlyc3V0ZS9QCmhpcnN1dGVuZXNzL00KaGlzcy9NRFNHCmhpc3QKaGlzdGFtaW5lL01TCmhpc3RvZ3JhbS9NUwpoaXN0b2xvZ2lzdC9TTQpoaXN0b2xvZ3kvTQpoaXN0b3JpYW4vTVMKaGlzdG9yaWMKaGlzdG9yaWNhbC9ZCmhpc3RvcmljaXR5L00KaGlzdG9yaW9ncmFwaGVyL01TCmhpc3RvcmlvZ3JhcGh5L00KaGlzdG9yeS9TTQpoaXN0cmlvbmljL1MKaGlzdHJpb25pY2FsbHkKaGlzdHJpb25pY3MvTQpoaXQvU00KaGl0Y2gncwpoaXRjaC9VRFNHCmhpdGNoZXIvTVMKaGl0Y2hoaWtlL0RSU01aRwpoaXRjaGhpa2VyL00KaGl0aGVyCmhpdGhlcnRvCmhpdHRlci9TTQpoaXR0aW5nCmhpdmUvTUdEUwpoaXlhCmhtbQpoby9TTURSWVoKaG9hZ2llL01TCmhvYXJkL1NaR01EUkoKaG9hcmRlci9NCmhvYXJkaW5nL00KaG9hcmZyb3N0L00KaG9hcmluZXNzL00KaG9hcnNlL1lUUlAKaG9hcnNlbmVzcy9NCmhvYXJ5L1RSUApob2F4L01EUlNaRwpob2F4ZXIvTQpob2IvU00KaG9iYml0L1MKaG9iYmxlL01aR0RSUwpob2JibGVyL00KaG9iYnkvU00KaG9iYnlob3JzZS9NUwpob2JieWlzdC9TTQpob2Jnb2JsaW4vTVMKaG9ibmFpbC9TR01ECmhvYm5vYi9TCmhvYm5vYmJlZApob2Jub2JiaW5nCmhvYm8vTVMKaG9jay9NRFNHCmhvY2tleS9NCmhvY2tzaG9wL01TCmhvZC9TTQpob2RnZXBvZGdlL1NNCmhvZS9TTQpob2VjYWtlL1NNCmhvZWRvd24vU00KaG9laW5nCmhvZXIvTQpob2cvU00KaG9nYW4vU00KaG9nYmFjay9TTQpob2dnZWQKaG9nZ2luZwpob2dnaXNoL1kKaG9nc2hlYWQvU00KaG9ndGllL0RTCmhvZ3R5aW5nCmhvZ3dhc2gvTQpob2ljay9TR0QKaG9pc3QvU0dNRApob2tlL0dEUwpob2tleQpob2tpZXIKaG9raWVzdApob2t1bS9NCmhvbGQvTVJKU1pHCmhvbGRhbGwvUwpob2xkZXIvTQpob2xkaW5nL00KaG9sZG91dC9TTQpob2xkb3Zlci9TTQpob2xkdXAvTVMKaG9sZS9NR0RTCmhvbGV5CmhvbGlkYXkvU01ERwpob2xpZGF5bWFrZXIvUwpob2xpbmVzcy9VTQpob2xpc20KaG9saXN0aWMKaG9saXN0aWNhbGx5CmhvbGxlci9NREdTCmhvbGxvdy9NRFJZUFNURwpob2xsb3duZXNzL00KaG9sbHkvU00KaG9sbHlob2NrL01TCmhvbG1pdW0vTQpob2xvY2F1c3QvU00KaG9sb2dyYW0vTVMKaG9sb2dyYXBoL00KaG9sb2dyYXBoaWMKaG9sb2dyYXBocwpob2xvZ3JhcGh5L00KaG9scwpob2xzdGVyL1NNREcKaG9seS9VUlBUCmhvbWFnZS9NUwpob21icmUvTVMKaG9tYnVyZy9TTQpob21lL01ZWkdEUlMKaG9tZWJvZHkvU00KaG9tZWJveS9TTQpob21lY29taW5nL1NNCmhvbWVncm93bgpob21lbGFuZC9NUwpob21lbGVzcy9NUApob21lbGVzc25lc3MvTQpob21lbGlrZQpob21lbGluZXNzL00KaG9tZWx5L1BSVApob21lbWFkZQpob21lbWFrZXIvU00KaG9tZW1ha2luZy9NCmhvbWVvcGF0aC9NCmhvbWVvcGF0aGljCmhvbWVvcGF0aHMKaG9tZW9wYXRoeS9NCmhvbWVvc3Rhc2lzL00KaG9tZW9zdGF0aWMKaG9tZW93bmVyL01TCmhvbWVwYWdlL01TCmhvbWVyL0dNRApob21lcm9vbS9NUwpob21lc2Nob29saW5nL00KaG9tZXNpY2svUApob21lc2lja25lc3MvTQpob21lc3B1bi9NCmhvbWVzdGVhZC9TTURSWkcKaG9tZXN0ZWFkZXIvTQpob21lc3RyZXRjaC9NUwpob21ldG93bi9NUwpob21ld2FyZC9TCmhvbWV3b3JrL01SWkcKaG9tZXdyZWNrZXIvU00KaG9tZXkvU01QCmhvbWV5bmVzcy9NCmhvbWljaWRhbApob21pY2lkZS9NUwpob21pZXIKaG9taWVzdApob21pbGV0aWMKaG9taWx5L1NNCmhvbWluaWQvU00KaG9taW5vaWQvUwpob21pbnkvTQpob21vL01TCmhvbW9lcm90aWMKaG9tb2dlbmVpdHkvTQpob21vZ2VuZW91cy9ZCmhvbW9nZW5pemF0aW9uL00KaG9tb2dlbml6ZS9EU0cKaG9tb2dyYXBoL00KaG9tb2dyYXBocwpob21vbG9nb3VzCmhvbW9ueW0vU00KaG9tb3Bob2JpYS9NCmhvbW9waG9iaWMKaG9tb3Bob25lL01TCmhvbW9zZXh1YWwvU00KaG9tb3NleHVhbGl0eS9NCmhvbi9TWlRHTURSCmhvbmNoby9NUwpob25lL01TCmhvbmVyL00KaG9uZXN0L0VZVApob25lc3Rlcgpob25lc3R5L0VNCmhvbmV5L1NHTUQKaG9uZXliZWUvU00KaG9uZXljb21iL01EU0cKaG9uZXlkZXcvU00KaG9uZXlsb2N1c3QvTQpob25leW1vb24vWkdNRFJTCmhvbmV5bW9vbmVyL00KaG9uZXlwb3QvUwpob25leXN1Y2tsZS9TTQpob25rL01EUlNaRwpob25rZXIvTQpob25reS9TTQpob25vci9FU0dNREIKaG9ub3JhYmxlbmVzcy9NCmhvbm9yYWJseS9FCmhvbm9yYXJpbHkKaG9ub3Jhcml1bS9NUwpob25vcmFyeQpob25vcmVlL1NNCmhvbm9yZXIvU00KaG9ub3JpZmljL01TCmhvb2NoL00KaG9vZC9NRFNHCmhvb2RpZS9NUwpob29kbHVtL1NNCmhvb2Rvby9NRFNHCmhvb2R3aW5rL0RHUwpob29leS9NCmhvb2YvTURSU1pHCmhvb2sncwpob29rL1VEU0cKaG9va2FoL00KaG9va2Focwpob29rZXIvTVMKaG9va3VwL01TCmhvb2t3b3JtL01TCmhvb2t5L00KaG9vbGlnYW4vTVMKaG9vbGlnYW5pc20vTQpob29wL01EU0cKaG9vcGxhL00KaG9vcmF5Cmhvb3NlZ293L1NNCmhvb3QvTURSU1pHCmhvb3RlbmFubnkvU00KaG9vdGVyL00KaG9vdmVyL0RTRwpob292ZXMKaG9wL1NHTUQKaG9wZS9NUwpob3BlZnVsL1BTTVkKaG9wZWZ1bG5lc3MvTQpob3BlbGVzcy9ZUApob3BlbGVzc25lc3MvTQpob3BwZWQKaG9wcGVyL01TCmhvcHBpbmcKaG9wc2NvdGNoL01EU0cKaG9yYS9NUwpob3JkZS9EU01HCmhvcmVob3VuZC9TTQpob3Jpem9uL1NNCmhvcml6b250YWwvU01ZCmhvcm1vbmFsCmhvcm1vbmUvU00KaG9ybi9NRFMKaG9ybmJsZW5kZS9NCmhvcm5ldC9NUwpob3JubGVzcwpob3JubGlrZQpob3JucGlwZS9NUwpob3JueS9UUgpob3JvbG9naWMKaG9yb2xvZ2ljYWwKaG9yb2xvZ2lzdC9NUwpob3JvbG9neS9NCmhvcm9zY29wZS9TTQpob3JyZW5kb3VzL1kKaG9ycmlibGUvUApob3JyaWJsZW5lc3MvTQpob3JyaWJseQpob3JyaWQvWQpob3JyaWZpYwpob3JyaWZpY2FsbHkKaG9ycmlmeS9EU0cKaG9ycmlmeWluZy9ZCmhvcnJvci9NUwpob3JzZSdzCmhvcnNlL1VEU0cKaG9yc2ViYWNrL00KaG9yc2Vib3gvUwpob3JzZWZsZXNoL00KaG9yc2VmbHkvU00KaG9yc2VoYWlyL00KaG9yc2VoaWRlL00KaG9yc2VsYXVnaC9NCmhvcnNlbGF1Z2hzCmhvcnNlbGVzcwpob3JzZW1hbi9NCmhvcnNlbWFuc2hpcC9NCmhvcnNlbWVuCmhvcnNlcGxheS9NCmhvcnNlcG93ZXIvTQpob3JzZXJhZGlzaC9NUwpob3JzZXNoaXQvIQpob3JzZXNob2UvRFNNCmhvcnNlc2hvZWluZwpob3JzZXRhaWwvU00KaG9yc2V0cmFkaW5nCmhvcnNld2hpcC9TTQpob3JzZXdoaXBwZWQKaG9yc2V3aGlwcGluZwpob3JzZXdvbWFuL00KaG9yc2V3b21lbgpob3JzZXkKaG9yc2llcgpob3JzaWVzdApob3J0YXRvcnkKaG9ydGljdWx0dXJhbApob3J0aWN1bHR1cmFsaXN0L1MKaG9ydGljdWx0dXJlL00KaG9ydGljdWx0dXJpc3QvTVMKaG9zYW5uYS9TTQpob3NlL01HRFMKaG9zZXBpcGUvUwpob3NpZXIvTVMKaG9zaWVyeS9NCmhvc3AKaG9zcGhvbGlwYXNlCmhvc3BpY2UvTVMKaG9zcGl0YWJsZS9JCmhvc3BpdGFibHkvSQpob3NwaXRhbC9TTQpob3NwaXRhbGl0eS9NCmhvc3BpdGFsaXphdGlvbi9TTQpob3NwaXRhbGl6ZS9EU0cKaG9zdC9NRFNHCmhvc3RhZ2UvTVMKaG9zdGVsL1pHTURSUwpob3N0ZWxlci9NCmhvc3RlbHJ5L1NNCmhvc3Rlc3MvTURTRwpob3N0aWxlL01ZUwpob3N0aWxpdGllcy9NCmhvc3RpbGl0eS9TTQpob3N0bGVyL01TCmhvdC9TWVAKaG90YmVkL01TCmhvdGJsb29kZWQKaG90Ym94L01TCmhvdGNha2UvU00KaG90ZWwvU00KaG90ZWxpZXIvTVMKaG90Zm9vdC9NREdTCmhvdGhlYWQvRFNNCmhvdGhlYWRlZC9ZUApob3RoZWFkZWRuZXNzL00KaG90aG91c2UvU00KaG90a2V5L1MKaG90bGluay9TCmhvdG5lc3MvTQpob3RwbGF0ZS9TTQpob3Rwb3QvUwpob3RzL00KaG90c2hvdC9NUwpob3R0ZWQKaG90dGVyCmhvdHRlc3QKaG90dGllL1MKaG90dGluZwpob3VuZC9TR01ECmhvdXIvTVlTCmhvdXJnbGFzcy9NUwpob3VyaS9TTQpob3VzZSdzCmhvdXNlL0FEU0cKaG91c2Vib2F0L1NNCmhvdXNlYm91bmQKaG91c2Vib3kvU00KaG91c2VicmVhay9SU1pHCmhvdXNlYnJlYWtlci9NCmhvdXNlYnJlYWtpbmcvTQpob3VzZWJyb2tlCmhvdXNlYnJva2VuCmhvdXNlY2xlYW4vRFNHCmhvdXNlY2xlYW5pbmcvTQpob3VzZWNvYXQvU00KaG91c2VmbHkvU00KaG91c2VmdWwvU00KaG91c2Vob2xkL1NNUloKaG91c2Vob2xkZXIvTQpob3VzZWh1c2JhbmQvU00KaG91c2VrZWVwZXIvTVMKaG91c2VrZWVwaW5nL00KaG91c2VsaWdodHMvTQpob3VzZW1haWQvU00KaG91c2VtYW4vTQpob3VzZW1hc3Rlci9TCmhvdXNlbWF0ZS9TCmhvdXNlbWVuCmhvdXNlbWlzdHJlc3MvUwpob3VzZW1vdGhlci9TTQpob3VzZXBhcmVudC9TTQpob3VzZXBsYW50L01TCmhvdXNlcHJvdWQKaG91c2Vyb29tCmhvdXNldG9wL1NNCmhvdXNld2FyZXMvTQpob3VzZXdhcm1pbmcvU00KaG91c2V3aWZlL01ZCmhvdXNld2l2ZXMKaG91c2V3b3JrL00KaG91c2luZy9NUwpob3ZlCmhvdmVsL1NNCmhvdmVyL1NHRApob3ZlcmNyYWZ0L00KaG93J2QKaG93J3JlCmhvdy9TTQpob3diZWl0Cmhvd2RhaC9NCmhvd2RhaHMKaG93ZHkKaG93ZXZlcgpob3dpdHplci9TTQpob3dsL01EUlNaRwpob3dsZXIvTQpob3dzb2V2ZXIKaG95ZGVuL01TCmhveWRlbmlzaApocApoci9TCmh0Cmh1YXJhY2hlL1NNCmh1Yi9TTQpodWJidWIvU00KaHViYnkvU00KaHViY2FwL1NNCmh1YnJpcy9NCmh1Y2tsZWJlcnJ5L1NNCmh1Y2tzdGVyL1NHTUQKaHVja3N0ZXJpc20vTQpodWRkbGUvRFNNRwpodWUvRFNNCmh1ZmYvTURTRwpodWZmaWx5Cmh1ZmZpbmVzcy9NCmh1ZmZ5L1BSVApodWcvU1RNUgpodWdlL1lQCmh1Z2VuZXNzL00KaHVnZ2VkCmh1Z2dpbmcKaHVoCmh1bGEvTVMKaHVsay9NU0cKaHVsbC9NRFJTWkcKaHVsbGFiYWxvby9TTQpodWxsZXIvTQpodW0vU00KaHVtYW4vU01SWVRQCmh1bWFuZS9QWQpodW1hbmVuZXNzL00KaHVtYW5pc20vTQpodW1hbmlzdC9TTQpodW1hbmlzdGljCmh1bWFuaXRhcmlhbi9NUwpodW1hbml0YXJpYW5pc20vTQpodW1hbml0aWVzL00KaHVtYW5pdHkvSVNNCmh1bWFuaXphdGlvbi9DTQpodW1hbml6ZS9DRFNHCmh1bWFuaXplci9TTQpodW1hbmtpbmQvTQpodW1hbm5lc3MvTQpodW1hbm9pZC9TTQpodW1ibGUvRFJTWlRHSlAKaHVtYmxlbmVzcy9NCmh1bWJsZXIvTQpodW1ibHkKaHVtYnVnL1NNCmh1bWJ1Z2dlZApodW1idWdnaW5nCmh1bWRpbmdlci9NUwpodW1kcnVtL00KaHVtZXJhbApodW1lcmkKaHVtZXJ1cy9NCmh1bWlkL1kKaHVtaWRpZmljYXRpb24vTQpodW1pZGlmaWVyL0NNCmh1bWlkaWZ5L0NaR0RSUwpodW1pZGl0eS9NCmh1bWlkb3IvU00KaHVtaWxpYXRlL0RTR05YCmh1bWlsaWF0aW5nL1kKaHVtaWxpYXRpb24vTQpodW1pbGl0eS9NCmh1bW1lZApodW1tZXIvU00KaHVtbWluZwpodW1taW5nYmlyZC9TTQpodW1tb2NrL1NNCmh1bW1vY2t5Cmh1bW11cy9NCmh1bW9uZ291cwpodW1vci9TTURHCmh1bW9yZXNxdWUKaHVtb3Jpc3QvTVMKaHVtb3JsZXNzL1lQCmh1bW9ybGVzc25lc3MvTQpodW1vcm91cy9QWQpodW1vcm91c25lc3MvTQpodW1wL01EU0cKaHVtcGJhY2svTURTCmh1bXBoL0RHCmh1bXBocwpodW11cy9NCmh1bmNoL01EU0cKaHVuY2hiYWNrL1NNRApodW5kcmVkL1NNSApodW5kcmVkZm9sZApodW5kcmVkdGgvTQpodW5kcmVkdGhzCmh1bmRyZWR3ZWlnaHQvU00KaHVuZwpodW5nZXIvU01ERwpodW5nb3ZlcgpodW5ncmlseQpodW5ncmluZXNzL00KaHVuZ3J5L1BSVApodW5rL01SU1oKaHVua2VyL0RHCmh1bmt5L1JUCmh1bnQvTURSU1pHCmh1bnRlci9NCmh1bnRpbmcvTQpodW50cmVzcy9NUwpodW50c21hbi9NCmh1bnRzbWVuCmh1cmRsZS9EUlNNWkcKaHVyZGxlci9NCmh1cmRsaW5nL00KaHVybC9NRFJTWkcKaHVybGVyL00KaHVybGluZy9NCmh1cnJhaC9HTUQKaHVycmFocwpodXJyaWNhbmUvTVMKaHVycmllZC9VWQpodXJyeS9EU01HCmh1cnQvTVNHCmh1cnRmdWwvWVAKaHVydGZ1bG5lc3MvTQpodXJ0bGUvRFNHCmh1c2JhbmQvR01EUwpodXNiYW5kbWFuL00KaHVzYmFuZG1lbgpodXNiYW5kcnkvTQpodXNoL01EU0cKaHVzay9NRFJTWkcKaHVza2VyL00KaHVza2lseQpodXNraW5lc3MvTQpodXNreS9QUlNNVApodXNzYXIvU00KaHVzc3kvU00KaHVzdGluZ3MvTQpodXN0bGUvRFJTTVpHCmh1c3RsZXIvTQpodXQvU00KaHV0Y2gvTVMKaHV6emFoL01ERwpodXp6YWhzCmh3eQpoeWFjaW50aC9NCmh5YWNpbnRocwpoeWJyaWQvU00KaHlicmlkaXNtL00KaHlicmlkaXphdGlvbi9NCmh5YnJpZGl6ZS9EU0cKaHlkcmEvU00KaHlkcmFuZ2VhL1NNCmh5ZHJhbnQvTVMKaHlkcmF0ZSdzCmh5ZHJhdGUvQ0dORFMKaHlkcmF0aW9uL0NNCmh5ZHJhdWxpYy9TCmh5ZHJhdWxpY2FsbHkKaHlkcmF1bGljcy9NCmh5ZHJvL00KaHlkcm9jYXJib24vTVMKaHlkcm9jZXBoYWx1cy9NCmh5ZHJvZHluYW1pYy9TCmh5ZHJvZHluYW1pY3MvTQpoeWRyb2VsZWN0cmljCmh5ZHJvZWxlY3RyaWNhbGx5Cmh5ZHJvZWxlY3RyaWNpdHkvTQpoeWRyb2ZvaWwvTVMKaHlkcm9nZW4vTQpoeWRyb2dlbmF0ZS9DR0RTCmh5ZHJvZ2VuYXRpb24vTQpoeWRyb2dlbm91cwpoeWRyb2xvZ2lzdC9NUwpoeWRyb2xvZ3kvTQpoeWRyb2x5c2VzCmh5ZHJvbHlzaXMvTQpoeWRyb2x5emUvRFNHCmh5ZHJvbWV0ZXIvU00KaHlkcm9tZXRyeS9NCmh5ZHJvcGhvYmlhL00KaHlkcm9waG9iaWMKaHlkcm9waG9uZS9TTQpoeWRyb3BsYW5lL0dEU00KaHlkcm9wb25pYy9TCmh5ZHJvcG9uaWNhbGx5Cmh5ZHJvcG9uaWNzL00KaHlkcm9zcGhlcmUvTQpoeWRyb3RoZXJhcHkvTQpoeWRyb3VzCmh5ZHJveGlkZS9TTQpoeWVuYS9TTQpoeWdpZW5lL00KaHlnaWVuaWMvVQpoeWdpZW5pY2FsbHkKaHlnaWVuaXN0L01TCmh5Z3JvbWV0ZXIvU00KaHlpbmcKaHltZW4vU00KaHltZW5lYWwKaHltbi9NRFNHCmh5bW5hbC9NUwpoeW1uYm9vay9TTQpoeXBlL01HRFJTCmh5cGVyYWN0aXZlCmh5cGVyYWN0aXZpdHkvTQpoeXBlcmJvbGEvU00KaHlwZXJib2xlL00KaHlwZXJib2xpYwpoeXBlcmNyaXRpY2FsL1kKaHlwZXJnbHljZW1pYS9NCmh5cGVyaW5mbGF0aW9uCmh5cGVybGluay9HU01ECmh5cGVybWFya2V0L1MKaHlwZXJtZWRpYS9NCmh5cGVycGFyYXRoeXJvaWRpc20KaHlwZXJzZW5zaXRpdmUvUApoeXBlcnNlbnNpdGl2ZW5lc3MvTQpoeXBlcnNlbnNpdGl2aXR5L1NNCmh5cGVyc3BhY2UvUwpoeXBlcnRlbnNpb24vTQpoeXBlcnRlbnNpdmUvU00KaHlwZXJ0ZXh0L00KaHlwZXJ0aHlyb2lkL00KaHlwZXJ0aHlyb2lkaXNtL00KaHlwZXJ0cm9waHkvRFNNRwpoeXBlcnZlbnRpbGF0ZS9HTkRTCmh5cGVydmVudGlsYXRpb24vTQpoeXBoZW4vTURTRwpoeXBoZW5hdGUvWERTTUdOCmh5cGhlbmF0aW9uL00KaHlwbm9zZXMKaHlwbm9zaXMvTQpoeXBub3RoZXJhcGlzdC9TCmh5cG5vdGhlcmFweS9NCmh5cG5vdGljL1NNCmh5cG5vdGljYWxseQpoeXBub3Rpc20vTQpoeXBub3Rpc3QvTVMKaHlwbm90aXplL0dEUwpoeXBvL01TCmh5cG9hbGxlcmdlbmljCmh5cG9jaG9uZHJpYS9NCmh5cG9jaG9uZHJpYWMvU00KaHlwb2NyaXN5L1NNCmh5cG9jcml0ZS9NUwpoeXBvY3JpdGljYWwvWQpoeXBvZGVybWljL01TCmh5cG9nbHljZW1pYS9NCmh5cG9nbHljZW1pYy9TTQpoeXBvdGVudXNlL01TCmh5cG90aGFsYW1pCmh5cG90aGFsYW11cy9NCmh5cG90aGVybWlhL00KaHlwb3RoZXNlcwpoeXBvdGhlc2lzL00KaHlwb3RoZXNpemUvRFNHCmh5cG90aGV0aWNhbC9ZCmh5cG90aHlyb2lkL00KaHlwb3RoeXJvaWRpc20vTQpoeXNzb3AvTQpoeXN0ZXJlY3RvbXkvU00KaHlzdGVyZXNpcwpoeXN0ZXJpYS9NCmh5c3RlcmljL1NNCmh5c3RlcmljYWwvWQpoeXN0ZXJpY3MvTQppL1VTCmlQYWQvTQppUGhvbmUvTQppUG9kL00KaVR1bmVzL00KaWFtYi9NUwppYW1iaQppYW1iaWMvU00KaWFtYnVzL01TCmliZXgvTVMKaWJpZAppYmlkZW0KaWJpcy9NUwppYnVwcm9mZW4vTQppY2UncwppY2UvQ0RTRwppY2ViZXJnL1NNCmljZWJvYXQvU00KaWNlYm91bmQKaWNlYm94L01TCmljZWJyZWFrZXIvU00KaWNlY2FwL1NNCmljZW1hbi9NCmljZW1lbgppY2h0aHlvbG9naXN0L01TCmljaHRoeW9sb2d5L00KaWNpY2xlL1NNCmljaWx5CmljaW5lc3MvTQppY2luZy9TTQppY2t5L1JUCmljb24vTVMKaWNvbmljCmljb25vY2xhc20vTQppY29ub2NsYXN0L1NNCmljb25vY2xhc3RpYwppY29ub2dyYXBoeS9NCmljdHVzL00KaWN5L1RQUgppZC9TTVkKaWRlYS9NUwppZGVhbC9TTVkKaWRlYWxpc20vTQppZGVhbGlzdC9TTQppZGVhbGlzdGljCmlkZWFsaXN0aWNhbGx5CmlkZWFsaXphdGlvbi9NUwppZGVhbGl6ZS9EU0cKaWRlbQppZGVtcG90ZW50CmlkZW50aWNhbC9ZCmlkZW50aWZpYWJsZS9VCmlkZW50aWZpY2F0aW9uL00KaWRlbnRpZmllZC9VCmlkZW50aWZ5L1pHTkRSU1gKaWRlbnRpa2l0L1MKaWRlbnRpdHkvU00KaWRlb2dyYW0vU00KaWRlb2dyYXBoL00KaWRlb2dyYXBocwppZGVvbG9naWNhbC9ZCmlkZW9sb2dpc3QvU00KaWRlb2xvZ3VlL01TCmlkZW9sb2d5L1NNCmlkZXMvTQppZGlvY3kvU00KaWRpb20vU00KaWRpb21hdGljL1UKaWRpb21hdGljYWxseQppZGlvcGF0aGljCmlkaW9zeW5jcmFzeS9TTQppZGlvc3luY3JhdGljCmlkaW9zeW5jcmF0aWNhbGx5CmlkaW90L1NNCmlkaW90aWMKaWRpb3RpY2FsbHkKaWRsZS9NWlRHRFJTUAppZGxlbmVzcy9NCmlkbGVyL00KaWRvbC9NUwppZG9sYXRlci9TTQppZG9sYXRyZXNzL01TCmlkb2xhdHJvdXMKaWRvbGF0cnkvTQppZG9saXphdGlvbi9NCmlkb2xpemUvR0RTCmlkeWxsL1NNCmlkeWxsaWMKaWR5bGxpY2FsbHkKaWYvU00KaWZmaW5lc3MvTQppZmZ5L1JUUAppZ2xvby9TTQppZ25lb3VzCmlnbml0YWJsZQppZ25pdGUvQUdEUwppZ25pdGlvbi9NUwppZ25vYmxlCmlnbm9ibHkKaWdub21pbmlvdXMvWQppZ25vbWlueS9TTQppZ25vcmFtdXMvTVMKaWdub3JhbmNlL00KaWdub3JhbnQvWQppZ25vcmUvR0RTCmlndWFuYS9NUwppaQppaWkKaWxlYQppbGVpdGlzL00KaWxldW0vTQppbGlhCmlsaXVtL00KaWxrL1NNCmlsbC9TTVAKaWxsZWdhbC9NWVMKaWxsZWdhbGl0eS9TTQppbGxlZ2liaWxpdHkvTQppbGxlZ2libGUKaWxsZWdpYmx5CmlsbGVnaXRpbWFjeS9NCmlsbGVnaXRpbWF0ZS9ZCmlsbGliZXJhbC9ZCmlsbGliZXJhbGl0eS9NCmlsbGljaXQvWVAKaWxsaWNpdG5lc3MvTQppbGxpbWl0YWJsZQppbGxpdGVyYWN5L00KaWxsaXRlcmF0ZS9NWVMKaWxsbmVzcy9NUwppbGxvZ2ljYWwvWQppbGxvZ2ljYWxpdHkvTQppbGx1bWluYXRlL0dOWERTCmlsbHVtaW5hdGluZy9ZCmlsbHVtaW5hdGlvbi9NCmlsbHVtaW5lL0RTQkcKaWxsdXMvVgppbGx1c2lvbi9FTVMKaWxsdXNpb25pc3QvU00KaWxsdXNvcnkKaWxsdXN0cmF0ZS9HTlZYRFMKaWxsdXN0cmF0aW9uL00KaWxsdXN0cmF0aXZlL1kKaWxsdXN0cmF0b3IvU00KaWxsdXN0cmlvdXMvUFkKaWxsdXN0cmlvdXNuZXNzL00KaW1hZ2UvRFNNRwppbWFnZXJ5L00KaW1hZ2luYWJsZS9VCmltYWdpbmFibHkvVQppbWFnaW5hbAppbWFnaW5hcnkKaW1hZ2luYXRpb24vTVMKaW1hZ2luYXRpdmUvVVkKaW1hZ2luZS9EU0JKRwppbWFnby9NCmltYWdvZXMKaW1hbS9NUwppbWJhbGFuY2UvRFNNCmltYmVjaWxlL01TCmltYmVjaWxpYwppbWJlY2lsaXR5L1NNCmltYmliZS9aR0RSUwppbWJpYmVyL00KaW1icmljYXRpb24vTQppbWJyb2dsaW8vU00KaW1idWUvRFNHCmltaXRhYmxlL0kKaW1pdGF0ZS9EU0dOVlgKaW1pdGF0aW9uL00KaW1pdGF0aXZlL1BZCmltaXRhdGl2ZW5lc3MvTQppbWl0YXRvci9TTQppbW1hY3VsYXRlL1BZCmltbWFjdWxhdGVuZXNzL00KaW1tYW5lbmNlL00KaW1tYW5lbmN5L00KaW1tYW5lbnQvWQppbW1hdGVyaWFsL1lQCmltbWF0ZXJpYWxpdHkvTQppbW1hdGVyaWFsbmVzcy9NCmltbWF0dXJlL1kKaW1tYXR1cml0eS9NCmltbWVhc3VyYWJsZQppbW1lYXN1cmFibHkKaW1tZWRpYWNpZXMvTQppbW1lZGlhY3kvU00KaW1tZWRpYXRlL1BZCmltbWVkaWF0ZW5lc3MvTQppbW1lbW9yaWFsL1kKaW1tZW5zZS9ZCmltbWVuc2l0eS9TTQppbW1lcnNlL1hEU0dOVgppbW1lcnNpYmxlCmltbWVyc2lvbi9NCmltbWlncmFudC9TTQppbW1pZ3JhdGUvRFNHTgppbW1pZ3JhdGlvbi9NCmltbWluZW5jZS9NCmltbWluZW50L1kKaW1tb2JpbGUKaW1tb2JpbGl0eS9NCmltbW9iaWxpemF0aW9uL00KaW1tb2JpbGl6ZS9aR0RSUwppbW1vZGVyYXRlL1kKaW1tb2Rlc3QvWQppbW1vZGVzdHkvTQppbW1vbGF0ZS9EU0dOCmltbW9sYXRpb24vTQppbW1vcmFsL1kKaW1tb3JhbGl0eS9TTQppbW1vcnRhbC9NWVMKaW1tb3J0YWxpdHkvTQppbW1vcnRhbGl6ZS9EU0cKaW1tb3ZhYmlsaXR5L00KaW1tb3ZhYmxlCmltbW92YWJseQppbW11bmUKaW1tdW5pdHkvTQppbW11bml6YXRpb24vU00KaW1tdW5pemUvR0RTCmltbXVub2RlZmljaWVuY3kvTQppbW11bm9kZWZpY2llbnQKaW1tdW5vZ2xvYnVsaW4vUwppbW11bm9sb2dpYwppbW11bm9sb2dpY2FsCmltbXVub2xvZ2lzdC9NUwppbW11bm9sb2d5L00KaW1tdXJlL0RTRwppbW11dGFiaWxpdHkvTQppbW11dGFibGUKaW1tdXRhYmx5CmltcC9TTVIKaW1wYWN0L1NNREcKaW1wYWlyL1NER0wKaW1wYWlyZWQvVQppbXBhaXJtZW50L01TCmltcGFsYS9TTQppbXBhbGUvRFNHTAppbXBhbGVtZW50L00KaW1wYWxwYWJsZQppbXBhbHBhYmx5CmltcGFuZWwvU0RHCmltcGFydC9TREcKaW1wYXJ0aWFsL1kKaW1wYXJ0aWFsaXR5L00KaW1wYXNzYWJseQppbXBhc3NlL0JTTVYKaW1wYXNzaWJpbGl0eS9NCmltcGFzc2libGUKaW1wYXNzaWJseQppbXBhc3Npb25lZAppbXBhc3NpdmUvWVAKaW1wYXNzaXZlbmVzcy9NCmltcGFzc2l2aXR5L00KaW1wYXN0by9NCmltcGF0aWVuY2UvTVMKaW1wYXRpZW5zL00KaW1wYXRpZW50L1kKaW1wZWFjaC9aR0JMRFJTCmltcGVhY2hhYmxlL1UKaW1wZWFjaGVyL00KaW1wZWFjaG1lbnQvU00KaW1wZWNjYWJpbGl0eS9NCmltcGVjY2FibGUKaW1wZWNjYWJseQppbXBlY3VuaW91cy9QWQppbXBlY3VuaW91c25lc3MvTQppbXBlZGFuY2UvTQppbXBlZGUvRFNHCmltcGVkZWQvVQppbXBlZGltZW50L1NNCmltcGVkaW1lbnRhL00KaW1wZWwvUwppbXBlbGxlZAppbXBlbGxlci9NUwppbXBlbGxpbmcKaW1wZW5kL1NERwppbXBlbmV0cmFiaWxpdHkvTQppbXBlbmV0cmFibGUKaW1wZW5ldHJhYmx5CmltcGVuaXRlbmNlL00KaW1wZW5pdGVudC9ZCmltcGVyYXRpdmUvU01ZCmltcGVyY2VwdGliaWxpdHkvTQppbXBlcmNlcHRpYmxlCmltcGVyY2VwdGlibHkKaW1wZXJjZXB0aXZlCmltcGVyZgppbXBlcmZlY3QvU01ZUAppbXBlcmZlY3Rpb24vTVMKaW1wZXJmZWN0bmVzcy9NCmltcGVyaWFsL01ZUwppbXBlcmlhbGlzbS9NCmltcGVyaWFsaXN0L1NNCmltcGVyaWFsaXN0aWMKaW1wZXJpYWxpc3RpY2FsbHkKaW1wZXJpbC9HU0xECmltcGVyaWxtZW50L00KaW1wZXJpb3VzL1BZCmltcGVyaW91c25lc3MvTQppbXBlcmlzaGFibGUKaW1wZXJpc2hhYmx5CmltcGVybWFuZW5jZS9NCmltcGVybWFuZW50L1kKaW1wZXJtZWFiaWxpdHkvTQppbXBlcm1lYWJsZQppbXBlcm1lYWJseQppbXBlcm1pc3NpYmxlCmltcGVyc29uYWwvWQppbXBlcnNvbmF0ZS9HTlhEUwppbXBlcnNvbmF0aW9uL00KaW1wZXJzb25hdG9yL1NNCmltcGVydGluZW5jZS9NUwppbXBlcnRpbmVudC9ZCmltcGVydHVyYmFiaWxpdHkvTQppbXBlcnR1cmJhYmxlCmltcGVydHVyYmFibHkKaW1wZXJ2aW91cy9ZCmltcGV0aWdvL00KaW1wZXR1b3NpdHkvTQppbXBldHVvdXMvWVAKaW1wZXR1b3VzbmVzcy9NCmltcGV0dXMvTVMKaW1waWV0eS9TTQppbXBpbmdlL0xEU0cKaW1waW5nZW1lbnQvTQppbXBpb3VzL1BZCmltcGlvdXNuZXNzL00KaW1waXNoL1lQCmltcGlzaG5lc3MvTQppbXBsYWNhYmlsaXR5L00KaW1wbGFjYWJsZQppbXBsYWNhYmx5CmltcGxhbnQvQlNHTUQKaW1wbGFudGF0aW9uL00KaW1wbGF1c2liaWxpdHkvU00KaW1wbGF1c2libGUKaW1wbGF1c2libHkKaW1wbGVtZW50L0dCTURSUwppbXBsZW1lbnRhYmxlL1UKaW1wbGVtZW50YXRpb24vU00KaW1wbGVtZW50ZWQvVQppbXBsaWNhdGUvRFNHCmltcGxpY2F0aW9uL00KaW1wbGljaXQvUFkKaW1wbGljaXRuZXNzL00KaW1wbG9kZS9EU0cKaW1wbG9yZS9EU0cKaW1wbG9yaW5nL1kKaW1wbG9zaW9uL01TCmltcGxvc2l2ZQppbXBseS9YRFNHTgppbXBvbGl0ZS9ZUAppbXBvbGl0ZW5lc3MvTVMKaW1wb2xpdGljCmltcG9uZGVyYWJsZS9NUwppbXBvcnQvWkdCU01EUgppbXBvcnRhbmNlL00KaW1wb3J0YW50L1kKaW1wb3J0YXRpb24vTVMKaW1wb3J0ZXIvTQppbXBvcnR1bmF0ZS9ZCmltcG9ydHVuZS9HRFMKaW1wb3J0dW5pdHkvTQppbXBvc2UvQURTRwppbXBvc2VyL01TCmltcG9zaW5nL1UKaW1wb3NpbmdseQppbXBvc2l0aW9uL01TCmltcG9zc2liaWxpdHkvU00KaW1wb3NzaWJsZS9TCmltcG9zc2libHkKaW1wb3N0L1NNCmltcG9zdG9yL1NNCmltcG9zdHVyZS9NUwppbXBvdGVuY2UvTQppbXBvdGVuY3kvTQppbXBvdGVudC9ZCmltcG91bmQvREdTCmltcG92ZXJpc2gvRFNMRwppbXBvdmVyaXNobWVudC9NCmltcHJhY3RpY2FiaWxpdHkKaW1wcmFjdGljYWJsZQppbXByYWN0aWNhYmx5CmltcHJhY3RpY2FsL1kKaW1wcmFjdGljYWxpdHkvTQppbXByZWNhdGUvRFNYR04KaW1wcmVjYXRpb24vTQppbXByZWNpc2UvUFlOCmltcHJlY2lzZW5lc3MvTQppbXByZWNpc2lvbi9NCmltcHJlZ25hYmlsaXR5L00KaW1wcmVnbmFibGUKaW1wcmVnbmFibHkKaW1wcmVnbmF0ZS9HTkRTCmltcHJlZ25hdGlvbi9NCmltcHJlc2FyaW8vU00KaW1wcmVzcy9NRFNHVgppbXByZXNzZWQvVQppbXByZXNzaWJpbGl0eS9NCmltcHJlc3NpYmxlCmltcHJlc3Npb24vQlNNCmltcHJlc3Npb25hYmlsaXR5L00KaW1wcmVzc2lvbmlzbS9NCmltcHJlc3Npb25pc3QvU00KaW1wcmVzc2lvbmlzdGljCmltcHJlc3NpdmUvUFkKaW1wcmVzc2l2ZW5lc3MvTQppbXByaW1hdHVyL1NNCmltcHJpbnQvTURSWkdTCmltcHJpbnRlci9NCmltcHJpc29uL1NETEcKaW1wcmlzb25tZW50L1NNCmltcHJvYmFiaWxpdHkvU00KaW1wcm9iYWJsZQppbXByb2JhYmx5CmltcHJvbXB0dS9TTQppbXByb3Blci9ZCmltcHJvcHJpZXR5L1NNCmltcHJvdmUvR0JEU0wKaW1wcm92ZWQvVQppbXByb3ZlbWVudC9NUwppbXByb3ZpZGVuY2UvTQppbXByb3ZpZGVudC9ZCmltcHJvdmlzYXRpb24vU00KaW1wcm92aXNhdGlvbmFsCmltcHJvdmlzZS9aR0RSUwppbXByb3Zpc2VyL00KaW1wcnVkZW5jZS9NCmltcHJ1ZGVudC9ZCmltcHVkZW5jZS9NCmltcHVkZW50L1kKaW1wdWduL1pHU0RSCmltcHVnbmVyL00KaW1wdWxzZS9NR05WRFMKaW1wdWxzaW9uL00KaW1wdWxzaXZlL1BZCmltcHVsc2l2ZW5lc3MvTQppbXB1bml0eS9NCmltcHVyZS9SWVQKaW1wdXJpdHkvU00KaW1wdXRhdGlvbi9TTQppbXB1dGUvQkRTRwppbi9BU00KaW5hY2N1cmFjeS9TCmluYWN0aW9uL00KaW5hZGVxdWFjeS9TCmluYWR2ZXJ0ZW5jZS9NCmluYWR2ZXJ0ZW50L1kKaW5hbGllbmFiaWxpdHkvTQppbmFsaWVuYWJseQppbmFtb3JhdGEvU00KaW5hbmUvUllUCmluYW5pbWF0ZS9QWQppbmFuaW1hdGVuZXNzL00KaW5hbml0eS9TTQppbmFwcHJvcHJpYXRlL1kKaW5hcnRpY3VsYXRlL1kKaW5hc211Y2gKaW5hdWRpYmxlCmluYXVndXJhbC9TTQppbmF1Z3VyYXRlL1hHTkRTCmluYXVndXJhdGlvbi9NCmluYm9hcmQvTVMKaW5ib3VuZAppbmJveC9NUwppbmJyZWVkL1MKaW5jL1RHRAppbmNhbGN1bGFibHkKaW5jYW5kZXNjZW5jZS9NCmluY2FuZGVzY2VudC9ZCmluY2FudGF0aW9uL1NNCmluY2FwYWNpdGF0ZS9HRFMKaW5jYXJjZXJhdGUvWERTR04KaW5jYXJjZXJhdGlvbi9NCmluY2FybmFkaW5lL0RTRwppbmNhcm5hdGUvQVhHTkRTCmluY2FybmF0aW9uL0FNCmluY2VuZGlhcnkvU00KaW5jZW5zZS9NR0RTCmluY2VudGl2ZSdzCmluY2VudGl2ZS9FUwppbmNlcHRpb24vU00KaW5jZXNzYW50L1kKaW5jZXN0L00KaW5jZXN0dW91cy9QWQppbmNlc3R1b3VzbmVzcy9NCmluY2gvTURTRwppbmNob2F0ZQppbmNod29ybS9TTQppbmNpZGVuY2UvU00KaW5jaWRlbnQvU00KaW5jaWRlbnRhbC9NWVMKaW5jaW5lcmF0ZS9EU0dOCmluY2luZXJhdGlvbi9NCmluY2luZXJhdG9yL01TCmluY2lwaWVuY2UvTQppbmNpcGllbnQvWQppbmNpc2UvWEdOVkRTCmluY2lzaW9uL00KaW5jaXNpdmUvUFkKaW5jaXNpdmVuZXNzL00KaW5jaXNvci9NUwppbmNpdGVtZW50L01TCmluY2l0ZXIvTVMKaW5jbAppbmNsZW1lbnQKaW5jbGluYXRpb24vRU0KaW5jbGluYXRpb25zCmluY2xpbmUncwppbmNsaW5lL0VHRFMKaW5jbHVkZS9HRFMKaW5jbHVzaW9uL01TCmluY2x1c2l2ZS9ZUAppbmNsdXNpdmVuZXNzL00KaW5jb2duaXRvL01TCmluY29tYnVzdGlibGUKaW5jb21tb2RlL0dECmluY29tbW9kaW91cwppbmNvbW11bmljYWRvCmluY29tcGF0aWJpbGl0eS9TCmluY29tcGV0ZW50L01TCmluY29tcGxldGUvWQppbmNvbmNlaXZhYmlsaXR5L00KaW5jb25ncnVvdXMvUFkKaW5jb25ncnVvdXNuZXNzL00KaW5jb25zb2xhYmx5CmluY29uc3RhbnQvWQppbmNvbnRlc3RhYmlsaXR5L00KaW5jb250ZXN0YWJseQppbmNvbnRpbmVudAppbmNvbnRyb3ZlcnRpYmx5CmluY29udmVuaWVuY2UvR0QKaW5jb3Jwb3JhdGUvQURTR04KaW5jb3Jwb3JhdGVkL1UKaW5jb3Jwb3JhdGlvbi9BTQppbmNvcnBvcmVhbAppbmNvcnJlY3QvWQppbmNvcnJpZ2liaWxpdHkvTQppbmNvcnJpZ2libGUKaW5jb3JyaWdpYmx5CmluY29ycnVwdGlibHkKaW5jcmVhc2luZy9ZCmluY3JlbWVudC9TTUQKaW5jcmVtZW50YWwvWQppbmNyZW1lbnRhbGlzbQppbmNyZW1lbnRhbGlzdC9TTQppbmNyaW1pbmF0ZS9HTkRTCmluY3JpbWluYXRpb24vTQppbmNyaW1pbmF0b3J5CmluY3J1c3RhdGlvbi9TTQppbmN1YmF0ZS9HTkRTCmluY3ViYXRpb24vTQppbmN1YmF0b3IvU00KaW5jdWJ1cy9NUwppbmN1bGNhdGUvRFNHTgppbmN1bGNhdGlvbi9NCmluY3VscGF0ZS9EU0cKaW5jdW1iZW5jeS9TTQppbmN1bWJlbnQvU00KaW5jdW5hYnVsYQppbmN1bmFidWx1bS9NCmluY3VyL1NCCmluY3VyYWJsZS9NUwppbmN1cmFibHkKaW5jdXJpb3VzCmluY3VycmVkCmluY3VycmluZwppbmN1cnNpb24vTVMKaW5kCmluZGVidGVkL1AKaW5kZWJ0ZWRuZXNzL00KaW5kZWVkCmluZGVmYXRpZ2FibGUKaW5kZWZhdGlnYWJseQppbmRlZmVhc2libGUKaW5kZWZlYXNpYmx5CmluZGVmaW5hYmx5CmluZGVsaWJsZQppbmRlbGlibHkKaW5kZW1uaWZpY2F0aW9uL00KaW5kZW1uaWZ5L0dEU1hOCmluZGVtbml0eS9TTQppbmRlbnRhdGlvbi9NUwppbmRlbnRpb24vTQppbmRlbnR1cmUvREcKaW5kZXNjcmliYWJseQppbmRlc3RydWN0aWJseQppbmRldGVybWluYWJseQppbmRldGVybWluYWN5L00KaW5kZXRlcm1pbmF0ZS9ZCmluZGV4L1pHTURSUwppbmRleGF0aW9uL1NNCmluZGV4ZXIvTQppbmRpY2F0ZS9YRFNHTlYKaW5kaWNhdGlvbi9NCmluZGljYXRpdmUvU01ZCmluZGljYXRvci9NUwppbmRpY3QvR0RTQkwKaW5kaWN0bWVudC9TTQppbmRpZS9TCmluZGlnZW5jZS9NCmluZGlnZW5vdXMKaW5kaWdlbnQvU01ZCmluZGlnbmFudC9ZCmluZGlnbmF0aW9uL00KaW5kaWdvL00KaW5kaXJlY3QvWQppbmRpc2NpcGxpbmUKaW5kaXNjcmVldC9ZCmluZGlzY3JldGlvbi9TCmluZGlzY3JpbWluYXRlL1kKaW5kaXNwZW5zYWJpbGl0eS9NCmluZGlzcGVuc2FibGUvTVMKaW5kaXNwZW5zYWJseQppbmRpc3NvbHViaWxpdHkKaW5kaXNzb2x1Ymx5CmluZGlzdGluZ3Vpc2hhYmx5CmluZGl0ZS9HRFMKaW5kaXVtL00KaW5kaXZpZHVhbC9NWVMKaW5kaXZpZHVhbGlzbS9NCmluZGl2aWR1YWxpc3QvTVMKaW5kaXZpZHVhbGlzdGljCmluZGl2aWR1YWxpc3RpY2FsbHkKaW5kaXZpZHVhbGl0eS9NCmluZGl2aWR1YWxpemF0aW9uL00KaW5kaXZpZHVhbGl6ZS9HRFMKaW5kaXZpZHVhdGUvRFNHTgppbmRpdmlkdWF0aW9uL00KaW5kaXZpc2libHkKaW5kb2N0cmluYXRlL0dORFMKaW5kb2N0cmluYXRpb24vTQppbmRvbGVuY2UvTQppbmRvbGVudC9ZCmluZG9taXRhYmxlCmluZG9taXRhYmx5CmluZHViaXRhYmxlCmluZHViaXRhYmx5CmluZHVjZS9EUlNaR0wKaW5kdWNlbWVudC9TTQppbmR1Y2VyL00KaW5kdWN0L0RHVgppbmR1Y3RhbmNlL00KaW5kdWN0ZWUvU00KaW5kdWN0aW9uL01TCmluZHVjdGl2ZS9ZCmluZHVsZ2UvRFNHCmluZHVsZ2VuY2UvU00KaW5kdWxnZW50L1kKaW5kdXN0cmlhbC9ZCmluZHVzdHJpYWxpc20vTQppbmR1c3RyaWFsaXN0L1NNCmluZHVzdHJpYWxpemF0aW9uL00KaW5kdXN0cmlhbGl6ZS9EU0cKaW5kdXN0cmlvdXMvWVAKaW5kdXN0cmlvdXNuZXNzL00KaW5kdXN0cnkvU00KaW5kd2VsbC9TRwppbmVicmlhdGUvTUdORFMKaW5lYnJpYXRpb24vTQppbmVkaWJsZQppbmVmZmFiaWxpdHkvTQppbmVmZmFibGUKaW5lZmZhYmx5CmluZWxhc3RpYwppbmVsaWdpYmxlL01TCmluZWxpZ2libHkKaW5lbHVjdGFibGUKaW5lbHVjdGFibHkKaW5lcHQvWVAKaW5lcHRpdHVkZS9NCmluZXB0bmVzcy9NCmluZXF1YWxpdHkvUwppbmVydC9ZUAppbmVydGlhL00KaW5lcnRpYWwKaW5lcnRuZXNzL00KaW5lc2NhcGFibGUKaW5lc2NhcGFibHkKaW5lc3RpbWFibHkKaW5ldml0YWJpbGl0eS9NCmluZXZpdGFibGUvTQppbmV2aXRhYmx5CmluZXhhY3QvWQppbmV4aGF1c3RpYmx5CmluZXhvcmFiaWxpdHkKaW5leG9yYWJsZQppbmV4b3JhYmx5CmluZXhwZWRpZW50CmluZXhwZXJ0L1kKaW5leHBpYWJsZQppbmV4cGxpY2FibHkKaW5leHByZXNzaWJseQppbmV4cHJlc3NpdmUKaW5leHRyaWNhYmx5CmluZi9aVAppbmZhbGxpYmxlCmluZmFteS9TTQppbmZhbmN5L00KaW5mYW50L01TCmluZmFudGljaWRlL01TCmluZmFudGlsZQppbmZhbnRyeS9TTQppbmZhbnRyeW1hbi9NCmluZmFudHJ5bWVuCmluZmFyY3QvTVMKaW5mYXJjdGlvbi9NCmluZmF0dWF0ZS9EU1hHTgppbmZhdHVhdGlvbi9NCmluZmVjdC9BRVNERwppbmZlY3RlZC9VCmluZmVjdGlvbi9BU00KaW5mZWN0aW91cy9QWQppbmZlY3Rpb3VzbmVzcy9NCmluZmVsaWNpdG91cwppbmZlcmVuY2UvU00KaW5mZXJlbnRpYWwKaW5mZXJpb3IvTVMKaW5mZXJpb3JpdHkvTQppbmZlcm5hbC9ZCmluZmVybm8vTVMKaW5mZXJyZWQKaW5mZXJyaW5nCmluZmVzdC9HRFMKaW5mZXN0YXRpb24vTVMKaW5maWRlbC9NUwppbmZpZGVsaXR5L1MKaW5maWx0cmF0b3IvU00KaW5maW5pdGUvTVYKaW5maW5pdGVzaW1hbC9TTVkKaW5maW5pdGl2YWwKaW5maW5pdGl2ZS9NUwppbmZpbml0dWRlL00KaW5maW5pdHkvU00KaW5maXJtCmluZmlybWFyeS9TTQppbmZpcm1pdHkvU00KaW5maXgKaW5mbGFtZS9EU0cKaW5mbGFtbWFibGUKaW5mbGFtbWF0aW9uL1NNCmluZmxhbW1hdG9yeQppbmZsYXRhYmxlL1NNCmluZmxhdGUvRFNHTkIKaW5mbGF0aW9uL0VNCmluZmxhdGlvbmFyeQppbmZsZWN0L1NERwppbmZsZWN0aW9uL01TCmluZmxlY3Rpb25hbAppbmZsaWN0L1NER1YKaW5mbGljdGlvbi9NCmluZmxvdy9TTQppbmZsdWVuY2UvTUdEUwppbmZsdWVuY2VkL1UKaW5mbHVlbnRpYWwvWQppbmZsdWVuemEvTQppbmZvL00KaW5mb21lcmNpYWwvU00KaW5mb3JtL1oKaW5mb3JtYWwvWQppbmZvcm1hbnQvU00KaW5mb3JtYXRpb24vRU0KaW5mb3JtYXRpb25hbAppbmZvcm1hdGl2ZS9QWQppbmZvcm1hdGl2ZW5lc3MvTQppbmZvcm1lZC9VCmluZm90YWlubWVudC9NCmluZnJhCmluZnJhcmVkL00KaW5mcmFzb25pYwppbmZyYXN0cnVjdHVyYWwKaW5mcmFzdHJ1Y3R1cmUvU00KaW5mcmVxdWVuY2UvTQppbmZyZXF1ZW50L1kKaW5mcmluZ2VtZW50L01TCmluZnVyaWF0ZS9HRFMKaW5mdXJpYXRpbmcvWQppbmZ1c2VyL1NNCmluZ2VuaW91cy9QWQppbmdlbmlvdXNuZXNzL00KaW5nZW51ZS9TTQppbmdlbnVpdHkvTQppbmdlbnVvdXMvRVkKaW5nZW51b3VzbmVzcy9NCmluZ2VzdC9TREcKaW5nZXN0aW9uL00KaW5nbGVub29rL1NNCmluZ290L1NNCmluZ3JhaW4vRwppbmdyYXRlL1NNCmluZ3JhdGlhdGUvR05EUwppbmdyYXRpYXRpbmcvWQppbmdyYXRpYXRpb24vTQppbmdyZWRpZW50L01TCmluZ3Jlc3MvTVMKaW5ndWluYWwKaW5oYWJpdC9ERwppbmhhYml0YWJsZS9VCmluaGFiaXRhbnQvU00KaW5oYWJpdGVkL1UKaW5oYWxhbnQvU00KaW5oYWxhdGlvbi9NUwppbmhhbGF0b3IvTVMKaW5oYWxlci9TTQppbmhhcm1vbmlvdXMKaW5oZXJlL0RTRwppbmhlcmVudC9ZCmluaGVyaXQvRUdTRAppbmhlcml0YW5jZS9FTQppbmhlcml0YW5jZXMKaW5oZXJpdG9yL1NNCmluaGliaXQvR1NECmluaGliaXRpb24vU00KaW5oaWJpdG9yL1NNCmluaGliaXRvcnkKaW5odW1hbi9ZCmluaHVtYW5lL1kKaW5pbWljYWwvWQppbmltaXRhYmx5CmluaXF1aXRvdXMvWQppbmlxdWl0eS9TTQppbml0aWFsL1NHTURZCmluaXRpYWxpc20KaW5pdGlhbGl6YXRpb24KaW5pdGlhbGl6ZS9EU0cKaW5pdGlhbGl6ZWQvQVUKaW5pdGlhdGUvWE1HTlZEUwppbml0aWF0ZWQvVQppbml0aWF0aW9uL00KaW5pdGlhdGl2ZS9TTQppbml0aWF0b3IvTVMKaW5pdGlhdG9yeQppbmplY3QvU0RHCmluamVjdGlvbi9TTQppbmplY3Rvci9TTQppbmp1cmUvRFJTWkcKaW5qdXJlZC9VCmluanVyZXIvTQppbmp1cmlvdXMKaW5rL01ECmlua2Jsb3QvU00KaW5raW5lc3MvTQppbmtsaW5nL1NNCmlua3N0YW5kL1NNCmlua3dlbGwvTVMKaW5reS9SVFAKaW5sYW5kL00KaW5saW5lCmlubWF0ZS9TTQppbm1vc3QKaW5uL1NHTVJKCmlubmFyZHMvTQppbm5hdGUvUFkKaW5uYXRlbmVzcy9NCmlubmVybW9zdAppbm5lcnNvbGUvU00KaW5uZXJzcHJpbmcKaW5uZXJ2YXRlL0dORFMKaW5uZXJ2YXRpb24vTQppbm5pbmcvTQppbm5pdAppbm5rZWVwZXIvTVMKaW5ub2NlbmNlL00KaW5ub2NlbnQvTVlTCmlubm9jdW91cy9QWQppbm5vY3VvdXNuZXNzL00KaW5ub3ZhdGUvWERTR05WCmlubm92YXRpb24vTQppbm5vdmF0b3IvTVMKaW5ub3ZhdG9yeQppbm51ZW5kby9TTQppbm51bWVyYWJseQppbm51bWVyYXRlCmlub2N1bGF0ZS9BR0RTCmlub2N1bGF0aW9uL01TCmlub3BlcmF0aXZlCmlub3JkaW5hdGUvWQppbm9yZ2FuaWMKaW5xdWlyZS9aR0RSCmlucXVpcmVyL00KaW5xdWlyaW5nL1kKaW5xdWlyeS9TTQppbnF1aXNpdGlvbi9NUwppbnF1aXNpdGlvbmFsCmlucXVpc2l0aXZlL1lQCmlucXVpc2l0aXZlbmVzcy9NCmlucXVpc2l0b3IvU00KaW5xdWlzaXRvcmlhbAppbnJ1c2gvTVMKaW5zYW5lL1QKaW5zYXRpYWJpbGl0eS9NCmluc2F0aWFibHkKaW5zY3JpYmUvWkdEUgppbnNjcmliZXIvTQppbnNjcmlwdGlvbi9NUwppbnNjcnV0YWJpbGl0eS9NCmluc2NydXRhYmxlL1AKaW5zY3J1dGFibGVuZXNzL00KaW5zY3J1dGFibHkKaW5zZWFtL1NNCmluc2VjdGljaWRhbAppbnNlY3RpY2lkZS9NUwppbnNlY3Rpdm9yZS9NUwppbnNlY3Rpdm9yb3VzCmluc2VjdXJlL1kKaW5zZW1pbmF0ZS9EU0dOCmluc2VtaW5hdGlvbi9NCmluc2Vuc2F0ZQppbnNlbnNpYmxlCmluc2Vuc2l0aXZlL1kKaW5zZXBhcmFibGUvTVMKaW5zZXJ0J3MKaW5zZXJ0L0FHU0QKaW5zZXJ0aW9uL0FNCmluc2VydGlvbnMKaW5zZXR0aW5nCmluc2hvcmUKaW5zaWRlL1JTTVoKaW5zaWRlci9NCmluc2lkaW91cy9ZUAppbnNpZGlvdXNuZXNzL00KaW5zaWdodC9NUwppbnNpZ2h0ZnVsCmluc2lnbmlhL00KaW5zaW51YXRlL0dOVkRTWAppbnNpbnVhdGlvbi9NCmluc2ludWF0b3IvU00KaW5zaXBpZC9QWQppbnNpcGlkaXR5L00KaW5zaXN0L1NHRAppbnNpc3RlbmNlL00KaW5zaXN0ZW50L1kKaW5zaXN0aW5nL1kKaW5zb2ZhcgppbnNvbGUvU00KaW5zb2xlbmNlL00KaW5zb2xlbnQvWQppbnNvbHVibGUKaW5zb2x1Ymx5Cmluc29sdmVuY3kvUwppbnNvbW5pYS9NCmluc29tbmlhYy9TTQppbnNvbXVjaAppbnNvdWNpYW5jZS9NCmluc291Y2lhbnQKaW5zcGVjdC9BR0RTCmluc3BlY3Rpb24vU00KaW5zcGVjdG9yL01TCmluc3BlY3RvcmF0ZS9NUwppbnNwaXJhdGlvbi9NUwppbnNwaXJhdGlvbmFsCmluc3BpcmVkL1UKaW5zcGlyaW5nL1UKaW5zdAppbnN0YWJpbGl0eS9TCmluc3RhbGxhdGlvbi9NUwppbnN0YWxsZXIvVU1TCmluc3RhbGxtZW50L1NNCmluc3RhbmNlL0dECmluc3RhbnQvTVJZUwppbnN0YW50YW5lb3VzL1kKaW5zdGFudGlhdGUvRFNHCmluc3RhcgppbnN0YXRlL0FHRFMKaW5zdGVhZAppbnN0aWdhdGUvRFNHTgppbnN0aWdhdGlvbi9NCmluc3RpZ2F0b3IvTVMKaW5zdGlsbGF0aW9uL00KaW5zdGluY3QvVk1TCmluc3RpbmN0aXZlL1kKaW5zdGluY3R1YWwKaW5zdGl0dXRlL1hNWkdORFJTCmluc3RpdHV0ZXIvTQppbnN0aXR1dGlvbi9NCmluc3RpdHV0aW9uYWwvWQppbnN0aXR1dGlvbmFsaXphdGlvbi9NCmluc3RpdHV0aW9uYWxpemUvRFNHCmluc3RyCmluc3RydWN0L1NER1YKaW5zdHJ1Y3RlZC9VCmluc3RydWN0aW9uL01TCmluc3RydWN0aW9uYWwKaW5zdHJ1Y3RpdmUvWQppbnN0cnVjdG9yL01TCmluc3RydW1lbnQvTURTRwppbnN0cnVtZW50YWwvTVlTCmluc3RydW1lbnRhbGlzdC9TTQppbnN0cnVtZW50YWxpdHkvTQppbnN0cnVtZW50YXRpb24vTQppbnN1Ym9yZGluYXRlCmluc3VmZmVyYWJsZQppbnN1ZmZlcmFibHkKaW5zdWxhcgppbnN1bGFyaXR5L00KaW5zdWxhdGUvR05EUwppbnN1bGF0aW9uL00KaW5zdWxhdG9yL01TCmluc3VsaW4vTQppbnN1bHQvU01ERwppbnN1bHRpbmcvWQppbnN1cGVyYWJsZQppbnN1cGVyYWJseQppbnN1cmFuY2UvU00KaW5zdXJlL0RSU1pHQgppbnN1cmVkL1NNCmluc3VyZXIvTQppbnN1cmdlbmNlL1NNCmluc3VyZ2VuY3kvU00KaW5zdXJnZW50L01TCmluc3VybW91bnRhYmx5Cmluc3VycmVjdGlvbi9TTQppbnN1cnJlY3Rpb25pc3QvU00KaW50CmludGFjdAppbnRhZ2xpby9NUwppbnRlZ2VyL01TCmludGVncmFsL1NNWQppbnRlZ3JhdGUvQUVWTkdTRAppbnRlZ3JhdGlvbi9FQU0KaW50ZWdyYXRvcgppbnRlZ3JpdHkvTQppbnRlZ3VtZW50L1NNCmludGVsbGVjdC9NUwppbnRlbGxlY3R1YWwvTVlTCmludGVsbGVjdHVhbGlzbS9NCmludGVsbGVjdHVhbGl6ZS9HRFMKaW50ZWxsaWdlbmNlL00KaW50ZWxsaWdlbnQvWQppbnRlbGxpZ2VudHNpYS9NCmludGVsbGlnaWJpbGl0eS9NCmludGVsbGlnaWJsZS9VCmludGVsbGlnaWJseS9VCmludGVuZGVkL1NNCmludGVuc2UvWVRWUgppbnRlbnNpZmljYXRpb24vTQppbnRlbnNpZmllci9NCmludGVuc2lmeS9EUlNaR04KaW50ZW5zaXR5L1MKaW50ZW5zaXZlL01ZUFMKaW50ZW5zaXZlbmVzcy9NCmludGVudC9TTVlQCmludGVudGlvbi9NUwppbnRlbnRpb25hbC9VWQppbnRlbnRuZXNzL00KaW50ZXIvRVNMCmludGVyYWN0L1NHVkQKaW50ZXJhY3Rpb24vU00KaW50ZXJhY3RpdmUvWQppbnRlcmFjdGl2aXR5CmludGVyYnJlZAppbnRlcmJyZWVkL0dTCmludGVyY2VkZS9HRFMKaW50ZXJjZXB0L0dNRFMKaW50ZXJjZXB0aW9uL01TCmludGVyY2VwdG9yL1NNCmludGVyY2Vzc2lvbi9TTQppbnRlcmNlc3Nvci9NUwppbnRlcmNlc3NvcnkKaW50ZXJjaGFuZ2UvRFNNRwppbnRlcmNoYW5nZWFiaWxpdHkKaW50ZXJjaGFuZ2VhYmxlCmludGVyY2hhbmdlYWJseQppbnRlcmNpdHkKaW50ZXJjb2xsZWdpYXRlCmludGVyY29tL1NNCmludGVyY29tbXVuaWNhdGUvRFNHTgppbnRlcmNvbW11bmljYXRpb24vTQppbnRlcmNvbm5lY3QvR0RTCmludGVyY29ubmVjdGlvbi9TTQppbnRlcmNvbnRpbmVudGFsCmludGVyY291cnNlL00KaW50ZXJjdWx0dXJhbAppbnRlcmRlbm9taW5hdGlvbmFsCmludGVyZGVwYXJ0bWVudGFsCmludGVyZGVwZW5kZW5jZS9NCmludGVyZGVwZW5kZW50L1kKaW50ZXJkaWN0L0dNRFMKaW50ZXJkaWN0aW9uL00KaW50ZXJkaXNjaXBsaW5hcnkKaW50ZXJlc3QvRVNNRAppbnRlcmVzdGVkL1UKaW50ZXJlc3RpbmcvWQppbnRlcmZhY2UvTUdEUwppbnRlcmZhaXRoCmludGVyZmVyZS9HRFMKaW50ZXJmZXJlbmNlL00KaW50ZXJmZXJvbi9NCmludGVyZmlsZS9HRFMKaW50ZXJnYWxhY3RpYwppbnRlcmdvdmVybm1lbnRhbAppbnRlcmltL00KaW50ZXJpb3IvU00KaW50ZXJqCmludGVyamVjdC9HRFMKaW50ZXJqZWN0aW9uL1NNCmludGVybGFjZS9HRFMKaW50ZXJsYXJkL0RHUwppbnRlcmxlYXZlL0RTRwppbnRlcmxldWtpbi9NCmludGVybGluZS9HRFNKCmludGVybGluZWFyCmludGVybGluaW5nL00KaW50ZXJsaW5rL0RTRwppbnRlcmxvY2svR01EUwppbnRlcmxvY3V0b3IvU00KaW50ZXJsb2N1dG9yeQppbnRlcmxvcGUvWkdEUlMKaW50ZXJsb3Blci9NCmludGVybHVkZS9NR0RTCmludGVybWFycmlhZ2UvU00KaW50ZXJtYXJyeS9HRFMKaW50ZXJtZWRpYXJ5L1NNCmludGVybWVkaWF0ZS9NWVMKaW50ZXJtZW50L0VNCmludGVybWVudHMKaW50ZXJtZXp6aQppbnRlcm1lenpvL01TCmludGVybWluYWJseQppbnRlcm1pbmdsZS9EU0cKaW50ZXJtaXNzaW9uL1NNCmludGVybWl0dGVudC9ZCmludGVybWl4L0dEUwppbnRlcm4vR0RMCmludGVybmFsL1NZCmludGVybmFsaXphdGlvbi9NCmludGVybmFsaXplL0dEUwppbnRlcm5hdGlvbmFsL1NNWQppbnRlcm5hdGlvbmFsaXNtL00KaW50ZXJuYXRpb25hbGlzdC9TTQppbnRlcm5hdGlvbmFsaXphdGlvbgppbnRlcm5hdGlvbmFsaXplL0RTRwppbnRlcm5lY2luZQppbnRlcm5lZS9TTQppbnRlcm5ldAppbnRlcm5pc3QvTVMKaW50ZXJubWVudC9NCmludGVybnNoaXAvTVMKaW50ZXJvZmZpY2UKaW50ZXJwZW5ldHJhdGUvRFNHTgppbnRlcnBlcnNvbmFsCmludGVycGxhbmV0YXJ5CmludGVycGxheS9NCmludGVycG9sYXRlL1hEU0dOCmludGVycG9sYXRpb24vTQppbnRlcnBvc2UvR0RTCmludGVycG9zaXRpb24vTQppbnRlcnByZXQvQUdWRFMKaW50ZXJwcmV0YXRpb24vQU1TCmludGVycHJldGF0aXZlCmludGVycHJldGVkL1UKaW50ZXJwcmV0ZXIvTVMKaW50ZXJyYWNpYWwKaW50ZXJyZWQvRQppbnRlcnJlZ251bS9TTQppbnRlcnJlbGF0ZS9YRFNHTgppbnRlcnJlbGF0aW9uL00KaW50ZXJyZWxhdGlvbnNoaXAvTVMKaW50ZXJyaW5nL0UKaW50ZXJyb2dhdGUvRFNHTlZYCmludGVycm9nYXRpb24vTQppbnRlcnJvZ2F0aXZlL01ZUwppbnRlcnJvZ2F0b3IvU00KaW50ZXJyb2dhdG9yeS9TTQppbnRlcnJ1cHQvWkdNRFJTCmludGVycnVwdGVyL00KaW50ZXJydXB0aW9uL01TCmludGVyc2Nob2xhc3RpYwppbnRlcnNlY3QvR0RTCmludGVyc2VjdGlvbi9TTQppbnRlcnNlc3Npb24vU00KaW50ZXJzZXgKaW50ZXJzcGVyc2UvR05EUwppbnRlcnNwZXJzaW9uL00KaW50ZXJzdGF0ZS9NUwppbnRlcnN0ZWxsYXIKaW50ZXJzdGljZS9NUwppbnRlcnN0aXRpYWwKaW50ZXJ0d2luZS9HRFMKaW50ZXJ1cmJhbgppbnRlcnZhbC9TTQppbnRlcnZlbmUvR0RTCmludGVydmVudGlvbi9TTQppbnRlcnZlbnRpb25pc20vTQppbnRlcnZlbnRpb25pc3QvU00KaW50ZXJ2aWV3L1pHTURSUwppbnRlcnZpZXdlZS9NUwppbnRlcnZpZXdlci9NCmludGVydm9jYWxpYwppbnRlcndhcgppbnRlcndlYXZlL0dTCmludGVyd292ZQppbnRlcndvdmVuCmludGVzdGFjeS9NCmludGVzdGF0ZQppbnRlc3RpbmFsCmludGVzdGluZS9NUwppbnRpbWFjeS9TTQppbnRpbWF0ZS9NWUdORFNYCmludGltYXRpb24vTQppbnRpbWlkYXRlL0dORFMKaW50aW1pZGF0aW5nL1kKaW50aW1pZGF0aW9uL00KaW50b25hdGlvbi9TTQppbnRveGljYW50L1NNCmludG94aWNhdGUvRFNHTgppbnRveGljYXRpb24vTQppbnRyYWNyYW5pYWwKaW50cmFtdXJhbAppbnRyYW11c2N1bGFyCmludHJhbmV0L01TCmludHJhbnNpZ2VuY2UvTQppbnRyYW5zaWdlbnQvTVlTCmludHJhc3RhdGUKaW50cmF1dGVyaW5lCmludHJhdmVub3VzL01TWQppbnRyZXBpZC9ZCmludHJlcGlkaXR5L00KaW50cmljYWN5L1NNCmludHJpY2F0ZS9ZCmludHJpZ3VlL0RSU01aRwppbnRyaWd1ZXIvTQppbnRyaWd1aW5nL1kKaW50cmluc2ljCmludHJpbnNpY2FsbHkKaW50cm8vU00KaW50cm9kdWNlL0FHRFMKaW50cm9kdWN0aW9uL0FNCmludHJvZHVjdGlvbnMKaW50cm9kdWN0b3J5CmludHJvaXQvU00KaW50cm9zcGVjdC9HVkRTCmludHJvc3BlY3Rpb24vTQppbnRyb3NwZWN0aXZlL1kKaW50cm92ZXJzaW9uL00KaW50cm92ZXJ0L01EUwppbnRydWRlL0RSU1pHCmludHJ1ZGVyL00KaW50cnVzaW9uL1NNCmludHJ1c2l2ZS9ZUAppbnRydXNpdmVuZXNzL00KaW50dWl0L1NER1YKaW50dWl0aW9uL1MKaW50dWl0aXZlL1BZCmludHVpdGl2ZW5lc3MvTQppbnVuZGF0ZS9YRFNHTgppbnVuZGF0aW9uL00KaW51cmUvRFNHCmludmFkZS9EUlNaRwppbnZhZGVyL00KaW52YWxpZC9HTURZUwppbnZhbGlkaXNtL00KaW52YWx1YWJsZQppbnZhbHVhYmx5CmludmFyaWFudAppbnZhc2lvbi9NUwppbnZhc2l2ZQppbnZlY3RpdmUvTQppbnZlaWdoL0dECmludmVpZ2hzCmludmVpZ2xlL1pHRFJTCmludmVpZ2xlci9NCmludmVudC9BU0dWRAppbnZlbnRpb24vQU1TCmludmVudGl2ZS9QWQppbnZlbnRpdmVuZXNzL00KaW52ZW50b3IvTVMKaW52ZW50b3J5L0RTTUcKaW52ZXJzZS9TTVkKaW52ZXJ0L1NNREcKaW52ZXN0L0FTREdMCmludmVzdGlnYXRlL0dOVkRTWAppbnZlc3RpZ2F0aW9uL00KaW52ZXN0aWdhdG9yL1NNCmludmVzdGlnYXRvcnkKaW52ZXN0aXR1cmUvTVMKaW52ZXN0bWVudC9BRU0KaW52ZXN0b3IvU00KaW52ZXRlcmFjeS9NCmludmV0ZXJhdGUKaW52aWRpb3VzL1lQCmludmlkaW91c25lc3MvTQppbnZpZ2lsYXRlL0dORFMKaW52aWdpbGF0b3IvUwppbnZpZ29yYXRlL0FEU0cKaW52aWdvcmF0aW5nL1kKaW52aWdvcmF0aW9uL00KaW52aW5jaWJpbGl0eS9NCmludmluY2libHkKaW52aW9sYWJpbGl0eS9NCmludmlvbGFibHkKaW52aW9sYXRlCmludml0YXRpb24vU00KaW52aXRhdGlvbmFsL1NNCmludml0ZS9EU01HCmludml0ZWQvVQppbnZpdGVlL1NNCmludml0aW5nL1kKaW52b2tlL0RTRwppbnZvbHVudGFyaW5lc3MvTQppbnZvbHVudGFyeS9QCmludm9sdXRpb24vTQppbnZvbHZlL0xEU0cKaW52b2x2ZW1lbnQvU00KaW53YXJkL1NZCmlvY3RsCmlvZGlkZS9TTQppb2RpbmUvTQppb2RpemUvRFNHCmlvbi9VU00KaW9uaWMKaW9uaXphdGlvbi9VTQppb25pemUvVURTRwppb25pemVyL01TCmlvbm9zcGhlcmUvTVMKaW9ub3NwaGVyaWMKaW90YS9NUwppcGVjYWMvU00KaXJhc2NpYmlsaXR5L00KaXJhc2NpYmxlCmlyYXNjaWJseQppcmF0ZS9ZUAppcmF0ZW5lc3MvTQppcmUvTQppcmVmdWwKaXJlbmljCmlyaWRlcwppcmlkZXNjZW5jZS9NCmlyaWRlc2NlbnQvWQppcmlkaXVtL00KaXJpcy9NUwppcmsvU0dECmlya3NvbWUvWVAKaXJrc29tZW5lc3MvTQppcm9uL01EU0cKaXJvbmNsYWQvTVMKaXJvbmljCmlyb25pY2FsL1kKaXJvbmluZy9NCmlyb25tb25nZXIvUwppcm9ubW9uZ2VyeQppcm9uc3RvbmUvTQppcm9ud2FyZS9NCmlyb253b29kL01TCmlyb253b3JrL00KaXJvbnkvU00KaXJyYWRpYXRlL0RTR04KaXJyYWRpYXRpb24vTQppcnJhdGlvbmFsL1NNWQppcnJhdGlvbmFsaXR5L00KaXJyZWNsYWltYWJsZQppcnJlY29uY2lsYWJpbGl0eS9NCmlycmVjb25jaWxhYmxlCmlycmVjb25jaWxhYmx5CmlycmVjb3ZlcmFibGUKaXJyZWNvdmVyYWJseQppcnJlZGVlbWFibGUKaXJyZWRlZW1hYmx5CmlycmVkdWNpYmxlCmlycmVkdWNpYmx5CmlycmVmdXRhYmxlCmlycmVmdXRhYmx5CmlycmVnYXJkbGVzcwppcnJlZ3VsYXIvTVlTCmlycmVndWxhcml0eS9TTQppcnJlbGV2YW5jZS9NUwppcnJlbGV2YW5jeS9NUwppcnJlbGV2YW50L1kKaXJyZWxpZ2lvbgppcnJlbGlnaW91cwppcnJlbWVkaWFibGUKaXJyZW1lZGlhYmx5CmlycmVtb3ZhYmxlCmlycmVwYXJhYmxlCmlycmVwYXJhYmx5CmlycmVwbGFjZWFibGUKaXJyZXByZXNzaWJsZQppcnJlcHJlc3NpYmx5CmlycmVwcm9hY2hhYmxlCmlycmVwcm9hY2hhYmx5CmlycmVzaXN0aWJsZQppcnJlc2lzdGlibHkKaXJyZXNvbHV0ZS9QWU4KaXJyZXNvbHV0ZW5lc3MvTQppcnJlc29sdXRpb24vTQppcnJlc3BlY3RpdmUKaXJyZXNwb25zaWJpbGl0eS9NCmlycmVzcG9uc2libGUKaXJyZXNwb25zaWJseQppcnJldHJpZXZhYmxlCmlycmV0cmlldmFibHkKaXJyZXZlcmVuY2UvTQppcnJldmVyZW50L1kKaXJyZXZlcnNpYmxlCmlycmV2ZXJzaWJseQppcnJldm9jYWJsZQppcnJldm9jYWJseQppcnJpZ2FibGUKaXJyaWdhdGUvRFNHTgppcnJpZ2F0aW9uL00KaXJyaXRhYmlsaXR5L00KaXJyaXRhYmxlCmlycml0YWJseQppcnJpdGFudC9TTQppcnJpdGF0ZS9EU1hHTgppcnJpdGF0aW5nL1kKaXJyaXRhdGlvbi9NCmlycnVwdC9ER1ZTCmlycnVwdGlvbi9TTQppc2NoZW1pYQppc2NoZW1pYwppc2luZ2xhc3MvTQppc2wKaXNsYW5kL1NaTVIKaXNsYW5kZXIvTQppc2xlL01TCmlzbGV0L1NNCmlzbS9DTQppc21zCmlzbid0Cmlzb2Jhci9NUwppc29iYXJpYwppc29sYXRlL0RTTUdOCmlzb2xhdGlvbi9NCmlzb2xhdGlvbmlzbS9NCmlzb2xhdGlvbmlzdC9TTQppc29tZXIvTVMKaXNvbWVyaWMKaXNvbWVyaXNtL00KaXNvbWV0cmljL1MKaXNvbWV0cmljYWxseQppc29tZXRyaWNzL00KaXNvbW9ycGhpYwppc29zY2VsZXMKaXNvdGhlcm0vU00KaXNvdG9wZS9TTQppc290b3BpYwppc290cm9waWMKaXNzdWFuY2UvTQppc3N1ZS9BRFNNRwppc3N1ZXIvTVMKaXN0aG1pYW4KaXN0aG11cy9NUwppdCdkCml0J2xsCml0L1VTTQppdGFsCml0YWxpYy9TTQppdGFsaWNpemF0aW9uL00KaXRhbGljaXplL0dEUwppdGFsaWNzL00KaXRjaC9NRFNHCml0Y2hpbmVzcy9NCml0Y2h5L1JQVAppdGVtL01TCml0ZW1pemF0aW9uL00KaXRlbWl6ZS9HRFMKaXRlcmF0ZS9BWEdOVkRTCml0ZXJhdGlvbi9BTQppdGVyYXRvci9TCml0aW5lcmFudC9TTQppdGluZXJhcnkvU00KaXRzZWxmCml2L1UKaXZvcnkvU00KaXZ5L0RTTQppeApqL0YKamFiL1NNCmphYmJlZApqYWJiZXIvU01EUlpHCmphYmJlcmVyL00KamFiYmluZwpqYWJvdC9TTQpqYWNhcmFuZGEvTVMKamFjay9NREdTCmphY2thbC9TTQpqYWNrYXNzL01TCmphY2tib290L1NNRApqYWNrZGF3L01TCmphY2tldC9TTUQKamFja2hhbW1lci9NUwpqYWNra25pZmUvTUdEUwpqYWNra25pdmVzCmphY2twb3QvTVMKamFja3JhYmJpdC9NUwpqYWNrc3RyYXcvTVMKamFjcXVhcmQvTQpqYWRlL01HRFMKamFkZWQvUFkKamFkZWRuZXNzL00KamFkZWl0ZS9NCmphZy9TTQpqYWdnZWQvVFBSWQpqYWdnZWRuZXNzL00KamFnZ2llcwpqYWd1YXIvU00KamFpbC9NRFJaR1MKamFpbGJpcmQvU00KamFpbGJyZWFrL1NNCmphaWxlci9NCmphaWxob3VzZS9TCmphbGFwZW5vL01TCmphbG9weS9TTQpqYWxvdXNpZS9NUwpqYW0vU00KamFtYi9NUwpqYW1iYWxheWEvTQpqYW1ib3JlZS9NUwpqYW1tZWQKamFtbWluZwpqYW1teS9SVApqYW5nbGUvRFJTTVpHCmphbmdsZXIvTQpqYW5pdG9yL1NNCmphbml0b3JpYWwKamFwYW4vU00KamFwYW5uZWQKamFwYW5uaW5nCmphcGUvTUdEUwpqYXIvU00KamFyZGluaWVyZS9TTQpqYXJmdWwvTVMKamFyZ29uL00KamFycmVkCmphcnJpbmcvWQpqYXNtaW5lL1NNCmphc3Blci9NCmphdG8vTVMKamF1bmRpY2UvRFNNRwpqYXVudC9TR01ECmphdW50aWx5CmphdW50aW5lc3MvTQpqYXVudHkvUlBUCmphdmEvTQpqYXZlbGluL1NNCmphdy9TR01ECmphd2JvbmUvRFNNRwpqYXdicmVha2VyL01TCmphd2xpbmUvUwpqYXkvU00KamF5YmlyZC9TTQpqYXl3YWxrL0RSU1pHCmpheXdhbGtlci9NCmpheXdhbGtpbmcvTQpqYXp6L01EU0cKamF6enkvVFIKamN0CmplYWxvdXMvWQpqZWFsb3VzeS9TTQpqZWFuL01TCmplYW5zL00KamVlcC9NUwpqZWVyL01EU0cKamVlcmluZy9NWQpqZWV6CmplanVuYQpqZWp1bmUKamVqdW51bS9NCmplbGwvRFNHCmplbGxvL1MKamVsbHkvR0RTTQpqZWxseWJlYW4vTVMKamVsbHlmaXNoL01TCmplbGx5bGlrZQpqZWxseXJvbGwvU00KamVtbXkvR0RTCmplbm5ldC9NUwpqZW5ueS9TTQpqZW9wYXJkaXplL0dEUwpqZW9wYXJkeS9NCmplcmVtaWFkL01TCmplcmsvTURTRwpqZXJraWx5Cmplcmtpbi9NUwpqZXJraW5lc3MvTQpqZXJrd2F0ZXIKamVya3kvVFJNUApqZXJvYm9hbS9TCmplcnJ5YnVpbHQKamVycnljYW4vUwpqZXJzZXkvTVMKamVzdC9NRFJTWkcKamVzdGVyL00KamVzdGluZy9ZCmpldC9TTQpqZXRsaW5lci9TTQpqZXRwb3J0L01TCmpldHNhbS9NCmpldHRlZApqZXR0aW5nCmpldHRpc29uL01EU0cKamV0dHkvU00KamV3Cmpld2VsL1NaR01EUgpqZXdlbGVyL00KamV3ZWxyeS9TTQpqZwpqaWIvU0dNRApqaWJiZWQKamliYmluZwpqaWJlL01TCmppZmYvTVMKamlmZnkvU00KamlnJ3MKamlnL0FTCmppZ2dlZC9BCmppZ2dlcidzCmppZ2dlci9BU0RHCmppZ2dpbmcvQQpqaWdnbGUvRFNNRwpqaWdnbHkKamlnc2F3L1NNREcKamloYWQvU00KamloYWRpc3QvU00KamlsdC9NRFNHCmppbW15L0RTTUcKamltc29ud2VlZC9NCmppbmdsZS9EU01HCmppbmdseQpqaW5nb2lzbS9NCmppbmdvaXN0L1NNCmppbmdvaXN0aWMKamluay9EU0cKamlubgpqaW5uaS9NCmppbnJpa2lzaGEvU00KamlueC9NRFNHCmppdG5leS9TTQpqaXR0ZXJidWcvTVMKaml0dGVyYnVnZ2VkCmppdHRlcmJ1Z2dlci9NCmppdHRlcmJ1Z2dpbmcKaml0dGVycy9NCmppdHRlcnkvUlQKaml2ZS9NR0RTCmpvYi9TTQpqb2JiZWQKam9iYmVyL1NNCmpvYmJpbmcKam9iaG9sZGVyL01TCmpvYmxlc3MvUApqb2JsZXNzbmVzcy9NCmpvYnNoYXJlL1MKam9ic3dvcnRoCmpvYnN3b3J0aHMKam9jay9NUwpqb2NrZXkvU0dNRApqb2Nrc3RyYXAvTVMKam9jb3NlL1BZCmpvY29zZW5lc3MvTQpqb2Nvc2l0eS9NCmpvY3VsYXIvWQpqb2N1bGFyaXR5L00Kam9jdW5kL1kKam9jdW5kaXR5L00Kam9kaHB1cnMvTQpqb2V5L1MKam9nL1NNCmpvZ2dlZApqb2dnZXIvU00Kam9nZ2luZy9NCmpvZ2dsZS9EU01HCmpvaG4vTVMKam9obm55L1NNCmpvaG5ueWNha2UvTVMKam9pbidzCmpvaW4vQUZEU0cKam9pbmVyL0ZNUwpqb2luZXJ5L00Kam9pbnQncwpqb2ludC9FR1NECmpvaW50bHkvRgpqb2lzdC9TTQpqb2pvYmEKam9rZS9NWkdEUlMKam9rZXIvTQpqb2tleQpqb2tpZXIKam9raWVzdApqb2tpbmcvWQpqb2xsaWZpY2F0aW9uL1NNCmpvbGxpbHkKam9sbGluZXNzL00Kam9sbGl0eS9NCmpvbGx5L1RHUERSU00Kam9sdC9NRFJTWkcKam9sdGVyL00Kam9ucXVpbC9TTQpqb3NoL01EUlNaRwpqb3NoZXIvTQpqb3N0bGUvTUdEUwpqb3QvU00Kam90dGVkCmpvdHRlci9NUwpqb3R0aW5nL01TCmpvdWxlL1NNCmpvdW5jZS9NR0RTCmpvdW5jeQpqb3VybmFsL01TCmpvdXJuYWxlc2UvTQpqb3VybmFsaXNtL00Kam91cm5hbGlzdC9TTQpqb3VybmFsaXN0aWMKam91cm5leS9aR01EUlMKam91cm5leWVyL00Kam91cm5leW1hbi9NCmpvdXJuZXltZW4Kam91cm5vL1MKam91c3QvU1pHTURSCmpvdXN0ZXIvTQpqb3VzdGluZy9NCmpvdmlhbC9ZCmpvdmlhbGl0eS9NCmpvd2wvTVMKam93bHkvVFIKam95L1NHTUQKam95ZnVsL1lQCmpveWZ1bGxlcgpqb3lmdWxsZXN0CmpveWZ1bG5lc3MvTQpqb3lsZXNzL1BZCmpveWxlc3NuZXNzL00Kam95b3VzL1lQCmpveW91c25lc3MvTQpqb3lyaWRkZW4Kam95cmlkZS9SU01aRwpqb3lyaWRlci9NCmpveXJpZGluZy9NCmpveXJvZGUKam95c3RpY2svU00KanIKanViaWxhbnQvWQpqdWJpbGF0aW9uL00KanViaWxlZS9TTQpqdWRkZXIvR0RTCmp1ZGdlJ3MKanVkZ2UvQURTRwpqdWRnZXNoaXAvTQpqdWRnbWVudC9TTQpqdWRnbWVudGFsL1kKanVkaWNhdG9yeS9TTQpqdWRpY2F0dXJlL00KanVkaWNpYWwvWQpqdWRpY2lhcnkvU00KanVkaWNpb3VzL0lZUApqdWRpY2lvdXNuZXNzL0lNCmp1ZG8vTQpqdWcvU00KanVnZnVsL01TCmp1Z2dlZApqdWdnZXJuYXV0L1NNCmp1Z2dpbmcKanVnZ2xlL01aR0RSUwpqdWdnbGVyL00KanVnZ2xlcnkvTQpqdWd1bGFyL1NNCmp1aWNlL0RSU01aRwpqdWljZXIvTQpqdWljaWx5Cmp1aWNpbmVzcy9NCmp1aWN5L1BUUgpqdWppdHN1L00KanVqdWJlL01TCmp1a2Vib3gvTVMKanVsZXAvU00KanVsaWVubmUKanVtYmxlL01HRFMKanVtYm8vU00KanVtcC9NRFJTWkcKanVtcGVyL00KanVtcGlseQpqdW1waW5lc3MvTQpqdW1wc3VpdC9NUwpqdW1weS9UUlAKanVuCmp1bmNvL1NNCmp1bmN0aW9uL0ZJU00KanVuY3R1cmUvRk1TCmp1bmdsZS9NUwpqdW5pb3IvTVMKanVuaXBlci9TTQpqdW5rL01EUlNaRwpqdW5rZXIvTQpqdW5rZXQvTURTRwpqdW5rZXRlZXIvTVMKanVua2llL01UUlMKanVua3lhcmQvTVMKanVudGEvU00KanVyaWRpYwpqdXJpZGljYWwvWQpqdXJpc2RpY3Rpb24vU00KanVyaXNkaWN0aW9uYWwKanVyaXNwcnVkZW5jZS9NCmp1cmlzdC9NUwpqdXJpc3RpYwpqdXJvci9TTQpqdXJ5L0lTTQpqdXJ5bWFuL00KanVyeW1lbgpqdXJ5d29tYW4vTQpqdXJ5d29tZW4KanVzdC9SWVBUCmp1c3RpY2UvSU1TCmp1c3RpZmlhYmxlL1UKanVzdGlmaWFibHkvVQpqdXN0aWZpY2F0aW9uL00KanVzdGlmaWVkL1UKanVzdGlmeS9YR0RTTgpqdXN0bmVzcy9NCmp1dC9TTQpqdXRlL00KanV0dGVkCmp1dHRpbmcKanV2ZW5pbGUvU00KanV4dGFwb3NlL0RTRwpqdXh0YXBvc2l0aW9uL1NNCmsvSUZHUwprSHoKa1cKa1doCmthYmJhbGFoCmthYm9vbQprYWJ1a2kvTQprYWRkaXNoL01TCmthZmZlZWtsYXRjaC9NUwprYWZmZWVrbGF0c2NoL01TCmthaHVuYS9TCmthaXNlci9NUwprYWxlL00Ka2FsZWlkb3Njb3BlL01TCmthbGVpZG9zY29waWMKa2FsZWlkb3Njb3BpY2FsbHkKa2FtaWthemUvTVMKa2FuYQprYW5nYXJvby9NUwprYW5qaQprYW9saW4vTQprYXBvay9NCmthcHBhL1NNCmthcHV0CmthcmFrdWwvTQprYXJhb2tlL01TCmthcmF0L1NNCmthcmF0ZS9NCmthcm1hL00Ka2FybWljCmthcnQvTVMKa2F0YWthbmEKa2F0eWRpZC9TTQprYXlhay9TTURHCmtheWFraW5nL00Ka2F5by9NRFNHCmthem9vL1NNCmtjCmtlYmFiL1NNCmtlZGdlcmVlCmtlZWwvTURTRwprZWVsaGF1bC9ER1MKa2Vlbi9NRFJZU1RHUAprZWVubmVzcy9NCmtlZXAvTVJTWkcKa2VlcGVyL00Ka2VlcGluZy9NCmtlZXBzYWtlL01TCmtlZy9TTQprZWxwL00Ka2VsdmluL1NNCmtlbi9TTQprZW5uZWQKa2VubmVsL1NHTUQKa2VubmluZwprZW5vL00Ka2VwaS9NUwprZXB0CmtlcmF0aW4vTQprZXJhdGl0aXMKa2VyYnNpZGUKa2VyY2hpZWYvU00Ka2VyZnVmZmxlL1MKa2VybmVsL1NNCmtlcm9zZW5lL00Ka2VzdHJlbC9NUwprZXRjaC9NUwprZXRjaHVwL00Ka2V0dGxlL1NNCmtldHRsZWRydW0vU00Ka2V5L1NHTUQKa2V5YmluZGluZy9TCmtleWJvYXJkL1pHU01EUgprZXlib2FyZGVyL00Ka2V5Ym9hcmRpc3QvU00Ka2V5aG9sZS9NUwprZXlub3RlL01aR0RSUwprZXlub3Rlci9NCmtleXBhZC9TTQprZXlwdW5jaC9aR01EUlMKa2V5cHVuY2hlci9NCmtleXN0b25lL01TCmtleXN0cm9rZS9TTQprZXl3b3JkL01TCmtnCmtoYWtpL1NNCmtoYW4vTVMKa2liYmxlL0RTTUcKa2liYnV0ei9NUwpraWJidXR6aW0Ka2liaXR6L1pHRFJTCmtpYml0emVyL00Ka2lib3NoL00Ka2ljay9NRFJTWkcKa2lja2JhY2svU00Ka2lja2JhbGwvTQpraWNrYm94aW5nCmtpY2tlci9NCmtpY2tvZmYvTVMKa2lja3N0YW5kL01TCmtpY2t5L1JUCmtpZC9TTQpraWRkZWQKa2lkZGVyL1NNCmtpZGRpZS9TTQpraWRkaW5nCmtpZGRpc2gKa2lkZG8vU00Ka2lkbmFwL1MKa2lkbmFwcGVkCmtpZG5hcHBlci9NUwpraWRuYXBwaW5nL01TCmtpZG5leS9TTQpraWRza2luL00Ka2llbGJhc2EvTVMKa2llbGJhc2kKa2lrZS9TCmtpbGwvSk1EUlNaRwpraWxsZGVlci9TTQpraWxsZXIvTQpraWxsaW5nL00Ka2lsbGpveS9TTQpraWxuL01EU0cKa2lsby9NUwpraWxvYnl0ZS9TTQpraWxvY3ljbGUvU00Ka2lsb2dyYW0vU00Ka2lsb2hlcnR6L00Ka2lsb2xpdGVyL01TCmtpbG9tZXRlci9NUwpraWxvdG9uL1NNCmtpbG93YXR0L1NNCmtpbHQvTURSUwpraWx0ZXIvTQpraW1vbm8vTVMKa2luL00Ka2luYXNlCmtpbmQncwpraW5kL1VQUllUCmtpbmRhCmtpbmRlcmdhcnRlbi9NUwpraW5kZXJnYXJ0bmVyL1NNCmtpbmRoZWFydGVkL1BZCmtpbmRoZWFydGVkbmVzcy9NCmtpbmRsZS9BR0RTCmtpbmRsaW5lc3MvTQpraW5kbGluZy9NCmtpbmRseS9VUlQKa2luZG5lc3MvVU0Ka2luZG5lc3NlcwpraW5kcmVkL00Ka2luZHMKa2luZS9TCmtpbmVtYXRpYy9TCmtpbmVtYXRpY3MvTQpraW5ldGljL1MKa2luZXRpY2FsbHkKa2luZXRpY3MvTQpraW5mb2xrL1NNCmtpbmZvbGtzL00Ka2luZy9NWVMKa2luZ2RvbS9TTQpraW5nZmlzaGVyL1NNCmtpbmdseS9SVApraW5nbWFrZXIvUwpraW5ncGluL1NNCmtpbmdzaGlwL00Ka2luay9NRFNHCmtpbmtpbHkKa2lua2luZXNzL00Ka2lua3kvVFBSCmtpbnNmb2xrL00Ka2luc2hpcC9NCmtpbnNtYW4vTQpraW5zbWVuCmtpbnN3b21hbi9NCmtpbnN3b21lbgpraW9zay9TTQpraXAvU00Ka2lwcGVkCmtpcHBlci9NREdTCmtpcHBpbmcKa2lyc2NoL01TCmtpc21ldC9NCmtpc3MvTURSU0JaRwpraXNzZXIvTQpraXNzb2ZmL1NNCmtpc3NvZ3JhbS9TCmtpdC9TR01ECmtpdGNoZW4vU00Ka2l0Y2hlbmV0dGUvTVMKa2l0Y2hlbndhcmUvTQpraXRlL01TCmtpdGgvTQpraXRzY2gvTQpraXRzY2h5CmtpdHRlZApraXR0ZW4vTVMKa2l0dGVuaXNoCmtpdHRpbmcKa2l0dHkvU00Ka2l3aS9NUwpraXdpZnJ1aXQvTVMKa2wKa2xheG9uL1MKa2xlcHRvY3JhY3kKa2xlcHRvbWFuaWEvTQprbGVwdG9tYW5pYWMvU00Ka2x1ZGdlL0dEUwprbHVnZS9EUwprbHV0ei9NUwprbHV0emluZXNzL00Ka2x1dHp5L1RSUAprbQprbgprbmFjay9TWk1SCmtuYWNrZXIvR0QKa25hcHNhY2svTVMKa25hdmUvU00Ka25hdmVyeS9NCmtuYXZpc2gvWQprbmVhZC9TWkdEUgprbmVhZGVyL00Ka25lZS9NRFMKa25lZWNhcC9TTQprbmVlY2FwcGVkCmtuZWVjYXBwaW5nCmtuZWVpbmcKa25lZWwvU0cKa25lbGwvU0dNRAprbmVsdAprbmV3CmtuaWNrZXIvUwprbmlja2VyYm9ja2Vycy9NCmtuaWNrZXJzL00Ka25pY2trbmFjay9NUwprbmlmZS9EU01HCmtuaWdodC9NRFlTRwprbmlnaHRob29kL01TCmtuaWdodGxpbmVzcy9NCmtuaXNoL01TCmtuaXQvTVMKa25pdHRlZAprbml0dGVyL1NNCmtuaXR0aW5nL00Ka25pdHdlYXIvTQprbml2ZXMKa25vYi9NUwprbm9iYmx5Cmtub2JieS9UUgprbm9jay9TWkdNRFIKa25vY2thYm91dAprbm9ja2Rvd24vU00Ka25vY2tlci9NCmtub2Nrb2ZmL1NNCmtub2Nrb3V0L1NNCmtub2Nrd3Vyc3QvU00Ka25vbGwvU00Ka25vdC9NUwprbm90aG9sZS9TTQprbm90dGVkCmtub3R0aW5nCmtub3R0eS9UUgprbm93L1NCCmtub3dpbmcvVVlTCmtub3dsZWRnZS9NCmtub3dsZWRnZWFibGUKa25vd2xlZGdlYWJseQprbm93bgprbnVja2xlL0RTTUcKa251Y2tsZWR1c3Rlci9TCmtudWNrbGVoZWFkL01TCmtudXJsL1NHTUQKa29hbGEvU00Ka29hbi9TCmtvaGwKa29obHJhYmkvTQprb2hscmFiaWVzCmtvbGEvTVMKa29vay9NUwprb29rYWJ1cnJhL1NNCmtvb2tpbmVzcy9NCmtvb2t5L1RQUgprb3BlY2svTVMKa29ybWEKa29zaGVyL0RTRwprb3d0b3cvR01EUwprcGgKa3JhYWwvU00Ka3JhdXQvU00hCmtyaWxsL00Ka3JvbmEvTQprcm9uZS9STQprcm9ub3IKa3JvbnVyCmtyeXB0b24vTQprdAprdWNoZW4vU00Ka3Vkb3MvTQprdWR6dS9TTQprdW1xdWF0L01TCmt2ZXRjaC9aR01EUlMKa3ZldGNoZXIvTQprdwpsL1NEWFRHSgpsYS9NCmxhYi9TTQpsYWJlbCdzCmxhYmVsL0FTREcKbGFiZWxlZC9VCmxhYmlhCmxhYmlhbC9TTQpsYWJpbGUKbGFiaXVtL00KbGFib3IvU01EUlpHCmxhYm9yYXRvcnkvU00KbGFib3Jlci9NCmxhYm9yaW91cy9QWQpsYWJvcmlvdXNuZXNzL00KbGFib3JzYXZpbmcKbGFidXJudW0vTVMKbGFieXJpbnRoL00KbGFieXJpbnRoaW5lCmxhYnlyaW50aHMKbGFjL00KbGFjZSdzCmxhY2UvVUdEUwpsYWNlcmF0ZS9EU0dOWApsYWNlcmF0aW9uL00KbGFjZXdpbmcvU00KbGFjZXdvcmsvTQpsYWNocnltYWwKbGFjaHJ5bW9zZQpsYWNrL01EU0cKbGFja2FkYWlzaWNhbC9ZCmxhY2tleS9TTQpsYWNrbHVzdGVyCmxhY29uaWMKbGFjb25pY2FsbHkKbGFjcXVlci9HTURTCmxhY3Jvc3NlL00KbGFjdGF0ZS9HTkRTCmxhY3RhdGlvbi9NCmxhY3RlYWwKbGFjdGljCmxhY3Rvc2UvTQpsYWN1bmEvTQpsYWN1bmFlCmxhY3kvUlQKbGFkL1NHTUROSgpsYWRkZXIvR1NNRApsYWRkaWUvU00KbGFkZGlzaC9QCmxhZGUvUwpsYWRlbi9VCmxhZGluZy9NCmxhZGxlL0RTTUcKbGFkeS9TTQpsYWR5YmlyZC9TTQpsYWR5YnVnL01TCmxhZHlmaW5nZXIvTVMKbGFkeWxpa2UvVQpsYWR5bG92ZS9NUwpsYWR5c2hpcC9NUwpsYWV0cmlsZS9NCmxhZy9TWk1SCmxhZ2VyL00KbGFnZ2FyZC9NWVMKbGFnZ2VkCmxhZ2dpbmcvTQpsYWduaWFwcGUvU00KbGFnb29uL1NNCmxhaWQvSUEKbGFpbgpsYWlyL01TCmxhaXJkL1NNCmxhaXR5L00KbGFrZS9NUwpsYWtlZnJvbnQvUwpsYWtlc2lkZQpsYW0vU00KbGFtYS9NUwpsYW1hc2VyeS9TTQpsYW1iL01EU0cKbGFtYmFkYS9NUwpsYW1iYXN0ZS9HRFMKbGFtYmRhL1NNCmxhbWJlbmN5L00KbGFtYmVudC9ZCmxhbWJraW4vU00KbGFtYnNraW4vU00KbGFtYnN3b29sCmxhbWUvTVlaVEdEUlNQCmxhbWVicmFpbi9NRFMKbGFtZW5lc3MvTQpsYW1lbnQvQlNNREcKbGFtZW50YWJseQpsYW1lbnRhdGlvbi9NUwpsYW1pbmEvTQpsYW1pbmFlCmxhbWluYXIKbGFtaW5hdGUvTUdORFMKbGFtaW5hdGlvbi9NCmxhbW1lZApsYW1taW5nCmxhbXAvTVMKbGFtcGJsYWNrL00KbGFtcGxpZ2h0L01SWgpsYW1wbGlnaHRlci9NCmxhbXBvb24vU0dNRApsYW1wcG9zdC9TTQpsYW1wcmV5L01TCmxhbXBzaGFkZS9TTQpsYW5haS9TTQpsYW5jZS9EUlNNWkcKbGFuY2VyL00KbGFuY2V0L1NNCmxhbmQvTURSU0dKCmxhbmRhdS9TTQpsYW5kZmFsbC9NUwpsYW5kZmlsbC9NUwpsYW5kaG9sZGVyL1NNCmxhbmRob2xkaW5nL01TCmxhbmRpbmcvTQpsYW5kbGFkeS9TTQpsYW5kbGVzcy9NCmxhbmRsaW5lL01TCmxhbmRsb2NrZWQKbGFuZGxvcmQvTVMKbGFuZGx1YmJlci9NUwpsYW5kbWFyay9NUwpsYW5kbWFzcy9NUwpsYW5kbWluZS9TCmxhbmRvd25lci9NUwpsYW5kb3duZXJzaGlwCmxhbmRvd25pbmcvU00KbGFuZHNjYXBlL01aR0RSUwpsYW5kc2NhcGVyL00KbGFuZHNsaWQKbGFuZHNsaWRlL01HUwpsYW5kc2xpcC9TCmxhbmRzbWFuL00KbGFuZHNtZW4KbGFuZHdhcmQvUwpsYW5lL01TCmxhbmd1YWdlL01TCmxhbmd1aWQvUFkKbGFuZ3VpZG5lc3MvTQpsYW5ndWlzaC9EU0cKbGFuZ3Vvci9TTQpsYW5ndW9yb3VzL1kKbGFuay9SWVRQCmxhbmtpbmVzcy9NCmxhbmtuZXNzL00KbGFua3kvUlRQCmxhbm9saW4vTQpsYW50ZXJuL01TCmxhbnRoYW51bS9NCmxhbnlhcmQvTVMKbGFwL1NNCmxhcGFyb3Njb3BpYwpsYXBhcm9zY29weQpsYXBhcm90b215CmxhcGJvYXJkL1NNCmxhcGRvZy9TTQpsYXBlbC9TTQpsYXBpZGFyeS9TTQpsYXBpbi9TTQpsYXBwZWQKbGFwcGV0L1NNCmxhcHBpbmcKbGFwc2UvQUtHTVNECmxhcHRvcC9TTQpsYXB3aW5nL01TCmxhcmJvYXJkL1NNCmxhcmNlbmlzdC9TTQpsYXJjZW5vdXMKbGFyY2VueS9TTQpsYXJjaC9NUwpsYXJkL01EUlNaRwpsYXJkZXIvTQpsYXJkeS9SVApsYXJnZS9SU1BNWVQKbGFyZ2VoZWFydGVkCmxhcmdlbmVzcy9NCmxhcmdlc3MvTQpsYXJnaXNoCmxhcmdvL1NNCmxhcmlhdC9TTQpsYXJrL01EU0cKbGFya3NwdXIvU00KbGFydmEvTQpsYXJ2YWUKbGFydmFsCmxhcnluZ2VhbApsYXJ5bmdlcwpsYXJ5bmdpdGlzL00KbGFyeW54L00KbGFzYWduYS9NUwpsYXNjaXZpb3VzL1lQCmxhc2NpdmlvdXNuZXNzL00KbGFzZS9aR0RSUwpsYXNlci9NCmxhc2gvTURTR0oKbGFzaGluZy9NCmxhc3MvTVMKbGFzc2llL1NNCmxhc3NpdHVkZS9NCmxhc3NvL1NNREcKbGFzdC9NRFlTRwpsYXN0aW5nL1kKbGF0L1MKbGF0Y2gncwpsYXRjaC9VRFNHCmxhdGNoa2V5L1NNCmxhdGUvWVRSUApsYXRlY29tZXIvTVMKbGF0ZW5jeS9NCmxhdGVuZXNzL00KbGF0ZW50CmxhdGVyYWwvTURZU0cKbGF0ZXN0L00KbGF0ZXgvTQpsYXRoL01EUlNaRwpsYXRoZS9NCmxhdGhlci9HTUQKbGF0aGVyeQpsYXRocwpsYXRpY2VzCmxhdGlzaApsYXRpdHVkZS9NUwpsYXRpdHVkaW5hbApsYXRpdHVkaW5hcmlhbi9NUwpsYXRyaW5lL01TCmxhdHRlL1JTTQpsYXR0ZXIvTVkKbGF0dGljZS9NRFMKbGF0dGljZXdvcmsvU00KbGF1ZC9NRFNHQgpsYXVkYWJseQpsYXVkYW51bS9NCmxhdWRhdG9yeQpsYXVnaC9CTURHCmxhdWdoYWJseQpsYXVnaGluZy9NWQpsYXVnaGluZ3N0b2NrL1NNCmxhdWdocwpsYXVnaHRlci9NCmxhdW5jaC9BR01EUwpsYXVuY2hlci9TTQpsYXVuY2hwYWQvU00KbGF1bmRlci9EUlpHUwpsYXVuZGVyZXIvTQpsYXVuZGVyZXR0ZS9TTQpsYXVuZHJlc3MvTVMKbGF1bmRyb21hdC9NUwpsYXVuZHJ5L1NNCmxhdW5kcnltYW4vTQpsYXVuZHJ5bWVuCmxhdW5kcnl3b21hbi9NCmxhdW5kcnl3b21lbgpsYXVyZWF0ZS9NUwpsYXVyZWF0ZXNoaXAvTQpsYXVyZWwvU00KbGF2L1NHRApsYXZhL00KbGF2YWdlL00KbGF2YWxpZXJlL1NNCmxhdmF0b3JpYWwKbGF2YXRvcnkvU00KbGF2ZS9TCmxhdmVuZGVyL1NNCmxhdmlzaC9QVEdEUlNZCmxhdmlzaG5lc3MvTQpsYXcvU00KbGF3YnJlYWtlci9TTQpsYXdicmVha2luZy9NCmxhd2Z1bC9VUFkKbGF3ZnVsbmVzcy9VTQpsYXdnaXZlci9NUwpsYXdsZXNzL1BZCmxhd2xlc3NuZXNzL00KbGF3bWFrZXIvTVMKbGF3bWFraW5nL00KbGF3bWFuL00KbGF3bWVuCmxhd24vTVMKbGF3bm1vd2VyL1NNCmxhd3JlbmNpdW0vTQpsYXdzdWl0L01TCmxhd3llci9TTQpsYXgvVFJZUApsYXhhdGl2ZS9NUwpsYXhpdHkvTQpsYXhuZXNzL00KbGF5L0FJQ1NHTQpsYXlhYm91dC9TCmxheWF3YXkvTQpsYXllci9DU00KbGF5ZXJlZApsYXllcmluZy9NCmxheWV0dGUvTVMKbGF5bWFuL00KbGF5bWVuCmxheW9mZi9TTQpsYXlvdXQvU00KbGF5b3Zlci9NUwpsYXlwZW9wbGUKbGF5cGVyc29uL01TCmxheXVwL1NNCmxheXdvbWFuL00KbGF5d29tZW4KbGF6ZS9NR0RTCmxhemlseQpsYXppbmVzcy9NCmxhenkvRFJTVEdQCmxhenlib25lcy9NCmxiL1MKbGJ3CmxlYS9TTQpsZWFjaC9EU0cKbGVhZC9NRE5SU1pHCmxlYWRlci9NCmxlYWRlcmxlc3MKbGVhZGVyc2hpcC9TTQpsZWFkaW5nL00KbGVhZi9NRFNHCmxlYWZhZ2UvTQpsZWFmbGVzcwpsZWFmbGV0L0dNRFMKbGVhZnN0YWxrL01TCmxlYWZ5L1JUCmxlYWd1ZS9EU01HCmxlYWsvTURTRwpsZWFrYWdlL01TCmxlYWtpbmVzcy9NCmxlYWt5L1BSVApsZWFuL01EUlNUR0pQCmxlYW5pbmcvTQpsZWFubmVzcy9NCmxlYXAvTURSU1pHCmxlYXBlci9NCmxlYXBmcm9nL01TCmxlYXBmcm9nZ2VkCmxlYXBmcm9nZ2luZwpsZWFybi9BVUdEUwpsZWFybmVkbHkKbGVhcm5lci9NUwpsZWFybmluZydzCmxlYXNlL0FEU01HCmxlYXNlYmFjay9TTQpsZWFzZWhvbGQvTVJTWgpsZWFzZWhvbGRlci9NCmxlYXNlci9TTQpsZWFzaCdzCmxlYXNoL1VEU0cKbGVhc3QvTQpsZWFzdHdpc2UKbGVhdGhlci9NUwpsZWF0aGVyZXR0ZS9NCmxlYXRoZXJuZWNrL01TCmxlYXRoZXJ5CmxlYXZlL0RSU01aR0oKbGVhdmVuL1NHTUQKbGVhdmVuZWQvVQpsZWF2ZW5pbmcvTQpsZWF2ZXIvTQpsZWF2aW5ncy9NCmxlY2gvTURSU1pHCmxlY2hlci9NCmxlY2hlcm91cy9QWQpsZWNoZXJvdXNuZXNzL00KbGVjaGVyeS9NCmxlY2l0aGluL00KbGVjdGVybi9NUwpsZWN0dXJlL01aR0RSUwpsZWN0dXJlci9NCmxlY3R1cmVzaGlwL1NNCmxlZGdlL1JTTVoKbGVkZ2VyL00KbGVlL1JTTVoKbGVlY2gvTURTRwpsZWVrL01TCmxlZXIvTURHCmxlZXJpbmVzcy9NCmxlZXJ5L1JQVApsZWV3YXJkL1NNCmxlZXdheS9NCmxlZnQvTVJTVApsZWZ0aXNtL00KbGVmdGlzdC9TTQpsZWZ0bW9zdApsZWZ0b3Zlci9TTQpsZWZ0d2FyZC9TCmxlZnR5L1NNCmxlZy9TTQpsZWdhY3kvU00KbGVnYWwvU01ZCmxlZ2FsZXNlL00KbGVnYWxpc20vTVMKbGVnYWxpc3RpYwpsZWdhbGlzdGljYWxseQpsZWdhbGl0eS9TTQpsZWdhbGl6YXRpb24vTQpsZWdhbGl6ZS9HRFMKbGVnYXRlL0NYTU5TCmxlZ2F0ZWUvTVMKbGVnYXRpb24ncy9BQwpsZWdhdG8vU00KbGVnZW5kL1NNCmxlZ2VuZGFyaWx5CmxlZ2VuZGFyeQpsZWdlcmRlbWFpbi9NCmxlZ2dlZApsZWdnaW5lc3MvTQpsZWdnaW5nL01TCmxlZ2d5L1JQVApsZWdob3JuL01TCmxlZ2liaWxpdHkvTQpsZWdpYmxlCmxlZ2libHkKbGVnaW9uL1NNCmxlZ2lvbmFyeS9TTQpsZWdpb25uYWlyZS9TTQpsZWdpc2xhdGUvRFNHTlYKbGVnaXNsYXRpb24vTQpsZWdpc2xhdGl2ZS9ZCmxlZ2lzbGF0b3IvTVMKbGVnaXNsYXR1cmUvU00KbGVnaXQKbGVnaXRpbWFjeS9NCmxlZ2l0aW1hdGUvRFNZRwpsZWdpdGltYXRpemUvR0RTCmxlZ2l0aW1pemF0aW9uL00KbGVnaXRpbWl6ZS9EU0cKbGVnbGVzcwpsZWdtYW4vTQpsZWdtZW4KbGVncm9vbS9TTQpsZWd1bWUvTVMKbGVndW1pbm91cwpsZWd3YXJtZXIvUwpsZWd3b3JrL00KbGVpL1NNCmxlaXN1cmUvRE1ZCmxlaXN1cmVsaW5lc3MvTQpsZWlzdXJld2Vhci9NCmxlaXRtb3RpZi9NUwpsZWl0bW90aXYvTVMKbGVtbWEvUwpsZW1tZS9KRwpsZW1taW5nL00KbGVtb24vU00KbGVtb25hZGUvU00KbGVtb25ncmFzcwpsZW1vbnkKbGVtdXIvU00KbGVuZC9SU1pHCmxlbmRlci9NCmxlbmd0aC9NTlgKbGVuZ3RoZW4vR0QKbGVuZ3RoaWx5Cmxlbmd0aGluZXNzL00KbGVuZ3RocwpsZW5ndGh3aXNlCmxlbmd0aHkvUFJUCmxlbmllbmNlL00KbGVuaWVuY3kvTQpsZW5pZW50L1kKbGVuaXRpdmUKbGVucy9NUwpsZW50CmxlbnRpbC9NUwpsZW50bwpsZW9uaW5lCmxlb3BhcmQvU00KbGVvcGFyZGVzcy9NUwpsZW90YXJkL1NNCmxlcGVyL1NNCmxlcHJlY2hhdW4vTVMKbGVwcm9zeS9NCmxlcHJvdXMKbGVwdGEKbGVwdG9uL01TCmxlc2JpYW4vU00KbGVzYmlhbmlzbS9NCmxlc2lvbi9NUwpsZXNzL01OUlgKbGVzc2VlL01TCmxlc3Nlbi9HRApsZXNzb24vTVMKbGVzc29yL01TCmxldC9JU00KbGV0ZG93bi9TTQpsZXRoYWwvWQpsZXRoYXJnaWMKbGV0aGFyZ2ljYWxseQpsZXRoYXJneS9NCmxldHRlci9aR01EUlMKbGV0dGVyYm9tYi9TCmxldHRlcmJveC9TCmxldHRlcmVkL1UKbGV0dGVyZXIvTQpsZXR0ZXJoZWFkL01TCmxldHRlcmluZy9NCmxldHRlcnByZXNzL00KbGV0dGluZy9TCmxldHR1Y2UvTVMKbGV0dXAvU00KbGV1Y2luZQpsZXVjb3RvbXkvUwpsZXVrZW1pYS9NCmxldWtlbWljL1NNCmxldWtvY3l0ZS9NUwpsZXZlZS9TTQpsZXZlbC9QU1pHTURSWQpsZXZlbGVyL00KbGV2ZWxoZWFkZWQvUApsZXZlbGhlYWRlZG5lc3MvTQpsZXZlbG5lc3MvTQpsZXZlci9TR01ECmxldmVyYWdlJ3MKbGV2ZXJhZ2UvQ0RTRwpsZXZpYXRoYW4vTVMKbGV2aWVyL00KbGV2aXRhdGUvRFNHTgpsZXZpdGF0aW9uL00KbGV2aXR5L00KbGV2eS9EUlNNWkcKbGV3ZC9SWVBUCmxld2RuZXNzL00KbGV4ZXIvUwpsZXhpY2FsCmxleGljb2dyYXBoZXIvTVMKbGV4aWNvZ3JhcGhpYwpsZXhpY29ncmFwaGljYWwKbGV4aWNvZ3JhcGh5L00KbGV4aWNvbi9TTQpsZXhpcwpsZwpsaWFiaWxpdGllcwpsaWFiaWxpdHkvQU0KbGlhYmxlL0EKbGlhaXNlL0dEUwpsaWFpc29uL01TCmxpYXIvTVMKbGliL00KbGliYXRpb24vU00KbGliYmVyL01TCmxpYmVsL1NaR01EUgpsaWJlbGVyL00KbGliZWxvdXMKbGliZXJhbC9NWVBTCmxpYmVyYWxpc20vTQpsaWJlcmFsaXR5L00KbGliZXJhbGl6YXRpb24vU00KbGliZXJhbGl6ZS9HRFMKbGliZXJhbG5lc3MvTQpsaWJlcmF0ZS9DRFNHTgpsaWJlcmF0aW9uL0NNCmxpYmVyYXRvci9NUwpsaWJlcnRhcmlhbi9TTQpsaWJlcnRpbmUvTVMKbGliZXJ0eS9TTQpsaWJpZGluYWwKbGliaWRpbm91cwpsaWJpZG8vTVMKbGlicmFyaWFuL01TCmxpYnJhcmlhbnNoaXAKbGlicmFyeS9TTQpsaWJyZXR0aXN0L01TCmxpYnJldHRvL1NNCmxpY2UKbGljZW5zZS9NR0RTCmxpY2Vuc2VkL1UKbGljZW5zZWUvTVMKbGljZW50aWF0ZS9TTQpsaWNlbnRpb3VzL1lQCmxpY2VudGlvdXNuZXNzL00KbGljaGVuL01TCmxpY2l0L1kKbGljay9NREpTRwpsaWNraW5nL00KbGljb3JpY2UvU00KbGlkL1NNCmxpZGRlZApsaWRsZXNzCmxpZG8vTVMKbGllL0RTTQpsaWVkL01SCmxpZWYvUlQKbGllZ2UvU00KbGllbi9NUwpsaWV1L00KbGlldXRlbmFuY3kvTQpsaWV1dGVuYW50L01TCmxpZmUvTVpSCmxpZmViZWx0L1MKbGlmZWJsb29kL00KbGlmZWJvYXQvTVMKbGlmZWJ1b3kvTVMKbGlmZWZvcm1zCmxpZmVndWFyZC9TTQpsaWZlbGVzcy9ZUApsaWZlbGVzc25lc3MvTQpsaWZlbGlrZQpsaWZlbGluZS9NUwpsaWZlbG9uZwpsaWZlci9NCmxpZmVzYXZlci9TTQpsaWZlc2F2aW5nL00KbGlmZXNwYW4vUwpsaWZlc3R5bGUvU00KbGlmZXRpbWUvTVMKbGlmZXdvcmsvTVMKbGlmdC9NRFJTWkcKbGlmdGVyL00KbGlmdG9mZi9TTQpsaWdhbWVudC9NUwpsaWdhdGUvR05EUwpsaWdhdGlvbi9NCmxpZ2F0dXJlL01HRFMKbGlnaHQncy9DCmxpZ2h0L0NBU1RHRApsaWdodGVkL1UKbGlnaHRlbi9TRFJaRwpsaWdodGVuZXIvTQpsaWdodGVyL1NNCmxpZ2h0ZmFjZS9NRApsaWdodGhlYWRlZApsaWdodGhlYXJ0ZWQvWVAKbGlnaHRoZWFydGVkbmVzcy9NCmxpZ2h0aG91c2UvTVMKbGlnaHRpbmcncwpsaWdodGx5CmxpZ2h0bmVzcy9NCmxpZ2h0bmluZy9NRFMKbGlnaHRwcm9vZgpsaWdodHNoaXAvTVMKbGlnaHR3ZWlnaHQvU00KbGlnbmVvdXMKbGlnbmluCmxpZ25pdGUvTQpsaWkKbGlrYWJpbGl0eS9NCmxpa2FibGUvUApsaWthYmxlbmVzcy9NCmxpa2UvRU1HRFNUCmxpa2VsaWhvb2QvVU0KbGlrZWxpaG9vZHMKbGlrZWxpbmVzcy9VTQpsaWtlbHkvVVBSVApsaWtlbi9TR0QKbGlrZW5lc3MvVU0KbGlrZW5lc3NlcwpsaWtlcgpsaWtld2lzZQpsaWtpbmcvTQpsaWxhYy9TTQpsaWxsaXB1dGlhbgpsaWxvL1MKbGlsdC9NRFNHCmxpbHkvU00KbGltYi9NUwpsaW1iZXIvVURTRwpsaW1iZXJuZXNzL00KbGltYmxlc3MKbGltYm8vU00KbGltZS9NR0RTCmxpbWVhZGUvU00KbGltZWxpZ2h0L00KbGltZXJpY2svU00KbGltZXNjYWxlCmxpbWVzdG9uZS9NCmxpbWV5L1MKbGltaXQncwpsaW1pdC9DU1pHRFIKbGltaXRhdGlvbi9DTQpsaW1pdGF0aW9ucwpsaW1pdGVkL1UKbGltaXRlcidzCmxpbWl0aW5nL1MKbGltaXRsZXNzL1AKbGltaXRsZXNzbmVzcy9NCmxpbW4vRFNHCmxpbW8vTVMKbGltb3VzaW5lL01TCmxpbXAvTURSWVNQVEcKbGltcGV0L01TCmxpbXBpZC9ZUApsaW1waWRpdHkvTQpsaW1waWRuZXNzL00KbGltcG5lc3MvTQpsaW15L1JUCmxpbmFnZS9NCmxpbmNocGluL1NNCmxpbmRlbi9NUwpsaW5lL01aR0RSU0oKbGluZWFnZS9NUwpsaW5lYWwvWQpsaW5lYW1lbnQvU00KbGluZWFyL1kKbGluZWFyaXR5L00KbGluZWJhY2tlci9NUwpsaW5lZC9VCmxpbmVmZWVkCmxpbmVtYW4vTQpsaW5lbWVuCmxpbmVuL1NNCmxpbmVucy9NCmxpbmVyL00KbGluZXNtYW4vTQpsaW5lc21lbgpsaW5ldXAvTVMKbGluZy9NCmxpbmdlci9aR0pEUlMKbGluZ2VyZXIvTQpsaW5nZXJpZS9NCmxpbmdlcmluZy9ZCmxpbmdvL00KbGluZ29lcwpsaW5ndWFsCmxpbmd1aW5lL00KbGluZ3Vpc3QvU00KbGluZ3Vpc3RpYy9TCmxpbmd1aXN0aWNhbGx5Cmxpbmd1aXN0aWNzL00KbGluaW1lbnQvU00KbGluaW5nL00KbGluay9NRFJTRwpsaW5rYWdlL01TCmxpbmttYW4KbGlua21lbgpsaW5rdXAvTVMKbGlubmV0L01TCmxpbm8KbGlub2xldW0vTQpsaW5zZWVkL00KbGludCdzCmxpbnQvQ0RHCmxpbnRlbC9NUwpsaW50cwpsaW50eS9UUgpsaW9uL01TCmxpb25lc3MvTVMKbGlvbmhlYXJ0ZWQKbGlvbml6YXRpb24vTQpsaW9uaXplL0dEUwpsaXAvU00KbGlwaWQvU00KbGlwb3N1Y3Rpb24vTQpsaXBwZWQKbGlwcHkKbGlwcmVhZC9HUlMKbGlwcmVhZGVyL00KbGlwcmVhZGluZy9NCmxpcHN0aWNrL01EU0cKbGlxCmxpcXVlZmFjdGlvbi9NCmxpcXVlZnkvRFNHCmxpcXVldXIvU00KbGlxdWlkL01TCmxpcXVpZGF0ZS9YR05EUwpsaXF1aWRhdGlvbi9NCmxpcXVpZGF0b3IvTVMKbGlxdWlkaXR5L00KbGlxdWlkaXplL1pHRFJTCmxpcXVpZGl6ZXIvTQpsaXF1b3IvTURHUwpsaXJhL00KbGlyZQpsaXNsZS9NCmxpc3AvTURSU1pHCmxpc3Blci9NCmxpc3NvbWUKbGlzdC9NRE5TSlhHCmxpc3RlZC9VCmxpc3Rlbi9CTURSWkcKbGlzdGVuZXIvTQpsaXN0ZXJpYQpsaXN0aW5nL00KbGlzdGxlc3MvWVAKbGlzdGxlc3NuZXNzL00KbGl0L1pSCmxpdGFueS9TTQpsaXRjaGkvTVMKbGl0ZQpsaXRlci9NCmxpdGVyYWN5L00KbGl0ZXJhbC9TTVlQCmxpdGVyYWxuZXNzL00KbGl0ZXJhcmluZXNzL00KbGl0ZXJhcnkvUApsaXRlcmF0ZS9TTVkKbGl0ZXJhdGkvTQpsaXRlcmF0dXJlL00KbGl0aGUvUlBZVApsaXRoZW5lc3MvTQpsaXRoZXNvbWUKbGl0aGl1bS9NCmxpdGhvZ3JhcGgvTURSWkcKbGl0aG9ncmFwaGVyL00KbGl0aG9ncmFwaGljCmxpdGhvZ3JhcGhpY2FsbHkKbGl0aG9ncmFwaHMKbGl0aG9ncmFwaHkvTQpsaXRob3NwaGVyZS9TTQpsaXRpZ2FudC9TTQpsaXRpZ2F0ZS9EU0dOCmxpdGlnYXRpb24vTQpsaXRpZ2F0b3IvTVMKbGl0aWdpb3VzL1AKbGl0aWdpb3VzbmVzcy9NCmxpdG11cy9NCmxpdG90ZXMvTQpsaXR0ZXIvTURSU1pHCmxpdHRlcmF0ZXVyL01TCmxpdHRlcmJ1Zy9NUwpsaXR0ZXJlci9NCmxpdHRsZS9NVFJQCmxpdHRsZW5lc3MvTQpsaXR0b3JhbC9TTQpsaXR1cmdpY2FsL1kKbGl0dXJnaXN0L1NNCmxpdHVyZ3kvU00KbGl2YWJpbGl0eS9NCmxpdmFibGUvVQpsaXZlL0FUR0RTQgpsaXZlbGlob29kL1NNCmxpdmVsaW5lc3MvTQpsaXZlbG9uZy9TCmxpdmVseS9QUlQKbGl2ZW4vU0dECmxpdmVyJ3MKbGl2ZXIvUwpsaXZlcmllZApsaXZlcmlzaApsaXZlcndvcnQvTVMKbGl2ZXJ3dXJzdC9NCmxpdmVyeS9DU00KbGl2ZXJ5bWFuL0NNCmxpdmVyeW1lbi9DCmxpdmVzdG9jay9NCmxpdmV3YXJlCmxpdmlkL1kKbGl2aW5nL01TCmxpeC9LCmxpemFyZC9NUwpsbApsbGFtYS9TTQpsbGFuby9TTQpsbwpsb2FkJ3MKbG9hZC9BVUdTRApsb2FkYWJsZQpsb2FkZXIvTVMKbG9hZGluZydzCmxvYWYvTURSU1pHCmxvYWZlci9NCmxvYW0vTQpsb2FteS9UUgpsb2FuL01EUlNaRwpsb2FuZXIvTQpsb2Fuc2hhcmtpbmcvTQpsb2Fud29yZC9NUwpsb2F0aC9KWkdEUlMKbG9hdGhlCmxvYXRoZXIvTQpsb2F0aGluZy9NCmxvYXRoc29tZS9QWQpsb2F0aHNvbWVuZXNzL00KbG9hdmVzCmxvYi9TTUQKbG9iYXIKbG9iYmVkCmxvYmJlci9NUwpsb2JiaW5nCmxvYmJ5L0dEU00KbG9iYnlpc3QvTVMKbG9iZS9NUwpsb2JvdG9taXplL0RTRwpsb2JvdG9teS9TTQpsb2JzdGVyL01TCmxvY2FsL1NNWQpsb2NhbGUvTVMKbG9jYWxpdHkvU00KbG9jYWxpemF0aW9uL00KbG9jYWxpemUvRFNHCmxvY2F0ZS9FQUdORFMKbG9jYXRpb24ncy9BCmxvY2F0aW9uL0VTTQpsb2NhdG9yL01TCmxvY2F2b3JlL1NNCmxvY2kKbG9jay9NRFJTQlpHCmxvY2tlci9NCmxvY2tldC9NUwpsb2NramF3L00KbG9ja291dC9NUwpsb2Nrc21pdGgvTQpsb2Nrc21pdGhzCmxvY2tzdGVwL00KbG9ja3VwL01TCmxvY28vUwpsb2NvbW90aW9uL00KbG9jb21vdGl2ZS9NUwpsb2Nvd2VlZC9TTQpsb2N1bS9TCmxvY3VzL00KbG9jdXN0L1NNCmxvY3V0aW9uL01TCmxvZGUvTVMKbG9kZXN0YXIvTVMKbG9kZXN0b25lL01TCmxvZGdlL0RSU0pNWkcKbG9kZ2VyL00KbG9kZ2luZy9NCmxvZGdpbmdzL00KbG9mdC9NRFNHCmxvZnRpbHkKbG9mdGluZXNzL00KbG9mdHkvUFJUCmxvZy9TTQpsb2dhbmJlcnJ5L1NNCmxvZ2FyaXRobS9TTQpsb2dhcml0aG1pYwpsb2dib29rL1NNCmxvZ2UvTVMKbG9nZ2VkCmxvZ2dlci9TTQpsb2dnZXJoZWFkL1NNCmxvZ2dpYS9TTQpsb2dnaW5nL00KbG9naWMvTQpsb2dpY2FsL1kKbG9naWNhbGl0eS9NCmxvZ2ljaWFuL01TCmxvZ2luL1NNCmxvZ2lzdGljL1MKbG9naXN0aWNhbC9ZCmxvZ2lzdGljcy9NCmxvZ2phbS9TTQpsb2dvL01TCmxvZ29mZi9TTQpsb2dvbi9TTQpsb2dvdHlwZS9TTQpsb2dvdXQvU00KbG9ncm9sbGluZy9NCmxvZ3kvUlQKbG9pbi9NUwpsb2luY2xvdGgvTQpsb2luY2xvdGhzCmxvaXRlci9aR1NEUgpsb2l0ZXJlci9NCmxvaXRlcmluZy9NCmxvbGNhdC9TTQpsb2xsL0RTRwpsb2xsaXBvcC9TTQpsb2xsb3AvR1NECmxvbGx5L1MKbG9sbHlnYWcvUwpsb2xseWdhZ2dlZApsb2xseWdhZ2dpbmcKbG9uZS9ZWlIKbG9uZWxpbmVzcy9NCmxvbmVseS9QVFIKbG9uZXIvTQpsb25lc29tZS9ZUApsb25lc29tZW5lc3MvTQpsb25nJ3MKbG9uZy9LRFNURwpsb25nYm9hdC9NUwpsb25nYm93L01TCmxvbmdlcgpsb25nZXZpdHkvTQpsb25naGFpci9NUwpsb25naGFuZC9NCmxvbmdob3JuL01TCmxvbmdob3VzZS9TCmxvbmdpbmcvTVlTCmxvbmdpc2gKbG9uZ2l0dWRlL01TCmxvbmdpdHVkaW5hbC9ZCmxvbmdzaG9yZW1hbi9NCmxvbmdzaG9yZW1lbgpsb25nc2lnaHRlZApsb25nc3RhbmRpbmcKbG9uZ3RpbWUKbG9uZ3VldXIvU00KbG9uZ3dheXMKbG9vCmxvb2ZhaC9NCmxvb2ZhaHMKbG9vay9NRFJTWkcKbG9va2FsaWtlL01TCmxvb2tlci9NCmxvb2tvdXQvTVMKbG9va3VwCmxvb20vTURTRwpsb29uL01TCmxvb25pZS9NCmxvb255L1JTTVQKbG9vcC9NRFNHCmxvb3Bob2xlL01TCmxvb3B5L1JUCmxvb3MvTlJYCmxvb3NlL1VEU1RHCmxvb3NlbHkKbG9vc2VuL1VHU0QKbG9vc2VuZXNzL00KbG9vdC9NRFJTWkcKbG9vdGVyL00KbG9vdGluZy9NCmxvcC9TCmxvcGUvTUdEUwpsb3BwZWQKbG9wcGluZwpsb3BzaWRlZC9ZUApsb3BzaWRlZG5lc3MvTQpsb3F1YWNpb3VzL1BZCmxvcXVhY2lvdXNuZXNzL00KbG9xdWFjaXR5L00KbG9yZC9NRFlTRwpsb3JkbGluZXNzL00KbG9yZGx5L1RQUgpsb3Jkc2hpcC9TTQpsb3JlL00KbG9yZ25ldHRlL1NNCmxvcmlzL01TCmxvcm4KbG9ycnkvU00KbG9zZS9aR1JTSgpsb3Nlci9NCmxvc2luZy9NCmxvc3MvTVMKbG9zc2xlc3MKbG9zdApsb3QvU00KbG90aW9uL1NNCmxvdHRlcnkvU00KbG90dG8vTQpsb3R1cy9NUwpsb3VjaGUKbG91ZC9SWVRQCmxvdWRoYWlsZXIvU00KbG91ZG1vdXRoL01ECmxvdWRtb3V0aHMKbG91ZG5lc3MvTQpsb3Vkc3BlYWtlci9NUwpsb3VnaApsb3VnaHMKbG91bmdlL01aR0RSUwpsb3VuZ2VyL00KbG91ci9EU0cKbG91c2Uncwpsb3VzZS9DRFNHCmxvdXNpbHkKbG91c2luZXNzL00KbG91c3kvVFBSCmxvdXQvTVMKbG91dGlzaC9QWQpsb3V2ZXIvTURTCmxvdmFibGVuZXNzL00KbG92YWJseQpsb3ZlL01ZWkdEUlNCCmxvdmViaXJkL1NNCmxvdmVjaGlsZC9NCmxvdmVkL1UKbG92ZWxlc3MKbG92ZWxpbmVzcy9NCmxvdmVsb3JuCmxvdmVseS9SU01UUApsb3ZlbWFraW5nL00KbG92ZXIvTQpsb3Zlc2ljawpsb3ZleS9TCmxvdmluZy9ZCmxvdy9TWlRHTURSWVAKbG93Ym9ybgpsb3dib3kvTVMKbG93YnJvdy9TTQpsb3dkb3duL00KbG93ZXIvR0QKbG93ZXJjYXNlL00KbG93ZXJtb3N0Cmxvd2lzaApsb3dsYW5kL1NaTVIKbG93bGFuZGVyL00KbG93bGlmZS9TTQpsb3dsaW5lc3MvTQpsb3dseS9UUFIKbG93bmVzcy9NCmxveC9NCmxveWFsL0VUWQpsb3lhbGVyCmxveWFsaXNtL00KbG95YWxpc3QvU00KbG95YWx0aWVzCmxveWFsdHkvRU0KbG96ZW5nZS9TTQpsdGQKbHVhdS9NUwpsdWJiZXIvTVlTCmx1YmUvTUdEUwpsdWJyaWNhbnQvU00KbHVicmljYXRlL0RTR04KbHVicmljYXRpb24vTQpsdWJyaWNhdG9yL01TCmx1YnJpY2lvdXMvWQpsdWJyaWNpdHkvTQpsdWNpZC9QWQpsdWNpZGl0eS9NCmx1Y2lkbmVzcy9NCmx1Y2svTURTRwpsdWNraWx5L1UKbHVja2luZXNzL1VNCmx1Y2tsZXNzCmx1Y2t5L1VQVFIKbHVjcmF0aXZlL1lQCmx1Y3JhdGl2ZW5lc3MvTQpsdWNyZS9NCmx1Y3VicmF0ZS9HTkRTCmx1Y3VicmF0aW9uL00KbHVkaWNyb3VzL1lQCmx1ZGljcm91c25lc3MvTQpsdWRvCmx1ZmYvRFNHCmx1Zy9TTQpsdWdlL1MKbHVnZ2FnZS9NCmx1Z2dlZApsdWdnZXIvTVMKbHVnZ2luZwpsdWdob2xlL1MKbHVnc2FpbC9TTQpsdWd1YnJpb3VzL1lQCmx1Z3VicmlvdXNuZXNzL00KbHVrZXdhcm0vWVAKbHVrZXdhcm1uZXNzL00KbHVsbC9NRFNHCmx1bGxhYnkvU00KbHVsdS9TCmx1bWJhZ28vTQpsdW1iYXIKbHVtYmVyL01EUlpHUwpsdW1iZXJlci9NCmx1bWJlcmluZy9NCmx1bWJlcmphY2svU00KbHVtYmVybWFuL00KbHVtYmVybWVuCmx1bWJlcnlhcmQvU00KbHVtaW5hcnkvU00KbHVtaW5lc2NlbmNlL00KbHVtaW5lc2NlbnQKbHVtaW5vc2l0eS9NCmx1bWlub3VzL1kKbHVtbW94L01TCmx1bXAvTUROU0cKbHVtcGVjdG9teS9TCmx1bXBpbmVzcy9NCmx1bXBpc2gKbHVtcHkvVFJQCmx1bmFjeS9TTQpsdW5hcgpsdW5hdGljL1NNCmx1bmNoL0dNRFMKbHVuY2hib3gvUwpsdW5jaGVvbi9TTQpsdW5jaGVvbmV0dGUvU00KbHVuY2hyb29tL01TCmx1bmNodGltZS9NUwpsdW5nL01EU0cKbHVuZ2UvU00KbHVuZ2Zpc2gvTVMKbHVuZ2Z1bC9TCmx1bmtoZWFkL01TCmx1cGluZS9NUwpsdXB1cy9NCmx1cmNoL0dNRFMKbHVyZS9NR0RTCmx1cmd5Cmx1cmlkL1BZCmx1cmlkbmVzcy9NCmx1cmsvRFJTWkcKbHVzY2lvdXMvUFkKbHVzY2lvdXNuZXNzL00KbHVzaC9NUlNZUFQKbHVzaG5lc3MvTQpsdXN0L01EUlNHCmx1c3Rlci9NCmx1c3Rlcmxlc3MKbHVzdGZ1bC9ZCmx1c3RpbHkKbHVzdGluZXNzL00KbHVzdHJvdXMvWQpsdXN0eS9QVFIKbHV0YW5pc3QvU00KbHV0ZS9NUwpsdXRlbmlzdC9TTQpsdXRldGl1bS9NCmx1eHVyaWFuY2UvTQpsdXh1cmlhbnQvWQpsdXh1cmlhdGUvRFNHTgpsdXh1cmlhdGlvbi9NCmx1eHVyaW91cy9QWQpsdXh1cmlvdXNuZXNzL00KbHV4dXJ5L1NNCmx2aQpsdmlpCmx4aQpseGlpCmx4aXYKbHhpeApseHZpCmx4dmlpCmx5Y2V1bS9NUwpseWNoZ2F0ZS9TCmx5ZS9NRwpseWluZy9NCmx5bXBoL00KbHltcGhhdGljL1NNCmx5bXBob2N5dGUvU00KbHltcGhvaWQKbHltcGhvbWEvU00KbHluY2gvSlpHRFJTCmx5bmNoZXIvTQpseW5jaGluZy9NCmx5bngvTVMKbHlyZS9NUwpseXJlYmlyZC9NUwpseXJpYy9TTQpseXJpY2FsL1kKbHlyaWNpc20vTQpseXJpY2lzdC9TTQpseXNvc29tYWwKbHlzb3NvbWVzCm0vS0FTCm1hJ2FtCm1hL1NNSAptYWMvU0dNRAptYWNhYnJlCm1hY2FkYW0vTQptYWNhZGFtaWEvU00KbWFjYWRhbWl6ZS9HRFMKbWFjYXF1ZS9NUwptYWNhcm9uaS9NUwptYWNhcm9vbi9NUwptYWNhdy9TTQptYWNlL01TCm1hY2VyYXRlL0RTR04KbWFjZXJhdGlvbi9NCm1hY2gvTQptYWNoZXRlL1NNCm1hY2hpbmF0ZS9HTkRTWAptYWNoaW5hdGlvbi9NCm1hY2hpbmUvRFNNR0IKbWFjaGluZXJ5L00KbWFjaGluaXN0L01TCm1hY2hpc21vL00KbWFjaG8vTQptYWNrZXJlbC9TTQptYWNraW5hdy9TTQptYWNraW50b3NoL01TCm1hY3JhbWUvTQptYWNyby9TTQptYWNyb2Jpb3RpYy9TCm1hY3JvYmlvdGljcy9NCm1hY3JvY29zbS9TTQptYWNyb2Vjb25vbWljL1MKbWFjcm9lY29ub21pY3MvTQptYWNyb2xvZ3kvUwptYWNyb24vTVMKbWFjcm9waGFnZXMKbWFjcm9zY29waWMKbWFkL1NNWVAKbWFkYW0vU00KbWFkYW1lL00KbWFkY2FwL01TCm1hZGRlbi9ER1MKbWFkZGVuaW5nL1kKbWFkZGVyL01TCm1hZGRlc3QKbWFkZGluZwptYWRlL0FVCm1hZGVtb2lzZWxsZS9NUwptYWRob3VzZS9TTQptYWRtYW4vTQptYWRtZW4KbWFkbmVzcy9NCm1hZHJhcy9NUwptYWRyYXNhL1NNCm1hZHJhc2FoL00KbWFkcmFzYWhzCm1hZHJhc3NhL1NNCm1hZHJpZ2FsL1NNCm1hZHdvbWFuL00KbWFkd29tZW4KbWFlbHN0cm9tL1NNCm1hZXN0cm8vU00KbWFmaWEvU00KbWFmaW9zaQptYWZpb3NvL00KbWFnL1NNCm1hZ2F6aW5lL1NNCm1hZ2UvTVMKbWFnZW50YS9NCm1hZ2dvdC9NUwptYWdnb3R5Cm1hZ2kvTQptYWdpYy9TTQptYWdpY2FsL1kKbWFnaWNpYW4vU00KbWFnaWNrZWQKbWFnaWNraW5nCm1hZ2lzdGVyaWFsL1kKbWFnaXN0cmFjeS9NCm1hZ2lzdHJhdGUvU00KbWFnbWEvTQptYWduYW5pbWl0eS9NCm1hZ25hbmltb3VzL1kKbWFnbmF0ZS9TTQptYWduZXNpYS9NCm1hZ25lc2l1bS9NCm1hZ25ldC9NUwptYWduZXRpYwptYWduZXRpY2FsbHkKbWFnbmV0aXNtL00KbWFnbmV0aXRlL00KbWFnbmV0aXphYmxlCm1hZ25ldGl6YXRpb24vQ00KbWFnbmV0aXplL0NHRFMKbWFnbmV0by9TTQptYWduZXRvbWV0ZXIvU00KbWFnbmV0b3NwaGVyZQptYWduaWZpY2F0aW9uL00KbWFnbmlmaWNlbmNlL00KbWFnbmlmaWNlbnQvWQptYWduaWZpZXIvTQptYWduaWZ5L1pHWERSU04KbWFnbmlsb3F1ZW5jZS9NCm1hZ25pbG9xdWVudAptYWduaXR1ZGUvU00KbWFnbm9saWEvTVMKbWFnbnVtL01TCm1hZ3BpZS9NUwptYWd1cy9NCm1haGFyYWphaC9NCm1haGFyYWphaHMKbWFoYXJhbmkvU00KbWFoYXJpc2hpL1NNCm1haGF0bWEvU00KbWFob2dhbnkvU00KbWFob3V0L01TCm1haWQvTU5TWAptYWlkZW4vTVkKbWFpZGVuaGFpci9NCm1haWRlbmhlYWQvU00KbWFpZGVuaG9vZC9NCm1haWRzZXJ2YW50L1NNCm1haWwvSk1EUlNaRwptYWlsYmFnL1NNCm1haWxib21iL0dTRAptYWlsYm94L01TCm1haWxlci9NCm1haWxpbmcvTQptYWlsbG90L1NNCm1haWxtYW4vTQptYWlsbWVuCm1haWxzaG90L1MKbWFpbS9EU0cKbWFpbi9NWVMKbWFpbmZyYW1lL1NNCm1haW5sYW5kL01TCm1haW5saW5lL01HRFMKbWFpbm1hc3QvTVMKbWFpbnNhaWwvTVMKbWFpbnNwcmluZy9NUwptYWluc3RheS9NUwptYWluc3RyZWFtL1NNREcKbWFpbnRhaW4vWkdCRFJTCm1haW50YWluYWJpbGl0eQptYWludGVuYW5jZS9NCm1haW50b3AvU00KbWFpc29uZXR0ZS9NUwptYWl6ZS9TTQptYWplc3RpYwptYWplc3RpY2FsbHkKbWFqZXN0eS9TTQptYWpvbGljYS9NCm1ham9yL1NHTURZCm1ham9yZG9tby9NUwptYWpvcmV0dGUvTVMKbWFqb3JpdGFyaWFuL1NNCm1ham9yaXRhcmlhbmlzbQptYWpvcml0eS9TTQptYWtlJ3MvQQptYWtlL1VBR1MKbWFrZW92ZXIvTVMKbWFrZXIvU00KbWFrZXNoaWZ0L1NNCm1ha2V1cC9NUwptYWtld2VpZ2h0L1MKbWFraW5nL01TCm1ha2luZ3MvTQptYWxhY2hpdGUvTQptYWxhZGp1c3RlZAptYWxhZGp1c3RtZW50L00KbWFsYWRtaW5pc3RyYXRpb24KbWFsYWRyb2l0L1BZCm1hbGFkcm9pdG5lc3MvTQptYWxhZHkvU00KbWFsYWlzZS9NCm1hbGFtdXRlL01TCm1hbGFwcm9waXNtL1NNCm1hbGFyaWEvTQptYWxhcmlhbAptYWxhcmtleS9NCm1hbGF0aGlvbi9NCm1hbGNvbnRlbnQvTVMKbWFsZS9NUFMKbWFsZWRpY3Rpb24vU00KbWFsZWZhY3Rpb24vTQptYWxlZmFjdG9yL1NNCm1hbGVmaWMKbWFsZWZpY2VuY2UvTQptYWxlZmljZW50Cm1hbGVuZXNzL00KbWFsZXZvbGVuY2UvTQptYWxldm9sZW50L1kKbWFsZmVhc2FuY2UvTQptYWxmb3JtYXRpb24vU00KbWFsZm9ybWVkCm1hbGZ1bmN0aW9uL01EU0cKbWFsaWNlL00KbWFsaWNpb3VzL1BZCm1hbGljaW91c25lc3MvTQptYWxpZ24vRFNHCm1hbGlnbmFuY3kvU00KbWFsaWduYW50L1kKbWFsaWduaXR5L00KbWFsaW5nZXIvWkdTRFIKbWFsaW5nZXJlci9NCm1hbGwvTVMKbWFsbGFyZC9TTQptYWxsZWFiaWxpdHkvTQptYWxsZWFibGUKbWFsbGV0L01TCm1hbGxvdy9NUwptYWxub3VyaXNoZWQKbWFsbnV0cml0aW9uL00KbWFsb2NjbHVzaW9uL00KbWFsb2Rvcm91cwptYWxwcmFjdGljZS9TTQptYWx0L01EU0cKbWFsdGVkL01TCm1hbHRvc2UvTQptYWx0cmVhdC9HTERTCm1hbHRyZWF0bWVudC9NCm1hbHR5L1RSCm1hbHdhcmUvTQptYW0vUwptYW1hL01TCm1hbWJhL1NNCm1hbWJvL1NHTUQKbWFtbWEvTQptYW1tYWwvTVMKbWFtbWFsaWFuL01TCm1hbW1hcnkKbWFtbW9ncmFtL01TCm1hbW1vZ3JhcGh5L00KbWFtbW9uL00KbWFtbW90aC9NCm1hbW1vdGhzCm1hbW15L1NNCm1hbidzL0YKbWFuL1VTWQptYW5hY2xlL0RTTUcKbWFuYWdlL1pHRFJTTAptYW5hZ2VhYmlsaXR5L00KbWFuYWdlYWJsZS9VCm1hbmFnZW1lbnQvTVMKbWFuYWdlci9NCm1hbmFnZXJlc3MvUwptYW5hZ2VyaWFsCm1hbmFuYS9NUwptYW5hdGVlL1NNCm1hbmRhbGEvU00KbWFuZGFtdXMvTVMKbWFuZGFyaW4vTVMKbWFuZGF0ZS9EU01HCm1hbmRhdG9yeQptYW5kaWJsZS9NUwptYW5kaWJ1bGFyCm1hbmRvbGluL01TCm1hbmRyYWtlL01TCm1hbmRyZWwvU00KbWFuZHJpbGwvTVMKbWFuZS9NRFMKbWFuZWdlL00KbWFuZXV2ZXIvTURHU0JKCm1hbmV1dmVyYWJpbGl0eS9NCm1hbmZ1bC9ZCm1hbmdhL00KbWFuZ2FuZXNlL00KbWFuZ2UvRFJNWgptYW5nZXIvTQptYW5nZXRvdXQvUwptYW5naW5lc3MvTQptYW5nbGUvTVpHRFJTCm1hbmdvL00KbWFuZ29lcwptYW5ncm92ZS9NUwptYW5neS9UUlAKbWFuaGFuZGxlL0dEUwptYW5ob2xlL1NNCm1hbmhvb2QvTQptYW5odW50L1NNCm1hbmlhL1NNCm1hbmlhYy9NUwptYW5pYWNhbC9ZCm1hbmljL1NNCm1hbmljYWxseQptYW5pY3VyZS9NR0RTCm1hbmljdXJpc3QvTVMKbWFuaWZlc3QvTURZU0cKbWFuaWZlc3RhdGlvbi9TTQptYW5pZmVzdG8vU00KbWFuaWZvbGQvR01EUwptYW5pa2luL1NNCm1hbmlsYS9NCm1hbmlvYy9NUwptYW5pcHVsYWJsZQptYW5pcHVsYXRlL1hHTlZEUwptYW5pcHVsYXRpb24vTQptYW5pcHVsYXRpdmUvWQptYW5pcHVsYXRvci9NUwptYW5raW5kL00KbWFua3kKbWFubGlrZQptYW5saW5lc3MvTQptYW5seS9VVFIKbWFubmEvTQptYW5uZWQvVQptYW5uZXF1aW4vU00KbWFubmVyL01EWVMKbWFubmVyaXNtL1NNCm1hbm5lcmx5L1UKbWFubmluZy9VCm1hbm5pc2gvWVAKbWFubmlzaG5lc3MvTQptYW5vbWV0ZXIvU00KbWFub3IvU00KbWFub3JpYWwKbWFucG93ZXIvTQptYW5xdWUKbWFuc2FyZC9NUwptYW5zZS9TWE1OCm1hbnNlcnZhbnQvTQptYW5zaW9uL00KbWFuc2xhdWdodGVyL00KbWFudGEvU00KbWFudGVsL01TCm1hbnRlbHBpZWNlL1NNCm1hbnRlbHNoZWxmCm1hbnRlbHNoZWx2ZXMKbWFudGVzCm1hbnRpbGxhL1NNCm1hbnRpcy9NUwptYW50aXNzYS9TTQptYW50bGUncwptYW50bGUvRUdEUwptYW50cmEvTVMKbWFudWFsL01ZUwptYW51ZmFjdHVyZS9EUlNNWkcKbWFudWZhY3R1cmVyL00KbWFudWZhY3R1cmluZy9NCm1hbnVtaXNzaW9uL1NNCm1hbnVtaXQvUwptYW51bWl0dGVkCm1hbnVtaXR0aW5nCm1hbnVyZS9NR0RTCm1hbnVzY3JpcHQvTVMKbWFueS9NCm1hcCdzCm1hcC9BUwptYXBsZS9TTQptYXBtYWtlci9TTQptYXBwZWQvQQptYXBwZXIvTVMKbWFwcGluZy9TCm1hci9TCm1hcmFib3UvTVMKbWFyYWJvdXQvU00KbWFyYWNhL01TCm1hcmFzY2hpbm8vTVMKbWFyYXRob24vU01SWgptYXJhdGhvbmVyL00KbWFyYXVkL1pHRFJTCm1hcmF1ZGVyL00KbWFyYmxlL01HRFMKbWFyYmxlaXplL0dEUwptYXJibGluZy9NCm1hcmNoL1pHTURSUwptYXJjaGVyL00KbWFyY2hpb25lc3MvTVMKbWFyZS9NUwptYXJnYXJpbmUvTQptYXJnYXJpdGEvTVMKbWFyZ2UKbWFyZ2luL01TCm1hcmdpbmFsL1lTCm1hcmdpbmFsaWEvTQptYXJnaW5hbGl6YXRpb24vTQptYXJnaW5hbGl6ZS9HRFMKbWFyaWEvTQptYXJpYWNoaS9NUwptYXJpZ29sZC9NUwptYXJpanVhbmEvTQptYXJpbWJhL1NNCm1hcmluYS9NUwptYXJpbmFkZS9EU01HCm1hcmluYXJhL00KbWFyaW5hdGUvRFNHTgptYXJpbmF0aW9uL00KbWFyaW5lL01aUlMKbWFyaW5lci9NCm1hcmlvbmV0dGUvTVMKbWFyaXRhbC9ZCm1hcml0aW1lCm1hcmpvcmFtL00KbWFyay9BTURTRwptYXJrZG93bi9TTQptYXJrZWQvVQptYXJrZWRseQptYXJrZXIvTVMKbWFya2V0L01EUlpHQlMKbWFya2V0YWJpbGl0eS9NCm1hcmtldGFibGUvVQptYXJrZXRlZXIvU00KbWFya2V0ZXIvTQptYXJrZXRpbmcvTQptYXJrZXRwbGFjZS9TTQptYXJraW5nL1NNCm1hcmtrYS9NCm1hcmtrYWEKbWFya3NtYW4vTQptYXJrc21hbnNoaXAvTQptYXJrc21lbgptYXJrdXAvTVMKbWFybC9NCm1hcmxpbi9NUwptYXJsaW5lc3Bpa2UvU00KbWFybWFsYWRlL00KbWFybW9yZWFsCm1hcm1vc2V0L1NNCm1hcm1vdC9NUwptYXJvb24vTURHUwptYXJxdWUvTVMKbWFycXVlZS9TTQptYXJxdWVzcy9NUwptYXJxdWV0cnkvTQptYXJxdWlzL01TCm1hcnF1aXNlL00KbWFycXVpc2V0dGUvTQptYXJyZWQvVQptYXJyaWFnZS9BU00KbWFycmlhZ2VhYmlsaXR5L00KbWFycmlhZ2VhYmxlCm1hcnJpZWQvU00KbWFycmluZwptYXJyb3cvTVMKbWFycnkvQUdEUwptYXJzaC9NUwptYXJzaGFsL1NNREcKbWFyc2hsYW5kL1NNCm1hcnNobWFsbG93L1NNCm1hcnNoeS9SVAptYXJzdXBpYWwvTVMKbWFydC9NTlNYCm1hcnRlbi9NCm1hcnRlbnNpdGUKbWFydGlhbC9ZCm1hcnRpYW4vUwptYXJ0aW4vTVMKbWFydGluZXQvTVMKbWFydGluZ2FsZS9NUwptYXJ0aW5pL1NNCm1hcnR5ci9NREdTCm1hcnR5cmRvbS9NCm1hcnZlbC9NREdTCm1hcnZlbG91cy9ZCm1hcnppcGFuL00KbWFzYwptYXNjYXJhL0dNRFMKbWFzY290L01TCm1hc2N1bGluZS9TTQptYXNjdWxpbml0eS9NCm1hc2VyL1NNCm1hc2gvTURSU1pHCm1hc2hlci9NCm1hc2h1cC9NUwptYXNrJ3MKbWFzay9VRFNHCm1hc2tlci9NUwptYXNvY2hpc20vTQptYXNvY2hpc3QvU00KbWFzb2NoaXN0aWMKbWFzb2NoaXN0aWNhbGx5Cm1hc29uL1NNCm1hc29uaWMKbWFzb25yeS9NCm1hc3F1ZS9NUwptYXNxdWVyYWRlL0RSU01aRwptYXNxdWVyYWRlci9NCm1hc3MvTURTR1YKbWFzc2FjcmUvTUdEUwptYXNzYWdlL0RTTUcKbWFzc2V1ci9TTQptYXNzZXVzZS9NUwptYXNzaWYvTVMKbWFzc2l2ZS9QWQptYXNzaXZlbmVzcy9NCm1hc3QvTURTCm1hc3RlY3RvbXkvU00KbWFzdGVyJ3MKbWFzdGVyL0FER1MKbWFzdGVyY2xhc3MvUwptYXN0ZXJmdWwvWQptYXN0ZXJseQptYXN0ZXJtaW5kL1NHTUQKbWFzdGVycGllY2UvTVMKbWFzdGVyc3Ryb2tlL1NNCm1hc3RlcndvcmsvTVMKbWFzdGVyeS9NCm1hc3RoZWFkL01TCm1hc3RpYy9NCm1hc3RpY2F0ZS9HTkRTCm1hc3RpY2F0aW9uL00KbWFzdGlmZi9TTQptYXN0aXRpcwptYXN0b2Rvbi9TTQptYXN0b2lkL1NNCm1hc3R1cmJhdGUvR05EUwptYXN0dXJiYXRpb24vTQptYXN0dXJiYXRvcnkKbWF0L1NaR01EUgptYXRhZG9yL1NNCm1hdGNoL0FNUwptYXRjaGJvb2svU00KbWF0Y2hib3gvTVMKbWF0Y2hlZC9VCm1hdGNoaW5nCm1hdGNobGVzcwptYXRjaGxvY2svU00KbWF0Y2htYWtlci9NUwptYXRjaG1ha2luZy9NCm1hdGNoc3RpY2svTVMKbWF0Y2h3b29kL00KbWF0ZS9NUwptYXRlcmlhbC9TTVkKbWF0ZXJpYWxpc20vTQptYXRlcmlhbGlzdC9TTQptYXRlcmlhbGlzdGljCm1hdGVyaWFsaXN0aWNhbGx5Cm1hdGVyaWFsaXphdGlvbi9NCm1hdGVyaWFsaXplL0RTRwptYXRlcmllbC9NCm1hdGVybmFsL1kKbWF0ZXJuaXR5L00KbWF0ZXkvUwptYXRoL00KbWF0aGVtYXRpY2FsL1kKbWF0aGVtYXRpY2lhbi9TTQptYXRoZW1hdGljcy9NCm1hdGhzCm1hdGluZWUvU00KbWF0aW5nL00KbWF0aW5zL00KbWF0cmlhcmNoL00KbWF0cmlhcmNoYWwKbWF0cmlhcmNocwptYXRyaWFyY2h5L1NNCm1hdHJpY2VzCm1hdHJpY2lkYWwKbWF0cmljaWRlL01TCm1hdHJpY3VsYXRlL0RTR04KbWF0cmljdWxhdGlvbi9NCm1hdHJpbW9uaWFsCm1hdHJpbW9ueS9NCm1hdHJpeC9NCm1hdHJvbi9NWVMKbWF0dGUvRFJTTVpHCm1hdHRlci9NREcKbWF0dGluZy9NCm1hdHRvY2svU00KbWF0dHJlc3MvTVMKbWF0dXJhdGUvR05EUwptYXR1cmF0aW9uL00KbWF0dXJlL1lUR0RSUwptYXR1cml0eS9TTQptYXR6by9TTUgKbWF0em9oL00KbWF0em9ocwptYXR6b3QKbWF1ZGxpbgptYXVsL01EUlNaRwptYXVsZXIvTQptYXVuZGVyL1NERwptYXVzb2xldW0vU00KbWF1dmUvTQptYXZlbi9TTQptYXZlcmljay9TTQptYXcvU00KbWF3a2lzaC9QWQptYXdraXNobmVzcy9NCm1heC9HTURTCm1heGkvTVMKbWF4aWxsYS9NCm1heGlsbGFlCm1heGlsbGFyeQptYXhpbS9TTQptYXhpbWFsL1kKbWF4aW1pemF0aW9uL00KbWF4aW1pemUvR0RTCm1heGltdW0vU00KbWF5L00KbWF5YmUvU00KbWF5ZGF5L01TCm1heWZsb3dlci9NUwptYXlmbHkvU00KbWF5aGVtL00KbWF5bid0Cm1heW8vTQptYXlvbm5haXNlL00KbWF5b3IvU00KbWF5b3JhbAptYXlvcmFsdHkvTQptYXlvcmVzcy9NUwptYXlwb2xlL1NNCm1heXN0Cm1hemUvTVMKbWF6dXJrYS9NUwptZHNlCm1lL0RTSAptZWFkL00KbWVhZG93L01TCm1lYWRvd2xhcmsvTVMKbWVhZ2VyL1BZCm1lYWdlcm5lc3MvTQptZWFsL01TCm1lYWxpbmVzcy9NCm1lYWx0aW1lL1NNCm1lYWx5L1RQUgptZWFseWJ1Zy9TTQptZWFseW1vdXRoZWQKbWVhbi9NUllKUFNURwptZWFuZGVyL1NNREpHCm1lYW5kZXJpbmdzL00KbWVhbmllL00KbWVhbmluZy9NCm1lYW5pbmdmdWwvUFkKbWVhbmluZ2Z1bG5lc3MvTQptZWFuaW5nbGVzcy9ZUAptZWFuaW5nbGVzc25lc3MvTQptZWFubmVzcy9NCm1lYW50L1UKbWVhbnRpbWUvTQptZWFud2hpbGUvTQptZWFueS9TTQptZWFzCm1lYXNsZXMvTQptZWFzbHkvUlQKbWVhc3VyYWJsZQptZWFzdXJhYmx5Cm1lYXN1cmUncwptZWFzdXJlL0FEU0cKbWVhc3VyZWQvVQptZWFzdXJlbGVzcwptZWFzdXJlbWVudC9NUwptZWF0L01TCm1lYXRiYWxsL01TCm1lYXRoZWFkL01TCm1lYXRpbmVzcy9NCm1lYXRsZXNzCm1lYXRsb2FmL00KbWVhdGxvYXZlcwptZWF0cGFja2luZy9NCm1lYXR5L1RQUgptZWNjYS9TTQptZWNoYW5pYy9NUwptZWNoYW5pY2FsL1kKbWVjaGFuaWNzL00KbWVjaGFuaXNtL1NNCm1lY2hhbmlzdGljCm1lY2hhbmlzdGljYWxseQptZWNoYW5pemF0aW9uL00KbWVjaGFuaXplL0RTRwptZWRhbC9TTQptZWRhbGlzdC9NUwptZWRhbGxpb24vU00KbWVkZGxlL1pHRFJTCm1lZGRsZXIvTQptZWRkbGVzb21lCm1lZGlhL1NNCm1lZGlhbC9BWQptZWRpYW4vTVMKbWVkaWF0ZS9EU0dOCm1lZGlhdGVkL1UKbWVkaWF0aW9uL0FNCm1lZGlhdG9yL01TCm1lZGljL1NNCm1lZGljYWlkL00KbWVkaWNhbC9TTVkKbWVkaWNhbWVudC9NCm1lZGljYXJlL00KbWVkaWNhdGUvR05YRFMKbWVkaWNhdGlvbi9NCm1lZGljaW5hbC9ZCm1lZGljaW5lL01TCm1lZGljby9NUwptZWRpZXZhbAptZWRpZXZhbGlzdC9NUwptZWRpb2NyZQptZWRpb2NyaXR5L1NNCm1lZGl0YXRlL0RTR05WWAptZWRpdGF0aW9uL00KbWVkaXRhdGl2ZS9ZCm1lZGl1bS9NUwptZWRsZXkvTVMKbWVkdWxsYS9TTQptZWR1c2EKbWVkdXNhZQptZWVkL00KbWVlay9SWVBUCm1lZWtuZXNzL00KbWVlcnNjaGF1bS9TTQptZWV0L01KU0cKbWVldGluZy9NCm1lZXRpbmdob3VzZS9TTQptZWV0dXAKbWVnL1MKbWVnYQptZWdhYml0L1NNCm1lZ2FidWNrcy9NCm1lZ2FieXRlL01TCm1lZ2FjaHVyY2gvTVMKbWVnYWN5Y2xlL1NNCm1lZ2FkZWF0aC9NCm1lZ2FkZWF0aHMKbWVnYWhlcnR6L00KbWVnYWxpdGgvTQptZWdhbGl0aGljCm1lZ2FsaXRocwptZWdhbG9tYW5pYS9NCm1lZ2Fsb21hbmlhYy9TTQptZWdhbG9wb2xpcy9NUwptZWdhcGhvbmUvRFNNRwptZWdhcGl4ZWwvU00KbWVnYXN0YXIvUwptZWdhdG9uL1NNCm1lZ2F3YXR0L01TCm1laAptZWlvc2lzL00KbWVpb3RpYwptZWxhbWluZS9NCm1lbGFuY2hvbGlhL00KbWVsYW5jaG9saWMvUwptZWxhbmNob2x5L00KbWVsYW5nZS9NUwptZWxhbmluL00KbWVsYW5vbWEvU00KbWVsZC9NRFNHCm1lbGVlL1NNCm1lbGlvcmF0ZS9HTlZEUwptZWxpb3JhdGlvbi9NCm1lbGxpZmx1b3VzL1BZCm1lbGxpZmx1b3VzbmVzcy9NCm1lbGxvdy9QVEdEUllTCm1lbGxvd25lc3MvTQptZWxvZGljCm1lbG9kaWNhbGx5Cm1lbG9kaW91cy9ZUAptZWxvZGlvdXNuZXNzL00KbWVsb2RyYW1hL01TCm1lbG9kcmFtYXRpYy9TCm1lbG9kcmFtYXRpY2FsbHkKbWVsb2RyYW1hdGljcy9NCm1lbG9keS9TTQptZWxvbi9TTQptZWx0J3MKbWVsdC9BRFNHCm1lbHRkb3duL1NNCm1lbWJlcidzCm1lbWJlci9FQVMKbWVtYmVyc2hpcC9TTQptZW1icmFuZS9TTQptZW1icmFub3VzCm1lbWUvTVMKbWVtZW50by9NUwptZW1vL01TCm1lbW9pci9NUwptZW1vcmFiaWxpYS9NCm1lbW9yYWJpbGl0eS9NCm1lbW9yYWJsZS9VCm1lbW9yYWJseQptZW1vcmFuZHVtL01TCm1lbW9yaWFsL1NNCm1lbW9yaWFsaXplL0RTRwptZW1vcml6YXRpb24vTQptZW1vcml6ZS9EU0cKbWVtb3J5L1NNCm1lbXNhaGliL1MKbWVuL00KbWVuYWNlL01HRFMKbWVuYWNpbmcvWQptZW5hZ2UvTVMKbWVuYWdlcmllL01TCm1lbmQvTURSU1pHCm1lbmRhY2lvdXMvWQptZW5kYWNpdHkvTQptZW5kZWxldml1bS9NCm1lbmRlci9NCm1lbmRpY2FuY3kvTQptZW5kaWNhbnQvU00KbWVuZGluZy9NCm1lbmZvbGsvTVMKbWVuZm9sa3MvTQptZW5oYWRlbi9NCm1lbmlhbC9NWVMKbWVuaW5nZWFsCm1lbmluZ2VzCm1lbmluZ2l0aXMvTQptZW5pbngvTQptZW5pc2NpCm1lbmlzY3VzL00KbWVub3BhdXNhbAptZW5vcGF1c2UvTQptZW5vcmFoL00KbWVub3JhaHMKbWVuc2NoL01TCm1lbnNlcnZhbnRzCm1lbnNlcy9NCm1lbnN0cnVhbAptZW5zdHJ1YXRlL0dORFMKbWVuc3RydWF0aW9uL00KbWVuc3VyYWJsZQptZW5zdXJhdGlvbi9NCm1lbnN3ZWFyL00KbWVudGFsL1kKbWVudGFsaXN0L1NNCm1lbnRhbGl0eS9TTQptZW50aG9sL00KbWVudGhvbGF0ZWQKbWVudGlvbi9HU01ECm1lbnRpb25lZC9VCm1lbnRvci9NRFNHCm1lbnUvTVMKbWVvdy9NRFNHCm1lcmNhbnRpbGUKbWVyY2FudGlsaXNtL00KbWVyY2VuYXJ5L1NNCm1lcmNlci9NUwptZXJjZXJpemUvR0RTCm1lcmNoYW5kaXNlL01aR0RSUwptZXJjaGFuZGlzZXIvTQptZXJjaGFuZGlzaW5nL00KbWVyY2hhbnQvTUJTCm1lcmNoYW50bWFuL00KbWVyY2hhbnRtZW4KbWVyY2lmdWwvVVkKbWVyY2lsZXNzL1BZCm1lcmNpbGVzc25lc3MvTQptZXJjdXJpYWwvWQptZXJjdXJpYwptZXJjdXJ5L00KbWVyY3kvU00KbWVyZS9NWVRTCm1lcmV0cmljaW91cy9ZUAptZXJldHJpY2lvdXNuZXNzL00KbWVyZ2Fuc2VyL01TCm1lcmdlL0RSU1pHCm1lcmdlci9NCm1lcmlkaWFuL01TCm1lcmluZ3VlL01TCm1lcmluby9NUwptZXJpdC9DU00KbWVyaXRlZC9VCm1lcml0aW5nCm1lcml0b2NyYWN5L1NNCm1lcml0b2NyYXRpYwptZXJpdG9yaW91cy9QWQptZXJpdG9yaW91c25lc3MvTQptZXJtYWlkL1NNCm1lcm1hbi9NCm1lcm1lbgptZXJyaWx5Cm1lcnJpbWVudC9NCm1lcnJpbmVzcy9NCm1lcnJ5L1RSUAptZXJyeW1ha2VyL01TCm1lcnJ5bWFraW5nL00KbWVzYS9NUwptZXNjYWwvTVMKbWVzY2FsaW4KbWVzY2FsaW5lL00KbWVzZGFtZXMKbWVzZGVtb2lzZWxsZXMKbWVzaC9NRFNHCm1lc21lcmljCm1lc21lcmlzbS9NCm1lc21lcml6ZS9aR0RSUwptZXNtZXJpemVyL00KbWVzb21vcnBoL00KbWVzb21vcnBocwptZXNvbi9TTQptZXNvc3BoZXJlL1NNCm1lc3F1aXRlL1NNCm1lc3MvTURTRwptZXNzYWdlL01HRFMKbWVzc2VpZ25ldXJzCm1lc3Nlbmdlci9TTQptZXNzaWFoL00KbWVzc2lhaHMKbWVzc2lhbmljCm1lc3NpZXVycwptZXNzaWx5Cm1lc3NpbmVzcy9NCm1lc3NtYXRlL1NNCm1lc3N5L1BUUgptZXN0aXpvL01TCm1ldAptZXRhCm1ldGFib2xpYwptZXRhYm9saWNhbGx5Cm1ldGFib2xpc20vU00KbWV0YWJvbGl0ZS9TTQptZXRhYm9saXplL0RTRwptZXRhY2FycGFsL1NNCm1ldGFjYXJwaQptZXRhY2FycHVzL00KbWV0YWRhdGEKbWV0YWwvU01ECm1ldGFsYW5ndWFnZS9NUwptZXRhbGxpYwptZXRhbGx1cmdpYwptZXRhbGx1cmdpY2FsCm1ldGFsbHVyZ2lzdC9NUwptZXRhbGx1cmd5L00KbWV0YWx3b3JrL01SWkcKbWV0YWx3b3JrZXIvTQptZXRhbHdvcmtpbmcvTQptZXRhbW9ycGhpYwptZXRhbW9ycGhpc20vTQptZXRhbW9ycGhvc2UvR0RTCm1ldGFtb3JwaG9zaXMvTQptZXRhcGhvci9NUwptZXRhcGhvcmljCm1ldGFwaG9yaWNhbC9ZCm1ldGFwaHlzaWNhbC9ZCm1ldGFwaHlzaWNzL00KbWV0YXN0YXNlcwptZXRhc3Rhc2lzL00KbWV0YXN0YXNpemUvRFNHCm1ldGFzdGF0aWMKbWV0YXRhcnNhbC9NUwptZXRhdGFyc2kKbWV0YXRhcnN1cy9NCm1ldGF0aGVzZXMKbWV0YXRoZXNpcy9NCm1ldGUvTVpHRFJTCm1ldGVtcHN5Y2hvc2VzCm1ldGVtcHN5Y2hvc2lzL00KbWV0ZW9yL01TCm1ldGVvcmljCm1ldGVvcmljYWxseQptZXRlb3JpdGUvU00KbWV0ZW9yb2lkL1NNCm1ldGVvcm9sb2dpYwptZXRlb3JvbG9naWNhbAptZXRlb3JvbG9naXN0L1NNCm1ldGVvcm9sb2d5L00KbWV0ZXIvR01ECm1ldGhhZG9uZS9NCm1ldGhhbXBoZXRhbWluZS9NCm1ldGhhbmUvTQptZXRoYW5vbC9NCm1ldGhpbmtzCm1ldGhvZC9NUwptZXRob2RpY2FsL1lQCm1ldGhvZGljYWxuZXNzL00KbWV0aG9kb2xvZ2ljYWwvWQptZXRob2RvbG9neS9TTQptZXRob3RyZXhhdGUKbWV0aG91Z2h0Cm1ldGhzCm1ldGh5bC9NCm1ldGljdWxvdXMvWVAKbWV0aWN1bG91c25lc3MvTQptZXRpZXIvTVMKbWV0cmljL1MKbWV0cmljYWwvWQptZXRyaWNhdGUvR05EUwptZXRyaWNhdGlvbi9NCm1ldHJpY2l6ZS9HRFMKbWV0cm8vU00KbWV0cm9ub21lL01TCm1ldHJvcG9saXMvTVMKbWV0cm9wb2xpdGFuCm1ldHRsZS9NCm1ldHRsZXNvbWUKbWV3L1NHTUQKbWV3bC9EU0cKbWV3cy9NCm1lenphbmluZS9NUwptZXp6by9TTQptZmcKbWZyL1MKbWcKbWdyCm1pL01OWAptaWFzbWEvTVMKbWljL1MKbWljYS9NCm1pY2UKbWljay9TCm1pY2tleS9NUwptaWNyby9TTQptaWNyb2FnZ3Jlc3Npb24vU00KbWljcm9iZS9NUwptaWNyb2JpYWwKbWljcm9iaW9sb2dpY2FsCm1pY3JvYmlvbG9naXN0L01TCm1pY3JvYmlvbG9neS9NCm1pY3JvYnJld2VyeS9TTQptaWNyb2NoaXAvTVMKbWljcm9jaXJjdWl0L1NNCm1pY3JvY29kZQptaWNyb2NvbXB1dGVyL01TCm1pY3JvY29zbS9NUwptaWNyb2Nvc21pYwptaWNyb2RvdC9TTQptaWNyb2Vjb25vbWljcy9NCm1pY3JvZWxlY3Ryb25pYy9TCm1pY3JvZWxlY3Ryb25pY3MvTQptaWNyb2ZpYmVyL01TCm1pY3JvZmljaGUvTQptaWNyb2ZpbG0vR01EUwptaWNyb2Zsb3BwaWVzCm1pY3JvZ3Jvb3ZlL1NNCm1pY3JvbGlnaHQvTVMKbWljcm9sb2FuL01TCm1pY3JvbWFuYWdlL0dEU0wKbWljcm9tYW5hZ2VtZW50L00KbWljcm9tZXRlb3JpdGUvU00KbWljcm9tZXRlci9NUwptaWNyb24vTVMKbWljcm9vcmdhbmlzbS9NUwptaWNyb3Bob25lL1NNCm1pY3JvcHJvY2Vzc29yL01TCm1pY3Jvc2NvcGUvU00KbWljcm9zY29waWMKbWljcm9zY29waWNhbC9ZCm1pY3Jvc2NvcHkvTQptaWNyb3NlY29uZC9NUwptaWNyb3N1cmdlcnkvTQptaWNyb3dhdmUvRFNNR0IKbWljcm93YXZlYWJsZQptaWQKbWlkYWlyL00KbWlkZGF5L00KbWlkZGVuL01TCm1pZGRsZS9NR1MKbWlkZGxlYnJvdy9TTQptaWRkbGVtYW4vTQptaWRkbGVtZW4KbWlkZGxlbW9zdAptaWRkbGV3ZWlnaHQvTVMKbWlkZHkvU00KbWlkZmllbGQvUloKbWlkZ2UvU00KbWlkZ2V0L01TCm1pZGkvTVMKbWlkbGFuZC9NUwptaWRsaWZlL00KbWlkbW9zdAptaWRuaWdodC9NCm1pZHBvaW50L01TCm1pZHJpYi9NUwptaWRyaWZmL01TCm1pZHNlY3Rpb24vTVMKbWlkc2hpcG1hbi9NCm1pZHNoaXBtZW4KbWlkc2hpcHMKbWlkc2l6ZQptaWRzdC9NCm1pZHN0cmVhbS9NCm1pZHN1bW1lci9NCm1pZHRlcm0vTVMKbWlkdG93bi9NCm1pZHdheS9NUwptaWR3ZWVrL01TCm1pZHdpZmUvTUdEUwptaWR3aWZlcnkvU00KbWlkd2ludGVyL00KbWlkd2l2ZXMKbWlkeWVhci9NUwptaWVuL00KbWlmZi9EU0cKbWlnaHQndmUKbWlnaHQvTQptaWdodGlseQptaWdodGluZXNzL00KbWlnaHRuJ3QKbWlnaHR5L1RSUAptaWdub25ldHRlL1NNCm1pZ3JhaW5lL01TCm1pZ3JhbnQvTVMKbWlncmF0ZS9BR0RTCm1pZ3JhdGlvbi9TTQptaWdyYXRvcnkKbWlrYWRvL01TCm1pa2UvTUdEUwptaWwvU1pNUgptaWxhZHkvU00KbWlsY2gKbWlsZC9NUllUUAptaWxkZXcvU01ERwptaWxkbmVzcy9NCm1pbGUvTVMKbWlsZWFnZS9TTQptaWxlcG9zdC9NUwptaWxlci9NCm1pbGVzdG9uZS9NUwptaWxmL01TCm1pbGlldS9TTQptaWxpdGFuY3kvTQptaWxpdGFudC9NWVMKbWlsaXRhcmlseQptaWxpdGFyaXNtL00KbWlsaXRhcmlzdC9TTQptaWxpdGFyaXN0aWMKbWlsaXRhcml6YXRpb24vQ00KbWlsaXRhcml6ZS9DRFNHCm1pbGl0YXJ5L00KbWlsaXRhdGUvR0RTCm1pbGl0aWEvU00KbWlsaXRpYW1hbi9NCm1pbGl0aWFtZW4KbWlsay9NRFJTWkcKbWlsa2VyL00KbWlsa2luZXNzL00KbWlsa21haWQvTVMKbWlsa21hbi9NCm1pbGttZW4KbWlsa3NoYWtlL1NNCm1pbGtzb3AvTVMKbWlsa3dlZWQvU00KbWlsa3kvUlRQCm1pbGwvTURSU1pHSgptaWxsYWdlL00KbWlsbGVubmlhCm1pbGxlbm5pYWwvTQptaWxsZW5uaXVtL01TCm1pbGxlci9NCm1pbGxldC9NCm1pbGxpYXJkL01TCm1pbGxpYmFyL01TCm1pbGxpZ3JhbS9NUwptaWxsaWxpdGVyL01TCm1pbGxpbWV0ZXIvTVMKbWlsbGluZXIvTVMKbWlsbGluZXJ5L00KbWlsbGluZy9NCm1pbGxpb24vSFNNCm1pbGxpb25haXJlL1NNCm1pbGxpb25haXJlc3MvUwptaWxsaW9udGgvTQptaWxsaW9udGhzCm1pbGxpcGVkZS9TTQptaWxsaXNlY29uZC9TTQptaWxscG9uZC9TTQptaWxscmFjZS9TTQptaWxsc3RvbmUvU00KbWlsbHN0cmVhbS9NUwptaWxsd3JpZ2h0L1NNCm1pbG9tZXRlci9TCm1pbHF1ZXRvYXN0L1NNCm1pbHQvTURTRwptaW1lL01HRFMKbWltZW9ncmFwaC9HTUQKbWltZW9ncmFwaHMKbWltZXRpYwptaW1pYy9TTQptaW1pY2tlZAptaW1pY2tlci9TTQptaW1pY2tpbmcKbWltaWNyeS9TTQptaW1vc2EvU00KbWluCm1pbmFyZXQvTVMKbWluYXRvcnkKbWluY2UvRFJTTVpHCm1pbmNlbWVhdC9NCm1pbmNlci9NCm1pbmQncwptaW5kL0FEUlNaRwptaW5kYm9nZ2xpbmdseQptaW5kZWQvUAptaW5kZnVsL1lQCm1pbmRmdWxuZXNzL00KbWluZGxlc3MvWVAKbWluZGxlc3NuZXNzL00KbWluZHNldC9NUwptaW5lL01aR05EUlNYCm1pbmVmaWVsZC9TTQptaW5lci9NCm1pbmVyYWwvTVMKbWluZXJhbG9naWNhbAptaW5lcmFsb2dpc3QvTVMKbWluZXJhbG9neS9NCm1pbmVzdHJvbmUvTQptaW5lc3dlZXBlci9TTQptaW5nbGUvRFNHCm1pbmd5Cm1pbmkvTVMKbWluaWF0dXJlL01TCm1pbmlhdHVyaXN0L01TCm1pbmlhdHVyaXphdGlvbi9NCm1pbmlhdHVyaXplL0dEUwptaW5pYmFyL1MKbWluaWJpa2UvU00KbWluaWJ1cy9NUwptaW5pY2FiL1MKbWluaWNhbS9NUwptaW5pY29tcHV0ZXIvU00KbWluaWZsb3BwaWVzCm1pbmltL1NNCm1pbmltYWwvWQptaW5pbWFsaXNtL00KbWluaW1hbGlzdC9NUwptaW5pbWl6YXRpb24vTQptaW5pbWl6ZS9EU0cKbWluaW11bS9NUwptaW5pbmcvTQptaW5pb24vTQptaW5pc2VyaWVzL00KbWluaXNraXJ0L01TCm1pbmlzdGVyL1NHTUQKbWluaXN0ZXJpYWwKbWluaXN0cmFudC9NUwptaW5pc3RyYXRpb24vTVMKbWluaXN0cnkvU00KbWluaXZhbi9NUwptaW5rL01TCm1pbm5lc2luZ2VyL01TCm1pbm5vdy9TTQptaW5vci9TTURHCm1pbm9yaXR5L1NNCm1pbm94aWRpbC9NCm1pbnN0ZXIvTVMKbWluc3RyZWwvU00KbWluc3RyZWxzeS9NCm1pbnQvTURSU1pHCm1pbnRhZ2UvTQptaW50ZXIvTQptaW50eS9SVAptaW51ZW5kL01TCm1pbnVldC9TTQptaW51cy9NUwptaW51c2N1bGUvTVMKbWludXRlL1BEUlNNWVRHCm1pbnV0ZW1hbi9NCm1pbnV0ZW1lbgptaW51dGVuZXNzL00KbWludXRpYS9NCm1pbnV0aWFlCm1pbngvTVMKbWlyYWNsZS9NUwptaXJhY3Vsb3VzL1kKbWlyYWdlL1NNCm1pcmUvTUdEUwptaXJyb3IvR1NNRAptaXJ0aC9NCm1pcnRoZnVsL1BZCm1pcnRoZnVsbmVzcy9NCm1pcnRobGVzcy9ZCm1pcnkvUlQKbWlzYWRkcmVzcy9EU0cKbWlzYWR2ZW50dXJlL01TCm1pc2FsaWduZWQKbWlzYWxpZ25tZW50L00KbWlzYWxsaWFuY2UvTVMKbWlzYW50aHJvcGUvU00KbWlzYW50aHJvcGljCm1pc2FudGhyb3BpY2FsbHkKbWlzYW50aHJvcGlzdC9NUwptaXNhbnRocm9weS9NCm1pc2FwcGxpY2F0aW9uL00KbWlzYXBwbHkvRFNHTlgKbWlzYXBwcmVoZW5kL0dTRAptaXNhcHByZWhlbnNpb24vTVMKbWlzYXBwcm9wcmlhdGUvWERTR04KbWlzYXBwcm9wcmlhdGlvbi9NCm1pc2JlZ290dGVuCm1pc2JlaGF2ZS9HRFMKbWlzYmVoYXZpb3IvTQptaXNjCm1pc2NhbGN1bGF0ZS9EU1hHTgptaXNjYWxjdWxhdGlvbi9NCm1pc2NhbGwvRFNHCm1pc2NhcnJpYWdlL01TCm1pc2NhcnJ5L0dEUwptaXNjYXN0L1NHCm1pc2NlZ2VuYXRpb24vTQptaXNjZWxsYW5lb3VzL1kKbWlzY2VsbGFueS9TTQptaXNjaGFuY2UvU00KbWlzY2hpZWYvTQptaXNjaGlldm91cy9ZUAptaXNjaGlldm91c25lc3MvTQptaXNjaWJpbGl0eS9NCm1pc2NpYmxlCm1pc2NvbW11bmljYXRpb24vUwptaXNjb25jZWl2ZS9HRFMKbWlzY29uY2VwdGlvbi9TTQptaXNjb25kdWN0L01ER1MKbWlzY29uc3RydWN0aW9uL01TCm1pc2NvbnN0cnVlL0dEUwptaXNjb3VudC9NRFNHCm1pc2NyZWFudC9TTQptaXNjdWUvRFNNRwptaXNkZWFsL0dNUwptaXNkZWFsdAptaXNkZWVkL01TCm1pc2RlbWVhbm9yL01TCm1pc2RpYWdub3NlL0dEUwptaXNkaWFnbm9zaXMvTQptaXNkaWQKbWlzZGlyZWN0L1NERwptaXNkaXJlY3Rpb24vTQptaXNkby9KRwptaXNkb2VzCm1pc2RvaW5nL00KbWlzZG9uZQptaXNlci9TQk1ZCm1pc2VyYWJsZW5lc3MvTQptaXNlcmFibHkKbWlzZXJsaW5lc3MvTQptaXNlcnkvU00KbWlzZmVhc2FuY2UvTQptaXNmZWF0dXJlL1MKbWlzZmlsZS9HRFMKbWlzZmlyZS9NR0RTCm1pc2ZpdC9TTQptaXNmaXR0ZWQKbWlzZml0dGluZwptaXNmb3J0dW5lL1NNCm1pc2dpdmluZy9NUwptaXNnb3Zlcm4vU0RHTAptaXNnb3Zlcm5tZW50L00KbWlzZ3VpZGFuY2UvTQptaXNndWlkZS9EU0cKbWlzZ3VpZGVkL1kKbWlzaGFuZGxlL0RTRwptaXNoYXAvU00KbWlzaGVhci9HUwptaXNoZWFyZAptaXNoaXQvUwptaXNoaXR0aW5nCm1pc2htYXNoL01TCm1pc2lkZW50aWZ5L0dEUwptaXNpbmZvcm0vREdTCm1pc2luZm9ybWF0aW9uL00KbWlzaW50ZXJwcmV0L1NHRAptaXNpbnRlcnByZXRhdGlvbi9TTQptaXNqdWRnZS9EU0cKbWlzanVkZ21lbnQvU00KbWlzbGFiZWwvR1NECm1pc2xhaWQKbWlzbGF5L0dTCm1pc2xlYWQvR1MKbWlzbGVhZGluZy9ZCm1pc2xlZAptaXNtYW5hZ2UvTEdEUwptaXNtYW5hZ2VtZW50L00KbWlzbWF0Y2gvR01EUwptaXNuYW1lL0dEUwptaXNub21lci9NUwptaXNvZ2FtaXN0L01TCm1pc29nYW15L00KbWlzb2d5bmlzdC9TTQptaXNvZ3luaXN0aWMKbWlzb2d5bm91cwptaXNvZ3lueS9NCm1pc3BsYWNlL0dMRFMKbWlzcGxhY2VtZW50L00KbWlzcGxheS9HTURTCm1pc3ByaW50L0dNRFMKbWlzcHJpc2lvbi9NCm1pc3Byb25vdW5jZS9EU0cKbWlzcHJvbnVuY2lhdGlvbi9TTQptaXNxdW90YXRpb24vTVMKbWlzcXVvdGUvTUdEUwptaXNyZWFkL0dKUwptaXNyZWFkaW5nL00KbWlzcmVwb3J0L01ER1MKbWlzcmVwcmVzZW50L0dEUwptaXNyZXByZXNlbnRhdGlvbi9NUwptaXNydWxlL01HRFMKbWlzcydzCm1pc3MvRURTR1YKbWlzc2FsL0VTTQptaXNzZWQvVQptaXNzaGFwZS9HRFMKbWlzc2hhcGVuCm1pc3NpbGUvTVMKbWlzc2lsZXJ5L00KbWlzc2lvbi9BTVMKbWlzc2lvbmFyeS9TTQptaXNzaW9uZXIvU00KbWlzc2l2ZS9NUwptaXNzcGVhay9HUwptaXNzcGVsbC9HREpTCm1pc3NwZWxsaW5nL00KbWlzc3BlbmQvR1MKbWlzc3BlbnQKbWlzc3Bva2UKbWlzc3Bva2VuCm1pc3N0YXRlL0dEU0wKbWlzc3RhdGVtZW50L1NNCm1pc3N0ZXAvTVMKbWlzc3VzL01TCm1pc3QncwptaXN0L0NEUlNaRwptaXN0YWthYmxlL1UKbWlzdGFrZS9CTUdTCm1pc3Rha2VuL1kKbWlzdGVyJ3MKbWlzdGlseQptaXN0aW1lL0dEUwptaXN0aW5lc3MvTQptaXN0bGV0b2UvTQptaXN0b29rCm1pc3RyYWwvTVMKbWlzdHJhbnNsYXRlZAptaXN0cmVhdC9MREdTCm1pc3RyZWF0bWVudC9NCm1pc3RyZXNzL01TCm1pc3RyaWFsL01TCm1pc3RydXN0L01EU0cKbWlzdHJ1c3RmdWwvWQptaXN0eS9QUlQKbWlzdHlwZS9HUwptaXN1bmRlcnN0YW5kL1NHSgptaXN1bmRlcnN0YW5kaW5nL00KbWlzdW5kZXJzdG9vZAptaXN1c2UvRFNNRwptaXRlL01aUlMKbWl0ZXIvTURHCm1pdGlnYXRlL0RTR04KbWl0aWdhdGVkL1UKbWl0aWdhdGlvbi9NCm1pdG9jaG9uZHJpYQptaXRvY2hvbmRyaWFsCm1pdG9jaG9uZHJpb24KbWl0b3NlcwptaXRvc2lzL00KbWl0b3RpYwptaXRyYWwKbWl0dC9NTlNYCm1pdHRlbi9NCm1peC9aR01EUlNCCm1peGVkL1UKbWl4ZXIvTQptaXh0dXJlL1NNCm1penplbi9NUwptaXp6ZW5tYXN0L1NNCm1rYXkKbWtzCm1sCm1tCm1uZW1vbmljL01TCm1uZW1vbmljYWxseQptby9DS0hTCm1vYW4vTURSU1pHCm1vYW5lci9NCm1vYXQvTURTCm1vYidzCm1vYi9DUwptb2JiZWQvQwptb2JiaW5nL0MKbW9iaWxlL01TCm1vYmlsaXR5L00KbW9iaWxpemF0aW9uL0NNCm1vYmlsaXphdGlvbnMKbW9iaWxpemUvQ0RTRwptb2JpbGl6ZXIvU00KbW9ic3Rlci9TTQptb2NjYXNpbi9TTQptb2NoYS9TTQptb2NrL0RSU1pHCm1vY2tlci9NCm1vY2tlcnkvU00KbW9ja2luZy9ZCm1vY2tpbmdiaXJkL1NNCm1vZC9TVE0KbW9kYWwvU00KbW9kYWxpdHkvUwptb2RkZWQKbW9kZGluZwptb2RlL01TCm1vZGVsL1pHU0pNRFIKbW9kZWxlci9NCm1vZGVsaW5nL00KbW9kZW0vU00KbW9kZXJhdGUvTVlHTlBEUwptb2RlcmF0ZW5lc3MvTQptb2RlcmF0aW9uL00KbW9kZXJhdG9yL1NNCm1vZGVybi9NWVBTCm1vZGVybmlzbS9NCm1vZGVybmlzdC9TTQptb2Rlcm5pc3RpYwptb2Rlcm5pdHkvTQptb2Rlcm5pemF0aW9uL00KbW9kZXJuaXplL0RSU1pHCm1vZGVybml6ZXIvTQptb2Rlcm5uZXNzL00KbW9kZXN0L1kKbW9kZXN0eS9NCm1vZGljdW0vU00KbW9kaWZpYWJsZQptb2RpZmljYXRpb24vTQptb2RpZmllZC9VCm1vZGlmaWVyL00KbW9kaWZ5L0RSU1haR04KbW9kaXNoL1lQCm1vZGlzaG5lc3MvTQptb2R1bGFyCm1vZHVsYXRlL0NHTkRTCm1vZHVsYXRpb24vQ00KbW9kdWxhdGlvbnMKbW9kdWxhdG9yL01TCm1vZHVsZS9NUwptb2R1bG8KbW9kdWx1cwptb2dneQptb2d1bC9TTQptb2hhaXIvTQptb2kKbW9pZXR5L1NNCm1vaWwvTURTRwptb2lyZS9TTQptb2lzdC9YVFBOUlkKbW9pc3Rlbi9EUlpHCm1vaXN0ZW5lci9NCm1vaXN0bmVzcy9NCm1vaXN0dXJlL00KbW9pc3R1cml6ZS9aR0RSUwptb2lzdHVyaXplci9NCm1vbGFyL1NNCm1vbGFzc2VzL00KbW9sZC9NRFJKU1pHCm1vbGRib2FyZC9TTQptb2xkZXIvR01ECm1vbGRpbmVzcy9NCm1vbGRpbmcvTQptb2xkeS9UUFIKbW9sZS9NUwptb2xlY3VsYXIKbW9sZWN1bGFyaXR5L00KbW9sZWN1bGUvU00KbW9sZWhpbGwvU00KbW9sZXNraW4vTQptb2xlc3QvRFJaR1MKbW9sZXN0YXRpb24vTQptb2xlc3RlZC9VCm1vbGVzdGVyL00KbW9sbC9NUwptb2xsaWZpY2F0aW9uL00KbW9sbGlmeS9EU05HCm1vbGx1c2Nhbgptb2xsdXNrL1NNCm1vbGx5L1NNCm1vbGx5Y29kZGxlL0RTTUcKbW9sdC9NRE5SU1pHCm1vbHRlci9NCm1vbHliZGVudW0vTQptb20vU00KbW9tZW50L01TCm1vbWVudGEKbW9tZW50YXJpbHkKbW9tZW50YXJpbmVzcy9NCm1vbWVudGFyeS9QCm1vbWVudG91cy9QWQptb21lbnRvdXNuZXNzL00KbW9tZW50dW0vTQptb21teS9TTQptb25hcmNoL00KbW9uYXJjaGljCm1vbmFyY2hpY2FsCm1vbmFyY2hpc20vTQptb25hcmNoaXN0L01TCm1vbmFyY2hpc3RpYwptb25hcmNocwptb25hcmNoeS9TTQptb25hc3RlcnkvU00KbW9uYXN0aWMvTVMKbW9uYXN0aWNhbC9ZCm1vbmFzdGljaXNtL00KbW9uYXVyYWwKbW9uZXRhcmlseQptb25ldGFyaXNtL00KbW9uZXRhcmlzdC9NUwptb25ldGFyeQptb25ldGl6ZS9DR0RTCm1vbmV5L1NNRAptb25leWJhZy9NUwptb25leWJveC9TCm1vbmV5bGVuZGVyL1NNCm1vbmV5bWFrZXIvU00KbW9uZXltYWtpbmcvTQptb25nZXIvTURHUwptb25nb2wvUwptb25nb2xpc20vTQptb25nb2xvaWQvTVMKbW9uZ29vc2UvTVMKbW9uZ3JlbC9TTQptb25pZXMKbW9uaWtlci9TTQptb25pc20vTQptb25pc3QvTVMKbW9uaXRpb24vU00KbW9uaXRvci9TTURHCm1vbml0b3J5Cm1vbmsvTVMKbW9ua2V5L01ER1MKbW9ua2V5c2hpbmUvU00KbW9ua2lzaAptb25rc2hvb2QvU00KbW9uby9NCm1vbm9jaHJvbWF0aWMKbW9ub2Nocm9tZS9NUwptb25vY2xlL0RTTQptb25vY2xvbmFsCm1vbm9jb3R5bGVkb24vU00KbW9ub2NvdHlsZWRvbm91cwptb25vY3VsYXIKbW9ub2RpYwptb25vZGlzdC9TTQptb25vZHkvU00KbW9ub2dhbWlzdC9NUwptb25vZ2Ftb3VzL1kKbW9ub2dhbXkvTQptb25vZ3JhbS9TTQptb25vZ3JhbW1lZAptb25vZ3JhbW1pbmcKbW9ub2dyYXBoL00KbW9ub2dyYXBocwptb25vbGluZ3VhbC9NUwptb25vbGl0aC9NCm1vbm9saXRoaWMKbW9ub2xpdGhzCm1vbm9sb2dpc3QvU00KbW9ub2xvZ3VlL1NNCm1vbm9tYW5pYS9NCm1vbm9tYW5pYWMvTVMKbW9ub21hbmlhY2FsCm1vbm9tZXIvU00KbW9ub251Y2xlb3Npcy9NCm1vbm9waG9uaWMKbW9ub3BsYW5lL1NNCm1vbm9wb2xpc3QvU00KbW9ub3BvbGlzdGljCm1vbm9wb2xpemF0aW9uL00KbW9ub3BvbGl6ZS9EUlNaRwptb25vcG9saXplci9NCm1vbm9wb2x5L1NNCm1vbm9yYWlsL01TCm1vbm9zeWxsYWJpYwptb25vc3lsbGFibGUvTVMKbW9ub3RoZWlzbS9NCm1vbm90aGVpc3QvU00KbW9ub3RoZWlzdGljCm1vbm90b25lL01TCm1vbm90b25pYwptb25vdG9uaWNhbGx5Cm1vbm90b25vdXMvUFkKbW9ub3Rvbm91c25lc3MvTQptb25vdG9ueS9NCm1vbm91bnNhdHVyYXRlZAptb25veGlkZS9NUwptb25zZWlnbmV1ci9NCm1vbnNpZXVyL00KbW9uc2lnbm9yL1NNCm1vbnNvb24vU00KbW9uc29vbmFsCm1vbnN0ZXIvU00KbW9uc3RyYW5jZS9BU00KbW9uc3Ryb3NpdHkvU00KbW9uc3Ryb3VzL1kKbW9udGFnZS9TTQptb250aC9NWQptb250aGx5L1NNCm1vbnRocwptb251bWVudC9NUwptb251bWVudGFsL1kKbW9vL1NHTUQKbW9vY2gvWkdNRFJTCm1vb2NoZXIvTQptb29kL01TCm1vb2RpbHkKbW9vZGluZXNzL00KbW9vZHkvVFBSCm1vb24vTURTRwptb29uYmVhbS9NUwptb29ubGVzcwptb29ubGlnaHQvU01EUlpHCm1vb25saWdodGVyL00KbW9vbmxpZ2h0aW5nL00KbW9vbmxpdAptb29uc2NhcGUvU00KbW9vbnNoaW5lL01aUlMKbW9vbnNoaW5lci9NCm1vb25zaG90L01TCm1vb25zdG9uZS9NUwptb29uc3RydWNrCm1vb253YWxrL01TCm1vb3IvTURKU0cKbW9vcmhlbi9TCm1vb3JpbmcvTQptb29ybGFuZC9NUwptb29zZS9NCm1vb3QvRFNHCm1vcC9TWkdNRFIKbW9wZS9NUwptb3BlZC9TTQptb3Blci9NCm1vcGV5Cm1vcGllcgptb3BpZXN0Cm1vcGlzaAptb3BwZWQKbW9wcGV0L01TCm1vcHBpbmcKbW9yYWluZS9TTQptb3JhbC9TTVkKbW9yYWxlL00KbW9yYWxpc3QvTVMKbW9yYWxpc3RpYwptb3JhbGlzdGljYWxseQptb3JhbGl0aWVzCm1vcmFsaXR5L1VNCm1vcmFsaXphdGlvbi9DTQptb3JhbGl6ZS9DR0RTCm1vcmFsaXplci9NUwptb3Jhc3MvTVMKbW9yYXRvcml1bS9TTQptb3JheS9TTQptb3JiaWQvWVAKbW9yYmlkaXR5L00KbW9yYmlkbmVzcy9NCm1vcmRhbmN5L00KbW9yZGFudC9TTVkKbW9yZS9NUwptb3JlaXNoCm1vcmVsL1NNCm1vcmVvdmVyCm1vcmVzL00KbW9yZ3VlL01TCm1vcmlidW5kCm1vcm4vTUpTRwptb3JuaW5nL00KbW9yb2Njby9NCm1vcm9uL1NNCm1vcm9uaWMKbW9yb25pY2FsbHkKbW9yb3NlL1lQCm1vcm9zZW5lc3MvTQptb3JwaC9HRAptb3JwaGVtZS9NUwptb3JwaGVtaWMKbW9ycGhpYS9NCm1vcnBoaW5lL00KbW9ycGhpbmcvTQptb3JwaG9sb2dpY2FsCm1vcnBob2xvZ3kvTQptb3JwaHMKbW9ycm93L01TCm1vcnNlbC9NUwptb3J0YWwvTVlTCm1vcnRhbGl0eS9NCm1vcnRhci9NRFNHCm1vcnRhcmJvYXJkL1NNCm1vcnRnYWdlJ3MKbW9ydGdhZ2UvQUdEUwptb3J0Z2FnZWUvTVMKbW9ydGdhZ29yL01TCm1vcnRpY2lhbi9NUwptb3J0aWZpY2F0aW9uL00KbW9ydGlmeS9OR0RTCm1vcnRpc2UvRFNNRwptb3J0dWFyeS9TTQptb3NhaWMvTVMKbW9zZXkvU0dECm1vc2gvRFNHCm1vc3F1ZS9NUwptb3NxdWl0by9NCm1vc3F1aXRvZXMKbW9zcy9NUwptb3NzYmFjay9TTQptb3NzeS9UUgptb3N0L01ZCm1vdC9TTQptb3RlJ3MKbW90ZS9LQ1hTVk4KbW90ZWwvU00KbW90ZXQvU00KbW90aC9NCm1vdGhiYWxsL0dNRFMKbW90aGVyL01EWVNHCm1vdGhlcmJvYXJkL1NNCm1vdGhlcmZ1Y2tlci9NUyEKbW90aGVyZnVja2luZy8hCm1vdGhlcmhvb2QvTQptb3RoZXJsYW5kL01TCm1vdGhlcmxlc3MKbW90aGVybGluZXNzL00KbW90aHMKbW90aWYvU00KbW90aWxlL1MKbW90aWxpdHkvTQptb3Rpb24vS0NNCm1vdGlvbmVkCm1vdGlvbmluZwptb3Rpb25sZXNzL1lQCm1vdGlvbmxlc3NuZXNzL00KbW90aXZhdGUvQ0RTRwptb3RpdmF0ZWQvVQptb3RpdmF0aW9uL1NNCm1vdGl2YXRpb25hbAptb3RpdmF0b3IvU00KbW90aXZlL01TCm1vdGl2ZWxlc3MKbW90bGV5L01TCm1vdGxpZXIKbW90bGllc3QKbW90b2Nyb3NzL01TCm1vdG9yL1NHTUQKbW90b3JiaWtlL01HRFMKbW90b3Jib2F0L01TCm1vdG9yY2FkZS9NUwptb3RvcmNhci9TTQptb3RvcmN5Y2xlL0RTTUcKbW90b3JjeWNsaXN0L01TCm1vdG9yaXN0L1NNCm1vdG9yaXphdGlvbi9NCm1vdG9yaXplL0RTRwptb3Rvcm1hbi9NCm1vdG9ybWVuCm1vdG9ybW91dGgvTQptb3Rvcm1vdXRocwptb3RvcndheS9TTQptb3R0bGUvR0RTCm1vdHRvL00KbW90dG9lcwptb3VlL01TCm1vdW5kL1NHTUQKbW91bnQvRUFTR01ECm1vdW50YWJsZQptb3VudGFpbi9TTQptb3VudGFpbmVlci9TTURHCm1vdW50YWluZWVyaW5nL00KbW91bnRhaW5vdXMKbW91bnRhaW5zaWRlL1NNCm1vdW50YWludG9wL1NNCm1vdW50ZWJhbmsvTVMKbW91bnRlZC9VCm1vdW50ZXIvTVMKbW91bnRpbmcvU00KbW91cm4vU1pHRFIKbW91cm5lZC9VCm1vdXJuZXIvTQptb3VybmZ1bC9ZUAptb3VybmZ1bG5lc3MvTQptb3VybmluZy9NCm1vdXNlL0RSU01aRwptb3VzZXIvTQptb3VzZXRyYXAvU00KbW91c2V0cmFwcGVkCm1vdXNldHJhcHBpbmcKbW91c2luZXNzL00KbW91c3Nha2EvUwptb3Vzc2UvTUdEUwptb3VzeS9QVFIKbW91dGgvR01ECm1vdXRoZmVlbAptb3V0aGZ1bC9NUwptb3V0aGluZXNzL00KbW91dGhwaWVjZS9NUwptb3V0aHMKbW91dGh3YXNoL01TCm1vdXRod2F0ZXJpbmcKbW91dGh5L1BUUgptb3V0b24vTQptb3ZhYmxlL1NNCm1vdmUvQU1aR0RSU0IKbW92ZWQvVQptb3ZlbWVudC9TTQptb3Zlci9BTQptb3ZpZS9TTQptb3ZpZWdvZXIvU00KbW92aW5nL1kKbW93L1NaR01EUgptb3dlci9NCm1veGllL00KbW96emFyZWxsYS9NCm1wCm1wZwptcGgKbXQKbXRnCm10Z2UKbXUvU00KbXVjaC9NCm11Y2lsYWdlL00KbXVjaWxhZ2lub3VzCm11Y2svTURTRwptdWNrcmFrZS9EUlNaRwptdWNrcmFrZXIvTQptdWNreS9UUgptdWNvdXMKbXVjdXMvTQptdWQvTQptdWRkaWx5Cm11ZGRpbmVzcy9NCm11ZGRsZS9NR0RTCm11ZGRsZWhlYWRlZAptdWRkeS9QVEdEUlMKbXVkZmxhcC9TCm11ZGZsYXQvTVMKbXVkZ3VhcmQvU00KbXVkcGFjay9TCm11ZHJvb20vTVMKbXVkc2xpZGUvTVMKbXVkc2xpbmdlci9TTQptdWRzbGluZ2luZy9NCm11ZW5zdGVyL00KbXVlc2xpCm11ZXp6aW4vTVMKbXVmZi9NRFNHCm11ZmZpbi9NUwptdWZmbGUvWkdEUlMKbXVmZmxlci9NCm11ZnRpL1NNCm11Zy9TTQptdWdmdWwvTVMKbXVnZ2VkCm11Z2dlci9NUwptdWdnaW5lc3MvTQptdWdnaW5nL01TCm11Z2dpbnMKbXVnZ2xlL01TCm11Z2d5L1BUUgptdWdzaG90L01TCm11Z3d1bXAvTVMKbXVqYWhlZGRpbgptdWtsdWsvTVMKbXVsYXR0by9NCm11bGF0dG9lcwptdWxiZXJyeS9TTQptdWxjaC9HTURTCm11bGN0L1NHTUQKbXVsZS9NUwptdWxlc2tpbm5lci9NUwptdWxldGVlci9NUwptdWxpc2gvUFkKbXVsaXNobmVzcy9NCm11bGwvRFNHCm11bGxhaC9NCm11bGxhaHMKbXVsbGVpbi9NCm11bGxldC9NUwptdWxsaWdhbi9TTQptdWxsaWdhdGF3bnkvTQptdWxsaW9uL1NNRAptdWx0aQptdWx0aWNvbG9yZWQKbXVsdGljdWx0dXJhbAptdWx0aWN1bHR1cmFsaXNtL00KbXVsdGlkaW1lbnNpb25hbAptdWx0aWRpc2NpcGxpbmFyeQptdWx0aWZhY2V0ZWQKbXVsdGlmYW1pbHkKbXVsdGlmYXJpb3VzL1BZCm11bHRpZmFyaW91c25lc3MvTQptdWx0aWZvcm0KbXVsdGlncmFpbgptdWx0aWxhdGVyYWwvWQptdWx0aWxheWVyZWQKbXVsdGlsZXZlbAptdWx0aWxpbmd1YWwKbXVsdGlsaW5ndWFsaXNtL00KbXVsdGltZWRpYS9NCm11bHRpbWlsbGlvbmFpcmUvU00KbXVsdGluYXRpb25hbC9TTQptdWx0aXBhcnR5Cm11bHRpcGxheWVyL00KbXVsdGlwbGUvTVMKbXVsdGlwbGV4L1pHTURSUwptdWx0aXBsZXhlci9NCm11bHRpcGxpY2FuZC9NUwptdWx0aXBsaWNhdGlvbi9NCm11bHRpcGxpY2F0aXZlCm11bHRpcGxpY2l0eS9TTQptdWx0aXBsaWVyL00KbXVsdGlwbHkvTlpHRFJTWAptdWx0aXByb2Nlc3NpbmcKbXVsdGlwcm9jZXNzb3IvU00KbXVsdGlwdXJwb3NlCm11bHRpcmFjaWFsCm11bHRpc3RhZ2UKbXVsdGlzdG9yeQptdWx0aXRhc2svR1MKbXVsdGl0YXNraW5nL00KbXVsdGl0dWRlL1NNCm11bHRpdHVkaW5vdXMKbXVsdGl2YXJpYXRlCm11bHRpdmVyc2UvU00KbXVsdGl2aXRhbWluL01TCm11bHRpeWVhcgptdW0vU00KbXVtYmxlL01aR0RSUwptdW1ibGVyL00KbXVtYmxldHlwZWcvTQptdW1tZXIvTVMKbXVtbWVyeS9NCm11bW1pZmljYXRpb24vTQptdW1taWZ5L0dORFMKbXVtbXkvU00KbXVtcHMvTQptdW4KbXVuY2gvR0RTCm11bmNoaWVzL00KbXVuY2hraW4vU00KbXVuZGFuZS9TWQptdW5nL0RTRwptdW5pY2lwYWwvU01ZCm11bmljaXBhbGl0eS9TTQptdW5pZmljZW5jZS9NCm11bmlmaWNlbnQvWQptdW5pdGlvbi9NREdTCm11cmFsL1NNCm11cmFsaXN0L1NNCm11cmRlci9aR01EUlMKbXVyZGVyZXIvTQptdXJkZXJlc3MvTVMKbXVyZGVyb3VzL1kKbXVyay9NUwptdXJraWx5Cm11cmtpbmVzcy9NCm11cmt5L1BUUgptdXJtdXIvWkdKTURSUwptdXJtdXJlci9NCm11cm11cmluZy9NCm11cm11cm91cwptdXJyYWluL00KbXVzY2F0L01TCm11c2NhdGVsL1NNCm11c2NsZS9NR0RTCm11c2NsZWJvdW5kCm11c2NsZW1hbgptdXNjbGVtZW4KbXVzY2x5Cm11c2N1bGFyL1kKbXVzY3VsYXJpdHkvTQptdXNjdWxhdHVyZS9NCm11c2UvTUdEU0oKbXVzZXR0ZS9NUwptdXNldW0vTVMKbXVzaC9NRFJTWkcKbXVzaGluZXNzL00KbXVzaHJvb20vR1NNRAptdXNoeS9QVFIKbXVzaWMvU00KbXVzaWNhbC9NWVMKbXVzaWNhbGUvTVMKbXVzaWNhbGl0eS9NCm11c2ljaWFuL1NNWQptdXNpY2lhbnNoaXAvTQptdXNpY29sb2dpY2FsCm11c2ljb2xvZ2lzdC9NUwptdXNpY29sb2d5L00KbXVzaW5nL01ZCm11c2svTQptdXNrZWcvTVMKbXVza2VsbHVuZ2UvTVMKbXVza2V0L01TCm11c2tldGVlci9NUwptdXNrZXRyeS9NCm11c2tpZS9NCm11c2tpbmVzcy9NCm11c2ttZWxvbi9TTQptdXNrb3gvTU4KbXVza3JhdC9NUwptdXNreS9QVFJTCm11c2xpbi9NCm11c3MvTURTRwptdXNzZWwvTVMKbXVzc3kvVFIKbXVzdCd2ZQptdXN0L01SU1oKbXVzdGFjaGUvTURTCm11c3RhY2hpby9TTUQKbXVzdGFuZy9NUwptdXN0YXJkL00KbXVzdGVyL0dNRAptdXN0aWx5Cm11c3RpbmVzcy9NCm11c3RuJ3QKbXVzdHkvUFRSCm11dGFiaWxpdHkvTQptdXRhYmx5Cm11dGFnZW4vTVMKbXV0YW50L01TCm11dGF0ZS9YR05WRFMKbXV0YXRpb24vTQptdXRhdGlvbmFsCm11dGUvTVlUR0RSU1BCCm11dGVuZXNzL00KbXV0aWxhdGUvRFNHTlgKbXV0aWxhdGlvbi9NCm11dGlsYXRvci9TTQptdXRpbmVlci9TTQptdXRpbm91cy9ZCm11dGlueS9HRFNNCm11dHQvTVMKbXV0dGVyL1pHSk1EUlMKbXV0dGVyZXIvTQptdXR0ZXJpbmcvTQptdXR0b24vTQptdXR0b25jaG9wcy9NCm11dHRvbnkKbXV0dWFsL1kKbXV0dWFsaXR5L00KbXV1bXV1L01TCm11emFrCm11enppbHkKbXV6emxlL0RTTUcKbXV6enkvUApteQpteWNvbG9naXN0L1NNCm15Y29sb2d5L00KbXllbGl0aXMvTQpteW5hL01TCm15b2NhcmRpYWwKbXlvY2FyZGl1bQpteW9waWEvTQpteW9waWMKbXlvcGljYWxseQpteXJpYWQvU00KbXlybWlkb24vTVMKbXlycmgvTQpteXJ0bGUvU00KbXlzCm15c2VsZgpteXN0ZXJpb3VzL1BZCm15c3RlcmlvdXNuZXNzL00KbXlzdGVyeS9TTQpteXN0aWMvU00KbXlzdGljYWwvWQpteXN0aWNpc20vTQpteXN0aWZpY2F0aW9uL0NNCm15c3RpZnkvQ0RTR04KbXlzdGlxdWUvTQpteXRoL00KbXl0aGljCm15dGhpY2FsCm15dGhvbG9naWNhbApteXRob2xvZ2lzdC9TTQpteXRob2xvZ2l6ZS9EU0cKbXl0aG9sb2d5L1NNCm15dGhzCm15eG9tYXRvc2lzCm4vSUtUSApuYWFuL1MKbmFiL1MKbmFiYmVkCm5hYmJpbmcKbmFib2IvU00KbmFjZWxsZS9TTQpuYWNoby9TTQpuYWNyZS9NCm5hY3Jlb3VzCm5hZGlyL1NNCm5hZQpuYWZmL1JUCm5hZy9TTQpuYWdnZWQKbmFnZ2VyL01TCm5hZ2dpbmcKbmFnd2FyZQpuYWgKbmFpYWQvU00KbmFpZi9NUwpuYWlsL01EU0cKbmFpbGJydXNoL01TCm5haXZlL1JZVApuYWl2ZXRlL00KbmFpdmV0eS9NCm5ha2VkL1BZCm5ha2VkbmVzcy9NCm5hbWUncwpuYW1lL0FHRFMKbmFtZWFibGUvVQpuYW1lZC9VCm5hbWVkcm9wCm5hbWVkcm9wcGluZy9NCm5hbWVsZXNzL1kKbmFtZWx5Cm5hbWVwbGF0ZS9NUwpuYW1lc2FrZS9TTQpuYW5ueS9TTQpuYW5vYm90L1MKbmFub3NlY29uZC9TTQpuYW5vdGVjaG5vbG9neS9TTQpuYXAvU00KbmFwYWxtL01EU0cKbmFwZS9NUwpuYXBodGhhL00KbmFwaHRoYWxlbmUvTQpuYXBraW4vTVMKbmFwbGVzcwpuYXBvbGVvbi9TTQpuYXBwZWQKbmFwcGVyL01TCm5hcHBpbmcKbmFwcHkvVFJTTQpuYXJjL01TCm5hcmNpc3Npc20vTQpuYXJjaXNzaXN0L01TCm5hcmNpc3Npc3RpYwpuYXJjaXNzdXMvTQpuYXJjb2xlcHN5L00KbmFyY29sZXB0aWMKbmFyY29zZXMKbmFyY29zaXMvTQpuYXJjb3RpYy9TTQpuYXJjb3RpemF0aW9uL00KbmFyY290aXplL0dEUwpuYXJrCm5hcmt5Cm5hcnJhdGUvR05WRFNYCm5hcnJhdGlvbi9NCm5hcnJhdGl2ZS9TTQpuYXJyYXRvci9TTQpuYXJyb3cvUFRHTURSWVMKbmFycm93bmVzcy9NCm5hcndoYWwvTVMKbmFyeQpuYXNhbC9TTVkKbmFzYWxpdHkvTQpuYXNhbGl6YXRpb24vTQpuYXNhbGl6ZS9EU0cKbmFzY2VuY2UvQU0KbmFzY2VudC9BCm5hc3RpbHkKbmFzdGluZXNzL00KbmFzdHVydGl1bS9TTQpuYXN0eS9QVFIKbmF0YWwKbmF0Y2gKbmF0aW9uL01TCm5hdGlvbmFsL01ZUwpuYXRpb25hbGlzbS9NCm5hdGlvbmFsaXN0L1NNCm5hdGlvbmFsaXN0aWMKbmF0aW9uYWxpc3RpY2FsbHkKbmF0aW9uYWxpdHkvU00KbmF0aW9uYWxpemF0aW9uL01TCm5hdGlvbmFsaXplL0NEU0cKbmF0aW9uaG9vZC9NCm5hdGlvbndpZGUKbmF0aXZlL01TCm5hdGl2aXR5L1NNCm5hdGwKbmF0dGVyL0dNRFMKbmF0dGlseQpuYXR0aW5lc3MvTQpuYXR0eS9QVFIKbmF0dXJhbCdzCm5hdHVyYWwvVVBZCm5hdHVyYWxpc20vTQpuYXR1cmFsaXN0L1NNCm5hdHVyYWxpc3RpYwpuYXR1cmFsaXphdGlvbi9NCm5hdHVyYWxpemUvRFNHCm5hdHVyYWxuZXNzL1VNCm5hdHVyYWxzCm5hdHVyZSdzCm5hdHVyZS9DUwpuYXR1cmlzbQpuYXR1cmlzdC9TCm5hdWdodC9NUwpuYXVnaHRpbHkKbmF1Z2h0aW5lc3MvTQpuYXVnaHR5L1BUUgpuYXVzZWEvTQpuYXVzZWF0ZS9HRFMKbmF1c2VhdGluZy9ZCm5hdXNlb3VzL1BZCm5hdXNlb3VzbmVzcy9NCm5hdXRpY2FsL1kKbmF1dGlsdXMvTVMKbmF2YWwKbmF2ZS9NUwpuYXZlbC9TTQpuYXZpZ2FiaWxpdHkvTQpuYXZpZ2FibGUKbmF2aWdhdGUvRFNHTgpuYXZpZ2F0aW9uL00KbmF2aWdhdGlvbmFsCm5hdmlnYXRvci9NUwpuYXZ2eS9TCm5hdnkvU00KbmF5L1NNCm5heXNheWVyL01TCm5lJ2VyCm5lYW5kZXJ0aGFsL01TCm5lYXAvTVMKbmVhci9EUllTUFRHCm5lYXJieQpuZWFybmVzcy9NCm5lYXJzaG9yZQpuZWFyc2lkZQpuZWFyc2lnaHRlZC9ZUApuZWFyc2lnaHRlZG5lc3MvTQpuZWF0L05SWVBYVApuZWF0ZW4vR0QKbmVhdGgKbmVhdG5lc3MvTQpuZWJ1bGEvTQpuZWJ1bGFlCm5lYnVsYXIKbmVidWxvdXMvUFkKbmVidWxvdXNuZXNzL00KbmVjZXNzYXJpbHkvVQpuZWNlc3NhcnkvU00KbmVjZXNzaXRhdGUvRFNHCm5lY2Vzc2l0b3VzCm5lY2Vzc2l0eS9TTQpuZWNrL01EU0cKbmVja2JhbmQvUwpuZWNrZXJjaGllZi9NUwpuZWNraW5nL00KbmVja2xhY2UvTUdEU0oKbmVja2xpbmUvTVMKbmVja3RpZS9NUwpuZWNyb2xvZ3kvTQpuZWNyb21hbmNlci9TTQpuZWNyb21hbmN5L00KbmVjcm9waGlsaWEKbmVjcm9waGlsaWFjL1MKbmVjcm9wb2xpcy9NUwpuZWNyb3NlcwpuZWNyb3Npcy9NCm5lY3JvdGljCm5lY3Rhci9NCm5lY3RhcmluZS9NUwpuZWUKbmVlZC9NRFNHCm5lZWRlZC9VCm5lZWRmdWwvWQpuZWVkaW5lc3MvTQpuZWVkbGUvTUdEUwpuZWVkbGVwb2ludC9NCm5lZWRsZXNzL1lQCm5lZWRsZXNzbmVzcy9NCm5lZWRsZXdvbWFuL00KbmVlZGxld29tZW4KbmVlZGxld29yay9NCm5lZWRuJ3QKbmVlZHkvUFRSCm5lZmFyaW91cy9ZUApuZWZhcmlvdXNuZXNzL00KbmVnCm5lZ2F0ZS9EU0dOVlgKbmVnYXRpb24vTQpuZWdhdGl2ZS9NWUdQRFMKbmVnYXRpdmVuZXNzL00KbmVnYXRpdmlzbS9NCm5lZ2F0aXZpdHkvTQpuZWdsZWN0L1NHTUQKbmVnbGVjdGZ1bC9ZUApuZWdsZWN0ZnVsbmVzcy9NCm5lZ2xpZ2VlL01TCm5lZ2xpZ2VuY2UvTQpuZWdsaWdlbnQvWQpuZWdsaWdpYmxlCm5lZ2xpZ2libHkKbmVnb3RpYWJpbGl0eS9NCm5lZ290aWFibGUvQQpuZWdvdGlhdGUvQURTR04KbmVnb3RpYXRpb24vQU0KbmVnb3RpYXRpb25zCm5lZ290aWF0b3IvTVMKbmVncml0dWRlL00KbmVncm8KbmVncm9pZApuZWlnaC9NREcKbmVpZ2hib3IvU01EWUcKbmVpZ2hib3Job29kL1NNCm5laWdoYm9ybGluZXNzL00KbmVpZ2hzCm5laXRoZXIKbmVsc29uL1NNCm5lbWF0b2RlL1NNCm5lbWVzZXMKbmVtZXNpcy9NCm5lb2NsYXNzaWMKbmVvY2xhc3NpY2FsCm5lb2NsYXNzaWNpc20vTQpuZW9jb2xvbmlhbGlzbS9NCm5lb2NvbG9uaWFsaXN0L01TCm5lb2Nvbi9TTQpuZW9jb25zZXJ2YXRpdmUvU00KbmVvZHltaXVtL00KbmVvbGl0aGljCm5lb2xvZ2lzbS9TTQpuZW9uL00KbmVvbmF0YWwKbmVvbmF0ZS9NUwpuZW9waGlsaWEKbmVvcGh5dGUvTVMKbmVvcGxhc20vTVMKbmVvcGxhc3RpYwpuZW9wcmVuZS9NCm5lcGVudGhlL00KbmVwaGV3L1NNCm5lcGhyaXRlL00KbmVwaHJpdGljCm5lcGhyaXRpcy9NCm5lcGhyb3BhdGh5Cm5lcG90aXNtL00KbmVwb3Rpc3QvU00KbmVwb3Rpc3RpYwpuZXB0dW5pdW0vTQpuZXJkL01TCm5lcmR5L1JUCm5lcnZlJ3MKbmVydmUvVURTRwpuZXJ2ZWxlc3MvWVAKbmVydmVsZXNzbmVzcy9NCm5lcnZpbmVzcy9NCm5lcnZvdXMvWVAKbmVydm91c25lc3MvTQpuZXJ2eS9UUFIKbmVzdC9NRFNHCm5lc3RsZS9HSkRTCm5lc3RsaW5nL00KbmV0L1NNCm5ldGJhbGwKbmV0Ym9vay9NUwpuZXRoZXIKbmV0aGVybW9zdApuZXRoZXJ3b3JsZC9NCm5ldGlxdWV0dGUvUwpuZXR0ZWQKbmV0dGVyL1MKbmV0dGluZy9NCm5ldHRsZS9NR0RTCm5ldHRsZXNvbWUKbmV0d29yay9TR01ECm5ldHdvcmtpbmcvTQpuZXVyYWwvWQpuZXVyYWxnaWEvTQpuZXVyYWxnaWMKbmV1cmFzdGhlbmlhL00KbmV1cmFzdGhlbmljL01TCm5ldXJpdGljL01TCm5ldXJpdGlzL00KbmV1cm9sb2dpY2FsL1kKbmV1cm9sb2dpc3QvU00KbmV1cm9sb2d5L00KbmV1cm9uL01TCm5ldXJvbmFsCm5ldXJvc2VzCm5ldXJvc2lzL00KbmV1cm9zdXJnZW9uL01TCm5ldXJvc3VyZ2VyeS9NCm5ldXJvc3VyZ2ljYWwKbmV1cm90aWMvTVMKbmV1cm90aWNhbGx5Cm5ldXJvdHJhbnNtaXR0ZXIvU00KbmV1dApuZXV0ZXIvTURHUwpuZXV0cmFsL1NNWQpuZXV0cmFsaXNtL00KbmV1dHJhbGlzdC9TTQpuZXV0cmFsaXR5L00KbmV1dHJhbGl6YXRpb24vTQpuZXV0cmFsaXplL0RSU1pHCm5ldXRyYWxpemVyL00KbmV1dHJpbm8vU00KbmV1dHJvbi9TTQpuZXZlcgpuZXZlcm1vcmUKbmV2ZXJ0aGVsZXNzCm5ldmkKbmV2dXMvTQpuZXcvU1RNUllQCm5ld2JpZS9NUwpuZXdib3JuL1NNCm5ld2NvbWVyL1NNCm5ld2VsL1NNCm5ld2ZhbmdsZWQKbmV3Zm91bmQKbmV3bGluZS9TCm5ld2x5d2VkL1NNCm5ld25lc3MvTQpuZXdzL00KbmV3c2FnZW50L1MKbmV3c2JveS9TTQpuZXdzY2FzdC9TTVJaCm5ld3NjYXN0ZXIvTQpuZXdzZGVhbGVyL1NNCm5ld3NmbGFzaC9TCm5ld3NnaXJsL1NNCm5ld3Nncm91cC9NUwpuZXdzaG91bmQvUwpuZXdzbGV0dGVyL01TCm5ld3NtYW4vTQpuZXdzbWVuCm5ld3NwYXBlci9NUwpuZXdzcGFwZXJtYW4vTQpuZXdzcGFwZXJtZW4KbmV3c3BhcGVyd29tYW4vTQpuZXdzcGFwZXJ3b21lbgpuZXdzcGVhawpuZXdzcHJpbnQvTQpuZXdzcmVhZGVyL1MKbmV3c3JlZWwvTVMKbmV3c3Jvb20vTVMKbmV3c3N0YW5kL1NNCm5ld3N3ZWVrbHkvU00KbmV3c3dvbWFuL00KbmV3c3dvbWVuCm5ld3N3b3J0aGluZXNzL00KbmV3c3dvcnRoeS9QCm5ld3N5L1RSCm5ld3QvTVMKbmV3dG9uL01TCm5leHQvTQpuZXh1cy9NUwpuaWFjaW4vTQpuaWIvU00KbmliYmxlL01aR0RSUwpuaWJibGVyL00KbmljZS9QWVRSCm5pY2VuZXNzL00KbmljZXR5L1NNCm5pY2hlL1NNCm5pY2svTURSU1pHCm5pY2tlbC9NUwpuaWNrZWxvZGVvbi9TTQpuaWNrZXIvTURHCm5pY2tsZS9TCm5pY2tuYW1lL0RTTUcKbmljb3RpbmUvTQpuaWVjZS9TTQpuaWZmCm5pZmZ5Cm5pZnR5L1RSCm5pZ2dhL1NNCm5pZ2dhcmQvU01ZCm5pZ2dhcmRsaW5lc3MvTQpuaWdnYXoKbmlnZ2VyL1NNIQpuaWdnbGUvTVpHRFJTCm5pZ2dsZXIvTQpuaWdoL1JUCm5pZ2h0L1NNWQpuaWdodGNhcC9TTQpuaWdodGNsb3RoZXMvTQpuaWdodGNsdWIvU00KbmlnaHRjbHViYmVkCm5pZ2h0Y2x1YmJpbmcKbmlnaHRkcmVzcy9NUwpuaWdodGZhbGwvTQpuaWdodGdvd24vU00KbmlnaHRoYXdrL1NNCm5pZ2h0aWUvU00KbmlnaHRpbmdhbGUvU00KbmlnaHRsaWZlL00KbmlnaHRsaWdodC9TCm5pZ2h0bG9uZwpuaWdodG1hcmUvU00KbmlnaHRtYXJpc2gKbmlnaHRzaGFkZS9TTQpuaWdodHNoaXJ0L1NNCm5pZ2h0c3BvdC9NUwpuaWdodHN0YW5kL1NNCm5pZ2h0c3RpY2svU00KbmlnaHR0aW1lL00KbmlnaHR3YXRjaG1hbgpuaWdodHdhdGNobWVuCm5pZ2h0d2Vhci9NCm5paGlsaXNtL00KbmloaWxpc3QvTVMKbmloaWxpc3RpYwpuaWwvTQpuaW1iaQpuaW1ibGUvVFBSCm5pbWJsZW5lc3MvTQpuaW1ibHkKbmltYnVzL00KbmltYnkKbmltcm9kL01TCm5pbmNvbXBvb3AvU00KbmluZS9NUwpuaW5lcGluL01TCm5pbmVwaW5zL00KbmluZXRlZW4vU01ICm5pbmV0ZWVudGgvTQpuaW5ldGVlbnRocwpuaW5ldGlldGgvTQpuaW5ldGlldGhzCm5pbmV0eS9IU00KbmluamEvU00KbmlubnkvU00KbmludGgvTQpuaW50aHMKbmlvYml1bS9NCm5pcC9TTQpuaXBwZWQKbmlwcGVyL01TCm5pcHBpbmVzcy9NCm5pcHBpbmcKbmlwcGxlL01TCm5pcHB5L1RQUgpuaXJ2YW5hL00KbmlzZWkvTQpuaXQvU01SCm5pdGVyL00Kbml0cGljay9TWkdEUgpuaXRwaWNrZXIvTQpuaXRwaWNraW5nL00Kbml0cmF0ZS9EU01HTgpuaXRyYXRpb24vTQpuaXRyaWZpY2F0aW9uL00Kbml0cml0ZS9TTQpuaXRybwpuaXRyb2NlbGx1bG9zZS9NCm5pdHJvZ2VuL00Kbml0cm9nZW5vdXMKbml0cm9nbHljZXJpbi9NCm5pdHdpdC9NUwpuaXgvR01EUwpuby9TTQpub2IvU1kKbm9iYmxlL0dEUwpub2JlbGl1bS9NCm5vYmlsaXR5L00Kbm9ibGUvUlNQTVQKbm9ibGVtYW4vTQpub2JsZW1lbgpub2JsZW5lc3MvTQpub2JsZXdvbWFuL00Kbm9ibGV3b21lbgpub2JvZHkvU00Kbm9jdHVybmFsL1kKbm9jdHVybmUvTVMKbm9kL1NNCm5vZGFsCm5vZGRlZApub2RkaW5nCm5vZGRsZS9NUwpub2RkeQpub2RlL01TCm5vZHVsYXIKbm9kdWxlL01TCm5vZWwvTVMKbm9lcwpub2dnaW4vTVMKbm9ob3cKbm9pc2UvRFNNRwpub2lzZWxlc3MvUFkKbm9pc2VsZXNzbmVzcy9NCm5vaXNlbWFrZXIvTVMKbm9pc2lseQpub2lzaW5lc3MvTQpub2lzb21lCm5vaXN5L1BUUgpub21hZC9TTQpub21hZGljCm5vbWVuY2xhdHVyZS9NUwpub21pbmFsL1kKbm9taW5hdGUvQUNHTlZEUwpub21pbmF0aW9uJ3MvQQpub21pbmF0aW9uL0NTTQpub21pbmF0aXZlL1NNCm5vbWluYXRvci9DU00Kbm9taW5lZS9NUwpub24Kbm9uYWJyYXNpdmUKbm9uYWJzb3JiZW50L1NNCm5vbmFjYWRlbWljCm5vbmFjY2VwdGFuY2UvTQpub25hY2lkCm5vbmFjdGl2ZS9NUwpub25hZGRpY3RpdmUKbm9uYWRoZXNpdmUKbm9uYWRqYWNlbnQKbm9uYWRqdXN0YWJsZQpub25hZG1pbmlzdHJhdGl2ZQpub25hZ2UvTVMKbm9uYWdlbmFyaWFuL01TCm5vbmFnZ3Jlc3Npb24vTQpub25hbGNvaG9saWMKbm9uYWxpZ25lZApub25hbGlnbm1lbnQvTQpub25hbGxlcmdpYwpub25hcHBlYXJhbmNlL01TCm5vbmFzc2lnbmFibGUKbm9uYXRobGV0aWMKbm9uYXR0ZW5kYW5jZS9NCm5vbmF1dG9tb3RpdmUKbm9uYXZhaWxhYmlsaXR5L00Kbm9uYmFzaWMKbm9uYmVsaWV2ZXIvTVMKbm9uYmVsbGlnZXJlbnQvTVMKbm9uYmluZGluZwpub25icmVha2FibGUKbm9uYnVybmFibGUKbm9uY2Fsb3JpYwpub25jYW5jZXJvdXMKbm9uY2UvTQpub25jaGFsYW5jZS9NCm5vbmNoYWxhbnQvWQpub25jaGFyZ2VhYmxlCm5vbmNsZXJpY2FsL01TCm5vbmNsaW5pY2FsCm5vbmNvbGxlY3RhYmxlCm5vbmNvbS9NUwpub25jb21iYXQKbm9uY29tYmF0YW50L01TCm5vbmNvbWJ1c3RpYmxlCm5vbmNvbW1lcmNpYWwvTVMKbm9uY29tbWl0dGFsL1kKbm9uY29tbXVuaWNhYmxlCm5vbmNvbXBldGluZwpub25jb21wZXRpdGl2ZQpub25jb21wbGlhbmNlL00Kbm9uY29tcGx5aW5nCm5vbmNvbXByZWhlbmRpbmcKbm9uY29uZHVjdGluZwpub25jb25kdWN0b3IvTVMKbm9uY29uZm9ybWluZwpub25jb25mb3JtaXNtCm5vbmNvbmZvcm1pc3QvTVMKbm9uY29uZm9ybWl0eS9NCm5vbmNvbnNlY3V0aXZlCm5vbmNvbnN0cnVjdGl2ZQpub25jb250YWdpb3VzCm5vbmNvbnRpbnVvdXMKbm9uY29udHJpYnV0aW5nCm5vbmNvbnRyaWJ1dG9yeQpub25jb250cm92ZXJzaWFsCm5vbmNvbnZlcnRpYmxlCm5vbmNvb3BlcmF0aW9uL00Kbm9uY29ycm9kaW5nCm5vbmNvcnJvc2l2ZQpub25jcmVkaXQKbm9uY3JpbWluYWwvU00Kbm9uY3JpdGljYWwKbm9uY3J5c3RhbGxpbmUKbm9uY3VtdWxhdGl2ZQpub25jdXN0b2RpYWwKbm9uZGFpcnkKbm9uZGVkdWN0aWJsZS9NCm5vbmRlbGl2ZXJ5L1NNCm5vbmRlbW9jcmF0aWMKbm9uZGVub21pbmF0aW9uYWwKbm9uZGVwYXJ0bWVudGFsCm5vbmRlcHJlY2lhdGluZwpub25kZXNjcmlwdApub25kZXN0cnVjdGl2ZQpub25kZXRhY2hhYmxlCm5vbmRpc2NpcGxpbmFyeQpub25kaXNjbG9zdXJlL00Kbm9uZGlzY3JpbWluYXRpb24vTQpub25kaXNjcmltaW5hdG9yeQpub25kcmFtYXRpYwpub25kcmlua2VyL01TCm5vbmRyeWluZwpub25lCm5vbmVkdWNhdGlvbmFsCm5vbmVmZmVjdGl2ZQpub25lbGFzdGljCm5vbmVsZWN0cmljCm5vbmVsZWN0cmljYWwKbm9uZW1wdHkKbm9uZW5mb3JjZWFibGUKbm9uZW50aXR5L1NNCm5vbmVxdWl2YWxlbnQvTVMKbm9uZXNzZW50aWFsCm5vbmVzdWNoL01TCm5vbmV0aGVsZXNzCm5vbmV2ZW50L01TCm5vbmV4Y2hhbmdlYWJsZQpub25leGNsdXNpdmUKbm9uZXhlbXB0L00Kbm9uZXhpc3RlbmNlL00Kbm9uZXhpc3RlbnQKbm9uZXhwbG9zaXZlL01TCm5vbmZhY3R1YWwKbm9uZmFkaW5nCm5vbmZhdApub25mYXRhbApub25mYXR0ZW5pbmcKbm9uZmVycm91cwpub25maWN0aW9uL00Kbm9uZmljdGlvbmFsCm5vbmZsYW1tYWJsZQpub25mbG93ZXJpbmcKbm9uZmx1Y3R1YXRpbmcKbm9uZmx5aW5nCm5vbmZvb2QvTQpub25mcmVlemluZwpub25mdW5jdGlvbmFsCm5vbmdvdmVybm1lbnRhbApub25ncmFudWxhcgpub25oYXphcmRvdXMKbm9uaGVyZWRpdGFyeQpub25odW1hbgpub25pZGVudGljYWwKbm9uaW5jbHVzaXZlCm5vbmluZGVwZW5kZW50Cm5vbmluZHVzdHJpYWwKbm9uaW5mZWN0aW91cwpub25pbmZsYW1tYXRvcnkKbm9uaW5mbGF0aW9uYXJ5Cm5vbmluZmxlY3RlZApub25pbnRlbGxlY3R1YWwvTVMKbm9uaW50ZXJjaGFuZ2VhYmxlCm5vbmludGVyZmVyZW5jZS9NCm5vbmludGVydmVudGlvbi9NCm5vbmludG94aWNhdGluZwpub25pbnZhc2l2ZQpub25pcnJpdGF0aW5nCm5vbmlzc3VlCm5vbmp1ZGdtZW50YWwKbm9uanVkaWNpYWwKbm9ubGVnYWwKbm9ubGV0aGFsCm5vbmxpbmVhcgpub25saXRlcmFyeQpub25saXZpbmcvTQpub25tYWduZXRpYwpub25tYWxpZ25hbnQKbm9ubWVtYmVyL01TCm5vbm1ldGFsL1NNCm5vbm1ldGFsbGljCm5vbm1pZ3JhdG9yeQpub25taWxpdGFudApub25taWxpdGFyeQpub25uYXJjb3RpYy9TTQpub25uYXRpdmUvTVMKbm9ubmVnb3RpYWJsZQpub25udWNsZWFyCm5vbm51bWVyaWNhbApub25vYmplY3RpdmUKbm9ub2JsaWdhdG9yeQpub25vYnNlcnZhbmNlL00Kbm9ub2JzZXJ2YW50Cm5vbm9jY3VwYXRpb25hbApub25vY2N1cmVuY2UKbm9ub2ZmaWNpYWwKbm9ub3BlcmF0aW9uYWwKbm9ub3BlcmF0aXZlCm5vbnBhcmFsbGVsL01TCm5vbnBhcmVpbC9NUwpub25wYXJ0aWNpcGFudC9NUwpub25wYXJ0aWNpcGF0aW5nCm5vbnBhcnRpc2FuL1NNCm5vbnBheWluZwpub25wYXltZW50L1NNCm5vbnBlcmZvcm1hbmNlL00Kbm9ucGVyZm9ybWluZwpub25wZXJpc2hhYmxlCm5vbnBlcnNvbi9NUwpub25waHlzaWNhbC9ZCm5vbnBsdXMvUwpub25wbHVzc2VkCm5vbnBsdXNzaW5nCm5vbnBvaXNvbm91cwpub25wb2xpdGljYWwKbm9ucG9sbHV0aW5nCm5vbnBvcm91cwpub25wcmFjdGljaW5nCm5vbnByZWp1ZGljaWFsCm5vbnByZXNjcmlwdGlvbgpub25wcm9kdWN0aXZlCm5vbnByb2Zlc3Npb25hbC9TTQpub25wcm9maXQvU01CCm5vbnByb2xpZmVyYXRpb24vTQpub25wdWJsaWMKbm9ucHVuaXNoYWJsZQpub25yYWNpYWwKbm9ucmFkaW9hY3RpdmUKbm9ucmFuZG9tCm5vbnJlYWN0aXZlCm5vbnJlY2lwcm9jYWwvU00Kbm9ucmVjaXByb2NhdGluZwpub25yZWNvZ25pdGlvbi9NCm5vbnJlY292ZXJhYmxlCm5vbnJlY3VycmluZwpub25yZWRlZW1hYmxlCm5vbnJlZmlsbGFibGUKbm9ucmVmdW5kYWJsZQpub25yZWxpZ2lvdXMKbm9ucmVuZXdhYmxlCm5vbnJlcHJlc2VudGF0aW9uYWwKbm9ucmVzaWRlbnQvTVMKbm9ucmVzaWRlbnRpYWwKbm9ucmVzaWR1YWwvTQpub25yZXNpc3RhbmNlL00Kbm9ucmVzaXN0YW50Cm5vbnJlc3RyaWN0aXZlCm5vbnJldHVybmFibGUvTVMKbm9ucmh5dGhtaWMKbm9ucmlnaWQKbm9uc2FsYXJpZWQKbm9uc2NoZWR1bGVkCm5vbnNjaWVudGlmaWMKbm9uc2NvcmluZwpub25zZWFzb25hbApub25zZWN0YXJpYW4Kbm9uc2VjdWxhcgpub25zZWdyZWdhdGVkCm5vbnNlbnNlL00Kbm9uc2Vuc2ljYWwvWQpub25zZW5zaXRpdmUKbm9uc2V4aXN0Cm5vbnNleHVhbApub25za2lkCm5vbnNsaXAKbm9uc21va2VyL1NNCm5vbnNtb2tpbmcKbm9uc29jaWFsCm5vbnNwZWFraW5nCm5vbnNwZWNpYWxpc3QvTVMKbm9uc3BlY2lhbGl6aW5nCm5vbnNwZWNpZmljCm5vbnNwaXJpdHVhbC9TTQpub25zdGFpbmluZwpub25zdGFuZGFyZApub25zdGFydGVyL01TCm5vbnN0aWNrCm5vbnN0b3AKbm9uc3RyYXRlZ2ljCm5vbnN0cmlraW5nCm5vbnN0cnVjdHVyYWwKbm9uc3VjY2Vzc2l2ZQpub25zdXBwb3J0L0dNCm5vbnN1cmdpY2FsCm5vbnN1c3RhaW5pbmcKbm9uc3ltcGF0aGl6ZXIvTQpub250YXJuaXNoYWJsZQpub250YXhhYmxlCm5vbnRlY2huaWNhbApub250ZW51cmVkCm5vbnRoZWF0cmljYWwKbm9udGhpbmtpbmcKbm9udGhyZWF0ZW5pbmcKbm9udG94aWMKbm9udHJhZGl0aW9uYWwKbm9udHJhbnNmZXJhYmxlCm5vbnRyYW5zcGFyZW50Cm5vbnRyaXZpYWwKbm9udHJvcGljYWwKbm9udW5pZm9ybQpub251bmlvbgpub251c2VyL01TCm5vbnZlbm9tb3VzCm5vbnZlcmJhbApub252aWFibGUKbm9udmlvbGVuY2UvTQpub252aW9sZW50L1kKbm9udmlydWxlbnQKbm9udm9jYWwKbm9udm9jYXRpb25hbApub252b2xhdGlsZQpub252b3Rlci9NUwpub252b3RpbmcKbm9ud2hpdGUvTVMKbm9ud29ya2luZwpub255aWVsZGluZwpub256ZXJvCm5vb2RsZS9NR0RTCm5vb2svTVMKbm9va2llCm5vb2t5Cm5vb24vTQpub29uZGF5L00Kbm9vbnRpZGUvTQpub29udGltZS9NCm5vb3NlL1NNCm5vcGUKbm9yCm5vcidlYXN0ZXIKbm9ybS9NUwpub3JtYWwvTVkKbm9ybWFsY3kvTQpub3JtYWxpdHkvTQpub3JtYWxpemF0aW9uL00Kbm9ybWFsaXplL0RTRwpub3JtYXRpdmUKbm9ydGgvWk1SCm5vcnRoYm91bmQKbm9ydGhlYXN0L01SWgpub3J0aGVhc3Rlci9NWQpub3J0aGVhc3Rlcm4Kbm9ydGhlYXN0d2FyZC9TCm5vcnRoZXIvTVkKbm9ydGhlcmx5L1NNCm5vcnRoZXJuL1pSCm5vcnRoZXJuZXIvTQpub3J0aGVybm1vc3QKbm9ydGh3YXJkL1MKbm9ydGh3ZXN0L1pNUgpub3J0aHdlc3Rlci9NWQpub3J0aHdlc3Rlcm4Kbm9ydGh3ZXN0d2FyZC9TCm5vc2UvTUdEUwpub3NlYmFnL1MKbm9zZWJsZWVkL01TCm5vc2Vjb25lL1NNCm5vc2VkaXZlL0RTTUcKbm9zZWdheS9TTQpub3NoL01EUlNaRwpub3NoZXIvTQpub3NpbHkKbm9zaW5lc3MvTQpub3N0YWxnaWEvTQpub3N0YWxnaWMKbm9zdGFsZ2ljYWxseQpub3N0cmlsL01TCm5vc3RydW0vTVMKbm9zeS9SUFQKbm90L0IKbm90YWJpbGl0eS9TTQpub3RhYmxlL1NNCm5vdGFibHkKbm90YXJpYWwKbm90YXJpemF0aW9uL00Kbm90YXJpemUvR0RTCm5vdGFyeS9TTQpub3RhdGUvR0RTCm5vdGF0aW9uL0ZDU00Kbm90Y2gvR01EUwpub3RlJ3MKbm90ZS9GQ1NERwpub3RlYm9vay9NUwpub3RlbGV0L1MKbm90ZXBhZC9TCm5vdGVwYXBlci9NCm5vdGV3b3J0aGluZXNzL00Kbm90ZXdvcnRoeS9QCm5vdGhpbmcvUFNNCm5vdGhpbmduZXNzL00Kbm90aWNlL01HRFMKbm90aWNlYWJsZS9VCm5vdGljZWFibHkKbm90aWNlYm9hcmQvUwpub3RpY2VkL1UKbm90aWZpYWJsZQpub3RpZmljYXRpb24vTQpub3RpZmllci9NCm5vdGlmeS9ORFJTWFpHCm5vdGlvbi9NUwpub3Rpb25hbC9ZCm5vdG9yaWV0eS9NCm5vdG9yaW91cy9ZCm5vdHdpdGhzdGFuZGluZwpub3R3b3JrL1MKbm91Z2F0L01TCm5vdW4vS01TCm5vdXJpc2gvRFNMRwpub3VyaXNobWVudC9NCm5vdXMKbm92YS9NUwpub3ZhZQpub3ZlbC9TTQpub3ZlbGV0dGUvU00Kbm92ZWxpc3QvU00Kbm92ZWxpemF0aW9uL01TCm5vdmVsaXplL0RTRwpub3ZlbGxhL01TCm5vdmVsdHkvU00Kbm92ZW5hL01TCm5vdmVuZQpub3ZpY2UvTVMKbm92aXRpYXRlL01TCm5vdy9NCm5vd2FkYXlzL00Kbm93YXkvUwpub3doZXJlL00Kbm93aXNlCm5vd3QKbm94aW91cwpub3p6bGUvTVMKbnUvU00KbnVhbmNlL01EUwpudWIvU00KbnViYmluL01TCm51YmJ5L1RSCm51YmlsZQpudWNsZWFyL0sKbnVjbGVhdGUvRFNHTgpudWNsZWF0aW9uL00KbnVjbGVpCm51Y2xlaWMKbnVjbGVvbGkKbnVjbGVvbHVzL00KbnVjbGVvbi9TTQpudWNsZW9zaWRlCm51Y2xlb3RpZGUKbnVjbGV1cy9NCm51ZGUvTVRSUwpudWRnZS9HRFNNCm51ZGlzbS9NCm51ZGlzdC9TTQpudWRpdHkvTQpudWdhdG9yeQpudWdnZXQvU00KbnVpc2FuY2UvTVMKbnVrZS9NR0RTCm51bGwvUwpudWxsaWZpY2F0aW9uL00KbnVsbGlmeS9ORFNHCm51bGxpdHkvTQpudW1iL1pUR1BEUllTCm51bWJlcidzCm51bWJlci9BU0RHCm51bWJlcmVkL1UKbnVtYmVybGVzcwpudW1ibmVzcy9NCm51bWVyYWJsZS9JCm51bWVyYWN5L0lNCm51bWVyYWwvU00KbnVtZXJhdGUvWEdORFMKbnVtZXJhdGlvbi9NCm51bWVyYXRvci9NUwpudW1lcmljCm51bWVyaWNhbC9ZCm51bWVyb2xvZ2lzdC9NUwpudW1lcm9sb2d5L00KbnVtZXJvdXMvWQpudW1pbm91cwpudW1pc21hdGljL1MKbnVtaXNtYXRpY3MvTQpudW1pc21hdGlzdC9TTQpudW1za3VsbC9NUwpudW4vU00KbnVuY2lvL1NNCm51bm5lcnkvU00KbnVwdGlhbC9NUwpudXJzZS9NWkdEUlMKbnVyc2VsaW5ncwpudXJzZW1haWQvTVMKbnVyc2VyL00KbnVyc2VyeS9TTQpudXJzZXJ5bWFuL00KbnVyc2VyeW1lbgpudXJzaW5nL00KbnVyc2xpbmcvU00KbnVydHVyZS9EUlNNWkcKbnVydHVyZXIvTQpudXQvU00KbnV0Y2FzZS9TCm51dGNyYWNrZXIvTVMKbnV0aGF0Y2gvTVMKbnV0aG91c2UvUwpudXRtZWF0L1NNCm51dG1lZy9TTQpudXRwaWNrL1NNCm51dHJpYS9TTQpudXRyaWVudC9NUwpudXRyaW1lbnQvTVMKbnV0cml0aW9uL00KbnV0cml0aW9uYWwvWQpudXRyaXRpb25pc3QvU00KbnV0cml0aW91cy9ZUApudXRyaXRpb3VzbmVzcy9NCm51dHJpdGl2ZQpudXRzaGVsbC9NUwpudXR0ZWQKbnV0dGVyL1MKbnV0dGluZXNzL00KbnV0dGluZwpudXR0eS9SVFAKbnV6emxlL0RSU01aRwpudXp6bGVyL00KbnliYmxlL1MKbnlsb24vTVMKbnlsb25zL00KbnltcGgvTQpueW1waGV0L01TCm55bXBoby9TCm55bXBob21hbmlhL00KbnltcGhvbWFuaWFjL1NNCm55bXBocwpvCm8nY2xvY2sKbydlcgpvYWYvU00Kb2FmaXNoL1BZCm9hZmlzaG5lc3MvTQpvYWsvU01OCm9ha3VtL00Kb2FyL1NHTUQKb2FybG9jay9TTQpvYXJzbWFuL00Kb2Fyc21lbgpvYXJzd29tYW4vTQpvYXJzd29tZW4Kb2FzZXMKb2FzaXMvTQpvYXQvU01OCm9hdGNha2UvU00Kb2F0aC9NCm9hdGhzCm9hdG1lYWwvTQpvYXRzL00Kb2IvUwpvYmJsaWdhdG8vTVMKb2JkdXJhY3kvTQpvYmR1cmF0ZS9QWQpvYmR1cmF0ZW5lc3MvTQpvYmVkaWVuY2UvRU0Kb2JlZGllbnQvRVkKb2JlaXNhbmNlL1NNCm9iZWlzYW50Cm9iZWxpc2svTVMKb2Jlc2UKb2Jlc2l0eS9NCm9iZXkvRURTRwpvYmZ1c2NhdGUvR05YRFMKb2JmdXNjYXRpb24vTQpvYmkvU00Kb2JpdC9NUwpvYml0dWFyeS9TTQpvYmoKb2JqZWN0L1NHVk1ECm9iamVjdGlmeS9OR0RTCm9iamVjdGlvbi9TTUIKb2JqZWN0aW9uYWJsZS9VCm9iamVjdGlvbmFibHkKb2JqZWN0aXZlL1NNWVAKb2JqZWN0aXZlbmVzcy9NCm9iamVjdGl2aXR5L00Kb2JqZWN0b3IvTVMKb2JqdXJnYXRlL1hHTkRTCm9ianVyZ2F0aW9uL00Kb2JsYXRlL05YCm9ibGF0aW9uL00Kb2JsaWdhdGUvRFNYR04Kb2JsaWdhdGlvbi9NCm9ibGlnYXRvcmlseQpvYmxpZ2F0b3J5Cm9ibGlnZS9FR0RTCm9ibGlnaW5nL1kKb2JsaXF1ZS9TTVlQCm9ibGlxdWVuZXNzL00Kb2JsaXF1aXR5L00Kb2JsaXRlcmF0ZS9EU0dOCm9ibGl0ZXJhdGlvbi9NCm9ibGl2aW9uL00Kb2JsaXZpb3VzL1lQCm9ibGl2aW91c25lc3MvTQpvYmxvbmcvTVMKb2Jsb3F1eS9NCm9ibm94aW91cy9ZUApvYm5veGlvdXNuZXNzL00Kb2JvZS9NUwpvYm9pc3QvTVMKb2JzY2VuZS9SWVQKb2JzY2VuaXR5L1NNCm9ic2N1cmFudGlzbS9NCm9ic2N1cmFudGlzdC9TTQpvYnNjdXJlL0RSU1lURwpvYnNjdXJpdHkvU00Kb2JzZXF1aWVzCm9ic2VxdWlvdXMvUFkKb2JzZXF1aW91c25lc3MvTQpvYnNlcXV5L00Kb2JzZXJ2YWJseQpvYnNlcnZhbmNlL01TCm9ic2VydmFudC9ZCm9ic2VydmF0aW9uL1NNCm9ic2VydmF0aW9uYWwKb2JzZXJ2YXRvcnkvU00Kb2JzZXJ2ZS9EUlNCWkcKb2JzZXJ2ZWQvVQpvYnNlcnZlci9NCm9ic2Vzcy9EU0dWCm9ic2Vzc2lvbi9TTQpvYnNlc3Npb25hbC9ZCm9ic2Vzc2l2ZS9QU01ZCm9ic2Vzc2l2ZW5lc3MvTQpvYnNpZGlhbi9NCm9ic29sZXNjZS9EU0cKb2Jzb2xlc2NlbmNlL00Kb2Jzb2xlc2NlbnQKb2Jzb2xldGUvR0RTCm9ic3RhY2xlL01TCm9ic3RldHJpYy9TCm9ic3RldHJpY2FsCm9ic3RldHJpY2lhbi9TTQpvYnN0ZXRyaWNzL00Kb2JzdGluYWN5L00Kb2JzdGluYXRlL1kKb2JzdHJlcGVyb3VzL1lQCm9ic3RyZXBlcm91c25lc3MvTQpvYnN0cnVjdC9ER1ZTCm9ic3RydWN0ZWQvVQpvYnN0cnVjdGlvbi9TTQpvYnN0cnVjdGlvbmlzbS9NCm9ic3RydWN0aW9uaXN0L01TCm9ic3RydWN0aXZlL1lQCm9ic3RydWN0aXZlbmVzcy9NCm9idGFpbi9EQkxHUwpvYnRhaW5hYmxlL1UKb2J0YWlubWVudC9NCm9idHJ1ZGUvRFNHCm9idHJ1c2lvbi9NCm9idHJ1c2l2ZS9VUFkKb2J0cnVzaXZlbmVzcy9VTQpvYnR1c2UvWVRSUApvYnR1c2VuZXNzL00Kb2J2ZXJzZS9TTQpvYnZpYXRlL0RTR04Kb2J2aWF0aW9uL00Kb2J2aW91cy9QWQpvYnZpb3VzbmVzcy9NCm9jYXJpbmEvTVMKb2NjYXNpb24vR01EUwpvY2Nhc2lvbmFsL1kKb2NjaWRlbnRhbC9TTQpvY2NsdWRlL0dEUwpvY2NsdXNpb24vU00Kb2NjbHVzaXZlCm9jY3VsdC9NCm9jY3VsdGlzbS9NCm9jY3VsdGlzdC9TTQpvY2N1cGFuY3kvTQpvY2N1cGFudC9TTQpvY2N1cGF0aW9uL0FNCm9jY3VwYXRpb25hbC9ZCm9jY3VwYXRpb25zCm9jY3VwaWVkL1UKb2NjdXBpZXIvU00Kb2NjdXB5L0FEU0cKb2NjdXIvQVMKb2NjdXJyZWQvQQpvY2N1cnJlbmNlL1NNCm9jY3VycmluZy9BCm9jZWFuL1NNCm9jZWFuZnJvbnQvU00Kb2NlYW5nb2luZwpvY2VhbmljL00Kb2NlYW5vZ3JhcGhlci9TTQpvY2Vhbm9ncmFwaGljCm9jZWFub2dyYXBoeS9NCm9jZWFub2xvZ3kvTQpvY2Vsb3QvTVMKb2NoL1IKb2NoZXIvTQpvY2tlci9TCm9jdGFnb24vTVMKb2N0YWdvbmFsCm9jdGFsCm9jdGFuZS9NUwpvY3RhdmUvTVMKb2N0YXZvL01TCm9jdGV0L1NNCm9jdG9nZW5hcmlhbi9TTQpvY3RvcHVzL01TCm9jdWxhci9NUwpvY3VsaXN0L1NNCm9kYWxpc3F1ZS9TTQpvZGQvU1RSWUxQCm9kZGJhbGwvU00Kb2RkaXR5L1NNCm9kZG1lbnQvU00Kb2RkbmVzcy9NCm9kZHMvTQpvZGUvU00Kb2Rpb3VzL1lQCm9kaW91c25lc3MvTQpvZGl1bS9NCm9kb21ldGVyL01TCm9kb3IvTURTCm9kb3JpZmVyb3VzCm9kb3JsZXNzCm9kb3JvdXMKb2R5c3NleS9NUwpvZWRpcGFsCm9lbm9sb2d5L00Kb2Vub3BoaWxlL1NNCm9ldXZyZS9NUwpvZgpvZmYvU1pHRFJKCm9mZmFsL00Kb2ZmYmVhdC9NUwpvZmZlbmQvWkdEUlMKb2ZmZW5kZXIvTQpvZmZlbnNlL01TCm9mZmVuc2l2ZSdzCm9mZmVuc2l2ZS9JUFkKb2ZmZW5zaXZlbmVzcy9JTQpvZmZlbnNpdmVzCm9mZmVyL0pHTUQKb2ZmZXJpbmcvTQpvZmZlcnRvcnkvU00Kb2ZmaGFuZApvZmZoYW5kZWQvUFkKb2ZmaGFuZGVkbmVzcy9NCm9mZmljZS9NWlJTCm9mZmljZWhvbGRlci9TTQpvZmZpY2VyL00Kb2ZmaWNpYWwvTVlTCm9mZmljaWFsZG9tL00Kb2ZmaWNpYWxlc2UKb2ZmaWNpYWxpc20vTQpvZmZpY2lhbnQvU00Kb2ZmaWNpYXRlL0RTRwpvZmZpY2lhdG9yL01TCm9mZmljaW91cy9QWQpvZmZpY2lvdXNuZXNzL00Kb2ZmaW5nL00Kb2ZmaXNoCm9mZmxpbmUKb2ZmbG9hZC9TREcKb2ZmcHJpbnQvU00Kb2Zmc2V0L01TCm9mZnNldHRpbmcKb2Zmc2hvb3QvTVMKb2Zmc2hvcmUvRwpvZmZzaWRlCm9mZnNpdGUKb2Zmc3ByaW5nL00Kb2Zmc3RhZ2UvUwpvZmZ0cmFjawpvZnQKb2Z0ZW4vVFIKb2Z0ZW50aW1lcwpvZnR0aW1lcwpvZ2xlL01aR0RSUwpvZ2xlci9NCm9ncmUvTVMKb2dyZWlzaApvZ3Jlc3MvTVMKb2gvTQpvaG0vU00Kb2htbWV0ZXIvTVMKb2hvCm9ocwpvaQpvaWsvUwpvaWwvU0dNRApvaWxjYW4vUwpvaWxjbG90aC9NCm9pbGNsb3RocwpvaWxmaWVsZC9TCm9pbGluZXNzL00Kb2lsbWFuCm9pbG1lbgpvaWxza2luL01TCm9pbHNraW5zL00Kb2lseS9SUFQKb2luay9NRFNHCm9pbnRtZW50L1NNCm9rYXBpL1NNCm9rYXkvTVNHCm9rcmEvTVMKb2xkL1RNTlJQCm9sZGllL1NNCm9sZGlzaApvbGRuZXNzL00Kb2xkc3Rlci9NUwpvbGUvU01WCm9sZWFnaW5vdXMKb2xlYW5kZXIvTVMKb2xlby9NCm9sZW9tYXJnYXJpbmUvTQpvbGZhY3RvcnkvU00Kb2xpZ2FyY2gvTQpvbGlnYXJjaGljCm9saWdhcmNoaWNhbApvbGlnYXJjaHMKb2xpZ2FyY2h5L1NNCm9saWdvbnVjbGVvdGlkZS9TCm9saWdvcG9seS9TTQpvbGl2ZS9TTQpvbS9TTU5YCm9tYnVkc21hbi9NCm9tYnVkc21lbgpvbWVnYS9TTQpvbWVsZXQvTVMKb21lbi9NCm9taWNyb24vTVMKb21pbm91cy9ZUApvbWlub3VzbmVzcy9NCm9taXNzaW9uL01TCm9taXQvUwpvbWl0dGVkCm9taXR0aW5nCm9tbmlidXMvTVMKb21uaXBvdGVuY2UvTQpvbW5pcG90ZW50Cm9tbmlwcmVzZW5jZS9NCm9tbmlwcmVzZW50Cm9tbmlzY2llbmNlL00Kb21uaXNjaWVudApvbW5pdm9yZS9NUwpvbW5pdm9yb3VzL1BZCm9tbml2b3JvdXNuZXNzL00Kb24vWQpvbmNlL00Kb25jb2dlbmUvU00Kb25jb2xvZ2lzdC9TTQpvbmNvbG9neS9NCm9uY29taW5nCm9uZS9TWE1OUApvbmVuZXNzL00Kb25lcm91cy9QWQpvbmVyb3VzbmVzcy9NCm9uZXNlbGYKb25ldGltZQpvbmdvaW5nCm9uaW9uL00Kb25pb25za2luL00Kb25saW5lCm9ubG9va2VyL1NNCm9ubG9va2luZwpvbm9tYXRvcG9laWEvTQpvbm9tYXRvcG9laWMKb25vbWF0b3BvZXRpYwpvbnJ1c2gvTVNHCm9uc2NyZWVuCm9uc2V0L01TCm9uc2hvcmUKb25zaWRlCm9uc2l0ZQpvbnNsYXVnaHQvTVMKb25zdGFnZQpvbnRvCm9udG9nZW55L00Kb250b2xvZ2ljYWwKb250b2xvZ3kvTQpvbnVzL01TCm9ud2FyZApvbnl4L01TCm9vZGxlcy9NCm9vaC9HRApvb2hzCm9vbXBoCm9vcHMKb296ZS9NR0RTCm9venkvVFIKb3AvU01ERwpvcGFjaXR5L00Kb3BhbC9NUwpvcGFsZXNjZW5jZS9NCm9wYWxlc2NlbnQKb3BhcXVlL1BZVEdEUlMKb3BhcXVlbmVzcy9NCm9wY29kZS9TCm9wZS9TCm9wZW4vWlRHSlBNRFJZUwpvcGVuY2FzdApvcGVuZWQvVQpvcGVuZXIvTQpvcGVuaGFuZGVkL1AKb3BlbmhhbmRlZG5lc3MvTQpvcGVuaGVhcnRlZApvcGVuaW5nL00Kb3Blbm5lc3MvTQpvcGVud29yay9NCm9wZXJhL01TCm9wZXJhYmxlL0kKb3BlcmFuZC9TCm9wZXJhdGUvRFNHTlZYCm9wZXJhdGljCm9wZXJhdGljYWxseQpvcGVyYXRpb24vTQpvcGVyYXRpb25hbC9ZCm9wZXJhdGl2ZS9TTQpvcGVyYXRvci9TTQpvcGVyZXR0YS9TTQpvcGh0aGFsbWljCm9waHRoYWxtb2xvZ2lzdC9TTQpvcGh0aGFsbW9sb2d5L00Kb3BpYXRlL1NNCm9waW5lL0dOWERTCm9waW5pb24vTQpvcGluaW9uYXRlZApvcGl1bS9NCm9wb3NzdW0vTVMKb3BwCm9wcG9uZW50L1NNCm9wcG9ydHVuZS9JWQpvcHBvcnR1bmlzbS9NCm9wcG9ydHVuaXN0L1NNCm9wcG9ydHVuaXN0aWMKb3Bwb3J0dW5pc3RpY2FsbHkKb3Bwb3J0dW5pdHkvU00Kb3Bwb3NlL0RTRwpvcHBvc2VkL1UKb3Bwb3NpdGUvU01ZTlgKb3Bwb3NpdGlvbi9NCm9wcHJlc3MvRFNHVgpvcHByZXNzaW9uL00Kb3BwcmVzc2l2ZS9ZUApvcHByZXNzaXZlbmVzcy9NCm9wcHJlc3Nvci9NUwpvcHByb2JyaW91cy9ZCm9wcHJvYnJpdW0vTQpvcHQvU0dECm9wdGljL01TCm9wdGljYWwvWQpvcHRpY2lhbi9TTQpvcHRpY3MvTQpvcHRpbWEKb3B0aW1hbC9ZCm9wdGltaXNtL1NNCm9wdGltaXN0L1NNCm9wdGltaXN0aWMKb3B0aW1pc3RpY2FsbHkKb3B0aW1pemF0aW9uL01TCm9wdGltaXplL0RSU0cKb3B0aW11bS9TTQpvcHRpb24vU01ERwpvcHRpb25hbC9ZCm9wdG9tZXRyaXN0L01TCm9wdG9tZXRyeS9NCm9wdWxlbmNlL00Kb3B1bGVudC9ZCm9wdXMvTVMKb3IKb3JhY2xlL1NNCm9yYWN1bGFyCm9yYWwvTVlTCm9yYW5nZS9TTVAKb3JhbmdlYWRlL01TCm9yYW5nZXJ5L1NNCm9yYW5ndXRhbi9TTQpvcmF0ZS9HTlhEUwpvcmF0aW9uL00Kb3JhdG9yL1NNCm9yYXRvcmljYWwvWQpvcmF0b3Jpby9NUwpvcmF0b3J5L1NNCm9yYi9TTQpvcmJpY3VsYXIKb3JiaXQvTURSWkdTCm9yYml0YWwvU00Kb3JiaXRlci9NCm9yYy9TTQpvcmNoYXJkL1NNCm9yY2hlc3RyYS9NUwpvcmNoZXN0cmFsCm9yY2hlc3RyYXRlL0RTWEdOCm9yY2hlc3RyYXRpb24vTQpvcmNoaWQvU00Kb3JkYWluL1NETEcKb3JkYWlubWVudC9NCm9yZGVhbC9TTQpvcmRlci9FQU1ER1MKb3JkZXJpbmdzCm9yZGVybGluZXNzL0VNCm9yZGVybHkvUFNNCm9yZGluYWwvU00Kb3JkaW5hbmNlL1NNCm9yZGluYXJpbHkKb3JkaW5hcmluZXNzL00Kb3JkaW5hcnkvU01QCm9yZGluYXRlL01OU1gKb3JkaW5hdGlvbi9NCm9yZG5hbmNlL00Kb3JkdXJlL00Kb3JlL1NNCm9yZWdhbm8vTQpvcmcKb3JnYW4vTVMKb3JnYW5keS9NCm9yZ2FuZWxsZS9NUwpvcmdhbmljL1NNCm9yZ2FuaWNhbGx5L0kKb3JnYW5pc20vTVMKb3JnYW5pc21pYwpvcmdhbmlzdC9NUwpvcmdhbml6YXRpb24vQVNNCm9yZ2FuaXphdGlvbmFsL1kKb3JnYW5pemUvQUVTREcKb3JnYW5pemVkL1UKb3JnYW5pemVyL01TCm9yZ2FuemEvTQpvcmdhc20vU00Kb3JnYXNtaWMKb3JnaWFzdGljCm9yZ3kvU00Kb3JpZWwvTVMKb3JpZW50J3MKb3JpZW50L0FFREdTCm9yaWVudGFsL01TCm9yaWVudGFsaXN0L1MKb3JpZW50YXRlL0VEU0dOCm9yaWVudGF0aW9uL0FFTQpvcmllbnRhdGlvbnMKb3JpZW50ZWVyaW5nCm9yaWZpY2UvTVMKb3JpZwpvcmlnYW1pL00Kb3JpZ2luL1NNCm9yaWdpbmFsL01ZUwpvcmlnaW5hbGl0eS9NCm9yaWdpbmF0ZS9EU0dOCm9yaWdpbmF0aW9uL00Kb3JpZ2luYXRvci9TTQpvcmlvbGUvU00Kb3Jpc29uL1NNCm9ybW9sdS9NCm9ybmFtZW50L1NHTUQKb3JuYW1lbnRhbApvcm5hbWVudGF0aW9uL00Kb3JuYXRlL1lQCm9ybmF0ZW5lc3MvTQpvcm5lcmluZXNzL00Kb3JuZXJ5L1BSVApvcm5pdGhvbG9naWNhbApvcm5pdGhvbG9naXN0L01TCm9ybml0aG9sb2d5L00Kb3JvdHVuZApvcm90dW5kaXR5L1NNCm9ycGhhbi9TTURHCm9ycGhhbmFnZS9NUwpvcnJpcy9NUwpvcnRob2RvbnRpYS9NCm9ydGhvZG9udGljL1MKb3J0aG9kb250aWNzL00Kb3J0aG9kb250aXN0L1NNCm9ydGhvZG94L1UKb3J0aG9kb3h5L1NNCm9ydGhvZ29uYWwKb3J0aG9nb25hbGl0eQpvcnRob2dyYXBoaWMKb3J0aG9ncmFwaGljYWxseQpvcnRob2dyYXBoeS9TTQpvcnRob3BlZGljL1MKb3J0aG9wZWRpY3MvTQpvcnRob3BlZGlzdC9NUwpvcnpvL00Kb3NjaWxsYXRlL0dORFNYCm9zY2lsbGF0aW9uL00Kb3NjaWxsYXRvci9TTQpvc2NpbGxhdG9yeQpvc2NpbGxvc2NvcGUvTVMKb3NjdWxhdGUvRFNYR04Kb3NjdWxhdGlvbi9NCm9zaWVyL01TCm9zbWl1bS9NCm9zbW9zaXMvTQpvc21vdGljCm9zcHJleS9TTQpvc3NpZmljYXRpb24vTQpvc3NpZnkvTkdEUwpvc3RlbnNpYmxlCm9zdGVuc2libHkKb3N0ZW50YXRpb24vTQpvc3RlbnRhdGlvdXMvWQpvc3Rlb2FydGhyaXRpcy9NCm9zdGVvcGF0aC9NCm9zdGVvcGF0aGljCm9zdGVvcGF0aHMKb3N0ZW9wYXRoeS9NCm9zdGVvcG9yb3Npcy9NCm9zdGxlci9TCm9zdHJhY2lzbS9NCm9zdHJhY2l6ZS9HRFMKb3N0cmljaC9NUwpvdGhlci9TUApvdGhlcndpc2UKb3RoZXJ3b3JsZGx5Cm90aW9zZQpvdHRlci9NUwpvdHRvbWFuL01TCm91YmxpZXR0ZS9NUwpvdWNoCm91Z2h0Cm91Z2h0bid0Cm91bmNlL01TCm91ci9TCm91cnNlbHZlcwpvdXN0L1pHRFJTCm91c3Rlci9NCm91dC9TSkdNRFIKb3V0YWdlL1NNCm91dGFyZ3VlL0dEUwpvdXRiYWNrL01TCm91dGJhbGFuY2UvRFNHCm91dGJpZC9TCm91dGJpZGRpbmcKb3V0Ym9hcmQvTVMKb3V0Ym9hc3QvRFNHCm91dGJvdW5kCm91dGJveC9NUwpvdXRicmVhay9NUwpvdXRidWlsZGluZy9NUwpvdXRidXJzdC9TTQpvdXRjYXN0L01TCm91dGNsYXNzL0RTRwpvdXRjb21lL01TCm91dGNyb3AvTVMKb3V0Y3JvcHBlZApvdXRjcm9wcGluZy9TTQpvdXRjcnkvU00Kb3V0ZGF0ZWQKb3V0ZGlkCm91dGRpc3RhbmNlL0dEUwpvdXRkby9HCm91dGRvZXMKb3V0ZG9uZQpvdXRkb29yL1MKb3V0ZG9vcnMvTQpvdXRkb29yc3kKb3V0ZHJhdy9HUwpvdXRkcmF3bgpvdXRkcmV3Cm91dGVybW9zdApvdXRlcndlYXIvTQpvdXRmYWNlL0dEUwpvdXRmYWxsL1MKb3V0ZmllbGQvU01SWgpvdXRmaWVsZGVyL00Kb3V0ZmlnaHQvU0cKb3V0Zml0L1NNCm91dGZpdHRlZApvdXRmaXR0ZXIvTVMKb3V0Zml0dGluZwpvdXRmbGFuay9HU0QKb3V0Zmxvdy9NUwpvdXRmb3VnaHQKb3V0Zm94L0dEUwpvdXRnby9NSkcKb3V0Z29lcwpvdXRncmV3Cm91dGdyb3cvSEdTCm91dGdyb3duCm91dGdyb3d0aC9NCm91dGdyb3d0aHMKb3V0Z3Vlc3MvR0RTCm91dGd1bi9TCm91dGd1bm5lZApvdXRndW5uaW5nCm91dGhpdC9TCm91dGhpdHRpbmcKb3V0aG91c2UvU00Kb3V0aW5nL00Kb3V0bGFpZApvdXRsYW5kaXNoL1BZCm91dGxhbmRpc2huZXNzL00Kb3V0bGFzdC9EU0cKb3V0bGF3L1NHTUQKb3V0bGF5L1NHTQpvdXRsZXQvU00Kb3V0bGluZS9NR0RTCm91dGxpdmUvR0RTCm91dGxvb2svTVMKb3V0bHlpbmcKb3V0bWFuZXV2ZXIvR0RTCm91dG1hdGNoL0dEUwpvdXRtb2RlZApvdXRudW1iZXIvRFNHCm91dHBhY2UvR0RTCm91dHBhdGllbnQvTVMKb3V0cGVyZm9ybS9HU0QKb3V0cGxhY2UvTApvdXRwbGFjZW1lbnQvTQpvdXRwbGF5L0dEUwpvdXRwb2ludC9ER1MKb3V0cG9zdC9NUwpvdXRwb3VyaW5nL01TCm91dHByb2R1Y2UvRFNHCm91dHB1dC9TTQpvdXRwdXR0ZWQKb3V0cHV0dGluZwpvdXRyYWNlL0dEUwpvdXRyYWdlL01HRFMKb3V0cmFnZW91cy9ZCm91dHJhbgpvdXRyYW5rL0dEUwpvdXRyZQpvdXRyZWFjaC9NRFNHCm91dHJpZGVyL01TCm91dHJpZ2dlci9TTQpvdXRyaWdodApvdXRydW4vUwpvdXRydW5uaW5nCm91dHNjb3JlL0dEUwpvdXRzZWxsL0dTCm91dHNldC9TTQpvdXRzaGluZS9HUwpvdXRzaG9uZQpvdXRzaG91dC9HRFMKb3V0c2lkZS9NWlJTCm91dHNpZGVyL00Kb3V0c2l6ZS9NUwpvdXRza2lydC9NUwpvdXRzbWFydC9HRFMKb3V0c29sZApvdXRzb3VyY2UvRFNHCm91dHNvdXJjaW5nL00Kb3V0c3BlbmQvU0cKb3V0c3BlbnQKb3V0c3Bva2VuL1lQCm91dHNwb2tlbm5lc3MvTQpvdXRzcHJlYWQvR1MKb3V0c3RhbmRpbmcvWQpvdXRzdGF0aW9uL01TCm91dHN0YXkvREdTCm91dHN0cmV0Y2gvRFNHCm91dHN0cmlwL1MKb3V0c3RyaXBwZWQKb3V0c3RyaXBwaW5nCm91dHRhCm91dHRha2UvTVMKb3V0dm90ZS9HRFMKb3V0d2FyZC9ZUwpvdXR3ZWFyL0dTCm91dHdlaWdoL0dECm91dHdlaWdocwpvdXR3aXQvUwpvdXR3aXRoCm91dHdpdHRlZApvdXR3aXR0aW5nCm91dHdvcmUKb3V0d29yay9NRFJTWkcKb3V0d29ybgpvdXpvL01TCm92YQpvdmFsL01TCm92YXJpYW4Kb3ZhcnkvU00Kb3ZhdGUvTlgKb3ZhdGlvbi9NCm92ZW4vTVMKb3ZlbmJpcmQvU00Kb3ZlbnByb29mCm92ZW53YXJlCm92ZXIvTVlTCm92ZXJhYnVuZGFuY2UvTQpvdmVyYWJ1bmRhbnQKb3ZlcmFjaGlldmUvWkdEUlMKb3ZlcmFjaGlldmVyL00Kb3ZlcmFjdC9HVlNECm92ZXJhZ2UvU00Kb3ZlcmFnZ3Jlc3NpdmUKb3ZlcmFsbC9TTQpvdmVyYWxscy9NCm92ZXJhbWJpdGlvdXMKb3ZlcmFueGlvdXMKb3ZlcmFyY2hpbmcKb3ZlcmFybS9HU0QKb3ZlcmF0ZQpvdmVyYXR0ZW50aXZlCm92ZXJhd2UvRFNHCm92ZXJiYWxhbmNlL01HRFMKb3ZlcmJlYXIvR1MKb3ZlcmJlYXJpbmcvWQpvdmVyYmlkL1NNCm92ZXJiaWRkaW5nCm92ZXJiaXRlL01TCm92ZXJibG93bgpvdmVyYm9hcmQKb3ZlcmJvbGQKb3ZlcmJvb2svREdTCm92ZXJib3JlCm92ZXJib3JuZQpvdmVyYm91Z2h0Cm92ZXJidWlsZC9TRwpvdmVyYnVpbHQKb3ZlcmJ1cmRlbi9HU0QKb3ZlcmJ1eS9HUwpvdmVyY2FtZQpvdmVyY2FwYWNpdHkvTQpvdmVyY2FwaXRhbGl6ZS9EU0cKb3ZlcmNhcmVmdWwKb3ZlcmNhc3QvTUdTCm92ZXJjYXV0aW91cwpvdmVyY2hhcmdlL0RTTUcKb3ZlcmNsb2NrL0dECm92ZXJjbG91ZC9TR0QKb3ZlcmNvYXQvTVMKb3ZlcmNvbWUvR1MKb3ZlcmNvbXBlbnNhdGUvRFNHTgpvdmVyY29tcGVuc2F0aW9uL00Kb3ZlcmNvbmZpZGVuY2UvTQpvdmVyY29uZmlkZW50Cm92ZXJjb25zY2llbnRpb3VzCm92ZXJjb29rL0RHUwpvdmVyY3JpdGljYWwKb3ZlcmNyb3dkL1NERwpvdmVyY3Jvd2RpbmcvTQpvdmVyZGVjb3JhdGUvRFNHCm92ZXJkZXBlbmRlbnQKb3ZlcmRldmVsb3AvU0RHCm92ZXJkaWQKb3ZlcmRvL0cKb3ZlcmRvZXMKb3ZlcmRvbmUKb3ZlcmRvc2UvTUdEUwpvdmVyZHJhZnQvU00Kb3ZlcmRyYXcvR1MKb3ZlcmRyYXduCm92ZXJkcmVzcy9HTURTCm92ZXJkcmV3Cm92ZXJkcml2ZS9TTQpvdmVyZHViL1NNCm92ZXJkdWJiZWQKb3ZlcmR1YmJpbmcKb3ZlcmR1ZQpvdmVyZWFnZXIKb3ZlcmVhdC9HU04Kb3ZlcmVtb3Rpb25hbApvdmVyZW1waGFzaXMvTQpvdmVyZW1waGFzaXplL0dEUwpvdmVyZW50aHVzaWFzdGljCm92ZXJlc3RpbWF0ZS9NR05EUwpvdmVyZXN0aW1hdGlvbi9NCm92ZXJleGNpdGUvRFNHCm92ZXJleGVyY2lzZS9HRFMKb3ZlcmV4ZXJ0L1NERwpvdmVyZXhlcnRpb24vTQpvdmVyZXhwb3NlL0dEUwpvdmVyZXhwb3N1cmUvTQpvdmVyZXh0ZW5kL0RHUwpvdmVyZmVkCm92ZXJmZWVkL0dTCm92ZXJmaWxsL0RHUwpvdmVyZmxldwpvdmVyZmxpZ2h0L01TCm92ZXJmbG93L01EU0cKb3ZlcmZsb3duCm92ZXJmbHkvR1MKb3ZlcmZvbmQKb3ZlcmZ1bGwKb3ZlcmdlbmVyYWxpemUvRFNHCm92ZXJnZW5lcm91cwpvdmVyZ3JhemUvRFNHCm92ZXJncmV3Cm92ZXJncm91bmQKb3Zlcmdyb3cvSFNHCm92ZXJncm93bgpvdmVyZ3Jvd3RoL00Kb3ZlcmhhbmQvTURTCm92ZXJoYW5nL01TRwpvdmVyaGFzdHkKb3ZlcmhhdWwvTURTRwpvdmVyaGVhZC9NUwpvdmVyaGVhci9TRwpvdmVyaGVhcmQKb3ZlcmhlYXQvRFNHCm92ZXJodW5nCm92ZXJpbmR1bGdlL0dEUwpvdmVyaW5kdWxnZW5jZS9NCm92ZXJpbmR1bGdlbnQKb3ZlcmpveS9HU0QKb3ZlcmtpbGwvTQpvdmVybGFkZW4Kb3ZlcmxhaWQKb3ZlcmxhaW4Kb3ZlcmxhbmQKb3ZlcmxhcC9TTQpvdmVybGFwcGVkCm92ZXJsYXBwaW5nCm92ZXJsYXJnZQpvdmVybGF5L0dTTQpvdmVybGVhZgpvdmVybGllCm92ZXJsb2FkL0dNRFMKb3ZlcmxvbmcKb3Zlcmxvb2svR01EUwpvdmVybG9yZC9NUwpvdmVybHkvU0cKb3Zlcm1hbm5lZApvdmVybWFubmluZwpvdmVybWFzdGVyL1NERwpvdmVybW9kZXN0Cm92ZXJtdWNoL1MKb3Zlcm5pY2UKb3Zlcm5pZ2h0L01TCm92ZXJvcHRpbWlzbS9NCm92ZXJvcHRpbWlzdGljCm92ZXJwYWlkCm92ZXJwYXJ0aWN1bGFyCm92ZXJwYXNzL01TCm92ZXJwYXkvR1MKb3ZlcnBsYXkvR0RTCm92ZXJwb3B1bGF0ZS9HTkRTCm92ZXJwb3B1bGF0aW9uL00Kb3ZlcnBvd2VyL1NERwpvdmVycG93ZXJpbmcvWQpvdmVycHJhaXNlL0RTRwpvdmVycHJlY2lzZQpvdmVycHJpY2UvRFNHCm92ZXJwcmludC9TTURHCm92ZXJwcm9kdWNlL0dEUwpvdmVycHJvZHVjdGlvbi9NCm92ZXJwcm90ZWN0L1NER1YKb3ZlcnF1YWxpZmllZApvdmVycmFuCm92ZXJyYXRlL0dEUwpvdmVycmVhY2gvR0RTCm92ZXJyZWFjdC9TREcKb3ZlcnJlYWN0aW9uL1NNCm92ZXJyZWZpbmVkCm92ZXJyaWRkZW4Kb3ZlcnJpZGUvTUdTCm92ZXJyaXBlL00Kb3ZlcnJvZGUKb3ZlcnJ1bGUvR0RTCm92ZXJydW4vU00Kb3ZlcnJ1bm5pbmcKb3ZlcnNhbXBsaW5nCm92ZXJzYXcKb3ZlcnNlYS9TCm92ZXJzZWUvUlNaCm92ZXJzZWVpbmcKb3ZlcnNlZW4Kb3ZlcnNlZXIvTQpvdmVyc2VsbC9HUwpvdmVyc2Vuc2l0aXZlL1AKb3ZlcnNlbnNpdGl2ZW5lc3MvTQpvdmVyc2V4ZWQKb3ZlcnNoYWRvdy9EU0cKb3ZlcnNoYXJlL0RTRwpvdmVyc2hvZS9NUwpvdmVyc2hvb3QvR1MKb3ZlcnNob3QKb3ZlcnNpZ2h0L1NNCm92ZXJzaW1wbGUKb3ZlcnNpbXBsaWZpY2F0aW9uL00Kb3ZlcnNpbXBsaWZ5L0RTTkdYCm92ZXJzaXplCm92ZXJzbGVlcC9HUwpvdmVyc2xlcHQKb3ZlcnNvbGQKb3ZlcnNwZWNpYWxpemF0aW9uL00Kb3ZlcnNwZWNpYWxpemUvR0RTCm92ZXJzcGVuZC9TRwpvdmVyc3BlbnQKb3ZlcnNwcmVhZC9HUwpvdmVyc3RhZmZlZApvdmVyc3RhdGUvRFNMRwpvdmVyc3RhdGVtZW50L01TCm92ZXJzdGF5L0RTRwpvdmVyc3RlcC9TCm92ZXJzdGVwcGVkCm92ZXJzdGVwcGluZwpvdmVyc3RpbXVsYXRlL0RTRwpvdmVyc3RvY2svR1NECm92ZXJzdHJldGNoL0dEUwpvdmVyc3RyaWN0Cm92ZXJzdHJ1bmcKb3ZlcnN0dWZmZWQKb3ZlcnN1YnNjcmliZS9EU0cKb3ZlcnN1YnRsZQpvdmVyc3VwcGx5L0dEUwpvdmVyc3VzcGljaW91cwpvdmVydC9ZCm92ZXJ0YWtlL0dTCm92ZXJ0YWtlbgpvdmVydGF4L0dEUwpvdmVydGhpbmsvU0cKb3ZlcnRob3VnaHQKb3ZlcnRocmV3Cm92ZXJ0aHJvdy9TTUcKb3ZlcnRocm93bgpvdmVydGltZS9NUwpvdmVydGlyZS9HRFMKb3ZlcnRvbmUvTVMKb3ZlcnRvb2sKb3ZlcnR1cmUvTVMKb3ZlcnR1cm4vRFNHCm92ZXJ1c2UvRFNNRwpvdmVydmFsdWF0aW9uL1MKb3ZlcnZhbHVlL0RTRwpvdmVydmlldy9NUwpvdmVyd2VlbmluZy9ZCm92ZXJ3ZWlnaHQvTQpvdmVyd2hlbG0vU0dECm92ZXJ3aGVsbWluZy9ZCm92ZXJ3aW50ZXIvU0RHCm92ZXJ3b3JrL0dNRFMKb3ZlcndyaXRlL0dTCm92ZXJ3cml0dGVuCm92ZXJ3cm90ZQpvdmVyd3JvdWdodApvdmVyemVhbG91cwpvdmlkdWN0L1NNCm92aXBhcm91cwpvdm9pZC9NUwpvdnVsYXIKb3Z1bGF0ZS9EU0dOCm92dWxhdGlvbi9NCm92dWxlL01TCm92dW0vTQpvdwpvd2UvRFNHCm93bC9TTQpvd2xldC9NUwpvd2xpc2gvWQpvd24vRVNHRApvd25lci9NUwpvd25lcnNoaXAvTQpveC9NTgpveGJsb29kL00Kb3hib3cvTVMKb3hjYXJ0L1NNCm94Zm9yZC9TTQpveGlkYW50L01TCm94aWRhc2UKb3hpZGF0aW9uL00Kb3hpZGUvTVMKb3hpZGl6YXRpb24vTQpveGlkaXplL1pHRFJTCm94aWRpemVyL00Kb3h0YWlsL1MKb3h5YWNldHlsZW5lL00Kb3h5Z2VuL00Kb3h5Z2VuYXRlL0RTR04Kb3h5Z2VuYXRpb24vTQpveHltb3JhCm94eW1vcm9uL00Kb3lzdGVyL1NNCm96Cm96b25lL00KcC9OUlhUR0oKcEgKcGEvU01ICnBhYmx1bS9NCnBhYnVsdW0vTQpwYWNlL01aR0RSUwpwYWNlbWFrZXIvU00KcGFjZXIvTQpwYWNlc2V0dGVyL1NNCnBhY2V5CnBhY2h5ZGVybS9NUwpwYWNoeXNhbmRyYS9NUwpwYWNpZmljCnBhY2lmaWNhbGx5CnBhY2lmaWNhdGlvbi9NCnBhY2lmaWVyL00KcGFjaWZpc20vTQpwYWNpZmlzdC9TTQpwYWNpZmlzdGljCnBhY2lmeS9aR0RSU04KcGFjaydzCnBhY2svQVVHU0QKcGFja2FnZSdzCnBhY2thZ2UvQUdEUwpwYWNrYWdlci9TTQpwYWNrYWdpbmcvTQpwYWNrZXIvTVMKcGFja2V0L01TCnBhY2tpbmcncwpwYWNraW5naG91c2UvU00KcGFja3NhZGRsZS9NUwpwYWN0L01TCnBhY3kvUlQKcGFkL1NNCnBhZGRlZApwYWRkaW5nL00KcGFkZGxlL01aR0RSUwpwYWRkbGVyL00KcGFkZG9jay9NREdTCnBhZGR5L1NNCnBhZGxvY2svTURTRwpwYWRyZS9TTQpwYWVhbi9TTQpwYWVsbGEvTVMKcGFnYW4vU00KcGFnYW5pc20vTQpwYWdlL01aR0RSUwpwYWdlYW50L01TCnBhZ2VhbnRyeS9NCnBhZ2Vib3kvU00KcGFnZXIvTQpwYWdpbmF0ZS9EU0dOCnBhZ2luYXRpb24vTQpwYWdvZGEvTVMKcGFoCnBhaWQvQVUKcGFpbC9NUwpwYWlsZnVsL1NNCnBhaW4vTURTRwpwYWluZnVsL1BZCnBhaW5mdWxsZXIKcGFpbmZ1bGxlc3QKcGFpbmZ1bG5lc3MvTQpwYWlua2lsbGVyL01TCnBhaW5raWxsaW5nCnBhaW5sZXNzL1BZCnBhaW5sZXNzbmVzcy9NCnBhaW5zdGFraW5nL01ZCnBhaW50L1NaR0pNRFIKcGFpbnRiYWxsCnBhaW50Ym94L01TCnBhaW50YnJ1c2gvTVMKcGFpbnRlZC9VCnBhaW50ZXIvTVkKcGFpbnRpbmcvTQpwYWludHdvcmsKcGFpci9BTURTRwpwYWlyZWQvVQpwYWlyaW5nL1MKcGFpcndpc2UKcGFpc2xleS9TTQpwYWphbWEvUwpwYWphbWFzL00KcGFsL1NNWQpwYWxhY2UvTVMKcGFsYWRpbi9TTQpwYWxhbnF1aW4vU00KcGFsYXRhYmxlL1UKcGFsYXRhbC9TTQpwYWxhdGFsaXphdGlvbi9NCnBhbGF0YWxpemUvR0RTCnBhbGF0ZS9NQlMKcGFsYXRpYWwvWQpwYWxhdGluYXRlL01TCnBhbGF0aW5lL01TCnBhbGF2ZXIvR1NNRApwYWxhenppCnBhbGF6em8KcGFsZS9NWVRHUERSU0oKcGFsZWZhY2UvTVMKcGFsZW5lc3MvTQpwYWxlb2dyYXBoZXIvTVMKcGFsZW9ncmFwaHkvTQpwYWxlb2xpdGhpYwpwYWxlb250b2xvZ2lzdC9TTQpwYWxlb250b2xvZ3kvTQpwYWxldHRlL1NNCnBhbGZyZXkvU00KcGFsaW1vbnkvTQpwYWxpbXBzZXN0L01TCnBhbGluZHJvbWUvTVMKcGFsaW5kcm9taWMKcGFsaW5nL00KcGFsaXNhZGUvU00KcGFsaXNoCnBhbGwvTURTRwpwYWxsYWRpdW0vTQpwYWxsYmVhcmVyL01TCnBhbGxldC9NUwpwYWxsaWF0ZS9EU0dOVgpwYWxsaWF0aW9uL00KcGFsbGlhdGl2ZS9TTQpwYWxsaWQvWVAKcGFsbGlkbmVzcy9NCnBhbGxvci9NCnBhbG0vTURTRwpwYWxtYXRlCnBhbG1ldHRvL1NNCnBhbG1pc3QvU00KcGFsbWlzdHJ5L00KcGFsbXRvcC9TTQpwYWxteS9UUgpwYWxvbWluby9NUwpwYWxwYWJsZQpwYWxwYWJseQpwYWxwYXRlL0RTR04KcGFscGF0aW9uL00KcGFscGl0YXRlL1hHTkRTCnBhbHBpdGF0aW9uL00KcGFsc3kvR0RTTQpwYWx0cmluZXNzL00KcGFsdHJ5L1JQVApwYW1wYXMvTQpwYW1wZXIvRFNHCnBhbXBobGV0L01TCnBhbXBobGV0ZWVyL01TCnBhbi9TTQpwYW5hY2VhL1NNCnBhbmFjaGUvTQpwYW5hbWEvTVMKcGFuYXRlbGxhL1MKcGFuY2FrZS9EU01HCnBhbmNocm9tYXRpYwpwYW5jcmVhcy9NUwpwYW5jcmVhdGljCnBhbmNyZWF0aXRpcwpwYW5kYS9TTQpwYW5kZW1pYy9TTQpwYW5kZW1vbml1bS9NCnBhbmRlci9NRFJaR1MKcGFuZGVyZXIvTQpwYW5lL0tNCnBhbmVneXJpYy9TTQpwYW5lbC9TR0pNRApwYW5lbGluZy9NCnBhbmVsaXN0L01TCnBhbmVzCnBhbmcvTVMKcGFuaGFuZGxlL0RSU01aRwpwYW5oYW5kbGVyL00KcGFuaWMvU00KcGFuaWNrZWQKcGFuaWNraW5nCnBhbmlja3kKcGFubmVkCnBhbm5pZXIvU00KcGFubmluZwpwYW5vcGx5L1NNCnBhbm9yYW1hL1NNCnBhbm9yYW1pYwpwYW5waXBlcy9NCnBhbnN5L1NNCnBhbnQvTURTRwpwYW50YWxvb25zL00KcGFudGVjaG5pY29uL1MKcGFudGhlaXNtL00KcGFudGhlaXN0L1NNCnBhbnRoZWlzdGljCnBhbnRoZW9uL1NNCnBhbnRoZXIvTVMKcGFudGllL01TCnBhbnRvL1MKcGFudG9taW1lL01HRFMKcGFudG9taW1pYwpwYW50b21pbWlzdC9TTQpwYW50cnkvU00KcGFudHN1aXQvU00KcGFudHlob3NlL00KcGFudHlsaW5lci9NCnBhbnR5d2Fpc3QvU00KcGFwL1NNCnBhcGEvTVMKcGFwYWN5L1NNCnBhcGFsCnBhcGFyYXp6aS9NCnBhcGFyYXp6bwpwYXBheWEvTVMKcGFwZXIvU1pHTURSCnBhcGVyYmFjay9TTQpwYXBlcmJhcmsvUwpwYXBlcmJvYXJkL00KcGFwZXJib3kvU00KcGFwZXJjbGlwL1MKcGFwZXJlci9NCnBhcGVyZ2lybC9TTQpwYXBlcmhhbmdlci9TTQpwYXBlcmhhbmdpbmcvTQpwYXBlcmxlc3MKcGFwZXJ3ZWlnaHQvTVMKcGFwZXJ3b3JrL00KcGFwZXJ5CnBhcGlsbGEvTQpwYXBpbGxhZQpwYXBpbGxhcnkKcGFwaXN0L01TCnBhcG9vc2UvTVMKcGFwcHkvU00KcGFwcmlrYS9NCnBhcHlyaQpwYXB5cnVzL00KcGFyL1NaR01EUkJKCnBhcmEvTVMKcGFyYWJsZS9NUwpwYXJhYm9sYS9TTQpwYXJhYm9saWMKcGFyYWNldGFtb2wvUwpwYXJhY2h1dGUvRFNNRwpwYXJhY2h1dGlzdC9NUwpwYXJhZGUvTVpHRFJTCnBhcmFkZXIvTQpwYXJhZGlnbS9TTQpwYXJhZGlnbWF0aWMKcGFyYWRpc2FpY2FsCnBhcmFkaXNlL1NNCnBhcmFkb3gvTVMKcGFyYWRveGljYWwvWQpwYXJhZmZpbi9NCnBhcmFnbGlkaW5nCnBhcmFnb24vTVMKcGFyYWdyYXBoL0dNRApwYXJhZ3JhcGhzCnBhcmFrZWV0L1NNCnBhcmFsZWdhbC9NUwpwYXJhbGxheC9NUwpwYXJhbGxlbC9TR01ECnBhcmFsbGVsZWQvVQpwYXJhbGxlbGlzbS9NUwpwYXJhbGxlbG9ncmFtL1NNCnBhcmFseXNlcwpwYXJhbHlzaXMvTQpwYXJhbHl0aWMvU00KcGFyYWx5emUvRFNHCnBhcmFseXppbmcvWQpwYXJhbWVjaWEKcGFyYW1lY2l1bS9NCnBhcmFtZWRpYy9NUwpwYXJhbWVkaWNhbC9NUwpwYXJhbWV0ZXIvTVMKcGFyYW1ldHJpYwpwYXJhbWlsaXRhcnkvU00KcGFyYW1vdW50CnBhcmFtb3VudGN5CnBhcmFtb3VyL1NNCnBhcmFub2lhL00KcGFyYW5vaWFjL01TCnBhcmFub2lkL1NNCnBhcmFub3JtYWwKcGFyYXBldC9NUwpwYXJhcGhlcm5hbGlhL00KcGFyYXBocmFzZS9EU01HCnBhcmFwbGVnaWEvTQpwYXJhcGxlZ2ljL1NNCnBhcmFwcm9mZXNzaW9uYWwvTVMKcGFyYXBzeWNob2xvZ2lzdC9NUwpwYXJhcHN5Y2hvbG9neS9NCnBhcmFxdWF0L00KcGFyYXNhaWxpbmcKcGFyYXNjZW5kaW5nCnBhcmFzaXRlL1NNCnBhcmFzaXRpYwpwYXJhc2l0aWNhbC9ZCnBhcmFzaXRpc20vTQpwYXJhc29sL01TCnBhcmFzeW1wYXRoZXRpYy9TCnBhcmF0aGlvbi9NCnBhcmF0aHlyb2lkL01TCnBhcmF0cm9vcC9SWlMKcGFyYXRyb29wZXIvTQpwYXJhdHJvb3BzL00KcGFyYXR5cGhvaWQvTQpwYXJib2lsL0RTRwpwYXJjZWwvR01EUwpwYXJjaC9MR0RTCnBhcmNobWVudC9TTQpwYXJkbmVyL1MKcGFyZG9uL1pHTURSQlMKcGFyZG9uYWJsZS9VCnBhcmRvbmFibHkvVQpwYXJkb25lci9NCnBhcmUvUwpwYXJlZ29yaWMvTQpwYXJlbnQvR01EUwpwYXJlbnRhZ2UvTQpwYXJlbnRhbApwYXJlbnRoZXNlcwpwYXJlbnRoZXNpcy9NCnBhcmVudGhlc2l6ZS9EU0cKcGFyZW50aGV0aWMKcGFyZW50aGV0aWNhbC9ZCnBhcmVudGhvb2QvTQpwYXJlbnRpbmcvTQpwYXJlci9NCnBhcmVzL1MKcGFyZXNpcy9NCnBhcmZhaXQvTVMKcGFyaWFoL00KcGFyaWFocwpwYXJpZXRhbApwYXJpbXV0dWVsL01TCnBhcmluZy9NCnBhcmlzaC9NUwpwYXJpc2hpb25lci9NUwpwYXJpdHkvRVNNCnBhcmsvTURTRwpwYXJrYS9TTQpwYXJraW5nL00KcGFya2xhbmQKcGFya291cgpwYXJrd2F5L01TCnBhcmt5CnBhcmxhbmNlL00KcGFybGF5L0dNRFMKcGFybGV5L0dNRFMKcGFybGlhbWVudC9TTQpwYXJsaWFtZW50YXJpYW4vU00KcGFybGlhbWVudGFyeQpwYXJsb3IvTVMKcGFybG91cwpwYXJtaWdpYW5hCnBhcm9jaGlhbC9ZCnBhcm9jaGlhbGlzbS9NCnBhcm9kaXN0L1NNCnBhcm9keS9HRFNNCnBhcm9sZS9NR0RTCnBhcm9sZWUvTVMKcGFyb3RpZApwYXJveHlzbS9TTQpwYXJveHlzbWFsCnBhcnF1ZXQvTURTRwpwYXJxdWV0cnkvTQpwYXJyZWQKcGFycmljaWRhbApwYXJyaWNpZGUvTVMKcGFycmluZwpwYXJyb3QvR01EUwpwYXJyeS9HRFNNCnBhcnNlL0RSU0cKcGFyc2VjL01TCnBhcnNpbW9uaW91cy9ZCnBhcnNpbW9ueS9NCnBhcnNsZXkvTQpwYXJzbmlwL01TCnBhcnNvbi9NUwpwYXJzb25hZ2UvTVMKcGFydCdzCnBhcnQvQ0RTRwpwYXJ0YWtlL1pHUlMKcGFydGFrZW4KcGFydGFrZXIvTQpwYXJ0ZXJyZS9TTQpwYXJ0aGVub2dlbmVzaXMvTQpwYXJ0aWFsL01ZUwpwYXJ0aWFsaXR5L00KcGFydGljaXBhbnQvU00KcGFydGljaXBhdGUvRFNHTgpwYXJ0aWNpcGF0aW9uL00KcGFydGljaXBhdG9yL01TCnBhcnRpY2lwYXRvcnkKcGFydGljaXBpYWwvTQpwYXJ0aWNpcGxlL01TCnBhcnRpY2xlL1NNCnBhcnRpY2xlYm9hcmQvTQpwYXJ0aWN1bGFyL1NNWQpwYXJ0aWN1bGFyaXR5L1NNCnBhcnRpY3VsYXJpemF0aW9uL00KcGFydGljdWxhcml6ZS9EU0cKcGFydGljdWxhdGUvU00KcGFydGluZy9NUwpwYXJ0aXNhbi9TTQpwYXJ0aXNhbnNoaXAvTQpwYXJ0aXRpb24vR01EUwpwYXJ0aXRpdmUvTVMKcGFydGx5CnBhcnRuZXIvTURTRwpwYXJ0bmVyc2hpcC9NUwpwYXJ0b29rCnBhcnRyaWRnZS9TTQpwYXJ0dXJpdGlvbi9NCnBhcnR3YXkKcGFydHkvR0RTTQpwYXJ2ZW51L01TCnBhc2NhbC9NUwpwYXNjaGFsCnBhc2hhL1NNCnBhc3MvTQpwYXNzYWJseQpwYXNzYWdlL01TCnBhc3NhZ2V3YXkvTVMKcGFzc2Jvb2svTVMKcGFzc2UvRFJTQlhaR05WCnBhc3NlbC9NUwpwYXNzZW5nZXIvU00KcGFzc2VyL00KcGFzc2VyYnkvTQpwYXNzZXJzYnkKcGFzc2ltCnBhc3NpbmcvTVkKcGFzc2lvbi9FTQpwYXNzaW9uYXRlL0VZCnBhc3Npb25mbG93ZXIvU00KcGFzc2lvbmxlc3MKcGFzc2l2ZS9QTVlTCnBhc3NpdmVuZXNzL00KcGFzc2l2aXR5L00KcGFzc2l2aXphdGlvbgpwYXNzaXZpemUvRFNHCnBhc3NrZXkvTVMKcGFzc3BocmFzZS9TCnBhc3Nwb3J0L01TCnBhc3N3b3JkL01TCnBhc3QvQU1TCnBhc3RhL1NNCnBhc3RlL0RTTUcKcGFzdGVib2FyZC9NCnBhc3RlbC9NUwpwYXN0ZXJuL01TCnBhc3RldXJpemF0aW9uL00KcGFzdGV1cml6ZS9aR0RSUwpwYXN0ZXVyaXplZC9VCnBhc3RldXJpemVyL00KcGFzdGljaGUvTVMKcGFzdGllCnBhc3RpbGxlL01TCnBhc3RpbWUvTVMKcGFzdGluZXNzL00KcGFzdG9yL01TCnBhc3RvcmFsL01TCnBhc3RvcmF0ZS9NUwpwYXN0cmFtaS9NCnBhc3RyeS9TTQpwYXN0dXJhZ2UvTQpwYXN0dXJlL0RTTUcKcGFzdHVyZWxhbmQvTQpwYXN0eS9QVFJTTQpwYXQvU00KcGF0Y2gvRUdNRFMKcGF0Y2hpbHkKcGF0Y2hpbmVzcy9NCnBhdGNob3VsaQpwYXRjaHdvcmsvU00KcGF0Y2h5L1RQUgpwYXRlL01TCnBhdGVsbGEvTVMKcGF0ZWxsYWUKcGF0ZW50L0dNRFlTCnBhdGVyZmFtaWxpYXMvTVMKcGF0ZXJuYWwvWQpwYXRlcm5hbGlzbS9NCnBhdGVybmFsaXN0L1MKcGF0ZXJuYWxpc3RpYwpwYXRlcm5pdHkvTQpwYXRlcm5vc3Rlci9NUwpwYXRoL00KcGF0aGV0aWMKcGF0aGV0aWNhbGx5CnBhdGhmaW5kZXIvU00KcGF0aGxlc3MKcGF0aG9nZW4vU00KcGF0aG9nZW5pYwpwYXRob2xvZ2ljYWwvWQpwYXRob2xvZ2lzdC9TTQpwYXRob2xvZ3kvTQpwYXRob3MvTQpwYXRocwpwYXRod2F5L01TCnBhdGllbmNlL00KcGF0aWVudC9JTVNUCnBhdGllbnRlcgpwYXRpZW50bHkKcGF0aW5hL01TCnBhdGluZQpwYXRpby9TTQpwYXRpc3NlcmllL1MKcGF0b2lzL00KcGF0cmVzZmFtaWxpYXMKcGF0cmlhcmNoL00KcGF0cmlhcmNoYWwKcGF0cmlhcmNoYXRlL01TCnBhdHJpYXJjaHMKcGF0cmlhcmNoeS9TTQpwYXRyaWNpYW4vU00KcGF0cmljaWRlL1NNCnBhdHJpbW9uaWFsCnBhdHJpbW9ueS9TTQpwYXRyaW90L1NNCnBhdHJpb3RpYy9VCnBhdHJpb3RpY2FsbHkKcGF0cmlvdGlzbS9NCnBhdHJvbC9NUwpwYXRyb2xsZWQKcGF0cm9sbGluZwpwYXRyb2xtYW4vTQpwYXRyb2xtZW4KcGF0cm9sd29tYW4vTQpwYXRyb2x3b21lbgpwYXRyb24vTVMKcGF0cm9uYWdlL01TCnBhdHJvbmVzcy9NUwpwYXRyb25pemUvWkdEUlMKcGF0cm9uaXplci9NCnBhdHJvbml6aW5nL1kKcGF0cm9ueW1pYy9TTQpwYXRyb255bWljYWxseQpwYXRyb29uL1NNCnBhdHN5L1NNCnBhdHRlZApwYXR0ZXIvTURHUwpwYXR0ZXJuL1NNREcKcGF0dGluZwpwYXR0eS9TTQpwYXVjaXR5L00KcGF1bmNoL01TCnBhdW5jaHkvUlQKcGF1cGVyL01TCnBhdXBlcmlzbS9NCnBhdXBlcml6ZS9EU0cKcGF1c2UvRFNNRwpwYXZlL0FHRFMKcGF2ZWQvVQpwYXZlbWVudC9NUwpwYXZpbGlvbi9TTQpwYXZpbmcvTVMKcGF2bG92YS9TCnBhdy9TR01ECnBhd2wvTVMKcGF3bi9NRFNHCnBhd25icm9rZXIvTVMKcGF3bmJyb2tpbmcvTQpwYXduc2hvcC9NUwpwYXdwYXcvTVMKcGF5J3MKcGF5L0FTR0JMCnBheWJhY2svU00KcGF5Y2hlY2svTVMKcGF5ZGF5L01TCnBheWVkCnBheWVlL1NNCnBheWVyL1NNCnBheWxvYWQvU00KcGF5bWFzdGVyL1NNCnBheW1lbnQvQVNNCnBheW9mZi9NUwpwYXlvbGEvTQpwYXlvdXQvTVMKcGF5cGhvbmUvUwpwYXlyb2xsL1NNCnBheXNsaXAvU00KcGF5d2FsbC9TTQpwYXl3YXJlCnBjdApwZApwZWEvU00KcGVhY2UvU00KcGVhY2VhYmxlCnBlYWNlYWJseQpwZWFjZWZ1bC9QWQpwZWFjZWZ1bG5lc3MvTQpwZWFjZWtlZXBlci9TTQpwZWFjZWtlZXBpbmcvTQpwZWFjZW1ha2VyL01TCnBlYWNlbWFraW5nL00KcGVhY2V0aW1lL00KcGVhY2gvTVMKcGVhY2h5L1RSCnBlYWNvY2svTVMKcGVhZm93bC9NUwpwZWFoZW4vTVMKcGVhay9NRFNHCnBlYWt5CnBlYWwvQU1EU0cKcGVhbnV0L01TCnBlYXIvTVlTCnBlYXJsL1NHTUQKcGVhcmx5L1JUCnBlYXNhbnQvU00KcGVhc2FudHJ5L00KcGVhc2hvb3Rlci9TTQpwZWF0L00KcGVhdHkvVFIKcGViYmxlL01HRFMKcGViYmx5CnBlY2FuL1NNCnBlY2NhZGlsbG8vTQpwZWNjYWRpbGxvZXMKcGVjY2FyeS9TTQpwZWNrL01EUlNaRwpwZWNraXNoCnBlY3MKcGVjdGljCnBlY3Rpbi9NCnBlY3RvcmFsL01TCnBlY3VsYXRlL0dORFMKcGVjdWxhdGlvbi9NCnBlY3VsYXRvci9TTQpwZWN1bGlhci9ZCnBlY3VsaWFyaXR5L1NNCnBlY3VuaWFyeQpwZWRhZ29naWMKcGVkYWdvZ2ljYWwvWQpwZWRhZ29ndWUvU00KcGVkYWdvZ3kvTQpwZWRhbC9TR01ECnBlZGFsby9TCnBlZGFudC9NUwpwZWRhbnRpYwpwZWRhbnRpY2FsbHkKcGVkYW50cnkvTQpwZWRkbGUvWkdEUlMKcGVkZGxlci9NCnBlZGVyYXN0L01TCnBlZGVyYXN0eS9NCnBlZGVzdGFsL01TCnBlZGVzdHJpYW4vU00KcGVkZXN0cmlhbml6YXRpb24KcGVkZXN0cmlhbml6ZS9HRFMKcGVkaWF0cmljL1MKcGVkaWF0cmljaWFuL01TCnBlZGlhdHJpY3MvTQpwZWRpY2FiL1NNCnBlZGljdXJlL01HRFMKcGVkaWN1cmlzdC9NUwpwZWRpZ3JlZS9NRFMKcGVkaW1lbnQvTVMKcGVkb21ldGVyL01TCnBlZG9waGlsZS9TCnBlZG9waGlsaWEKcGVkdW5jbGUvTVMKcGVlL0RSU01aCnBlZWluZwpwZWVrL01EU0cKcGVla2Fib28vTQpwZWVsL01EUlNKWkcKcGVlbGVkL1UKcGVlbGVyL00KcGVlbGluZy9NCnBlZW4vTVMKcGVlcC9NRFJTWkcKcGVlcGJvCnBlZXBlci9NCnBlZXBob2xlL01TCnBlZXBzaG93L01TCnBlZXIvTURHCnBlZXJhZ2UvU00KcGVlcmVzcy9NUwpwZWVybGVzcwpwZWV2ZS9EU01HCnBlZXZpc2gvUFkKcGVldmlzaG5lc3MvTQpwZWV3ZWUvTVMKcGVld2l0L1MKcGVnL1NNCnBlZ2JvYXJkL01TCnBlZ2dlZApwZWdnaW5nCnBlaWdub2lyL1NNCnBlam9yYXRpb24vTQpwZWpvcmF0aXZlL1NNWQpwZWtlL01TCnBla2luZXNlcwpwZWtpbmdlc2UvU00KcGVrb2UvTQpwZWxhZ2ljCnBlbGYvTQpwZWxpY2FuL01TCnBlbGxhZ3JhL00KcGVsbGV0L0dNRFMKcGVsbHVjaWQKcGVsbWV0L1MKcGVsdC9NRFNHCnBlbHZpYwpwZWx2aXMvTVMKcGVtbWljYW4vTQpwZW4vTQpwZW5hbApwZW5hbGl6YXRpb24vTQpwZW5hbGl6ZS9EU0cKcGVuYWx0eS9TTQpwZW5hbmNlL01TCnBlbmNlCnBlbmNoYW50L1NNCnBlbmNpbC9HTURKUwpwZW5kL0NEU0cKcGVuZGFudC9NUwpwZW5kZW50L01TCnBlbmR1bG91cwpwZW5kdWx1bS9NUwpwZW5ldHJhYmlsaXR5L00KcGVuZXRyYWJsZQpwZW5ldHJhdGUvRFNHTlZYCnBlbmV0cmF0aW5nL1kKcGVuZXRyYXRpb24vTQpwZW5mcmllbmQvUwpwZW5ndWluL01TCnBlbmljaWxsaW4vTQpwZW5pbGUKcGVuaW5zdWxhL1NNCnBlbmluc3VsYXIKcGVuaXMvTVMKcGVuaXRlbmNlL00KcGVuaXRlbnQvU01ZCnBlbml0ZW50aWFsCnBlbml0ZW50aWFyeS9TTQpwZW5rbmlmZS9NCnBlbmtuaXZlcwpwZW5saWdodC9TTQpwZW5tYW4vTQpwZW5tYW5zaGlwL00KcGVubWVuCnBlbm5hbnQvTVMKcGVubmVkCnBlbm5pbGVzcwpwZW5uaW5nCnBlbm5vbi9NUwpwZW5ueS9TTQpwZW5ueXdlaWdodC9NUwpwZW5ueXdvcnRoCnBlbm9sb2dpc3QvTVMKcGVub2xvZ3kvTQpwZW5zaW9uL0JaR01EUlMKcGVuc2lvbmVyL00KcGVuc2l2ZS9QWQpwZW5zaXZlbmVzcy9NCnBlbnQKcGVudGFjbGUvTVMKcGVudGFnb24vTVMKcGVudGFnb25hbApwZW50YWdyYW0vU00KcGVudGFtZXRlci9TTQpwZW50YXRobGV0ZS9NUwpwZW50YXRobG9uL01TCnBlbnRob3VzZS9TTQpwZW51Y2hlL00KcGVudWx0aW1hdGUvU00KcGVudW1icmEvTVMKcGVudW1icmFlCnBlbnVyaW91cy9QWQpwZW51cmlvdXNuZXNzL00KcGVudXJ5L00KcGVvbi9NUwpwZW9uYWdlL00KcGVvbnkvU00KcGVvcGxlL01HRFMKcGVwL1NNCnBlcHBlZApwZXBwZXIvR01EUwpwZXBwZXJjb3JuL1NNCnBlcHBlcm1pbnQvU00KcGVwcGVyb25pL01TCnBlcHBlcnkKcGVwcGluZXNzL00KcGVwcGluZwpwZXBweS9UUFIKcGVwc2luL00KcGVwdGljL01TCnBlcHRpZGUvUwpwZXJhZHZlbnR1cmUvTQpwZXJhbWJ1bGF0ZS9YR05EUwpwZXJhbWJ1bGF0aW9uL00KcGVyYW1idWxhdG9yL01TCnBlcmNhbGUvTVMKcGVyY2VpdmUvQkdEUwpwZXJjZWl2ZWQvVQpwZXJjZW50L01TCnBlcmNlbnRhZ2UvU00KcGVyY2VudGlsZS9TTQpwZXJjZXB0aWJsZQpwZXJjZXB0aWJseQpwZXJjZXB0aW9uL1NNCnBlcmNlcHRpb25hbApwZXJjZXB0aXZlL1BZCnBlcmNlcHRpdmVuZXNzL00KcGVyY2VwdHVhbC9ZCnBlcmNoL0dNRFMKcGVyY2hhbmNlCnBlcmNpcGllbmNlL00KcGVyY2lwaWVudApwZXJjb2xhdGUvR05EUwpwZXJjb2xhdGlvbi9NCnBlcmNvbGF0b3IvU00KcGVyY3Vzc2lvbi9BTQpwZXJjdXNzaW9uaXN0L01TCnBlcmN1c3NpdmUKcGVyZGl0aW9uL00KcGVyZHVyYWJsZQpwZXJlZ3JpbmF0ZS9EU1hHTgpwZXJlZ3JpbmF0aW9uL00KcGVyZWdyaW5lL01TCnBlcmVtcHRvcmlseQpwZXJlbXB0b3J5CnBlcmVubmlhbC9TTVkKcGVyZXN0cm9pa2EvTQpwZXJmZWN0L1BUR01EUllTCnBlcmZlY3RhL01TCnBlcmZlY3RpYmlsaXR5L00KcGVyZmVjdGlibGUKcGVyZmVjdGlvbi9TTQpwZXJmZWN0aW9uaXNtL00KcGVyZmVjdGlvbmlzdC9TTQpwZXJmZWN0bmVzcy9NCnBlcmZpZGlvdXMvWQpwZXJmaWR5L1NNCnBlcmZvcmF0ZS9HTlhEUwpwZXJmb3JhdGlvbi9NCnBlcmZvcmNlCnBlcmZvcm0vU0RSWkcKcGVyZm9ybWFuY2UvU00KcGVyZm9ybWF0aXZlCnBlcmZvcm1lZC9VCnBlcmZvcm1lci9NCnBlcmZ1bWUvRFJTTVpHCnBlcmZ1bWVyL00KcGVyZnVtZXJ5L1NNCnBlcmZ1bmN0b3JpbHkKcGVyZnVuY3RvcnkKcGVyZnVzaW9uCnBlcmdvbGEvU00KcGVyaGFwcwpwZXJpY2FyZGlhCnBlcmljYXJkaWFsCnBlcmljYXJkaXRpcwpwZXJpY2FyZGl1bS9NCnBlcmlnZWUvU00KcGVyaWhlbGlhCnBlcmloZWxpb24vTQpwZXJpbC9TR01ECnBlcmlsb3VzL1kKcGVyaW1ldGVyL1NNCnBlcmluYXRhbApwZXJpbmVhCnBlcmluZXVtL00KcGVyaW9kL01TCnBlcmlvZGljCnBlcmlvZGljYWwvU01ZCnBlcmlvZGljaXR5L00KcGVyaW9kb250YWwKcGVyaW9kb250aWNzL00KcGVyaW9kb250aXN0L1NNCnBlcmlwYXRldGljL01TCnBlcmlwaGVyYWwvTVlTCnBlcmlwaGVyeS9TTQpwZXJpcGhyYXNlcwpwZXJpcGhyYXNpcy9NCnBlcmlwaHJhc3RpYwpwZXJpc2NvcGUvU00KcGVyaXNoL0JEUlNaRwpwZXJpc2hhYmxlL01TCnBlcmlzdGFsc2VzCnBlcmlzdGFsc2lzL00KcGVyaXN0YWx0aWMKcGVyaXN0eWxlL1NNCnBlcml0b25lYWwKcGVyaXRvbmV1bS9NUwpwZXJpdG9uaXRpcy9NCnBlcml3aWcvU00KcGVyaXdpbmtsZS9TTQpwZXJqdXJlL0RSU1pHCnBlcmp1cmVyL00KcGVyanVyeS9TTQpwZXJrL01EU0cKcGVya2lseQpwZXJraW5lc3MvTQpwZXJreS9UUFIKcGVybS9NRFNHCnBlcm1hZnJvc3QvTQpwZXJtYW5lbmNlL00KcGVybWFuZW5jeS9NCnBlcm1hbmVudC9TTVkKcGVybWVhYmlsaXR5L00KcGVybWVhYmxlCnBlcm1lYXRlL0dORFMKcGVybWVhdGlvbi9NCnBlcm1pc3NpYmxlCnBlcm1pc3NpYmx5CnBlcm1pc3Npb24vTVMKcGVybWlzc2l2ZS9QWQpwZXJtaXNzaXZlbmVzcy9NCnBlcm1pdC9NUwpwZXJtaXR0ZWQKcGVybWl0dGluZwpwZXJtdXRhdGlvbi9TTQpwZXJtdXRlL0RTRwpwZXJuaWNpb3VzL1lQCnBlcm5pY2lvdXNuZXNzL00KcGVyb3JhdGlvbi9NUwpwZXJveGlkZS9NR0RTCnBlcnBlbmRpY3VsYXIvU01ZCnBlcnBlbmRpY3VsYXJpdHkvTQpwZXJwZXRyYXRlL0RTR04KcGVycGV0cmF0aW9uL00KcGVycGV0cmF0b3IvTVMKcGVycGV0dWFsL1NNWQpwZXJwZXR1YXRlL0RTR04KcGVycGV0dWF0aW9uL00KcGVycGV0dWl0eS9NCnBlcnBsZXgvR0RTCnBlcnBsZXhlZC9ZCnBlcnBsZXhpdHkvU00KcGVycXVpc2l0ZS9TTQpwZXJzZWN1dGUvR05YRFMKcGVyc2VjdXRpb24vTQpwZXJzZWN1dG9yL1NNCnBlcnNldmVyYW5jZS9NCnBlcnNldmVyZS9EU0cKcGVyc2lmbGFnZS9NCnBlcnNpbW1vbi9TTQpwZXJzaXN0L1NHRApwZXJzaXN0ZW5jZS9NCnBlcnNpc3RlbnQvWQpwZXJzbmlja2V0eQpwZXJzb24vVU1TCnBlcnNvbmEvU00KcGVyc29uYWJsZQpwZXJzb25hZQpwZXJzb25hZ2UvTVMKcGVyc29uYWwvTVlTCnBlcnNvbmFsaXR5L1NNCnBlcnNvbmFsaXplL0NEU0cKcGVyc29uYWx0eS9NCnBlcnNvbmlmaWNhdGlvbi9NCnBlcnNvbmlmeS9HRFNOWApwZXJzb25uZWwvTQpwZXJzcGVjdGl2ZS9NUwpwZXJzcGV4CnBlcnNwaWNhY2lvdXMvWQpwZXJzcGljYWNpdHkvTQpwZXJzcGljdWl0eS9NCnBlcnNwaWN1b3VzCnBlcnNwaXJhdGlvbi9NCnBlcnNwaXJlL0dEUwpwZXJzdWFkZS9CWkdEUlMKcGVyc3VhZGVkL1UKcGVyc3VhZGVyL00KcGVyc3Vhc2lvbi9TTQpwZXJzdWFzaXZlL1BZCnBlcnN1YXNpdmVuZXNzL00KcGVydC9SWVBUCnBlcnRhaW4vR1NECnBlcnRpbmFjaW91cy9ZCnBlcnRpbmFjaXR5L00KcGVydGluZW5jZS9NCnBlcnRpbmVudC9ZCnBlcnRuZXNzL00KcGVydHVyYi9ER1MKcGVydHVyYmF0aW9uL1NNCnBlcnR1cmJlZC9VCnBlcnR1c3Npcy9NCnBlcnVrZS9NUwpwZXJ1c2FsL01TCnBlcnVzZS9HRFMKcGVydi9TCnBlcnZhZGUvRFNHCnBlcnZhc2l2ZS9QWQpwZXJ2YXNpdmVuZXNzL00KcGVydmVyc2UvUFhZTgpwZXJ2ZXJzZW5lc3MvTQpwZXJ2ZXJzaW9uL00KcGVydmVyc2l0eS9NCnBlcnZlcnQvU0dNRApwZXNldGEvTVMKcGVza2lseQpwZXNraW5lc3MvTQpwZXNreS9UUFIKcGVzby9NUwpwZXNzYXJ5L1MKcGVzc2ltYWwKcGVzc2ltaXNtL00KcGVzc2ltaXN0L1NNCnBlc3NpbWlzdGljCnBlc3NpbWlzdGljYWxseQpwZXN0L01SU1oKcGVzdGVyL0dECnBlc3RpY2lkZS9NUwpwZXN0aWZlcm91cwpwZXN0aWxlbmNlL1NNCnBlc3RpbGVudApwZXN0aWxlbnRpYWwKcGVzdGxlL01HRFMKcGVzdG8vTQpwZXQvU1pNUgpwZXRhYnl0ZS9NUwpwZXRhbC9TTUQKcGV0YXJkL01TCnBldGNvY2svU00KcGV0ZXIvR01ECnBldGlvbGUvU00KcGV0aXRlL01TCnBldGl0aW9uL1pHTURSUwpwZXRpdGlvbmVyL00KcGV0cmVsL01TCnBldHJpZmFjdGlvbi9NCnBldHJpZnkvRFNHCnBldHJvY2hlbWljYWwvU00KcGV0cm9kb2xsYXIvTVMKcGV0cm9sL00KcGV0cm9sYXR1bS9NCnBldHJvbGV1bS9NCnBldHJvbG9naXN0L1NNCnBldHJvbG9neS9NCnBldHRlZApwZXR0aWNvYXQvTVMKcGV0dGlmb2cvUwpwZXR0aWZvZ2dlZApwZXR0aWZvZ2dlci9TTQpwZXR0aWZvZ2dlcnkvTQpwZXR0aWZvZ2dpbmcKcGV0dGlseQpwZXR0aW5lc3MvTQpwZXR0aW5nL00KcGV0dGlzaC9ZCnBldHR5L1BUUgpwZXR1bGFuY2UvTQpwZXR1bGFudC9ZCnBldHVuaWEvTVMKcGV3L1NNCnBld2VlL1NNCnBld2l0L1NNCnBld3Rlci9NUwpwZXlvdGUvTQpwZgpwZmVubmlnL01TCnBnCnBoYWV0b24vTVMKcGhhZ2UvUwpwaGFnb2N5dGUvU00KcGhhbGFuZ2VyL1NNCnBoYWxhbmdlcwpwaGFsYW54L01TCnBoYWxsaQpwaGFsbGljCnBoYWxsb2NlbnRyaWMKcGhhbGxvY2VudHJpc20KcGhhbGx1cy9NCnBoYW50YXNtL01TCnBoYW50YXNtYWdvcmlhL01TCnBoYW50YXNtYWdvcmljYWwKcGhhbnRhc21hbApwaGFudG9tL1NNCnBoYXJhb2gvTQpwaGFyYW9ocwpwaGFyaXNhaWMKcGhhcmlzZWUvU00KcGhhcm1hY2V1dGljL01TCnBoYXJtYWNldXRpY2FsL1NNCnBoYXJtYWNldXRpY3MvTQpwaGFybWFjaXN0L01TCnBoYXJtYWNvbG9naWMKcGhhcm1hY29sb2dpY2FsCnBoYXJtYWNvbG9naXN0L1NNCnBoYXJtYWNvbG9neS9NCnBoYXJtYWNvcG9laWEvTVMKcGhhcm1hY3kvU00KcGhhcnluZ2VhbApwaGFyeW5nZXMKcGhhcnluZ2l0aXMvTQpwaGFyeW54L00KcGhhc2UvRFNNRwpwaGFzZW91dC9TTQpwaGF0CnBoZWFzYW50L01TCnBoZW5hY2V0aW4vTQpwaGVub2JhcmJpdGFsL00KcGhlbm9sL00KcGhlbm9tL01TCnBoZW5vbWVuYQpwaGVub21lbmFsL1kKcGhlbm9tZW5vbG9naWNhbApwaGVub21lbm9sb2d5CnBoZW5vbWVub24vTVMKcGhlbm90eXBlCnBoZXJvbW9uZS9NUwpwaGV3CnBoaS9TTQpwaGlhbC9TTQpwaGlsYW5kZXIvWkdEUlMKcGhpbGFuZGVyZXIvTQpwaGlsYW5kZXJpbmcvTQpwaGlsYW50aHJvcGljCnBoaWxhbnRocm9waWNhbGx5CnBoaWxhbnRocm9waXN0L01TCnBoaWxhbnRocm9weS9TTQpwaGlsYXRlbGljCnBoaWxhdGVsaXN0L01TCnBoaWxhdGVseS9NCnBoaWxoYXJtb25pYy9TTQpwaGlsaXBwaWMvTVMKcGhpbGlzdGluZS9NUwpwaGlsaXN0aW5pc20vTQpwaGlsb2RlbmRyb24vU00KcGhpbG9sb2dpY2FsCnBoaWxvbG9naXN0L01TCnBoaWxvbG9neS9NCnBoaWxvc29waGVyL01TCnBoaWxvc29waGljCnBoaWxvc29waGljYWwvWQpwaGlsb3NvcGhpemUvRFJTWkcKcGhpbG9zb3BoaXplci9NCnBoaWxvc29waHkvU00KcGhpbHRlci9NUwpwaGlzaC9aR0RSCnBoaXNoZXIvTQpwaGxlYml0aXMvTQpwaGxlZ20vTQpwaGxlZ21hdGljCnBobGVnbWF0aWNhbGx5CnBobG9lbS9NCnBobG94L00KcGhvYmlhL01TCnBob2JpYy9NUwpwaG9lYmUvTVMKcGhvZW5peC9NUwpwaG9uZS9EU01HCnBob25lY2FyZC9TCnBob25lbWUvTVMKcGhvbmVtaWMKcGhvbmVtaWNhbGx5CnBob25ldGljL1MKcGhvbmV0aWNhbGx5CnBob25ldGljaWFuL1NNCnBob25ldGljcy9NCnBob25leWVkCnBob25leWluZwpwaG9uaWMvUwpwaG9uaWNhbGx5CnBob25pY3MvTQpwaG9uaW5lc3MvTQpwaG9ub2dyYXBoL00KcGhvbm9ncmFwaGljCnBob25vZ3JhcGhzCnBob25vbG9naWNhbC9ZCnBob25vbG9naXN0L01TCnBob25vbG9neS9NCnBob255L1BUR0RSU00KcGhvb2V5CnBob3NwaGF0ZS9NUwpwaG9zcGhvZGllc3RlcmFzZQpwaG9zcGhvci9NUwpwaG9zcGhvcmVzY2VuY2UvTQpwaG9zcGhvcmVzY2VudC9ZCnBob3NwaG9yaWMKcGhvc3Bob3JvdXMKcGhvc3Bob3J1cy9NCnBob3NwaG9yeWxhdGlvbgpwaG90by9TR01ECnBob3RvY2VsbC9NUwpwaG90b2NvcGllci9NCnBob3RvY29weS9EUlNNWkcKcGhvdG9lbGVjdHJpYwpwaG90b2VsZWN0cmljYWxseQpwaG90b2VuZ3JhdmUvRFJTSlpHCnBob3RvZW5ncmF2ZXIvTQpwaG90b2VuZ3JhdmluZy9NCnBob3RvZmluaXNoaW5nL00KcGhvdG9nZW5pYwpwaG90b2dlbmljYWxseQpwaG90b2dyYXBoL01EUlpHCnBob3RvZ3JhcGhlci9NCnBob3RvZ3JhcGhpYwpwaG90b2dyYXBoaWNhbGx5CnBob3RvZ3JhcGhzL0EKcGhvdG9ncmFwaHkvTQpwaG90b2pvdXJuYWxpc20vTQpwaG90b2pvdXJuYWxpc3QvU00KcGhvdG9tZXRlci9NUwpwaG90b24vTVMKcGhvdG9zZW5zaXRpdmUKcGhvdG9zdGF0L1NNCnBob3Rvc3RhdGljCnBob3Rvc3RhdHRlZApwaG90b3N0YXR0aW5nCnBob3Rvc3ludGhlc2lzL00KcGhvdG9zeW50aGVzaXplL0dEUwpwaG90b3N5bnRoZXRpYwpwaG90b3Ryb3BpYwpwaG90b3Ryb3Bpc20KcGhvdG90eXBlc2V0dGVyCnBob3RvdHlwZXNldHRpbmcKcGhyYXNhbApwaHJhc2UncwpwaHJhc2UvQUdEUwpwaHJhc2Vib29rL1MKcGhyYXNlb2xvZ3kvTQpwaHJhc2luZy9NUwpwaHJlYWtpbmcKcGhyZW5vbG9naXN0L1NNCnBocmVub2xvZ3kvTQpwaHlsYQpwaHlsYWN0ZXJ5L1NNCnBoeWxvZ2VueS9NCnBoeWx1bS9NCnBoeXMKcGh5c2ljL1NNCnBoeXNpY2FsL01ZUwpwaHlzaWNhbGl0eQpwaHlzaWNpYW4vU00KcGh5c2ljaXN0L1NNCnBoeXNpY2tlZApwaHlzaWNraW5nCnBoeXNpY3MvTQpwaHlzaW8vUwpwaHlzaW9nbm9teS9TTQpwaHlzaW9ncmFwaHkvTQpwaHlzaW9sb2dpYwpwaHlzaW9sb2dpY2FsL1kKcGh5c2lvbG9naXN0L01TCnBoeXNpb2xvZ3kvTQpwaHlzaW90aGVyYXBpc3QvTVMKcGh5c2lvdGhlcmFweS9NCnBoeXNpcXVlL01TCnBpL1NNRFJIWkcKcGlhbmlzc2ltby9TTQpwaWFuaXN0L01TCnBpYW5vL1NNCnBpYW5vZm9ydGUvU00KcGlhbm9sYS9TCnBpYXN0ZXIvTVMKcGlhenphL01TCnBpYnJvY2gvTQpwaWJyb2NocwpwaWMvU00KcGljYS9NCnBpY2Fkb3IvTVMKcGljYW50ZQpwaWNhcmVzcXVlCnBpY2F5dW5lCnBpY2NhbGlsbGkvTQpwaWNjb2xvL01TCnBpY2svTURSU0paRwpwaWNrYXgvR01EUwpwaWNrZXIvTQpwaWNrZXJlbC9NUwpwaWNrZXQvWkdNRFJTCnBpY2tpbmdzL00KcGlja2xlL01HRFMKcGlja3BvY2tldC9TTQpwaWNrdXAvTVMKcGlja3kvUFRSCnBpY25pYy9NUwpwaWNuaWNrZWQKcGljbmlja2VyL1NNCnBpY25pY2tpbmcKcGljb3QvU00KcGljdG9ncmFwaC9NCnBpY3RvZ3JhcGhzCnBpY3RvcmlhbC9NWVMKcGljdHVyZS9NR0RTCnBpY3R1cmVzcXVlL1BZCnBpY3R1cmVzcXVlbmVzcy9NCnBpZGRsZS9NR0RTCnBpZGRseQpwaWRnaW4vTVMKcGllL1NNCnBpZWJhbGQvTVMKcGllY2UvRFNNRwpwaWVjZW1lYWwKcGllY2V3b3JrL01SWgpwaWVjZXdvcmtlci9NCnBpZWNydXN0L1NNCnBpZWluZwpwaWVyL00KcGllcmNlL0pHRFMKcGllcmNpbmcvTVkKcGlldHkvTQpwaWV6b2VsZWN0cmljCnBpZmZsZS9NRwpwaWcvU01MCnBpZ2Vvbi9NUwpwaWdlb25ob2xlL0RTTUcKcGlnZ2VkCnBpZ2dlcnkvUwpwaWdnaW5nCnBpZ2dpc2gvUFkKcGlnZ2lzaG5lc3MvTQpwaWdneS9UUlNNCnBpZ2d5YmFjay9NRFNHCnBpZ2hlYWRlZC9QWQpwaWdoZWFkZWRuZXNzL00KcGlnbGV0L01TCnBpZ21lbnQvTURTCnBpZ21lbnRhdGlvbi9NCnBpZ3Blbi9NUwpwaWdza2luL01TCnBpZ3N0eS9TTQpwaWdzd2lsbApwaWd0YWlsL01TCnBpa2UvTVpHRFJTCnBpa2VyL00KcGlrZXN0YWZmL1NNCnBpbGFmL1NNCnBpbGFzdGVyL01TCnBpbGNoYXJkL01TCnBpbGUvTUdEU0oKcGlsZXVwL01TCnBpbGZlci9aR0RSUwpwaWxmZXJhZ2UvTQpwaWxmZXJlci9NCnBpbGdyaW0vTVMKcGlsZ3JpbWFnZS9NUwpwaWxpbmcvTQpwaWxsL01EU0cKcGlsbGFnZS9NWkdEUlMKcGlsbGFnZXIvTQpwaWxsYXIvTURTCnBpbGxib3gvTVMKcGlsbGlvbi9NUwpwaWxsb2NrL1MKcGlsbG9yeS9HRFNNCnBpbGxvdy9HTURTCnBpbGxvd2Nhc2UvTVMKcGlsbG93c2xpcC9NUwpwaWxvdC9ER1NNCnBpbG90aG91c2UvU00KcGltZW50by9NUwpwaW1pZW50by9NUwpwaW1wL0dNRFlTCnBpbXBlcm5lbC9NUwpwaW1wbGUvRFNNCnBpbXBseS9SVApwaW4vU00KcGluYWZvcmUvTVMKcGluYXRhL01TCnBpbmJhbGwvTQpwaW5jZXIvTVMKcGluY2gvR01EUwpwaW5jdXNoaW9uL01TCnBpbmUncwpwaW5lL0FHRFMKcGluZWFwcGxlL01TCnBpbmV3b29kL1MKcGluZXkKcGluZmVhdGhlci9TTQpwaW5nL0dNRApwaW5oZWFkL1NNCnBpbmhvbGUvU00KcGluaWVyCnBpbmllc3QKcGluaW9uL1NNREcKcGluay9UR1BNRFJTCnBpbmtleWUvTQpwaW5raWUvU00KcGlua2lzaApwaW5rbmVzcy9NCnBpbmtvL01TCnBpbm5hY2xlL1NNCnBpbm5hdGUKcGlubmVkL1UKcGlubmluZy9VCnBpbm55L1MKcGlub2NobGUvTQpwaW5vbi9NUwpwaW5wb2ludC9TR01ECnBpbnByaWNrL01TCnBpbnNldHRlci9TTQpwaW5zdHJpcGUvRFNNCnBpbnQvTVMKcGludG8vTVMKcGludXAvTVMKcGlud2hlZWwvR1NNRApwaW55aW4vTQpwaW55b24vU00KcGlvbmVlci9TR01ECnBpb3VzL1lQCnBpb3VzbmVzcy9NCnBpcC9TWkdNRFIKcGlwZS9NUwpwaXBlbGluZS9TTQpwaXBlci9NCnBpcGV0dGUvU00KcGlwZXdvcmsKcGlwaW5nL00KcGlwaXQvTVMKcGlwcGVkCnBpcHBpbi9TTQpwaXBwaW5nCnBpcHNxdWVhay9TTQpwaXF1YW5jeS9NCnBpcXVhbnQvWQpwaXF1ZS9NR0RTCnBpcmFjeS9NCnBpcmFuaGEvU00KcGlyYXRlL0RTTUcKcGlyYXRpY2FsL1kKcGlyb2dpL00KcGlyb3Noa2kvTQpwaXJvdWV0dGUvRFNNRwpwaXNjYXRvcmlhbApwaXNtaXJlL1NNCnBpc3MvWkdNRFJTCnBpc3NvaXIvUwpwaXN0YWNoaW8vU00KcGlzdGUvUwpwaXN0aWwvU00KcGlzdGlsbGF0ZQpwaXN0b2wvU00KcGlzdG9uL1NNCnBpdC9TTQpwaXRhL01TCnBpdGFwYXQvU00KcGl0Y2gvTURSU1pHCnBpdGNoYmxlbmRlL00KcGl0Y2hlci9NCnBpdGNoZm9yay9NRFNHCnBpdGNobWFuL00KcGl0Y2htZW4KcGl0ZW91cy9ZUApwaXRlb3VzbmVzcy9NCnBpdGZhbGwvU00KcGl0aC9NCnBpdGhlYWQvUwpwaXRoaWx5CnBpdGhpbmVzcy9NCnBpdGh5L1JUUApwaXRpYWJsZQpwaXRpYWJseQpwaXRpZnVsL1kKcGl0aWxlc3MvUFkKcGl0aWxlc3NuZXNzL00KcGl0b24vTVMKcGl0dGEvUwpwaXR0YW5jZS9NUwpwaXR0ZWQKcGl0dGluZwpwaXR1aXRhcnkvU00KcGl0eS9HRFNNCnBpdHlpbmcvWQpwaXZvdC9NREdTCnBpdm90YWwKcGl4L00KcGl4ZWwvTVMKcGl4aWUvTVMKcGl6emEvTVMKcGl6emF6ei9NCnBpenplcmlhL1NNCnBpenppY2F0aQpwaXp6aWNhdG8vTQpwaidzCnBrCnBrZwpwa3QKcGt3eQpwbApwbGFjYXJkL1NNREcKcGxhY2F0ZS9EU0dOCnBsYWNhdGlvbi9NCnBsYWNhdG9yeQpwbGFjZSdzCnBsYWNlL0FFU0RMRwpwbGFjZWJvL1NNCnBsYWNlZC9VCnBsYWNlaG9sZGVyL01TCnBsYWNla2ljay9NRFJaR1MKcGxhY2VraWNrZXIvTQpwbGFjZW1lbnQvRUFTTQpwbGFjZW50YS9TTQpwbGFjZW50YWwvUwpwbGFjZXIvU00KcGxhY2lkL1kKcGxhY2lkaXR5L00KcGxhY2luZ3MKcGxhY2tldC9TTQpwbGFnaWFyaXNtL1NNCnBsYWdpYXJpc3QvU00KcGxhZ2lhcml6ZS9EUlNaRwpwbGFnaWFyaXplci9NCnBsYWdpYXJ5L00KcGxhZ3VlL0RTTUcKcGxhaWNlCnBsYWlkL01TCnBsYWluL01SWVRTUApwbGFpbmNoYW50CnBsYWluY2xvdGhlcwpwbGFpbmNsb3RoZXNtYW4vTQpwbGFpbmNsb3RoZXNtZW4KcGxhaW5uZXNzL00KcGxhaW5zbWFuL00KcGxhaW5zbWVuCnBsYWluc29uZy9NCnBsYWluc3Bva2VuCnBsYWludC9TTVYKcGxhaW50aWZmL1NNCnBsYWludGl2ZS9ZCnBsYWl0L01ER1MKcGxhbi9aTVJTCnBsYW5hcgpwbGFuZSdzCnBsYW5lL0NHRFMKcGxhbmVsb2FkL01TCnBsYW5lci9NCnBsYW5ldC9TTQpwbGFuZXRhcml1bS9TTQpwbGFuZXRhcnkKcGxhbmdlbmN5L00KcGxhbmdlbnQKcGxhbmsvTURHUwpwbGFua2luZy9NCnBsYW5rdG9uL00KcGxhbm5lZC9VCnBsYW5uZXIvU00KcGxhbm5pbmcvUwpwbGFudC9NRFJaR1NKCnBsYW50YWluL1NNCnBsYW50YXIKcGxhbnRhdGlvbi9NUwpwbGFudGVyL00KcGxhbnRpbmcvTQpwbGFudGxpa2UKcGxhcXVlL1NNCnBsYXNoL01EU0cKcGxhc21hL00KcGxhc3Rlci9TWkdNRFIKcGxhc3RlcmJvYXJkL00KcGxhc3RlcmVyL00KcGxhc3RpYy9TTQpwbGFzdGljaXR5L00KcGxhc3RpY2l6ZS9EU0cKcGxhc3RpcXVlCnBsYXQvWEdNRE5TCnBsYXRlL01TCnBsYXRlYXUvU01ERwpwbGF0ZWZ1bC9TTQpwbGF0ZWxldC9TTQpwbGF0ZW4vTQpwbGF0Zm9ybS9TR01ECnBsYXRpbmcvTQpwbGF0aW51bS9NCnBsYXRpdHVkZS9TTQpwbGF0aXR1ZGlub3VzCnBsYXRvbmljCnBsYXRvb24vU0dNRApwbGF0dGVkCnBsYXR0ZXIvU00KcGxhdHRpbmcKcGxhdHkvTQpwbGF0eXB1cy9NUwpwbGF0eXMKcGxhdWRpdC9TTQpwbGF1c2liaWxpdHkvTQpwbGF1c2libGUKcGxhdXNpYmx5CnBsYXkvQUVHTURTCnBsYXlhYmxlL0VVCnBsYXlhY3QvU0dECnBsYXlhY3RpbmcvTQpwbGF5YmFjay9NUwpwbGF5YmlsbC9NUwpwbGF5Ym9vay9NUwpwbGF5Ym95L1NNCnBsYXllci9TTQpwbGF5ZmVsbG93L1NNCnBsYXlmdWwvUFkKcGxheWZ1bG5lc3MvTQpwbGF5Z2lybC9NUwpwbGF5Z29lci9NUwpwbGF5Z3JvdW5kL1NNCnBsYXlncm91cC9TCnBsYXlob3VzZS9NUwpwbGF5bGlzdC9NUwpwbGF5bWF0ZS9NUwpwbGF5b2ZmL1NNCnBsYXlwZW4vU00KcGxheXJvb20vU00KcGxheXNjaG9vbC9TCnBsYXl0aGluZy9TTQpwbGF5dGltZS9NCnBsYXl3cmlnaHQvU00KcGxhemEvTVMKcGxlYS9NUwpwbGVhZC9EUlpHU0oKcGxlYWRlci9NCnBsZWFkaW5nL01ZCnBsZWFzYW50L1VUWVAKcGxlYXNhbnRlcgpwbGVhc2FudG5lc3MvVU0KcGxlYXNhbnRyeS9TTQpwbGVhc2UvRURTRwpwbGVhc2luZy9ZUwpwbGVhc3VyYWJseQpwbGVhc3VyZS9NR0RTQgpwbGVhc3VyZWZ1bApwbGVhdC9NREdTCnBsZWIvUwpwbGViYnkKcGxlYmUvTVMKcGxlYmVpYW4vTVMKcGxlYmlzY2l0ZS9NUwpwbGVjdHJhCnBsZWN0cnVtL01TCnBsZWRnZS9EU01HCnBsZW5hcnkvU00KcGxlbmlwb3RlbnRpYXJ5L1NNCnBsZW5pdHVkZS9TTQpwbGVudGVvdXMKcGxlbnRpZnVsL1kKcGxlbnR5L00KcGxlbnVtL1MKcGxlb25hc20vTVMKcGxldGhvcmEvTQpwbGV1cmEvTQpwbGV1cmFlCnBsZXVyaXN5L00KcGxleHVzL01TCnBsaWFiaWxpdHkvTQpwbGlhYmxlCnBsaWFuY3kvTQpwbGlhbnQvWQpwbGllcnMvTQpwbGlnaHQvU01ERwpwbGltc29sbC9TCnBsaW50aC9NCnBsaW50aHMKcGxvZC9TCnBsb2RkZWQKcGxvZGRlci9NUwpwbG9kZGluZy9TCnBsb25rL0RSU1pHCnBsb3AvTVMKcGxvcHBlZApwbG9wcGluZwpwbG9zaXZlL1MKcGxvdC9NUwpwbG90dGVkCnBsb3R0ZXIvU00KcGxvdHRpbmcKcGxvdmVyL1NNCnBsb3cvR01EUwpwbG93bWFuL00KcGxvd21lbgpwbG93c2hhcmUvTVMKcGxveSdzCnBsb3kvUwpwbHVjay9NRFNHCnBsdWNraWx5CnBsdWNraW5lc3MvTQpwbHVja3kvUlBUCnBsdWcncwpwbHVnL1VTCnBsdWdnZWQvVQpwbHVnZ2luZy9VCnBsdWdob2xlL1MKcGx1Z2luL1NNCnBsdW0vR01EUwpwbHVtYWdlL00KcGx1bWIvTURSU1pHSgpwbHVtYmVkL1UKcGx1bWJlci9NCnBsdW1iaW5nL00KcGx1bWUvTVMKcGx1bW1ldC9TR01ECnBsdW1teQpwbHVtcC9NRFJZU1RHUApwbHVtcG5lc3MvTQpwbHVteS9SVApwbHVuZGVyL1NaR01EUgpwbHVuZGVyZXIvTQpwbHVuZ2UvRFJTTVpHCnBsdW5nZXIvTQpwbHVuay9NRFNHCnBsdXBlcmZlY3QvU00KcGx1cmFsL1NNCnBsdXJhbGlzbS9NCnBsdXJhbGlzdC9NUwpwbHVyYWxpc3RpYwpwbHVyYWxpdHkvU00KcGx1cmFsaXphdGlvbi9NCnBsdXJhbGl6ZS9HRFMKcGx1cy9NUwpwbHVzaC9NUllUUApwbHVzaG5lc3MvTQpwbHVzaHkvUlQKcGx1dG9jcmFjeS9TTQpwbHV0b2NyYXQvU00KcGx1dG9jcmF0aWMKcGx1dG9uaXVtL00KcGx1dmlhbApwbHkvQUdEU00KcGx5d29vZC9NCnBtCnBuZXVtYXRpYwpwbmV1bWF0aWNhbGx5CnBuZXVtb2NvY2NhbApwbmV1bW9jb2NjaQpwbmV1bW9jb2NjdXMKcG5ldW1vbmlhL00KcG9hY2gvRFJTWkcKcG9hY2hlci9NCnBvYWNoaW5nL00KcG9jay9HTURTCnBvY2tldC9TTURHCnBvY2tldGJvb2svU00KcG9ja2V0ZnVsL1NNCnBvY2tldGtuaWZlL00KcG9ja2V0a25pdmVzCnBvY2ttYXJrL01ER1MKcG9kL1NNCnBvZGNhc3QvU01HCnBvZGRlZApwb2RkaW5nCnBvZGlhdHJpc3QvU00KcG9kaWF0cnkvTQpwb2RpdW0vU00KcG9lbS9NUwpwb2VzeS9NCnBvZXQvTVMKcG9ldGFzdGVyL01TCnBvZXRlc3MvTVMKcG9ldGljL1MKcG9ldGljYWwvWQpwb2V0cnkvTQpwb2dyb20vU00KcG9pL00KcG9pZ25hbmN5L00KcG9pZ25hbnQvWQpwb2luY2lhbmEvU00KcG9pbnNldHRpYS9TTQpwb2ludC9NRFJTWkcKcG9pbnRibGFuawpwb2ludGVkL1kKcG9pbnRlci9NCnBvaW50aWxsaXNtL00KcG9pbnRpbGxpc3QvU00KcG9pbnRsZXNzL1BZCnBvaW50bGVzc25lc3MvTQpwb2ludHkvVFIKcG9pc2UvTUdEUwpwb2lzb24vU0paR01EUgpwb2lzb25lci9NCnBvaXNvbmluZy9NCnBvaXNvbm91cy9ZCnBva2UvTVpHRFJTCnBva2VyL00KcG9rZXkvTVMKcG9reS9UUgpwb2wvU0dNRApwb2xhcgpwb2xhcml0eS9TTQpwb2xhcml6YXRpb24vQ00KcG9sYXJpemUvQ0RTRwpwb2xlL01TCnBvbGVheGUvR0RTCnBvbGVjYXQvTVMKcG9sZW1pYy9NUwpwb2xlbWljYWwvWQpwb2xlbWljaXN0L1NNCnBvbGVtaWNzL00KcG9sZXN0YXIvU00KcG9saWNlL0RTTUcKcG9saWNlbWFuL00KcG9saWNlbWVuCnBvbGljZXdvbWFuL00KcG9saWNld29tZW4KcG9saWN5L1NNCnBvbGljeWhvbGRlci9NUwpwb2xpY3ltYWtlci9TCnBvbGlvL01TCnBvbGlvbXllbGl0aXMvTQpwb2xpc2gvWkdNRFJTCnBvbGlzaGVkL1UKcG9saXNoZXIvTQpwb2xpdGJ1cm8vTVMKcG9saXRlL1JZVFAKcG9saXRlbmVzcy9NCnBvbGl0ZXNzZS9NCnBvbGl0aWMvUwpwb2xpdGljYWwvWQpwb2xpdGljaWFuL1NNCnBvbGl0aWNpemF0aW9uL00KcG9saXRpY2l6ZS9DRFNHCnBvbGl0aWNraW5nL00KcG9saXRpY28vU00KcG9saXRpY3MvTQpwb2xpdHkvU00KcG9sa2EvTURTRwpwb2xsL0dNRE5TCnBvbGxhY2svTVMKcG9sbGFyZC9TCnBvbGxlbi9NCnBvbGxpbmF0ZS9HTkRTCnBvbGxpbmF0aW9uL00KcG9sbGluYXRvci9TTQpwb2xsaW5nL00KcG9sbGl3b2cvU00KcG9sbHN0ZXIvU00KcG9sbHV0YW50L01TCnBvbGx1dGUvWkdORFJTCnBvbGx1dGVkL1UKcG9sbHV0ZXIvTQpwb2xsdXRpb24vTQpwb2xvL00KcG9sb25haXNlL1NNCnBvbG9uaXVtL00KcG9sdGVyZ2Vpc3QvTVMKcG9sdHJvb24vU00KcG9seQpwb2x5YWNyeWxhbWlkZQpwb2x5YW1vcnkvUwpwb2x5YW5kcm91cwpwb2x5YW5kcnkvTQpwb2x5Y2xpbmljL1NNCnBvbHllc3Rlci9NUwpwb2x5ZXRoeWxlbmUvTQpwb2x5Z2FtaXN0L01TCnBvbHlnYW1vdXMKcG9seWdhbXkvTQpwb2x5Z2xvdC9TTQpwb2x5Z29uL1NNCnBvbHlnb25hbApwb2x5Z3JhcGgvR01ECnBvbHlncmFwaHMKcG9seWhlZHJhbApwb2x5aGVkcm9uL1NNCnBvbHltYXRoL00KcG9seW1hdGhzCnBvbHltZXIvU00KcG9seW1lcmljCnBvbHltZXJpemF0aW9uL00KcG9seW1lcml6ZS9HRFMKcG9seW1vcnBoaWMKcG9seW1vcnBob3VzCnBvbHlub21pYWwvTVMKcG9seXAvTVMKcG9seXBob25pYwpwb2x5cGhvbnkvTQpwb2x5cHJvcHlsZW5lL00KcG9seXMKcG9seXNlbW91cwpwb2x5c3R5cmVuZS9NCnBvbHlzeWxsYWJpYwpwb2x5c3lsbGFibGUvTVMKcG9seXRlY2huaWMvTVMKcG9seXRoZWlzbS9NCnBvbHl0aGVpc3QvU00KcG9seXRoZWlzdGljCnBvbHl0aGVuZQpwb2x5dW5zYXR1cmF0ZS9EUwpwb2x5dXJldGhhbmUvTVMKcG9seXZpbnlsCnBvbS9TCnBvbWFkZS9EU01HCnBvbWFuZGVyL1NNCnBvbWVncmFuYXRlL01TCnBvbW1lbC9TR01ECnBvbW15L1MKcG9tcC9NCnBvbXBhZG91ci9TTUQKcG9tcGFuby9NUwpwb21wb20vU00KcG9tcG9zaXR5L00KcG9tcG91cy9ZUApwb21wb3VzbmVzcy9NCnBvbmNlL0dEUwpwb25jaG8vU00KcG9uY3kKcG9uZC9NUwpwb25kZXIvU1pHRFIKcG9uZGVyZXIvTQpwb25kZXJvdXMvWVAKcG9uZGVyb3VzbmVzcy9NCnBvbmUvTVMKcG9uZy9HRFMKcG9uZ2VlL00KcG9uaWFyZC9NUwpwb250aWZmL1NNCnBvbnRpZmljYWwvWQpwb250aWZpY2F0ZS9EU01HCnBvbnRvb24vU00KcG9ueS9HRFNNCnBvbnl0YWlsL01TCnBvby9TR0QKcG9vY2gvTURTRwpwb29kbGUvU00KcG9vZi9NUwpwb29mdGVyL1MKcG9vaC9HTUQKcG9vaHMKcG9vbC9HTURTCnBvb2xyb29tL01TCnBvb2xzaWRlL1MKcG9vcC9HTURTCnBvb3IvVFJZUApwb29yYm95L00KcG9vcmhvdXNlL1NNCnBvb3JuZXNzL00KcG9wL1NNCnBvcGNvcm4vTQpwb3BlL01TCnBvcGd1bi9TTQpwb3BpbmpheS9NUwpwb3BsYXIvU00KcG9wbGluL00KcG9wb3Zlci9TTQpwb3BwYS9NUwpwb3BwYWRvbS9TCnBvcHBlZApwb3BwZXIvU00KcG9wcGV0L1MKcG9wcGluZwpwb3BweS9TTQpwb3BweWNvY2svTQpwb3B1bGFjZS9NUwpwb3B1bGFyL1kKcG9wdWxhcml0eS9VTQpwb3B1bGFyaXphdGlvbi9NCnBvcHVsYXJpemUvRFNHCnBvcHVsYXRlL0FDR0RTCnBvcHVsYXRpb24vQ00KcG9wdWxhdGlvbnMKcG9wdWxpc20vTQpwb3B1bGlzdC9NUwpwb3B1bG91cy9QCnBvcHVsb3VzbmVzcy9NCnBvcHVwL01TCnBvcmNlbGFpbi9TTQpwb3JjaC9NUwpwb3JjaW5lCnBvcmN1cGluZS9TTQpwb3JlL01HRFMKcG9yZ3kvU00KcG9yay9aTVIKcG9ya2VyL00KcG9ya3kvUlNNVApwb3JuL00KcG9ybm8vTQpwb3Jub2dyYXBoZXIvTVMKcG9ybm9ncmFwaGljCnBvcm5vZ3JhcGhpY2FsbHkKcG9ybm9ncmFwaHkvTQpwb3Jvc2l0eS9NCnBvcm91cy9QCnBvcm91c25lc3MvTQpwb3JwaHlyaXRpYwpwb3JwaHlyeS9NCnBvcnBvaXNlL01HRFMKcG9ycmlkZ2UvTQpwb3JyaW5nZXIvU00KcG9ydCdzL0EKcG9ydC9DQUVHRFMKcG9ydGFiaWxpdHkvTQpwb3J0YWJsZS9NUwpwb3J0YWdlL0RTTUcKcG9ydGFsL1NNCnBvcnRjdWxsaXMvTVMKcG9ydGVuZC9TR0QKcG9ydGVudC9TTQpwb3J0ZW50b3VzL1lQCnBvcnRlci9BU00KcG9ydGVyaG91c2UvU00KcG9ydGZvbGlvL01TCnBvcnRob2xlL01TCnBvcnRpY28vTQpwb3J0aWNvZXMKcG9ydGllcmUvTVMKcG9ydGlvbi9LU0dNRApwb3J0bGluZXNzL00KcG9ydGx5L1JQVApwb3J0bWFudGVhdS9NUwpwb3J0cmFpdC9NUwpwb3J0cmFpdGlzdC9TTQpwb3J0cmFpdHVyZS9NCnBvcnRyYXkvU0dECnBvcnRyYXlhbC9NUwpwb3J0dWxhY2EvTQpwb3NlJ3MvQQpwb3NlL0NBS0VHRFMKcG9zZXIvRUtTTQpwb3NldXIvU00KcG9zaC9UUgpwb3NpdC9EU0dWCnBvc2l0aW9uL0NLRU1TCnBvc2l0aW9uYWwvSwpwb3NpdGlvbmVkL0sKcG9zaXRpb25pbmcvSwpwb3NpdGl2ZS9NWVBTCnBvc2l0aXZlbmVzcy9NCnBvc2l0aXZpc20KcG9zaXRpdmlzdC9TCnBvc2l0cm9uL01TCnBvc3MKcG9zc2UvTVMKcG9zc2Vzcy9BRVZHU0QKcG9zc2Vzc2lvbi9BU00KcG9zc2Vzc2l2ZS9TTVlQCnBvc3Nlc3NpdmVuZXNzL00KcG9zc2Vzc29yL1NNCnBvc3NpYmlsaXR5L1NNCnBvc3NpYmxlL1NNCnBvc3NpYmx5CnBvc3N1bS9TTQpwb3N0L1pHTURSU0oKcG9zdGFnZS9NCnBvc3RhbApwb3N0YmFnL1MKcG9zdGJveC9TCnBvc3RjYXJkL1NNCnBvc3Rjb2RlL1MKcG9zdGNvbG9uaWFsCnBvc3Rjb25zb25hbnRhbApwb3N0ZGF0ZS9EU0cKcG9zdGRvYy9NUwpwb3N0ZG9jdG9yYWwKcG9zdGVyL00KcG9zdGVyaW9yL1NNCnBvc3Rlcml0eS9NCnBvc3RncmFkdWF0ZS9TTQpwb3N0aGFzdGUKcG9zdGh1bW91cy9ZCnBvc3RoeXBub3RpYwpwb3N0aWUvUwpwb3N0aWxpb24vU00KcG9zdGluZHVzdHJpYWwKcG9zdGluZy9NCnBvc3RsdWRlL1NNCnBvc3RtYW4vTQpwb3N0bWFyay9TTURHCnBvc3RtYXN0ZXIvTVMKcG9zdG1lbgpwb3N0bWVub3BhdXNhbApwb3N0bWVyaWRpYW4KcG9zdG1pc3RyZXNzL01TCnBvc3Rtb2Rlcm4KcG9zdG1vZGVybmlzbS9NCnBvc3Rtb2Rlcm5pc3QvTVMKcG9zdG1vcnRlbS9TTQpwb3N0bmFzYWwKcG9zdG5hdGFsCnBvc3RvcGVyYXRpdmUKcG9zdHBhaWQKcG9zdHBhcnR1bQpwb3N0cG9uZS9EU0dMCnBvc3Rwb25lbWVudC9TTQpwb3N0cHJhbmRpYWwKcG9zdHNjcmlwdC9TTQpwb3N0c2Vhc29uL1NNCnBvc3RzeW5hcHRpYwpwb3N0dWxhdGUvWERTTUdOCnBvc3R1bGF0aW9uL00KcG9zdHVyYWwKcG9zdHVyZS9NR0pEUwpwb3N0dXJpbmcvTQpwb3N0d2FyCnBvc3R3b21hbgpwb3N0d29tZW4KcG9zeS9TTQpwb3QvQ1NNCnBvdGFiaWxpdHkvTQpwb3RhYmxlL1NNCnBvdGFzaC9NCnBvdGFzc2l1bS9NCnBvdGF0by9NCnBvdGF0b2VzCnBvdGJlbGx5L0RTTQpwb3Rib2lsZXIvU00KcG90ZW5jeS9NCnBvdGVudC9ZCnBvdGVudGF0ZS9NUwpwb3RlbnRpYWwvTVlTCnBvdGVudGlhbGl0eS9TTQpwb3RlbnRpYXRlL0dEUwpwb3RmdWwvU00KcG90aGVhZC9TTQpwb3RoZXIvU01ERwpwb3RoZXJiL1NNCnBvdGhvbGRlci9NUwpwb3Rob2xlL0RSU01aRwpwb3Rob29rL1NNCnBvdGlvbi9TTQpwb3RsdWNrL01TCnBvdHBpZS9TTQpwb3Rwb3VycmkvU00KcG90c2hlcmQvU00KcG90c2hvdC9NUwpwb3R0YWdlL00KcG90dGVkCnBvdHRlci9HU01ECnBvdHRlcnkvU00KcG90dGluZwpwb3R0eS9QUlNNVApwb3VjaC9NRFNHCnBvdWYvUwpwb3VmZmUvUwpwb3VsdGVyZXIvTVMKcG91bHRpY2UvRFNNRwpwb3VsdHJ5L00KcG91bmNlL0RTTUcKcG91bmQncwpwb3VuZC9LRFNHCnBvdW5kYWdlL00KcG91bmRpbmcvU00KcG91ci9HRFNKCnBvdXQvWkdNRFJTCnBvdXRlci9NCnBvdmVydHkvTQpwb3cKcG93ZGVyL0dTTUQKcG93ZGVyeQpwb3dlci9NRFNHCnBvd2VyYm9hdC9NUwpwb3dlcmZ1bC9ZCnBvd2VyaG91c2UvU00KcG93ZXJsZXNzL1BZCnBvd2VybGVzc25lc3MvTQpwb3d3b3cvU0dNRApwb3gvTVMKcHAKcHBtCnBwcgpwcgpwcmFjdGljYWJpbGl0eS9NCnByYWN0aWNhYmx5CnByYWN0aWNhbC9TTVkKcHJhY3RpY2FsaXR5L1NNCnByYWN0aWNlL0RTTUdCCnByYWN0aWNlZC9VCnByYWN0aWN1bS9TTQpwcmFjdGl0aW9uZXIvU00KcHJhZXRvci9TTQpwcmFldG9yaWFuCnByYWdtYXRpYy9NUwpwcmFnbWF0aWNhbC9ZCnByYWdtYXRpc20vTQpwcmFnbWF0aXN0L01TCnByYWlyaWUvU00KcHJhaXNlL0VEU01HCnByYWlzZXdvcnRoaW5lc3MvTQpwcmFpc2V3b3J0aHkvUApwcmFsaW5lL1NNCnByYW0vTVMKcHJhbmNlL0RSU01aRwpwcmFuY2VyL00KcHJhbmNpbmcvWQpwcmFuZy9EU0cKcHJhbmsvTVMKcHJhbmtzdGVyL1NNCnByYXNlb2R5bWl1bS9NCnByYXQvUwpwcmF0ZS9NWkdEUlMKcHJhdGVyL00KcHJhdGZhbGwvU00KcHJhdHRsZS9EUlNNWkcKcHJhdHRsZXIvTQpwcmF3bi9NRFNHCnByYXkvWkdEUlMKcHJheWVyL00KcHJheWVyZnVsL1kKcHJlYWNoL0RSU1pHTApwcmVhY2hlci9NCnByZWFjaG1lbnQvTQpwcmVhY2h5L1JUCnByZWFkb2xlc2NlbmNlL1NNCnByZWFtYmxlL01HRFMKcHJlYXJyYW5nZS9MR0RTCnByZWFycmFuZ2VtZW50L00KcHJlYXNzaWduZWQKcHJlY2FuY2VsL1NNREcKcHJlY2FuY2Vyb3VzCnByZWNhcmlvdXMvUFkKcHJlY2FyaW91c25lc3MvTQpwcmVjYXN0CnByZWNhdXRpb24vTVMKcHJlY2F1dGlvbmFyeQpwcmVjZWRlL0RTRwpwcmVjZWRlbmNlL00KcHJlY2VkZW50L1NNCnByZWNlcHQvU00KcHJlY2VwdG9yL1NNCnByZWNpbmN0L01TCnByZWNpb3NpdHkvTQpwcmVjaW91cy9ZUApwcmVjaW91c25lc3MvTQpwcmVjaXBpY2UvU00KcHJlY2lwaXRhbnQvTVMKcHJlY2lwaXRhdGUvWE1ZR05EUwpwcmVjaXBpdGF0aW9uL00KcHJlY2lwaXRvdXMvWQpwcmVjaXMvTQpwcmVjaXNlL0RSU1lUR05QCnByZWNpc2VuZXNzL00KcHJlY2lzaW9uL00KcHJlY2x1ZGUvR0RTCnByZWNsdXNpb24vTQpwcmVjb2Npb3VzL1lQCnByZWNvY2lvdXNuZXNzL00KcHJlY29jaXR5L00KcHJlY29nbml0aW9uL00KcHJlY29nbml0aXZlCnByZWNvbG9uaWFsCnByZWNvbmNlaXZlL0dEUwpwcmVjb25jZXB0aW9uL1NNCnByZWNvbmRpdGlvbi9NREdTCnByZWNvb2svR1NECnByZWN1cnNvci9TTQpwcmVjdXJzb3J5CnByZWRhdGUvRFNHCnByZWRhdG9yL01TCnByZWRhdG9yeQpwcmVkYXduCnByZWRlY2Vhc2UvR0RTCnByZWRlY2Vzc29yL1NNCnByZWRlZmluZWQKcHJlZGVzaWduYXRlL0dEUwpwcmVkZXN0aW5hdGlvbi9NCnByZWRlc3RpbmUvRFNHCnByZWRldGVybWluYXRpb24vTQpwcmVkZXRlcm1pbmUvWkdEUlMKcHJlZGV0ZXJtaW5lci9NCnByZWRpY2FibGUKcHJlZGljYW1lbnQvTVMKcHJlZGljYXRlL01HTlZEUwpwcmVkaWNhdGlvbi9NCnByZWRpY2F0aXZlL1kKcHJlZGljdC9CR1ZTRApwcmVkaWN0YWJpbGl0eS9VTQpwcmVkaWN0YWJsZS9VCnByZWRpY3RhYmx5L1UKcHJlZGljdGlvbi9TTQpwcmVkaWN0b3IvTVMKcHJlZGlnZXN0L0dEUwpwcmVkaWxlY3Rpb24vU00KcHJlZGlzcG9zZS9HRFMKcHJlZGlzcG9zaXRpb24vTVMKcHJlZG9taW5hbmNlL00KcHJlZG9taW5hbnQvWQpwcmVkb21pbmF0ZS9ZR0RTCnByZWVtaWUvU00KcHJlZW1pbmVuY2UvTQpwcmVlbWluZW50L1kKcHJlZW1wdC9HVlNECnByZWVtcHRpb24vTQpwcmVlbXB0aXZlL1kKcHJlZW4vRFNHCnByZWV4aXN0L0RHUwpwcmVleGlzdGVuY2UvTQpwcmVmCnByZWZhYi9TTQpwcmVmYWJiZWQKcHJlZmFiYmluZwpwcmVmYWJyaWNhdGUvRFNHTgpwcmVmYWJyaWNhdGlvbi9NCnByZWZhY2UvRFNNRwpwcmVmYXRvcnkKcHJlZmVjdC9TTQpwcmVmZWN0dXJlL01TCnByZWZlci9TQkwKcHJlZmVyYWJseQpwcmVmZXJlbmNlL01TCnByZWZlcmVudGlhbC9ZCnByZWZlcm1lbnQvTQpwcmVmZXJyZWQKcHJlZmVycmluZwpwcmVmaWd1cmUvR0RTCnByZWZpeC9NRFNHCnByZWZvcm0vR1NECnByZWZyb250YWwKcHJlZ2FtZS9TTQpwcmVnbmFuY3kvU00KcHJlZ25hbnQKcHJlaGVhdC9HU0QKcHJlaGVuc2lsZQpwcmVoaXN0b3JpYW4vUwpwcmVoaXN0b3JpYwpwcmVoaXN0b3JpY2FsL1kKcHJlaGlzdG9yeS9NCnByZWh1bWFuCnByZWp1ZGdlL0dEUwpwcmVqdWRnbWVudC9TTQpwcmVqdWRpY2UvTUdEUwpwcmVqdWRpY2VkL1UKcHJlanVkaWNpYWwKcHJla2luZGVyZ2FydGVuL1NNCnByZWxhY3kvTQpwcmVsYXRlL1NNCnByZWxpbS9TTQpwcmVsaW1pbmFyeS9TTQpwcmVsaXRlcmF0ZQpwcmVsdWRlL01TCnByZW1hcml0YWwKcHJlbWF0dXJlL1kKcHJlbWVkL1NNCnByZW1lZGljYWwKcHJlbWVkaXRhdGUvRFNHTgpwcmVtZWRpdGF0ZWQvVQpwcmVtZWRpdGF0aW9uL00KcHJlbWVuc3RydWFsCnByZW1pZXIvU0dNRApwcmVtaWVyZS9NUwpwcmVtaWVyc2hpcC9NUwpwcmVtaXNlL0RTTUcKcHJlbWl1bS9TTQpwcmVtaXgvR0RTCnByZW1vbGFyL1NNCnByZW1vbml0aW9uL01TCnByZW1vbml0b3J5CnByZW5hdGFsL1kKcHJlbnVwL1NNCnByZW51cHRpYWwKcHJlb2NjdXBhdGlvbi9TTQpwcmVvY2N1cHkvRFNHCnByZW9wZXJhdGl2ZQpwcmVvcmRhaW4vR0RTCnByZXAvTVMKcHJlcGFja2FnZS9EU0cKcHJlcGFja2VkCnByZXBhaWQKcHJlcGFyYXRpb24vU00KcHJlcGFyYXRvcnkKcHJlcGFyZS9HRFMKcHJlcGFyZWQvVVAKcHJlcGFyZWRuZXNzL1VNCnByZXBheS9HU0wKcHJlcGF5bWVudC9NUwpwcmVwb25kZXJhbmNlL1NNCnByZXBvbmRlcmFudC9ZCnByZXBvbmRlcmF0ZS9HRFMKcHJlcG9zaXRpb24vU00KcHJlcG9zaXRpb25hbC9ZCnByZXBvc3Nlc3MvR0RTCnByZXBvc3Nlc3NpbmcvVQpwcmVwb3NzZXNzaW9uL1NNCnByZXBvc3Rlcm91cy9ZCnByZXBwZWQKcHJlcHBpbmcKcHJlcHB5L1RSU00KcHJlcHViZXNjZW5jZS9NCnByZXB1YmVzY2VudC9TTQpwcmVwdWNlL01TCnByZXF1ZWwvTVMKcHJlcmVjb3JkL0dTRApwcmVyZWdpc3Rlci9TR0QKcHJlcmVnaXN0cmF0aW9uL00KcHJlcmVxdWlzaXRlL01TCnByZXJvZ2F0aXZlL1NNCnByZXMKcHJlc2FnZS9NR0RTCnByZXNieW9waWEvTQpwcmVzYnl0ZXIvU00KcHJlc2J5dGVyeS9TTQpwcmVzY2hvb2wvU1pNUgpwcmVzY2hvb2xlci9NCnByZXNjaWVuY2UvTQpwcmVzY2llbnQvWQpwcmVzY3JpYmUvRFNHCnByZXNjcmlwdC9TVk0KcHJlc2NyaXB0aW9uL1NNCnByZXNjcmlwdGl2ZS9ZCnByZXNlYXNvbi9TTQpwcmVzZW5jZS9TTQpwcmVzZW50L0xNRFJZWkdTQgpwcmVzZW50YWJseQpwcmVzZW50YXRpb24vQVNNCnByZXNlbnRlci9NCnByZXNlbnRpbWVudC9TTQpwcmVzZW50bWVudC9TTQpwcmVzZXJ2YXRpb24vTQpwcmVzZXJ2YXRpb25pc3QvU00KcHJlc2VydmF0aXZlL1NNCnByZXNlcnZlL0JEUlNNWkcKcHJlc2VydmVyL00KcHJlc2V0L1MKcHJlc2V0dGluZwpwcmVzaHJhbmsKcHJlc2hyaW5rL0dTCnByZXNocnVuawpwcmVzaWRlL0dEUwpwcmVzaWRlbmN5L1NNCnByZXNpZGVudC9NUwpwcmVzaWRlbnRpYWwKcHJlc2lkaXVtL00KcHJlc29ydC9ER1MKcHJlc3MncwpwcmVzcy9BQ0dTRApwcmVzc2VkL1UKcHJlc3Nlci9NUwpwcmVzc2llL1MKcHJlc3NpbmcvU01ZCnByZXNzbWFuL00KcHJlc3NtZW4KcHJlc3N1cmUvRFNNRwpwcmVzc3VyaXphdGlvbi9NCnByZXNzdXJpemUvQ0dEUwpwcmVzc3VyaXplci9TTQpwcmVzdGlkaWdpdGF0aW9uL00KcHJlc3RpZ2UvTQpwcmVzdGlnaW91cwpwcmVzdG8vU00KcHJlc3VtYWJseQpwcmVzdW1lL0dEU0IKcHJlc3VtcHRpb24vU00KcHJlc3VtcHRpdmUKcHJlc3VtcHR1b3VzL1lQCnByZXN1bXB0dW91c25lc3MvTQpwcmVzdXBwb3NlL0RTRwpwcmVzdXBwb3NpdGlvbi9NUwpwcmV0YXgKcHJldGVlbi9NUwpwcmV0ZW5kL0RSWkdTCnByZXRlbmRlci9NCnByZXRlbnNlL1NYTU4KcHJldGVuc2lvbi9NCnByZXRlbnRpb3VzL1VZCnByZXRlbnRpb3VzbmVzcy9NCnByZXRlcml0L1NNCnByZXRlcm0KcHJldGVybmF0dXJhbC9ZCnByZXRlc3QvREdTCnByZXRleHQvTVMKcHJldHJpYWwvUwpwcmV0dGlmeS9HRFMKcHJldHRpbHkKcHJldHRpbmVzcy9NCnByZXR0eS9UR0RSU01QCnByZXR6ZWwvTVMKcHJldmFpbC9ER1MKcHJldmFsZW5jZS9NCnByZXZhbGVudApwcmV2YXJpY2F0ZS9EU0dOWApwcmV2YXJpY2F0aW9uL00KcHJldmFyaWNhdG9yL1NNCnByZXZlbnQvREJTR1YKcHJldmVudGFibGUvVQpwcmV2ZW50YXRpdmUvTVMKcHJldmVudGlvbi9NCnByZXZlbnRpdmUvU00KcHJldmlldy9NRFJTWkcKcHJldmlvdXMvWQpwcmV2aXNpb24vTVMKcHJld2FyCnByZXkvR01EUwpwcmV6emllL1MKcHJpYXBpYwpwcmljZSdzCnByaWNlL0FHRFMKcHJpY2VsZXNzCnByaWNleQpwcmljaWVyCnByaWNpZXN0CnByaWNrL01EUllTWkcKcHJpY2tlci9NCnByaWNrbGUvTUdEUwpwcmlja2xpbmVzcy9NCnByaWNrbHkvUFJUCnByaWRlL01HRFMKcHJpZGVmdWwvWQpwcmllci9NCnByaWVzdC9TTVkKcHJpZXN0ZXNzL01TCnByaWVzdGhvb2QvU00KcHJpZXN0bGluZXNzL00KcHJpZXN0bHkvUlRQCnByaWcvTVMKcHJpZ2dpc2gvUApwcmlnZ2lzaG5lc3MvTQpwcmltL1pHRFJZUApwcmltYWN5L00KcHJpbWFsCnByaW1hcmlseQpwcmltYXJ5L1NNCnByaW1hdGUvTVMKcHJpbWUvTVMKcHJpbWVyL00KcHJpbWV2YWwKcHJpbWluZy9NCnByaW1pdGl2ZS9TUE1ZCnByaW1pdGl2ZW5lc3MvTQpwcmltbWVyCnByaW1tZXN0CnByaW1uZXNzL00KcHJpbW9nZW5pdG9yL1NNCnByaW1vZ2VuaXR1cmUvTQpwcmltb3JkaWFsL1kKcHJpbXAvRFNHCnByaW1yb3NlL1NNCnByaW11bGEvUwpwcmluY2UvU01ZCnByaW5jZWRvbS9TTQpwcmluY2VsaW5lc3MvTQpwcmluY2VseS9QUlQKcHJpbmNlc3MvTVMKcHJpbmNpcGFsL1NNWQpwcmluY2lwYWxpdHkvU00KcHJpbmNpcGxlL0RTTQpwcmluY2lwbGVkL1UKcHJpbnQvQU1EU0cKcHJpbnRhYmxlL1UKcHJpbnRlci9NUwpwcmludGluZy9TTQpwcmludG1ha2luZwpwcmludG91dC9TTQpwcmlvbi9TCnByaW9yL01TCnByaW9yZXNzL01TCnByaW9yaXRpemF0aW9uCnByaW9yaXRpemUvRFNHCnByaW9yaXR5L1NNCnByaW9yeS9TTQpwcmlzbS9NUwpwcmlzbWF0aWMKcHJpc29uL1NaTVIKcHJpc29uZXIvTQpwcmlzc2lseQpwcmlzc2luZXNzL00KcHJpc3N5L1BUUgpwcmlzdGluZQpwcml0aGVlCnByaXZhY3kvTQpwcml2YXRlL1hNWVROUlMKcHJpdmF0ZWVyL1NNCnByaXZhdGlvbi9DU00KcHJpdmF0aXphdGlvbi9TTQpwcml2YXRpemUvRFNHCnByaXZldC9TTQpwcml2aWxlZ2UvRFNNRwpwcml2aWxlZ2VkL1UKcHJpdmlseQpwcml2eS9SU01UCnByaXplL01HRFMKcHJpemVkL0EKcHJpemVmaWdodC9aR1NNUgpwcml6ZWZpZ2h0ZXIvTQpwcml6ZWZpZ2h0aW5nL00KcHJpemV3aW5uZXIvTVMKcHJpemV3aW5uaW5nCnByby9TTQpwcm9iYWJpbGlzdGljCnByb2JhYmlsaXR5L1NNCnByb2JhYmxlL1NNCnByb2JhYmx5CnByb2JhdGUvTU4KcHJvYmF0aW9uL1pNUgpwcm9iYXRpb25hbApwcm9iYXRpb25hcnkKcHJvYmF0aW9uZXIvTQpwcm9iZS9NR0RTQkoKcHJvYml0eS9NCnByb2JsZW0vTVMKcHJvYmxlbWF0aWMKcHJvYmxlbWF0aWNhbC9ZCnByb2Jvc2Nlcwpwcm9ib3NjaXMvTVMKcHJvY2FpbmUvTQpwcm9jZWR1cmFsCnByb2NlZHVyZS9TTQpwcm9jZWVkL0dKRFMKcHJvY2VlZGluZy9NCnByb2NlZWRzL00KcHJvY2VzcydzCnByb2Nlc3MvQUdEUwpwcm9jZXNzZWQvVQpwcm9jZXNzaW9uL0dECnByb2Nlc3Npb25hbC9NUwpwcm9jZXNzb3IvU00KcHJvY2xhbWF0aW9uL01TCnByb2NsaXZpdHkvU00KcHJvY3Jhc3RpbmF0ZS9EU0dOCnByb2NyYXN0aW5hdGlvbi9NCnByb2NyYXN0aW5hdG9yL01TCnByb2NyZWF0ZS9WCnByb2N0b3IvR01EUwpwcm9jdXJlbWVudC9NCnByb2QvTVMKcHJvZGlnYWwvTVlTCnByb2RpZ2FsaXR5L00KcHJvZGlnaW91cy9ZCnByb2RpZ3kvU00KcHJvZHVjZSdzCnByb2R1Y2UvQVpHRFJTCnByb2R1Y2VyL0FNCnByb2R1Y2libGUvQQpwcm9kdWN0aW9uL0FTTQpwcm9kdWN0aXZlL1VZCnByb2R1Y3RpdmVuZXNzL00KcHJvZHVjdGl2aXR5L00KcHJvZi9NUwpwcm9mYW5hdGlvbi9NUwpwcm9mYW5lL1BZR0RTCnByb2ZhbmVuZXNzL00KcHJvZmFuaXR5L1NNCnByb2Zlc3NlZC9ZCnByb2Zlc3Npb24vU00KcHJvZmVzc2lvbmFsL01ZUwpwcm9mZXNzaW9uYWxpc20vTQpwcm9mZXNzaW9uYWxpemF0aW9uCnByb2Zlc3Npb25hbGl6ZS9EU0cKcHJvZmVzc29yL1NNCnByb2Zlc3NvcmlhbC9ZCnByb2Zlc3NvcnNoaXAvU00KcHJvZmZlci9HTURTCnByb2ZpY2llbmN5L00KcHJvZmljaWVudC9NWVMKcHJvZml0L0JHRApwcm9maXRhYmlsaXR5L00KcHJvZml0YWJsZS9VCnByb2ZpdGFibHkvVQpwcm9maXRlZXIvTURHUwpwcm9maXRlZXJpbmcvTQpwcm9maXRlcm9sZS9TTQpwcm9maXRsZXNzCnByb2ZsaWdhY3kvTQpwcm9mbGlnYXRlL1NNWQpwcm9mb3JtYQpwcm9mb3VuZC9SWVRQCnByb2ZvdW5kbmVzcy9NCnByb2Z1bmRpdHkvU00KcHJvZnVzZS9QWQpwcm9mdXNlbmVzcy9NCnByb2dlbml0b3IvU00KcHJvZ2VueS9NCnByb2dlc3Rlcm9uZS9NCnByb2dlc3Rpbi9TCnByb2duYXRob3VzCnByb2dub3Nlcwpwcm9nbm9zaXMvTQpwcm9nbm9zdGljL01TCnByb2dub3N0aWNhdGUvWEdORFMKcHJvZ25vc3RpY2F0aW9uL00KcHJvZ25vc3RpY2F0b3IvTVMKcHJvZ3JhbS9DQVMKcHJvZ3JhbW1hYmxlL01TCnByb2dyYW1tYXRpYwpwcm9ncmFtbWVkL0FDCnByb2dyYW1tZXIvTVMKcHJvZ3JhbW1pbmcvU00KcHJvZ3Jlc3MvTURTR1YKcHJvZ3Jlc3Npb24vTVMKcHJvZ3Jlc3NpdmUvUE1ZUwpwcm9ncmVzc2l2ZW5lc3MvTQpwcm9oaWJpdC9ER1ZTCnByb2hpYml0aW9uL1NNCnByb2hpYml0aW9uaXN0L01TCnByb2hpYml0aXZlL1kKcHJvaGliaXRvcnkKcHJvamVjdC9HTURTCnByb2plY3RpbGUvU00KcHJvamVjdGlvbi9TTQpwcm9qZWN0aW9uaXN0L1NNCnByb2plY3Rvci9NUwpwcm9rYXJ5b3RpYwpwcm9sZS9TCnByb2xldGFyaWFuL01TCnByb2xldGFyaWF0L00KcHJvbGlmZXJhdGUvRFNHTgpwcm9saWZlcmF0aW9uL00KcHJvbGlmaWMKcHJvbGlmaWNhbGx5CnByb2xpeC9ZCnByb2xpeGl0eS9NCnByb2xvZ3VlL1NNCnByb2xvbmdhdGlvbi9TTQpwcm9tL00KcHJvbWVuYWRlL01HRFMKcHJvbWV0aGl1bS9NCnByb21pbmVuY2UvTQpwcm9taW5lbnQvWQpwcm9taXNjdWl0eS9NCnByb21pc2N1b3VzL1kKcHJvbWlzZS9EU01HCnByb21pc2luZy9ZCnByb21pc3NvcnkKcHJvbW8vTQpwcm9tb250b3J5L1NNCnByb21vdGUvRFJaRwpwcm9tb3Rlci9NCnByb21vdGlvbmFsCnByb21wdC9KUFNNRFJZWlRHCnByb21wdGVkL1UKcHJvbXB0ZXIvTQpwcm9tcHRpbmcvTQpwcm9tcHRpdHVkZS9NCnByb21wdG5lc3MvTQpwcm9tdWxnYXRlL0dORFMKcHJvbXVsZ2F0aW9uL00KcHJvbXVsZ2F0b3IvTVMKcHJvbmUvUApwcm9uZW5lc3MvTQpwcm9uZy9NRFMKcHJvbmdob3JuL01TCnByb25vbWluYWwvTQpwcm9ub3VuY2UvRFNMRwpwcm9ub3VuY2VhYmxlL1UKcHJvbm91bmNlbWVudC9TTQpwcm9udG8KcHJvbnVuY2lhdGlvbi9NUwpwcm9vZi9BREdTTQpwcm9vZnJlYWQvU1JaRwpwcm9vZnJlYWRlci9NCnByb3AvTVMKcHJvcGFnYW5kYS9NCnByb3BhZ2FuZGlzdC9NUwpwcm9wYWdhbmRpemUvR0RTCnByb3BhZ2F0ZS9EU0dOCnByb3BhZ2F0aW9uL00KcHJvcGFnYXRvci9TTQpwcm9wZWwvUwpwcm9wZWxsYW50L01TCnByb3BlbGxlZApwcm9wZWxsZXIvU00KcHJvcGVsbGluZwpwcm9wZW5zaXR5L1NNCnByb3Blci9NUllUCnByb3BlcnR5L0RTTQpwcm9waGVjeS9TTQpwcm9waGVzaWVyL00KcHJvcGhlc3kvRFJTTVpHCnByb3BoZXQvU00KcHJvcGhldGVzcy9NUwpwcm9waGV0aWMKcHJvcGhldGljYWwvWQpwcm9waHlsYWN0aWMvU00KcHJvcGh5bGF4ZXMKcHJvcGh5bGF4aXMvTQpwcm9waW5xdWl0eS9NCnByb3BpdGlhdGUvRFNHTgpwcm9waXRpYXRpb24vTQpwcm9waXRpYXRvcnkKcHJvcGl0aW91cy9ZCnByb3BvbmVudC9TTQpwcm9wb3J0aW9uL0VTTQpwcm9wb3J0aW9uYWwvWVMKcHJvcG9ydGlvbmFsaXR5CnByb3BvcnRpb25hdGUvRVkKcHJvcG9zYWwvTVMKcHJvcHBlZApwcm9wcGluZwpwcm9wcmlldGFyeS9TTQpwcm9wcmlldGllcy9NCnByb3ByaWV0b3IvU00KcHJvcHJpZXRvcmlhbC9ZCnByb3ByaWV0b3JzaGlwL00KcHJvcHJpZXRyZXNzL01TCnByb3ByaWV0eS9TTQpwcm9wdWxzaW9uL00KcHJvcHVsc2l2ZQpwcm9yYXRlL0RTRwpwcm9yb2dhdGlvbi9NCnByb3JvZ3VlL0dECnByb3NhaWMKcHJvc2FpY2FsbHkKcHJvc2Nlbml1bS9TTQpwcm9zY2l1dHRvL00KcHJvc2NyaWJlL0RHCnByb3NjcmlwdGlvbi9NUwpwcm9zZS9NCnByb3NlY3V0ZS9EU1hHTgpwcm9zZWN1dGlvbi9NCnByb3NlY3V0b3IvTVMKcHJvc2VseXRlL0RTTUcKcHJvc2VseXRpc20vTQpwcm9zZWx5dGl6ZS9EUlNaRwpwcm9zZWx5dGl6ZXIvTQpwcm9zb2R5L1NNCnByb3NwZWN0L01ER1ZTCnByb3NwZWN0aXZlL1kKcHJvc3BlY3Rvci9TTQpwcm9zcGVjdHVzL01TCnByb3NwZXIvR1NECnByb3NwZXJpdHkvTQpwcm9zcGVyb3VzL1kKcHJvc3RhdGUvTVMKcHJvc3RoZXNlcwpwcm9zdGhlc2lzL00KcHJvc3RoZXRpYwpwcm9zdGl0dXRlL01HTkRTCnByb3N0aXR1dGlvbi9NCnByb3N0cmF0ZS9HTlhEUwpwcm9zdHJhdGlvbi9NCnByb3N5L1JUCnByb3RhY3Rpbml1bS9NCnByb3RhZ29uaXN0L1NNCnByb3RlYW4KcHJvdGVjdC9HVlNECnByb3RlY3RlZC9VCnByb3RlY3Rpb24vU00KcHJvdGVjdGlvbmlzbS9NCnByb3RlY3Rpb25pc3QvTVMKcHJvdGVjdGl2ZS9QWQpwcm90ZWN0aXZlbmVzcy9NCnByb3RlY3Rvci9NUwpwcm90ZWN0b3JhdGUvTVMKcHJvdGVnZS9TTQpwcm90ZWdlZS9TCnByb3RlaW4vU00KcHJvdGVzdGFudC9TCnByb3Rlc3RhdGlvbi9NUwpwcm90b2NvbC9NUwpwcm90b24vU00KcHJvdG9wbGFzbS9NCnByb3RvcGxhc21pYwpwcm90b3R5cGUvTUdTCnByb3RvdHlwaWNhbApwcm90b3pvYQpwcm90b3pvYW4vTVMKcHJvdG96b2ljCnByb3RyYWN0L0dECnByb3RydWRlL0dEUwpwcm90cnVzaWxlCnByb3RydXNpb24vTVMKcHJvdHViZXJhbmNlL01TCnByb3R1YmVyYW50CnByb3VkL1JZVApwcm92L05CCnByb3ZhYmlsaXR5L00KcHJvdmFibHkKcHJvdmUvRUFHRFMKcHJvdmVkL1UKcHJvdmVuL1UKcHJvdmVuYW5jZS9TTQpwcm92ZW5kZXIvTQpwcm92ZW5pZW5jZS9NCnByb3ZlcmJpYWwvWQpwcm92aWRlL0RSU1pHCnByb3ZpZGVkL1UKcHJvdmlkZW5jZS9NCnByb3ZpZGVudC9ZCnByb3ZpZGVudGlhbC9ZCnByb3ZpZGVyL00KcHJvdmluY2UvTVMKcHJvdmluY2lhbC9TTVkKcHJvdmluY2lhbGlzbS9NCnByb3Zpc2lvbmFsL1kKcHJvdmlzby9TTQpwcm92b2NhdGV1ci9TCnByb3ZvY2F0aXZlL1BZCnByb3ZvY2F0aXZlbmVzcy9NCnByb3Zva2UvRFJTWkcKcHJvdm9rZWQvVQpwcm92b2tlci9NCnByb3Zva2luZy9ZCnByb3ZvbG9uZS9NCnByb3Zvc3QvU00KcHJvdy9NUwpwcm93ZXNzL00KcHJvd2wvTURSU1pHCnByb3dsZXIvTQpwcm94aW1hbApwcm94aW1hdGUKcHJveGltaXR5L00KcHJveHkvU00KcHJ1ZGUvTVMKcHJ1ZGVuY2UvTQpwcnVkZW50L1kKcHJ1ZGVudGlhbC9ZCnBydWRlcnkvTQpwcnVkaXNoL1lQCnBydWRpc2huZXNzL00KcHJ1bmUvTVpHRFJTCnBydW5lci9NCnBydXJpZW5jZS9NCnBydXJpZW50L1kKcHJ5L1pUR0RSU00KcHNhbG0vTVMKcHNhbG1pc3QvU00KcHNhbHRlcnkvU00KcHNlcGhvbG9naXN0L1MKcHNlcGhvbG9neQpwc2V1ZC9TCnBzZXVkby9TCnBzZXVkb255bS9TTQpwc2V1ZG9ueW1vdXMKcHNldWRvc2NpZW5jZS9NUwpwc2V1ZHkKcHNoYXcvTVMKcHNpL1NNCnBzaXR0YWNvc2lzL00KcHNvcmlhc2lzL00KcHNzdApwc3ljaC9NRFNHCnBzeWNoZS9NCnBzeWNoZWRlbGlhCnBzeWNoZWRlbGljL1NNCnBzeWNoZWRlbGljYWxseQpwc3ljaGlhdHJpYwpwc3ljaGlhdHJpc3QvU00KcHN5Y2hpYXRyeS9NCnBzeWNoaWMvTVMKcHN5Y2hpY2FsL1kKcHN5Y2hvL1NNCnBzeWNob2FjdGl2ZQpwc3ljaG9hbmFseXNlcwpwc3ljaG9hbmFseXNpcy9NCnBzeWNob2FuYWx5c3QvU00KcHN5Y2hvYW5hbHl0aWMKcHN5Y2hvYW5hbHl0aWNhbC9ZCnBzeWNob2FuYWx5emUvRFNHCnBzeWNob2JhYmJsZS9NCnBzeWNob2RyYW1hL01TCnBzeWNob2dlbmljCnBzeWNob2tpbmVzaXMKcHN5Y2hva2luZXRpYwpwc3ljaG9sb2dpY2FsL1kKcHN5Y2hvbG9naXN0L01TCnBzeWNob2xvZ3kvU00KcHN5Y2hvbWV0cmljCnBzeWNob25ldXJvc2VzCnBzeWNob25ldXJvc2lzL00KcHN5Y2hvcGF0aC9NCnBzeWNob3BhdGhpYwpwc3ljaG9wYXRob2xvZ3kKcHN5Y2hvcGF0aHMKcHN5Y2hvcGF0aHkvTQpwc3ljaG9waGFybWFjb2xvZ3kKcHN5Y2hvcy9TCnBzeWNob3Npcy9NCnBzeWNob3NvbWF0aWMKcHN5Y2hvdGhlcmFwaXN0L01TCnBzeWNob3RoZXJhcHkvU00KcHN5Y2hvdGljL1NNCnBzeWNob3RpY2FsbHkKcHN5Y2hvdHJvcGljL01TCnBzeWNocwpwdC9DCnB0YXJtaWdhbi9NUwpwdGVyb2RhY3R5bC9NUwpwdG9tYWluZS9TTQpwdWIvU00KcHViZXJ0YWwKcHViZXJ0eS9NCnB1YmVzL00KcHViZXNjZW5jZS9NCnB1YmVzY2VudApwdWJpYwpwdWJpcy9NCnB1YmxpYy9BTQpwdWJsaWNhbi9BTVMKcHVibGljYXRpb24vQVNNCnB1YmxpY2lzdC9NUwpwdWJsaWNpdHkvTQpwdWJsaWNpemUvR0RTCnB1YmxpY2x5CnB1Ymxpc2gvQUdEUwpwdWJsaXNoYWJsZQpwdWJsaXNoZWQvVQpwdWJsaXNoZXIvTVMKcHVibGlzaGluZy9NCnB1Y2UvTQpwdWNrL1pNUlMKcHVja2VyL01ERwpwdWNraXNoL1lQCnB1Y2tpc2huZXNzL00KcHVkL1MKcHVkZGluZy9TTQpwdWRkbGUvRFNNRwpwdWRkbGluZy9NCnB1ZGVuZGEKcHVkZW5kdW0vTQpwdWRnaW5lc3MvTQpwdWRneS9QUlQKcHVlYmxvL1NNCnB1ZXJpbGUKcHVlcmlsaXR5L00KcHVlcnBlcmFsCnB1ZmYvWkdNRFJTCnB1ZmZiYWxsL1NNCnB1ZmZlci9NCnB1ZmZpbi9TTQpwdWZmaW5lc3MvTQpwdWZmeS9QUlQKcHVnL1NNCnB1Z2lsaXNtL00KcHVnaWxpc3QvU00KcHVnaWxpc3RpYwpwdWduYWNpb3VzL1lQCnB1Z25hY2lvdXNuZXNzL00KcHVnbmFjaXR5L00KcHVrZS9NR0RTCnB1a2thCnB1bGNocml0dWRlL00KcHVsY2hyaXR1ZGlub3VzCnB1bGUvR0RTCnB1bGwvWkdNRFJTCnB1bGxiYWNrL01TCnB1bGxlci9NCnB1bGxldC9TTQpwdWxsZXkvU00KcHVsbG91dC9NUwpwdWxsb3Zlci9TTQpwdWxtb25hcnkKcHVscC9HTURTCnB1bHBpbmVzcy9NCnB1bHBpdC9TTQpwdWxwd29vZC9NCnB1bHB5L1JQVApwdWxzYXIvU00KcHVsc2F0ZS9YR05EUwpwdWxzYXRpb24vTQpwdWxzZS9BTUdEUwpwdWx2ZXJpemF0aW9uL00KcHVsdmVyaXplL0RTRwpwdW1hL01TCnB1bWljZS9TTQpwdW1tZWwvU0dECnB1bXAvWkdNRFJTCnB1bXBlci9NCnB1bXBlcm5pY2tlbC9NCnB1bXBraW4vTVMKcHVuL1NNCnB1bmNoL01EUlNaRwpwdW5jaGJhZy9TCnB1bmNoZW9uL01TCnB1bmNoZXIvTQpwdW5jaGxpbmUvUwpwdW5jaHkvVFIKcHVuY3RpbGlvL00KcHVuY3RpbGlvdXMvUFkKcHVuY3RpbGlvdXNuZXNzL00KcHVuY3R1YWwvWQpwdW5jdHVhbGl0eS9NCnB1bmN0dWF0ZS9HTkRTCnB1bmN0dWF0aW9uL00KcHVuY3R1cmUvRFNNRwpwdW5kaXQvU00KcHVuZGl0cnkvTQpwdW5nZW5jeS9NCnB1bmdlbnQvWQpwdW5pbmVzcy9NCnB1bmlzaC9CTEdEUwpwdW5pc2hlZC9VCnB1bmlzaGluZy9ZCnB1bmlzaG1lbnQvTVMKcHVuaXRpdmUvWQpwdW5rL1RNUlMKcHVubmVkCnB1bm5ldC9TCnB1bm5pbmcKcHVuc3Rlci9TTQpwdW50L1pHTURSUwpwdW50ZXIvTQpwdW55L1RSUApwdXAvU00KcHVwYS9NCnB1cGFlCnB1cGFsCnB1cGF0ZS9EU0cKcHVwaWwvTVMKcHVwcGVkCnB1cHBldC9NUwpwdXBwZXRlZXIvU00KcHVwcGV0cnkvTQpwdXBwaW5nCnB1cHB5L1NNCnB1cmJsaW5kCnB1cmNoYXNlL0RSU01aR0IKcHVyY2hhc2VyL00KcHVyZGFoL00KcHVyZS9QWVRSCnB1cmVicmVkL1NNCnB1cmVlL01EUwpwdXJlZWluZwpwdXJlbmVzcy9NCnB1cmdhdGl2ZS9TTQpwdXJnYXRvcmlhbApwdXJnYXRvcnkvU00KcHVyZ2UvTVpHRFJTCnB1cmdlci9NCnB1cmlmaWNhdGlvbi9NCnB1cmlmaWVyL00KcHVyaWZ5L05EUlNaRwpwdXJpbmUvTVMKcHVyaXNtL00KcHVyaXN0L01TCnB1cmlzdGljCnB1cml0YW4vU00KcHVyaXRhbmljYWwvWQpwdXJpdGFuaXNtL00KcHVyaXR5L00KcHVybC9HTURTCnB1cmxpZXUvU00KcHVybG9pbi9TR0QKcHVycGxlL01UUlMKcHVycGxpc2gKcHVycG9ydC9TTURHCnB1cnBvcnRlZC9ZCnB1cnBvc2UvRFNNWUcKcHVycG9zZWZ1bC9ZUApwdXJwb3NlZnVsbmVzcy9NCnB1cnBvc2VsZXNzL1BZCnB1cnIvR01EUwpwdXJzZS9NWkdEUlMKcHVyc2VyL00KcHVyc3VhbmNlL00KcHVyc3VhbnQKcHVyc3VlL1pHRFJTCnB1cnN1ZXIvTQpwdXJzdWl0L1NNCnB1cnVsZW5jZS9NCnB1cnVsZW50CnB1cnZleS9EU0cKcHVydmV5YW5jZS9NCnB1cnZleW9yL1NNCnB1cnZpZXcvTQpwdXMvTQpwdXNoL1pHTURSUwpwdXNoYmlrZS9TCnB1c2hjYXJ0L1NNCnB1c2hjaGFpci9TCnB1c2hlci9NCnB1c2hpbHkKcHVzaGluZXNzL00KcHVzaG92ZXIvTVMKcHVzaHBpbi9TCnB1c2h5L1RSUApwdXNpbGxhbmltaXR5L00KcHVzaWxsYW5pbW91cy9ZCnB1c3MvTVMKcHVzc3kvVFJTTQpwdXNzeWNhdC9NUwpwdXNzeWZvb3QvRFNHCnB1c3R1bGFyCnB1c3R1bGUvU00KcHV0L0lTTQpwdXRhdGl2ZQpwdXRvdXQvTVMKcHV0cmVmYWN0aW9uL00KcHV0cmVmYWN0aXZlCnB1dHJlZnkvR0RTCnB1dHJlc2NlbmNlL00KcHV0cmVzY2VudApwdXRyaWQKcHV0c2NoL01TCnB1dHQvWkdNRFJTCnB1dHRlZC9JCnB1dHRlZS9NUwpwdXR0ZXIvTURSWkcKcHV0dGVyZXIvTQpwdXR0aW5nL0kKcHV0dHkvR0RTTQpwdXR6L1MKcHV6emxlL01aR0RSU0wKcHV6emxlbWVudC9NCnB1enpsZXIvTQpwdnQKcHduL1NHRApweWVsb25lcGhyaXRpcwpweWdteS9TTQpweWxvbi9TTQpweWxvcmkKcHlsb3JpYwpweWxvcnVzL00KcHlvcnJoZWEvTQpweXJhbWlkL0dTTUQKcHlyYW1pZGFsCnB5cmUvTVMKcHlyaW1pZGluZS9NUwpweXJpdGUvU00KcHlyaXRlcy9NCnB5cm9tYW5pYS9NCnB5cm9tYW5pYWMvU00KcHlyb3RlY2huaWMvUwpweXJvdGVjaG5pY2FsCnB5cm90ZWNobmljcy9NCnB5cnV2YXRlCnB5dGhvbi9TTQpweXgvTVMKcHphenoKcQpxcgpxdC9TCnF0eQpxdWEKcXVhY2svR01EUwpxdWFja2VyeS9NCnF1YWQvTVMKcXVhZHJhbmdsZS9TTQpxdWFkcmFuZ3VsYXIKcXVhZHJhbnQvTVMKcXVhZHJhcGhvbmljCnF1YWRyYXRpYy9NUwpxdWFkcmF0dXJlCnF1YWRyZW5uaWFsCnF1YWRyZW5uaXVtL01TCnF1YWRyaWNlcHMvTVMKcXVhZHJpbGF0ZXJhbC9TTQpxdWFkcmlsbGUvWE1OUwpxdWFkcmlsbGlvbi9NCnF1YWRyaXBsZWdpYS9NCnF1YWRyaXBsZWdpYy9TTQpxdWFkcml2aXVtL00KcXVhZHJ1cGVkL01TCnF1YWRydXBlZGFsCnF1YWRydXBsZS9NR0RTCnF1YWRydXBsZXQvTVMKcXVhZHJ1cGxpY2F0ZS9NR05EUwpxdWFkcnVwbGljYXRpb24vTQpxdWFmZi9HTURTCnF1YWdtaXJlL1NNCnF1YWhvZy9NUwpxdWFpbC9HTURTCnF1YWludC9QUllUCnF1YWludG5lc3MvTQpxdWFrZS9NR0RTCnF1YWt5CnF1YWxpZmljYXRpb24vRU0KcXVhbGlmaWVkL1UKcXVhbGlmaWVyL1NNCnF1YWxpZnkvRUdYTkRTCnF1YWxpdGF0aXZlL1kKcXVhbGl0eS9TTQpxdWFsbS9NUwpxdWFsbWlzaApxdWFuZGFyeS9TTQpxdWFuZ28vUwpxdWFudGEKcXVhbnRpZmlhYmxlCnF1YW50aWZpY2F0aW9uL00KcXVhbnRpZmllci9NCnF1YW50aWZ5L05EUlNaRwpxdWFudGl0YXRpdmUvWQpxdWFudGl0eS9TTQpxdWFudHVtL00KcXVhcmFudGluZS9NR0RTCnF1YXJrL01TCnF1YXJyZWwvU1pHTURSCnF1YXJyZWxlci9NCnF1YXJyZWxzb21lL1AKcXVhcnJlbHNvbWVuZXNzL00KcXVhcnJ5L0RTTUcKcXVhcnQvTVMKcXVhcnRlci9TR01EWQpxdWFydGVyYmFjay9HTURTCnF1YXJ0ZXJkZWNrL01TCnF1YXJ0ZXJmaW5hbC9TTQpxdWFydGVybHkvU00KcXVhcnRlcm1hc3Rlci9NUwpxdWFydGVyc3RhZmYvTQpxdWFydGVyc3RhdmVzCnF1YXJ0ZXQvU00KcXVhcnRvL01TCnF1YXJ0ei9NCnF1YXNhci9NUwpxdWFzaC9HRFMKcXVhc2kKcXVhdHJhaW4vTVMKcXVhdmVyL01EU0cKcXVhdmVyeQpxdWF5L01TCnF1YXlzaWRlL1MKcXVlYXNpbHkKcXVlYXNpbmVzcy9NCnF1ZWFzeS9UUFIKcXVlZW4vR01EWVMKcXVlZW5seS9SVApxdWVlci9QVEdNRFJZUwpxdWVlcm5lc3MvTQpxdWVsbC9HRFMKcXVlbmNoL1pHRFJTQgpxdWVuY2hhYmxlL1UKcXVlbmNoZXIvTQpxdWVuY2hsZXNzCnF1ZXJ1bG91cy9ZUApxdWVydWxvdXNuZXNzL00KcXVlcnkvRFNNRwpxdWVzCnF1ZXNhZGlsbGEvTVMKcXVlc3QvSUZBTVMKcXVlc3RlZApxdWVzdGluZwpxdWVzdGlvbi9TTURSWkdCSgpxdWVzdGlvbmFibGUvVQpxdWVzdGlvbmFibHkvVQpxdWVzdGlvbmVkL1UKcXVlc3Rpb25lci9NCnF1ZXN0aW9uaW5nL01ZCnF1ZXN0aW9ubmFpcmUvU00KcXVldWUvTURTRwpxdWliYmxlL0RSU01aRwpxdWliYmxlci9NCnF1aWNoZS9TTQpxdWljay9NTlJZWFRQCnF1aWNrZW4vREcKcXVpY2tmaXJlCnF1aWNraWUvU00KcXVpY2tsaW1lL00KcXVpY2tuZXNzL00KcXVpY2tzYW5kL01TCnF1aWNrc2lsdmVyL00KcXVpY2tzdGVwL01TCnF1aWQvTVMKcXVpZXNjZW5jZS9NCnF1aWVzY2VudC9ZCnF1aWV0L1NNRE5SWVhUR1AKcXVpZXRlbi9ERwpxdWlldGlzbQpxdWlldG5lc3MvTQpxdWlldHVkZS9JRU0KcXVpZXR1cy9NUwpxdWlmZi9TCnF1aWxsL1NNCnF1aWx0L1NNRFJaRwpxdWlsdGVyL00KcXVpbHRpbmcvTQpxdWluL1MKcXVpbmNlL1NNCnF1aW5lL1MKcXVpbmluZS9NCnF1aW5vYQpxdWluc3kvTQpxdWludC9TTQpxdWludGVzc2VuY2UvU00KcXVpbnRlc3NlbnRpYWwvWQpxdWludGV0L1NNCnF1aW50dXBsZS9NR0RTCnF1aW50dXBsZXQvTVMKcXVpcC9NUwpxdWlwcGVkCnF1aXBwaW5nCnF1aXBzdGVyL1NNCnF1aXJlJ3MKcXVpcmUvSUFTCnF1aXJrL1NNREcKcXVpcmtpbmVzcy9NCnF1aXJreS9SVFAKcXVpcnQvU00KcXVpc2xpbmcvU00KcXVpdC9TCnF1aXRjbGFpbS9NUwpxdWl0ZQpxdWl0dGFuY2UvTQpxdWl0dGVyL1NNCnF1aXR0aW5nCnF1aXZlci9TTURHCnF1aXZlcnkKcXVpeG90aWMKcXVpeG90aWNhbGx5CnF1aXovTQpxdWl6emVkCnF1aXp6ZXIvU00KcXVpenplcwpxdWl6emljYWwvWQpxdWl6emluZwpxdW8vSApxdW9pbi9TTQpxdW9pdC9TTURHCnF1b25kYW0KcXVvcmF0ZS9JCnF1b3J1bS9TTQpxdW90L0IKcXVvdGEvU00KcXVvdGFiaWxpdHkvTQpxdW90YXRpb24vU00KcXVvdGUncwpxdW90ZS9VRFNHCnF1b3RpZGlhbgpxdW90aWVudC9TTQpxd2VydHkKci9TCnJhYmJldC9HTURTCnJhYmJpL1NNCnJhYmJpbmF0ZS9NCnJhYmJpbmljCnJhYmJpbmljYWwKcmFiYml0L0dNRFMKcmFiYmxlL01TCnJhYmlkL1BZCnJhYmlkbmVzcy9NCnJhYmllcy9NCnJhY2Nvb24vTQpyYWNlL01aR0RSUwpyYWNlY291cnNlL1NNCnJhY2Vnb2VyL1MKcmFjZWhvcnNlL01TCnJhY2VtZS9NUwpyYWNlci9NCnJhY2V0cmFjay9NUwpyYWNld2F5L01TCnJhY2lhbC9ZCnJhY2lhbGlzbS9NCnJhY2lhbGlzdC9NUwpyYWNpbHkKcmFjaW5lc3MvTQpyYWNpbmcvTQpyYWNpc20vTQpyYWNpc3QvU00KcmFjay9HTURTCnJhY2tldC9TTURHCnJhY2tldGVlci9TTURHCnJhY2tldGVlcmluZy9NCnJhY29udGV1ci9TTQpyYWNxdWV0YmFsbC9TTQpyYWN5L1BSVApyYWQvU00KcmFkYXIvU00KcmFkYXJzY29wZS9TTQpyYWRkbGVkCnJhZGlhbC9TTVkKcmFkaWFuY2UvTQpyYWRpYW50L1kKcmFkaWF0ZS9EU0dOWApyYWRpYXRpb24vTQpyYWRpYXRvci9TTQpyYWRpY2FsL1NNWQpyYWRpY2FsaXNtL00KcmFkaWNhbGl6YXRpb24vTQpyYWRpY2FsaXplL0RTRwpyYWRpY2NoaW8vTQpyYWRpaQpyYWRpby9NREdTCnJhZGlvYWN0aXZlL1kKcmFkaW9hY3Rpdml0eS9NCnJhZGlvY2FyYm9uL00KcmFkaW9ncmFtL01TCnJhZGlvZ3JhcGhlci9TTQpyYWRpb2dyYXBoeS9NCnJhZGlvaXNvdG9wZS9NUwpyYWRpb2xvZ2lzdC9TTQpyYWRpb2xvZ3kvTQpyYWRpb21hbi9NCnJhZGlvbWVuCnJhZGlvbWV0ZXIvTVMKcmFkaW9tZXRyaWMKcmFkaW9tZXRyeS9NCnJhZGlvcGhvbmUvU00KcmFkaW9zY29weS9NCnJhZGlvc29uZGUvU00KcmFkaW9zdXJnZXJ5CnJhZGlvdGVsZWdyYXBoL00KcmFkaW90ZWxlZ3JhcGhzCnJhZGlvdGVsZWdyYXBoeS9NCnJhZGlvdGVsZXBob25lL01TCnJhZGlvdGhlcmFwaXN0L01TCnJhZGlvdGhlcmFweS9NCnJhZGlzaC9NUwpyYWRpdW0vTQpyYWRpdXMvTQpyYWRvbi9NCnJhZmZpYS9NCnJhZmZpc2gvWVAKcmFmZmlzaG5lc3MvTQpyYWZmbGUvRFNNRwpyYWZ0L1pHTURSUwpyYWZ0ZXIvTQpyYWZ0aW5nL00KcmFnL1NHTUQKcmFnYS9NUwpyYWdhbXVmZmluL01TCnJhZ2JhZy9NCnJhZ2UvTVMKcmFnZ2EKcmFnZ2VkL1JZVFAKcmFnZ2VkbmVzcy9NCnJhZ2dlZHkvUlQKcmFnZ2luZwpyYWdpbmcvWQpyYWdsYW4vU00KcmFnb3V0L1NNCnJhZ3RhZy9TCnJhZ3RpbWUvTQpyYWd3ZWVkL00KcmFnd29ydApyYWgKcmFpZC9aR01EUlMKcmFpZGVyL00KcmFpbCdzCnJhaWwvQ0dEUwpyYWlsY2FyZC9TCnJhaWxpbmcvU00KcmFpbGxlcnkvU00KcmFpbHJvYWQvU1pHTURSCnJhaWxyb2FkZXIvTQpyYWlscm9hZGluZy9NCnJhaWx3YXkvU00KcmFpbHdheW1hbgpyYWlsd2F5bWVuCnJhaW1lbnQvTQpyYWluL0dNRFMKcmFpbmJvdy9TTQpyYWluY29hdC9TTQpyYWluZHJvcC9TTQpyYWluZmFsbC9TTQpyYWlubWFrZXIvU00KcmFpbm1ha2luZy9NCnJhaW5wcm9vZgpyYWluc3Rvcm0vTVMKcmFpbndhdGVyL00KcmFpbnkvUlQKcmFpc2UvTVpHRFJTCnJhaXNlci9NCnJhaXNpbi9TTQpyYWphaC9NCnJhamFocwpyYWtlL01HRFMKcmFraXNoL1lQCnJha2lzaG5lc3MvTQpyYWxseS9EU01HCnJhbS9TTQpyYW1ibGUvRFJTTVpHSgpyYW1ibGVyL00KcmFtYnVuY3Rpb3VzL1BZCnJhbWJ1bmN0aW91c25lc3MvTQpyYW1la2luL1NNCnJhbWllL00KcmFtaWZpY2F0aW9uL00KcmFtaWZ5L0RTWE5HCnJhbWpldC9TTQpyYW1tZWQKcmFtbWluZwpyYW1wL0dNUwpyYW1wYWdlL0RTTUcKcmFtcGFuY3kvTQpyYW1wYW50L1kKcmFtcGFydC9TTQpyYW1yb2QvU00KcmFtcm9kZGVkCnJhbXJvZGRpbmcKcmFtc2hhY2tsZQpyYW4vQQpyYW5jaC9NRFJTWkcKcmFuY2hlci9NCnJhbmNoaW5nL00KcmFuY2lkL1AKcmFuY2lkaXR5L00KcmFuY2lkbmVzcy9NCnJhbmNvci9NCnJhbmNvcm91cy9ZCnJhbmQvTQpyYW5kaW5lc3MvTQpyYW5kb20vUFNZCnJhbmRvbWl6YXRpb24vTQpyYW5kb21pemUvRFNHCnJhbmRvbW5lc3MvTVMKcmFuZHkvUlRQCnJhbmVlL01TCnJhbmcvWlIKcmFuZ2UncwpyYW5nZS9DR0RTCnJhbmdlZmluZGVyL1MKcmFuZ2VyL00KcmFuZ2luZXNzL00KcmFuZ3kvUlRQCnJhbmsvVEdKUE1EUllTCnJhbmtpbmcvTQpyYW5rbGUvRFNHCnJhbmtuZXNzL00KcmFuc2Fjay9TR0QKcmFuc29tL1NaR01EUgpyYW5zb21lci9NCnJhbnNvbXdhcmUKcmFudC9aR01ESlJTCnJhbnRlci9NCnJhcC9TWkdNRFIKcmFwYWNpb3VzL1BZCnJhcGFjaW91c25lc3MvTQpyYXBhY2l0eS9NCnJhcGUvTVMKcmFwZXIvTQpyYXBlc2VlZC9NCnJhcGlkL1BNUllUUwpyYXBpZGl0eS9NCnJhcGlkbmVzcy9NCnJhcGllci9TTQpyYXBpbmUvTQpyYXBpc3QvU00KcmFwcGVkCnJhcHBlbC9TTQpyYXBwZWxsZWQKcmFwcGVsbGluZwpyYXBwZXIvU00KcmFwcGluZwpyYXBwb3J0L01TCnJhcHBvcnRldXIvUwpyYXBwcm9jaGVtZW50L1NNCnJhcHNjYWxsaW9uL01TCnJhcHQvWVAKcmFwdG5lc3MvTQpyYXB0b3IvUwpyYXB0dXJlL01TCnJhcHR1cm91cy9ZCnJhcmUvWVRHUERSUwpyYXJlYml0L01TCnJhcmVmYWN0aW9uL00KcmFyZWZ5L0dEUwpyYXJlbmVzcy9NCnJhcml0eS9TTQpyYXNjYWwvU01ZCnJhc2gvWlRNUlNZUApyYXNoZXIvTQpyYXNobmVzcy9NCnJhc3AvR01EUwpyYXNwYmVycnkvU00KcmFzcHkvUlQKcmFzdGVyCnJhdC9TTQpyYXRhdG91aWxsZS9NCnJhdGJhZy9TCnJhdGNoZXQvR01EUwpyYXRlL0pYTVpHTkRSUwpyYXRlZC9VCnJhdGVwYXllci9TCnJhdGVyL00KcmF0aGVyCnJhdGhza2VsbGVyL1NNCnJhdGlmaWNhdGlvbi9NCnJhdGlmaWVyL00KcmF0aWZ5L05EUlNaRwpyYXRpbmcvTQpyYXRpby9NUwpyYXRpb2NpbmF0ZS9HTkRTCnJhdGlvY2luYXRpb24vTQpyYXRpb24vTURHCnJhdGlvbmFsL1NNWQpyYXRpb25hbGUvTVMKcmF0aW9uYWxpc20vTQpyYXRpb25hbGlzdC9TTQpyYXRpb25hbGlzdGljCnJhdGlvbmFsaXR5L00KcmF0aW9uYWxpemF0aW9uL01TCnJhdGlvbmFsaXplL0RTRwpyYXRsaWtlCnJhdGxpbmUvU00KcmF0dGFuL1NNCnJhdHRlZApyYXR0ZXIvU00KcmF0dGluZwpyYXR0bGUvRFJTTVpHSgpyYXR0bGVicmFpbi9TTUQKcmF0dGxlci9NCnJhdHRsZXNuYWtlL1NNCnJhdHRsZXRyYXAvU00KcmF0dGx5CnJhdHRyYXAvU00KcmF0dHkvUlQKcmF1Y291cy9ZUApyYXVjb3VzbmVzcy9NCnJhdW5jaGlseQpyYXVuY2hpbmVzcy9NCnJhdW5jaHkvVFJQCnJhdmFnZS9EUlNNWkcKcmF2YWdlci9NCnJhdmFnZXMvTQpyYXZlL0pNWkdEUlMKcmF2ZWwncwpyYXZlbC9VRFNHCnJhdmVsaW5nL1MKcmF2ZW4vTURTRwpyYXZlbm91cy9ZCnJhdmluZS9TTQpyYXZpbmcvTQpyYXZpb2xpL1NNCnJhdmlzaC9EUlNaR0wKcmF2aXNoZXIvTQpyYXZpc2hpbmcvWQpyYXZpc2htZW50L00KcmF3L1BUTVIKcmF3Ym9uZWQKcmF3aGlkZS9NCnJhd25lc3MvTQpyYXkvU00KcmF5b24vTQpyYXplL0dEUwpyYXpvci9NUwpyYXpvcmJhY2svTVMKcmF6ei9HTURTCnJhenptYXRhenovTQpyY3B0CnJkCnJlL0RTTVlUR1ZKCnJlYWNoL01EU0dCCnJlYWNoYWJsZS9VCnJlYWNxdWlyZS9EU0cKcmVhY3QvVgpyZWFjdGFudC9TTQpyZWFjdGlvbmFyeS9TTQpyZWFjdGl2aXR5CnJlYWQvWkdNUkJKUwpyZWFkYWJpbGl0eS9TTQpyZWFkZXIvTQpyZWFkZXJzaGlwL1NNCnJlYWRpbHkKcmVhZGluZXNzL00KcmVhZGluZy9NCnJlYWRtaXR0ZWQKcmVhZG91dC9TTQpyZWFkeS9EUlNUR1AKcmVhZmZvcmVzdGF0aW9uCnJlYWwvVE1SWVBTCnJlYWxpc20vTQpyZWFsaXN0L1NNCnJlYWxpc3RpYy9VCnJlYWxpc3RpY2FsbHkvVQpyZWFsaXRpZXMKcmVhbGl0eS9VTQpyZWFsaXphdGlvbi9NUwpyZWFsaXplL0RTQkcKcmVhbGl6ZWQvVQpyZWFsbS9NUwpyZWFsbmVzcy9NCnJlYWxwb2xpdGlrL00KcmVhbHR5L00KcmVhbS9aR01EUlMKcmVhbWVyL00KcmVhcC9aR0RSUwpyZWFwZXIvTQpyZWFyL0dNRFMKcmVhcmd1YXJkL01TCnJlYXJtb3N0CnJlYXJ3YXJkL1MKcmVhc29uL1NNRFJaR0IKcmVhc29uYWJsZS9VUApyZWFzb25hYmxlbmVzcy9VTQpyZWFzb25hYmx5L1UKcmVhc29uZXIvTQpyZWFzb25pbmcvTQpyZWFzc3VyaW5nL1kKcmViYXRlL00KcmViZWwvTVMKcmViZWxsaW9uL01TCnJlYmVsbGlvdXMvWVAKcmViZWxsaW91c25lc3MvTQpyZWJpZC9TCnJlYmlkZGluZwpyZWJpcnRoL00KcmVib2lsL1NERwpyZWJ1aWxkL1NHCnJlYnVrZS9EU01HCnJlYnVraW5nL1kKcmVidXR0YWwvTVMKcmVjJ2QKcmVjL00KcmVjYWxjaXRyYW5jZS9NCnJlY2FsY2l0cmFudApyZWNhbnQvU0RHCnJlY2FudGF0aW9uL1NNCnJlY2FwL01TCnJlY2FwaXRhbGl6YXRpb24KcmVjY2UvUwpyZWNkCnJlY2VpcHQvU01ERwpyZWNlaXZhYmxlcy9NCnJlY2VpdmUvRFJTWkdCCnJlY2VpdmVyL00KcmVjZWl2ZXJzaGlwL00KcmVjZW50L1JZVFAKcmVjZW50bmVzcy9NCnJlY2VwdGFjbGUvU00KcmVjZXB0aW9uL01TCnJlY2VwdGlvbmlzdC9TTQpyZWNlcHRpdmUvUFkKcmVjZXB0aXZlbmVzcy9NCnJlY2VwdGl2aXR5L00KcmVjZXB0b3IvU00KcmVjZXNzL01EU0dWCnJlY2Vzc2lvbmFsL1NNCnJlY2Vzc2lvbmFyeQpyZWNlc3NpdmUvU00KcmVjaGVyY2hlCnJlY2lkaXZpc20vTQpyZWNpZGl2aXN0L1NNCnJlY2lwZS9TTQpyZWNpcGllbnQvU00KcmVjaXByb2NhbC9TTVkKcmVjaXByb2NhdGUvR05EUwpyZWNpcHJvY2F0aW9uL00KcmVjaXByb2NpdHkvTQpyZWNpdGFsL1NNCnJlY2l0YWxpc3QvTVMKcmVjaXRhdGl2ZS9NUwpyZWNpdGVyL1NNCnJlY2tsZXNzL1lQCnJlY2tsZXNzbmVzcy9NCnJlY2tvbi9TSkRHCnJlY2tvbmluZy9NCnJlY2xhbWF0aW9uL00KcmVjbGluZS9EUlNaRwpyZWNsaW5lci9NCnJlY2x1c2UvU01WCnJlY29nbml6YWJsZS9VCnJlY29nbml6YWJseQpyZWNvZ25pemUvRFJTR0IKcmVjb2duaXplZC9VCnJlY29tYmluYXRpb24KcmVjb21wZW5zZS9EU01HCnJlY29tcGlsYXRpb24KcmVjb21waWxlL0dECnJlY29uL1MKcmVjb25jaWxlL0dEU0IKcmVjb25jaWxpYXRpb24vUwpyZWNvbmRpdGUKcmVjb25maWd1cmF0aW9uCnJlY29uZmlndXJlL0QKcmVjb25uYWlzc2FuY2UvTVMKcmVjb25ub2l0ZXIvREdTCnJlY29uc3RydWN0L1YKcmVjb25zdHJ1Y3RlZC9VCnJlY29yZGVkL1UKcmVjb3JkZXIvTVMKcmVjb3JkaW5nL01TCnJlY291cC9ERwpyZWNvdXJzZS9NCnJlY292ZXJhYmxlL1UKcmVjb3ZlcnkvU00KcmVjcmVhbnQvTVMKcmVjcmVhdGlvbmFsCnJlY3JpbWluYXRlL0RTR05YCnJlY3JpbWluYXRpb24vTQpyZWNyaW1pbmF0b3J5CnJlY3J1ZGVzY2UvR0RTCnJlY3J1ZGVzY2VuY2UvTQpyZWNydWRlc2NlbnQKcmVjcnVpdC9MU01EUlpHCnJlY3J1aXRlci9NCnJlY3J1aXRtZW50L00KcmVjdGFsL1kKcmVjdGFuZ2xlL01TCnJlY3Rhbmd1bGFyCnJlY3RpZmlhYmxlCnJlY3RpZmljYXRpb24vTQpyZWN0aWZpZXIvTQpyZWN0aWZ5L1hORFJTWkcKcmVjdGlsaW5lYXIKcmVjdGl0dWRlL00KcmVjdG8vTVMKcmVjdG9yL1NNCnJlY3RvcnkvU00KcmVjdHVtL1NNCnJlY3VtYmVudApyZWN1cGVyYXRlL0dOVkRTCnJlY3VwZXJhdGlvbi9NCnJlY3VyL1MKcmVjdXJyZWQKcmVjdXJyZW5jZS9TTQpyZWN1cnJpbmcKcmVjdXJzaW9uL1MKcmVjdXNlCnJlY3ljbGFibGUvU00KcmVjeWNsaW5nL00KcmVkL1BTTQpyZWRhY3QvU0RHCnJlZGFjdGlvbi9NCnJlZGFjdG9yL1NNCnJlZGJpcmQvU00KcmVkYnJlYXN0L01TCnJlZGJyaWNrCnJlZGNhcC9TTQpyZWRjb2F0L1NNCnJlZGN1cnJhbnQvUwpyZWRkZW4vU0RHCnJlZGRlcgpyZWRkZXN0CnJlZGRpc2gKcmVkZWVtL1JaQgpyZWRlZW1lci9NCnJlZGVtcHRpb24vTQpyZWRlbXB0aXZlCnJlZGhlYWQvU01ECnJlZGlyZWN0aW9uCnJlZGlzdHJpY3QvR0QKcmVkaXZpZGUvR0RTCnJlZGxpbmluZy9NCnJlZG5lY2svU00KcmVkbmVzcy9NCnJlZG8vRwpyZWRvbGVuY2UvTQpyZWRvbGVudApyZWRvdWJ0L1NCTQpyZWRvdWJ0YWJseQpyZWRvdW5kL1NERwpyZWRyYXcvU0cKcmVkc2tpbi9TTQpyZWR1Y2UvRFJTWkcKcmVkdWNlci9NCnJlZHVjaWJsZQpyZWR1Y3Rhc2UKcmVkdWN0aW9uL1NNCnJlZHVjdGlvbmlzdApyZWR1Y3RpdmUKcmVkdW5kYW5jeS9TTQpyZWR1bmRhbnQvWQpyZWR3b29kL1NNCnJlZHllL0RTCnJlZWRpbmVzcy9NCnJlZWR5L1JUUApyZWVmL1pHTURSUwpyZWVmZXIvTQpyZWVrL0dNRFMKcmVlbCdzCnJlZWwvVUdEUwpyZWV2ZS9HCnJlZXhwb3J0L1NERwpyZWYvU1pNCnJlZmFzaGlvbi9ER1MKcmVmZWN0aW9uL00KcmVmZWN0b3J5L1NNCnJlZmVyL0IKcmVmZXJlZS9EU00KcmVmZXJlZWluZwpyZWZlcmVuY2UvTUdEUwpyZWZlcmVuZHVtL01TCnJlZmVyZW50L1NNCnJlZmVyZW50aWFsCnJlZmVycmFsL1NNCnJlZmVycmVkCnJlZmVycmVyL1NNCnJlZmVycmluZwpyZWZmZWQKcmVmZmluZwpyZWZpbGwvQk0KcmVmaW5lZC9VCnJlZmluZW1lbnQvU00KcmVmaW5lci9TTQpyZWZpbmVyeS9TCnJlZml0dGluZwpyZWZsYXRlL1hEU0dOCnJlZmxhdGlvbmFyeQpyZWZsZWN0L0dWU0QKcmVmbGVjdGlvbi9NUwpyZWZsZWN0aXZlL1kKcmVmbGVjdG9yL01TCnJlZmxleGl2ZS9TTVkKcmVmbGV4b2xvZ3kKcmVmb3JnZS9EU0cKcmVmb3JtL01aCnJlZm9ybWF0L1YKcmVmb3JtYXRvcnkvU00KcmVmb3JtYXR0aW5nCnJlZm9ybWVkL1UKcmVmb3JtaXN0L1MKcmVmb3J0aWZ5L0dEUwpyZWZyYWN0L1NHVkQKcmVmcmFjdGlvbi9NCnJlZnJhY3RvcnkvU00KcmVmcmFpbi9TR01ECnJlZnJlc2gvWkdMRFJTCnJlZnJlc2hlci9NCnJlZnJlc2hpbmcvWQpyZWZyZXNobWVudC9TTQpyZWZyZXNobWVudHMvTQpyZWZyaWdlcmFudC9TTQpyZWZyaWdlcmF0ZS9EU0dOCnJlZnJpZ2VyYXRpb24vTQpyZWZyaWdlcmF0b3IvTVMKcmVmdWdlL1NNCnJlZnVnZWUvU00KcmVmdWxnZW5jZS9NCnJlZnVsZ2VudApyZWZ1bmQvQgpyZWZ1cmJpc2htZW50L01TCnJlZnVzYWwvTVMKcmVmdXRhdGlvbi9NUwpyZWZ1dGUvQkRSU1pHCnJlZnV0ZXIvTQpyZWcKcmVnYWwvRFlHCnJlZ2FsZW1lbnQvTQpyZWdhbGlhL00KcmVnYXJkL0VTTURHCnJlZ2FyZGxlc3MKcmVnYXJkcy9NCnJlZ2F0aGVyL0RHUwpyZWdhdHRhL1NNCnJlZ2VuY3kvU00KcmVnZW5lcmFjeS9NCnJlZ2VuZXJhdGUvVgpyZWdleC9NCnJlZ2V4cC9TCnJlZ2dhZS9NCnJlZ2ljaWRlL01TCnJlZ2ltZS9TTQpyZWdpbWVuL1NNCnJlZ2ltZW50L01ER1MKcmVnaW1lbnRhbApyZWdpbWVudGF0aW9uL00KcmVnaW9uL1NNCnJlZ2lvbmFsL1kKcmVnaW9uYWxpc20vTVMKcmVnaXN0ZXIvR01EUwpyZWdpc3RlcmVkL1UKcmVnaXN0cmFudC9NUwpyZWdpc3RyYXIvTVMKcmVnaXN0cmF0aW9uL1NNCnJlZ2lzdHJ5L1NNCnJlZ25hbnQKcmVncmVzcy9NRFNHVgpyZWdyZXNzaW9uL01TCnJlZ3JldC9TTQpyZWdyZXRmdWwvWQpyZWdyZXR0YWJsZQpyZWdyZXR0YWJseQpyZWdyZXR0ZWQKcmVncmV0dGluZwpyZWdyaW5kL0dTCnJlZ3JvdW5kCnJlZ3JvdXAvREdTCnJlZ3VsYXIvTVlTCnJlZ3VsYXJpdHkvU00KcmVndWxhcml6YXRpb24vTQpyZWd1bGFyaXplL0RTRwpyZWd1bGF0ZS9DRFNHTlYKcmVndWxhdGVkL1UKcmVndWxhdGlvbi9DTQpyZWd1bGF0aW9ucwpyZWd1bGF0b3IvTVMKcmVndWxhdG9yeQpyZWd1cmdpdGF0ZS9EU0dOCnJlZ3VyZ2l0YXRpb24vTQpyZWhhYi9NUwpyZWhhYmJlZApyZWhhYmJpbmcKcmVoYWJpbGl0YXRlL0dOVkRTCnJlaGFiaWxpdGF0aW9uL00KcmVoYW5nL1NERwpyZWhlYXJzL0dECnJlaGVhcnNhbC9NUwpyZWhlYXJzZWQvVQpyZWhpCnJlaHVuZwpyZWlnbi9NRFNHCnJlaW1idXJzZS9CRFNHTApyZWltYnVyc2VtZW50L01TCnJlaW4vR0QKcmVpbmRlZXIvTQpyZWluZm9yY2UvTEdEUwpyZWluZm9yY2VtZW50L1NNCnJlaW5pdGlhbGl6ZQpyZWluc3RhbGwvREcKcmVpbnN0YXRlbWVudC9NCnJlaW5zdXJhbmNlCnJlaXRlcmF0ZS9WCnJlamVjdC9HU01ECnJlamVjdGlvbi9TTQpyZWpvaWNlL0pHRFMKcmVqb2ljaW5nL00KcmVqb2luZGVyL1NNCnJlanV2ZW5hdGUvRFNHTgpyZWp1dmVuYXRpb24vTQpyZWwKcmVsYXRlL0RSU1haR05WCnJlbGF0ZWRuZXNzL00KcmVsYXRlci9NCnJlbGF0aW9uL00KcmVsYXRpb25hbApyZWxhdGlvbnNoaXAvTVMKcmVsYXRpdmUvTVlTCnJlbGF0aXZpc20vTQpyZWxhdGl2aXN0L1MKcmVsYXRpdmlzdGljCnJlbGF0aXZpdHkvTQpyZWxheC9EUlNaRwpyZWxheGFudC9NUwpyZWxheGF0aW9uL1NNCnJlbGF4ZXIvTQpyZWxheS9ECnJlbGVhc2UvQgpyZWxlYXNlZC9VCnJlbGVnYXRlL0dORFMKcmVsZW50L1NHRApyZWxlbnRsZXNzL1BZCnJlbGVudGxlc3NuZXNzL00KcmVsZXZhbmNlL00KcmVsZXZhbmN5L00KcmVsZXZhbnQvWQpyZWxpYWJpbGl0eS9VTQpyZWxpYWJsZS9VCnJlbGlhYmx5L1UKcmVsaWFuY2UvTQpyZWxpYW50CnJlbGljL01TCnJlbGllZi9TTQpyZWxpZXZlL1pHRFJTCnJlbGlldmVyL00KcmVsaWdpb24vU00KcmVsaWdpb3NpdHkKcmVsaWdpb3VzL01ZUApyZWxpZ2lvdXNuZXNzL00KcmVsaW5lL0RTRwpyZWxpbnF1aXNoL0xEU0cKcmVsaW5xdWlzaG1lbnQvTQpyZWxpcXVhcnkvU00KcmVsaXNoL0dNRFMKcmVsaXN0L1NHRApyZWxvY2F0ZS9CCnJlbHVjdGFuY2UvTQpyZWx1Y3RhbnQvWQpyZWx5L0dEUwpyZW0vTQpyZW1haW4vU0dECnJlbWFpbmRlci9HTURTCnJlbWFuZC9TR0QKcmVtYXBwaW5nCnJlbWFyay9CCnJlbWFya2FibGVuZXNzL00KcmVtYXJrYWJseQpyZW1hcmtlZC9VCnJlbWVkaWFibGUKcmVtZWR5L0dEU00KcmVtZW1iZXIvREcKcmVtZW1iZXJlZC9VCnJlbWVtYnJhbmNlL01TCnJlbWluZGVyL00KcmVtaW5pc2NlL0dEUwpyZW1pbmlzY2VuY2UvTVMKcmVtaW5pc2NlbnQvWQpyZW1pc3MvUFkKcmVtaXNzbmVzcy9NCnJlbWl0L1MKcmVtaXR0YW5jZS9TTQpyZW1pdHRlZApyZW1pdHRpbmcvVQpyZW1peC9EU0cKcmVtbmFudC9NUwpyZW1vZGVsL0dEUwpyZW1vbGQvU0dECnJlbW9uc3RyYW50L1NNCnJlbW9uc3RyYXRlL0RTRwpyZW1vcnNlL00KcmVtb3JzZWZ1bC9ZCnJlbW9yc2VsZXNzL1BZCnJlbW9yc2VsZXNzbmVzcy9NCnJlbW90ZS9SU01ZVFAKcmVtb3RlbmVzcy9NCnJlbW92YWwvU00KcmVtdW5lcmF0ZS9HTlZYRFMKcmVtdW5lcmF0aW9uL00KcmVuYWlzc2FuY2UvTVMKcmVuYWwKcmVuYXNjZW5jZS9TCnJlbmQvR1MKcmVuZGVyL1NHTURKCnJlbmRlcmluZy9NCnJlbmRlenZvdXMvR01EUwpyZW5kaXRpb24vTVMKcmVuZWdhZGUvRFNNRwpyZW5lZ2UvRFJTWkcKcmVuZWdlci9NCnJlbmV3L0RTQkcKcmVuZXdhbC9NUwpyZW5uZXQvTQpyZW5uaW4vTQpyZW5vdW5jZS9MRFNHCnJlbm91bmNlbWVudC9NCnJlbm92YXRlL0RTWEdOCnJlbm92YXRpb24vTQpyZW5vdmF0b3IvTVMKcmVub3duL01ECnJlbnQvWkdNRFJTCnJlbnRhbC9TTQpyZW50ZXIvTQpyZW51bmNpYXRpb24vU00KcmVvcGVuL1NERwpyZW9yZy9NRFNHCnJlcC9TTQpyZXBhaW50L0dEUwpyZXBhaXIvQlpSCnJlcGFpcmVyL00KcmVwYWlybWFuL00KcmVwYWlybWVuCnJlcGFyYWJsZQpyZXBhcmF0aW9uL01TCnJlcGFyYXRpb25zL00KcmVwYXJ0ZWUvTQpyZXBhdHJpYXRlL1hEU01HTgpyZXBhdHJpYXRpb24vTQpyZXBlYXQvU01EUlpHQgpyZXBlYXRhYmxlL1UKcmVwZWF0YWJseQpyZXBlYXRlZC9ZCnJlcGVhdGVyL00KcmVwZWF0aW5nL00KcmVwZWwvUwpyZXBlbGxlZApyZXBlbGxlbnQvU00KcmVwZWxsaW5nCnJlcGVudC9TREcKcmVwZW50YW5jZS9NCnJlcGVudGFudC9ZCnJlcGVyY3Vzc2lvbi9TCnJlcGVydG9pcmUvTVMKcmVwZXJ0b3J5L1NNCnJlcGV0aXRpb24vTVMKcmVwZXRpdGlvdXMvWVAKcmVwZXRpdGlvdXNuZXNzL00KcmVwZXRpdGl2ZS9ZUApyZXBldGl0aXZlbmVzcy9NCnJlcGhvdG9ncmFwaC9ERwpyZXBsYWNlYWJsZQpyZXBsYW50L0dTRApyZXBsZW5pc2gvTEdEUwpyZXBsZW5pc2htZW50L00KcmVwbGV0ZS9QRFNHTgpyZXBsZXRlbmVzcy9NCnJlcGxldGlvbi9NCnJlcGxpY2EvU00KcmVwbGljYXRlL0RTR05YCnJlcGxpY2F0aW9uL00KcmVwbGljYXRvci9TCnJlcG9ydGFnZS9NCnJlcG9ydGVkL1kKcmVwb3J0b3JpYWwKcmVwb3NlZnVsCnJlcG9zaXRvcnkvU00KcmVwcmVoZW5kL0RHUwpyZXByZWhlbnNpYmlsaXR5L00KcmVwcmVoZW5zaWJsZQpyZXByZWhlbnNpYmx5CnJlcHJlaGVuc2lvbi9NCnJlcHJlc2VudC9HRFMKcmVwcmVzZW50YXRpb25hbApyZXByZXNlbnRhdGl2ZS9NUwpyZXByZXNlbnRlZC9VCnJlcHJlc3Npb24vTVMKcmVwcmVzc2l2ZS9QWQpyZXByaWV2ZS9EU01HCnJlcHJpbWFuZC9HU01ECnJlcHJpc2FsL1NNCnJlcHJpc2UvU01HCnJlcHJvYWNoL0dNRFNCCnJlcHJvYWNoZnVsL1kKcmVwcm9iYXRlL01TCnJlcHJvZHVjdGl2ZQpyZXByb2dyYW1taW5nCnJlcHJvdmluZy9ZCnJlcHRpbGUvU00KcmVwdGlsaWFuL01TCnJlcHVibGljL1MKcmVwdWJsaWNhbmlzbS9NCnJlcHVkaWF0ZS9YR05EUwpyZXB1ZGlhdGlvbi9NCnJlcHVkaWF0b3IvTVMKcmVwdWduYW5jZS9NCnJlcHVnbmFudApyZXB1bHNpb24vTQpyZXB1bHNpdmUvWVAKcmVwdWxzaXZlbmVzcy9NCnJlcHVyY2hhc2UvR0RTCnJlcHV0YWJpbGl0eS9NCnJlcHV0YWJseS9FCnJlcHV0YXRpb24vTVMKcmVwdXRlL0RTTUdCCnJlcHV0ZWQvWQpyZXF1ZXN0L0dEUgpyZXF1aWVtL1NNCnJlcXVpcmUvTERHCnJlcXVpcmVtZW50L01TCnJlcXVpc2l0ZS9YTU5TCnJlcXVpc2l0aW9uL0dNRApyZXF1aXRhbC9NCnJlcXVpdGUvRFJTWkcKcmVxdWl0ZWQvVQpyZXF1aXRlci9NCnJlcmVhZC9TRwpyZXJlY29yZC9HRFMKcmVydW5uaW5nCnJlc2F0CnJlc2NpbmQvU0RHCnJlc2Npc3Npb24vTQpyZXNjdWUvRFJTTVpHCnJlc2N1ZXIvTQpyZXNlYWwvQgpyZXNlbGwvU0cKcmVzZW1ibGUvRFNHCnJlc2VuZApyZXNlbnQvTFNERwpyZXNlbnRmdWwvWVAKcmVzZW50ZnVsbmVzcy9NCnJlc2VudG1lbnQvTVMKcmVzZXJwaW5lL00KcmVzZXJ2YXRpb24vTVMKcmVzZXJ2ZWQvVVkKcmVzZXJ2ZWRuZXNzL00KcmVzZXJ2aXN0L1NNCnJlc2Vydm9pci9TTQpyZXNldHRpbmcKcmVzaGlwcGluZwpyZXNpZGVuY2UvU00KcmVzaWRlbmN5L1NNCnJlc2lkZW50L01TCnJlc2lkZW50aWFsCnJlc2lkdWEKcmVzaWR1YWwvTVMKcmVzaWR1ZS9TTQpyZXNpZHV1bS9NCnJlc2lnbmF0aW9uL1NNCnJlc2lnbmVkL1kKcmVzaWxpZW5jZS9NCnJlc2lsaWVuY3kvTQpyZXNpbGllbnQvWQpyZXNpbm91cwpyZXNpc3QvU01EUlpHCnJlc2lzdGFuY2UvU00KcmVzaXN0YW50L1UKcmVzaXN0aWJsZQpyZXNpc3RsZXNzCnJlc2lzdG9yL01TCnJlc2l0L1MKcmVzaXR0aW5nCnJlc29sZApyZXNvbGUvRFNHCnJlc29sdXRlL1BZCnJlc29sdXRlbmVzcy9NCnJlc29sdmUvUkJNCnJlc29sdmVkL1UKcmVzb25hbmNlL1NNCnJlc29uYW50L1kKcmVzb25hdGUvR0RTCnJlc29uYXRvci9TTQpyZXNvcnB0aW9uL00KcmVzb3VuZC9TR0QKcmVzb3VuZGluZy9ZCnJlc291cmNlZnVsL1lQCnJlc291cmNlZnVsbmVzcy9NCnJlc3AKcmVzcGVjdC9FU0dWTUQKcmVzcGVjdGFiaWxpdHkvTQpyZXNwZWN0YWJsZQpyZXNwZWN0YWJseQpyZXNwZWN0ZnVsL0VZCnJlc3BlY3RmdWxuZXNzL00KcmVzcGVjdGl2ZS9ZCnJlc3BlbGwvU0dECnJlc3BpcmF0aW9uL00KcmVzcGlyYXRvci9TTQpyZXNwaXJhdG9yeQpyZXNwaXJlL0RHCnJlc3BsZW5kZW5jZS9NCnJlc3BsZW5kZW50L1kKcmVzcG9uZC9TR0QKcmVzcG9uZGVudC9TTQpyZXNwb25zZS9NUwpyZXNwb25zaWJpbGl0eS9TTQpyZXNwb25zaWJsZQpyZXNwb25zaWJseQpyZXNwb25zaXZlL1VZUApyZXNwb25zaXZlbmVzcy9VTQpyZXN0L0dWTURTCnJlc3RhdGUvR0RTCnJlc3RhdXJhbnQvU00KcmVzdGF1cmF0ZXVyL01TCnJlc3RmdWwvWVAKcmVzdGZ1bGxlcgpyZXN0ZnVsbGVzdApyZXN0ZnVsbmVzcy9NCnJlc3RpdHV0aW9uL00KcmVzdGl2ZS9ZUApyZXN0aXZlbmVzcy9NCnJlc3RsZXNzL1BZCnJlc3RsZXNzbmVzcy9NCnJlc3RvcmF0aW9uL1NNCnJlc3RvcmF0aXZlL1NNCnJlc3RvcmVyL1NNCnJlc3RyYWluZWQvVQpyZXN0cmFpbnQvTVMKcmVzdHJpY3QvU0RHVgpyZXN0cmljdGVkL1UKcmVzdHJpY3Rpb24vTVMKcmVzdHJpY3RpdmUvWVAKcmVzdHJpY3RpdmVuZXNzL00KcmVzdHJpbmcvU0cKcmVzdHJvb20vU00KcmVzdHJ1Y3R1cmluZy9TTQpyZXN1bHQvR1NNRApyZXN1bHRhbnQvU00KcmVzdW1lL0RTTUcKcmVzdW1wdGlvbi9NUwpyZXN1cHBseS9EU0cKcmVzdXJnZW5jZS9NUwpyZXN1cmdlbnQKcmVzdXJyZWN0L0dTRApyZXN1cnJlY3Rpb24vTVMKcmVzdXNjaXRhdGUvR05EUwpyZXN1c2NpdGF0aW9uL00KcmVzdXNjaXRhdG9yL1NNCnJldGFpbGVyL01TCnJldGFpbi9TRFJaRwpyZXRhaW5lci9NCnJldGFrZS9HCnJldGFsaWF0ZS9EU0dOVlgKcmV0YWxpYXRpb24vTQpyZXRhbGlhdG9yeQpyZXRhcmQvU01EUlpHCnJldGFyZGFudC9TTQpyZXRhcmRhdGlvbi9NCnJldGFyZGVyL00KcmV0Y2gvRFNHCnJldGVhY2gvR1MKcmV0ZW50aW9uL00KcmV0ZW50aXZlL1lQCnJldGVudGl2ZW5lc3MvTQpyZXRoaW5rL1NHTQpyZXRob3VnaHQKcmV0aWNlbmNlL00KcmV0aWNlbnQvWQpyZXRpY3VsYXRlZApyZXRpY3VsYXRpb24vTVMKcmV0aW5hL1NNCnJldGluYWwKcmV0aW51ZS9TTQpyZXRpcmVlL1NNCnJldGlyZW1lbnQvTVMKcmV0b3J0L0dNRApyZXRyYWNlL0dEUwpyZXRyYWN0L0RCRwpyZXRyYWN0aWxlCnJldHJhY3Rpb24vUwpyZXRyYWluL0RHUwpyZXRyZWFkL0QKcmV0cmVuY2htZW50L01TCnJldHJpYnV0aW9uL01TCnJldHJpYnV0aXZlCnJldHJpZXZhbC9TTQpyZXRyaWV2ZS9EUlNNWkdCCnJldHJpZXZlci9NCnJldHJvL01TCnJldHJvYWN0aXZlL1kKcmV0cm9maXJlL0dEUwpyZXRyb2ZpdC9TTQpyZXRyb2ZpdHRlZApyZXRyb2ZpdHRpbmcKcmV0cm9ncmFkZS9EU0cKcmV0cm9ncmVzcy9HVkRTCnJldHJvZ3Jlc3Npb24vTQpyZXRyb3JvY2tldC9NUwpyZXRyb3NwZWN0L01EU0dWCnJldHJvc3BlY3Rpb24vTQpyZXRyb3NwZWN0aXZlL01ZUwpyZXRyb3ZpcnVzL01TCnJldHNpbmEvTQpyZXR1cm5hYmxlL1NNCnJldHVybmVlL1NNCnJldi9aVk0KcmV2YW1waW5nL00KcmV2ZWFsL0dKU0QKcmV2ZWFsZWQvVQpyZXZlYWxpbmcvWQpyZXZlaWxsZS9NCnJldmVsL0pNRFJTWkcKcmV2ZWxhdGlvbi9TTQpyZXZlbGVyL00KcmV2ZWxyeS9TTQpyZXZlbmdlL01HRFMKcmV2ZW51ZXIvU00KcmV2ZXJiCnJldmVyYmVyYXRlL0RTR05YCnJldmVyYmVyYXRpb24vTQpyZXZlcmUvRFNHCnJldmVyZW5jZS9EU01HCnJldmVyZW5kL1NNCnJldmVyZW50L1kKcmV2ZXJlbnRpYWwvWQpyZXZlcmllL01TCnJldmVycy9NCnJldmVyc2FsL1NNCnJldmVyc2UvWQpyZXZlcnNpYmlsaXR5CnJldmVyc2libGUKcmV2ZXJzaWJseQpyZXZlcnQvR1NECnJldmVydGlibGUKcmV2ZXRtZW50L1NNCnJldmlsZS9EUlNMWkcKcmV2aWxlbWVudC9NCnJldmlsZXIvTQpyZXZpc2VyL01TCnJldmlzaW9uL1NNCnJldmlzaW9uaXNtL00KcmV2aXNpb25pc3QvU00KcmV2aXZhbC9NUwpyZXZpdmFsaXNtL00KcmV2aXZhbGlzdC9TTQpyZXZpdmUvRFNHCnJldml2aWZpY2F0aW9uL00KcmV2b2NhYmxlCnJldm9rZS9EU0cKcmV2b2x0L0dECnJldm9sdGluZy9ZCnJldm9sdXRpb24vU00KcmV2b2x1dGlvbmFyeS9TTQpyZXZvbHV0aW9uaXN0L1NNCnJldm9sdXRpb25pemUvRFNHCnJldm9sdmUvQlpHRFJTCnJldm9sdmVyL00KcmV2dWUvTVMKcmV2dWxzaW9uL00KcmV2dmVkCnJldnZpbmcKcmV3YXJkZWQvVQpyZXdhcmRpbmcvVQpyZXdhcm0vR1NECnJld2FzaC9HRFMKcmV3ZWF2ZS9HUwpyZXdlZGRpbmcKcmV3aW5kL01CCnJld291bmQKcmV3cml0ZS9NR1MKcmhhcHNvZGljCnJoYXBzb2RpY2FsCnJoYXBzb2RpemUvR0RTCnJoYXBzb2R5L1NNCnJoZWEvTVMKcmhlbml1bS9NCnJoZW9zdGF0L1NNCnJoZXN1cy9NUwpyaGV0b3JpYy9NCnJoZXRvcmljYWwvWQpyaGV0b3JpY2lhbi9TTQpyaGV1bS9NCnJoZXVtYXRpYy9NUwpyaGV1bWF0aWNhbGx5CnJoZXVtYXRpc20vTQpyaGV1bWF0b2lkCnJoZXVteQpyaGluZXN0b25lL1NNCnJoaW5pdGlzL00Kcmhpbm8vTVMKcmhpbm9jZXJvcy9NUwpyaGlub3BsYXN0eQpyaGlub3ZpcnVzL01TCnJoaXpvbWUvTVMKcmhvL1NNCnJob2RpdW0vTQpyaG9kb2RlbmRyb24vU00KcmhvbWJvaWQvU00KcmhvbWJvaWRhbApyaG9tYnVzL01TCnJodWJhcmIvTVMKcmh5bWUvTVpHRFJTCnJoeW1lci9NCnJoeW1lc3Rlci9NUwpyaHl0aG0vU00Kcmh5dGhtaWMKcmh5dGhtaWNhbC9ZCnJpYWwvTVMKcmliL1NNCnJpYmFsZApyaWJhbGRyeS9NCnJpYmJlZApyaWJiZXIvU00KcmliYmluZwpyaWJib24vU00Kcmlib2ZsYXZpbi9NCnJpY2UvTVpHRFJTCnJpY2VyL00KcmljaC9UTVJTWVAKcmljaG5lc3MvTQpyaWNrL0dNRFMKcmlja2V0cy9NCnJpY2tldHkvUlQKcmlja3JhY2svTQpyaWNrc2hhdy9NUwpyaWNvY2hldC9HTURTCnJpY290dGEvTQpyaWQvUwpyaWRkYW5jZS9NCnJpZGRlbgpyaWRkaW5nCnJpZGRsZS9EU01HCnJpZGUvTVpHUlMKcmlkZXIvTQpyaWRlcmxlc3MKcmlkZXJzaGlwL00KcmlkZ2UvTUdEUwpyaWRnZXBvbGUvU00KcmlkZ3kKcmlkaWN1bGUvTUdEUwpyaWRpY3Vsb3VzL1lQCnJpZGljdWxvdXNuZXNzL00KcmlkaW5nL00KcmlmZS9UUgpyaWZmL0dNRFMKcmlmZmxlL0RTTUcKcmlmZnJhZmYvTQpyaWZsZS9NWkdEUlMKcmlmbGVtYW4vTQpyaWZsZW1lbgpyaWZsZXIvTQpyaWZsaW5nL00KcmlmdC9HTURTCnJpZy9TTQpyaWdhdG9uaS9NCnJpZ2dlZApyaWdnZXIvU00KcmlnZ2luZy9NCnJpZ2h0L01EUllTUFRHCnJpZ2h0ZW91cy9VUApyaWdodGVvdXNseQpyaWdodGVvdXNuZXNzL1VNCnJpZ2h0ZnVsL1BZCnJpZ2h0ZnVsbmVzcy9NCnJpZ2h0aXNtL00KcmlnaHRpc3QvU00KcmlnaHRtb3N0CnJpZ2h0bmVzcy9NCnJpZ2h0bwpyaWdodHNpemUvRFNHCnJpZ2h0d2FyZC9TCnJpZ2lkL1lQCnJpZ2lkaXR5L00KcmlnaWRuZXNzL00KcmlnbWFyb2xlL01TCnJpZ29yL01TCnJpZ29yb3VzL1lQCnJpZ29yb3VzbmVzcy9NCnJpbGUvR0RTCnJpbGwvTVMKcmltL1NHTUQKcmltZS9NUwpyaW1sZXNzCnJpbW1lZApyaW1taW5nCnJpbmQvTVMKcmluZy9aR01EUkoKcmluZ2VyL00KcmluZ2dpdC9NUwpyaW5nbGVhZGVyL01TCnJpbmdsZXQvTVMKcmluZ2xpa2UKcmluZ21hc3Rlci9NUwpyaW5nc2lkZS9NCnJpbmd0b25lL1NNCnJpbmd3b3JtL00Kcmluay9NUwpyaW5zZS9NR0RTCnJpb3QvWkdNRFJTCnJpb3Rlci9NCnJpb3RpbmcvTQpyaW90b3VzL1BZCnJpcC9TWFRNTlIKcmlwYXJpYW4KcmlwY29yZC9NUwpyaXBlL1lQCnJpcGVuL0RHCnJpcGVuZWQvVQpyaXBlbmVzcy9NCnJpcG9mZi9TTQpyaXBvc3RlL01HRFMKcmlwcGVkCnJpcHBlci9TTQpyaXBwaW5nCnJpcHBsZS9EU01HCnJpcHBseQpyaXBzYXcvU00KcmlwdGlkZS9NUwpyaXNlL0pNWkdSUwpyaXNlbgpyaXNlci9NCnJpc2liaWxpdHkvTQpyaXNpYmxlCnJpc2luZy9NCnJpc2svR01EUwpyaXNraWx5CnJpc2tpbmVzcy9NCnJpc2t5L1JQVApyaXNvdHRvL01TCnJpc3F1ZQpyaXNzb2xlL1MKcml0ZS9NUwpyaXR1YWwvU01ZCnJpdHVhbGlzbS9NCnJpdHVhbGlzdGljCnJpdHVhbGlzdGljYWxseQpyaXR1YWxpemVkCnJpdHp5L1JUCnJpdi9aTlIKcml2YWwvTURTRwpyaXZhbGVkL1UKcml2YWxyeS9TTQpyaXZlL0NHRFMKcml2ZXIvTQpyaXZlcmJhbmsvU00Kcml2ZXJiZWQvTVMKcml2ZXJib2F0L1NNCnJpdmVyZnJvbnQKcml2ZXJzaWRlL01TCnJpdmV0L01EUlNaRwpyaXZldGVyL00Kcml2aWVyYS9TCnJpdnVsZXQvTVMKcml5YWwvTVMKcm0Kcm9hY2gvR01EUwpyb2FkL0lNUwpyb2FkYmVkL1NNCnJvYWRibG9jay9NRFNHCnJvYWRob3VzZS9TTQpyb2FkaWUvTVMKcm9hZGtpbGwvTQpyb2FkcnVubmVyL1NNCnJvYWRzaG93L1NNCnJvYWRzaWRlL1NNCnJvYWRzdGVyL1NNCnJvYWR3YXkvU00Kcm9hZHdvcmsvU00Kcm9hZHdvcnRoeQpyb2FtL1pHRFJTCnJvYW1lci9NCnJvYW1pbmcvTQpyb2FuL01TCnJvYXIvWkdNRFJTCnJvYXJlci9NCnJvYXJpbmcvTQpyb2FzdC9aR01EUlNKCnJvYXN0ZXIvTQpyb2FzdGluZy9NCnJvYi9TCnJvYmJlZApyb2JiZXIvTVMKcm9iYmVyeS9TTQpyb2JiaW5nCnJvYmUncwpyb2JlL0VHRFMKcm9iaW4vTVMKcm9ib2NhbGwvU0dNRApyb2JvdC9NUwpyb2JvdGljL1MKcm9ib3RpY3MvTQpyb2JvdGl6ZS9HRFMKcm9idXN0L1JZUFQKcm9idXN0bmVzcy9NCnJvY2svWkdNRFJTCnJvY2thYmlsbHkvTQpyb2NrYm91bmQKcm9ja2VyL00Kcm9ja2VyeS9TCnJvY2tldC9NRFNHCnJvY2tldHJ5L00Kcm9ja2ZhbGwvU00Kcm9ja2luZXNzL00Kcm9ja3kvVFJQCnJvY29jby9NCnJvZC9TTQpyb2RlCnJvZGVudC9NUwpyb2Rlby9NUwpyb2UvU00Kcm9lYnVjay9TTQpyb2VudGdlbi9NUwpyb2dlci9HRFMKcm9ndWUncwpyb2d1ZS9LUwpyb2d1ZXJ5L00Kcm9ndWlzaC9ZUApyb2d1aXNobmVzcy9NCnJvaWwvR0RTCnJvaXN0ZXIvWkdEUlMKcm9pc3RlcmVyL00Kcm9sZS9NUwpyb2xsL01EUlpHSlMKcm9sbGJhY2svU00Kcm9sbGVyL00Kcm9sbGVyYmxhZGluZwpyb2xsZXJza2F0aW5nL00Kcm9sbGljay9TREcKcm9sbGlja2luZy9NCnJvbGxtb3AvUwpyb2xsb3Zlci9TTQpyb21haW5lL01TCnJvbWFuL00Kcm9tYW5jZS9NWkdEUlMKcm9tYW5jZXIvTQpyb21hbnRpYy9NUwpyb21hbnRpY2FsbHkKcm9tYW50aWNpc20vTQpyb21hbnRpY2lzdC9TTQpyb21hbnRpY2l6ZS9EU0cKcm9tZW8vTVMKcm9tcC9NRFJaR1MKcm9tcGVyL00Kcm9uZG8vU00Kcm9vZC9NUwpyb29mL01EUlpHUwpyb29mZXIvTQpyb29maW5nL00Kcm9vZmxlc3MKcm9vZnRvcC9TTQpyb29rL01ER1MKcm9va2VyeS9TTQpyb29raWUvU00Kcm9vbS9NRFJaR1MKcm9vbWVyL00Kcm9vbWV0dGUvU00Kcm9vbWZ1bC9TTQpyb29taW5lc3MvTQpyb29tbWF0ZS9TTQpyb29teS9SVFAKcm9vc3QvU01EUlpHCnJvb3N0ZXIvTQpyb290L01EUlpHUwpyb290ZXIvTQpyb290a2l0L1NNCnJvb3RsZXNzL1AKcm9vdGxldC9TTQpyb3BlL01aR0RSUwpyb3Blci9NCnJvcHkvUlQKcm9zYXJ5L1NNCnJvc2UvTVMKcm9zZWF0ZQpyb3NlYnVkL1NNCnJvc2VidXNoL01TCnJvc2VtYXJ5L00Kcm9zZXR0ZS9TTQpyb3Nld2F0ZXIvTQpyb3Nld29vZC9NUwpyb3NpbHkKcm9zaW4vU01ERwpyb3NpbmVzcy9NCnJvc3Rlci9TTQpyb3N0cnVtL01TCnJvc3kvUlRQCnJvdC9TTQpyb3RhL1MKcm90YXJ5L1NNCnJvdGF0ZS9EU0dOWApyb3RhdGlvbi9NCnJvdGF0aW9uYWwKcm90YXRvcnkKcm90ZS9NCnJvdGd1dC9NCnJvdGlzc2VyaWUvU00Kcm90b2dyYXZ1cmUvTVMKcm90b3IvU00Kcm90b3RpbGxlci9NUwpyb3R0ZWQKcm90dGVuL1RQUlkKcm90dGVubmVzcy9NCnJvdHRlci9TCnJvdHRpbmcKcm90dHdlaWxlci9TCnJvdHVuZC9QCnJvdHVuZGEvTVMKcm90dW5kaXR5L00Kcm90dW5kbmVzcy9NCnJvdWUvTVMKcm91Z2UvRFNNRwpyb3VnaC9NRE5SWVhUR1AKcm91Z2hhZ2UvTQpyb3VnaGNhc3QKcm91Z2hlbi9HRApyb3VnaGhvdXNlL01HRFMKcm91Z2huZWNrL0dNRFMKcm91Z2huZXNzL00Kcm91Z2hzCnJvdWdoc2hvZApyb3VsZXR0ZS9NCnJvdW5kL1BTTURSWVpURwpyb3VuZGFib3V0L1NNCnJvdW5kZWwvUwpyb3VuZGVsYXkvTVMKcm91bmRob3VzZS9TTQpyb3VuZGlzaApyb3VuZG5lc3MvTQpyb3VuZHVwL01TCnJvdW5kd29ybS9TTQpyb3VzZS9EU0cKcm91c3QvU0RHCnJvdXN0YWJvdXQvU00Kcm91dC9NUlpTCnJvdXRlJ3MKcm91dGUvQURTRwpyb3V0ZWluZwpyb3V0ZXIvTQpyb3V0aW5lL01ZUwpyb3V0aW5pemUvR0RTCnJvdXgKcm92ZS9aR0RSUwpyb3Zlci9NCnJvdy9TWkdNRFIKcm93YW4vUwpyb3dib2F0L01TCnJvd2RpbHkKcm93ZGluZXNzL00Kcm93ZHkvUFJTTVQKcm93ZHlpc20vTQpyb3dlbC9TTURHCnJvd2VyL00Kcm93aW5nL00Kcm93bG9jay9TCnJveWFsL1NNWQpyb3lhbGlzdC9TTQpyb3lhbHRpZXMvTQpyb3lhbHR5L1NNCnJwbQpycHMKcnQKcnRlCnJ1Yi9TTQpydWJhdG8vU00KcnViYmVkCnJ1YmJlci9TTQpydWJiZXJpemUvR0RTCnJ1YmJlcm5lY2svTURSU1pHCnJ1YmJlcm5lY2tlci9NCnJ1YmJlcnkKcnViYmluZy9TCnJ1YmJpc2gvTURTRwpydWJiaXNoeQpydWJibGUvTQpydWJkb3duL1NNCnJ1YmUvTVMKcnViZWxsYS9NCnJ1YmljdW5kCnJ1YmlkaXVtL00KcnVibGUvU00KcnVicmljL1NNCnJ1YnkvUlNNVApydWNoZWQKcnVjay9ER1MKcnVja3NhY2svTVMKcnVja3VzL01TCnJ1Y3Rpb25zCnJ1ZGRlci9TTQpydWRkZXJsZXNzCnJ1ZGRpbmVzcy9NCnJ1ZGR5L1JUUApydWRlL1lUUlAKcnVkZW5lc3MvTQpydWRpbWVudC9TTQpydWRpbWVudGFyeQpydWUvRFNNRwpydWVmdWwvUFkKcnVlZnVsbmVzcy9NCnJ1ZmYvTURZR1MKcnVmZmlhbi9NWVMKcnVmZmxlL0RTTUcKcnVmZmxlZC9VCnJ1Zy9TTQpydWdieS9NCnJ1Z2dlZC9QVFJZCnJ1Z2dlZG5lc3MvTQpydWdnZXIKcnVncmF0L1NNCnJ1aW4vTURHUwpydWluYXRpb24vTQpydWlub3VzL1kKcnVsZS9NWkdKRFJTCnJ1bGVyL00KcnVsaW5nL00KcnVtL1NNCnJ1bWJhL1NNREcKcnVtYmxlL0RTSk1HCnJ1bWJsaW5nL00KcnVtYnVzdGlvdXMKcnVtaW5hbnQvTVMKcnVtaW5hdGUvWEdOVkRTCnJ1bWluYXRpb24vTQpydW1pbmF0aXZlL1kKcnVtbWFnZS9EU01HCnJ1bW1lcgpydW1tZXN0CnJ1bW15L00KcnVtb3IvU01ERwpydW1vcm1vbmdlci9TTQpydW1wL01ZUwpydW1wbGUvRFNNRwpydW1wdXMvTVMKcnVuL0FTTQpydW5hYm91dC9NUwpydW5hcm91bmQvU00KcnVuYXdheS9NUwpydW5kb3duL1NNCnJ1bmUvTVMKcnVuZy9NUwpydW5pYwpydW5sZXQvU00KcnVubmVsL1NNCnJ1bm5lci9TTQpydW5uaW5nL00KcnVubnkvUlQKcnVub2ZmL1NNCnJ1bnQvTVMKcnVudHkvUlQKcnVud2F5L1NNCnJ1cGVlL1NNCnJ1cGlhaC9NCnJ1cGlhaHMKcnVwdHVyZS9NR0RTCnJ1cmFsCnJ1c2UvTVMKcnVzaC9NRFJTWkcKcnVzaGVyL00KcnVzaHkKcnVzay9NUwpydXNzZXQvU00KcnVzdC9NREdTCnJ1c3RpYy9TTQpydXN0aWNhbGx5CnJ1c3RpY2F0ZS9HRFMKcnVzdGljYXRpb24vTQpydXN0aWNpdHkvTQpydXN0aW5lc3MvTQpydXN0bGUvRFJTSk1aRwpydXN0bGVyL00KcnVzdHByb29mL1NERwpydXN0eS9SUE5UCnJ1dC9TTQpydXRhYmFnYS9TTQpydXRoZW5pdW0vTQpydXRoZXJmb3JkaXVtL00KcnV0aGxlc3MvWVAKcnV0aGxlc3NuZXNzL00KcnV0dGVkCnJ1dHRpbmcKcnV0dHkvUlQKcnllL00Kcy9OWVhCCnNhYmJhdGgvTQpzYWJiYXRocwpzYWJiYXRpY2FsL1NNCnNhYmVyL01TCnNhYmxlL01TCnNhYm90L01TCnNhYm90YWdlL0RTTUcKc2Fib3RldXIvU00Kc2FicmEvTVMKc2FjL1NNCnNhY2NoYXJpbi9NCnNhY2NoYXJpbmUKc2FjZXJkb3RhbApzYWNoZW0vU00Kc2FjaGV0L1NNCnNhY2svWkdNRFJKUwpzYWNrY2xvdGgvTQpzYWNrZXIvTQpzYWNrZnVsL01TCnNhY2tpbmcvTQpzYWNyYQpzYWNyYW1lbnQvTVMKc2FjcmFtZW50YWwKc2FjcmVkL1lQCnNhY3JlZG5lc3MvTQpzYWNyaWZpY2UvRFNNRwpzYWNyaWZpY2lhbC9ZCnNhY3JpbGVnZS9NUwpzYWNyaWxlZ2lvdXMvWQpzYWNyaXN0YW4vTVMKc2FjcmlzdHkvU00Kc2Fjcm9pbGlhYy9NUwpzYWNyb3NhbmN0L1AKc2Fjcm9zYW5jdG5lc3MvTQpzYWNydW0vTQpzYWQvUFkKc2FkZGVuL1NERwpzYWRkZXIKc2FkZGVzdApzYWRkbGUncwpzYWRkbGUvVURTRwpzYWRkbGViYWcvTVMKc2FkZGxlci9TCnNhZGRsZXJ5CnNhZGVzCnNhZGh1L1MKc2FkaXNtL00Kc2FkaXN0L1NNCnNhZGlzdGljCnNhZGlzdGljYWxseQpzYWRuZXNzL00Kc2Fkb21hc29jaGlzbS9NCnNhZG9tYXNvY2hpc3QvTVMKc2Fkb21hc29jaGlzdGljCnNhZmFyaS9TR01ECnNhZmUvTVlUUFJTCnNhZmVndWFyZC9TTURHCnNhZmVrZWVwaW5nL00Kc2FmZW5lc3MvTQpzYWZldHkvU00Kc2FmZmxvd2VyL01TCnNhZmZyb24vTVMKc2FnL1NNCnNhZ2EvTVMKc2FnYWNpb3VzL1kKc2FnYWNpdHkvTQpzYWdlL01ZVFJTCnNhZ2VicnVzaC9NCnNhZ2dlZApzYWdnaW5nCnNhZ2d5L1JUCnNhZ28vTQpzYWd1YXJvL01TCnNhaGliL01TCnNhaWQvVQpzYWlsL0dNRFNKCnNhaWxib2FyZC9NUlpHUwpzYWlsYm9hcmRlci9NCnNhaWxib2FyZGluZy9NCnNhaWxib2F0L01TCnNhaWxjbG90aC9NCnNhaWxmaXNoL01TCnNhaWxpbmcvTQpzYWlsb3IvU00Kc2FpbHBsYW5lL01TCnNhaW50L01EWVMKc2FpbnRob29kL00Kc2FpbnRsaWtlCnNhaW50bGluZXNzL00Kc2FpbnRseS9QUlQKc2FpdGgKc2FrZS9NCnNhbGFhbS9TTURHCnNhbGFibGUvVQpzYWxhY2lvdXMvUFkKc2FsYWNpb3VzbmVzcy9NCnNhbGFjaXR5L00Kc2FsYWQvTVMKc2FsYW1hbmRlci9TTQpzYWxhbWkvU00Kc2FsYXJ5L0RTTQpzYWxlL0FCTVMKc2FsZXJvb20vUwpzYWxlc2NsZXJrL1NNCnNhbGVzZ2lybC9TTQpzYWxlc2xhZHkvU00Kc2FsZXNtYW4vTQpzYWxlc21hbnNoaXAvTQpzYWxlc21lbgpzYWxlc3Blb3BsZS9NCnNhbGVzcGVyc29uL01TCnNhbGVzcm9vbS9TCnNhbGVzd29tYW4vTQpzYWxlc3dvbWVuCnNhbGllbmNlL00Kc2FsaWVudC9TTVkKc2FsaW5lL1NNCnNhbGluaXR5L00Kc2FsaXZhL00Kc2FsaXZhcnkKc2FsaXZhdGUvR05EUwpzYWxpdmF0aW9uL00Kc2FsbG93L1JUUApzYWxsb3duZXNzL00Kc2FsbHkvRFNNRwpzYWxtb24vU00Kc2FsbW9uZWxsYS9NCnNhbG1vbmVsbGFlCnNhbG9uL01TCnNhbG9vbi9TTQpzYWxzYS9NUwpzYWx0J3MKc2FsdC9DVEdEUwpzYWx0Ym94L01TCnNhbHRjZWxsYXIvU00Kc2FsdGVkL1UKc2FsdGVyCnNhbHRpbmUvU00Kc2FsdGluZXNzL00Kc2FsdHBldGVyL00Kc2FsdHNoYWtlci9TTQpzYWx0d2F0ZXIvTQpzYWx0eS9SVFAKc2FsdWJyaW91cy9JCnNhbHV0YXJ5CnNhbHV0YXRpb24vTVMKc2FsdXRhdG9yaWFuL01TCnNhbHV0YXRvcnkKc2FsdXRlL0RTTUcKc2FsdmFnZS9EU01HCnNhbHZhZ2VhYmxlCnNhbHZhdGlvbi9NCnNhbHZlL01aR0RSUwpzYWx2ZXIvTQpzYWx2by9NUwpzYW1hcml1bS9NCnNhbWJhL01EU0cKc2FtZS9TUApzYW1lbmVzcy9NCnNhbWV5CnNhbWl6ZGF0L1MKc2Ftb3NhL1MKc2Ftb3Zhci9TTQpzYW1wYW4vU00Kc2FtcGxlL0RSU01aR0oKc2FtcGxlci9NCnNhbXBsaW5nL00Kc2FtdXJhaS9TTQpzYW5hdG9yaXVtL1NNCnNhbmN0aWZpY2F0aW9uL00Kc2FuY3RpZnkvR0RTTgpzYW5jdGltb25pb3VzL1lQCnNhbmN0aW1vbmlvdXNuZXNzL00Kc2FuY3RpbW9ueS9NCnNhbmN0aW9uL0dTTUQKc2FuY3Rpb25lZC9VCnNhbmN0aXR5L00Kc2FuY3R1YXJ5L1NNCnNhbmN0dW0vU00Kc2FuZC9aR01EUlMKc2FuZGFsL1NNCnNhbmRhbHdvb2QvTQpzYW5kYmFnL1NNCnNhbmRiYWdnZWQKc2FuZGJhZ2dlci9TTQpzYW5kYmFnZ2luZwpzYW5kYmFuay9NUwpzYW5kYmFyL1NNCnNhbmRibGFzdC9aR01EUlMKc2FuZGJsYXN0ZXIvTQpzYW5kYm94L01TCnNhbmRjYXN0bGUvTVMKc2FuZGVyL00Kc2FuZGhvZy9TTQpzYW5kaW5lc3MvTQpzYW5kbG90L1NNCnNhbmRsb3R0ZXIvTVMKc2FuZG1hbi9NCnNhbmRtZW4Kc2FuZHBhcGVyL0dNRFMKc2FuZHBpcGVyL01TCnNhbmRwaXQvUwpzYW5kc3RvbmUvTQpzYW5kc3Rvcm0vU00Kc2FuZHdpY2gvTURTRwpzYW5keS9SVFAKc2FuZS9JWVRSCnNhbmVuZXNzL00Kc2FuZy9TCnNhbmdmcm9pZC9NCnNhbmdyaWEvTQpzYW5ndWluYXJ5CnNhbmd1aW5lL1kKc2FuaXRhcmlhbi9TTQpzYW5pdGFyaXVtL1NNCnNhbml0YXJ5L0lVCnNhbml0YXRpb24vTQpzYW5pdGl6ZS9HRFMKc2FuaXR5L0lNCnNhbmsKc2FucwpzYW5zZXJpZgpzYXAvU00Kc2FwaWVuY2UvTQpzYXBpZW5zCnNhcGllbnQKc2FwbGVzcwpzYXBsaW5nL01TCnNhcHBlZApzYXBwZXIvUwpzYXBwaGlyZS9TTQpzYXBwaW5lc3MvTQpzYXBwaW5nCnNhcHB5L1BSVApzYXByb3BoeXRlL1NNCnNhcHJvcGh5dGljCnNhcHN1Y2tlci9TTQpzYXB3b29kL00Kc2FyYW4vTQpzYXJjYXNtL01TCnNhcmNhc3RpYwpzYXJjYXN0aWNhbGx5CnNhcmNvbWEvTVMKc2FyY29waGFnaQpzYXJjb3BoYWd1cy9NCnNhcmRpbmUvTVMKc2FyZG9uaWMKc2FyZG9uaWNhbGx5CnNhcmdlL01TCnNhcmkvTVMKc2Fya3kKc2FybmllL1MKc2Fyb25nL1NNCnNhcnNhcGFyaWxsYS9NUwpzYXJ0b3JpYWwvWQpzYXNoL01TCnNhc2hheS9TR01ECnNhc3MvR01EUwpzYXNzYWZyYXMvTVMKc2Fzc3kvUlQKc2F0CnNhdGFuaWMKc2F0YW5pY2FsL1kKc2F0YW5pc20vTQpzYXRhbmlzdC9NUwpzYXRheQpzYXRjaGVsL01TCnNhdGUvR0RTCnNhdGVlbi9NCnNhdGVsbGl0ZS9EU01HCnNhdGlhYmxlL0kKc2F0aWF0ZS9HTkRTCnNhdGlhdGlvbi9NCnNhdGlldHkvTQpzYXRpbi9NCnNhdGlud29vZC9TTQpzYXRpbnkKc2F0aXJlL1NNCnNhdGlyaWMKc2F0aXJpY2FsL1kKc2F0aXJpc3QvU00Kc2F0aXJpemUvRFNHCnNhdGlzZmFjdGlvbi9FTQpzYXRpc2ZhY3Rpb25zCnNhdGlzZmFjdG9yaWx5L1UKc2F0aXNmYWN0b3J5L1UKc2F0aXNmaWVkL1UKc2F0aXNmeS9FRFNHCnNhdGlzZnlpbmcvVQpzYXRpc2Z5aW5nbHkKc2F0b3JpL00Kc2F0cmFwL1NNCnNhdHN1bWEvUwpzYXR1cmF0ZS9EU0dOCnNhdHVyYXRlZC9VCnNhdHVyYXRpb24vTQpzYXR1cm5pbmUKc2F0eXIvTVMKc2F0eXJpYXNpcy9NCnNhdHlyaWMKc2F1Y2UvTVpHRFJTCnNhdWNlcGFuL1NNCnNhdWNlci9NCnNhdWNpbHkKc2F1Y2luZXNzL00Kc2F1Y3kvUlBUCnNhdWVya3JhdXQvTQpzYXVuYS9NRFNHCnNhdW50ZXIvTURHUwpzYXVyaWFuCnNhdXJvcG9kL1NNCnNhdXNhZ2UvTVMKc2F1dGUvTVMKc2F1dGVlZApzYXV0ZWluZwpzYXZhZ2UvRFJTTVlUR1AKc2F2YWdlbmVzcy9NCnNhdmFnZXJ5L1NNCnNhdmFubmEvTVMKc2F2YW50L1NNCnNhdmUvQkpNWkdEUlMKc2F2ZWQvVQpzYXZlci9NCnNhdmluZy9NCnNhdmluZ3MvTQpzYXZpb3IvU00Kc2F2b3IvTURTRwpzYXZvcmluZXNzL00Kc2F2b3J5L1BUUlNNCnNhdm95L01TCnNhdnZ5L0RSU01URwpzYXcvU0dNRApzYXdib25lcy9NCnNhd2J1Y2svTVMKc2F3ZHVzdC9NCnNhd2ZseS9TTQpzYXdob3JzZS9TTQpzYXdtaWxsL01TCnNhd3llci9TTQpzYXgvTVMKc2F4aWZyYWdlL1NNCnNheG9waG9uZS9NUwpzYXhvcGhvbmlzdC9TTQpzYXkncwpzYXkvVVNHCnNheWluZy9TTQpzY2FiL01TCnNjYWJiYXJkL01TCnNjYWJiZWQKc2NhYmJpbmVzcy9NCnNjYWJiaW5nCnNjYWJieS9QVFIKc2NhYmllcy9NCnNjYWJyb3VzCnNjYWQvTVMKc2NhZmZvbGQvU01HCnNjYWZmb2xkaW5nL00Kc2NhZy9TCnNjYWdnZWQKc2NhbGFyL1MKc2NhbGF3YWcvTVMKc2NhbGQvTURTRwpzY2FsZSdzCnNjYWxlL0NHRFMKc2NhbGVsZXNzCnNjYWxlbmUKc2NhbGluZXNzL00Kc2NhbGxpb24vTVMKc2NhbGxvcC9HU01ECnNjYWxwL01EUlNaRwpzY2FscGVsL1NNCnNjYWxwZXIvTQpzY2FseS9SVFAKc2NhbS9NUwpzY2FtbWVkCnNjYW1tZXIvUwpzY2FtbWluZwpzY2FtcC9NUlNaCnNjYW1wZXIvR01ECnNjYW1waS9NCnNjYW4vTVMKc2NhbmRhbC9TTQpzY2FuZGFsaXplL0RTRwpzY2FuZGFsbW9uZ2VyL1NNCnNjYW5kYWxvdXMvWQpzY2FuZGl1bS9NCnNjYW5uZWQKc2Nhbm5lci9TTQpzY2FubmluZwpzY2Fuc2lvbi9NCnNjYW50L0NEU1RHCnNjYW50ZXIKc2NhbnRpbHkKc2NhbnRpbmVzcy9NCnNjYW50bHkKc2NhbnRuZXNzL00Kc2NhbnR5L1JTUFQKc2NhcGVnb2F0L1NHTUQKc2NhcGVncmFjZS9NUwpzY2FwdWxhL00Kc2NhcHVsYWUKc2NhcHVsYXIvU00Kc2Nhci9HTURTCnNjYXJhYi9TTQpzY2FyY2UvUllUUApzY2FyY2VuZXNzL00Kc2NhcmNpdHkvU00Kc2NhcmUvTVMKc2NhcmVjcm93L01TCnNjYXJlbW9uZ2VyL1NNRwpzY2FyZi9NRFNHCnNjYXJpZmljYXRpb24vTQpzY2FyaWZ5L05EU0cKc2NhcmlseQpzY2FyaW5lc3MvTQpzY2FybGF0aW5hL00Kc2NhcmxldC9NCnNjYXJwL01EUlNaRwpzY2FycGVyL0RHCnNjYXJyZWQKc2NhcnJpbmcKc2NhcnZlcwpzY2FyeS9SVFAKc2NhdC9NUwpzY2F0aGluZy9ZCnNjYXRvbG9naWNhbApzY2F0b2xvZ3kvTQpzY2F0dGVkCnNjYXR0ZXIvR0pTTUQKc2NhdHRlcmJyYWluL1NNRApzY2F0dGVyaW5nL00Kc2NhdHRlcnNob3QKc2NhdHRpbmcKc2NhdHR5CnNjYXZlbmdlL1pHRFJTCnNjYXZlbmdlci9NCnNjZW5hcmlvL01TCnNjZW5hcmlzdC9NUwpzY2VuZS9NUwpzY2VuZXJ5L00Kc2NlbmljCnNjZW5pY2FsbHkKc2NlbnQvQ01TCnNjZW50ZWQvVQpzY2VudGluZwpzY2VudGxlc3MKc2NlcHRlci9NUwpzY2gKc2NoYWRlbmZyZXVkZQpzY2hlZHVsZSdzCnNjaGVkdWxlL0FEU0cKc2NoZWR1bGVkL1UKc2NoZWR1bGVyL1MKc2NoZW1hCnNjaGVtYXRhCnNjaGVtYXRpYy9TTQpzY2hlbWF0aWNhbGx5CnNjaGVtYXRpemUvR0RTCnNjaGVtZS9EUlNNWkcKc2NoZW1lci9NCnNjaGVyem8vTVMKc2NoaWxsaW5nL01TCnNjaGlzbS9TTQpzY2hpc21hdGljL1NNCnNjaGlzdC9NCnNjaGl6by9TTQpzY2hpem9pZC9NUwpzY2hpem9waHJlbmlhL00Kc2NoaXpvcGhyZW5pYy9TTQpzY2hsZW1pZWwvU00Kc2NobGVwL1NNCnNjaGxlcHBlZApzY2hsZXBwaW5nCnNjaGxvY2svTQpzY2htYWx0ei9NCnNjaG1hbHR6eS9UUgpzY2htby9NCnNjaG1vZXMKc2NobW9vemUvRFJTWkcKc2NobXVjay9NUwpzY2huYXBwcy9NCnNjaG5hdXplci9TTQpzY2huaXR6ZWwvU00Kc2Nobm9vay9NUwpzY2hub3ovTVMKc2Nobm96emxlL1NNCnNjaG9sYXIvTVlTCnNjaG9sYXJzaGlwL01TCnNjaG9sYXN0aWMKc2Nob2xhc3RpY2FsbHkKc2Nob2xhc3RpY2lzbQpzY2hvb2wvU0dNRApzY2hvb2xiYWcvTVMKc2Nob29sYm9vay9TTQpzY2hvb2xib3kvTVMKc2Nob29sY2hpbGQvTQpzY2hvb2xjaGlsZHJlbi9NCnNjaG9vbGRheXMKc2Nob29sZWQvVQpzY2hvb2xmZWxsb3cvU00Kc2Nob29sZ2lybC9TTQpzY2hvb2xob3VzZS9TTQpzY2hvb2xpbmcvTQpzY2hvb2xraWQvUwpzY2hvb2xtYXJtL1NNCnNjaG9vbG1hcm1pc2gKc2Nob29sbWFzdGVyL01TCnNjaG9vbG1hdGUvU00Kc2Nob29sbWlzdHJlc3MvTVMKc2Nob29scm9vbS9TTQpzY2hvb2x0ZWFjaGVyL01TCnNjaG9vbHdvcmsvTQpzY2hvb2x5YXJkL1NNCnNjaG9vbmVyL1NNCnNjaHVzcy9HTURTCnNjaHVzc2Jvb21lci9NUwpzY2h3YS9NUwpzY2kKc2NpYXRpYwpzY2lhdGljYS9NCnNjaWVuY2UvRk1TCnNjaWVudGlmaWMvVQpzY2llbnRpZmljYWxseS9VCnNjaWVudGlzdC9TTQpzY2ltaXRhci9TTQpzY2ludGlsbGEvTVMKc2NpbnRpbGxhdGUvRFNHTgpzY2ludGlsbGF0aW9uL00Kc2Npb24vTVMKc2Npc3Nvci9HRFMKc2NsZXJvc2VzCnNjbGVyb3Npcy9NCnNjbGVyb3RpYwpzY29mZi9NRFJTWkcKc2NvZmZlci9NCnNjb2ZmbGF3L01TCnNjb2xkL01EU0dKCnNjb2xkaW5nL00Kc2NvbGlvc2lzL00Kc2NvbmNlL1NNCnNjb25lL01TCnNjb29wL01EU0cKc2Nvb3BmdWwvTVMKc2Nvb3QvRFJTWkcKc2Nvb3Rlci9NCnNjb3BlL01HRFMKc2NvcmJ1dGljCnNjb3JjaC9NRFJTWkcKc2NvcmNoZXIvTQpzY29yZS9NWkdEUlMKc2NvcmVib2FyZC9TTQpzY29yZWNhcmQvTVMKc2NvcmVrZWVwZXIvTVMKc2NvcmVsZXNzCnNjb3JlbGluZS9TCnNjb3Jlci9NCnNjb3JuL01EUlNaRwpzY29ybmVyL00Kc2Nvcm5mdWwvWQpzY29ycGlvbi9NUwpzY290Y2gvTURTRwpzY290Y2hzCnNjb3VuZHJlbC9NUwpzY291ci9EUlNaRwpzY291cmVyL00Kc2NvdXJnZS9EU01HCnNjb3V0L01EUlNaRwpzY291dGluZy9NCnNjb3V0bWFzdGVyL01TCnNjb3cvTVMKc2Nvd2wvTURTRwpzY3JhYmJsZS9NWkdEUlMKc2NyYWJibGVyL00Kc2NyYWcvTVMKc2NyYWdnbHkvUlQKc2NyYWdneS9UUgpzY3JhbS9TCnNjcmFtYmxlJ3MKc2NyYW1ibGUvVUdEUwpzY3JhbWJsZXIvTVMKc2NyYW1tZWQKc2NyYW1taW5nCnNjcmFwL01EUlNaR0oKc2NyYXBib29rL1NNCnNjcmFwZS9TTQpzY3JhcGVyL00Kc2NyYXBoZWFwL1NNCnNjcmFwaWUKc2NyYXBwZWQKc2NyYXBwZXIvTVMKc2NyYXBwaW5nCnNjcmFwcHkvVFIKc2NyYXB5YXJkL1NNCnNjcmF0Y2gvR01EUwpzY3JhdGNoY2FyZC9TCnNjcmF0Y2hlZC9VCnNjcmF0Y2hpbHkKc2NyYXRjaGluZXNzL00Kc2NyYXRjaHBhZC9TCnNjcmF0Y2h5L1BSVApzY3Jhd2wvU01ERwpzY3Jhd2x5CnNjcmF3bmluZXNzL00Kc2NyYXdueS9QVFIKc2NyZWFtL1NNRFJaRwpzY3JlYW1lci9NCnNjcmVhbWluZy9ZCnNjcmVlL01EUwpzY3JlZWNoL0dNRFMKc2NyZWVjaHkvVFIKc2NyZWVkL1MKc2NyZWVuL1NKTURHCnNjcmVlbmluZy9NCnNjcmVlbnBsYXkvU00Kc2NyZWVuc2F2ZXIKc2NyZWVuc2hvdC9TCnNjcmVlbndyaXRlci9TTQpzY3JlZW53cml0aW5nL00Kc2NyZXcncwpzY3Jldy9VRFNHCnNjcmV3YmFsbC9NUwpzY3Jld2RyaXZlci9NUwpzY3Jld2luZXNzL00Kc2NyZXd3b3JtL1NNCnNjcmV3eS9QUlQKc2NyaWJhbApzY3JpYmJsZS9NWkdEUlMKc2NyaWJibGVyL00Kc2NyaWJlJ3MKc2NyaWJlL0NLSVMKc2NyaW0vTVMKc2NyaW1tYWdlL01HRFMKc2NyaW1wL1NERwpzY3JpbXNoYXcvTURHUwpzY3JpcC9NUwpzY3JpcHQvRlNNREcKc2NyaXB0ZWQvVQpzY3JpcHR1cmFsCnNjcmlwdHVyZS9NUwpzY3JpcHR3cml0ZXIvU00Kc2NyaXZlbmVyL1NNCnNjcm9kL00Kc2Nyb2Z1bGEvTQpzY3JvZnVsb3VzCnNjcm9nL1MKc2Nyb2xsL0dTTUQKc2Nyb29nZS9NUwpzY3JvdGEKc2Nyb3RhbApzY3JvdHVtL00Kc2Nyb3VuZ2UvRFJTWkcKc2Nyb3VuZ2VyL00Kc2Nyb3VuZ3kvVFIKc2NydWIvTVMKc2NydWJiZWQKc2NydWJiZXIvU00Kc2NydWJiaW5nCnNjcnViYnkvUlQKc2NydWZmL1NNCnNjcnVmZmlseQpzY3J1ZmZpbmVzcy9NCnNjcnVmZnkvUlBUCnNjcnVtL1MKc2NydW1oYWxmCnNjcnVtaGFsdmVzCnNjcnVtbWFnZS9TCnNjcnVtbWVkCnNjcnVtbWluZwpzY3J1bXAvU0dECnNjcnVtcHRpb3VzL1kKc2NydW1weQpzY3J1bmNoL01EU0cKc2NydW5jaHkvU00Kc2NydXBsZS9NR0RTCnNjcnVwdWxvc2l0eS9NCnNjcnVwdWxvdXMvVVBZCnNjcnVwdWxvdXNuZXNzL1VNCnNjcnV0aW5lZXIvUwpzY3J1dGluaXplL0dEUwpzY3J1dGlueS9NCnNjdWJhL01EU0cKc2N1ZC9NUwpzY3VkZGVkCnNjdWRkaW5nCnNjdWZmL01EU0cKc2N1ZmZsZS9NR0RTCnNjdWxsL01EUlNaRwpzY3VsbGVyL00Kc2N1bGxlcnkvU00Kc2N1bGxpb24vU00Kc2N1bHB0L1NHRApzY3VscHRvci9TTQpzY3VscHRyZXNzL01TCnNjdWxwdHVyYWwKc2N1bHB0dXJlL0RTTUcKc2N1bS9NUwpzY3VtYmFnL01TCnNjdW1tZWQKc2N1bW1pbmcKc2N1bW15L1RSCnNjdXBwZXIvTURHUwpzY3VyZi9NCnNjdXJmeQpzY3VycmlsaXR5L00Kc2N1cnJpbG91cy9QWQpzY3Vycmlsb3VzbmVzcy9NCnNjdXJyeS9HRFNNCnNjdXJ2aWx5CnNjdXJ2eS9UUk0Kc2N1dGNoZW9uL1NNCnNjdXR0bGUvTUdEUwpzY3V0dGxlYnV0dC9NCnNjdXp6eS9UUgpzY3l0aGUvRFNNRwpzZWEvU00Kc2VhYmVkL1NNCnNlYWJpcmQvTVMKc2VhYm9hcmQvU00Kc2VhYm9ybmUKc2VhY29hc3QvU00Kc2VhZmFyZXIvU00Kc2VhZmFyaW5nL00Kc2VhZmxvb3IvU00Kc2VhZm9vZC9NCnNlYWZyb250L1NNCnNlYWdvaW5nCnNlYWd1bGwvTVMKc2VhaG9yc2UvTVMKc2VhbCdzCnNlYWwvQVVTREcKc2VhbGFudC9NUwpzZWFsZXIvU00Kc2VhbHNraW4vTQpzZWFtL0dNRE5TCnNlYW1hbi9NCnNlYW1hbnNoaXAvTQpzZWFtbGVzcy9ZCnNlYW1vdW50L01TCnNlYW1zdHJlc3MvTVMKc2VhbXkvUlQKc2VhbmNlL1NNCnNlYXBsYW5lL1NNCnNlYXBvcnQvTVMKc2Vhci9HTURTCnNlYXJjaC9BWkdNRFJTCnNlYXJjaGVyL0FNCnNlYXJjaGluZy9ZCnNlYXJjaGxpZ2h0L01TCnNlYXJpbmcvWQpzZWFzY2FwZS9TTQpzZWFzaGVsbC9TTQpzZWFzaG9yZS9TTQpzZWFzaWNrL1AKc2Vhc2lja25lc3MvTQpzZWFzaWRlL01TCnNlYXNvbi9TR01EQkoKc2Vhc29uYWJsZS9VCnNlYXNvbmFibHkvVQpzZWFzb25hbC9ZCnNlYXNvbmFsaXR5CnNlYXNvbmVkL1UKc2Vhc29uaW5nL00Kc2VhdCdzCnNlYXQvVUdEUwpzZWF0aW5nL00Kc2VhdG1hdGUvU00Kc2Vhd2FsbC9NUwpzZWF3YXJkL01TCnNlYXdhdGVyL00Kc2Vhd2F5L1NNCnNlYXdlZWQvTVMKc2Vhd29ydGhpbmVzcy9NCnNlYXdvcnRoeS9QCnNlYmFjZW91cwpzZWJvcnJoZWEvTQpzZWJ1bQpzZWMneQpzZWMvU00Kc2VjYW50L1NNCnNlY2F0ZXVycwpzZWNlZGUvRFNHCnNlY2Vzc2lvbi9NCnNlY2Vzc2lvbmlzdC9NUwpzZWNsdWRlL0dEUwpzZWNsdXNpb24vTQpzZWNsdXNpdmUKc2Vjb25kL1NMWkdNRFJZCnNlY29uZGFyaWx5CnNlY29uZGFyeS9TTQpzZWNvbmRlci9NCnNlY29uZGhhbmQKc2Vjb25kbWVudC9TCnNlY3JlY3kvTQpzZWNyZXQvU0dWTURZCnNlY3JldGFyaWFsCnNlY3JldGFyaWF0L01TCnNlY3JldGFyeS9TTQpzZWNyZXRhcnlzaGlwL00Kc2VjcmV0ZS9YTlMKc2VjcmV0aW9uL00Kc2VjcmV0aXZlL1BZCnNlY3JldGl2ZW5lc3MvTQpzZWNyZXRvcnkKc2VjdC9JTVMKc2VjdGFyaWFuL01TCnNlY3RhcmlhbmlzbS9NCnNlY3RhcnkvU00Kc2VjdGlvbi9BRVNNCnNlY3Rpb25hbC9NUwpzZWN0aW9uYWxpc20vTQpzZWN0aW9uZWQKc2VjdGlvbmluZwpzZWN0b3IvRVNNCnNlY3VsYXIKc2VjdWxhcmlzbS9NCnNlY3VsYXJpc3QvU00Kc2VjdWxhcml6YXRpb24vTQpzZWN1bGFyaXplL0RTRwpzZWN1cmUvRFJTWVRHCnNlY3VyZWQvVQpzZWN1cml0eS9JU00Kc2VjeQpzZWRhbi9NUwpzZWRhdGUvRFJTWVRHTlZQCnNlZGF0ZW5lc3MvTQpzZWRhdGlvbi9NCnNlZGF0aXZlL1NNCnNlZGVudGFyeQpzZWRnZS9NCnNlZGd5CnNlZGltZW50L01TCnNlZGltZW50YXJ5CnNlZGltZW50YXRpb24vTQpzZWRpdGlvbi9NCnNlZGl0aW91cwpzZWR1Y2UvRFJTWkcKc2VkdWNlci9NCnNlZHVjdGlvbi9TTQpzZWR1Y3RpdmUvWVAKc2VkdWN0aXZlbmVzcy9NCnNlZHVjdHJlc3MvTVMKc2VkdWxvdXMvWQpzZWUvUlNNWgpzZWVkJ3MKc2VlZC9BR0RTCnNlZWRiZWQvTVMKc2VlZGNhc2UvTVMKc2VlZGVkL1UKc2VlZGVyL1NNCnNlZWRpbmVzcy9NCnNlZWRsZXNzCnNlZWRsaW5nL01TCnNlZWRwb2QvTVMKc2VlZHkvUlBUCnNlZWluZy9TCnNlZWsvWkdSUwpzZWVrZXIvTQpzZWVtL0dEUwpzZWVtaW5nL1kKc2VlbWxpbmVzcy9VTQpzZWVtbHkvVVJUUApzZWVuL1UKc2VlcC9HRFMKc2VlcGFnZS9NCnNlZXIvTQpzZWVyc3Vja2VyL00Kc2Vlc2F3L1NNREcKc2VldGhlL0RTRwpzZWdmYXVsdC9TCnNlZ21lbnQvR1NNRApzZWdtZW50YXRpb24vTQpzZWdtZW50ZWQvVQpzZWdyZWdhdGUvQ0RTR04Kc2VncmVnYXRlZC9VCnNlZ3JlZ2F0aW9uL0NNCnNlZ3JlZ2F0aW9uaXN0L01TCnNlZ3VlL01HRFMKc2VndWVpbmcKc2VpZ25ldXIvU00Kc2VpZ25pb3IvU00Kc2VpbmUvTVpHRFJTCnNlaW5lci9NCnNlaXNtaWMKc2Vpc21pY2FsbHkKc2Vpc21vZ3JhcGgvWk1SCnNlaXNtb2dyYXBoZXIvTQpzZWlzbW9ncmFwaGljCnNlaXNtb2dyYXBocwpzZWlzbW9ncmFwaHkvTQpzZWlzbW9sb2dpYwpzZWlzbW9sb2dpY2FsCnNlaXNtb2xvZ2lzdC9NUwpzZWlzbW9sb2d5L00Kc2VpemUvR0RTCnNlaXp1cmUvTVMKc2VsZG9tCnNlbGVjdC9DU0dWRApzZWxlY3Rpb24vU00Kc2VsZWN0aXZlL1kKc2VsZWN0aXZpdHkvTQpzZWxlY3RtYW4vTQpzZWxlY3RtZW4Kc2VsZWN0bmVzcy9NCnNlbGVjdG9yL01TCnNlbGVuaXVtL00Kc2VsZW5vZ3JhcGhlci9NUwpzZWxlbm9ncmFwaHkvTQpzZWxmL00Kc2VsZmllL1NNCnNlbGZpc2gvVVlQCnNlbGZpc2huZXNzL1VNCnNlbGZsZXNzL1BZCnNlbGZsZXNzbmVzcy9NCnNlbGZzYW1lCnNlbGwvWkdNUlMKc2VsbGVyL00Kc2VsbG9mZi9NUwpzZWxsb3RhcGUvRFNHCnNlbGxvdXQvTVMKc2VsdHplci9NUwpzZWx2YWdlL01TCnNlbHZlcwpzZW1hbnRpYy9TCnNlbWFudGljYWxseQpzZW1hbnRpY2lzdC9NUwpzZW1hbnRpY3MvTQpzZW1hcGhvcmUvRFNNRwpzZW1ibGFuY2UvQVNNCnNlbWVuL00Kc2VtZXN0ZXIvU00Kc2VtaS9NUwpzZW1pYW5udWFsL1kKc2VtaWFyaWQKc2VtaWF1dG9tYXRpYy9NUwpzZW1pYnJldmUvUwpzZW1pY2lyY2xlL1NNCnNlbWljaXJjdWxhcgpzZW1pY29sb24vTVMKc2VtaWNvbmR1Y3RpbmcKc2VtaWNvbmR1Y3Rvci9NUwpzZW1pY29uc2Npb3VzCnNlbWlkYXJrbmVzcy9NCnNlbWlkZXRhY2hlZApzZW1pZmluYWwvU00Kc2VtaWZpbmFsaXN0L01TCnNlbWlnbG9zcy9TCnNlbWltb250aGx5L1NNCnNlbWluYWwKc2VtaW5hci9NUwpzZW1pbmFyaWFuL1NNCnNlbWluYXJ5L1NNCnNlbWlvZmZpY2lhbApzZW1pb3RpYy9TCnNlbWlvdGljcy9NCnNlbWlwZXJtZWFibGUKc2VtaXByZWNpb3VzCnNlbWlwcml2YXRlCnNlbWlwcm8vUwpzZW1pcHJvZmVzc2lvbmFsL1NNCnNlbWlxdWF2ZXIvUwpzZW1pcmV0aXJlZApzZW1pc2tpbGxlZApzZW1pc29saWQKc2VtaXN3ZWV0CnNlbWl0b25lL1NNCnNlbWl0cmFpbGVyL01TCnNlbWl0cmFuc3BhcmVudApzZW1pdHJvcGljYWwKc2VtaXZvd2VsL1NNCnNlbWl3ZWVrbHkvU00Kc2VtaXllYXJseQpzZW1vbGluYS9NCnNlbXBzdHJlc3MvTVMKc2VuYXRlL1NNCnNlbmF0b3IvTVMKc2VuYXRvcmlhbApzZW5kL1pHUlMKc2VuZGVyL00Kc2VuZG9mZi9NUwpzZW5lc2NlbmNlL00Kc2VuZXNjZW50CnNlbmlsZQpzZW5pbGl0eS9NCnNlbmlvci9TTQpzZW5pb3JpdHkvTQpzZW5uYS9NCnNlbm9yL01TCnNlbm9yYS9TTQpzZW5vcml0YS9TTQpzZW5zYXRpb24vTVMKc2Vuc2F0aW9uYWwvWQpzZW5zYXRpb25hbGlzbS9NCnNlbnNhdGlvbmFsaXN0L01TCnNlbnNhdGlvbmFsaXplL0dEUwpzZW5zZS9NR0RTCnNlbnNlbGVzcy9QWQpzZW5zZWxlc3NuZXNzL00Kc2Vuc2liaWxpdGllcwpzZW5zaWJpbGl0eS9JTQpzZW5zaWJsZS9QCnNlbnNpYmxlbmVzcy9NCnNlbnNpYmx5L0kKc2Vuc2l0aXZlL1NNWVAKc2Vuc2l0aXZlbmVzcy9NCnNlbnNpdGl2aXRpZXMKc2Vuc2l0aXZpdHkvSU0Kc2Vuc2l0aXphdGlvbi9DTQpzZW5zaXRpemUvQ0RTRwpzZW5zb3IvU00Kc2Vuc29yeQpzZW5zdWFsL1kKc2Vuc3VhbGlzdC9TTQpzZW5zdWFsaXR5L00Kc2Vuc3VvdXMvWVAKc2Vuc3VvdXNuZXNzL00Kc2VudC9GQVUKc2VudGVuY2UvTUdEUwpzZW50ZW50aW91cy9ZCnNlbnRpZW5jZS9JTQpzZW50aWVudC9JCnNlbnRpbWVudC9TTQpzZW50aW1lbnRhbC9ZCnNlbnRpbWVudGFsaXNtL00Kc2VudGltZW50YWxpc3QvTVMKc2VudGltZW50YWxpdHkvTQpzZW50aW1lbnRhbGl6YXRpb24vTQpzZW50aW1lbnRhbGl6ZS9HRFMKc2VudGluZWwvTVMKc2VudHJ5L1NNCnNlcGFsL01TCnNlcGFyYWJpbGl0eS9JTQpzZXBhcmFibGUKc2VwYXJhYmx5L0kKc2VwYXJhdGUvWE1ZR05WRFNQCnNlcGFyYXRlbmVzcy9NCnNlcGFyYXRpb24vTQpzZXBhcmF0aXNtL00Kc2VwYXJhdGlzdC9NUwpzZXBhcmF0b3IvTVMKc2VwaWEvTQpzZXBzaXMvTQpzZXB0YQpzZXB0YWwKc2VwdGV0L1NNCnNlcHRpYwpzZXB0aWNlbWlhL00Kc2VwdGljZW1pYwpzZXB0dWFnZW5hcmlhbi9NUwpzZXB0dW0vTQpzZXB1bGNoZXIvR01EUwpzZXB1bGNocmFsCnNlcQpzZXF1ZWwvU00Kc2VxdWVuY2UvTVpHRFJTCnNlcXVlbmNpbmcvTQpzZXF1ZW50aWFsL0ZZCnNlcXVlc3Rlci9TREcKc2VxdWVzdHJhdGUvWEdORFMKc2VxdWVzdHJhdGlvbi9NCnNlcXVpbi9TTUQKc2VxdWlubmVkCnNlcXVpdHVyCnNlcXVvaWEvTVMKc2VyYWdsaW8vTVMKc2VyYXBlL1NNCnNlcmFwaC9NCnNlcmFwaGljCnNlcmFwaHMKc2VyZS9UUgpzZXJlbmFkZS9NR0RTCnNlcmVuZGlwaXRvdXMKc2VyZW5kaXBpdHkvTQpzZXJlbmUvUlBZVApzZXJlbmVuZXNzL00Kc2VyZW5pdHkvTQpzZXJmL01TCnNlcmZkb20vTQpzZXJnZS9NCnNlcmdlYW50L01TCnNlcmlhbC9TTVkKc2VyaWFsaXphdGlvbi9TTQpzZXJpYWxpemUvR0RTCnNlcmllcy9NCnNlcmlmL01TCnNlcmlncmFwaC9NCnNlcmlncmFwaHMKc2VyaW5lCnNlcmlvdXMvUFkKc2VyaW91c25lc3MvTQpzZXJtb24vU00Kc2VybW9uaXplL0dEUwpzZXJvbG9neS9NCnNlcm90b25pbgpzZXJvdXMKc2VycGVudC9NUwpzZXJwZW50aW5lL00Kc2VycmF0ZS9YTkQKc2VycmF0aW9uL00Kc2VycmllZApzZXJ1bS9NUwpzZXJ2YW50L01TCnNlcnZlJ3MvQUYKc2VydmUvRkFDR0RTCnNlcnZlci9TTQpzZXJ2ZXJ5L1MKc2VydmljZS9FTVMKc2VydmljZWFiaWxpdHkvTQpzZXJ2aWNlYWJsZQpzZXJ2aWNlZApzZXJ2aWNlbWFuL00Kc2VydmljZW1lbgpzZXJ2aWNld29tYW4vTQpzZXJ2aWNld29tZW4Kc2VydmljaW5nCnNlcnZpZXR0ZS9NUwpzZXJ2aWxlCnNlcnZpbGl0eS9NCnNlcnZpbmcncwpzZXJ2aW5ncwpzZXJ2aXRvci9NUwpzZXJ2aXR1ZGUvTQpzZXJ2by9NUwpzZXJ2b21lY2hhbmlzbS9TTQpzZXJ2b21vdG9yL01TCnNlc2FtZS9TTQpzZXNxdWljZW50ZW5uaWFsL01TCnNlc3Npb24vTVMKc2V0L0FJU00Kc2V0YmFjay9NUwpzZXRzY3Jldy9TTQpzZXRzcXVhcmUvUwpzZXR0L0JKWkdSUwpzZXR0ZWUvTVMKc2V0dGVyL00Kc2V0dGluZy9NCnNldHRsZSdzCnNldHRsZS9BVUdEUwpzZXR0bGVtZW50L0FNCnNldHRsZW1lbnRzCnNldHRsZXIvU00Kc2V0dXAvTVMKc2V2ZW4vTUhTCnNldmVudGVlbi9TTUgKc2V2ZW50ZWVudGgvTQpzZXZlbnRlZW50aHMKc2V2ZW50aC9NCnNldmVudGhzCnNldmVudGlldGgvTQpzZXZlbnRpZXRocwpzZXZlbnR5L1NNSApzZXZlci9FVEdEUwpzZXZlcmFsL01ZCnNldmVyYW5jZS9TTQpzZXZlcmUvWVBSCnNldmVyZW5lc3MvTQpzZXZlcml0eS9NCnNldy9BU0dECnNld2FnZS9NCnNld2VyL01TCnNld2VyYWdlL00Kc2V3aW5nL00Kc2V3bi9BCnNleC9HTURTCnNleGFnZW5hcmlhbi9TTQpzZXhpbHkKc2V4aW5lc3MvTQpzZXhpc20vTQpzZXhpc3QvTVMKc2V4bGVzcwpzZXhvbG9naXN0L1NNCnNleG9sb2d5L00Kc2V4cG90L01TCnNleHRhbnQvU00Kc2V4dGV0L01TCnNleHRpbmcKc2V4dG9uL01TCnNleHR1cGxldC9TTQpzZXh1YWwvWQpzZXh1YWxpdHkvTQpzZXh5L1BUUgpzZgpzaApzaGFiYmlseQpzaGFiYmluZXNzL00Kc2hhYmJ5L1BUUgpzaGFjay9NRFNHCnNoYWNrbGUncwpzaGFja2xlL1VHRFMKc2hhZC9HTURTSgpzaGFkZS9NUwpzaGFkaWx5CnNoYWRpbmVzcy9NCnNoYWRpbmcvTQpzaGFkb3cvU0dNRApzaGFkb3dib3gvR0RTCnNoYWRvd3kvUlQKc2hhZHkvUlBUCnNoYWZ0L01EU0cKc2hhZy9NUwpzaGFnZ2VkCnNoYWdnaW5lc3MvTQpzaGFnZ2luZwpzaGFnZ3kvVFBSCnNoYWgvTQpzaGFocwpzaGFrZS9NWkdSUwpzaGFrZWRvd24vU00Kc2hha2VuL1UKc2hha2VvdXQvTVMKc2hha2VyL00Kc2hha2V1cC9NUwpzaGFraWx5CnNoYWtpbmVzcy9NCnNoYWt5L1JQVApzaGFsZS9NCnNoYWxsCnNoYWxsb3QvTVMKc2hhbGxvdy9UUE1SWVMKc2hhbGxvd25lc3MvTQpzaGFsb20Kc2hhbHQKc2hhbS9HTURTCnNoYW1hbi9TTQpzaGFtYW5pYwpzaGFtYW5pc20Kc2hhbWFuaXN0aWMKc2hhbWJsZS9NR0RTCnNoYW1ibGVzL00Kc2hhbWJvbGljCnNoYW1lL01TCnNoYW1lZmFjZWQvWQpzaGFtZWZ1bC9QWQpzaGFtZWZ1bG5lc3MvTQpzaGFtZWxlc3MvWVAKc2hhbWVsZXNzbmVzcy9NCnNoYW1tZWQKc2hhbW1pbmcKc2hhbXBvby9aR01EUlMKc2hhbXBvb2VyL00Kc2hhbXJvY2svTVMKc2hhbid0CnNoYW5keS9TCnNoYW5naGFpL0RTRwpzaGFuay9NUwpzaGFudHVuZy9NCnNoYW50eS9TTQpzaGFudHl0b3duL1NNCnNoYXBlJ3MKc2hhcGUvQUdEUwpzaGFwZWQvVQpzaGFwZWxlc3MvWVAKc2hhcGVsZXNzbmVzcy9NCnNoYXBlbGluZXNzL00Kc2hhcGVseS9QVFIKc2hhcmQvTVMKc2hhcmUvTVpHRFJTCnNoYXJlYWJsZQpzaGFyZWNyb3AvUwpzaGFyZWNyb3BwZWQKc2hhcmVjcm9wcGVyL01TCnNoYXJlY3JvcHBpbmcKc2hhcmVob2xkZXIvU00Kc2hhcmVob2xkaW5nL1MKc2hhcmVyL00Kc2hhcmV3YXJlL00Kc2hhcmlhL00Kc2hhcmlhaApzaGFyay9NRFNHCnNoYXJrc2tpbi9NCnNoYXJwL01ETlJZU1BYWlRHCnNoYXJwZW4vQURHUwpzaGFycGVuZXIvTVMKc2hhcnBlci9NCnNoYXJwaWUvTVMKc2hhcnBpc2gKc2hhcnBuZXNzL00Kc2hhcnBzaG9vdGVyL1NNCnNoYXJwc2hvb3RpbmcvTQpzaGF0dGVyL0dNRFMKc2hhdHRlcnByb29mCnNoYXZlL01aR0RSU0oKc2hhdmVuL1UKc2hhdmVyL00Kc2hhdmluZy9NCnNoYXdsL01TCnNoYXkvTVMKc2hlJ2QKc2hlJ2xsCnNoZS9EU00Kc2hlYWYvTQpzaGVhci9NRFJTWkcKc2hlYXJlci9NCnNoZWF0aC9KTQpzaGVhdGhlL1VHRFMKc2hlYXRoaW5nL00Kc2hlYXRocwpzaGVhdmUvRFNNRwpzaGViYW5nL01TCnNoZWJlZW4vUwpzaGVkL01TCnNoZWRkaW5nCnNoZWVuL00Kc2hlZW55L1RSCnNoZWVwL00Kc2hlZXBkb2cvTVMKc2hlZXBmb2xkL1NNCnNoZWVwaGVyZGVyL01TCnNoZWVwaXNoL1lQCnNoZWVwaXNobmVzcy9NCnNoZWVwc2tpbi9NUwpzaGVlci9NRFJTUFRHCnNoZWVybmVzcy9NCnNoZWV0L01TRwpzaGVldGluZy9NCnNoZWV0bGlrZQpzaGVpa2RvbS9NUwpzaGVpa2gvTQpzaGVpa2hzCnNoZWlsYS9TCnNoZWtlbC9TTQpzaGVsZi9NCnNoZWxsL01EUlNHCnNoZWxsYWMvTVMKc2hlbGxhY2tlZApzaGVsbGFja2luZy9NUwpzaGVsbGZpcmUvTQpzaGVsbGZpc2gvTVMKc2hlbHRlci9HTURTCnNoZWx2ZS9HRFMKc2hlbHZpbmcvTQpzaGVuYW5pZ2FuL1NNCnNoZXBoZXJkL1NNREcKc2hlcGhlcmRlc3MvTVMKc2hlcmJldC9TTQpzaGVyaWZmL1NNCnNoZXJyeS9TTQpzaGV3L0dEUwpzaGV3bgpzaGgKc2hpYXRzdS9NCnNoaWJib2xldGgvTQpzaGliYm9sZXRocwpzaGllbGQvTURHUwpzaGlmdC9HTURTCnNoaWZ0aWx5CnNoaWZ0aW5lc3MvTQpzaGlmdGxlc3MvUFkKc2hpZnRsZXNzbmVzcy9NCnNoaWZ0eS9SUFQKc2hpaXRha2UvU00Kc2hpbGwvR01EU0oKc2hpbGxlbGFnaC9NCnNoaWxsZWxhZ2hzCnNoaWxsaW5nL00Kc2hpbS9NUwpzaGltbWVkCnNoaW1tZXIvU01ERwpzaGltbWVyeQpzaGltbWluZwpzaGltbXkvRFNNRwpzaGluL1pHTURSUwpzaGluYm9uZS9TTQpzaGluZGlnL1NNCnNoaW5lL01TCnNoaW5lci9NCnNoaW5nbGUvRFNNRwpzaGluZ3VhcmQvTQpzaGluaW5lc3MvTQpzaGlubmVkCnNoaW5uaW5nCnNoaW5ueS9EU0cKc2hpbnNwbGludHMvTQpzaGlueS9UUlAKc2hpcCdzCnNoaXAvQUxTCnNoaXBib2FyZC9NUwpzaGlwYnVpbGRlci9TTQpzaGlwYnVpbGRpbmcvTQpzaGlwbG9hZC9TTQpzaGlwbWF0ZS9TTQpzaGlwbWVudC9BTQpzaGlwbWVudHMKc2hpcG93bmVyL01TCnNoaXBwZWQvQQpzaGlwcGVyL1NNCnNoaXBwaW5nL00Kc2hpcHNoYXBlCnNoaXB3cmVjay9HTURTCnNoaXB3cmlnaHQvTVMKc2hpcHlhcmQvU00Kc2hpcmUvTVMKc2hpcmsvWkdEUlMKc2hpcmtlci9NCnNoaXJyL0dNRFNKCnNoaXJyaW5nL00Kc2hpcnQvR01EUwpzaGlydGZyb250L1NNCnNoaXJ0aW5nL00Kc2hpcnRsZXNzCnNoaXJ0c2xlZXZlL1NNCnNoaXJ0dGFpbC9TTQpzaGlydHdhaXN0L01TCnNoaXJ0eQpzaGl0L1NNIQpzaGl0ZmFjZWQvIQpzaGl0aGVhZC9TIQpzaGl0bG9hZC8hCnNoaXR0ZWQvIQpzaGl0dGluZy8hCnNoaXR0eS9SVCEKc2hpdi9aTVJTCnNoaXZlci9NREcKc2hpdmVyeQpzaG9hbC9HTURTCnNob2F0L01TCnNob2NrL1pHTURSUwpzaG9ja2VyL00Kc2hvY2tpbmcvWQpzaG9ja3Byb29mCnNob2QvVQpzaG9kZGlseQpzaG9kZGluZXNzL00Kc2hvZGR5L1BSTVQKc2hvZS9NUwpzaG9laG9ybi9HTURTCnNob2VpbmcKc2hvZWxhY2UvTVMKc2hvZW1ha2VyL1NNCnNob2VzaGluZS9TTQpzaG9lc3RyaW5nL1NNCnNob2V0cmVlL01TCnNob2d1bi9NUwpzaG9ndW5hdGUvTQpzaG9uZQpzaG9vL0dEUwpzaG9vawpzaG9vdC9aR01SU0oKc2hvb3Rlci9NCnNob290aW5nL00Kc2hvb3RvdXQvTVMKc2hvcC9NUwpzaG9wYWhvbGljL01TCnNob3BmaXR0ZXIvUwpzaG9wZml0dGluZwpzaG9wZnJvbnQvUwpzaG9wa2VlcGVyL01TCnNob3BsaWZ0L0RSWkdTCnNob3BsaWZ0ZXIvTQpzaG9wbGlmdGluZy9NCnNob3BwZS9NWkdEUlMKc2hvcHBlci9NCnNob3BwaW5nL00Kc2hvcHRhbGsvTQpzaG9wd29ybgpzaG9yZS9NR0RTCnNob3JlYmlyZC9TTQpzaG9yZWxpbmUvTVMKc2hvcmluZy9NCnNob3J0L1hUR01ETlJZU1AKc2hvcnRhZ2UvTVMKc2hvcnRicmVhZC9NCnNob3J0Y2FrZS9NUwpzaG9ydGNoYW5nZS9EU0cKc2hvcnRjb21pbmcvTVMKc2hvcnRjcnVzdApzaG9ydGN1dC9NUwpzaG9ydGVuL0pHRApzaG9ydGVuaW5nL00Kc2hvcnRmYWxsL01TCnNob3J0aGFuZC9NRApzaG9ydGhvcm4vTVMKc2hvcnRpc2gKc2hvcnRsaXN0L0RHUwpzaG9ydG5lc3MvTQpzaG9ydHNpZ2h0ZWQvUFkKc2hvcnRzaWdodGVkbmVzcy9NCnNob3J0c3RvcC9NUwpzaG9ydHdhdmUvTVMKc2hvcnR5L1NNCnNob3QvTVMKc2hvdGd1bi9TTQpzaG90Z3VubmVkCnNob3RndW5uaW5nCnNob3VsZApzaG91bGQndmUKc2hvdWxkZXIvTURHUwpzaG91bGRuJ3QKc2hvdXQvWkdNRFJTCnNob3V0ZXIvTQpzaG92ZS9NR0RTCnNob3ZlbC9NRFNHCnNob3ZlbGZ1bC9TTQpzaG93L0paR01EUlMKc2hvd2Jpei9NCnNob3dib2F0L01ER1MKc2hvd2Nhc2UvTUdEUwpzaG93ZG93bi9NUwpzaG93ZXIvTURHCnNob3dlcnByb29mCnNob3dlcnkKc2hvd2dpcmwvTVMKc2hvd2dyb3VuZC9TCnNob3dpbHkKc2hvd2luZXNzL00Kc2hvd2luZy9NCnNob3dqdW1waW5nCnNob3dtYW4vTQpzaG93bWFuc2hpcC9NCnNob3dtZW4Kc2hvd24Kc2hvd29mZi9TTQpzaG93cGllY2UvU00Kc2hvd3BsYWNlL1NNCnNob3dyb29tL01TCnNob3dzdG9wcGVyL01TCnNob3dzdG9wcGluZwpzaG93dGltZQpzaG93eS9UUlAKc2hwdApzaHJhbmsKc2hyYXBuZWwvTQpzaHJlZC9NUwpzaHJlZGRlZApzaHJlZGRlci9NUwpzaHJlZGRpbmcKc2hyZXcvTVMKc2hyZXdkL1JZUFQKc2hyZXdkbmVzcy9NCnNocmV3aXNoCnNocmllay9NRFNHCnNocmlmdC9NCnNocmlrZS9NUwpzaHJpbGwvRFJTUFRHCnNocmlsbG5lc3MvTQpzaHJpbGx5CnNocmltcC9NRFJTWkcKc2hyaW5lL01TCnNocmluay9NU0JHCnNocmlua2FnZS9NCnNocml2ZS9HRFMKc2hyaXZlbC9TR0QKc2hyaXZlbgpzaHJvdWQvR01EUwpzaHJ1Yi9NUwpzaHJ1YmJlcnkvU00Kc2hydWJieS9SVApzaHJ1Zy9NUwpzaHJ1Z2dlZApzaHJ1Z2dpbmcKc2hydW5rL04Kc2h0aWNrL01TCnNodWNrL0dNRFMKc2h1Y2tzL1MKc2h1ZGRlci9NRFNHCnNodWZmbGUvQU1HRFMKc2h1ZmZsZWJvYXJkL1NNCnNodWZmbGVyL1NNCnNodW4vUwpzaHVubmVkCnNodW5uaW5nCnNodW50L01TREcKc2h1c2gvRFNHCnNodXQvUwpzaHV0ZG93bi9TTQpzaHV0ZXllL00Kc2h1dG9mZi9TTQpzaHV0b3V0L1NNCnNodXR0ZXIvU01ERwpzaHV0dGVyYnVnL01TCnNodXR0aW5nCnNodXR0bGUvRFNNRwpzaHV0dGxlY29jay9HTURTCnNoeS9UR0RSU01ZCnNoeWVyCnNoeWVzdApzaHluZXNzL00Kc2h5c3Rlci9TTQpzaWJpbGFudC9TTQpzaWJsaW5nL1NNCnNpYnlsL01TCnNpYnlsbGluZQpzaWMvUwpzaWNjZWQKc2ljY2luZwpzaWNrL1BYVEdETlJZUwpzaWNrYmF5L1MKc2lja2JlZC9TTQpzaWNrZW4vREcKc2lja2VuaW5nL1kKc2lja2llL01TCnNpY2tpc2gKc2lja2xlL01TCnNpY2tseS9SVApzaWNrbmVzcy9NUwpzaWNrby9NUwpzaWNrb3V0L1NNCnNpY2tyb29tL01TCnNpZGUncwpzaWRlL0FHRFMKc2lkZWFybS9TTQpzaWRlYmFyL1NNCnNpZGVib2FyZC9TTQpzaWRlYnVybnMvTQpzaWRlY2FyL1NNCnNpZGVraWNrL1NNCnNpZGVsaWdodC9NUwpzaWRlbGluZS9EU01HCnNpZGVsb25nCnNpZGVtYW4vTQpzaWRlbWVuCnNpZGVwaWVjZS9NUwpzaWRlcmVhbApzaWRlc2FkZGxlL01TCnNpZGVzaG93L01TCnNpZGVzcGxpdHRpbmcKc2lkZXN0ZXAvTVMKc2lkZXN0ZXBwZWQKc2lkZXN0ZXBwaW5nCnNpZGVzdHJva2UvRFNNRwpzaWRlc3dpcGUvRFNNRwpzaWRldHJhY2svU01ERwpzaWRld2Fsay9NUwpzaWRld2FsbC9NUwpzaWRld2F5cwpzaWRld2luZGVyL1NNCnNpZGluZy9NUwpzaWRsZS9NR0RTCnNpZWdlL01TCnNpZW5uYS9NCnNpZXJyYS9NUwpzaWVzdGEvTVMKc2lldmUvTUdEUwpzaWZ0L1pHRFJTCnNpZnRlZC9VCnNpZnRlci9NCnNpZ2gvR01ECnNpZ2hzCnNpZ2h0L0dNRFlTSgpzaWdodGluZy9NCnNpZ2h0bGVzcwpzaWdodGx5L1VUUgpzaWdodHJlYWQKc2lnaHRzZWVpbmcvTQpzaWdodHNlZXIvTVMKc2lnbWEvTVMKc2lnbidzL0MKc2lnbi9BRkNHRFMKc2lnbmFnZS9NCnNpZ25hbC9NRFJZU1pHCnNpZ25hbGVyL00Kc2lnbmFsaXphdGlvbi9NCnNpZ25hbGl6ZS9HRFMKc2lnbmFsbWFuL00Kc2lnbmFsbWVuCnNpZ25hdG9yeS9TTQpzaWduYXR1cmUvTVMKc2lnbmJvYXJkL01TCnNpZ25lZC9VCnNpZ25lci9DTVMKc2lnbmV0L01TCnNpZ25pZmljYW5jZS9JTQpzaWduaWZpY2FudC9JWQpzaWduaWZpY2F0aW9uL00Kc2lnbmlmeS9YRFNORwpzaWduaW5nJ3MvQwpzaWduaW5ncwpzaWdub3IvRk1TCnNpZ25vcmEvU00Kc2lnbm9yZQpzaWdub3JpCnNpZ25vcmluYS9NUwpzaWdub3JpbmUKc2lnbnBvc3QvR1NNRApzaWxhZ2UvTQpzaWxlbmNlL0RSU01aRwpzaWxlbmNlci9NCnNpbGVudC9NUllTVApzaWxob3VldHRlL0RTTUcKc2lsaWNhL00Kc2lsaWNhdGUvTVMKc2lsaWNlb3VzCnNpbGljb24vU00Kc2lsaWNvbmUvTQpzaWxpY29zaXMvTQpzaWxrL01OUwpzaWxraWx5CnNpbGtpbmVzcy9NCnNpbGtzY3JlZW4vU00Kc2lsa3dvcm0vTVMKc2lsa3kvVFJQCnNpbGwvTVMKc2lsbGluZXNzL00Kc2lsbHkvVFJTTVAKc2lsby9NUwpzaWx0L0dNRFMKc2lsdHkvVFIKc2lsdmVyL0dNRFMKc2lsdmVyZmlzaC9NUwpzaWx2ZXJzbWl0aC9NCnNpbHZlcnNtaXRocwpzaWx2ZXJ3YXJlL00Kc2lsdmVyeQpzaW0vU00Kc2ltaWFuL01TCnNpbWlsYXIvWQpzaW1pbGFyaXR5L0VTTQpzaW1pbGUvTVMKc2ltaWxpdHVkZS9FTQpzaW1tZXIvR01EUwpzaW1vbml6ZS9EU0cKc2ltb255L00Kc2ltcGF0aWNvCnNpbXBlci9HTURTCnNpbXBlcmluZy9ZCnNpbXBsZS9UUlAKc2ltcGxlbWluZGVkCnNpbXBsZW5lc3MvTQpzaW1wbGV0b24vU00Kc2ltcGxleApzaW1wbGljaXR5L00Kc2ltcGxpZmljYXRpb24vTQpzaW1wbGlmeS9EU1hORwpzaW1wbGlzdGljCnNpbXBsaXN0aWNhbGx5CnNpbXBseQpzaW11bGFjcmEKc2ltdWxhY3J1bS9TCnNpbXVsYXRlL0VEU0dOCnNpbXVsYXRpb24vRU0Kc2ltdWxhdGlvbnMKc2ltdWxhdG9yL0VNUwpzaW11bGNhc3QvR01EUwpzaW11bHRhbmVpdHkvTQpzaW11bHRhbmVvdXMvWQpzaW4vQVNNCnNpbmNlCnNpbmNlcmUvSVlUCnNpbmNlcmVyCnNpbmNlcml0eS9JTQpzaW5lL01TCnNpbmVjdXJlL01TCnNpbmV3L01TCnNpbmV3eQpzaW5mdWwvUFkKc2luZnVsbmVzcy9NCnNpbmcvQlpHTURSWVMKc2luZ2Fsb25nL1MKc2luZ2UvTVMKc2luZ2VpbmcKc2luZ2VyL00Kc2luZ2luZy9NCnNpbmdsZS9QTUdEUwpzaW5nbGVuZXNzL00Kc2luZ2xlcy9NCnNpbmdsZXQvUwpzaW5nbGV0b24vU00Kc2luZ2xldHJlZS9TTQpzaW5nc29uZy9TTURHCnNpbmd1bGFyL1NNWQpzaW5ndWxhcml0eS9TTQpzaW5pc3RlcgpzaW5rL0JaR01SUwpzaW5rYWJsZS9VCnNpbmtlci9NCnNpbmtob2xlL1NNCnNpbmxlc3MKc2lubmVkCnNpbm5lci9NUwpzaW5uaW5nCnNpbm9sb2d5CnNpbnVvc2l0eS9NCnNpbnVvdXMvWQpzaW51cy9NUwpzaW51c2l0aXMvTQpzaW51c29pZGFsCnNpcC9TTQpzaXBob24vR01EUwpzaXBwZWQKc2lwcGVyL1NNCnNpcHBpbmcKc2lyL1NYTU4Kc2lyZS9DTUdEUwpzaXJlbi9NCnNpcmxvaW4vU00Kc2lyb2Njby9TTQpzaXJyYWgKc2lycmVlL00Kc2lzL01TCnNpc2FsL00Kc2lzc2lmaWVkCnNpc3N5L1JTTVQKc2lzdGVyL0FTTQpzaXN0ZXJob29kL01TCnNpc3RlcmxpbmVzcy9NCnNpc3Rlcmx5L1AKc2l0L1MKc2l0YXIvU00Kc2l0YXJpc3QvTVMKc2l0Y29tL1NNCnNpdGUvTUdEUwpzaXRlbWFwL1NNCnNpdHRlci9TTQpzaXR0aW5nL1NNCnNpdHVhdGUvRFNYR04Kc2l0dWF0aW9uL00Kc2l0dWF0aW9uYWwKc2l4L01TSApzaXhmb2xkCnNpeHBlbmNlL01TCnNpeHNob290ZXIvTQpzaXh0ZWVuL1NNSApzaXh0ZWVudGgvTQpzaXh0ZWVudGhzCnNpeHRoL00Kc2l4dGhzCnNpeHRpZXRoL00Kc2l4dGlldGhzCnNpeHR5L1NNSApzaXphYmxlCnNpemUncwpzaXplL0FHRFMKc2l6ZXIKc2l6aW5nL00Kc2l6emxlL0RSU01aRwpza2EvTQpza2F0ZS9NWkdEUlMKc2thdGVib2FyZC9NRFJTWkcKc2thdGVib2FyZGVyL00Kc2thdGVib2FyZGluZy9NCnNrYXRlci9NCnNrYXRpbmcvTQpza2VkYWRkbGUvTUdEUwpza2VldC9aTVIKc2tlaW4vTVMKc2tlbGV0YWwKc2tlbGV0b24vU00Kc2tlcHRpYy9TTQpza2VwdGljYWwvWQpza2VwdGljaXNtL00Kc2tldGNoL01EUlNaRwpza2V0Y2hib29rL1MKc2tldGNoZXIvTQpza2V0Y2hpbHkKc2tldGNoaW5lc3MvTQpza2V0Y2hwYWQvUwpza2V0Y2h5L1JUUApza2V3L01EUlpHUwpza2V3YmFsZC9TCnNrZXdlci9NREcKc2tpL1NaR01EUgpza2lib2IvUwpza2lkL01TCnNraWRkZWQKc2tpZGRpbmcKc2tpZHBhbi9TCnNraWVyL00Kc2tpZmYvU00Kc2tpZmZsZQpza2lpbmcvTQpza2lsZnVsbHkKc2tpbGwncwpza2lsbC9DU0QKc2tpbGxlZC9VCnNraWxsZXQvU00Kc2tpbGxmdWwvVVkKc2tpbGxmdWxuZXNzL00Kc2tpbS9NUwpza2ltbWVkCnNraW1tZXIvU00Kc2tpbW1pbmcKc2tpbXAvU0RHCnNraW1waWx5CnNraW1waW5lc3MvTQpza2ltcHkvUlRQCnNraW4vTVMKc2tpbmNhcmUvTQpza2luZmxpbnQvTVMKc2tpbmZ1bApza2luaGVhZC9NUwpza2lubGVzcwpza2lubmVkCnNraW5uaW5lc3MvTQpza2lubmluZwpza2lubnkvUk1UUApza2ludApza2ludGlnaHQKc2tpcC9NUwpza2lwcGVkCnNraXBwZXIvU01ERwpza2lwcGluZwpza2lybWlzaC9aR01EUlMKc2tpcnQvU01ERwpza2l0L01TCnNraXR0ZXIvR1NECnNraXR0aXNoL1lQCnNraXR0aXNobmVzcy9NCnNraXR0bGUvUwpza2l2ZS9EUlNaRwpza2l2dnkvRFNNRwpza29hbC9TTQpza3VhL1MKc2t1bGR1Z2dlcnkvTQpza3Vsay9TRFJaRwpza3Vsa2VyL00Kc2t1bGwvU00Kc2t1bGxjYXAvTVMKc2t1bmsvU01ERwpza3kvR1NNCnNreWNhcC9TTQpza3lkaXZlL0RSU1pHCnNreWRpdmVyL00Kc2t5ZGl2aW5nL00Kc2t5amFjay9KWkdTRFIKc2t5amFja2VyL00Kc2t5amFja2luZy9NCnNreWxhcmsvU0dNRApza3lsaWdodC9NUwpza3lsaW5lL1NNCnNreXJvY2tldC9HU01ECnNreXNjcmFwZXIvU00Kc2t5d2FyZC9TCnNreXdyaXRlci9TTQpza3l3cml0aW5nL00Kc2xhYi9NUwpzbGFiYmVkCnNsYWJiaW5nCnNsYWNrL1BYWlRHTUROUllTCnNsYWNrZW4vREcKc2xhY2tlci9NCnNsYWNrbmVzcy9NCnNsYWNrcy9NCnNsYWcvTVMKc2xhZ2dlZApzbGFnZ2luZwpzbGFnaGVhcC9TCnNsYWluCnNsYWtlL0dEUwpzbGFsb20vTVNERwpzbGFtL01TCnNsYW1tZWQKc2xhbW1lci9TTQpzbGFtbWluZwpzbGFuZGVyL01aR0RSUwpzbGFuZGVyZXIvTQpzbGFuZGVyb3VzCnNsYW5nL00Kc2xhbmd5L1JUCnNsYW50L01TREcKc2xhbnRpbmcvWQpzbGFudHdpc2UKc2xhcC9NUwpzbGFwZGFzaApzbGFwaGFwcHkKc2xhcHBlZApzbGFwcGVyL1MKc2xhcHBpbmcKc2xhcHN0aWNrL00Kc2xhc2gvTURSU1pHCnNsYXNoZXIvTQpzbGF0L01ER1MKc2xhdGUvU00Kc2xhdGhlci9TREcKc2xhdHRlZApzbGF0dGVybi9TTVkKc2xhdWdodGVyL01EUlpHUwpzbGF1Z2h0ZXJlci9NCnNsYXVnaHRlcmhvdXNlL01TCnNsYXZlL0RSU01aRwpzbGF2ZWhvbGRlci9NUwpzbGF2ZXIvTURHCnNsYXZlcnkvTQpzbGF2aXNoL1BZCnNsYXZpc2huZXNzL00Kc2xhdy9NCnNsYXkvRFJaR0pTCnNsYXllci9NCnNsYXlpbmcvTQpzbGVhemUvU00Kc2xlYXplYmFnL1MKc2xlYXplYmFsbC9TCnNsZWF6aWx5CnNsZWF6aW5lc3MvTQpzbGVhenkvUFJUCnNsZWQvTVMKc2xlZGRlZApzbGVkZGVyL1NNCnNsZWRkaW5nCnNsZWRnZS9EU01HCnNsZWRnZWhhbW1lci9HU01ECnNsZWVrL1NEUllUR1AKc2xlZWtuZXNzL00Kc2xlZXAvU01SWkcKc2xlZXBlci9NCnNsZWVwaWx5CnNsZWVwaW5lc3MvTQpzbGVlcGxlc3MvUFkKc2xlZXBsZXNzbmVzcy9NCnNsZWVwb3Zlci9TTQpzbGVlcHdhbGsvWkdTRFIKc2xlZXB3YWxrZXIvTQpzbGVlcHdhbGtpbmcvTQpzbGVlcHdlYXIvTQpzbGVlcHkvUlBUCnNsZWVweWhlYWQvTVMKc2xlZXQvU01ERwpzbGVldHkKc2xlZXZlL0RTTQpzbGVldmVsZXNzCnNsZWlnaC9NREcKc2xlaWdocwpzbGVpZ2h0L1NNCnNsZW5kZXIvUFJUCnNsZW5kZXJpemUvRFNHCnNsZW5kZXJuZXNzL00Kc2xlcHQKc2xldXRoL01HCnNsZXV0aHMKc2xldy9NREdTCnNsaWNlL0RSU01aRwpzbGljZXIvTQpzbGljay9TTURSWVpUR1AKc2xpY2tlci9NCnNsaWNrbmVzcy9NCnNsaWQKc2xpZGUvUlNNWkcKc2xpZGVyL00Kc2xpZGVzaG93L01TCnNsaWdodC9TTURSWVRHUApzbGlnaHRuZXNzL00Kc2xpbS9QUwpzbGltZS9NCnNsaW1pbmVzcy9NCnNsaW1saW5lCnNsaW1tZWQKc2xpbW1lci9TCnNsaW1tZXN0CnNsaW1taW5nL00Kc2xpbW5lc3MvTQpzbGlteS9SVFAKc2xpbmcvU01HCnNsaW5nYmFjay9TCnNsaW5nc2hvdC9TTQpzbGluay9TRwpzbGlua3kvUlQKc2xpcC9NUwpzbGlwY2FzZS9NUwpzbGlwY292ZXIvTVMKc2xpcGtub3QvTVMKc2xpcHBhZ2UvTVMKc2xpcHBlZApzbGlwcGVyL1NNCnNsaXBwZXJpbmVzcy9NCnNsaXBwZXJ5L1BSVApzbGlwcGluZwpzbGlwcHkKc2xpcHNob2QKc2xpcHN0cmVhbS9TTQpzbGlwd2F5L1NNCnNsaXQvTVMKc2xpdGhlci9TR01ECnNsaXRoZXJ5CnNsaXR0ZXIKc2xpdHRpbmcKc2xpdmVyL0dTTUQKc2xvYi9NUwpzbG9iYmVkCnNsb2JiZXIvTURTRwpzbG9iYmVyeQpzbG9iYmluZwpzbG9lL01TCnNsb2cvTVMKc2xvZ2FuL1NNCnNsb2dhbmVlcmluZwpzbG9nZ2VkCnNsb2dnaW5nCnNsb29wL1NNCnNsb3AvTURHUwpzbG9wZS9TTQpzbG9wcGVkCnNsb3BwaWx5CnNsb3BwaW5lc3MvTQpzbG9wcGluZwpzbG9wcHkvUFRSCnNsb3BzL00Kc2xvc2gvRFNHCnNsb3QvTVMKc2xvdGgvTQpzbG90aGZ1bC9ZUApzbG90aGZ1bG5lc3MvTQpzbG90aHMKc2xvdHRlZApzbG90dGluZwpzbG91Y2gvWkdNRFJTCnNsb3VjaGVyL00Kc2xvdWNoeS9UUgpzbG91Z2gvR01ECnNsb3VnaHMKc2xvdmVuL1NNWQpzbG92ZW5saW5lc3MvTQpzbG92ZW5seS9QVFIKc2xvdy9EUllUR1NQCnNsb3djb2FjaC9TCnNsb3dkb3duL1NNCnNsb3duZXNzL00Kc2xvd3Bva2UvU00Kc2x1ZGdlL00Kc2x1ZGd5L1JUCnNsdWUvTUdEUwpzbHVnL01TCnNsdWdnYXJkL01TCnNsdWdnZWQKc2x1Z2dlci9TTQpzbHVnZ2luZwpzbHVnZ2lzaC9QWQpzbHVnZ2lzaG5lc3MvTQpzbHVpY2UvRFNNRwpzbHVtL01TCnNsdW1iZXIvR1NNRApzbHVtYmVyb3VzCnNsdW1kb2cvU00Kc2x1bWxvcmQvTVMKc2x1bW1lZApzbHVtbWVyCnNsdW1taW5nCnNsdW1teS9SVApzbHVtcC9TTURHCnNsdW5nCnNsdW5rCnNsdXIvTVMKc2x1cnAvU01ERwpzbHVycmVkCnNsdXJyaW5nCnNsdXJyeS9NCnNsdXNoL00Kc2x1c2hpbmVzcy9NCnNsdXNoeS9SUFQKc2x1dC9NUwpzbHV0dGlzaApzbHV0dHkvUlQKc2x5L1RSWQpzbHluZXNzL00Kc21hY2svU01EUlpHCnNtYWNrZXIvTQpzbWFsbC9TTVJUUApzbWFsbGhvbGRlci9TCnNtYWxsaG9sZGluZy9TCnNtYWxsaXNoCnNtYWxsbmVzcy9NCnNtYWxscG94L00Kc21hcm15L1JUCnNtYXJ0L1NNRE5SWVhUR1AKc21hcnRlbi9ERwpzbWFydG5lc3MvTQpzbWFydHBob25lL1NNCnNtYXJ0cy9NCnNtYXJ0d2F0Y2gvTVMKc21hcnR5L1NNCnNtYXJ0eXBhbnRzL00Kc21hc2gvTURSU1pHCnNtYXNoZXIvTQpzbWFzaHVwL1NNCnNtYXR0ZXJpbmcvTVMKc21lYXIvU01ERwpzbWVhcnkvUlQKc21lbGwvU01ERwpzbWVsbGluZXNzL00Kc21lbGx5L1JQVApzbWVsdC9TTURSWkcKc21lbHRlci9NCnNtaWRnZW4vTVMKc21pbGF4L00Kc21pbGUvRFNNRwpzbWlsZXkvU00Kc21pbGluZy9ZCnNtaXJjaC9HTURTCnNtaXJrL1NNREcKc21pdGUvU0cKc21pdGgvTQpzbWl0aGVyZWVucy9NCnNtaXRocwpzbWl0aHkvU00Kc21pdHRlbgpzbW9jay9TTURHCnNtb2NraW5nL00Kc21vZy9NUwpzbW9nZ3kvUlQKc21va2UvRFJTTVpHCnNtb2tlaG91c2UvTVMKc21va2VsZXNzCnNtb2tlci9NCnNtb2tlc2NyZWVuL1NNCnNtb2tlc3RhY2svU00Kc21va2V5CnNtb2tpbmVzcy9NCnNtb2tpbmcvTQpzbW9reS9SVFAKc21vbGRlci9TR01ECnNtb29jaC9NRFNHCnNtb29jaHkKc21vb3RoL1BEUllURwpzbW9vdGhpZS9NUwpzbW9vdGhuZXNzL00Kc21vb3RocwpzbW9yZ2FzYm9yZC9TTQpzbW90ZQpzbW90aGVyL0dTTUQKc211ZGdlL0RTTUcKc211ZGd5L1RSCnNtdWcvWVAKc211Z2dlcgpzbXVnZ2VzdApzbXVnZ2xlL1pHRFJTCnNtdWdnbGVyL00Kc211Z2dsaW5nL00Kc211Z25lc3MvTQpzbXVyZi9TCnNtdXQvTVMKc211dHRpbmVzcy9NCnNtdXR0eS9UUlAKc25hY2svU01ERwpzbmFmZmxlL0RTTUcKc25hZnUvU00Kc25hZy9NUwpzbmFnZ2VkCnNuYWdnaW5nCnNuYWlsL1NNREcKc25ha2UvRFNNRwpzbmFrZWJpdGUvTVMKc25ha2VsaWtlCnNuYWtlc2tpbgpzbmFreS9SVApzbmFwJ3MKc25hcC9VUwpzbmFwZHJhZ29uL1NNCnNuYXBwZWQvVQpzbmFwcGVyL01TCnNuYXBwaWx5CnNuYXBwaW5lc3MvTQpzbmFwcGluZy9VCnNuYXBwaXNoL1lQCnNuYXBwaXNobmVzcy9NCnNuYXBweS9UUlAKc25hcHNob3QvU00Kc25hcmUvRFNNRwpzbmFyZi9TREcKc25hcmsvUwpzbmFya3kvVFIKc25hcmwncwpzbmFybC9VU0RHCnNuYXJsaW5nL1kKc25hcmx5L1RSCnNuYXRjaC9aR01EUlMKc25hdGNoZXIvTQpzbmF6emlseQpzbmF6enkvVFIKc25lYWsvU01EUlpHCnNuZWFrZXIvTQpzbmVha2lseQpzbmVha2luZXNzL00Kc25lYWtpbmcvWQpzbmVha3kvVFJQCnNuZWVyL1NKTURHCnNuZWVyaW5nL1kKc25lZXplL0RTTUcKc25pY2svU0RSWkcKc25pY2tlci9NREcKc25pZGUvUllUCnNuaWZmL1NNRFJaRwpzbmlmZmVyL00Kc25pZmZsZS9EU01HCnNuaWZmeS9SVApzbmlmdGVyL1NNCnNuaXAvTURSWkdTCnNuaXBlL1NNCnNuaXBlci9NCnNuaXBwZWQKc25pcHBldC9TTQpzbmlwcGluZwpzbmlwcHkvUlQKc25pcHMvTQpzbml0L01TCnNuaXRjaC9NRFNHCnNuaXZlbC9TTURSWkcKc25pdmVsZXIvTQpzbm9iL01TCnNub2JiZXJ5L00Kc25vYmJpc2gvUFkKc25vYmJpc2huZXNzL00Kc25vYmJ5L1JUCnNub2cvUwpzbm9nZ2VkCnNub2dnaW5nCnNub29kL1NNCnNub29rZXIvTURTRwpzbm9vcC9TTURSWkcKc25vb3Blci9NCnNub29weS9UUgpzbm9vdC9TTQpzbm9vdGlseQpzbm9vdGluZXNzL00Kc25vb3R5L1BUUgpzbm9vemUvRFNNRwpzbm9yZS9EUlNNWkcKc25vcmVyL00Kc25vcmtlbC9aR01EUlMKc25vcmtlbGVyL00Kc25vcmtlbGluZy9NCnNub3J0L1NNRFJaRwpzbm9ydGVyL00Kc25vdC9NUwpzbm90dGlseQpzbm90dGluZXNzL00Kc25vdHR5L1RQUgpzbm91dC9TTQpzbm93L01ER1MKc25vd2JhbGwvR1NNRApzbm93YmFuay9TTQpzbm93YmlyZC9TTQpzbm93Ymxvd2VyL01TCnNub3dib2FyZC9aR01EUlMKc25vd2JvYXJkZXIvTQpzbm93Ym9hcmRpbmcvTQpzbm93Ym91bmQKc25vd2RyaWZ0L1NNCnNub3dkcm9wL1NNCnNub3dmYWxsL1NNCnNub3dmaWVsZC9TTQpzbm93Zmxha2UvU00Kc25vd2luZXNzL00Kc25vd2xpbmUKc25vd21hbi9NCnNub3dtZW4Kc25vd21vYmlsZS9EU01HCnNub3dwbG93L1NHTUQKc25vd3NoZWQKc25vd3Nob2UvU00Kc25vd3Nob2VpbmcKc25vd3N0b3JtL1NNCnNub3dzdWl0L1NNCnNub3d5L1BSVApzbnViL01TCnNudWJiZWQKc251YmJpbmcKc251ZmYvU01EUllaRwpzbnVmZmJveC9NUwpzbnVmZmVyL00Kc251ZmZsZS9NR0RTCnNudWcvTVlTUApzbnVnZ2VkCnNudWdnZXIKc251Z2dlc3QKc251Z2dpbmcKc251Z2dsZS9NR0RTCnNudWduZXNzL00Kc28Kc29hay9NREdTSgpzb2FraW5nL00Kc29hcC9NREdTCnNvYXBib3gvTVMKc29hcGluZXNzL00Kc29hcHN0b25lL00Kc29hcHN1ZHMvTQpzb2FweS9SUFQKc29hci9NREdTCnNvYi9TTQpzb2JiZWQKc29iYmluZy9ZCnNvYmVyL1NEUllQVEcKc29iZXJuZXNzL00Kc29icmlldHkvSU0Kc29icmlxdWV0L1NNCnNvYwpzb2NjZXIvTQpzb2NpYWJpbGl0eS9NCnNvY2lhYmxlL1NNCnNvY2lhYmx5CnNvY2lhbC9TTVkKc29jaWFsaXNtL00Kc29jaWFsaXN0L1NNCnNvY2lhbGlzdGljCnNvY2lhbGl0ZS9TTQpzb2NpYWxpemF0aW9uL00Kc29jaWFsaXplL0RTRwpzb2NpZXRhbApzb2NpZXR5L1NNCnNvY2lvZWNvbm9taWMKc29jaW9lY29ub21pY2FsbHkKc29jaW9sb2dpY2FsL1kKc29jaW9sb2dpc3QvU00Kc29jaW9sb2d5L00Kc29jaW9wYXRoL00Kc29jaW9wYXRocwpzb2Npb3BvbGl0aWNhbApzb2NrL01ER1MKc29ja2V0L1NNCnNvY2tleWUvU00Kc29kL1NNCnNvZGEvTVMKc29kZGVkCnNvZGRlbi9ZCnNvZGRpbmcKc29kaXVtL00Kc29kb21pdGUvTVMKc29kb21pemUvR0RTCnNvZG9teS9NCnNvZXZlcgpzb2ZhL01TCnNvZnQvTlJZWFRQCnNvZnRiYWNrCnNvZnRiYWxsL01TCnNvZnRib3VuZApzb2Z0Y292ZXIKc29mdGVuL0RSWkcKc29mdGVuZXIvTQpzb2Z0aGVhcnRlZApzb2Z0bmVzcy9NCnNvZnR3YXJlL00Kc29mdHdvb2QvU00Kc29mdHkvU00Kc29nZ2lseQpzb2dnaW5lc3MvTQpzb2dneS9SVFAKc29pZ25lCnNvaWduZWUKc29pbC9NREdTCnNvaWxlZC9VCnNvaXJlZS9TTQpzb2pvdXJuL1pHTURSUwpzb2pvdXJuZXIvTQpzb2wvU00Kc29sYWNlL0RTTUcKc29sYXIKc29sYXJpYQpzb2xhcml1bS9NCnNvbGQKc29sZGVyL1pHU01EUgpzb2xkZXJlci9NCnNvbGRpZXIvTURZU0cKc29sZGllcnkvTQpzb2xlL0ZTREdNCnNvbGVjaXNtL1NNCnNvbGVseQpzb2xlbW4vUFRSWQpzb2xlbW5lc3MvTQpzb2xlbW5pZnkvRFNHCnNvbGVtbml0eS9TTQpzb2xlbW5pemF0aW9uL00Kc29sZW1uaXplL0RTRwpzb2xlbW5uZXNzL00Kc29sZW5vaWQvTVMKc29saWNpdC9HRFMKc29saWNpdGF0aW9uL1NNCnNvbGljaXRlZC9VCnNvbGljaXRvci9TTQpzb2xpY2l0b3VzL1BZCnNvbGljaXRvdXNuZXNzL00Kc29saWNpdHVkZS9NCnNvbGlkL1BTTVJZVApzb2xpZGFyaXR5L00Kc29saWRpCnNvbGlkaWZpY2F0aW9uL00Kc29saWRpZnkvRFNORwpzb2xpZGl0eS9NCnNvbGlkbmVzcy9NCnNvbGlkdXMvTQpzb2xpbG9xdWllcwpzb2xpbG9xdWl6ZS9EU0cKc29saWxvcXV5L00Kc29saXBzaXNtL00Kc29saXBzaXN0aWMKc29saXRhaXJlL01TCnNvbGl0YXJpbmVzcy9NCnNvbGl0YXJ5L1NNUApzb2xpdHVkZS9NCnNvbG8vTURHUwpzb2xvaXN0L01TCnNvbHN0aWNlL01TCnNvbHViaWxpdHkvSU0Kc29sdWJsZS9NUwpzb2x1dGUncwpzb2x1dGUvQVhOCnNvbHV0ZXMKc29sdXRpb24ncy9BRQpzb2x2YWJsZS9JVQpzb2x2ZS9FQURTRwpzb2x2ZWQvVQpzb2x2ZW5jeS9JTQpzb2x2ZW50L0lNUwpzb2x2ZXIvU00Kc29tYXRpYwpzb21iZXIvUFkKc29tYmVybmVzcy9NCnNvbWJyZXJvL01TCnNvbWUKc29tZWJvZHkvU00Kc29tZWRheQpzb21laG93CnNvbWVvbmUvTVMKc29tZXBsYWNlCnNvbWVyc2F1bHQvTURHUwpzb21lcnNldC9TTQpzb21lcnNldHRlZApzb21lcnNldHRpbmcKc29tZXRoaW5nL1NNCnNvbWV0aW1lL1MKc29tZXdheS9TCnNvbWV3aGF0L1MKc29tZXdoZXJlCnNvbW5hbWJ1bGlzbS9NCnNvbW5hbWJ1bGlzdC9TTQpzb21ub2xlbmNlL00Kc29tbm9sZW50CnNvbi9TTQpzb25hci9TTQpzb25hdGEvU00Kc29uYXRpbmEvU00Kc29uZy9NUwpzb25nYmlyZC9TTQpzb25nYm9vay9TTQpzb25nZmVzdC9TTQpzb25nc3Rlci9NUwpzb25nc3RyZXNzL01TCnNvbmd3cml0ZXIvU00Kc29uZ3dyaXRpbmcKc29uaWMKc29ubmV0L1NNCnNvbm55L1NNCnNvbm9ncmFtL1NNCnNvbm9yaXR5L00Kc29ub3JvdXMvWVAKc29ub3JvdXNuZXNzL00Kc29uc29mYml0Y2hlcwpzb29uL1JUCnNvb3QvTQpzb290aC9NRFJTWkcKc29vdGhlCnNvb3RoZXIvTQpzb290aGluZy9ZCnNvb3Roc2F5ZXIvTVMKc29vdGhzYXlpbmcvTQpzb290eS9SVApzb3AvU00Kc29waApzb3BoaXNtL00Kc29waGlzdC9NUwpzb3BoaXN0aWMKc29waGlzdGljYWwKc29waGlzdGljYXRlL0RTTUdOCnNvcGhpc3RpY2F0ZWQvVQpzb3BoaXN0aWNhdGlvbi9NCnNvcGhpc3RyeS9TTQpzb3Bob21vcmUvTVMKc29waG9tb3JpYwpzb3BvcmlmaWMvTVMKc29wb3JpZmljYWxseQpzb3BwZWQKc29wcGluZwpzb3BweS9SVApzb3ByYW5vL01TCnNvcmJldC9TTQpzb3JjZXJlci9NUwpzb3JjZXJlc3MvTVMKc29yY2VyeS9NCnNvcmRpZC9QWQpzb3JkaWRuZXNzL00Kc29yZS9NWVRSU1AKc29yZWhlYWQvTVMKc29yZW5lc3MvTQpzb3JnaHVtL00Kc29yb3JpdHkvU00Kc29ycmVsL1NNCnNvcnJpbHkKc29ycmluZXNzL00Kc29ycm93L1NNREcKc29ycm93ZnVsL1lQCnNvcnJvd2Z1bG5lc3MvTQpzb3JyeS9SVFAKc29ydC9GQVNHRE0Kc29ydGEKc29ydGVkL1UKc29ydGVyL1NNCnNvcnRpZS9EU00Kc29ydGllaW5nCnNvdC9TTQpzb3R0aXNoCnNvdSd3ZXN0ZXIKc291L1NNSApzb3VmZmxlL1NNCnNvdWdoL01ERwpzb3VnaHMKc291Z2h0L1UKc291ay9TCnNvdWwvTVMKc291bGZ1bC9ZUApzb3VsZnVsbmVzcy9NCnNvdWxsZXNzL1lQCnNvdWxtYXRlL1NNCnNvdW5kL0pQU01EUllaVEcKc291bmRhbGlrZS9TCnNvdW5kYmFyL1MKc291bmRiaXRlL1MKc291bmRib2FyZC9NUwpzb3VuZGNoZWNrL1MKc291bmRlci9NCnNvdW5kaW5nL00Kc291bmRsZXNzL1kKc291bmRuZXNzL1VNCnNvdW5kcHJvb2YvR0RTCnNvdW5kcHJvb2ZpbmcvTQpzb3VuZHNjYXBlL1MKc291bmR0cmFjay9TTQpzb3VwL01ER1MKc291cGNvbi9NUwpzb3VweS9SVApzb3VyL01EUllUR1NQCnNvdXJjZS9BRFNNRwpzb3VyZG91Z2gvTQpzb3VyZG91Z2hzCnNvdXJpc2gKc291cm5lc3MvTQpzb3VycHVzcy9NUwpzb3VzYXBob25lL01TCnNvdXNlL0RTTUcKc291dGgvTQpzb3V0aGJvdW5kCnNvdXRoZWFzdC9aTVIKc291dGhlYXN0ZXIvTVkKc291dGhlYXN0ZXJuCnNvdXRoZWFzdHdhcmQvUwpzb3V0aGVybHkvU00Kc291dGhlcm4vU1pNUgpzb3V0aGVybmVyL00Kc291dGhlcm5tb3N0CnNvdXRocGF3L1NNCnNvdXRod2FyZC9NUwpzb3V0aHdlc3QvWk1SCnNvdXRod2VzdGVyL01ZCnNvdXRod2VzdGVybgpzb3V0aHdlc3R3YXJkL1MKc291dmVuaXIvU00Kc292ZXJlaWduL1NNCnNvdmVyZWlnbnR5L00Kc292aWV0L1NNCnNvdydzCnNvdy9BU0dECnNvd2VyL1NNCnNvd24vQQpzb3kvTQpzb3liZWFuL01TCnNvenpsZWQKc3BhL1NNCnNwYWNlL0RSU01aRwpzcGFjZWNyYWZ0L01TCnNwYWNlZmxpZ2h0L01TCnNwYWNlbWFuL00Kc3BhY2VtZW4Kc3BhY2Vwb3J0L1NNCnNwYWNlci9NCnNwYWNlc2hpcC9TTQpzcGFjZXN1aXQvU00Kc3BhY2V3YWxrL1NHTUQKc3BhY2V3b21hbi9NCnNwYWNld29tZW4Kc3BhY2V5CnNwYWNpYWwKc3BhY2llcgpzcGFjaWVzdApzcGFjaW5lc3MvTQpzcGFjaW5nL00Kc3BhY2lvdXMvWVAKc3BhY2lvdXNuZXNzL00Kc3BhZGUvRFNNRwpzcGFkZWZ1bC9NUwpzcGFkZXdvcmsvTQpzcGFkaWNlcwpzcGFkaXgvTQpzcGFnaGV0dGkvTQpzcGFrZQpzcGFtL01TCnNwYW1tZWQKc3BhbW1lci9TTQpzcGFtbWluZwpzcGFuL01TCnNwYW5kZXgvTQpzcGFuZ2xlL0RTTUcKc3BhbmdseQpzcGFuaWVsL1NNCnNwYW5rL1NNREdKCnNwYW5raW5nL00Kc3Bhbm5lZApzcGFubmVyL1NNCnNwYW5uaW5nCnNwYXIvTVMKc3BhcmUvRFJTTVlUR1AKc3BhcmVuZXNzL00Kc3BhcmVyaWJzL00Kc3BhcmluZy9VWQpzcGFyay9TTURZRwpzcGFya2xlL0RSU01aRwpzcGFya2xlci9NCnNwYXJreS9SVApzcGFycmVkCnNwYXJyaW5nCnNwYXJyb3cvU00Kc3BhcnJvd2hhd2svUwpzcGFyc2UvUllUUApzcGFyc2VuZXNzL00Kc3BhcnNpdHkvTQpzcGFydGFuCnNwYXNtL1NNCnNwYXNtb2RpYwpzcGFzbW9kaWNhbGx5CnNwYXN0aWMvU00Kc3BhdC9NUwpzcGF0ZS9TTQpzcGF0aGUvU00Kc3BhdGlhbC9ZCnNwYXR0ZWQKc3BhdHRlci9TR01ECnNwYXR0aW5nCnNwYXR1bGEvU00Kc3BhdmluL01ECnNwYXduL1NNREcKc3BheS9ER1MKc3BlYWsvU1JaR0oKc3BlYWtlYXN5L1NNCnNwZWFrZXIvTQpzcGVha2VycGhvbmUvUwpzcGVhci9TTURHCnNwZWFyZmlzaC9HTURTCnNwZWFyZ3VuCnNwZWFyaGVhZC9HTURTCnNwZWFybWludC9NCnNwZWMvTVMKc3BlY2lhbC9TTVkKc3BlY2lhbGlzbS9TCnNwZWNpYWxpc3QvTVMKc3BlY2lhbGl6YXRpb24vTVMKc3BlY2lhbGl6ZS9HRFMKc3BlY2lhbHR5L1NNCnNwZWNpZS9TTQpzcGVjaWVzL00Kc3BlY2lmCnNwZWNpZmlhYmxlCnNwZWNpZmljL01TCnNwZWNpZmljYWxseQpzcGVjaWZpY2F0aW9uL00Kc3BlY2lmaWNpdHkvTQpzcGVjaWZpZWQvVQpzcGVjaWZ5L1hOWkRSU0cKc3BlY2ltZW4vU00Kc3BlY2lvdXMvWVAKc3BlY2lvdXNuZXNzL00Kc3BlY2svU01ERwpzcGVja2xlL01HRFMKc3BlY3MvTQpzcGVjdGFjbGUvU00Kc3BlY3RhY2xlcy9NCnNwZWN0YWN1bGFyL01ZUwpzcGVjdGF0ZS9EU0cKc3BlY3RhdG9yL1NNCnNwZWN0ZXIvQU1TCnNwZWN0cmEKc3BlY3RyYWwKc3BlY3Ryb21ldGVyL01TCnNwZWN0cm9zY29wZS9NUwpzcGVjdHJvc2NvcGljCnNwZWN0cm9zY29weS9NCnNwZWN0cnVtL00Kc3BlY3VsYXRlL0RTWEdOVgpzcGVjdWxhdGlvbi9NCnNwZWN1bGF0aXZlL1kKc3BlY3VsYXRvci9NUwpzcGVkCnNwZWVjaC9NUwpzcGVlY2hpZnkvRFNHCnNwZWVjaGxlc3MvWVAKc3BlZWNobGVzc25lc3MvTQpzcGVlY2h3cml0ZXIvUwpzcGVlZC9TTVJaRwpzcGVlZGJvYXQvU00Kc3BlZWRlci9NCnNwZWVkaWx5CnNwZWVkaW5lc3MvTQpzcGVlZGluZy9NCnNwZWVkb21ldGVyL01TCnNwZWVkc3Rlci9TTQpzcGVlZHVwL01TCnNwZWVkd2F5L1NNCnNwZWVkd2VsbC9NCnNwZWVkeS9UUFIKc3BlbGVvbG9naWNhbApzcGVsZW9sb2dpc3QvTVMKc3BlbGVvbG9neS9NCnNwZWxsL0pTTURSWkcKc3BlbGxiaW5kL1pHUlMKc3BlbGxiaW5kZXIvTQpzcGVsbGJvdW5kCnNwZWxsY2hlY2svTURSWkdTCnNwZWxsY2hlY2tlci9NCnNwZWxsZG93bi9TTQpzcGVsbGVyL00Kc3BlbGxpbmcvTQpzcGVsdW5rZXIvTVMKc3BlbHVua2luZy9NCnNwZW5kL0JTUlpHCnNwZW5kZXIvTQpzcGVuZGluZy9NCnNwZW5kdGhyaWZ0L01TCnNwZW50L1UKc3Blcm0vU00Kc3Blcm1hdG96b2EKc3Blcm1hdG96b29uL00Kc3Blcm1pY2lkYWwKc3Blcm1pY2lkZS9NUwpzcGV3L01EUlpHUwpzcGV3ZXIvTQpzcGhhZ251bS9NUwpzcGhlcmUvU00Kc3BoZXJpY2FsL1kKc3BoZXJvaWQvU00Kc3BoZXJvaWRhbApzcGhpbmN0ZXIvTVMKc3BoaW54L01TCnNwaWMvUwpzcGljZS9EU01HCnNwaWNpbHkKc3BpY2luZXNzL00Kc3BpY3VsZS9NUwpzcGljeS9QUlQKc3BpZGVyL1NNCnNwaWRlcndlYi9NUwpzcGlkZXJ5CnNwaWVsL1NNREcKc3BpZmYvU0RHCnNwaWZmeS9UUgpzcGlnb3QvU00Kc3Bpa2UvRFNNRwpzcGlraW5lc3MvTQpzcGlreS9SUFQKc3BpbGwvU01ERwpzcGlsbGFnZS9NUwpzcGlsbG92ZXIvU00Kc3BpbGx3YXkvTVMKc3Bpbi9NUwpzcGluYWNoL00Kc3BpbmFsL1NNWQpzcGluZGxlL01HRFMKc3BpbmRseS9UUgpzcGluZS9TTQpzcGluZWxlc3MvWVAKc3BpbmV0L1NNCnNwaW5uYWtlci9TTQpzcGlubmVyL01TCnNwaW5uZXJldC9TTQpzcGlubmV5L1MKc3Bpbm5pbmcvTQpzcGluc3Rlci9TTQpzcGluc3Rlcmhvb2QvTQpzcGluc3RlcmlzaApzcGlueS9SVApzcGlyYWNsZS9TTQpzcGlyYWwvU0dNRFkKc3BpcmUncwpzcGlyZS9JRkFTCnNwaXJlYS9TTQpzcGlyaXQncwpzcGlyaXQvSVNHRApzcGlyaXRlZC9ZCnNwaXJpdGxlc3MKc3Bpcml0dWFsL01ZUwpzcGlyaXR1YWxpc20vTQpzcGlyaXR1YWxpc3QvTVMKc3Bpcml0dWFsaXN0aWMKc3Bpcml0dWFsaXR5L00Kc3Bpcml0dW91cwpzcGlyb2NoZXRlL1NNCnNwaXJ5CnNwaXQvTURHUwpzcGl0YmFsbC9TTQpzcGl0ZS9BU00Kc3BpdGVmdWwvUFkKc3BpdGVmdWxsZXIKc3BpdGVmdWxsZXN0CnNwaXRlZnVsbmVzcy9NCnNwaXRmaXJlL1NNCnNwaXR0ZWQKc3BpdHRpbmcKc3BpdHRsZS9NCnNwaXR0b29uL01TCnNwaXYvUwpzcGxhc2gvR01EUwpzcGxhc2hkb3duL01TCnNwbGFzaGlseQpzcGxhc2hpbmVzcy9NCnNwbGFzaHkvUlRQCnNwbGF0L1NNCnNwbGF0dGVkCnNwbGF0dGVyL0dTTUQKc3BsYXR0aW5nCnNwbGF5L1NNREcKc3BsYXlmZWV0CnNwbGF5Zm9vdC9NRApzcGxlZW4vU00Kc3BsZW5kaWQvUllUCnNwbGVuZG9yL01TCnNwbGVuZG9yb3VzCnNwbGVuZWN0b215CnNwbGVuZXRpYwpzcGxpY2UvRFJTTVpHCnNwbGljZXIvTQpzcGxpZmYvUwpzcGxpbmUvUwpzcGxpbnQvU1pHTURSCnNwbGludGVyL01ERwpzcGxpbnRlcnkKc3BsaXQvU00Kc3BsaXR0aW5nL01TCnNwbG9kZ2UvUwpzcGxvc2gvRFNHCnNwbG90Y2gvTURTRwpzcGxvdGNoeS9UUgpzcGx1cmdlL0RTTUcKc3BsdXR0ZXIvR01EUwpzcG9pbCdzCnNwb2lsL0NTRFJaRwpzcG9pbGFnZS9NCnNwb2lsZWQvVQpzcG9pbGVyL0NNCnNwb2lsc3BvcnQvTVMKc3Bva2UvU00Kc3Bva2VuL1UKc3Bva2VzbWFuL00Kc3Bva2VzbWVuCnNwb2tlc3Blb3BsZQpzcG9rZXNwZXJzb24vTVMKc3Bva2Vzd29tYW4vTQpzcG9rZXN3b21lbgpzcG9saWF0aW9uL0NNCnNwb25nZS9EUlNNWkcKc3BvbmdlY2FrZS9NCnNwb25nZXIvTQpzcG9uZ2luZXNzL00Kc3Bvbmd5L1JQVApzcG9uc29yL01ER1MKc3BvbnNvcnNoaXAvTQpzcG9udGFuZWl0eS9NCnNwb250YW5lb3VzL1kKc3Bvb2YvU01ERwpzcG9vay9TTURHCnNwb29raW5lc3MvTQpzcG9va3kvUlBUCnNwb29sL1NNREcKc3Bvb24vU01ERwpzcG9vbmJpbGwvTVMKc3Bvb25lcmlzbS9NUwpzcG9vbmZ1bC9TTQpzcG9vci9TTURHCnNwb3JhZGljCnNwb3JhZGljYWxseQpzcG9yZS9EU01HCnNwb3JyYW4vUwpzcG9ydC9TTURHVgpzcG9ydGluZXNzL00Kc3BvcnRpbmcvWQpzcG9ydGl2ZS9ZCnNwb3J0c2Nhc3QvTVJaR1MKc3BvcnRzY2FzdGVyL00Kc3BvcnRzbWFuL00Kc3BvcnRzbWFubGlrZS9VCnNwb3J0c21hbnNoaXAvTQpzcG9ydHNtZW4Kc3BvcnRzcGVvcGxlCnNwb3J0c3BlcnNvbgpzcG9ydHN3ZWFyL00Kc3BvcnRzd29tYW4vTQpzcG9ydHN3b21lbgpzcG9ydHN3cml0ZXIvU00Kc3BvcnR5L1RQUgpzcG90L0NNUwpzcG90bGVzcy9QWQpzcG90bGVzc25lc3MvTQpzcG90bGlnaHQvR1NNRApzcG90bGl0CnNwb3R0ZWQKc3BvdHRlci9NUwpzcG90dGlseQpzcG90dGluZXNzL00Kc3BvdHRpbmcKc3BvdHR5L1RQUgpzcG91c2FsL01TCnNwb3VzZS9TTQpzcG91dC9TTURHCnNwcmFpbi9HU01ECnNwcmFuZwpzcHJhdC9TTQpzcHJhd2wvR1NNRApzcHJheSdzCnNwcmF5L0FTREcKc3ByYXllci9NUwpzcHJlYWQvWkdCU01SCnNwcmVhZGVhZ2xlZApzcHJlYWRlci9NCnNwcmVhZHNoZWV0L01TCnNwcmVlL0RTTQpzcHJlZWluZwpzcHJpZy9TTQpzcHJpZ2dlZApzcHJpZ2h0bGluZXNzL00Kc3ByaWdodGx5L1JUUApzcHJpbmcvR1NNCnNwcmluZ2JvYXJkL01TCnNwcmluZ2Jvay9NUwpzcHJpbmdpbHkKc3ByaW5naW5lc3MvTQpzcHJpbmdsaWtlCnNwcmluZ3RpbWUvTQpzcHJpbmd5L1JQVApzcHJpbmtsZS9EUlNKTVpHCnNwcmlua2xlci9NCnNwcmlua2xpbmcvTQpzcHJpbnQvWkdTTURSCnNwcmludGVyL00Kc3ByaXRlL1NNCnNwcml0ei9aR01EUlMKc3ByaXR6ZXIvTQpzcHJvY2tldC9NUwpzcHJvZy9TCnNwcm91dC9HU01ECnNwcnVjZS9EUlNQTVlURwpzcHJ1Y2VuZXNzL00Kc3BydW5nCnNwcnkvUllUCnNwcnluZXNzL00Kc3B1ZC9NUwpzcHVtZS9EU01HCnNwdW1vbmkvTQpzcHVteQpzcHVuCnNwdW5rL1NNCnNwdW5reS9UUgpzcHVyL01TCnNwdXJnZS9NCnNwdXJpb3VzL1BZCnNwdXJpb3VzbmVzcy9NCnNwdXJuL1NERwpzcHVycmVkCnNwdXJyaW5nCnNwdXJ0L1NNREcKc3B1dGEKc3B1dG5pay9NUwpzcHV0dGVyL01ER1MKc3B1dHVtL00Kc3B5L0dEU00Kc3B5Z2xhc3MvTVMKc3B5bWFzdGVyL1MKc3B5d2FyZS9NCnNxCnNxcQpzcXVhYi9TTQpzcXVhYmJsZS9NWkdEUlMKc3F1YWJibGVyL00Kc3F1YWQvU00Kc3F1YWRyb24vTVMKc3F1YWxpZC9QVFJZCnNxdWFsaWRuZXNzL00Kc3F1YWxsL1NHTUQKc3F1YWxseQpzcXVhbG9yL00Kc3F1YW1vdXMKc3F1YW5kZXIvR0RTCnNxdWFyZS9QRFJTTVlURwpzcXVhcmVuZXNzL00Kc3F1YXJpc2gKc3F1YXNoL0dNRFMKc3F1YXNoeS9UUgpzcXVhdC9TTVAKc3F1YXRuZXNzL00Kc3F1YXR0ZWQKc3F1YXR0ZXIvTVMKc3F1YXR0ZXN0CnNxdWF0dGluZwpzcXVhdy9TTQpzcXVhd2svU1pHTURSCnNxdWF3a2VyL00Kc3F1ZWFrL1NaR01EUgpzcXVlYWtlci9NCnNxdWVha2lseQpzcXVlYWtpbmVzcy9NCnNxdWVha3kvVFJQCnNxdWVhbC9TWkdNRFIKc3F1ZWFsZXIvTQpzcXVlYW1pc2gvUFkKc3F1ZWFtaXNobmVzcy9NCnNxdWVlZ2VlL01EUwpzcXVlZWdlZWluZwpzcXVlZXplL0JNWkdEUlMKc3F1ZWV6ZWJveC9TCnNxdWVlemVyL00Kc3F1ZWxjaC9HTURTCnNxdWVsY2h5CnNxdWliL1NNCnNxdWlkL1NNCnNxdWlkZ3kKc3F1aWZmeQpzcXVpZ2dsZS9EU01HCnNxdWlnZ2x5CnNxdWludC9TVEdNRFIKc3F1aXJlL0RTTUcKc3F1aXJtL1NHTUQKc3F1aXJteS9SVApzcXVpcnJlbC9TR01ECnNxdWlydC9TR01ECnNxdWlzaC9HTURTCnNxdWlzaHkvUlQKc3JpcmFjaGEKc3NoCnN0CnN0YWIvTVlTCnN0YWJiZWQKc3RhYmJlci9NUwpzdGFiYmluZy9NUwpzdGFiaWxpdHkvSU0Kc3RhYmlsaXphdGlvbi9DTQpzdGFiaWxpemUvQ0RTRwpzdGFiaWxpemVyL01TCnN0YWJsZS9EUlNNVEcKc3RhYmxlbWFuL00Kc3RhYmxlbWF0ZS9TCnN0YWJsZW1lbgpzdGFibHkvVQpzdGFjY2F0by9NUwpzdGFjay9TTURHCnN0YWRpdW0vTVMKc3RhZmYncwpzdGFmZi9BU0RHCnN0YWZmZXIvTVMKc3RhZmZpbmcvTQpzdGFnL01ER1NKCnN0YWdlL1NNCnN0YWdlY29hY2gvTVMKc3RhZ2VjcmFmdC9NCnN0YWdlaGFuZC9NUwpzdGFnZXN0cnVjawpzdGFnZmxhdGlvbi9NCnN0YWdnZXIvTURHUwpzdGFnZ2VyaW5nL1kKc3RhZ2luZy9NCnN0YWduYW5jeS9NCnN0YWduYW50L1kKc3RhZ25hdGUvRFNHTgpzdGFnbmF0aW9uL00Kc3RhZ3kvUlQKc3RhaWQvUFJZVApzdGFpZG5lc3MvTQpzdGFpbi9TTURHCnN0YWluZWQvVQpzdGFpbmxlc3MvTQpzdGFpci9TTQpzdGFpcmNhc2UvTVMKc3RhaXJ3YXkvTVMKc3RhaXJ3ZWxsL1NNCnN0YWtlL0RTTUcKc3Rha2Vob2xkZXIvTVMKc3Rha2VvdXQvU00Kc3RhbGFjdGl0ZS9NUwpzdGFsYWdtaXRlL01TCnN0YWxlL0RSU1RHUApzdGFsZW1hdGUvRFNNRwpzdGFsZW5lc3MvTQpzdGFsay9TTURSSlpHCnN0YWxrZXIvTQpzdGFsa2luZy9NCnN0YWxsJ3MKc3RhbGwvSVNERwpzdGFsbGhvbGRlci9TCnN0YWxsaW9uL01TCnN0YWx3YXJ0L01ZUwpzdGFtZW4vU00Kc3RhbWluYS9NCnN0YW1tZXIvWkdNRFJTCnN0YW1tZXJlci9NCnN0YW1tZXJpbmcvWQpzdGFtcC9TTURSWkcKc3RhbXBlZGUvTUdEUwpzdGFtcGVyL00Kc3RhbmNlL0lTTQpzdGFuY2gvVEdEUlMKc3RhbmNoaW9uL1NNCnN0YW5kL1NNUkpaRwpzdGFuZGFsb25lCnN0YW5kYXJkL01TCnN0YW5kYXJkaXphdGlvbi9NCnN0YW5kYXJkaXplL0RTRwpzdGFuZGJ5L00Kc3RhbmRieXMKc3RhbmRlZS9NUwpzdGFuZGVyL00Kc3RhbmRpbmcvTQpzdGFuZG9mZi9NUwpzdGFuZG9mZmlzaApzdGFuZG91dC9NUwpzdGFuZHBpcGUvU00Kc3RhbmRwb2ludC9NUwpzdGFuZHN0aWxsL01TCnN0YW5rCnN0YW56YS9TTQpzdGFwaC9NCnN0YXBoeWxvY29jY2FsCnN0YXBoeWxvY29jY2kKc3RhcGh5bG9jb2NjdXMvTQpzdGFwbGUvRFJTTVpHCnN0YXBsZXIvTQpzdGFyL01EUlpHUwpzdGFyYm9hcmQvTQpzdGFyYnVyc3QvUwpzdGFyY2gvR01EUwpzdGFyY2hpbHkKc3RhcmNoaW5lc3MvTQpzdGFyY2h5L1BUUgpzdGFyZG9tL00Kc3RhcmR1c3QvTQpzdGFyZS9TTQpzdGFyZXIvTQpzdGFyZmlzaC9NUwpzdGFyZnJ1aXQKc3RhcmdhemUvRFJTWkcKc3RhcmdhemVyL00Kc3RhcmsvUllQWlQKc3RhcmtuZXNzL00Kc3Rhcmxlc3MKc3RhcmxldC9NUwpzdGFybGlnaHQvTQpzdGFybGluZy9TTQpzdGFybGl0CnN0YXJyZWQKc3RhcnJpbmcKc3RhcnJ5L1RSCnN0YXJzdHJ1Y2sKc3RhcnQvQVNNREcKc3RhcnRlci9NUwpzdGFydGxlL0dEUwpzdGFydGxpbmcvWQpzdGFydHVwL01TCnN0YXJ2YXRpb24vTQpzdGFydmUvRFNKRwpzdGFydmVsaW5nL01TCnN0YXNoL01EU0cKc3Rhc2lzCnN0YXQvTVMKc3RhdGUvRFJTTVlHTkxYCnN0YXRlY3JhZnQvTQpzdGF0ZWQvVQpzdGF0ZWhvb2QvTQpzdGF0ZWhvdXNlL01TCnN0YXRlbGVzcy9QCnN0YXRlbGVzc25lc3MvTQpzdGF0ZWxpbmVzcy9NCnN0YXRlbHkvUFJUCnN0YXRlbWVudC9BTVMKc3RhdGVtZW50ZWQKc3RhdGVtZW50aW5nCnN0YXRlcm9vbS9NUwpzdGF0ZXNpZGUKc3RhdGVzbWFuL00Kc3RhdGVzbWFubGlrZQpzdGF0ZXNtYW5zaGlwL00Kc3RhdGVzbWVuCnN0YXRlc3dvbWFuL00Kc3RhdGVzd29tZW4Kc3RhdGV3aWRlCnN0YXRpYy9TTQpzdGF0aWNhbGx5CnN0YXRpb24vTURSWkcKc3RhdGlvbmFyeQpzdGF0aW9uZXIvTQpzdGF0aW9uZXJ5L00Kc3RhdGlvbm1hc3Rlci9TCnN0YXRpc3RpYy9NUwpzdGF0aXN0aWNhbC9ZCnN0YXRpc3RpY2lhbi9TTQpzdGF0dWFyeS9NCnN0YXR1ZS9TTQpzdGF0dWVzcXVlCnN0YXR1ZXR0ZS9NUwpzdGF0dXJlL01TCnN0YXR1cy9NUwpzdGF0dXRlL01TCnN0YXR1dG9yaWx5CnN0YXR1dG9yeQpzdGF1bmNoL1BEUlNZVEcKc3RhdW5jaG5lc3MvTQpzdGF2ZS9EU01HCnN0YXkvTURSWkdTCnN0ZApzdGRpbwpzdGVhZC9TTQpzdGVhZGZhc3QvWVAKc3RlYWRmYXN0bmVzcy9NCnN0ZWFkaWx5L1UKc3RlYWRpbmVzcy9VTQpzdGVhZHkvVEdQRFJTTQpzdGVhay9TTQpzdGVha2hvdXNlL1NNCnN0ZWFsL1NNSEcKc3RlYWx0aC9NCnN0ZWFsdGhpbHkKc3RlYWx0aGluZXNzL00Kc3RlYWx0aHkvVFBSCnN0ZWFtL1NNRFJaRwpzdGVhbWJvYXQvTVMKc3RlYW1lci9NCnN0ZWFtZml0dGVyL1NNCnN0ZWFtZml0dGluZy9NCnN0ZWFtaW5lc3MvTQpzdGVhbXB1bmsKc3RlYW1yb2xsL1pHRFJTCnN0ZWFtcm9sbGVyL01ERwpzdGVhbXNoaXAvTVMKc3RlYW15L1RQUgpzdGVlZC9TTQpzdGVlbC9TTURHCnN0ZWVsaW5lc3MvTQpzdGVlbG1ha2VyL1MKc3RlZWx3b3JrZXIvU00Kc3RlZWx3b3Jrcy9NCnN0ZWVseS9QVFIKc3RlZWx5YXJkL1NNCnN0ZWVwL1NNRE5SWVBYVEcKc3RlZXBlbi9HRApzdGVlcGxlL01TCnN0ZWVwbGVjaGFzZS9NUwpzdGVlcGxlamFjay9TTQpzdGVlcG5lc3MvTQpzdGVlci9TTURCRwpzdGVlcmFnZS9NCnN0ZWVyaW5nL00Kc3RlZXJzbWFuL00Kc3RlZXJzbWVuCnN0ZWdvc2F1cmkKc3RlZ29zYXVydXMvTVMKc3RlaW4vU00Kc3RlbGxhcgpzdGVtL01TCnN0ZW1sZXNzCnN0ZW1tZWQKc3RlbW1pbmcKc3RlbXdhcmUvTQpzdGVuY2gvTVMKc3RlbmNpbC9HTURTCnN0ZW5vL1NNCnN0ZW5vZ3JhcGhlci9TTQpzdGVub2dyYXBoaWMKc3Rlbm9ncmFwaHkvTQpzdGVub3NpcwpzdGVudC9TTQpzdGVudG9yaWFuCnN0ZXAvSU1TCnN0ZXBicm90aGVyL1NNCnN0ZXBjaGlsZC9NCnN0ZXBjaGlsZHJlbi9NCnN0ZXBkYWQvTVMKc3RlcGRhdWdodGVyL1NNCnN0ZXBmYXRoZXIvU00Kc3RlcGxhZGRlci9NUwpzdGVwbW9tL01TCnN0ZXBtb3RoZXIvU00Kc3RlcHBhcmVudC9TTQpzdGVwcGUvRFJTTVpHCnN0ZXBwZXIvTQpzdGVwcGluZ3N0b25lL1NNCnN0ZXBzaXN0ZXIvTVMKc3RlcHNvbi9NUwpzdGVyZW8vU00Kc3RlcmVvcGhvbmljCnN0ZXJlb3Njb3BlL01TCnN0ZXJlb3Njb3BpYwpzdGVyZW90eXBlL0RTTUcKc3RlcmVvdHlwaWNhbApzdGVyaWxlCnN0ZXJpbGl0eS9NCnN0ZXJpbGl6YXRpb24vU00Kc3RlcmlsaXplL0RSU1pHCnN0ZXJpbGl6ZXIvTQpzdGVybGluZy9NCnN0ZXJuL1NNUllQVApzdGVybm5lc3MvTQpzdGVybnVtL01TCnN0ZXJvaWQvTVMKc3Rlcm9pZGFsCnN0ZXJ0b3JvdXMKc3RldC9TCnN0ZXRob3Njb3BlL01TCnN0ZXRzb24vTVMKc3RldHRlZApzdGV0dGluZwpzdGV2ZWRvcmUvU00Kc3Rldy9NREdTCnN0ZXdhcmQvR01EUwpzdGV3YXJkZXNzL01TCnN0ZXdhcmRzaGlwL00Kc3RpY2svU01SWkcKc3RpY2tlci9NCnN0aWNraWx5CnN0aWNraW5lc3MvTQpzdGlja2xlYmFjay9TTQpzdGlja2xlci9NUwpzdGlja3Bpbi9NUwpzdGlja3VwL01TCnN0aWNreS9QVFJTTQpzdGlmZi9TTUROUllQWFRHCnN0aWZmZW4vWkdEUgpzdGlmZmVuZXIvTQpzdGlmZmVuaW5nL00Kc3RpZmZuZXNzL00Kc3RpZmxlL0RTSkcKc3RpZmxpbmcvWQpzdGlnbWEvU00Kc3RpZ21hdGEKc3RpZ21hdGljCnN0aWdtYXRpemF0aW9uL00Kc3RpZ21hdGl6ZS9HRFMKc3RpbGUvU00Kc3RpbGV0dG8vU00Kc3RpbGwncwpzdGlsbC9JVEdTRApzdGlsbGJpcnRoL00Kc3RpbGxiaXJ0aHMKc3RpbGxib3JuCnN0aWxsZXIKc3RpbGxuZXNzL00Kc3RpbHQvU01ECnN0aWx0ZWQvWQpzdGltdWxhbnQvU00Kc3RpbXVsYXRlL0RTR05WCnN0aW11bGF0aW9uL00Kc3RpbXVsaQpzdGltdWx1cy9NCnN0aW5nL1pHU01SCnN0aW5nZXIvTQpzdGluZ2lseQpzdGluZ2luZXNzL00Kc3RpbmdyYXkvU00Kc3Rpbmd5L1JUUApzdGluay9aR1NNUgpzdGlua2J1Zy9TTQpzdGlua2VyL00Kc3Rpbmt5L1JUCnN0aW50L0dTTUQKc3RpcGVuZC9TTQpzdGlwZW5kaWFyeS9TCnN0aXBwbGUvRFNNRwpzdGlwcGxpbmcvTQpzdGlwdWxhdGUvWERTR04Kc3RpcHVsYXRpb24vTQpzdGlyL01TCnN0aXJyZWQKc3RpcnJlci9TTQpzdGlycmluZy9TWQpzdGlycnVwL1NNCnN0aXRjaCdzCnN0aXRjaC9BRFNHCnN0aXRjaGVyeS9NCnN0aXRjaGluZy9NCnN0b2F0L1NNCnN0b2NoYXN0aWMKc3RvY2sncwpzdG9jay9BR1NECnN0b2NrYWRlL0RTTUcKc3RvY2ticmVlZGVyL01TCnN0b2NrYnJva2VyL1NNCnN0b2NrYnJva2luZy9NCnN0b2NraG9sZGVyL1NNCnN0b2NraWx5CnN0b2NraW5lc3MvTQpzdG9ja2luZXR0ZS9NCnN0b2NraW5nL1NNCnN0b2NraXN0L1MKc3RvY2twaWxlL01HRFMKc3RvY2twb3QvU00Kc3RvY2tyb29tL01TCnN0b2NrdGFraW5nL00Kc3RvY2t5L1JUUApzdG9ja3lhcmQvTVMKc3RvZGdlCnN0b2RnaWx5CnN0b2RnaW5lc3MvTQpzdG9kZ3kvUlRQCnN0b2dpZS9NUwpzdG9pYy9TTQpzdG9pY2FsL1kKc3RvaWNpc20vTQpzdG9rZS9EUlNaRwpzdG9rZXIvTQpzdG9sZS9TTQpzdG9sZW4Kc3RvbGlkL1JZVFAKc3RvbGlkaXR5L00Kc3RvbGlkbmVzcy9NCnN0b2xvbi9NUwpzdG9tYWNoL01EUlpHCnN0b21hY2hhY2hlL1NNCnN0b21hY2hlci9NCnN0b21hY2hzCnN0b21wL0dTTUQKc3RvbmUvRFJTTVpHCnN0b25lbWFzb24vTVMKc3RvbmVyL00Kc3RvbmV3YWxsL0dTRApzdG9uZXdhcmUvTQpzdG9uZXdhc2hlZApzdG9uZXdvcmsvTQpzdG9uaWx5CnN0b25pbmVzcy9NCnN0b25rZXJlZApzdG9ua2luZwpzdG9ueS9UUlAKc3Rvb2QKc3Rvb2dlL01TCnN0b29sL1NNCnN0b29wL0dTTUQKc3RvcCdzCnN0b3AvVVMKc3RvcGNvY2svU00Kc3RvcGdhcC9TTQpzdG9wbGlnaHQvTVMKc3RvcG92ZXIvTVMKc3RvcHBhYmxlL1UKc3RvcHBhZ2UvTVMKc3RvcHBlZC9VCnN0b3BwZXIvR1NNRApzdG9wcGluZy9VCnN0b3BwbGUvRFNNRwpzdG9wd2F0Y2gvTVMKc3RvcmFnZS9NCnN0b3JlJ3MKc3RvcmUvQURTRwpzdG9yZWZyb250L01TCnN0b3JlaG91c2UvTVMKc3RvcmVrZWVwZXIvU00Kc3RvcmVyb29tL1NNCnN0b3JrL1NNCnN0b3JtL0dTTUQKc3Rvcm1pbHkKc3Rvcm1pbmVzcy9NCnN0b3JteS9SUFQKc3RvcnkvRFNNCnN0b3J5Ym9hcmQvTVMKc3Rvcnlib29rL1NNCnN0b3J5dGVsbGVyL01TCnN0b3J5dGVsbGluZy9NCnN0b3VwL1NNCnN0b3V0L1RTTVJZUApzdG91dGhlYXJ0ZWQKc3RvdXRuZXNzL00Kc3RvdmUvU00Kc3RvdmVwaXBlL1NNCnN0b3cvREdTCnN0b3dhZ2UvTQpzdG93YXdheS9NUwpzdHJhZGRsZS9EUlNNWkcKc3RyYWRkbGVyL00Kc3RyYWZlL01HRFMKc3RyYWdnbGUvRFJTWkcKc3RyYWdnbGVyL00Kc3RyYWdnbHkvVFIKc3RyYWlnaHQvU1BYVE1OUlkKc3RyYWlnaHRhd2F5L1NNCnN0cmFpZ2h0ZWRnZS9TTQpzdHJhaWdodGVuL1pHRFIKc3RyYWlnaHRlbmVyL00Kc3RyYWlnaHRmb3J3YXJkL1lQUwpzdHJhaWdodGZvcndhcmRuZXNzL00Kc3RyYWlnaHRuZXNzL00Kc3RyYWlnaHR3YXkKc3RyYWluJ3MKc3RyYWluL0ZBRFNHCnN0cmFpbmVyL0FTTQpzdHJhaXQvTU5TWApzdHJhaXRlbi9HRApzdHJhaXRqYWNrZXQvU0dNRApzdHJhaXRsYWNlZApzdHJhbmQvTURTRwpzdHJhbmdlL1BSWVpUCnN0cmFuZ2VuZXNzL00Kc3RyYW5nZXIvTQpzdHJhbmdsZS9aR0RSUwpzdHJhbmdsZWhvbGQvU00Kc3RyYW5nbGVyL00Kc3RyYW5ndWxhdGUvR05EUwpzdHJhbmd1bGF0aW9uL00Kc3RyYXAncwpzdHJhcC9VUwpzdHJhcGxlc3MvTVMKc3RyYXBwZWQvVQpzdHJhcHBpbmcvTQpzdHJhdGEKc3RyYXRhZ2VtL1NNCnN0cmF0ZWdpYy9TCnN0cmF0ZWdpY2FsL1kKc3RyYXRlZ2ljcy9NCnN0cmF0ZWdpc3QvU00Kc3RyYXRlZ3kvU00Kc3RyYXRpCnN0cmF0aWZpY2F0aW9uL00Kc3RyYXRpZnkvRFNHTgpzdHJhdG9zcGhlcmUvU00Kc3RyYXRvc3BoZXJpYwpzdHJhdHVtL00Kc3RyYXR1cy9NCnN0cmF3L0dTTUQKc3RyYXdiZXJyeS9TTQpzdHJheS9HU01ECnN0cmVhay9NRFJTWkcKc3RyZWFrZXIvTQpzdHJlYWt5L1RSCnN0cmVhbS9NRFJTWkcKc3RyZWFtZXIvTQpzdHJlYW1saW5lL0RTRwpzdHJlZXQvTVMKc3RyZWV0Y2FyL01TCnN0cmVldGxhbXAvUwpzdHJlZXRsaWdodC9TTQpzdHJlZXR3YWxrZXIvU00Kc3RyZWV0d2lzZQpzdHJlbmd0aC9NCnN0cmVuZ3RoZW4vQUdEUwpzdHJlbmd0aGVuZXIvTVMKc3RyZW5ndGhzCnN0cmVudW91cy9QWQpzdHJlbnVvdXNuZXNzL00Kc3RyZXAvTQpzdHJlcHRvY29jY2FsCnN0cmVwdG9jb2NjaQpzdHJlcHRvY29jY3VzL00Kc3RyZXB0b215Y2luL00Kc3RyZXNzL01EU0cKc3RyZXNzZWQvVQpzdHJlc3NmdWwKc3RyZXRjaC9CWkdNRFJTCnN0cmV0Y2hlci9NREcKc3RyZXRjaG1hcmtzCnN0cmV0Y2h5L1RSCnN0cmV3L0dTREgKc3RyZXduCnN0cmlhL00Kc3RyaWFlCnN0cmlhdGVkCnN0cmlhdGlvbi9NUwpzdHJpY2tlbgpzdHJpY3QvUllQVApzdHJpY3RuZXNzL00Kc3RyaWN0dXJlL1NNCnN0cmlkZGVuCnN0cmlkZS9NR1MKc3RyaWRlbmN5L00Kc3RyaWRlbnQvWQpzdHJpZmUvTQpzdHJpa2UvTVpHUlNKCnN0cmlrZWJvdW5kCnN0cmlrZWJyZWFrZXIvU00Kc3RyaWtlYnJlYWtpbmcKc3RyaWtlb3V0L01TCnN0cmlrZXIvTQpzdHJpa2luZy9ZCnN0cmluZy9NRFJTWkcKc3RyaW5nZW5jeS9NCnN0cmluZ2VudC9ZCnN0cmluZ2VyL00Kc3RyaW5naW5lc3MvTQpzdHJpbmd5L1BUUgpzdHJpcC9HU01ECnN0cmlwZS9NUwpzdHJpcGV5CnN0cmlwbGluZy9NUwpzdHJpcHBlZApzdHJpcHBlci9NUwpzdHJpcHBpbmcKc3RyaXB0ZWFzZS9NWkdEUlMKc3RyaXB0ZWFzZXIvTQpzdHJpcHkKc3RyaXZlL0dTCnN0cml2ZW4Kc3Ryb2JlL01TCnN0cm9ib3Njb3BlL01TCnN0cm9ib3Njb3BpYwpzdHJvZGUKc3Ryb2tlL01HRFMKc3Ryb2xsL01EUlNaRwpzdHJvbGxlci9NCnN0cm9uZy9SWVQKc3Ryb25nYm94L01TCnN0cm9uZ2hvbGQvTVMKc3Ryb25nbWFuL00Kc3Ryb25nbWVuCnN0cm9uZ3Jvb20vUwpzdHJvbnRpdW0vTQpzdHJvcC9TTQpzdHJvcGhlL1NNCnN0cm9waGljCnN0cm9wcGVkCnN0cm9wcGlseQpzdHJvcHBpbmcKc3Ryb3BweS9UUlAKc3Ryb3ZlCnN0cnVjawpzdHJ1Y3R1cmFsL1kKc3RydWN0dXJhbGlzbQpzdHJ1Y3R1cmFsaXN0L1MKc3RydWN0dXJlJ3MKc3RydWN0dXJlL0FHRFMKc3RydWN0dXJlZC9VCnN0cnVkZWwvU00Kc3RydWdnbGUvTUdEUwpzdHJ1bS9TTQpzdHJ1bW1lZApzdHJ1bW1pbmcKc3RydW1wZXQvTVMKc3RydW5nL1VBCnN0cnV0L1NNCnN0cnV0dGVkCnN0cnV0dGluZwpzdHJ5Y2huaW5lL00Kc3R1Yi9NUwpzdHViYmVkCnN0dWJiaW5nCnN0dWJibGUvTQpzdHViYmx5CnN0dWJib3JuL1JZUFQKc3R1YmJvcm5uZXNzL00Kc3R1YmJ5L1JUCnN0dWNjby9NREcKc3R1Y2NvZXMKc3R1Y2svVQpzdHVkL01ZUwpzdHVkYm9vay9NUwpzdHVkZGVkCnN0dWRkaW5nL00Kc3R1ZGVudC9TTQpzdHVkZW50c2hpcC9TCnN0dWRpZWQvVQpzdHVkaWVkbHkKc3R1ZGlvL01TCnN0dWRpb3VzL1BZCnN0dWRpb3VzbmVzcy9NCnN0dWRseS9SVApzdHVkeSdzCnN0dWR5L0FHRFMKc3R1ZmYvR1NNREoKc3R1ZmZpbHkKc3R1ZmZpbmVzcy9NCnN0dWZmaW5nL00Kc3R1ZmZ5L1JQVApzdHVsdGlmaWNhdGlvbi9NCnN0dWx0aWZ5L0RTTkcKc3R1bWJsZS9EUlNNWkcKc3R1bWJsZXIvTQpzdHVtcC9HU01ECnN0dW1weS9UUgpzdHVuL1MKc3R1bmcKc3R1bmsKc3R1bm5lZApzdHVubmVyL1MKc3R1bm5pbmcvWQpzdHVudC9HU01ECnN0dW50bWFuCnN0dW50bWVuCnN0dXBlZmFjdGlvbi9NCnN0dXBlZnkvRFNHCnN0dXBlbmRvdXMvWQpzdHVwaWQvVE1SWVMKc3R1cGlkaXR5L1NNCnN0dXBvci9NUwpzdHVyZGlseQpzdHVyZGluZXNzL00Kc3R1cmR5L1RSUApzdHVyZ2Vvbi9TTQpzdHV0dGVyL01EUlNaRwpzdHV0dGVyZXIvTQpzdHkvU00Kc3R5bGUncwpzdHlsZS9BRFNHCnN0eWxpCnN0eWxpc2gvUFkKc3R5bGlzaG5lc3MvTQpzdHlsaXN0L1NNCnN0eWxpc3RpYy9TCnN0eWxpc3RpY2FsbHkKc3R5bGl6ZS9EU0cKc3R5bHVzL01TCnN0eW1pZS9NRFMKc3R5bWllaW5nCnN0eXB0aWMvU00Kc3Vhc2lvbi9FTQpzdWF2ZS9SWVRQCnN1YXZlbmVzcy9NCnN1YXZpdHkvTQpzdWIvU00Kc3ViYWx0ZXJuL01TCnN1YmFxdWEKc3ViYXJjdGljCnN1YmFyZWEvTVMKc3ViYXRvbWljCnN1YmJhc2VtZW50L1NNCnN1YmJlZApzdWJiaW5nCnN1YmJyYW5jaC9NUwpzdWJjYXRlZ29yeS9TTQpzdWJjbGFzcwpzdWJjb21taXR0ZWUvU00Kc3ViY29tcGFjdC9TTQpzdWJjb25zY2lvdXMvUE1ZCnN1YmNvbnNjaW91c25lc3MvTQpzdWJjb250aW5lbnQvU00Kc3ViY29udGluZW50YWwKc3ViY29udHJhY3QvTURTRwpzdWJjb250cmFjdG9yL01TCnN1YmN1bHR1cmUvTVMKc3ViY3V0YW5lb3VzL1kKc3ViZGl2aWRlL0dEUwpzdWJkaXZpc2lvbi9TTQpzdWJkb21pbmFudApzdWJkdWUvRFNHCnN1YmVkaXRvci9TCnN1YmZhbWlseS9TTQpzdWJmcmVlemluZwpzdWJncm91cC9NUwpzdWJoZWFkL0dKTVMKc3ViaGVhZGluZy9NCnN1Ymh1bWFuL01TCnN1YmoKc3ViamVjdC9HVk1EUwpzdWJqZWN0aW9uL00Kc3ViamVjdGl2ZS9ZCnN1YmplY3Rpdml0eS9NCnN1YmpvaW4vR0RTCnN1Ymp1Z2F0ZS9HTkRTCnN1Ymp1Z2F0aW9uL00Kc3VianVuY3RpdmUvU00Kc3VibGVhc2UvTUdEUwpzdWJsZXQvU00Kc3VibGV0dGluZwpzdWJsaWV1dGVuYW50L1MKc3VibGltYXRlL0dORFMKc3VibGltYXRpb24vTQpzdWJsaW1lL1lUR0RSUwpzdWJsaW1pbmFsL1kKc3VibGltaXR5L00Kc3VibGluZ3VhbApzdWJtYXJnaW5hbApzdWJtYXJpbmUvTVpSUwpzdWJtYXJpbmVyL00Kc3VibWVyZ2UvR0RTCnN1Ym1lcmdlbmNlL00Kc3VibWVyc2UvR05EUwpzdWJtZXJzaWJsZS9NUwpzdWJtZXJzaW9uL00Kc3VibWljcm9zY29waWMKc3VibWlzc2lvbi9NUwpzdWJtaXNzaXZlL1BZCnN1Ym1pc3NpdmVuZXNzL00Kc3VibWl0L0FTCnN1Ym1pdHRlZC9BCnN1Ym1pdHRlcgpzdWJtaXR0aW5nL0EKc3Vibm9ybWFsCnN1Ym9yYml0YWwKc3Vib3JkZXIvTVMKc3Vib3JkaW5hdGUvRFNNR04Kc3Vib3JkaW5hdGlvbi9JTQpzdWJvcm4vU0dECnN1Ym9ybmF0aW9uL00Kc3VicGFyYWdyYXBoCnN1YnBsb3QvTVMKc3VicG9lbmEvR01EUwpzdWJwcmltZQpzdWJwcm9mZXNzaW9uYWwvU00Kc3VicHJvZ3JhbS9TCnN1YnJvdXRpbmUvU00Kc3Vic2NyaWJlL1VBU0RHCnN1YnNjcmliZXIvTVMKc3Vic2NyaXB0L01TCnN1YnNjcmlwdGlvbi9NUwpzdWJzZWN0aW9uL01TCnN1YnNlcXVlbnQvWQpzdWJzZXJ2aWVuY2UvTQpzdWJzZXJ2aWVudC9ZCnN1YnNldC9TTQpzdWJzaWRlL0dEUwpzdWJzaWRlbmNlL00Kc3Vic2lkaWFyaXR5CnN1YnNpZGlhcnkvU00Kc3Vic2lkaXphdGlvbi9NCnN1YnNpZGl6ZS9aR0RSUwpzdWJzaWRpemVyL00Kc3Vic2lkeS9TTQpzdWJzaXN0L1NERwpzdWJzaXN0ZW5jZS9NCnN1YnNvaWwvTQpzdWJzb25pYwpzdWJzcGFjZQpzdWJzcGVjaWVzL00Kc3Vic3RhbmNlL1NNCnN1YnN0YW5kYXJkCnN1YnN0YW50aWFsL0lZCnN1YnN0YW50aWF0ZS9HTkRTWApzdWJzdGFudGlhdGVkL1UKc3Vic3RhbnRpYXRpb24vRk0Kc3Vic3RhbnRpdmUvU01ZCnN1YnN0YXRpb24vTVMKc3Vic3RpdHVlbnQKc3Vic3RpdHV0ZS9YTUdORFMKc3Vic3RpdHV0aW9uL00Kc3Vic3RyYXRhCnN1YnN0cmF0ZS9NUwpzdWJzdHJhdHVtL00Kc3Vic3RydWN0dXJlL1NNCnN1YnN1bWUvRFNHCnN1YnN1bXB0aW9uCnN1YnN1cmZhY2UvTQpzdWJzeXN0ZW0vU00Kc3VidGVlbi9TTQpzdWJ0ZW5hbmN5L00Kc3VidGVuYW50L1NNCnN1YnRlbmQvU0RHCnN1YnRlcmZ1Z2UvU00Kc3VidGVycmFuZWFuCnN1YnRleHQvU00Kc3VidGl0bGUvRFNNRwpzdWJ0bGUvVFIKc3VidGxldHkvU00Kc3VidGx5CnN1YnRvcGljL1NNCnN1YnRvdGFsL1NHTUQKc3VidHJhY3QvR1NECnN1YnRyYWN0aW9uL1NNCnN1YnRyYWhlbmQvU00Kc3VidHJvcGljL1MKc3VidHJvcGljYWwKc3VidHJvcGljcy9NCnN1YnVyYi9NUwpzdWJ1cmJhbi9TTQpzdWJ1cmJhbml0ZS9TTQpzdWJ1cmJpYS9NCnN1YnZlbnRpb24vU00Kc3VidmVyc2lvbi9NCnN1YnZlcnNpdmUvU1BNWQpzdWJ2ZXJzaXZlbmVzcy9NCnN1YnZlcnQvU0RHCnN1YndheS9NUwpzdWJ6ZXJvCnN1Y2NlZWQvR0RTCnN1Y2Nlc3MvVk1TCnN1Y2Nlc3NmdWwvVVkKc3VjY2Vzc2lvbi9TTQpzdWNjZXNzaXZlL1kKc3VjY2Vzc29yL1NNCnN1Y2NpbmN0L1JZVFAKc3VjY2luY3RuZXNzL00Kc3VjY29yL1NHTUQKc3VjY290YXNoL00Kc3VjY3ViaQpzdWNjdWJ1cwpzdWNjdWxlbmNlL00Kc3VjY3VsZW5jeS9NCnN1Y2N1bGVudC9TTQpzdWNjdW1iL0dEUwpzdWNoCnN1Y2hsaWtlCnN1Y2svTURSWkdTCnN1Y2tlci9HTUQKc3Vja2xlL0RTSkcKc3Vja2xpbmcvTQpzdWNyb3NlL00Kc3VjdGlvbi9TTURHCnN1ZGRlbi9QWQpzdWRkZW5uZXNzL00Kc3Vkcy9NCnN1ZHN5L1RSCnN1ZS9EU0cKc3VlZGUvTQpzdWV0L00Kc3VldHkKc3VmZmVyL0RSWkdTSgpzdWZmZXJhbmNlL00Kc3VmZmVyZXIvTQpzdWZmZXJpbmcvTQpzdWZmaWNlL0RTRwpzdWZmaWNpZW5jeS9JTQpzdWZmaWNpZW50L0lZCnN1ZmZpeC9NRFNHCnN1ZmZpeGF0aW9uL00Kc3VmZm9jYXRlL0dORFMKc3VmZm9jYXRpb24vTQpzdWZmcmFnYW4vTVMKc3VmZnJhZ2UvTQpzdWZmcmFnZXR0ZS9TTQpzdWZmcmFnaXN0L01TCnN1ZmZ1c2UvRFNHTgpzdWZmdXNpb24vTQpzdWdhci9HU01ECnN1Z2FyY2FuZS9NCnN1Z2FyY29hdC9HRFMKc3VnYXJsZXNzCnN1Z2FycGx1bS9NUwpzdWdhcnkvUlQKc3VnZ2VzdC9HVlNEUgpzdWdnZXN0aWJpbGl0eS9NCnN1Z2dlc3RpYmxlCnN1Z2dlc3Rpb24vU00Kc3VnZ2VzdGl2ZS9ZUApzdWdnZXN0aXZlbmVzcy9NCnN1aWNpZGFsCnN1aWNpZGUvU00Kc3VpdC9CTURHUwpzdWl0YWJpbGl0eS9VTQpzdWl0YWJsZW5lc3MvTQpzdWl0YWJseS9VCnN1aXRjYXNlL1NNCnN1aXRlL1NNCnN1aXRlZC9VCnN1aXRpbmcvTQpzdWl0b3IvTVMKc3VraXlha2kvTQpzdWxmYS9NCnN1bGZhdGUvU00Kc3VsZmlkZS9TTQpzdWxmb25hbWlkZXMKc3VsZnVyL01EU0cKc3VsZnVyaWMKc3VsZnVyb3VzCnN1bGsvTURHUwpzdWxraWx5CnN1bGtpbmVzcy9NCnN1bGt5L1RSU01QCnN1bGxlbi9SWVBUCnN1bGxlbm5lc3MvTQpzdWxsaWVkL1UKc3VsbHkvR0RTCnN1bHRhbi9NUwpzdWx0YW5hL1NNCnN1bHRhbmF0ZS9NUwpzdWx0cmlseQpzdWx0cmluZXNzL00Kc3VsdHJ5L1JQVApzdW0vU00Kc3VtYWMvTQpzdW1tYXJpbHkKc3VtbWFyaXplL0dEUwpzdW1tYXJ5L1NNCnN1bW1hdApzdW1tYXRpb24vRk1TCnN1bW1lZApzdW1tZXIvTURTRwpzdW1tZXJob3VzZS9TTQpzdW1tZXJ0aW1lL00Kc3VtbWVyeQpzdW1taW5nCnN1bW1pdC9NUwpzdW1taXRyeS9NCnN1bW1vbi9EUlNaRwpzdW1tb25lci9NCnN1bW1vbnMvR01EUwpzdW1vL00Kc3VtcC9NUwpzdW1wdHVvdXMvUFkKc3VtcHR1b3VzbmVzcy9NCnN1bi9TTQpzdW5iYXRoL1pHTURSUwpzdW5iYXRoZQpzdW5iYXRoZXIvTQpzdW5iYXRoaW5nL00Kc3VuYmF0aHMKc3VuYmVhbS9TTQpzdW5iZWQvUwpzdW5iZWx0L1NNCnN1bmJsb2NrL01TCnN1bmJvbm5ldC9TTQpzdW5idXJuL1NHTUQKc3VuYnVyc3QvTVMKc3VuZGFlL01TCnN1bmRlY2svUwpzdW5kZXIvRFNHCnN1bmRpYWwvU00Kc3VuZG93bi9TTQpzdW5kcmVzcy9TCnN1bmRyaWVzL00Kc3VuZHJ5L1MKc3VuZmlzaC9NUwpzdW5mbG93ZXIvTVMKc3VuZy9VCnN1bmdsYXNzZXMvTQpzdW5oYXQvUwpzdW5rL04Kc3VubGFtcC9TTQpzdW5sZXNzCnN1bmxpZ2h0L00Kc3VubGl0CnN1bm5lZApzdW5uaW5lc3MvTQpzdW5uaW5nCnN1bm55L1RSUApzdW5yaXNlL1NNCnN1bnJvb2YvU00Kc3Vuc2NyZWVuL01TCnN1bnNldC9NUwpzdW5zaGFkZS9NUwpzdW5zaGluZS9NCnN1bnNoaW55CnN1bnNwb3QvU00Kc3Vuc3Ryb2tlL00Kc3VudGFuL01TCnN1bnRhbm5lZApzdW50YW5uaW5nCnN1bnRyYXAvUwpzdW51cC9NCnN1cC9TWk1SCnN1cGVyL00Kc3VwZXJhYnVuZGFuY2UvTVMKc3VwZXJhYnVuZGFudApzdXBlcmFubnVhdGUvR05EUwpzdXBlcmFubnVhdGlvbi9NCnN1cGVyYi9SWVQKc3VwZXJjYXJnby9NCnN1cGVyY2FyZ29lcwpzdXBlcmNoYXJnZS9aR0RSUwpzdXBlcmNoYXJnZXIvTQpzdXBlcmNpbGlvdXMvUFkKc3VwZXJjaWxpb3VzbmVzcy9NCnN1cGVyY2l0eS9TTQpzdXBlcmNvbXB1dGVyL01TCnN1cGVyY29uZHVjdGluZwpzdXBlcmNvbmR1Y3RpdmUKc3VwZXJjb25kdWN0aXZpdHkvTQpzdXBlcmNvbmR1Y3Rvci9TTQpzdXBlcmVnby9NUwpzdXBlcmVyb2dhdGlvbi9NCnN1cGVyZXJvZ2F0b3J5CnN1cGVyZmljaWFsL1kKc3VwZXJmaWNpYWxpdHkvTQpzdXBlcmZpbmUKc3VwZXJmbHVpdHkvTQpzdXBlcmZsdW91cy9ZUApzdXBlcmZsdW91c25lc3MvTQpzdXBlcmdsdWUKc3VwZXJncmFzcy9TCnN1cGVyaGVyby9NUwpzdXBlcmhlcm9lcwpzdXBlcmhpZ2h3YXkvU00Kc3VwZXJodW1hbgpzdXBlcmltcG9zZS9HRFMKc3VwZXJpbXBvc2l0aW9uL00Kc3VwZXJpbnRlbmQvRFNHCnN1cGVyaW50ZW5kZW5jZS9NCnN1cGVyaW50ZW5kZW5jeS9NCnN1cGVyaW50ZW5kZW50L1NNCnN1cGVyaW9yL01TCnN1cGVyaW9yaXR5L00Kc3VwZXJsYXRpdmUvU01ZCnN1cGVybWFuL00Kc3VwZXJtYXJrZXQvU00Kc3VwZXJtZW4Kc3VwZXJtb2RlbC9TTQpzdXBlcm1vbS9NUwpzdXBlcm5hbApzdXBlcm5hdHVyYWwvU1kKc3VwZXJub3ZhL01TCnN1cGVybm92YWUKc3VwZXJudW1lcmFyeS9TTQpzdXBlcnBvc2UvR0RTCnN1cGVycG9zaXRpb24vTQpzdXBlcnBvd2VyL1NNCnN1cGVyc2F0dXJhdGUvR05EUwpzdXBlcnNhdHVyYXRpb24vTQpzdXBlcnNjcmliZS9HRFMKc3VwZXJzY3JpcHQvTVMKc3VwZXJzY3JpcHRpb24vTQpzdXBlcnNlZGUvR0RTCnN1cGVyc2l6ZS9HRFMKc3VwZXJzb25pYwpzdXBlcnN0YXIvTVMKc3VwZXJzdGF0ZS9TCnN1cGVyc3RpdGlvbi9NUwpzdXBlcnN0aXRpb3VzL1kKc3VwZXJzdG9yZS9NUwpzdXBlcnN0cnVjdHVyZS9NUwpzdXBlcnRhbmtlci9NUwpzdXBlcnVzZXIvUwpzdXBlcnZlbmUvR0RTCnN1cGVydmVudGlvbi9NCnN1cGVydmlzZS9YR05EUwpzdXBlcnZpc2VkL1UKc3VwZXJ2aXNpb24vTQpzdXBlcnZpc29yL01TCnN1cGVydmlzb3J5CnN1cGVyd29tYW4vTQpzdXBlcndvbWVuCnN1cGluZS9ZCnN1cHAvRFJaRwpzdXBwZXIvTQpzdXBwZXJ0aW1lCnN1cHBsCnN1cHBsYW50L1NERwpzdXBwbGUvVExQUgpzdXBwbGVtZW50L01ER1MKc3VwcGxlbWVudGFsCnN1cHBsZW1lbnRhcnkKc3VwcGxlbWVudGF0aW9uL00Kc3VwcGxlbmVzcy9NCnN1cHBsaWFudC9TTQpzdXBwbGljYW50L01TCnN1cHBsaWNhdGUvR0RTCnN1cHBsaWNhdGlvbi9NCnN1cHBsaWVyL00Kc3VwcGx5L1pHRFJTTVhOCnN1cHBvcnQvTURSU0JaR1YKc3VwcG9ydGFibGUvVUkKc3VwcG9ydGVkL1UKc3VwcG9ydGVyL00Kc3VwcG9zZS9HRFMKc3VwcG9zZWQvWQpzdXBwb3NpdGlvbi9NUwpzdXBwb3NpdG9yeS9TTQpzdXBwcmVzcy9HRFMKc3VwcHJlc3NhbnQvTVMKc3VwcHJlc3NpYmxlCnN1cHByZXNzaW9uL00Kc3VwcHJlc3Nvci9TTQpzdXBwdXJhdGUvRFNHTgpzdXBwdXJhdGlvbi9NCnN1cHJhCnN1cHJhbmF0aW9uYWwKc3VwcmVtYWNpc3QvTVMKc3VwcmVtYWN5L00Kc3VwcmVtZS9ZCnN1cHJlbW8vUwpzdXB0CnN1cmNlYXNlL0RTTUcKc3VyY2hhcmdlL0RTTUcKc3VyY2luZ2xlL1NNCnN1cmUvUFlUUgpzdXJlZmlyZQpzdXJlZm9vdGVkCnN1cmVuZXNzL00Kc3VyZXR5L1NNCnN1cmYvTURSWkdTCnN1cmZhY2UncwpzdXJmYWNlL0FHRFMKc3VyZmJvYXJkL01EU0cKc3VyZmVpdC9NRFNHCnN1cmZlci9NCnN1cmZpbmcvTQpzdXJnZS9EU01HCnN1cmdlb24vTVMKc3VyZ2VyeS9TTQpzdXJnaWNhbC9ZCnN1cmxpbmVzcy9NCnN1cmx5L1BUUgpzdXJtaXNlL01HRFMKc3VybW91bnQvREdTQgpzdXJtb3VudGFibGUvSQpzdXJuYW1lL01TCnN1cnBhc3MvR0RTCnN1cnBhc3NlZC9VCnN1cnBsaWNlL01TCnN1cnBsdXMvTVMKc3VycGx1c3NlZApzdXJwbHVzc2luZwpzdXJwcmlzZS9EU01HSgpzdXJwcmlzaW5nL1VZCnN1cnJlYWwKc3VycmVhbGlzbS9NCnN1cnJlYWxpc3QvU00Kc3VycmVhbGlzdGljCnN1cnJlYWxpc3RpY2FsbHkKc3VycmVuZGVyL01EU0cKc3VycmVwdGl0aW91cy9QWQpzdXJyZXB0aXRpb3VzbmVzcy9NCnN1cnJleS9NUwpzdXJyb2dhY3kvTQpzdXJyb2dhdGUvU00Kc3Vycm91bmQvR1NESgpzdXJyb3VuZGluZy9NCnN1cnJvdW5kaW5ncy9NCnN1cnRheC9NRFNHCnN1cnRpdGxlL1MKc3VydmVpbGxhbmNlL00Kc3VydmV5J3MKc3VydmV5L0FER1MKc3VydmV5aW5nL00Kc3VydmV5b3IvU00Kc3Vydml2YWwvU00Kc3Vydml2YWxpc3QvU00Kc3Vydml2ZS9EU0dCCnN1cnZpdm9yL1NNCnN1c2NlcHRpYmlsaXR5L1NNCnN1c2NlcHRpYmxlL0kKc3VzaGkvTQpzdXNwZWN0L1NNREcKc3VzcGVjdGVkL1UKc3VzcGVuZC9TRFJaRwpzdXNwZW5kZXIvTQpzdXNwZW5zZS9YTU4Kc3VzcGVuc2VmdWwKc3VzcGVuc2lvbi9NCnN1c3BpY2lvbi9TTQpzdXNwaWNpb3VzL1kKc3Vzcy9EU0cKc3VzdGFpbi9TREJHCnN1c3RhaW5hYmlsaXR5CnN1c3RhaW5hYmxlL1UKc3VzdGVuYW5jZS9NCnN1dGxlci9NUwpzdXR0ZWUKc3V0dXJlL01HRFMKc3V6ZXJhaW4vTVMKc3V6ZXJhaW50eS9NCnN2ZWx0ZS9UUgpzd2FiL01TCnN3YWJiZWQKc3dhYmJpbmcKc3dhZGRsZS9EU0cKc3dhZy9NUwpzd2FnZ2VkCnN3YWdnZXIvU01EUkcKc3dhZ2dpbmcKc3dhaW4vU00Kc3dhbGxvdy9HU01ECnN3YWxsb3d0YWlsL01TCnN3YW0Kc3dhbWkvU00Kc3dhbXAvR1NNRApzd2FtcGxhbmQvTQpzd2FtcHkvUlQKc3dhbi9NUwpzd2Fuay9UR1NNRFIKc3dhbmtpbHkKc3dhbmtpbmVzcy9NCnN3YW5reS9SUFQKc3dhbm5lZApzd2FubmluZwpzd2Fuc29uZy9TCnN3YXAvTVMKc3dhcHBlZApzd2FwcGluZwpzd2FyZC9TTQpzd2FybS9HU01ECnN3YXJ0aHkvVFIKc3dhc2gvR01EUwpzd2FzaGJ1Y2tsZXIvU00Kc3dhc2hidWNrbGluZy9NCnN3YXN0aWthL1NNCnN3YXQvTVMKc3dhdGNoL01TCnN3YXRoL0dNRFMKc3dhdGhlL00Kc3dhdGhzCnN3YXR0ZWQKc3dhdHRlci9TTURHCnN3YXR0aW5nCnN3YXkvTURHUwpzd2F5YmFjay9NRApzd2F5ZWQvVQpzd2Vhci9aR1NSCnN3ZWFyZXIvTQpzd2VhcndvcmQvTVMKc3dlYXQvWkdTTURSCnN3ZWF0YmFuZC9NUwpzd2VhdGVyL00Kc3dlYXRwYW50cy9NCnN3ZWF0cy9NCnN3ZWF0c2hpcnQvU00Kc3dlYXRzaG9wL01TCnN3ZWF0c3VpdC9TCnN3ZWF0eS9SVApzd2VkZS9TTQpzd2VlcC9aR1NNUkoKc3dlZXBlci9NCnN3ZWVwaW5nL01ZCnN3ZWVwaW5ncy9NCnN3ZWVwc3Rha2VzL00Kc3dlZXQvWFRTTU5SWVAKc3dlZXRicmVhZC9TTQpzd2VldGJyaWVyL1NNCnN3ZWV0Y29ybgpzd2VldGVuZWQvVQpzd2VldGVuZXIvTVMKc3dlZXRlbmluZy9NCnN3ZWV0aGVhcnQvU00Kc3dlZXRpZS9TTQpzd2VldGlzaApzd2VldG1lYXQvTVMKc3dlZXRuZXNzL00Kc3dlbGwvVEdTTURSSgpzd2VsbGhlYWQvTURTCnN3ZWxsaW5nL00Kc3dlbHRlci9TR01ECnN3ZXB0CnN3ZXB0YmFjawpzd2VydmUvTUdEUwpzd2VydmluZy9VCnN3aWZ0L1BUU01SWQpzd2lmdG5lc3MvTQpzd2lnL01TCnN3aWdnZWQKc3dpZ2dpbmcKc3dpbGwvR1NNRApzd2ltL01TCnN3aW1tZXIvU00Kc3dpbW1pbmcvTVkKc3dpbXN1aXQvU00Kc3dpbXdlYXIKc3dpbmRsZS9EUlNNWkcKc3dpbmRsZXIvTQpzd2luZS9TTQpzd2luZWhlcmQvU00Kc3dpbmcvWkdTTVIKc3dpbmdlaW5nCnN3aW5nZXIvTQpzd2luaXNoCnN3aXBlL0RTTUcKc3dpcmwvR1NNRApzd2lybHkKc3dpc2gvVEdNRFJTCnN3aXRjaC9NRFJTWkdCCnN3aXRjaGJhY2svTVMKc3dpdGNoYmxhZGUvU00Kc3dpdGNoYm9hcmQvU00Kc3dpdGNoZXIvTQpzd2l2ZWwvTURHUwpzd2l6CnN3aXp6CnN3aXp6bGUvRFNHCnN3b2xsZW4Kc3dvb24vU0dNRApzd29vcC9TR01ECnN3b29zaC9NRFNHCnN3b3JkL1NNCnN3b3JkZmlzaC9NUwpzd29yZHBsYXkvTQpzd29yZHNtYW4vTQpzd29yZHNtYW5zaGlwL00Kc3dvcmRzbWVuCnN3b3JlCnN3b3JuCnN3b3QvUwpzd290dGVkCnN3b3R0aW5nCnN3dW0Kc3d1bmcKc3liYXJpdGUvU00Kc3liYXJpdGljCnN5Y2Ftb3JlL01TCnN5Y29waGFuY3kvTQpzeWNvcGhhbnQvU00Kc3ljb3BoYW50aWMKc3lsbGFiaWMKc3lsbGFiaWNhdGUvR05EUwpzeWxsYWJpY2F0aW9uL00Kc3lsbGFiaWZpY2F0aW9uL00Kc3lsbGFiaWZ5L0RTTkcKc3lsbGFibGUvTVMKc3lsbGFidWIvUwpzeWxsYWJ1cy9NUwpzeWxsb2dpc20vTVMKc3lsbG9naXN0aWMKc3lscGgvTQpzeWxwaGljCnN5bHBobGlrZQpzeWxwaHMKc3lsdmFuCnN5bWJpb3NlcwpzeW1iaW9zaXMvTQpzeW1iaW90aWMKc3ltYmlvdGljYWxseQpzeW1ib2wvTVMKc3ltYm9saWMKc3ltYm9saWNhbC9ZCnN5bWJvbGlzbS9NCnN5bWJvbGl6YXRpb24vTQpzeW1ib2xpemUvRFNHCnN5bW1ldHJpYwpzeW1tZXRyaWNhbC9ZCnN5bW1ldHJ5L1NNCnN5bXBhdGhldGljL1UKc3ltcGF0aGV0aWNhbGx5L1UKc3ltcGF0aGllcy9NCnN5bXBhdGhpemUvWkdEUlMKc3ltcGF0aGl6ZXIvTQpzeW1wYXRoeS9TTQpzeW1waG9uaWMKc3ltcGhvbnkvU00Kc3ltcG9zaXVtL01TCnN5bXB0b20vTVMKc3ltcHRvbWF0aWMKc3ltcHRvbWF0aWNhbGx5CnN5bi9ICnN5bmFnb2dhbApzeW5hZ29ndWUvU00Kc3luYXBzZS9NUwpzeW5hcHRpYwpzeW5jL01EU0cKc3luY2hyb25pY2l0eQpzeW5jaHJvbml6YXRpb24vU00Kc3luY2hyb25pemUvR0RTCnN5bmNocm9ub3VzL1kKc3luY29wYXRlL0RTR04Kc3luY29wYXRpb24vTQpzeW5jb3BlL00Kc3luZGljYWxpc20Kc3luZGljYWxpc3QvUwpzeW5kaWNhdGUvRFNNR04Kc3luZGljYXRpb24vTQpzeW5kcm9tZS9TTQpzeW5lcmdpc20vTQpzeW5lcmdpc3RpYwpzeW5lcmd5L1NNCnN5bmZ1ZWwvTVMKc3lub2QvU00Kc3lub255bS9TTQpzeW5vbnltb3VzCnN5bm9ueW15L00Kc3lub3BzZXMKc3lub3BzaXMvTQpzeW5vcHRpYwpzeW5vdmlhbApzeW50YWN0aWMKc3ludGFjdGljYWwvWQpzeW50YXgvTQpzeW50aGVzZXMKc3ludGhlc2lzL00Kc3ludGhlc2l6ZS9aR0RSUwpzeW50aGVzaXplci9NCnN5bnRoZXRpYy9TTQpzeW50aGV0aWNhbGx5CnN5bnRocwpzeXBoaWxpcy9NCnN5cGhpbGl0aWMvU00Kc3lyaW5nZS9EU01HCnN5cnVwL1NNCnN5cnVweQpzeXNhZG1pbi9TCnN5c29wL1MKc3lzdGVtL1NNCnN5c3RlbWF0aWMvVQpzeXN0ZW1hdGljYWwvWQpzeXN0ZW1hdGl6YXRpb24vTQpzeXN0ZW1hdGl6ZS9HRFMKc3lzdGVtaWMvTVMKc3lzdGVtaWNhbGx5CnN5c3RvbGUvU00Kc3lzdG9saWMKdC9TRE5YR0JKCnRhCnRhYi9TTQp0YWJiZWQKdGFiYmluZwp0YWJib3VsZWgvTQp0YWJieS9TTQp0YWJlcm5hY2xlL1NNCnRhYmxhL01TCnRhYmxlL01HRFMKdGFibGVhdS9NCnRhYmxlYXV4CnRhYmxlY2xvdGgvTQp0YWJsZWNsb3Rocwp0YWJsZWxhbmQvU00KdGFibGVzcG9vbi9TTQp0YWJsZXNwb29uZnVsL1NNCnRhYmxldC9TTQp0YWJsZXRvcC9NUwp0YWJsZXdhcmUvTQp0YWJsb2lkL1NNCnRhYm9vL01EU0cKdGFib3IvTVMKdGFidWxhcgp0YWJ1bGF0ZS9EU0dOWAp0YWJ1bGF0aW9uL00KdGFidWxhdG9yL1NNCnRhY2hvZ3JhcGgKdGFjaG9ncmFwaHMKdGFjaG9tZXRlci9TTQp0YWNoeWNhcmRpYS9NCnRhY2h5b24KdGFjaXQvUFkKdGFjaXRuZXNzL00KdGFjaXR1cm4vWQp0YWNpdHVybml0eS9NCnRhY2svWkdNRFJTCnRhY2tlci9NCnRhY2tpbmVzcy9NCnRhY2tsZS9EUlNNWkcKdGFja2xlci9NCnRhY2t5L1JUUAp0YWNvL01TCnRhY3QvRk0KdGFjdGZ1bC9ZUAp0YWN0ZnVsbmVzcy9NCnRhY3RpYy9TTQp0YWN0aWNhbC9ZCnRhY3RpY2lhbi9NUwp0YWN0aWxlCnRhY3RpbGl0eS9NCnRhY3RsZXNzL1BZCnRhY3RsZXNzbmVzcy9NCnRhZC9TTQp0YWRwb2xlL01TCnRhZmZldGEvTQp0YWZmcmFpbC9TTQp0YWZmeS9TTQp0YWcvU00KdGFnZ2VkCnRhZ2dlci9TTQp0YWdnaW5nCnRhZ2xpYXRlbGxlCnRhZ2xpbmUvTVMKdGFpZ2EvTVMKdGFpbC9BQ1NETUcKdGFpbGJhY2svTVMKdGFpbGJvYXJkL1MKdGFpbGJvbmUvUwp0YWlsY29hdC9NUwp0YWlsZ2F0ZS9NWkdEUlMKdGFpbGdhdGVyL00KdGFpbGxlc3MKdGFpbGxpZ2h0L01TCnRhaWxvci9TR01ECnRhaWxvcmluZy9NCnRhaWxwaWVjZS9TCnRhaWxwaXBlL1NNCnRhaWxzcGluL1NNCnRhaWx3aW5kL1NNCnRhaW50L01EU0cKdGFpbnRlZC9VCnRha2UvQUlNUwp0YWtlYXdheS9TCnRha2VuL0EKdGFrZW9mZi9NUwp0YWtlb3V0L01TCnRha2VvdmVyL1NNCnRha2VyL01TCnRha2luZy9TTQp0YWtpbmdzL00KdGFsYy9NCnRhbGN1bS9NCnRhbGUvTVMKdGFsZWJlYXJlci9NUwp0YWxlbnQvU01ECnRhbGVudGVkL1UKdGFsaQp0YWxpc21hbi9NUwp0YWxrL1pHTURSUwp0YWxrYXRpdmUvUFkKdGFsa2F0aXZlbmVzcy9NCnRhbGtlci9NCnRhbGtpZS9SU01UCnRhbGt5CnRhbGwvVFJQCnRhbGxib3kvTVMKdGFsbGllci9NCnRhbGxpc2gKdGFsbG5lc3MvTQp0YWxsb3cvTQp0YWxsb3d5CnRhbGx5L0RSU01aRwp0YWxseWhvL01ER1MKdGFsb24vTVMKdGFsdXMvTVMKdGFtL1NNCnRhbWFsZS9TTQp0YW1hcmFjay9NUwp0YW1hcmluZC9NUwp0YW1ib3VyaW5lL01TCnRhbWUvQllaVEdEUlNQCnRhbWVkL1UKdGFtZW5lc3MvTQp0YW1lci9NCnRhbW94aWZlbgp0YW1wL1pHRFJTCnRhbXBlci9aR0RSCnRhbXBlcmVyL00KdGFtcG9uL1NNCnRhbi9TTQp0YW5hZ2VyL01TCnRhbmJhcmsvTQp0YW5kZW0vU00KdGFuZG9vcmkvTQp0YW5nL01TCnRhbmdlbG8vTVMKdGFuZ2VudC9NUwp0YW5nZW50aWFsL1kKdGFuZ2VyaW5lL01TCnRhbmdpYmlsaXR5L0lNCnRhbmdpYmxlL0lNUwp0YW5naWJsZW5lc3MvTQp0YW5naWJseS9JCnRhbmdsZSdzCnRhbmdsZS9VRFNHCnRhbmdvL01EU0cKdGFuZ3kvUlQKdGFuay9aR01EUlMKdGFua2FyZC9NUwp0YW5rZXIvTQp0YW5rZnVsL01TCnRhbm5lZC9VCnRhbm5lci9TTQp0YW5uZXJ5L1NNCnRhbm5lc3QKdGFubmluL00KdGFubmluZy9NCnRhbnN5L00KdGFudGFsaXphdGlvbi9NCnRhbnRhbGl6ZS9aR0RSUwp0YW50YWxpemVyL00KdGFudGFsaXppbmcvWQp0YW50YWx1bS9NCnRhbnRhbW91bnQKdGFudHJhL00KdGFudHJ1bS9TTQp0YXAvU1pHTURSCnRhcGFzCnRhcGUvTVMKdGFwZWxpbmUvTVMKdGFwZXIvTURHCnRhcGVzdHJ5L1NNCnRhcGV3b3JtL01TCnRhcGlvY2EvTQp0YXBpci9NUwp0YXBwZWQvVQp0YXBwZXIvTVMKdGFwcGV0L01TCnRhcHBpbmcKdGFwcm9vbS9TTQp0YXByb290L1NNCnRhci9TR01ECnRhcmFtYXNhbGF0YQp0YXJhbnRlbGxhL01TCnRhcmFudHVsYS9TTQp0YXJiYWxsL1MKdGFyZGlseQp0YXJkaW5lc3MvTQp0YXJkeS9UUFIKdGFyZS9NUwp0YXJnZXQvTURHUwp0YXJpZmYvTVMKdGFybWFjL01TCnRhcm1hY2FkYW0KdGFybWFja2VkCnRhcm1hY2tpbmcKdGFybi9NUwp0YXJuaXNoL0dNRFMKdGFybmlzaGVkL1UKdGFyby9NUwp0YXJvdC9NUwp0YXJwL01TCnRhcnBhdWxpbi9NUwp0YXJwb24vTVMKdGFycmFnb24vU00KdGFycmVkCnRhcnJpbmcKdGFycnkvVEdEUlMKdGFyc2FsL01TCnRhcnNpCnRhcnN1cy9NCnRhcnQvUFRHTURSWVMKdGFydGFuL01TCnRhcnRhci9NUwp0YXJ0YXJpYwp0YXJ0bmVzcy9NCnRhcnR5L1QKdGFzZXIvR01EUwp0YXNrL0dNRFMKdGFza21hc3Rlci9NUwp0YXNrbWlzdHJlc3MvTVMKdGFzc2VsL01EU0cKdGFzdGUvSk1aR0RSUwp0YXN0ZWQvVQp0YXN0ZWZ1bC9FUFkKdGFzdGVmdWxuZXNzL0VNCnRhc3RlbGVzcy9QWQp0YXN0ZWxlc3NuZXNzL00KdGFzdGVyL00KdGFzdGlseQp0YXN0aW5lc3MvTQp0YXN0aW5nL00KdGFzdHkvVFJQCnRhdC9TWlIKdGF0YW1pL01TCnRhdGVyL00KdGF0dGVkCnRhdHRlci9NRFNHCnRhdHRlcmRlbWFsaW9uL01TCnRhdHRpZQp0YXR0aW5nL00KdGF0dGxlL01aR0RSUwp0YXR0bGVyL00KdGF0dGxldGFsZS9NUwp0YXR0b28vTURSU1pHCnRhdHRvb2VyL00KdGF0dG9vaXN0L1NNCnRhdHR5L1RSUwp0YXUvU00KdGF1Z2h0L1VBCnRhdW50L1pHTURSUwp0YXVudGVyL00KdGF1bnRpbmcvWQp0YXVwZS9NCnRhdXQvUFhUTlJZCnRhdXRlbi9ERwp0YXV0bmVzcy9NCnRhdXRvbG9naWNhbC9ZCnRhdXRvbG9nb3VzCnRhdXRvbG9neS9TTQp0YXZlcm4vTVMKdGF3ZHJpbHkKdGF3ZHJpbmVzcy9NCnRhd2RyeS9SVFAKdGF3bnkvVFJNCnRheC9CWkdNRFJTCnRheGEKdGF4YXRpb24vTQp0YXhlci9NCnRheGkvR01EUwp0YXhpY2FiL1NNCnRheGlkZXJtaXN0L1NNCnRheGlkZXJteS9NCnRheGltZXRlci9NUwp0YXhpd2F5L1MKdGF4bWFuCnRheG1lbgp0YXhvbgp0YXhvbm9taWMKdGF4b25vbWlzdC9NUwp0YXhvbm9teS9TTQp0YXhwYXllci9NUwp0YXhwYXlpbmcKdGIvUwp0YnNwCnRlYS9TTQp0ZWFiYWcvUwp0ZWFjYWtlL1NNCnRlYWNoL1pHUlNCSgp0ZWFjaGFibGUvVQp0ZWFjaGVyL00KdGVhY2hpbmcvTQp0ZWFjdXAvTVMKdGVhY3VwZnVsL01TCnRlYWsvTVMKdGVha2V0dGxlL1NNCnRlYWwvTVMKdGVhbGlnaHQvTVMKdGVhbS9HTURTCnRlYW1tYXRlL01TCnRlYW1zdGVyL01TCnRlYW13b3JrL00KdGVhcG90L01TCnRlYXIvR01EUwp0ZWFyYXdheS9TCnRlYXJkcm9wL1NNCnRlYXJmdWwvWQp0ZWFyZ2FzL01TCnRlYXJnYXNzZWQKdGVhcmdhc3NpbmcKdGVhcmplcmtlci9NUwp0ZWFyb29tL1NNCnRlYXJ5L1RSCnRlYXNlL01aR0RSUwp0ZWFzZWwvTVMKdGVhc2VyL00KdGVhc2luZy9ZCnRlYXNwb29uL1NNCnRlYXNwb29uZnVsL1NNCnRlYXQvTVMKdGVhdGltZS9TCnRlY2gvTQp0ZWNoaWUvUwp0ZWNobmV0aXVtL00KdGVjaG5pY2FsL1kKdGVjaG5pY2FsaXR5L1NNCnRlY2huaWNpYW4vU00KdGVjaG5pY29sb3IKdGVjaG5pcXVlL1NNCnRlY2hubwp0ZWNobm9iYWJibGUKdGVjaG5vY3JhY3kvU00KdGVjaG5vY3JhdC9NUwp0ZWNobm9jcmF0aWMKdGVjaG5vbG9naWNhbC9ZCnRlY2hub2xvZ2lzdC9NUwp0ZWNobm9sb2d5L1NNCnRlY2hub3Bob2JlL1MKdGVjaHMKdGVjdG9uaWMvUwp0ZWN0b25pY3MvTQp0ZWQvUwp0ZWRkeS9TCnRlZGlvdXMvUFkKdGVkaW91c25lc3MvTQp0ZWRpdW0vTQp0ZWUvRFNNSAp0ZWVpbmcKdGVlbS9HRFMKdGVlbi9NUwp0ZWVuYWdlL1JaCnRlZW5hZ2VyL00KdGVlbnkvVFIKdGVlbnlib3BwZXIvTVMKdGVldGVyL01EU0cKdGVldGhlL0dEUwp0ZWV0aGluZy9NCnRlZXRvdGFsL1JaCnRlZXRvdGFsZXIvTQp0ZWV0b3RhbGlzbS9NCnRla3RpdGUvU00KdGVsCnRlbGVjYXN0L1NaR01SCnRlbGVjYXN0ZXIvTQp0ZWxlY29tbXVuaWNhdGlvbi9NUwp0ZWxlY29tbXVuaWNhdGlvbnMvTQp0ZWxlY29tbXV0ZS9aR0RSUwp0ZWxlY29tbXV0ZXIvTQp0ZWxlY29tbXV0aW5nL00KdGVsZWNvbmZlcmVuY2UvTUdEUwp0ZWxlY29uZmVyZW5jaW5nL00KdGVsZWdlbmljCnRlbGVncmFtL01TCnRlbGVncmFwaC9NRFJaRwp0ZWxlZ3JhcGhlci9NCnRlbGVncmFwaGVzZQp0ZWxlZ3JhcGhpYwp0ZWxlZ3JhcGhpY2FsbHkKdGVsZWdyYXBoaXN0L1NNCnRlbGVncmFwaHMKdGVsZWdyYXBoeS9NCnRlbGVraW5lc2lzL00KdGVsZWtpbmV0aWMKdGVsZW1hcmtldGVyL1NNCnRlbGVtYXJrZXRpbmcvTQp0ZWxlbWV0ZXIvU00KdGVsZW1ldHJ5L1NNCnRlbGVvbG9naWNhbAp0ZWxlb2xvZ3kKdGVsZXBhdGhpYwp0ZWxlcGF0aGljYWxseQp0ZWxlcGF0aHkvTQp0ZWxlcGhvbmUvRFJTTVpHCnRlbGVwaG9uZXIvTQp0ZWxlcGhvbmljCnRlbGVwaG9uaXN0L1MKdGVsZXBob255L00KdGVsZXBob3RvL1NNCnRlbGVwaG90b2dyYXBoeS9NCnRlbGVwbGF5L01TCnRlbGVwb3J0CnRlbGVwb3J0YXRpb24KdGVsZXByaW50ZXIvTVMKdGVsZXByb2Nlc3NpbmcvTQp0ZWxlcHJvbXB0ZXIvU00KdGVsZXNhbGVzCnRlbGVzY29wZS9EU01HCnRlbGVzY29waWMKdGVsZXNjb3BpY2FsbHkKdGVsZXRleHQvTVMKdGVsZXRob24vTVMKdGVsZXR5cGUvUwp0ZWxldHlwZXdyaXRlci9NUwp0ZWxldmFuZ2VsaXNtL00KdGVsZXZhbmdlbGlzdC9NUwp0ZWxldmlzZS9YR05EUwp0ZWxldmlzaW9uL00KdGVsZXdvcmtlci9TCnRlbGV3b3JraW5nCnRlbGV4L01EU0cKdGVsbC9BR1MKdGVsbGVyL1NNCnRlbGxpbmcvWQp0ZWxsdGFsZS9TTQp0ZWxsdXJpdW0vTQp0ZWxseS9TTQp0ZWxuZXQKdGVtYmxvci9NUwp0ZW1lcml0eS9NCnRlbXAvTURSWlRHUwp0ZW1wZXIvTURHCnRlbXBlcmEvTFNNCnRlbXBlcmFtZW50L01TCnRlbXBlcmFtZW50YWwvWQp0ZW1wZXJhbmNlL0lNCnRlbXBlcmF0ZS9JWQp0ZW1wZXJhdGVuZXNzL00KdGVtcGVyYXR1cmUvU00KdGVtcGVzdC9TTQp0ZW1wZXN0dW91cy9ZUAp0ZW1wZXN0dW91c25lc3MvTQp0ZW1wbGF0ZSdzCnRlbXBsYXRlL1MKdGVtcGxlL1NNCnRlbXBvL1NNCnRlbXBvcmFsL1kKdGVtcG9yYXJpbHkKdGVtcG9yYXJpbmVzcy9NCnRlbXBvcmFyeS9GU00KdGVtcG9yaXplL1pHRFJTCnRlbXBvcml6ZXIvTQp0ZW1wdC9TRFJaRwp0ZW1wdGF0aW9uL01TCnRlbXB0ZXIvTQp0ZW1wdGluZy9ZCnRlbXB0cmVzcy9NUwp0ZW1wdXJhL00KdGVuL0JNSAp0ZW5hYmlsaXR5L00KdGVuYWJsZS9VCnRlbmFibHkKdGVuYWNpb3VzL1lQCnRlbmFjaW91c25lc3MvTQp0ZW5hY2l0eS9NCnRlbmFuY3kvU00KdGVuYW50L1NNREcKdGVuYW50ZWQvVQp0ZW5hbnRyeS9NCnRlbmNoCnRlbmQvSUVGREdTCnRlbmRlZC9VCnRlbmRlbmN5L1NNCnRlbmRlbnRpb3VzL1lQCnRlbmRlbnRpb3VzbmVzcy9NCnRlbmRlci9TTURSWVRHUAp0ZW5kZXJmb290L01TCnRlbmRlcmhlYXJ0ZWQvUAp0ZW5kZXJoZWFydGVkbmVzcy9NCnRlbmRlcml6ZS9aR0RSUwp0ZW5kZXJpemVyL00KdGVuZGVybG9pbi9TTQp0ZW5kZXJuZXNzL00KdGVuZGluaXRpcy9NCnRlbmRvbi9TTQp0ZW5kcmlsL1NNCnRlbmVtZW50L1NNCnRlbmV0L1NNCnRlbmZvbGQKdGVubmVyL1MKdGVubmlzL00KdGVub24vU01ERwp0ZW5vci9TTQp0ZW5waW4vU00KdGVucGlucy9NCnRlbnNlL0RSU01ZVEdOWFAKdGVuc2VuZXNzL00KdGVuc2lsZQp0ZW5zaW9uL0VTTQp0ZW5zaXR5L0lNCnRlbnNvci9TCnRlbnQvREdTTQp0ZW50YWNsZS9EU00KdGVudGF0aXZlL1BZCnRlbnRhdGl2ZW5lc3MvTQp0ZW50ZXJob29rL01TCnRlbnRoL01ZCnRlbnRocwp0ZW51aXR5L00KdGVudW91cy9QWQp0ZW51b3VzbmVzcy9NCnRlbnVyZS9EU01HCnRlcGVlL1NNCnRlcGlkL1lQCnRlcGlkaXR5L00KdGVwaWRuZXNzL00KdGVxdWlsYS9TTQp0ZXJhYml0L1NNCnRlcmFieXRlL01TCnRlcmFoZXJ0ei9NCnRlcmFwaXhlbC9NUwp0ZXJiaXVtL00KdGVyY2VudGVuYXJ5L1NNCnRlcmNlbnRlbm5pYWwvU00KdGVyaXlha2kKdGVybS9NRFlHUwp0ZXJtYWdhbnQvTVMKdGVybWluYWJsZS9JQwp0ZXJtaW5hbC9NWVMKdGVybWluYXRlL0RTR05YCnRlcm1pbmF0aW9uL0NTTQp0ZXJtaW5hdG9yL1MKdGVybWluaQp0ZXJtaW5vbG9naWNhbC9ZCnRlcm1pbm9sb2d5L1NNCnRlcm1pbnVzL00KdGVybWl0ZS9TTQp0ZXJuL0lNUwp0ZXJuYXJ5L1NNCnRlcnIKdGVycmFjZS9EU01HCnRlcnJhY290dGEvTQp0ZXJyYWluL1NNCnRlcnJhcGluL01TCnRlcnJhcml1bS9TTQp0ZXJyYXp6by9NUwp0ZXJyZXN0cmlhbC9TTVkKdGVycmlibGUvUAp0ZXJyaWJsZW5lc3MvTQp0ZXJyaWJseQp0ZXJyaWVyL00KdGVycmlmaWMKdGVycmlmaWNhbGx5CnRlcnJpZnkvR0RTCnRlcnJpZnlpbmcvWQp0ZXJyaW5lL1MKdGVycml0b3JpYWwvTVMKdGVycml0b3JpYWxpdHkKdGVycml0b3J5L1NNCnRlcnJvci9TTQp0ZXJyb3Jpc20vTQp0ZXJyb3Jpc3QvU00KdGVycm9yaXplL0RTRwp0ZXJyeS9STVoKdGVycnljbG90aC9NCnRlcnNlL1JZVFAKdGVyc2VuZXNzL00KdGVydGlhcnkKdGVzc2VsbGF0ZS9EU1hHTgp0ZXNzZWxsYXRpb24vTQp0ZXN0J3MvQUZLCnRlc3QvQUtGQ0RHUwp0ZXN0YWJsZS9DRgp0ZXN0YW1lbnQvTVMKdGVzdGFtZW50YXJ5CnRlc3RhdGUvUwp0ZXN0YXRvci9NUwp0ZXN0YXRyaWNlcwp0ZXN0YXRyaXgvTQp0ZXN0ZWQvVQp0ZXN0ZXIvS1NNCnRlc3Rlcwp0ZXN0aWNsZS9NUwp0ZXN0aWN1bGFyCnRlc3RpZmllci9NCnRlc3RpZnkvWkdEUlMKdGVzdGlseQp0ZXN0aW1vbmlhbC9NUwp0ZXN0aW1vbnkvU00KdGVzdGluZXNzL00KdGVzdGluZ3MKdGVzdGlzL00KdGVzdG9zdGVyb25lL00KdGVzdHkvUFJUCnRldGFudXMvTQp0ZXRjaGlseQp0ZXRjaHkvUFJUCnRldGhlci9TTURHCnRldHJhL1NNCnRldHJhY3ljbGluZS9NCnRldHJhaGVkcmFsCnRldHJhaGVkcm9uL01TCnRldHJhbWV0ZXIvU00KdGV4dC9GTVMKdGV4dGJvb2svU00KdGV4dGVkCnRleHRpbGUvTVMKdGV4dGluZwp0ZXh0dWFsL0ZZCnRleHR1cmFsCnRleHR1cmUvTUdEUwp0aGFsYW1pCnRoYWxhbXVzL00KdGhhbGlkb21pZGUvTQp0aGFsbGl1bS9NCnRoYW4KdGhhbmUvU00KdGhhbmsvU0RHCnRoYW5rZnVsL1lQCnRoYW5rZnVsbmVzcy9NCnRoYW5rbGVzcy9QWQp0aGFua2xlc3NuZXNzL00KdGhhbmtzZ2l2aW5nL1NNCnRoYXQvTQp0aGF0Y2gvTURSU1pHCnRoYXRjaGVyL00KdGhhdGNoaW5nL00KdGhhdy9NREdTCnRoZS9KRwp0aGVhdGVyL1NNCnRoZWF0ZXJnb2VyL1NNCnRoZWF0cmljYWwvWVMKdGhlYXRyaWNhbGl0eS9NCnRoZWF0cmljYWxzL00KdGhlYXRyaWNzL00KdGhlZS9TCnRoZWZ0L1NNCnRoZWlyL1MKdGhlaXNtL00KdGhlaXN0L1NNCnRoZWlzdGljCnRoZW0KdGhlbWF0aWMKdGhlbWF0aWNhbGx5CnRoZW1lL0RTTQp0aGVtc2VsdmVzCnRoZW4vTQp0aGVuY2UKdGhlbmNlZm9ydGgKdGhlbmNlZm9yd2FyZAp0aGVvY3JhY3kvU00KdGhlb2NyYXRpYwp0aGVvZG9saXRlL1MKdGhlb2xvZ2lhbi9TTQp0aGVvbG9naWNhbC9ZCnRoZW9sb2d5L1NNCnRoZW9yZW0vTVMKdGhlb3JldGljCnRoZW9yZXRpY2FsL1kKdGhlb3JldGljaWFuL1NNCnRoZW9yaXN0L1NNCnRoZW9yaXplL0RTRwp0aGVvcnkvU00KdGhlb3NvcGhpYwp0aGVvc29waGljYWwKdGhlb3NvcGhpc3QvU00KdGhlb3NvcGh5L00KdGhlcmFwZXV0aWMvUwp0aGVyYXBldXRpY2FsbHkKdGhlcmFwZXV0aWNzL00KdGhlcmFwaXN0L1NNCnRoZXJhcHkvU00KdGhlcmUvTQp0aGVyZWFib3V0L1MKdGhlcmVhZnRlcgp0aGVyZWF0CnRoZXJlYnkKdGhlcmVmb3IKdGhlcmVmb3JlCnRoZXJlZnJvbQp0aGVyZWluCnRoZXJlbWluL1NNCnRoZXJlb2YKdGhlcmVvbgp0aGVyZXRvCnRoZXJldG9mb3JlCnRoZXJldW50bwp0aGVyZXVwb24KdGhlcmV3aXRoCnRoZXJtL1NNCnRoZXJtYWwvTVlTCnRoZXJtaW9uaWMKdGhlcm1vZHluYW1pYy9TCnRoZXJtb2R5bmFtaWNzL00KdGhlcm1vbWV0ZXIvTVMKdGhlcm1vbWV0cmljCnRoZXJtb251Y2xlYXIKdGhlcm1vcGxhc3RpYy9TTQp0aGVybW9zL01TCnRoZXJtb3N0YXQvTVMKdGhlcm1vc3RhdGljCnRoZXJtb3N0YXRpY2FsbHkKdGhlc2F1cmkKdGhlc2F1cnVzL01TCnRoZXNlL1MKdGhlc2lzL00KdGhlc3BpYW4vU00KdGhldGEvU00KdGhldy9NUwp0aGV5CnRoZXknZAp0aGV5J2xsCnRoZXkncmUKdGhleSd2ZQp0aGlhbWluZS9NCnRoaWNrL1BNTlJZWFQKdGhpY2tlbi9EUkpaRwp0aGlja2VuZXIvTQp0aGlja2VuaW5nL00KdGhpY2tldC9NUwp0aGlja2hlYWRlZC9NCnRoaWNrbmVzcy9NUwp0aGlja28vUwp0aGlja3NldAp0aGllZi9NCnRoaWV2ZS9EU0cKdGhpZXZlcnkvTQp0aGlldmluZy9NCnRoaWV2aXNoCnRoaWdoL00KdGhpZ2hib25lL01TCnRoaWdocwp0aGltYmxlL01TCnRoaW1ibGVmdWwvU00KdGhpbi9ZU1AKdGhpbmUKdGhpbmcvTQp0aGluZ2FtYWJvYi9TTQp0aGluZ2FtYWppZy9TTQp0aGluZ3VtYWJvYi9TCnRoaW5ndW1teS9TCnRoaW5neS9TCnRoaW5rL1NSQlpHCnRoaW5rYWJsZS9VCnRoaW5rZXIvTQp0aGlua2luZydzCnRoaW5uZWQKdGhpbm5lci9NUwp0aGlubmVzcy9NCnRoaW5uZXN0CnRoaW5uaW5nCnRoaXJkL1NNWQp0aGlyc3QvU0dNRAp0aGlyc3RpbHkKdGhpcnN0aW5lc3MvTQp0aGlyc3R5L1RQUgp0aGlydGVlbi9TTUgKdGhpcnRlZW50aC9NCnRoaXJ0ZWVudGhzCnRoaXJ0aWV0aC9NCnRoaXJ0aWV0aHMKdGhpcnR5L0hTTQp0aGlzCnRoaXN0bGUvTVMKdGhpc3RsZWRvd24vTQp0aGl0aGVyCnRobwp0aG9sZS9TTQp0aG9uZy9TTQp0aG9yYWNpYwp0aG9yYXgvTVMKdGhvcml1bS9NCnRob3JuL1NNCnRob3JuaW5lc3MvTQp0aG9ybnkvUFJUCnRob3JvdWdoL1JZUFQKdGhvcm91Z2hicmVkL01TCnRob3JvdWdoZmFyZS9NUwp0aG9yb3VnaGdvaW5nCnRob3JvdWdobmVzcy9NCnRob3NlCnRob3UvTVMKdGhvdWdoCnRob3VnaHQvU00KdGhvdWdodGZ1bC9ZUAp0aG91Z2h0ZnVsbmVzcy9NCnRob3VnaHRsZXNzL1BZCnRob3VnaHRsZXNzbmVzcy9NCnRob3VzYW5kL01IUwp0aG91c2FuZGZvbGQKdGhvdXNhbmR0aC9NCnRob3VzYW5kdGhzCnRocmFsbC9TTURHCnRocmFsbGRvbS9NCnRocmFzaC9KTURSU1pHCnRocmFzaGVyL00KdGhyYXNoaW5nL00KdGhyZWFkL1NNRFJaRwp0aHJlYWRiYXJlCnRocmVhZGVyL00KdGhyZWFkbGlrZQp0aHJlYWR5L1RSCnRocmVhdC9TTU5YCnRocmVhdGVuL0RHCnRocmVhdGVuaW5nL1kKdGhyZWUvU00KdGhyZWVmb2xkCnRocmVlcGVuY2UvTQp0aHJlZXNjb3JlL01TCnRocmVlc29tZS9TTQp0aHJlbm9keS9TTQp0aHJlc2gvTURSU1pHCnRocmVzaGVyL00KdGhyZXNob2xkL1NNCnRocmV3CnRocmljZQp0aHJpZnQvU00KdGhyaWZ0aWx5CnRocmlmdGluZXNzL00KdGhyaWZ0bGVzcwp0aHJpZnR5L1BUUgp0aHJpbGwvU01EUlpHCnRocmlsbGVyL00KdGhyaWxsaW5nL1kKdGhyaXZlL0RTRwp0aHJvYXQvU00KdGhyb2F0aWx5CnRocm9hdGluZXNzL00KdGhyb2F0eS9SVFAKdGhyb2IvU00KdGhyb2JiZWQKdGhyb2JiaW5nCnRocm9lL1NNCnRocm9tYmkKdGhyb21ib2x5dGljCnRocm9tYm9zZXMKdGhyb21ib3Npcy9NCnRocm9tYm90aWMKdGhyb21idXMvTQp0aHJvbmUncwp0aHJvbmUvUwp0aHJvbmcvR1NNRAp0aHJvdHRsZS9EUlNNWkcKdGhyb3R0bGVyL00KdGhyb3VnaAp0aHJvdWdob3V0CnRocm91Z2hwdXQvTQp0aHJvdy9TTVJaRwp0aHJvd2F3YXkvU00KdGhyb3diYWNrL1NNCnRocm93ZXIvTQp0aHJvd24KdGhydQp0aHJ1bS9TTQp0aHJ1bW1lZAp0aHJ1bW1pbmcKdGhydXNoL01TCnRocnVzdC9HU00KdGhydXdheS9NUwp0aHVkL01TCnRodWRkZWQKdGh1ZGRpbmcKdGh1Zy9NUwp0aHVnZ2VyeS9NCnRodWdnaXNoCnRodWxpdW0vTQp0aHVtYi9TTURHCnRodW1ibmFpbC9TTQp0aHVtYnByaW50L1NNCnRodW1ic2NyZXcvU00KdGh1bWJ0YWNrL1NNCnRodW1wL1NNREcKdGh1bXBpbmcvTQp0aHVuZGVyL1pHTURSUwp0aHVuZGVyYm9sdC9TTQp0aHVuZGVyY2xhcC9TTQp0aHVuZGVyY2xvdWQvTVMKdGh1bmRlcmVyL00KdGh1bmRlcmhlYWQvU00KdGh1bmRlcm91cy9ZCnRodW5kZXJzaG93ZXIvU00KdGh1bmRlcnN0b3JtL1NNCnRodW5kZXJzdHJ1Y2sKdGh1bmRlcnkKdGh1bmsvUwp0aHVzCnRod2Fjay9aR1NNRFIKdGh3YWNrZXIvTQp0aHdhcnQvR1NNRAp0aHkKdGh5bWUvTQp0aHltaW5lL00KdGh5bXVzL01TCnRoeXJvaWQvTVMKdGh5cm9pZGFsCnRoeXNlbGYKdGkvTVJaCnRpYXJhL1NNCnRpYmlhL00KdGliaWFlCnRpYmlhbAp0aWMvU00KdGljay9NRFJaR1MKdGlja2VyL00KdGlja2V0L0dTTUQKdGlja2luZy9NCnRpY2tsZS9EUlNNWkcKdGlja2xlci9NCnRpY2tsaXNoL1lQCnRpY2tsaXNobmVzcy9NCnRpY2t0YWNrdG9lL00KdGlja3RvY2svTVMKdGlkYWwvWQp0aWRiaXQvU00KdGlkZGxlci9TCnRpZGRseQp0aWRkbHl3aW5rL1MKdGlkZGx5d2lua3MvTQp0aWRlL01HSkRTCnRpZGVsYW5kL1NNCnRpZGVtYXJrL1MKdGlkZXdhdGVyL01TCnRpZGV3YXkvTVMKdGlkaWx5L1UKdGlkaW5lc3MvVU0KdGlkaW5ncy9NCnRpZHkvRFJTTVRHUAp0aWUncwp0aWUvQVVTRAp0aWViYWNrL01TCnRpZWJyZWFrL1JTWgp0aWVicmVha2VyL00KdGllcGluL1MKdGllci9NRAp0aWZmL01ER1MKdGlnZXIvU00KdGlnZXJpc2gKdGlnaHQvU05SWVBYVAp0aWdodGVuL1pHRFIKdGlnaHRlbmVyL00KdGlnaHRmaXN0ZWQKdGlnaHRuZXNzL00KdGlnaHRyb3BlL01TCnRpZ2h0cy9NCnRpZ2h0d2FkL01TCnRpZ3Jlc3MvTVMKdGlsCnRpbGFwaWEKdGlsZGUvU00KdGlsZS9NWkdEUlMKdGlsZXIvTQp0aWxpbmcvTQp0aWxsJ3MKdGlsbC9FRFJaR1MKdGlsbGFibGUKdGlsbGFnZS9NCnRpbGxlci9FTQp0aWx0L01ER1MKdGltYmVyL1NNREcKdGltYmVybGFuZC9NCnRpbWJlcmxpbmUvTVMKdGltYnJlL1NNCnRpbWJyZWwvU00KdGltZS9NWVpHSkRSUwp0aW1la2VlcGVyL01TCnRpbWVrZWVwaW5nL00KdGltZWxlc3MvUFkKdGltZWxlc3NuZXNzL00KdGltZWxpbmUvTVMKdGltZWxpbmVzcy9VTQp0aW1lbHkvVVBSVAp0aW1lb3V0L1NNCnRpbWVwaWVjZS9NUwp0aW1lci9NCnRpbWVzY2FsZS9TCnRpbWVzZXJ2ZXIvU00KdGltZXNlcnZpbmcvTQp0aW1lc2hhcmUvUwp0aW1ldGFibGUvRFNNRwp0aW1ld29ybgp0aW1lem9uZQp0aW1pZC9SWVRQCnRpbWlkaXR5L00KdGltaWRuZXNzL00KdGltaW5nL00KdGltb3JvdXMvUFkKdGltb3JvdXNuZXNzL00KdGltb3RoeS9NCnRpbXBhbmkvTQp0aW1wYW5pc3QvU00KdGluL1NNCnRpbmN0dXJlL01HRFMKdGluZGVyL00KdGluZGVyYm94L01TCnRpbmUvTVMKdGluZm9pbC9NCnRpbmcvTURZRwp0aW5nZS9TTQp0aW5nZWluZwp0aW5nbGUvRFNNR0oKdGluZ2xpbmcvTQp0aW5pbmVzcy9NCnRpbmtlci9aR1NNRFIKdGlua2VyZXIvTQp0aW5rbGUvRFNNRwp0aW5uZWQKdGlubmluZXNzL00KdGlubmluZwp0aW5uaXR1cy9NCnRpbm55L1BSVAp0aW5wbGF0ZS9NCnRpbnBvdAp0aW5zZWwvR1NNRAp0aW5zbWl0aC9NCnRpbnNtaXRocwp0aW50L01ER1MKdGludGlubmFidWxhdGlvbi9NUwp0aW50eXBlL01TCnRpbndhcmUvTQp0aW55L1JUUAp0aXAvU00KdGlwcGVkCnRpcHBlci9TTQp0aXBwZXQvU00KdGlwcGV4L0dEUwp0aXBwaW5nCnRpcHBsZS9EUlNNWkcKdGlwcGxlci9NCnRpcHNpbHkKdGlwc2luZXNzL00KdGlwc3Rlci9NUwp0aXBzeS9SUFQKdGlwdG9lL0RTTQp0aXB0b2VpbmcKdGlwdG9wL1NNCnRpcmFkZS9TTQp0aXJhbWlzdS9NUwp0aXJlJ3MKdGlyZS9BR0RTCnRpcmVkL1BSWVQKdGlyZWRuZXNzL00KdGlyZWxlc3MvWVAKdGlyZWxlc3NuZXNzL00KdGlyZXNvbWUvUFkKdGlyZXNvbWVuZXNzL00KdGlzc3VlL1NNCnRpdC9TTQp0aXRhbi9TTQp0aXRhbmljCnRpdGFuaXVtL00KdGl0Y2gvUwp0aXRjaHkKdGl0aGUvRFJTTVpHCnRpdGhlci9NCnRpdGlhbi9NCnRpdGlsbGF0ZS9EU0dOCnRpdGlsbGF0aW5nL1kKdGl0aWxsYXRpb24vTQp0aXRpdmF0ZS9EU0dOCnRpdGl2YXRpb24vTQp0aXRsZS9EU01HCnRpdGxlZC9VCnRpdGxlaG9sZGVyL01TCnRpdGxpc3QvTVMKdGl0bWljZQp0aXRtb3VzZS9NCnRpdHRlci9TR01ECnRpdHRsZS9TTQp0aXR0eS9TCnRpdHVsYXIKdGl6egp0aXp6eS9TTQp0bgp0bnBrCnRvL0lVCnRvYWQvTVMKdG9hZHN0b29sL01TCnRvYWR5L0RTTUcKdG9hZHlpc20vTQp0b2FzdC9TTURSWkcKdG9hc3Rlci9NCnRvYXN0bWFzdGVyL1NNCnRvYXN0bWlzdHJlc3MvTVMKdG9hc3R5L1RSUwp0b2JhY2NvL01TCnRvYmFjY29uaXN0L1NNCnRvYm9nZ2FuL1pHU01EUgp0b2JvZ2dhbmVyL00KdG9ib2dnYW5pbmcvTQp0b2NjYXRhL1MKdG9jc2luL1NNCnRvZGF5L00KdG9kZGxlL0RSU01aRwp0b2RkbGVyL00KdG9kZHkvU00KdG9lL0RTTQp0b2VjYXAvU00KdG9laG9sZC9NUwp0b2VpbmcKdG9lbmFpbC9NUwp0b2VyYWcvUwp0b2ZmL1MKdG9mZmVlL1NNCnRvZnUvTQp0b2cvU00KdG9nYS9NRFMKdG9nZXRoZXIvUAp0b2dldGhlcm5lc3MvTQp0b2dnZWQKdG9nZ2luZwp0b2dnbGUvRFNNRwp0b2dzL00KdG9pbC9NRFJaR1MKdG9pbGVyL00KdG9pbGV0L01ER1MKdG9pbGV0cnkvU00KdG9pbGV0dGUvTQp0b2lsc29tZQp0b2tlL01HRFMKdG9rZW4vU00KdG9rZW5pc20vTQp0b2xkL0FVCnRvbGUvTQp0b2xlcmFibGUvSQp0b2xlcmFibHkvSQp0b2xlcmFuY2UvSU0KdG9sZXJhbmNlcwp0b2xlcmFudC9JWQp0b2xlcmF0ZS9HTkRTCnRvbGVyYXRpb24vTQp0b2xsL01ER1MKdG9sbGJvb3RoL00KdG9sbGJvb3Rocwp0b2xsZ2F0ZS9TTQp0b2xsd2F5L1NNCnRvbHVlbmUvTQp0b20vU00KdG9tYWhhd2svU0dNRAp0b21hdG8vTQp0b21hdG9lcwp0b21iL01ER1MKdG9tYm9sYS9TCnRvbWJveS9NUwp0b21ib3lpc2gKdG9tYnN0b25lL01TCnRvbWNhdC9NUwp0b21lL01TCnRvbWZvb2xlcnkvU00KdG9tb2dyYXBoaWMKdG9tb2dyYXBoeS9NCnRvbW9ycm93L01TCnRvbXRpdC9NUwp0b24vU00KdG9uYWwvWQp0b25hbGl0eS9TTQp0b25lJ3MKdG9uZS9JWkdEUlMKdG9uZWFybS9TTQp0b25lbGVzcy9ZCnRvbmVyL0lNCnRvbmcvTURHUwp0b25ndWUvTUdEUwp0b25ndWVsZXNzCnRvbmljL1NNCnRvbmlnaHQvTQp0b25uYWdlL1NNCnRvbm5lL1NNCnRvbnNpbC9NUwp0b25zaWxsZWN0b215L1NNCnRvbnNpbGxpdGlzL00KdG9uc29yaWFsCnRvbnN1cmUvRFNNRwp0b255L1JUCnRvbwp0b29rL0EKdG9vbCdzCnRvb2wvQURHUwp0b29sYmFyL00KdG9vbGJveC9NUwp0b29sa2l0CnRvb2xtYWtlci9NUwp0b290L01EUlpHUwp0b290ZXIvTQp0b290aC9NRAp0b290aGFjaGUvTVMKdG9vdGhicnVzaC9NUwp0b290aGlseQp0b290aGxlc3MKdG9vdGhwYXN0ZS9TTQp0b290aHBpY2svU00KdG9vdGhzb21lCnRvb3RoeS9SVAp0b290bGUvR0RTCnRvb3RzaWUvUwp0b3AvU00KdG9wYXovTVMKdG9wY29hdC9TTQp0b3BkcmVzc2luZy9TTQp0b3BlZS9TCnRvcGZsaWdodAp0b3BpCnRvcGlhcnkvTQp0b3BpYy9TTQp0b3BpY2FsL1kKdG9waWNhbGl0eS9NCnRvcGtub3QvU00KdG9wbGVzcwp0b3BtYXN0L1NNCnRvcG1vc3QKdG9wbm90Y2gKdG9wb2dyYXBoZXIvU00KdG9wb2dyYXBoaWMKdG9wb2dyYXBoaWNhbC9ZCnRvcG9ncmFwaHkvU00KdG9wb2xvZ2ljYWwvWQp0b3BvbG9neQp0b3BwZWQKdG9wcGVyL01TCnRvcHBpbmcvU00KdG9wcGxlL0dEUwp0b3BzYWlsL1NNCnRvcHNpZGUvU00KdG9wc29pbC9NCnRvcHNwaW4vTQp0b3F1ZS9TTQp0b3IvU00KdG9yY2gvR01EUwp0b3JjaGJlYXJlci9NUwp0b3JjaGxpZ2h0L00KdG9yZQp0b3JlYWRvci9NUwp0b3JtZW50L1NNREcKdG9ybWVudGluZy9ZCnRvcm1lbnRvci9NUwp0b3JuCnRvcm5hZG8vTQp0b3JuYWRvZXMKdG9ycGVkby9HTUQKdG9ycGVkb2VzCnRvcnBpZC9ZCnRvcnBpZGl0eS9NCnRvcnBvci9NCnRvcnF1ZS9NR0RTCnRvcnJlbnQvU00KdG9ycmVudGlhbAp0b3JyaWQvWVAKdG9ycmlkaXR5L00KdG9ycmlkbmVzcy9NCnRvcnNpb24vTQp0b3JzaW9uYWwKdG9yc28vU00KdG9ydCdzCnRvcnQvRkVBUwp0b3J0ZS9TTQp0b3J0ZWxsaW5pL00KdG9ydGlsbGEvTVMKdG9ydG9pc2UvTVMKdG9ydG9pc2VzaGVsbC9TTQp0b3J0b25pL00KdG9ydHVvdXMvUFkKdG9ydHVvdXNuZXNzL00KdG9ydHVyZS9EUlNNWkcKdG9ydHVyZXIvTQp0b3J0dXJvdXMKdG9ydXMKdG9zaAp0b3NzL01EUlNaRwp0b3NzdXAvTVMKdG90L1NHTUQKdG90YWwvR1NNRFkKdG90YWxpdGFyaWFuL1NNCnRvdGFsaXRhcmlhbmlzbS9NCnRvdGFsaXR5L1NNCnRvdGFsaXphdG9yL1NNCnRvdGUvTVMKdG90ZW0vU00KdG90ZW1pYwp0b3R0ZWQKdG90dGVyL1pHTURSUwp0b3R0ZXJlci9NCnRvdHRpbmcKdG91Y2FuL01TCnRvdWNoL0FHTURTCnRvdWNoZG93bi9TTQp0b3VjaGUvQkoKdG91Y2hlZC9VCnRvdWNoaWx5CnRvdWNoaW5lc3MvTQp0b3VjaGluZy9ZCnRvdWNobGluZS9TCnRvdWNocGFwZXIvUwp0b3VjaHNjcmVlbi9NUwp0b3VjaHN0b25lL01TCnRvdWNoeS9SUFQKdG91Z2gvWFRHTUROUllQCnRvdWdoZW4vWkdEUgp0b3VnaGVuZXIvTQp0b3VnaGllL1NNCnRvdWdobmVzcy9NCnRvdWdocwp0b3VwZWUvTVMKdG91ci9DRlNHRE0KdG91cmlzbS9NCnRvdXJpc3QvTVMKdG91cmlzdGljCnRvdXJpc3R5CnRvdXJtYWxpbmUvTQp0b3VybmFtZW50L1NNCnRvdXJuZXkvTVMKdG91cm5pcXVldC9NUwp0b3VzbGUvR0RTCnRvdXQvTURHUwp0b3cvU1pHTURSCnRvd2FyZC9TCnRvd2JvYXQvTVMKdG93ZWwvSkdTTUQKdG93ZWxldHRlL1NNCnRvd2VsaW5nL00KdG93ZXIvR01ECnRvd2hlYWQvTURTCnRvd2hlZS9NUwp0b3dsaW5lL01TCnRvd24vTVMKdG93bmVlL1MKdG93bmhvdXNlL01TCnRvd25pZS9NUwp0b3duc2ZvbGsvTQp0b3duc2hpcC9NUwp0b3duc21hbi9NCnRvd25zbWVuCnRvd25zcGVvcGxlL00KdG93bnN3b21hbi9NCnRvd25zd29tZW4KdG93cGF0aC9NCnRvd3BhdGhzCnRvd3JvcGUvU00KdG94ZW1pYS9NCnRveGljCnRveGljaXR5L1NNCnRveGljb2xvZ2ljYWwKdG94aWNvbG9naXN0L1NNCnRveGljb2xvZ3kvTQp0b3hpbi9TTQp0b3kvU0dNRAp0b3lib3kvUwp0cgp0cmFiZWN1bGEKdHJhYmVjdWxhcgp0cmFiZWN1bGUKdHJhY2UvSkRSU01aRwp0cmFjZWFibGUvVQp0cmFjZXIvTQp0cmFjZXJ5L1NNCnRyYWNoZWEvTQp0cmFjaGVhZQp0cmFjaGVhbAp0cmFjaGVvdG9teS9TTQp0cmFjaW5nL00KdHJhY2svWkdTTURSCnRyYWNrYmFsbC9TTQp0cmFja2VyL00KdHJhY2tsZXNzCnRyYWNrc3VpdC9TCnRyYWN0J3MKdHJhY3QvQ0VLRkFTCnRyYWN0YWJpbGl0eS9JTQp0cmFjdGFibGUvSQp0cmFjdGFibHkvSQp0cmFjdGlvbi9FRkFDS00KdHJhY3Rvci9GQ0tNUwp0cmFkCnRyYWRlL0pEUlNNWkcKdHJhZGVtYXJrL1NHTUQKdHJhZGVyL00KdHJhZGVzbWFuL00KdHJhZGVzbWVuCnRyYWRlc3Blb3BsZS9NCnRyYWRlc3dvbWFuL00KdHJhZGVzd29tZW4KdHJhZGluZy9NCnRyYWRpdGlvbi9NUwp0cmFkaXRpb25hbC9ZCnRyYWRpdGlvbmFsaXNtL00KdHJhZGl0aW9uYWxpc3QvU00KdHJhZHVjZS9EUlNaRwp0cmFkdWNlci9NCnRyYWZmaWMvU00KdHJhZmZpY2tlZAp0cmFmZmlja2VyL1NNCnRyYWZmaWNraW5nL00KdHJhZ2VkaWFuL1NNCnRyYWdlZGllbm5lL01TCnRyYWdlZHkvU00KdHJhZ2ljCnRyYWdpY2FsbHkKdHJhZ2ljb21lZHkvU00KdHJhZ2ljb21pYwp0cmFpbC9aR1NNRFIKdHJhaWxibGF6ZXIvTVMKdHJhaWxibGF6aW5nL00KdHJhaWxlci9NCnRyYWluL1pHU01EUkIKdHJhaW5lZC9VCnRyYWluZWUvU00KdHJhaW5lci9NCnRyYWluaW5nL00KdHJhaW5sb2FkL01TCnRyYWlubWFuL00KdHJhaW5tZW4KdHJhaW5zcG90dGVyL1MKdHJhaW5zcG90dGluZwp0cmFpcHNlL0RTTUcKdHJhaXQvU00KdHJhaXRvci9TTQp0cmFpdG9yb3VzL1kKdHJhamVjdG9yeS9TTQp0cmFtL01TCnRyYW1jYXIvUwp0cmFtbGluZXMKdHJhbW1lZAp0cmFtbWVsL1NHTUQKdHJhbW1lbGVkL1UKdHJhbW1pbmcKdHJhbXAvWkdTTURSCnRyYW1wZXIvTQp0cmFtcGxlL0RSU01aRwp0cmFtcGxlci9NCnRyYW1wb2xpbmUvTUdEUwp0cmFtd2F5L1MKdHJhbmNlL01TCnRyYW5jaGUvUwp0cmFucXVpbC9SWVQKdHJhbnF1aWxpdHkvTQp0cmFucXVpbGl6ZS9aR0RSUwp0cmFucXVpbGl6ZXIvTQp0cmFucy9JCnRyYW5zYWN0L0RHUwp0cmFuc2FjdGlvbi9TTQp0cmFuc2FjdG9yL01TCnRyYW5zYXRsYW50aWMKdHJhbnNjZWl2ZXIvU00KdHJhbnNjZW5kL0dTRAp0cmFuc2NlbmRlbmNlL00KdHJhbnNjZW5kZW50CnRyYW5zY2VuZGVudGFsL1kKdHJhbnNjZW5kZW50YWxpc20vTQp0cmFuc2NlbmRlbnRhbGlzdC9TTQp0cmFuc2NvbnRpbmVudGFsCnRyYW5zY3JpYmUvWkdEUlMKdHJhbnNjcmliZXIvTQp0cmFuc2NyaXB0L01TCnRyYW5zY3JpcHRpb24vU00KdHJhbnNkdWNlci9NUwp0cmFuc2VjdC9EU0cKdHJhbnNlcHQvTVMKdHJhbnNmZXIvTUJTCnRyYW5zZmVyYWwvTVMKdHJhbnNmZXJlbmNlL00KdHJhbnNmZXJyZWQKdHJhbnNmZXJyaW5nCnRyYW5zZmlndXJhdGlvbi9NCnRyYW5zZmlndXJlL0dEUwp0cmFuc2Zpbml0ZQp0cmFuc2ZpeC9EU0cKdHJhbnNmb3JtL0JTWkdNRFIKdHJhbnNmb3JtYXRpb24vU00KdHJhbnNmb3JtZXIvTQp0cmFuc2Z1c2UvRFNYR04KdHJhbnNmdXNpb24vTQp0cmFuc2dlbmRlci9TCnRyYW5zZ2VuaWMKdHJhbnNncmVzcy9HRFMKdHJhbnNncmVzc2lvbi9TTQp0cmFuc2dyZXNzb3IvU00KdHJhbnNpZW5jZS9NCnRyYW5zaWVuY3kvTQp0cmFuc2llbnQvU01ZCnRyYW5zaXN0b3IvU00KdHJhbnNpc3Rvcml6ZS9EU0cKdHJhbnNpdC9TR01ECnRyYW5zaXRpb24vR1NNRAp0cmFuc2l0aW9uYWwvWQp0cmFuc2l0aXZlL0lTTVkKdHJhbnNpdGl2ZW5lc3MvTQp0cmFuc2l0aXZpdHkvTQp0cmFuc2l0b3J5CnRyYW5zbAp0cmFuc2xhdGFibGUvVQp0cmFuc2xhdGUvRFNHTkJYCnRyYW5zbGF0ZWQvVQp0cmFuc2xhdGlvbi9NCnRyYW5zbGF0b3IvU00KdHJhbnNsaXRlcmF0ZS9EU0dOWAp0cmFuc2xpdGVyYXRpb24vTQp0cmFuc2xvY2F0aW9uCnRyYW5zbHVjZW5jZS9NCnRyYW5zbHVjZW5jeS9NCnRyYW5zbHVjZW50L1kKdHJhbnNtaWdyYXRlL0dORFMKdHJhbnNtaWdyYXRpb24vTQp0cmFuc21pc3NpYmxlCnRyYW5zbWlzc2lvbi9NUwp0cmFuc21pdC9TCnRyYW5zbWl0dGFibGUKdHJhbnNtaXR0YWwvTQp0cmFuc21pdHRhbmNlL00KdHJhbnNtaXR0ZWQKdHJhbnNtaXR0ZXIvU00KdHJhbnNtaXR0aW5nCnRyYW5zbW9ncmlmaWNhdGlvbi9NCnRyYW5zbW9ncmlmeS9EU05HCnRyYW5zbXV0YXRpb24vU00KdHJhbnNtdXRlL0JEU0cKdHJhbnNuYXRpb25hbC9NUwp0cmFuc29jZWFuaWMKdHJhbnNvbS9TTQp0cmFuc3BhY2lmaWMKdHJhbnNwYXJlbmN5L1NNCnRyYW5zcGFyZW50L1kKdHJhbnNwaXJhdGlvbi9NCnRyYW5zcGlyZS9EU0cKdHJhbnNwbGFudC9NREdTCnRyYW5zcGxhbnRhdGlvbi9NCnRyYW5zcG9sYXIKdHJhbnNwb25kZXIvU00KdHJhbnNwb3J0L0JTWkdNRFIKdHJhbnNwb3J0YXRpb24vTQp0cmFuc3BvcnRlci9NCnRyYW5zcG9zZS9EU0cKdHJhbnNwb3NpdGlvbi9NUwp0cmFuc3NleHVhbC9TTQp0cmFuc3NleHVhbGlzbS9NCnRyYW5zc2hpcC9TTAp0cmFuc3NoaXBtZW50L00KdHJhbnNzaGlwcGVkCnRyYW5zc2hpcHBpbmcKdHJhbnN1YnN0YW50aWF0aW9uL00KdHJhbnN2ZXJzZS9NWVMKdHJhbnN2ZXN0aXNtL00KdHJhbnN2ZXN0aXRlL01TCnRyYXAvTVMKdHJhcGRvb3IvTVMKdHJhcGV6ZS9TTQp0cmFwZXppdW0vU00KdHJhcGV6b2lkL1NNCnRyYXBlem9pZGFsCnRyYXBwYWJsZQp0cmFwcGVkCnRyYXBwZXIvU00KdHJhcHBpbmcvUwp0cmFwcGluZ3MvTQp0cmFwc2hvb3RpbmcvTQp0cmFzaC9HTURTCnRyYXNoY2FuL01TCnRyYXNoaW5lc3MvTQp0cmFzaHkvUlBUCnRyYXVtYS9NUwp0cmF1bWF0aWMKdHJhdW1hdGljYWxseQp0cmF1bWF0aXplL0dEUwp0cmF2YWlsL1NHTUQKdHJhdmVsL01EUlNaR0oKdHJhdmVsZWQvVQp0cmF2ZWxlci9NCnRyYXZlbGluZy9NCnRyYXZlbG9ndWUvTVMKdHJhdmVyc2FsL1NNCnRyYXZlcnNlL0RTTUcKdHJhdmVzdHkvR0RTTQp0cmF3bC9aR1NNRFIKdHJhd2xlci9NCnRyYXkvTVMKdHJlYWNoZXJvdXMvUFkKdHJlYWNoZXJvdXNuZXNzL00KdHJlYWNoZXJ5L1NNCnRyZWFjbGUvTQp0cmVhY2x5CnRyZWFkL0FHU00KdHJlYWRsZS9EU01HCnRyZWFkbWlsbC9NUwp0cmVhcwp0cmVhc29uL0JNCnRyZWFzb25vdXMKdHJlYXN1cmUvRFJTTVpHCnRyZWFzdXJlci9NCnRyZWFzdXJ5L1NNCnRyZWF0L0FHU01ECnRyZWF0YWJsZQp0cmVhdGVkL1UKdHJlYXRpc2UvU00KdHJlYXRtZW50L01TCnRyZWF0eS9TTQp0cmVibGUvTUdEUwp0cmVlL01EUwp0cmVlaW5nCnRyZWVsZXNzCnRyZWVsaWtlCnRyZWVsaW5lCnRyZWV0b3AvU00KdHJlZm9pbC9TTQp0cmVrL01TCnRyZWtrZWQKdHJla2tlci9TTQp0cmVra2luZwp0cmVsbGlzL0dNRFMKdHJlbWF0b2RlL01TCnRyZW1ibGUvRFNNRwp0cmVtZW5kb3VzL1kKdHJlbW9sby9TTQp0cmVtb3IvTVMKdHJlbXVsb3VzL1BZCnRyZW11bG91c25lc3MvTQp0cmVuY2gncwp0cmVuY2gvQURTRwp0cmVuY2hhbmN5L00KdHJlbmNoYW50L1kKdHJlbmNoZXIvTVMKdHJlbmNoZXJtYW4vTQp0cmVuY2hlcm1lbgp0cmVuZC9HU01ECnRyZW5kaWx5CnRyZW5kaW5lc3MvTQp0cmVuZHNldHRlci9TCnRyZW5kc2V0dGluZwp0cmVuZHkvUlNNUFQKdHJlcGlkYXRpb24vTQp0cmVzcGFzcy9NRFJTWkcKdHJlc3Bhc3Nlci9NCnRyZXNzL0VNUwp0cmVzdGxlL01TCnRyZXdzCnRyZXkvTVMKdHJpYWQvU00KdHJpYWdlL00KdHJpYWwvQVNNCnRyaWFsZWQKdHJpYWxpbmcKdHJpYW5nbGUvU00KdHJpYW5ndWxhci9ZCnRyaWFuZ3VsYXRlL0dORFMKdHJpYW5ndWxhdGlvbi9NCnRyaWF0aGxldGUvUwp0cmlhdGhsb24vU00KdHJpYmFsCnRyaWJhbGlzbS9NCnRyaWJlL1NNCnRyaWJlc21hbi9NCnRyaWJlc21lbgp0cmliZXN3b21hbi9NCnRyaWJlc3dvbWVuCnRyaWJ1bGF0aW9uL1NNCnRyaWJ1bmFsL1NNCnRyaWJ1bmUvTVMKdHJpYnV0YXJ5L1NNCnRyaWJ1dGUncwp0cmlidXRlL0ZTCnRyaWNlL00KdHJpY2VudGVubmlhbC9NUwp0cmljZXBzL01TCnRyaWNlcmF0b3BzL00KdHJpY2hpbmEvTQp0cmljaGluYWUKdHJpY2hpbm9zaXMvTQp0cmljay9HU01ECnRyaWNrZXJ5L00KdHJpY2tpbHkKdHJpY2tpbmVzcy9NCnRyaWNrbGUvTUdEUwp0cmlja3N0ZXIvU00KdHJpY2t5L1RSUAp0cmljb2xvci9TTQp0cmljeWNsZS9TTQp0cmlkZW50L01TCnRyaWVkL1UKdHJpZW5uaWFsL01ZUwp0cmllci9TTQp0cmlmZWN0YS9TTQp0cmlmbGUvTVpHRFJTCnRyaWZsZXIvTQp0cmlmb2NhbHMvTQp0cmlnL00KdHJpZ2dlci9NRFNHCnRyaWdseWNlcmlkZS9NUwp0cmlnb25vbWV0cmljCnRyaWdvbm9tZXRyaWNhbAp0cmlnb25vbWV0cnkvTQp0cmlrZS9TTQp0cmlsYXRlcmFsL1MKdHJpbGJ5L1NNCnRyaWxsL0dTTUQKdHJpbGxpb24vU01ICnRyaWxsaW9udGgvTQp0cmlsbGlvbnRocwp0cmlsbGl1bS9NCnRyaWxvYml0ZS9TTQp0cmlsb2d5L1NNCnRyaW0vUE1ZUwp0cmltYXJhbi9NUwp0cmltZXN0ZXIvU00KdHJpbW1lZC9VCnRyaW1tZXIvU00KdHJpbW1lc3QKdHJpbW1pbmcvU00KdHJpbW1pbmdzL00KdHJpbW5lc3MvTQp0cmltb250aGx5CnRyaW5pdHJvdG9sdWVuZS9NCnRyaW5pdHkvU00KdHJpbmtldC9TTQp0cmlvL01TCnRyaXAvTVlTCnRyaXBhcnRpdGUKdHJpcGUvTQp0cmlwbGUvTUdEUwp0cmlwbGV0L1NNCnRyaXBsZXgvTVMKdHJpcGxpY2F0ZS9NR0RTCnRyaXBvZC9NUwp0cmlwb2RhbAp0cmlwb3MKdHJpcHBlZAp0cmlwcGVyL1NNCnRyaXBwaW5nCnRyaXB0eWNoL00KdHJpcHR5Y2hzCnRyaXB3aXJlL1MKdHJpcmVtZS9TTQp0cmlzZWN0L1NERwp0cmlzZWN0aW9uL00KdHJpdGUvRlBZVAp0cml0ZW5lc3MvRk0KdHJpdGVyCnRyaXRpdW0vTQp0cml1bXBoL0dNRAp0cml1bXBoYWwKdHJpdW1waGFsaXNtCnRyaXVtcGhhbGlzdAp0cml1bXBoYW50L1kKdHJpdW1waHMKdHJpdW12aXIvTVMKdHJpdW12aXJhdGUvU00KdHJpdmFsZW50CnRyaXZldC9NUwp0cml2aWEvTQp0cml2aWFsL1kKdHJpdmlhbGl0eS9TTQp0cml2aWFsaXphdGlvbi9NCnRyaXZpYWxpemUvR0RTCnRyaXZpdW0vTQp0cm9jaGFpYwp0cm9jaGVlL1NNCnRyb2QvQVUKdHJvZGRlbi9BCnRyb2dsb2R5dGUvU00KdHJvaWthL01TCnRyb2xsL1NHTUQKdHJvbGxleS9TTQp0cm9sbGV5YnVzL01TCnRyb2xsb3AvU00KdHJvbWJvbmUvTVMKdHJvbWJvbmlzdC9NUwp0cm9tcC9TR0QKdHJvbi9TCnRyb29wL1NaR01EUgp0cm9vcGVyL00KdHJvb3BzaGlwL01TCnRyb3BlL1NNCnRyb3BoeS9TTQp0cm9waWMvTVMKdHJvcGljYWwvWQp0cm9waWNzL00KdHJvcGlzbS9TTQp0cm9wb3NwaGVyZS9TTQp0cm90L01TCnRyb3RoL00KdHJvdHRlZAp0cm90dGVyL1NNCnRyb3R0aW5nCnRyb3ViYWRvdXIvTVMKdHJvdWJsZS9EU01HCnRyb3VibGVkL1UKdHJvdWJsZW1ha2VyL01TCnRyb3VibGVzaG9vdC9EUlpHUwp0cm91Ymxlc2hvb3Rlci9NCnRyb3VibGVzaG9vdGluZy9NCnRyb3VibGVzaG90CnRyb3VibGVzb21lL1kKdHJvdWdoL00KdHJvdWdocwp0cm91bmNlL0RSU1pHCnRyb3VuY2VyL00KdHJvdXBlL01aR0RSUwp0cm91cGVyL00KdHJvdXNlci9TTQp0cm91c2Vycy9NCnRyb3Vzc2VhdS9NCnRyb3Vzc2VhdXgKdHJvdXQvU00KdHJvdmUvU00KdHJvdy9EU0cKdHJvd2VsL01EU0cKdHJveS9TCnRydWFuY3kvTQp0cnVhbnQvR01EUwp0cnVjZS9TTQp0cnVjay9TWkdNRFIKdHJ1Y2tlci9NCnRydWNraW5nL00KdHJ1Y2tsZS9NR0RTCnRydWNrbG9hZC9TTQp0cnVjdWxlbmNlL00KdHJ1Y3VsZW50L1kKdHJ1ZGdlL01HRFMKdHJ1ZS9NVEdEUlMKdHJ1ZWxvdmUvU00KdHJ1ZmZsZS9NUwp0cnVnL1MKdHJ1aXNtL01TCnRydWx5L1UKdHJ1bXAvU0dNRAp0cnVtcGVyeS9NCnRydW1wZXQvWkdNRFJTCnRydW1wZXRlci9NCnRydW5jYXRlL0dORFMKdHJ1bmNhdGlvbi9NCnRydW5jaGVvbi9TTQp0cnVuZGxlL01aR0RSUwp0cnVuZGxlci9NCnRydW5rL1NHTQp0cnVzcy9HTURTCnRydXN0L0VTR01ECnRydXN0ZWUvTVMKdHJ1c3RlZXNoaXAvU00KdHJ1c3RmdWwvRVkKdHJ1c3RmdWxuZXNzL00KdHJ1c3RpbmcvWQp0cnVzdHdvcnRoaW5lc3MvTQp0cnVzdHdvcnRoeS9UUFIKdHJ1c3R5L1RSU00KdHJ1dGgvWk1SCnRydXRoZXIvTQp0cnV0aGZ1bC9VWVAKdHJ1dGhmdWxuZXNzL1VNCnRydXRoaW5lc3MKdHJ1dGhzL1UKdHJ5J3MKdHJ5L0FHRFMKdHJ5aW5nL1kKdHJ5b3V0L1NNCnRyeXB0b3BoYW4KdHJ5c3QvU01ERwp0c2FyaXN0cwp0c2V0c2UvTVMKdHNwCnRzdW5hbWkvU00KdHR5cwp0dWIvU1pHTURSCnR1YmEvTVMKdHViYWwKdHViYnkvVFIKdHViZS9NUwp0dWJlbGVzcy9NCnR1YmVyL00KdHViZXJjbGUvU00KdHViZXJjdWxhcgp0dWJlcmN1bGluL00KdHViZXJjdWxvc2lzL00KdHViZXJjdWxvdXMKdHViZXJvc2UvTQp0dWJlcm91cwp0dWJmdWwvTVMKdHViaW5nL00KdHVidWxhcgp0dWJ1bGUvTVMKdHVjay9NRFJTWkcKdHVja2VyL01ERwp0dWZ0L01EUlNaRwp0dWZ0ZXIvTQp0dWcvU00KdHVnYm9hdC9NUwp0dWdnZWQKdHVnZ2luZwp0dWl0aW9uL0lNCnR1bGFyZW1pYS9NCnR1bGlwL1NNCnR1bGxlL00KdHVtL1MKdHVtYmxlL0RSU01aRwp0dW1ibGVkb3duCnR1bWJsZXIvTQp0dW1ibGV3ZWVkL1NNCnR1bWJsaW5nL00KdHVtYnJlbC9TTQp0dW1lc2NlbmNlL00KdHVtZXNjZW50CnR1bWlkCnR1bWlkaXR5L00KdHVtbXkvU00KdHVtb3IvU00KdHVtb3JvdXMKdHVtdWx0L1NNCnR1bXVsdHVvdXMvWQp0dW4vU1pHTURSCnR1bmEvTVMKdHVuZHJhL1NNCnR1bmUvTVMKdHVuZWZ1bC9ZUAp0dW5lZnVsbmVzcy9NCnR1bmVsZXNzL1kKdHVuZXIvTQp0dW5ldXAvU00KdHVuZ3N0ZW4vTQp0dW5pYy9TTQp0dW5uZWwvSlNNRFJaRwp0dW5uZWxlci9NCnR1bm55L1NNCnR1cGxlL1MKdHVwcGVuY2UKdHVwcGVubnkKdHVxdWUvU00KdHVyYmFuL1NNRAp0dXJiaWQKdHVyYmlkaXR5L00KdHVyYmluZS9TTQp0dXJiby9TTQp0dXJib2NoYXJnZS9aR0RSUwp0dXJib2NoYXJnZXIvTQp0dXJib2Zhbi9TTQp0dXJib2pldC9TTQp0dXJib3Byb3AvU00KdHVyYm90L1NNCnR1cmJ1bGVuY2UvTQp0dXJidWxlbnQvWQp0dXJkL01TCnR1cmR1Y2tlbi9TTQp0dXJlZW4vU00KdHVyZi9NRFNHCnR1cmZ5CnR1cmdpZC9ZCnR1cmdpZGl0eS9NCnR1cmtleS9TTQp0dXJtZXJpYy9TTQp0dXJtb2lsL01TCnR1cm4vQU1EUlNaRwp0dXJuYWJvdXQvU00KdHVybmFyb3VuZC9TTQp0dXJuYnVja2xlL1NNCnR1cm5jb2F0L1NNCnR1cm5lci9BTQp0dXJuaW5nL01TCnR1cm5pcC9TTQp0dXJua2V5L01TCnR1cm5vZmYvTVMKdHVybm91dC9NUwp0dXJub3Zlci9NUwp0dXJucGlrZS9NUwp0dXJuc3RpbGUvU00KdHVybnRhYmxlL1NNCnR1cnBlbnRpbmUvTQp0dXJwaXR1ZGUvTQp0dXJwcwp0dXJxdW9pc2UvU00KdHVycmV0L1NNRAp0dXJ0bGUvU00KdHVydGxlZG92ZS9TTQp0dXJ0bGVuZWNrL1NNRAp0dXNoL01TCnR1c2svTURTCnR1c3NsZS9EU01HCnR1c3NvY2svTVMKdHVzc29ja3kKdHV0L1NNCnR1dGVsYWdlL00KdHV0ZWxhcnkKdHV0b3IvU01ERwp0dXRvcmVkL1UKdHV0b3JpYWwvU00KdHV0b3JzaGlwL00KdHV0dGVkCnR1dHRpL1NNCnR1dHRpbmcKdHV0dS9NUwp0dXgvTVMKdHV4ZWRvL1NNCnR3YWRkbGUvTVpHRFJTCnR3YWRkbGVyL00KdHdhaW4vTQp0d2FuZy9TTURHCnR3YW5neS9SVAp0d2FzCnR3YXQvUwp0d2Vhay9TTURHCnR3ZWUKdHdlZWQvU00KdHdlZWRzL00KdHdlZWR5L1JUCnR3ZWVuCnR3ZWV0J3MKdHdlZXQvQVNERwp0d2VldGVyL1NNCnR3ZWV6ZXJzL00KdHdlbGZ0aC9NCnR3ZWxmdGhzCnR3ZWx2ZS9TTQp0d2VsdmVtb250aC9NCnR3ZWx2ZW1vbnRocwp0d2VudGlldGgvTQp0d2VudGlldGhzCnR3ZW50eS9TTUgKdHdlcmsvU0RHCnR3ZXJwL1NNCnR3aWNlCnR3aWRkbGUvTUdEUwp0d2lkZGx5CnR3aWcvTVMKdHdpZ2dlZAp0d2lnZ2luZwp0d2lnZ3kvVFIKdHdpbGlnaHQvTQp0d2lsaXQKdHdpbGwvTUQKdHdpbi9NRFJTWkcKdHdpbmUvU00KdHdpbmVyL00KdHdpbmdlL0RTTUcKdHdpbmsvU1kKdHdpbmtsZS9NR0pEUwp0d2lua2xpbmcvTQp0d2lubmVkCnR3aW5uaW5nCnR3aW5zZXQvUwp0d2lybC9TTURSWkcKdHdpcmxlci9NCnR3aXJseQp0d2lzdCdzCnR3aXN0L1VTREcKdHdpc3Rlci9NUwp0d2lzdHkvVFIKdHdpdC9NUwp0d2l0Y2gvR01EUwp0d2l0Y2h5L1JUCnR3aXR0ZWQKdHdpdHRlci9NRFNHCnR3aXR0ZXJ5CnR3aXR0aW5nCnR3aXh0CnR3by9TTQp0d29mZXIvU00KdHdvZm9sZAp0d29wZW5jZS9TTQp0d29wZW5ueQp0d29zb21lL1NNCnR3cAp0eWNvb24vU00KdHlpbmcvQVUKdHlrZS9NUwp0eW1wYW5pL00KdHltcGFuaWMKdHltcGFuaXN0L01TCnR5bXBhbnVtL1NNCnR5cGUncwp0eXBlL0FHRFMKdHlwZWNhc3QvR1MKdHlwZWZhY2UvTVMKdHlwZXNjcmlwdC9NUwp0eXBlc2V0L1MKdHlwZXNldHRlci9NUwp0eXBlc2V0dGluZy9NCnR5cGV3cml0ZS9SU1pHCnR5cGV3cml0ZXIvTQp0eXBld3JpdGluZy9NCnR5cGV3cml0dGVuCnR5cGV3cm90ZQp0eXBob2lkL00KdHlwaG9vbi9NUwp0eXBodXMvTQp0eXBpY2FsL1VZCnR5cGljYWxpdHkvTQp0eXBpZmljYXRpb24vTQp0eXBpZnkvTkdEUwp0eXBpbmcvTQp0eXBpc3QvU00KdHlwby9NUwp0eXBvZ3JhcGhlci9TTQp0eXBvZ3JhcGhpYwp0eXBvZ3JhcGhpY2FsL1kKdHlwb2dyYXBoeS9NCnR5cG9sb2d5L1NNCnR5cmFubmljCnR5cmFubmljYWwvWQp0eXJhbm5pemUvR0RTCnR5cmFubm9zYXVyL01TCnR5cmFubm9zYXVydXMvTVMKdHlyYW5ub3VzCnR5cmFubnkvU00KdHlyYW50L1NNCnR5cm8vTVMKdS9TCnViaXF1aXRvdXMvWQp1YmlxdWl0eS9NCnVkZGVyL1NNCnVmb2xvZ2lzdC9TTQp1Zm9sb2d5L00KdWdoCnVnbGluZXNzL00KdWdseS9SVFAKdWgKdWhmCnVrYXNlL1NNCnVrdWxlbGUvU00KdWxjZXIvU00KdWxjZXJhdGUvWERTR04KdWxjZXJhdGlvbi9NCnVsY2Vyb3VzCnVsbmEvTQp1bG5hZQp1bG5hcgp1bHN0ZXIvTVMKdWx0CnVsdGVyaW9yCnVsdGltYXRlL01ZCnVsdGltYXR1bS9NUwp1bHRpbW8KdWx0cmEvU00KdWx0cmFjb25zZXJ2YXRpdmUvU00KdWx0cmFoaWdoCnVsdHJhbGlnaHQvU00KdWx0cmFtYXJpbmUvTQp1bHRyYW1vZGVybgp1bHRyYXNvbmljCnVsdHJhc29uaWNhbGx5CnVsdHJhc291bmQvTVMKdWx0cmF2aW9sZXQvTQp1bHVsYXRlL0RTR05YCnVsdWxhdGlvbi9NCnVtCnVtYmVsL1NNCnVtYmVyL00KdW1iaWxpY2FsCnVtYmlsaWNpCnVtYmlsaWN1cy9NCnVtYnJhL1NNCnVtYnJhZ2UvTQp1bWJyZWxsYS9TTQp1bWlhay9TTQp1bWxhdXQvTVMKdW1wL1NHTUQKdW1waXJlL01HRFMKdW1wdGVlbi9ICnVuYWJyaWRnZWQvTVMKdW5hY2NlcHRhYmlsaXR5CnVuYWNjZXB0YWJsZQp1bmFjY29tbW9kYXRpbmcKdW5hY2NvdW50YWJseQp1bmFkdmVudHVyb3VzCnVuYWVzdGhldGljCnVuYWx0ZXJhYmx5CnVuYW1iaXRpb3VzCnVuYW5pbWl0eS9NCnVuYW5pbW91cy9ZCnVuYXBwYXJlbnQKdW5hcHBldGl6aW5nCnVuYXBwcmVjaWF0aXZlCnVuYXNzZXJ0aXZlCnVuYXNzdW1pbmcvWQp1bmF2YWlsaW5nL1kKdW5hd2FyZS9TCnVuYmVrbm93bnN0CnVuYmVuZC9TRwp1bmJlbnQKdW5iaWQKdW5ibGlua2luZy9ZCnVuYmx1c2hpbmcvWQp1bmJvc29tL0RHCnVuYm91bmQvRAp1bmJyZWFrYWJsZQp1bmJyb2tlbgp1bmNhbm55L1QKdW5jYXAvUwp1bmNhcmluZwp1bmNhdGFsb2d1ZWQKdW5jZWFzaW5nL1kKdW5jaGFuZ2VhYmxlCnVuY2hhcmFjdGVyaXN0aWMKdW5jaGFyaXRhYmxlCnVuY2hhc3RlL1JUCnVuY2lhbC9NCnVuY2xlL1NNCnVuY2xlYW4vRFJQVAp1bmNsZWFubHkvVAp1bmNsZWFyL0RSVAp1bmNvbWZvcnRhYmxlCnVuY29tbW9uL1QKdW5jb21wbGFpbmluZy9ZCnVuY29tcGxpY2F0ZWQKdW5jb21wcmVoZW5kaW5nL1kKdW5jb21wcm9taXNpbmcvWQp1bmNvbmRpdGlvbmFsL1kKdW5jb25nZW5pYWwKdW5jb25zY2lvbmFibGUKdW5jb25zY2lvbmFibHkKdW5jb25zY2lvdXMvTQp1bmNvbnN0aXR1dGlvbmFsL1kKdW5jb250cm9sbGFibHkKdW5jb250cm92ZXJzaWFsCnVuY29vbAp1bmNvb3BlcmF0aXZlCnVuY291dGgvWQp1bmNydXNoYWJsZQp1bmN0aW9uL1NNCnVuY3R1b3VzL1lQCnVuY3R1b3VzbmVzcy9NCnVuY3V0CnVuZGF1bnRlZC9ZCnVuZGVjaWRlZC9TTQp1bmRlbW9uc3RyYXRpdmUvWQp1bmRlbmlhYmx5CnVuZGVyCnVuZGVyYWNoaWV2ZS9MWkdEUlMKdW5kZXJhY2hpZXZlci9NCnVuZGVyYWN0L1NERwp1bmRlcmFnZQp1bmRlcmFwcHJlY2lhdGVkCnVuZGVyYXJtL1NNCnVuZGVyYmVsbHkvU00KdW5kZXJiaWQvUwp1bmRlcmJpZGRpbmcKdW5kZXJicnVzaC9NCnVuZGVyY2FycmlhZ2UvTVMKdW5kZXJjaGFyZ2UvTUdEUwp1bmRlcmNsYXNzL01TCnVuZGVyY2xhc3NtYW4vTQp1bmRlcmNsYXNzbWVuCnVuZGVyY2xvdGhlcy9NCnVuZGVyY2xvdGhpbmcvTQp1bmRlcmNvYXQvR0pTTUQKdW5kZXJjb2F0aW5nL00KdW5kZXJjb3Zlcgp1bmRlcmN1cnJlbnQvU00KdW5kZXJjdXQvU00KdW5kZXJjdXR0aW5nCnVuZGVyZGV2ZWxvcGVkCnVuZGVyZGV2ZWxvcG1lbnQvTQp1bmRlcmRvZy9TTQp1bmRlcmRvbmUKdW5kZXJlbXBsb3llZAp1bmRlcmVtcGxveW1lbnQvTQp1bmRlcmVzdGltYXRlL0RTTUdOWAp1bmRlcmVzdGltYXRpb24vTQp1bmRlcmV4cG9zZS9HRFMKdW5kZXJleHBvc3VyZS9NUwp1bmRlcmZlZAp1bmRlcmZlZWQvR1MKdW5kZXJmbG9vcgp1bmRlcmZsb3cKdW5kZXJmb290CnVuZGVyZnVuZGVkCnVuZGVyZnVyL00KdW5kZXJnYXJtZW50L1NNCnVuZGVyZ28vRwp1bmRlcmdvZXMKdW5kZXJnb25lCnVuZGVyZ3JhZC9TCnVuZGVyZ3JhZHVhdGUvU00KdW5kZXJncm91bmQvTVMKdW5kZXJncm93dGgvTQp1bmRlcmhhbmQKdW5kZXJoYW5kZWQvUFkKdW5kZXJoYW5kZWRuZXNzL00KdW5kZXJsYWluCnVuZGVybGF5L1NNCnVuZGVybGllL1MKdW5kZXJsaW5lL01HRFMKdW5kZXJsaW5nL01TCnVuZGVybGlwL1NNCnVuZGVybHlpbmcKdW5kZXJtYW5uZWQKdW5kZXJtZW50aW9uZWQKdW5kZXJtaW5lL0dEUwp1bmRlcm1vc3QKdW5kZXJuZWF0aC9NCnVuZGVybmVhdGhzCnVuZGVybm91cmlzaGVkCnVuZGVybm91cmlzaG1lbnQvTQp1bmRlcnBhaWQKdW5kZXJwYW50cy9NCnVuZGVycGFydC9NUwp1bmRlcnBhc3MvTVMKdW5kZXJwYXkvR1NMCnVuZGVycGF5bWVudC9TTQp1bmRlcnBpbi9TCnVuZGVycGlubmVkCnVuZGVycGlubmluZy9NUwp1bmRlcnBsYXkvREdTCnVuZGVycG9wdWxhdGVkCnVuZGVycHJpdmlsZWdlZAp1bmRlcnByb2R1Y3Rpb24vTQp1bmRlcnJhdGUvR0RTCnVuZGVycmVwcmVzZW50ZWQKdW5kZXJzY29yZS9EU01HCnVuZGVyc2VhL1MKdW5kZXJzZWNyZXRhcnkvU00KdW5kZXJzZWxsL0dTCnVuZGVyc2V4ZWQKdW5kZXJzaGlydC9TTQp1bmRlcnNob290L1NHCnVuZGVyc2hvcnRzL00KdW5kZXJzaG90CnVuZGVyc2lkZS9NUwp1bmRlcnNpZ24vREdTCnVuZGVyc2lnbmVkL00KdW5kZXJzaXplZAp1bmRlcnNraXJ0L1NNCnVuZGVyc29sZAp1bmRlcnN0YWZmZWQKdW5kZXJzdGFuZC9TR0JKCnVuZGVyc3RhbmRhYmx5CnVuZGVyc3RhbmRpbmcvTVkKdW5kZXJzdGF0ZS9EU0xHCnVuZGVyc3RhdGVtZW50L1NNCnVuZGVyc3Rvb2QKdW5kZXJzdHVkeS9HRFNNCnVuZGVydGFrZS9aR0pSUwp1bmRlcnRha2VuCnVuZGVydGFrZXIvTQp1bmRlcnRha2luZy9NCnVuZGVydGhpbmdzL00KdW5kZXJ0b25lL01TCnVuZGVydG9vawp1bmRlcnRvdy9TTQp1bmRlcnVzZWQKdW5kZXJ1dGlsaXplZAp1bmRlcnZhbHVhdGlvbi9NCnVuZGVydmFsdWUvRFNHCnVuZGVyd2F0ZXIKdW5kZXJ3YXkKdW5kZXJ3ZWFyL00KdW5kZXJ3ZWlnaHQvTQp1bmRlcndlbnQKdW5kZXJ3aGVsbS9ER1MKdW5kZXJ3aXJlL0RTCnVuZGVyd29ybGQvTVMKdW5kZXJ3cml0ZS9aR1JTCnVuZGVyd3JpdGVyL00KdW5kZXJ3cml0dGVuCnVuZGVyd3JvdGUKdW5kZXNpcmFibGUvTVMKdW5kaWVzL00KdW5kbwp1bmRvdWJ0ZWQvWQp1bmRyYW1hdGljCnVuZHVlCnVuZHVsYW50CnVuZHVsYXRlL0RTWEdOCnVuZHVsYXRpb24vTQp1bmR5aW5nCnVuZWFydGhsaW5lc3MvTQp1bmVhc2UvTQp1bmVhc3kvVAp1bmVhdGFibGUKdW5lY29ub21pYwp1bmVtcGxveWVkL00KdW5lbmRpbmcKdW5lbnRlcnByaXNpbmcKdW5lcXVhbC9EWQp1bmVycmluZy9ZCnVuZXNzZW50aWFsCnVuZXZlbi9ZCnVuZXhjZXB0aW9uYWJseQp1bmV4Y2l0ZWQKdW5leGNpdGluZwp1bmV4cGVjdGVkL1lQCnVuZXhwZWN0ZWRuZXNzL00KdW5mYWlsaW5nL1kKdW5mYWlyL1BUUlkKdW5mYWx0ZXJpbmcKdW5mYW1pbGlhcgp1bmZhdGhvbWFibHkKdW5mZWQKdW5mZWVsaW5nL1kKdW5mZW1pbmluZQp1bmZpdC9TCnVuZml0dGluZwp1bmZpeC9HRFMKdW5mbGFnZ2luZy9ZCnVuZmxhcHBhYmlsaXR5L00KdW5mbGFwcGFibGUKdW5mbGFwcGFibHkKdW5mbGF0dGVyaW5nCnVuZmxpbmNoaW5nL1kKdW5mb3JnZXR0YWJseQp1bmZvcmdpdmFibHkKdW5mb3J0dW5hdGUvTVMKdW5mcmllbmRseS9UCnVuZnJvY2svREcKdW5mcnVpdGZ1bAp1bmZ1bm55CnVuZ2FpbmxpbmVzcy9NCnVuZ2Fpbmx5L1JQVAp1bmdlbmVyb3VzCnVuZ2VudGxlCnVuZ29kbHkvVAp1bmdyYWNlZnVsL1kKdW5ncnVkZ2luZwp1bmd1YXJkZWQKdW5ndWVudC9TTQp1bmd1bGF0ZS9NUwp1bmhhbmR5L1QKdW5oYXBweS9UCnVuaGVhbHRoZnVsCnVuaGVhbHRoeS9UCnVuaGlzdG9yaWNhbAp1bmhvbHkvVAp1bmh1cnQKdW5pY2FtZXJhbAp1bmljZWxsdWxhcgp1bmljb3JuL1NNCnVuaWN5Y2xlL1NNCnVuaWRpcmVjdGlvbmFsCnVuaWZpY2F0aW9uL0FNCnVuaWZvcm0vU01EWUcKdW5pZm9ybWl0eS9NCnVuaWZ5L0FHRFNOCnVuaWxhdGVyYWwvWQp1bmlsYXRlcmFsaXNtCnVuaW1wb3J0YW50CnVuaW1wcmVzc2l2ZQp1bmluZm9ybWF0aXZlCnVuaW5oaWJpdGVkL1kKdW5pbnN0YWxsL0JTWkdEUgp1bmluc3VyZWQKdW5pbnRlbGxpZ2VudAp1bmludGVuZGVkCnVuaW50ZXJlc3RpbmcKdW5pbnRlcnJ1cHRlZC9ZCnVuaW50ZXJydXB0aWJsZQp1bmludml0aW5nCnVuaW9uL0FTTQp1bmlvbmlzbS9NCnVuaW9uaXN0L01TCnVuaXF1ZS9ZVFJQCnVuaXF1ZW5lc3MvTQp1bmlzZXgvTQp1bmlzb24vTQp1bml0YXJ5CnVuaXRlL0FFR1NECnVuaXRlZGx5CnVuaXRpZXMKdW5pdGl6ZS9EU0cKdW5pdHkvRU0KdW5pdmFsZW50CnVuaXZhbHZlL1NNCnVuaXZlcnNhbC9NWVMKdW5pdmVyc2FsaXR5L00KdW5pdmVyc2FsaXplL0RTRwp1bml2ZXJzZS9TTQp1bml2ZXJzaXR5L1NNCnVuanVzdC9ZCnVua2VtcHQKdW5raW5kL1QKdW5raW5kbHkvVAp1bmtub3dhYmxlL00KdW5rbm93bi9TTQp1bmxlYWRlZC9NCnVubGVzcwp1bmxpa2UvUEIKdW5saWtlbHkvVAp1bmxpdAp1bmxvY2svRFNHCnVubG92YWJsZQp1bmxvdmVseS9UUgp1bmxvdmluZwp1bmx1Y2t5L1QKdW5tYW5seS9UCnVubWFycmllZAp1bm1lYW5pbmcKdW5tZW50aW9uYWJsZS9NUwp1bm1lbnRpb25hYmxlcy9NCnVubWV0CnVubWluZGZ1bAp1bm1pc3NhYmxlCnVubWlzdGFrYWJseQp1bm1vcmFsCnVubW92YWJsZQp1bm11c2ljYWwKdW5uZWNlc3NhcnkKdW5uZXJ2aW5nL1kKdW5vYnNlcnZhbnQKdW5vZmZlbnNpdmUKdW5vZmZpY2lhbC9ZCnVub3JpZ2luYWwKdW5wZW9wbGUKdW5wZXJjZXB0aXZlCnVucGVyc3Vhc2l2ZQp1bnBpY2svR0RTCnVucGluL1MKdW5wbGVhc2luZwp1bnBvbGl0aWNhbAp1bnBvcHVsYXIKdW5wcmFjdGljYWwKdW5wcmVjZWRlbnRlZC9ZCnVucHJvZmVzc2lvbmFsL1kKdW5wcm9taXNpbmcKdW5wcm9waXRpb3VzCnVucXVlc3Rpb25pbmcvWQp1bnF1aWV0L1RSCnVucmVhZC9CCnVucmVhZHkKdW5yZWFsCnVucmVhc29uaW5nCnVucmVnZW5lcmF0ZQp1bnJlbGF0ZWQKdW5yZWxlbnRpbmcvWQp1bnJlbGlldmVkL1kKdW5yZW1hcmthYmxlCnVucmVtaXR0aW5nL1kKdW5yZXBlbnRhbnQKdW5yZXBvcnRlZAp1bnJlcHJlc2VudGF0aXZlCnVucmVzdC9NCnVucmlwZS9UUgp1bnJvbGwvR0RTCnVucm9tYW50aWMKdW5ydWxpbmVzcy9NCnVucnVseS9SVFAKdW5zYWZlL1lUUgp1bnNhbGVhYmxlCnVuc2F2b3J5CnVuc2NhdGhlZAp1bnNlYXJjaGFibGUKdW5zZWVpbmcvWQp1bnNlZW1seS9UCnVuc2Vlbi9NCnVuc2VudGltZW50YWwKdW5zZXQKdW5zaGFrYWJsZQp1bnNoYWthYmx5CnVuc2hhcGVseQp1bnNob2NrYWJsZQp1bnNob3JuCnVuc2lnaHRsaW5lc3MvTQp1bnNpZ2h0bHkvUFQKdW5zbWlsaW5nCnVuc29jaWFibGUKdW5zb2NpYWwKdW5zb2xkCnVuc291bmQvUFJZVAp1bnNwZWFrYWJsZQp1bnNwZWFrYWJseQp1bnNwZWNpZmljCnVuc3BlY3RhY3VsYXIKdW5zcG9ydGluZwp1bnN0YWJsZQp1bnN0ZWFkeS9UUlAKdW5zdGludGluZy9ZCnVuc3RyYXBwaW5nCnVuc3Vic3RhbnRpYWwKdW5zdWJ0bGUKdW5zdWl0YWJsZQp1bnN1cmUKdW5zdXNwZWN0aW5nL1kKdW5zeW1tZXRyaWNhbAp1bnRhY3RmdWwKdW50aGlua2FibHkKdW50aGlua2luZy9ZCnVudGlkeS9QVFIKdW50aWwKdW50aW1lbHkvVAp1bnRpcmluZy9ZCnVudG91Y2hhYmxlL01TCnVudG93YXJkCnVudHJ1ZS9SVAp1bnRydXN0d29ydGh5CnVudHJ1dGgvTQp1bnV0dGVyYWJsZQp1bnV0dGVyYWJseQp1bndhcnJhbnRhYmxlCnVud2FyeS9UCnVud2F2ZXJpbmcKdW53ZWQKdW53ZWxjb21lL0cKdW53ZWxsCnVud2llbGRpbmVzcy9NCnVud2llbGR5L1RSUAp1bndpc2UvUllUCnVud29ycmllZAp1bndvcnRoeS9UCnVud291bmQKdW53cmFwcGluZwp1bnlpZWxkaW5nCnVwL1MKdXBiZWF0L01TCnVwYnJhaWQvU0dECnVwYnJpbmdpbmcvTVMKdXBjaHVjay9TR0QKdXBjb21pbmcKdXBjb3VudHJ5L00KdXBkYXRlL01HRFJTCnVwZHJhZnQvTVMKdXBlbmQvU0dECnVwZnJvbnQKdXBncmFkZS9NR0RTCnVwaGVhdmFsL01TCnVwaGVsZAp1cGhpbGwvTVMKdXBob2xkL1pHUlMKdXBob2xkZXIvTQp1cGhvbHN0ZXIvQVNHRAp1cGhvbHN0ZXJlci9NUwp1cGhvbHN0ZXJ5L00KdXBrZWVwL00KdXBsYW5kL01TCnVwbGlmdC9KU01ERwp1cGxvYWQvU0RHCnVwbWFya2V0CnVwbW9zdAp1cG9uCnVwcGVkCnVwcGVyL1NNCnVwcGVyY2FzZS9NCnVwcGVyY2xhc3NtYW4vTQp1cHBlcmNsYXNzbWVuCnVwcGVyY2xhc3N3b21hbgp1cHBlcmNsYXNzd29tZW4KdXBwZXJjdXQvTVMKdXBwZXJjdXR0aW5nCnVwcGVybW9zdAp1cHBpbmcKdXBwaXNoCnVwcGl0eQp1cHJhaXNlL0RTRwp1cHJlYXIvR1NECnVwcmlnaHQvTVlQUwp1cHJpZ2h0bmVzcy9NCnVwcmlzaW5nL1NNCnVwcml2ZXIKdXByb2FyL1NNCnVwcm9hcmlvdXMvWQp1cHJvb3QvR1NECnVwc2NhbGUKdXBzZXQvU00KdXBzZXR0aW5nCnVwc2hvdC9TTQp1cHNpZGUvU00KdXBzaWxvbi9NUwp1cHN0YWdlL0dEUwp1cHN0YWlycwp1cHN0YW5kaW5nCnVwc3RhcnQvTURTRwp1cHN0YXRlL00KdXBzdHJlYW0KdXBzdHJva2UvU00KdXBzdXJnZS9NR0RTCnVwc3dpbmcvTVMKdXB0YWtlL1NNCnVwdGVtcG8KdXB0aHJ1c3QvR1NNCnVwdGljay9TTQp1cHRpZ2h0CnVwdG93bi9NCnVwdHJlbmQKdXB0dXJuL0dTTUQKdXB3YXJkL1NZCnVwd2luZAp1cmFjaWwvTQp1cmFuaXVtL00KdXJiYW4KdXJiYW5lL1JZVAp1cmJhbml0eS9NCnVyYmFuaXphdGlvbi9NCnVyYmFuaXplL0RTRwp1cmJhbm9sb2dpc3QvTVMKdXJiYW5vbG9neS9NCnVyY2hpbi9TTQp1cmVhL00KdXJlbWlhL00KdXJlbWljCnVyZXRlci9TTQp1cmV0aGFuZS9NCnVyZXRocmEvTQp1cmV0aHJhZQp1cmV0aHJhbAp1cmdlL01HRFMKdXJnZW5jeS9NCnVyZ2VudC9ZCnVyaWMKdXJpbmFsL1NNCnVyaW5hbHlzZXMKdXJpbmFseXNpcy9NCnVyaW5hcnkKdXJpbmF0ZS9HTkRTCnVyaW5hdGlvbi9NCnVyaW5lL00KdXJuL1NNCnVyb2dlbml0YWwKdXJvbG9naWNhbAp1cm9sb2dpc3QvTVMKdXJvbG9neS9NCnVyc2luZQp1cnRpY2FyaWEvTQp1c2FiaWxpdHkvTQp1c2FibGUvVUEKdXNhZ2UvU00KdXNlL0FFRFNNRwp1c2VkL1UKdXNlZnVsL1BZCnVzZWZ1bG5lc3MvTQp1c2VsZXNzL1lQCnVzZWxlc3NuZXNzL00KdXNlci9NUwp1c2VybmFtZS9NUwp1c2hlci9TTURHCnVzaGVyZXR0ZS9TTQp1c3UKdXN1YWwncwp1c3VhbC9VWQp1c3VyZXIvU00KdXN1cmlvdXMKdXN1cnAvU0RSWkcKdXN1cnBhdGlvbi9NCnVzdXJwZXIvTQp1c3VyeS9NCnV0ZW5zaWwvU00KdXRlcmkKdXRlcmluZQp1dGVydXMvTQp1dGlsaXRhcmlhbi9NUwp1dGlsaXRhcmlhbmlzbS9NCnV0aWxpdHkvU00KdXRpbGl6YXRpb24vTQp1dGlsaXplL0dCRFMKdXRtb3N0L00KdXRvcGlhL1NNCnV0dGVyL1NEWUcKdXR0ZXJhbmNlL1NNCnV0dGVybW9zdC9NCnV2ZWl0aXMKdXZ1bGEvU00KdXZ1bGFyL01TCnV4b3Jpb3VzCnYvQVMKdmFjL1MKdmFjYW5jeS9TTQp2YWNhbnQvWQp2YWNhdGUvRFNHCnZhY2F0aW9uL1pHTURSUwp2YWNhdGlvbmVyL00KdmFjYXRpb25pc3QvU00KdmFjY2luYXRlL0dORFNYCnZhY2NpbmF0aW9uL00KdmFjY2luZS9TTQp2YWNpbGxhdGUvWEdORFMKdmFjaWxsYXRpb24vTQp2YWN1aXR5L00KdmFjdW9sZS9NUwp2YWN1b3VzL1lQCnZhY3VvdXNuZXNzL00KdmFjdXVtL0dTTUQKdmFnYWJvbmQvU01ERwp2YWdhYm9uZGFnZS9NCnZhZ2FyaW91cwp2YWdhcnkvU00KdmFnaW5hL1NNCnZhZ2luYWUKdmFnaW5hbC9ZCnZhZ3JhbmN5L00KdmFncmFudC9NUwp2YWd1ZS9SWVRQCnZhZ3VlbmVzcy9NCnZhZ3VzCnZhaW4vUllUCnZhaW5nbG9yaW91cy9ZCnZhaW5nbG9yeS9NCnZhbAp2YWxhbmNlL01TCnZhbGUvTVMKdmFsZWRpY3Rpb24vTVMKdmFsZWRpY3Rvcmlhbi9TTQp2YWxlZGljdG9yeS9TTQp2YWxlbmNlL01TCnZhbGVuY3kvU00KdmFsZW50aW5lL1NNCnZhbGV0L1NNREcKdmFsZXR1ZGluYXJpYW4vTVMKdmFsZXR1ZGluYXJpYW5pc20vTQp2YWxpYW5jZS9NCnZhbGlhbnQvWQp2YWxpZC9ZCnZhbGlkYXRlL0lHTkRTCnZhbGlkYXRpb24vSU0KdmFsaWRhdGlvbnMKdmFsaWRpdHkvSU0KdmFsaWRuZXNzL00KdmFsaXNlL1NNCnZhbGxleS9TTQp2YWxvci9NCnZhbG9yb3VzL1kKdmFsdWFibGUvTVMKdmFsdWF0ZS9EU0cKdmFsdWF0aW9uL0NBTVMKdmFsdWUncwp2YWx1ZS9DQUdTRAp2YWx1ZWxlc3MKdmFsdWVyL1NNCnZhbHZlL0RTTUcKdmFsdmVsZXNzCnZhbHZ1bGFyCnZhbW9vc2UvRFNHCnZhbXAvQU1ER1MKdmFtcGlyZS9TTQp2YW4vU00KdmFuYWRpdW0vTQp2YW5kYWwvU00KdmFuZGFsaXNtL00KdmFuZGFsaXplL0RTRwp2YW5lL01TCnZhbmd1YXJkL01TCnZhbmlsbGEvU00KdmFuaXNoL0pEU0cKdmFuaXR5L1NNCnZhbm5lZAp2YW5uaW5nCnZhbnF1aXNoL1pHRFJTCnZhbnF1aXNoZXIvTQp2YW50YWdlL1NNCnZhcGUvR0RTCnZhcGlkL1lQCnZhcGlkaXR5L00KdmFwaWRuZXNzL00KdmFwb3IvU00KdmFwb3JpemF0aW9uL00KdmFwb3JpemUvRFJTWkcKdmFwb3JpemVyL00KdmFwb3JvdXMKdmFwb3J3YXJlCnZhcG9yeQp2YXF1ZXJvL01TCnZhci9TCnZhcmlhYmlsaXR5L0lNCnZhcmlhYmxlL0lTTQp2YXJpYWJseS9JCnZhcmlhbmNlL1NNCnZhcmlhbnQvTVMKdmFyaWF0ZS9OWAp2YXJpYXRpb24vTQp2YXJpY29sb3JlZAp2YXJpY29zZQp2YXJpZWQvVQp2YXJpZWdhdGUvRFNHTgp2YXJpZWdhdGlvbi9NCnZhcmlldGFsL1NNCnZhcmlldHkvU00KdmFyaW91cy9ZCnZhcmxldC9TTQp2YXJtaW50L01TCnZhcm5pc2gvR01EUwp2YXJuaXNoZWQvVQp2YXJzaXR5L1NNCnZhcnkvRFNHCnZhcnlpbmcvVQp2YXNjdWxhcgp2YXNlL01TCnZhc2VjdG9teS9TTQp2YXNvY29uc3RyaWN0aW9uCnZhc29tb3Rvcgp2YXNzYWwvU00KdmFzc2FsYWdlL00KdmFzdC9NUllUU1AKdmFzdG5lc3MvTQp2YXQvU00KdmF0dGVkCnZhdHRpbmcKdmF1ZGV2aWxsZS9NCnZhdWRldmlsbGlhbi9NUwp2YXVsdC9TTURSWkcKdmF1bHRlci9NCnZhdWx0aW5nL00KdmF1bnQvU01ERwp2Ygp2ZWFsL00KdmVjdG9yL1NHTUQKdmVlamF5L1NNCnZlZXAvTVMKdmVlci9NREdTCnZlZy9NCnZlZ2FuL1NNCnZlZ2FuaXNtCnZlZ2VidXJnZXIvUwp2ZWdlcwp2ZWdldGFibGUvU00KdmVnZXRhcmlhbi9TTQp2ZWdldGFyaWFuaXNtL00KdmVnZXRhdGUvR05WRFMKdmVnZXRhdGlvbi9NCnZlZ2dlZAp2ZWdnZXMKdmVnZ2llL1NNCnZlZ2dpZWJ1cmdlci9TCnZlZ2dpbmcKdmVoZW1lbmNlL00KdmVoZW1lbmN5L00KdmVoZW1lbnQvWQp2ZWhpY2xlL01TCnZlaGljdWxhcgp2ZWlsJ3MKdmVpbC9VREdTCnZlaW4vTURHUwp2ZWxhCnZlbGFyL1NNCnZlbGQvTVMKdmVsbHVtL00KdmVsb2NpcGVkZS9NUwp2ZWxvY2l0eS9TTQp2ZWxvZHJvbWUvUwp2ZWxvdXIvTVMKdmVsdW0vTQp2ZWx2ZXQvTQp2ZWx2ZXRlZW4vTQp2ZWx2ZXR5CnZlbmFsL1kKdmVuYWxpdHkvTQp2ZW5hdGlvbi9NCnZlbmQvREdTCnZlbmRldHRhL1NNCnZlbmRpYmxlCnZlbmRvci9NUwp2ZW5lZXIvTURHUwp2ZW5lcmFiaWxpdHkvTQp2ZW5lcmFibGUKdmVuZXJhdGUvRFNHTgp2ZW5lcmF0aW9uL00KdmVuZXJlYWwKdmVuZ2VhbmNlL00KdmVuZ2VmdWwvQVkKdmVuaWFsCnZlbmlyZW1hbi9NCnZlbmlyZW1lbgp2ZW5pc29uL00KdmVub20vTQp2ZW5vbW91cy9ZCnZlbm91cwp2ZW50J3MKdmVudC9ER1MKdmVudGlsYXRlL0dORFMKdmVudGlsYXRpb24vTQp2ZW50aWxhdG9yL1NNCnZlbnRyYWwKdmVudHJpY2xlL1NNCnZlbnRyaWN1bGFyCnZlbnRyaWxvcXVpc20vTQp2ZW50cmlsb3F1aXN0L1NNCnZlbnRyaWxvcXV5L00KdmVudHVyZS9EU01HCnZlbnR1cmVzb21lL1BZCnZlbnR1cmVzb21lbmVzcy9NCnZlbnR1cm91cy9QWQp2ZW50dXJvdXNuZXNzL00KdmVudWUvQVNNCnZlcmFjaW91cy9ZCnZlcmFjaXR5L00KdmVyYW5kYS9TTQp2ZXJiL0tNUwp2ZXJiYWwvTVlTCnZlcmJhbGl6YXRpb24vTQp2ZXJiYWxpemUvR0RTCnZlcmJhdGltCnZlcmJlbmEvU00KdmVyYmlhZ2UvTVMKdmVyYm9zZS9ZCnZlcmJvc2l0eS9NCnZlcmJvdGVuCnZlcmRhbnQvWQp2ZXJkaWN0L1NNCnZlcmRpZ3Jpcy9HTURTCnZlcmR1cmUvTQp2ZXJnZSdzCnZlcmdlL0ZEU0cKdmVyZ2VyL01TCnZlcmlmaWFibGUvVQp2ZXJpZmljYXRpb24vTQp2ZXJpZmllZC9VCnZlcmlmeS9EU05HCnZlcmlseQp2ZXJpc2ltaWxpdHVkZS9NCnZlcml0YWJsZQp2ZXJpdGFibHkKdmVyaXR5L1NNCnZlcm1pY2VsbGkvTQp2ZXJtaWN1bGl0ZS9NCnZlcm1pZm9ybQp2ZXJtaWxpb24vTQp2ZXJtaW4vTQp2ZXJtaW5vdXMKdmVybW91dGgvTQp2ZXJuYWN1bGFyL01TCnZlcm5hbAp2ZXJuaWVyL1NNCnZlcm9uaWNhL00KdmVycnVjYS9TTQp2ZXJydWNhZQp2ZXJzYQp2ZXJzYXRpbGUKdmVyc2F0aWxpdHkvTQp2ZXJzZS9BRk5HTVNEWAp2ZXJzZWQvVQp2ZXJzaWZpY2F0aW9uL00KdmVyc2lmaWVyL00KdmVyc2lmeS9aR05EUlMKdmVyc2lvbi9BRklNUwp2ZXJzaW9uZWQKdmVyc2lvbmluZwp2ZXJzby9TTQp2ZXJzdXMKdmVydC9BCnZlcnRlYnJhL00KdmVydGVicmFlCnZlcnRlYnJhbAp2ZXJ0ZWJyYXRlL0lNUwp2ZXJ0ZXgvTVMKdmVydGljYWwvTVlTCnZlcnRpY2VzCnZlcnRpZ2lub3VzCnZlcnRpZ28vTQp2ZXJ2ZS9NCnZlcnkvUlQKdmVzaWNsZS9TTQp2ZXNpY3VsYXIKdmVzaWN1bGF0ZQp2ZXNwZXIvTVMKdmVzc2VsL01TCnZlc3Qncwp2ZXN0L0lMREdTCnZlc3RhbC9NUwp2ZXN0aWJ1bGUvTVMKdmVzdGlnZS9TTQp2ZXN0aWdpYWwvWQp2ZXN0aW5nL00KdmVzdG1lbnQvSU1TCnZlc3RyeS9TTQp2ZXN0cnltYW4vTQp2ZXN0cnltZW4KdmV0L1NNCnZldGNoL01TCnZldGVyYW4vU00KdmV0ZXJpbmFyaWFuL01TCnZldGVyaW5hcnkvU00KdmV0by9NREcKdmV0b2VzCnZldHRlZAp2ZXR0aW5nCnZleC9HRFMKdmV4YXRpb24vU00KdmV4YXRpb3VzL1kKdmhmCnZpCnZpYQp2aWFiaWxpdHkvTQp2aWFibGUKdmlhYmx5CnZpYWR1Y3QvU00KdmlhbC9NUwp2aWFuZC9TTQp2aWJlL01TCnZpYmVzL00KdmlicmFoYXJwL1NNCnZpYnJhbmN5L00KdmlicmFudC9ZCnZpYnJhcGhvbmUvTVMKdmlicmFwaG9uaXN0L01TCnZpYnJhdGUvR05EU1gKdmlicmF0aW9uL00KdmlicmF0by9NUwp2aWJyYXRvci9TTQp2aWJyYXRvcnkKdmlidXJudW0vU00KdmljYXIvU00KdmljYXJhZ2UvU00KdmljYXJpb3VzL1lQCnZpY2FyaW91c25lc3MvTQp2aWNlL0NNUwp2aWNlZAp2aWNlZ2VyZW50L1NNCnZpY2VubmlhbAp2aWNlcmVnYWwKdmljZXJveS9NUwp2aWNoeXNzb2lzZS9NCnZpY2luZwp2aWNpbml0eS9NCnZpY2lvdXMvWVAKdmljaW91c25lc3MvTQp2aWNpc3NpdHVkZS9TTQp2aWN0aW0vTVMKdmljdGltaXphdGlvbi9NCnZpY3RpbWl6ZS9HRFMKdmljdG9yL01TCnZpY3RvcmlvdXMvWQp2aWN0b3J5L1NNCnZpY3R1YWwvU01ERwp2aWN1bmEvTVMKdmlkZWxpY2V0CnZpZGVvL0dTTUQKdmlkZW9jYXNzZXR0ZS9TTQp2aWRlb2NvbmZlcmVuY2luZwp2aWRlb2Rpc2MvTVMKdmlkZW9waG9uZS9NUwp2aWRlb3RhcGUvRFNNRwp2aWRlb3RleAp2aWUvRFMKdmlldy9BTURSU1pHCnZpZXdlci9BTQp2aWV3ZXJzaGlwL00Kdmlld2ZpbmRlci9TTQp2aWV3aW5nL1NNCnZpZXdwb2ludC9NUwp2aWdlc2ltYWwKdmlnaWwvU00KdmlnaWxhbmNlL00KdmlnaWxhbnQvWQp2aWdpbGFudGUvU00KdmlnaWxhbnRpc20vTQp2aWdpbGFudGlzdC9NCnZpZ25ldHRlL0RTTUcKdmlnbmV0dGlzdC9NUwp2aWdvci9NCnZpZ29yb3VzL1kKdmlpCnZpaWkKdmlraW5nL01TCnZpbGUvWVRQUgp2aWxlbmVzcy9NCnZpbGlmaWNhdGlvbi9NCnZpbGlmeS9EU05HCnZpbGxhL1NNCnZpbGxhZ2UvUlNNWgp2aWxsYWdlci9NCnZpbGxhaW4vU00KdmlsbGFpbm91cwp2aWxsYWlueS9TTQp2aWxsZWluL1NNCnZpbGxlaW5hZ2UvTQp2aWxsaQp2aWxsdXMvTQp2aW0vTQp2aW5haWdyZXR0ZS9NCnZpbmNpYmxlL0kKdmluZGljYXRlL1hEU0dOCnZpbmRpY2F0aW9uL00KdmluZGljYXRvci9NUwp2aW5kaWN0aXZlL1BZCnZpbmRpY3RpdmVuZXNzL00KdmluZS9NUwp2aW5lZ2FyL00KdmluZWdhcnkKdmluZXlhcmQvTVMKdmluby9NCnZpbm91cwp2aW50YWdlL01TCnZpbnRuZXIvTVMKdmlueWwvU00KdmlvbC9NQlMKdmlvbGEvU00KdmlvbGFibGUvSQp2aW9sYXRlL0dORFNYCnZpb2xhdGlvbi9NCnZpb2xhdG9yL1NNCnZpb2xlbmNlL00KdmlvbGVudC9ZCnZpb2xldC9NUwp2aW9saW4vTVMKdmlvbGluY2VsbG8vUwp2aW9saW5pc3QvU00KdmlvbGlzdC9NUwp2aW9sb25jZWxsaXN0L1NNCnZpb2xvbmNlbGxvL01TCnZpcGVyL1NNCnZpcGVyb3VzCnZpcmFnby9NCnZpcmFnb2VzCnZpcmFsCnZpcmVvL1NNCnZpcmdpbi9NUwp2aXJnaW5hbC9TTQp2aXJnaW5pdHkvTQp2aXJndWxlL01TCnZpcmlsZQp2aXJpbGl0eS9NCnZpcm9sb2dpc3QvU00Kdmlyb2xvZ3kvTQp2aXJ0dWFsL1kKdmlydHVhbGl6YXRpb24KdmlydHVlL1NNCnZpcnR1b3NpdHkvTQp2aXJ0dW9zby9NCnZpcnR1b3VzL1lQCnZpcnR1b3VzbmVzcy9NCnZpcnVsZW5jZS9NCnZpcnVsZW50L1kKdmlydXMvTVMKdmlzYS9NRFNHCnZpc2FnZS9NUwp2aXNjZXJhCnZpc2NlcmFsL1kKdmlzY2lkCnZpc2Nvc2UvTQp2aXNjb3NpdHkvTQp2aXNjb3VudC9TTQp2aXNjb3VudGN5L1NNCnZpc2NvdW50ZXNzL01TCnZpc2NvdXMKdmlzY3VzL00KdmlzZS9BQ01HRFMKdmlzaWJpbGl0eS9JTQp2aXNpYmxlL0kKdmlzaWJseS9JCnZpc2lvbi9LR0RTTQp2aXNpb25hcnkvU00KdmlzaXQncwp2aXNpdC9BU0dECnZpc2l0YW50L01TCnZpc2l0YXRpb24vTVMKdmlzaXRvci9NUwp2aXNvci9TTQp2aXN0YS9TTQp2aXN1YWwvU01ZCnZpc3VhbGl6YXRpb24vU00KdmlzdWFsaXplL0RSU1pHCnZpc3VhbGl6ZXIvTQp2aXRhL00Kdml0YWUKdml0YWwvU1kKdml0YWxpdHkvTQp2aXRhbGl6YXRpb24vQU0Kdml0YWxpemUvQ0FHU0QKdml0YWxzL00Kdml0YW1pbi9NUwp2aXRpYXRlL0dORFMKdml0aWF0aW9uL00Kdml0aWN1bHR1cmUvTQp2aXRpY3VsdHVyaXN0L01TCnZpdHJlb3VzCnZpdHJpZmFjdGlvbi9NCnZpdHJpZmljYXRpb24vTQp2aXRyaWZ5L0dORFMKdml0cmluZS9TTQp2aXRyaW9sL00Kdml0cmlvbGljCnZpdHJpb2xpY2FsbHkKdml0dGxlcy9NCnZpdHVwZXJhdGUvR05WRFMKdml0dXBlcmF0aW9uL00Kdml2YS9NUwp2aXZhY2UKdml2YWNpb3VzL1BZCnZpdmFjaW91c25lc3MvTQp2aXZhY2l0eS9NCnZpdmFyaWEKdml2YXJpdW0vU00Kdml2aWQvUllUUAp2aXZpZG5lc3MvTQp2aXZpZnkvQURTRwp2aXZpcGFyb3VzCnZpdmlzZWN0L0RHUwp2aXZpc2VjdGlvbi9NCnZpdmlzZWN0aW9uYWwKdml2aXNlY3Rpb25pc3QvU00Kdml4ZW4vU00Kdml4ZW5pc2gvWQp2aXoKdml6aWVyL1NNCnZsZgp2b2NhYgp2b2NhYmxlL01TCnZvY2FidWxhcnkvU00Kdm9jYWwvU01ZCnZvY2FsaWMKdm9jYWxpc3QvU00Kdm9jYWxpemF0aW9uL01TCnZvY2FsaXplL0RTRwp2b2NhdGlvbi9GSUtBU00Kdm9jYXRpb25hbC9ZCnZvY2F0aXZlL01TCnZvY2lmZXJhdGUvRFNHTgp2b2NpZmVyYXRpb24vTQp2b2NpZmVyb3VzL1lQCnZvY2lmZXJvdXNuZXNzL00Kdm9ka2EvU00Kdm9ndWUvU00Kdm9ndWlzaAp2b2ljZS9JRFNNRwp2b2ljZWQvVQp2b2ljZWxlc3MvUFkKdm9pY2VsZXNzbmVzcy9NCnZvaWNlbWFpbC9TTQp2b2lkL01EU0dCCnZvaWxhCnZvaWxlL00Kdm9sL1MKdm9sYXRpbGUKdm9sYXRpbGl0eS9NCnZvbGF0aWxpemUvRFNHCnZvbGNhbmljCnZvbGNhbm8vTQp2b2xjYW5vZXMKdm9sZS9NUwp2b2xpdGlvbi9NCnZvbGl0aW9uYWwKdm9sbGV5L0dTTUQKdm9sbGV5YmFsbC9NUwp2b2x0L0FNUwp2b2x0YWdlL01TCnZvbHRhaWMKdm9sdG1ldGVyL1NNCnZvbHViaWxpdHkvTQp2b2x1YmxlCnZvbHVibHkKdm9sdW1lL1NNCnZvbHVtaW5vdXMvWVAKdm9sdW1pbm91c25lc3MvTQp2b2x1bnRhcmlseS9JCnZvbHVudGFyaXNtL00Kdm9sdW50YXJ5L1NNCnZvbHVudGVlci9TR01ECnZvbHVudGVlcmlzbS9NCnZvbHVwdHVhcnkvU00Kdm9sdXB0dW91cy9QWQp2b2x1cHR1b3VzbmVzcy9NCnZvbHV0ZS9TTQp2b21pdC9TTURHCnZvb2Rvby9HU01ECnZvb2Rvb2lzbS9NCnZvcmFjaW91cy9QWQp2b3JhY2lvdXNuZXNzL00Kdm9yYWNpdHkvTQp2b3J0ZXgvTVMKdm90YXJ5L1NNCnZvdGUncwp2b3RlL0NHVkRTCnZvdGVyL1NNCnZvdWNoL0RSU1pHCnZvdWNoZXIvTQp2b3VjaHNhZmUvRFNHCnZvdy9TR01ECnZvd2VsL1NNCnZveWFnZS9NWkdEUlMKdm95YWdlci9NCnZveWFnZXVyL1NNCnZveWV1ci9NUwp2b3lldXJpc20vTQp2b3lldXJpc3RpYwp2dWxjYW5pemF0aW9uL00KdnVsY2FuaXplL0dEUwp2dWxnYXIvUllUCnZ1bGdhcmlhbi9NUwp2dWxnYXJpc20vTVMKdnVsZ2FyaXR5L1NNCnZ1bGdhcml6YXRpb24vTQp2dWxnYXJpemUvWkdEUlMKdnVsZ2FyaXplci9NCnZ1bG5lcmFiaWxpdGllcwp2dWxuZXJhYmlsaXR5L0lNCnZ1bG5lcmFibGUvSQp2dWxuZXJhYmx5L0kKdnVscGluZQp2dWx0dXJlL1NNCnZ1bHR1cm91cwp2dWx2YS9NCnZ1bHZhZQp2dXZ1emVsYS9NUwp2eWluZwp3L0ROWFRHVkoKd2FiYml0L1MKd2Fjay9NUlRTCndhY2tpbmVzcy9NCndhY2tvL1NNCndhY2t5L1JQVAp3YWQvU1pHTURSCndhZGRlZAp3YWRkaW5nL00Kd2FkZGxlL0RTTUcKd2FkZS9NUwp3YWRlci9NCndhZGVycy9NCndhZGdlL1MKd2FkaS9NUwp3YWZlci9TTQp3YWZmbGUvTVpHRFJTCndhZmZsZXIvTQp3YWZ0L01ER1MKd2FnL1NaR01EUgp3YWdlL01TCndhZ2VkL1UKd2FnZXIvWkdNRFIKd2FnZXJlci9NCndhZ2dlZAp3YWdnZXJ5L1NNCndhZ2dpbmcKd2FnZ2lzaC9ZUAp3YWdnaXNobmVzcy9NCndhZ2dsZS9NR0RTCndhZ29uL1pTTVIKd2Fnb25lci9NCndhZ3RhaWwvU00Kd2FpZi9NUwp3YWlsL01EUlpHUwp3YWlsZXIvTQp3YWlsaW5nL00Kd2Fpbi9NUwp3YWluc2NvdC9TSk1ERwp3YWluc2NvdGluZy9NCndhaW53cmlnaHQvTVMKd2Fpc3QvU00Kd2Fpc3RiYW5kL01TCndhaXN0Y29hdC9NUwp3YWlzdGxpbmUvTVMKd2FpdC9NRFJaR1MKd2FpdGVyL00Kd2FpdGluZy9NCndhaXRwZXJzb24vTVMKd2FpdHJlc3MvTVMKd2FpdHN0YWZmL00Kd2FpdmUvRFJTWkcKd2FpdmVyL00Kd2FrZS9NR0pEUwp3YWtlZnVsL1BZCndha2VmdWxuZXNzL00Kd2FrZW4vR1NECndhbGRvL1MKd2FsZG9lcwp3YWxlL01HRFMKd2Fsay9NRFJaR1MKd2Fsa2Fib3V0L1MKd2Fsa2F3YXkvTVMKd2Fsa2VyL00Kd2Fsa2llcwp3YWxraW5nL00Kd2Fsa291dC9TTQp3YWxrb3Zlci9NUwp3YWxrd2F5L1NNCndhbGwvTURHUwp3YWxsYWJ5L1NNCndhbGxhaAp3YWxsYWhzCndhbGxib2FyZC9NCndhbGxldC9NUwp3YWxsZXllL0RTTQp3YWxsZmxvd2VyL01TCndhbGxvcC9NRFNKRwp3YWxsb3BpbmcvTQp3YWxsb3cvTURTRwp3YWxscGFwZXIvU01ERwp3YWxseS9TCndhbG51dC9NUwp3YWxydXMvTVMKd2FsdHovWkdNRFJTCndhbHR6ZXIvTQp3YW1wdW0vTQp3YW4vR1BEWQp3YW5kL01TCndhbmRlci9EUlNKWkcKd2FuZGVyZXIvTQp3YW5kZXJpbmdzL00Kd2FuZGVybHVzdC9TTQp3YW5lL01TCndhbmdsZS9NWkdEUlMKd2FuZ2xlci9NCndhbmsvRFJaR1MKd2FubmEKd2FubmFiZS9TTQp3YW5uYWJlZS9TCndhbm5lcgp3YW5uZXNzL00Kd2FubmVzdAp3YW50L01ER1MKd2FudGVkL1UKd2FudG9uL01EWVNQRwp3YW50b25uZXNzL00Kd2FwaXRpL01TCndhci9TTQp3YXJibGUvTVpHRFJTCndhcmJsZXIvTQp3YXJib25uZXQvU00Kd2FyZC9BTURHUwp3YXJkZW4vTVMKd2FyZGVyL01TCndhcmRyZXNzL1MKd2FyZHJvYmUvU00Kd2FyZHJvb20vU00Kd2FyZS9NUwp3YXJlaG91c2UvRFNNRwp3YXJlegp3YXJmYXJlL00Kd2FyaGVhZC9NUwp3YXJob3JzZS9TTQp3YXJpbHkvVQp3YXJpbmVzcy9VTQp3YXJsaWtlCndhcmxvY2svTVMKd2FybG9yZC9NUwp3YXJtL1BEUllIWlRHUwp3YXJtYmxvb2RlZAp3YXJtZXIvTQp3YXJtaGVhcnRlZC9QCndhcm1oZWFydGVkbmVzcy9NCndhcm1pc2gKd2FybW5lc3MvTQp3YXJtb25nZXIvU01HCndhcm1vbmdlcmluZy9NCndhcm10aC9NCndhcm4vSkRHUwp3YXJuaW5nL00Kd2FycC9NREdTCndhcnBhaW50CndhcnBhdGgvTQp3YXJwYXRocwp3YXJwbGFuZS9NUwp3YXJyYW50L0dNRFMKd2FycmFudGVkL1UKd2FycmFudHkvRFNNRwp3YXJyZWQKd2FycmVuL01TCndhcnJpbmcKd2Fycmlvci9TTQp3YXJzaGlwL1NNCndhcnQvTVMKd2FydGhvZy9TTQp3YXJ0aW1lL00Kd2FydHkvVFIKd2FyeS9VUFJUCndhcwp3YXNhYmkKd2FzaC9CSk1EUlNaRwp3YXNoYWJsZS9TTQp3YXNoYmFzaW4vU00Kd2FzaGJvYXJkL1NNCndhc2hib3dsL1NNCndhc2hjbG90aC9NCndhc2hjbG90aHMKd2FzaGVkL1UKd2FzaGVyL00Kd2FzaGVyd29tYW4vTQp3YXNoZXJ3b21lbgp3YXNoaW5nL00Kd2FzaG91dC9NUwp3YXNocmFnL01TCndhc2hyb29tL01TCndhc2hzdGFuZC9TTQp3YXNodHViL01TCndhc2h5L1RSCndhc24ndAp3YXNwL01TCndhc3Bpc2gvWVAKd2FzcGlzaG5lc3MvTQp3YXNzYWlsL1NNREcKd2FzdAp3YXN0YWdlL00Kd2FzdGUvRFJTTVpHCndhc3RlYmFza2V0L01TCndhc3RlZnVsL1BZCndhc3RlZnVsbmVzcy9NCndhc3RlbGFuZC9TTQp3YXN0ZXBhcGVyL00Kd2FzdGVyL00Kd2FzdGV3YXRlcgp3YXN0cmVsL1NNCndhdGNoL0JaR01EUlMKd2F0Y2hhYmxlL1UKd2F0Y2hiYW5kL01TCndhdGNoZG9nL1NNCndhdGNoZXIvTQp3YXRjaGZ1bC9ZUAp3YXRjaGZ1bG5lc3MvTQp3YXRjaG1ha2VyL01TCndhdGNobWFraW5nL00Kd2F0Y2htYW4vTQp3YXRjaG1lbgp3YXRjaHN0cmFwL1MKd2F0Y2h0b3dlci9TTQp3YXRjaHdvcmQvTVMKd2F0ZXIvR1NNRAp3YXRlcmJlZC9NUwp3YXRlcmJpcmQvU00Kd2F0ZXJib2FyZC9NREpTRwp3YXRlcmJvYXJkaW5nL00Kd2F0ZXJib3JuZQp3YXRlcmNvbG9yL01TCndhdGVyY291cnNlL1NNCndhdGVyY3JhZnQvTQp3YXRlcmNyZXNzL00Kd2F0ZXJmYWxsL1NNCndhdGVyZm93bC9TTQp3YXRlcmZyb250L01TCndhdGVyaG9sZS9TTQp3YXRlcmluZXNzL00Kd2F0ZXJsaWx5L1NNCndhdGVybGluZS9NUwp3YXRlcmxvZ2dlZAp3YXRlcm1hcmsvTURHUwp3YXRlcm1lbG9uL1NNCndhdGVybWlsbC9NUwp3YXRlcnByb29mL1NNREcKd2F0ZXJwcm9vZmluZy9NCndhdGVycy9NCndhdGVyc2hlZC9NUwp3YXRlcnNpZGUvTVMKd2F0ZXJzcG91dC9TTQp3YXRlcnRpZ2h0CndhdGVyd2F5L01TCndhdGVyd2hlZWwvU00Kd2F0ZXJ3b3Jrcy9NCndhdGVyeS9QVFIKd2F0dC9NUwp3YXR0YWdlL00Kd2F0dGxlL01HRFMKd2F2ZS9NWkdEUlMKd2F2ZWJhbmQvUwp3YXZlZm9ybQp3YXZlbGVuZ3RoL00Kd2F2ZWxlbmd0aHMKd2F2ZWxldC9TTQp3YXZlbGlrZQp3YXZlci9aR01EUgp3YXZlcmVyL00Kd2F2ZXJpbmcvWQp3YXZpbmVzcy9NCndhdnkvUFJUCndheC9HTUROUwp3YXhpbmVzcy9NCndheHdpbmcvU00Kd2F4d29yay9TTQp3YXh5L1JQVAp3YXkvU00Kd2F5YmlsbC9TTQp3YXlmYXJlci9NUwp3YXlmYXJpbmcvU00Kd2F5bGFpZAp3YXlsYXkvUlNaRwp3YXlsYXllci9NCndheXNpZGUvU00Kd2F5d2FyZC9QWQp3YXl3YXJkbmVzcy9NCndhem9vL1MKd2UKd2UnZAp3ZSdsbAp3ZSdyZQp3ZSd2ZQp3ZWFrL1BOUllYVAp3ZWFrZW4vRFJaRwp3ZWFrZW5lci9NCndlYWtmaXNoL01TCndlYWtpc2gKd2Vha2xpbmcvU00Kd2Vha25lc3MvTVMKd2VhbC9NSFMKd2VhbHRoL00Kd2VhbHRoaW5lc3MvTQp3ZWFsdGh5L1RSUAp3ZWFuL0RHUwp3ZWFwb24vTVMKd2VhcG9uaXplCndlYXBvbmxlc3MKd2VhcG9ucnkvTQp3ZWFyL01SQkpTWkcKd2VhcmFibGUvVQp3ZWFyZXIvTQp3ZWFyaWVkL1UKd2VhcmlseQp3ZWFyaW5lc3MvTQp3ZWFyaXNvbWUvWQp3ZWFyeS9UR0RSU1AKd2Vhc2VsL01EWVNHCndlYXRoZXIvU01ERwp3ZWF0aGVyYm9hcmQvU0cKd2VhdGhlcmNvY2svTVMKd2VhdGhlcmluZy9NCndlYXRoZXJpemF0aW9uL00Kd2VhdGhlcml6ZS9EU0cKd2VhdGhlcm1hbi9NCndlYXRoZXJtZW4Kd2VhdGhlcnBlcnNvbi9NUwp3ZWF0aGVycHJvb2YvR1NECndlYXRoZXJzdHJpcC9TCndlYXRoZXJzdHJpcHBlZAp3ZWF0aGVyc3RyaXBwaW5nL00Kd2VhdmUvRFJTTVpHCndlYXZlci9NCndlYXZpbmcvTQp3ZWIvU00Kd2ViYmVkCndlYmJpbmcvTQp3ZWJjYW0vTVMKd2ViY2FzdC9TTUcKd2ViZmVldAp3ZWJmb290L00Kd2ViaW5hci9TTQp3ZWJpc29kZS9NUwp3ZWJsb2cvTVMKd2VibWFzdGVyL1NNCndlYm1pc3RyZXNzL01TCndlYnNpdGUvU00Kd2VkL0FTCndlZGRlZC9BCndlZGRlcgp3ZWRkaW5nL1NNCndlZGdlL0RTTUcKd2VkZ2llL01TCndlZGxvY2svTQp3ZWUvUlNNVAp3ZWVkL01EUlNaRwp3ZWVkZXIvTQp3ZWVka2lsbGVyL1MKd2VlZGxlc3MKd2VlZHkvVFIKd2VlaW5nCndlZWsvTVlTCndlZWtkYXkvU00Kd2Vla2VuZC9TWkdNRFIKd2Vla2x5L1NNCndlZWtuaWdodC9TTQp3ZWVuL0RTRwp3ZWVuaWUvTVRSUwp3ZWVuc3kvUlQKd2VlbnkKd2VlcC9NUkpTWkcKd2VlcGVyL00Kd2VlcGllCndlZXB5L1RSU00Kd2VldmlsL01TCndlZnQvTVMKd2VpZ2gncwp3ZWlnaC9BR0QKd2VpZ2hicmlkZ2UvUwp3ZWlnaHMvQQp3ZWlnaHQvTURTSkcKd2VpZ2h0ZWQvVQp3ZWlnaHRpbHkKd2VpZ2h0aW5lc3MvTQp3ZWlnaHRsZXNzL1lQCndlaWdodGxlc3NuZXNzL00Kd2VpZ2h0bGlmdGVyL01TCndlaWdodGxpZnRpbmcvTQp3ZWlnaHR5L1BUUgp3ZWlyL01TCndlaXJkL1BUUlkKd2VpcmRpZS9NUwp3ZWlyZG5lc3MvTQp3ZWlyZG8vTVMKd2VsY29tZS9NR0RTCndlbGQvTURSQlNaRwp3ZWxkZXIvTQp3ZWxmYXJlL00Kd2Vsa2luL00Kd2VsbC9NRFBTRwp3ZWxsaGVhZC9TTQp3ZWxsaWUKd2VsbGluZ3Rvbi9NUwp3ZWxsbmVzcy9NCndlbGxzcHJpbmcvTVMKd2VsbHkvUwp3ZWxzaC9aR0RSUwp3ZWxzaGVyL00Kd2VsdC9NRFJTWkcKd2VsdGVyL0dNRAp3ZWx0ZXJ3ZWlnaHQvU00Kd2VuL00Kd2VuY2gvTVMKd2VuZC9EU0cKd2VudAp3ZXB0CndlcmUKd2VyZW4ndAp3ZXJld29sZi9NCndlcmV3b2x2ZXMKd2VzdC9NCndlc3Rib3VuZAp3ZXN0ZXJseS9TTQp3ZXN0ZXJuL1NaTVIKd2VzdGVybmVyL00Kd2VzdGVybml6YXRpb24vTQp3ZXN0ZXJuaXplL0dEUwp3ZXN0ZXJubW9zdAp3ZXN0d2FyZC9TCndldC9TTVlQCndldGJhY2svU00Kd2V0bGFuZC9TTQp3ZXRuZXNzL00Kd2V0dGVyL1NNCndldHRlc3QKd2V0dGluZwp3ZXR3YXJlL1MKd2hhY2svU0paR01EUgp3aGFja2VyL00Kd2hhbGUvRFJTTVpHCndoYWxlYm9hdC9NUwp3aGFsZWJvbmUvTQp3aGFsZXIvTQp3aGFsaW5nL00Kd2hhbS9NUwp3aGFtbWVkCndoYW1taW5nCndoYW1teS9TTQp3aGFyZi9NCndoYXJ2ZXMKd2hhdC9NUwp3aGF0Y2hhbWFjYWxsaXQvTVMKd2hhdGV2ZXIKd2hhdG5vdC9NCndoYXRzaGVybmFtZQp3aGF0c2hpc25hbWUKd2hhdHNpdC9TCndoYXRzb2V2ZXIKd2hlYWwvU00Kd2hlYXQvTU4Kd2hlYXRnZXJtCndoZWF0bWVhbAp3aGVlCndoZWVkbGUvRFJTWkcKd2hlZWRsZXIvTQp3aGVlbC9TTURSRwp3aGVlbGJhcnJvdy9TTQp3aGVlbGJhc2UvU00Kd2hlZWxjaGFpci9TTQp3aGVlbGhvdXNlL01TCndoZWVsaWUvU00Kd2hlZWx3cmlnaHQvTVMKd2hlZXplL0RTTUcKd2hlZXppbHkKd2hlZXppbmVzcy9NCndoZWV6eS9QUlQKd2hlbGsvU01ECndoZWxtL1NERwp3aGVscC9TTURHCndoZW4vTVMKd2hlbmNlCndoZW5ldmVyCndoZW5zb2V2ZXIKd2hlcmUvU00Kd2hlcmVhYm91dHMvTQp3aGVyZWFzCndoZXJlYXQKd2hlcmVieQp3aGVyZWZvcmUvTVMKd2hlcmVpbgp3aGVyZW9mCndoZXJlb24Kd2hlcmVzb2V2ZXIKd2hlcmV0bwp3aGVyZXVwb24Kd2hlcmV2ZXIKd2hlcmV3aXRoCndoZXJld2l0aGFsL00Kd2hlcnJ5L1NNCndoZXQvUwp3aGV0aGVyCndoZXRzdG9uZS9TTQp3aGV0dGVkCndoZXR0aW5nCndoZXcKd2hleS9NCndoaWNoCndoaWNoZXZlcgp3aGlmZi9TTURHCndoaWZmbGV0cmVlL01TCndoaWxlL0RTTUcKd2hpbG9tCndoaWxzdAp3aGltL01TCndoaW1wZXIvTURHUwp3aGltc2ljYWwvWQp3aGltc2ljYWxpdHkvTQp3aGltc3kvU00Kd2hpbmUvRFJTTVpHCndoaW5lci9NCndoaW5nZS9EUlNaRwp3aGluZ2VpbmcKd2hpbm55L0dEU00Kd2hpbnkvUlQKd2hpcC9NUwp3aGlwY29yZC9NCndoaXBsYXNoL01TCndoaXBwZWQKd2hpcHBlci9NUwp3aGlwcGVyc25hcHBlci9NUwp3aGlwcGV0L01TCndoaXBwaW5nL1NNCndoaXBwbGV0cmVlL1NNCndoaXBwb29yd2lsbC9NUwp3aGlwc2F3L01ER1MKd2hpci9NUwp3aGlybC9TTURHCndoaXJsaWdpZy9NUwp3aGlybHBvb2wvTVMKd2hpcmx3aW5kL01TCndoaXJseWJpcmQvU00Kd2hpcnJlZAp3aGlycmluZwp3aGlzay9TTURSWkcKd2hpc2tlci9NRAp3aGlza2VyeQp3aGlza2V5L01TCndoaXNreXMKd2hpc3Blci9NRFJTWkcKd2hpc3BlcmVyL00Kd2hpc3QvTQp3aGlzdGxlL01aR0RSUwp3aGlzdGxlci9NCndoaXQvTUROUlNYVEdKCndoaXRlL1NQTQp3aGl0ZWJhaXQKd2hpdGVib2FyZC9TCndoaXRlY2FwL1NNCndoaXRlZmlzaC9NUwp3aGl0ZWhlYWQvTVMKd2hpdGVuL1pHRFJKCndoaXRlbmVyL00Kd2hpdGVuZXNzL00Kd2hpdGVuaW5nL00Kd2hpdGVvdXQvU00Kd2hpdGV0YWlsL01TCndoaXRld2FsbC9TTQp3aGl0ZXdhc2gvTURTRwp3aGl0ZXdhdGVyL00Kd2hpdGV5L1NNCndoaXRoZXIKd2hpdGluZy9NCndoaXRpc2gKd2hpdHRsZS9aR0RSUwp3aGl0dGxlci9NCndoaXovTQp3aGl6a2lkL00Kd2hpenpiYW5nL01TCndoaXp6ZWQKd2hpenplcwp3aGl6emluZwp3aG8nZAp3aG8nbGwKd2hvJ3JlCndobyd2ZQp3aG8vTQp3aG9hCndob2R1bml0L01TCndob2V2ZXIKd2hvbGUvU01QCndob2xlZm9vZC9TCndob2xlZ3JhaW4Kd2hvbGVoZWFydGVkL1lQCndob2xlaGVhcnRlZG5lc3MvTQp3aG9sZW1lYWwKd2hvbGVuZXNzL00Kd2hvbGVzYWxlL01aR0RSUwp3aG9sZXNhbGVyL00Kd2hvbGVzb21lL1VQCndob2xlc29tZWx5Cndob2xlc29tZW5lc3MvVU0Kd2hvbGV3aGVhdAp3aG9sbHkKd2hvbQp3aG9tZXZlcgp3aG9tc29ldmVyCndob29wL1NNRFJaRwp3aG9vcGVlL1MKd2hvb3Blci9NCndob29zaC9NRFNHCndob3AvUwp3aG9wcGVkCndob3BwZXIvU00Kd2hvcHBpbmcKd2hvcmUvU01HCndob3JlaG91c2UvTVMKd2hvcmVpc2gKd2hvcmlzaAp3aG9ybC9TTUQKd2hvc2UKd2hvc28Kd2hvc29ldmVyCndodXAvUwp3aHVwcGVkCndodXBwaW5nCndoeSdkCndoeS9NCndoeXMKd2ljay9NRFJTWgp3aWNrZWQvVFBSWQp3aWNrZWRuZXNzL00Kd2lja2VyL00Kd2lja2Vyd29yay9NCndpY2tldC9TTQp3aWRlL1lUUlAKd2lkZW1vdXRoZWQKd2lkZW4vU0RSWkcKd2lkZW5lci9NCndpZGVuZXNzL00Kd2lkZXNjcmVlbi9NUwp3aWRlc3ByZWFkCndpZGdldC9TCndpZG93L1NNRFJaRwp3aWRvd2VyL00Kd2lkb3dob29kL00Kd2lkdGgvTQp3aWR0aHMKd2llbGQvU0RSWkcKd2llbGRlci9NCndpZW5lci9TTQp3aWVuaWUvU00Kd2lmZS9NWQp3aWZlbGVzcwp3aWcvU00Kd2lnZW9uL00Kd2lnZ2VkCndpZ2dpbmcKd2lnZ2xlL0RSU01aRwp3aWdnbGVyL00Kd2lnZ2x5L1RSCndpZ2h0L1NNCndpZ2xldC9TTQp3aWd3YWcvU00Kd2lnd2FnZ2VkCndpZ3dhZ2dpbmcKd2lnd2FtL1NNCndpa2kvTVMKd2lsZC9NUllTVFAKd2lsZGNhcmQKd2lsZGNhdC9NUwp3aWxkY2F0dGVkCndpbGRjYXR0ZXIvTVMKd2lsZGNhdHRpbmcKd2lsZGViZWVzdC9NUwp3aWxkZXJuZXNzL01TCndpbGRmaXJlL01TCndpbGRmbG93ZXIvU00Kd2lsZGZvd2wvTQp3aWxkbGlmZS9NCndpbGRuZXNzL00Kd2lsZHMvTQp3aWxlL01HRFMKd2lsaW5lc3MvTQp3aWxsL01EUwp3aWxsZnVsL1BZCndpbGxmdWxuZXNzL00Kd2lsbGllcy9NCndpbGxpbmcvVVBZCndpbGxpbmduZXNzL1VNCndpbGxpd2F3L01TCndpbGxvdy9TTQp3aWxsb3d5CndpbGxwb3dlci9NCndpbGx5L1MKd2lsdC9NRFNHCndpbHkvUlRQCndpbXAvTURTRwp3aW1waXNoCndpbXBsZS9EU01HCndpbXB5L1JUCndpbi9TR01ECndpbmNlL0RTTUcKd2luY2gvTURTRwp3aW5kJ3MKd2luZC9VQVNHCndpbmRiYWcvU00Kd2luZGJsb3duCndpbmRicmVhay9TWk1SCndpbmRicmVha2VyL00Kd2luZGJ1cm4vTUQKd2luZGNoZWF0ZXIvUwp3aW5kY2hpbGwvTQp3aW5kZWQKd2luZGVyL1NNCndpbmRmYWxsL01TCndpbmRmbG93ZXIvTVMKd2luZGlseQp3aW5kaW5lc3MvTQp3aW5kaW5nJ3MKd2luZGphbW1lci9TTQp3aW5kbGFzcy9NUwp3aW5kbGVzcwp3aW5kbWlsbC9NREdTCndpbmRvdy9TTURHCndpbmRvd2xlc3MKd2luZG93cGFuZS9TTQp3aW5kb3dzaWxsL1NNCndpbmRwaXBlL01TCndpbmRwcm9vZgp3aW5kcm93L1NNCndpbmRzY3JlZW4vU00Kd2luZHNoaWVsZC9TTQp3aW5kc29jay9NUwp3aW5kc3Rvcm0vTVMKd2luZHN1cmYvWkdEUlMKd2luZHN1cmZlci9NCndpbmRzdXJmaW5nL00Kd2luZHN3ZXB0CndpbmR1cC9TTQp3aW5kd2FyZC9NCndpbmR5L1JUUAp3aW5lL01TCndpbmVnbGFzcy9NUwp3aW5lZ3Jvd2VyL01TCndpbmVtYWtlci9NUwp3aW5lcnkvU00Kd2luZy9NRFJaRwp3aW5nZGluZy9NUwp3aW5nbGVzcwp3aW5nbGlrZQp3aW5nbnV0L1NNCndpbmdzcGFuL01TCndpbmdzcHJlYWQvU00Kd2luZ3RpcC9TTQp3aW5rL01EUlNaRwp3aW5rZXIvTQp3aW5rbGUvRFNNRwp3aW5uYWJsZS9VCndpbm5lci9TTQp3aW5uaW5nL01ZUwp3aW5ub3cvWkdTRFIKd2lubm93ZXIvTQp3aW5vL01TCndpbnNvbWUvWVRSUAp3aW5zb21lbmVzcy9NCndpbnRlci9HU01ECndpbnRlcmdyZWVuL00Kd2ludGVyaXplL0dEUwp3aW50ZXJ0aW1lL00Kd2ludHJ5L1RSCndpbnkvUlQKd2lwZS9NWkdEUlMKd2lwZXIvTQp3aXJlJ3MKd2lyZS9BR0RTCndpcmVkL1MKd2lyZWhhaXIvTVMKd2lyZWxlc3MvTVMKd2lyZXRhcC9NUwp3aXJldGFwcGVkCndpcmV0YXBwZXIvU00Kd2lyZXRhcHBpbmcvTQp3aXJpbmVzcy9NCndpcmluZy9NCndpcnkvUlRQCndpc2RvbS9NCndpc2UvTVlUR0RSUwp3aXNlYWNyZS9TTQp3aXNlY3JhY2svTURTRwp3aXNlZ3V5L1MKd2lzaC9NRFJTWkcKd2lzaGJvbmUvU00Kd2lzaGVyL00Kd2lzaGZ1bC9ZCndpc2hsaXN0J3MKd2lzcC9NUwp3aXNweS9SVAp3aXN0Cndpc3RlcmlhL1NNCndpc3RmdWwvWVAKd2lzdGZ1bG5lc3MvTQp3aXQvU00Kd2l0Y2gvTURTRwp3aXRjaGNyYWZ0L00Kd2l0Y2hlcnkvTQp3aXRoCndpdGhhbAp3aXRoZHJhdy9TRwp3aXRoZHJhd2FsL01TCndpdGhkcmF3bgp3aXRoZHJldwp3aXRoZS9EUlNNWkcKd2l0aGVyL0pHRAp3aXRoZXJpbmcvWQp3aXRoZXJzL00Kd2l0aGhlbGQKd2l0aGhvbGQvU0cKd2l0aGhvbGRpbmcvTQp3aXRoaW4vTQp3aXRob3V0CndpdGhzdGFuZC9HUwp3aXRoc3Rvb2QKd2l0bGVzcy9QWQp3aXRsZXNzbmVzcy9NCndpdG5lc3MvTURTRwp3aXRzL00Kd2l0dGVkCndpdHRlci9TR0QKd2l0dGljaXNtL1NNCndpdHRpbHkKd2l0dGluZXNzL00Kd2l0dGluZy9VWQp3aXR0eS9SUFQKd2l2ZS9HRFMKd2l6CndpemFyZC9TTVkKd2l6YXJkcnkvTQp3aXplbmVkCndrL1kKd29hZC9NCndvYmJsZS9NR0RTCndvYmJsaW5lc3MvTQp3b2JibHkvUlRQCndvZGdlL1MKd29lL1NNCndvZWJlZ29uZQp3b2VmdWwvWVAKd29lZnVsbGVyCndvZWZ1bGxlc3QKd29lZnVsbmVzcy9NCndvZy9TCndvay9TTU4Kd29rZQp3b2xkL01TCndvbGYvTURTRwp3b2xmaG91bmQvU00Kd29sZmlzaAp3b2xmcmFtL00Kd29sdmVyaW5lL1NNCndvbHZlcwp3b21hbi9NCndvbWFuaG9vZC9NCndvbWFuaXNoCndvbWFuaXplL0RSU1pHCndvbWFuaXplci9NCndvbWFua2luZC9NCndvbWFubGlrZS9NCndvbWFubGluZXNzL00Kd29tYW5seS9SUFQKd29tYi9NUwp3b21iYXQvTVMKd29tYmxlL1MKd29tZW4vTQp3b21lbmZvbGsvU00Kd29tZW5mb2xrcy9NCndvbid0Cndvbi9NCndvbmRlci9NREdMUwp3b25kZXJmdWwvWVAKd29uZGVyZnVsbmVzcy9NCndvbmRlcmluZy9ZCndvbmRlcmxhbmQvTVMKd29uZGVybWVudC9NCndvbmRyb3VzL1kKd29uay9NUwp3b25reS9UUgp3b250L01ECndvbnRlZC9VCndvby9TWkdEUgp3b29kL01ETlNHCndvb2RiaW5lL00Kd29vZGJsb2NrL01TCndvb2RjYXJ2ZXIvTVMKd29vZGNhcnZpbmcvU00Kd29vZGNodWNrL01TCndvb2Rjb2NrL1NNCndvb2RjcmFmdC9NCndvb2RjdXQvU00Kd29vZGN1dHRlci9TTQp3b29kY3V0dGluZy9NCndvb2Rlbi9SWVRQCndvb2Rlbm5lc3MvTQp3b29kaW5lc3MvTQp3b29kbGFuZC9TTQp3b29kbGljZQp3b29kbG90L1NNCndvb2Rsb3VzZQp3b29kbWFuL00Kd29vZG1lbgp3b29kcGVja2VyL01TCndvb2RwaWxlL1NNCndvb2RzL00Kd29vZHNoZWQvU00Kd29vZHNpbmVzcy9NCndvb2RzbWFuL00Kd29vZHNtZW4Kd29vZHN5L1JUUAp3b29kd2luZC9NUwp3b29kd29yay9NUlpHCndvb2R3b3JrZXIvTQp3b29kd29ya2luZy9NCndvb2R3b3JtL1MKd29vZHkvVFBSU00Kd29vZXIvTQp3b29mL01EUlNaRwp3b29mZXIvTQp3b29sL01OWAp3b29sZW4vTQp3b29sZ2F0aGVyaW5nL00Kd29vbGluZXNzCndvb2xsaW5lc3MvTQp3b29sbHkvUlNNUFQKd29vemlseQp3b296aW5lc3MvTQp3b296eS9UUlAKd29wL1MhCndvcmQncwp3b3JkL0FEU0cKd29yZGFnZS9NCndvcmRib29rL1NNCndvcmRpbHkKd29yZGluZXNzL00Kd29yZGluZy9TTQp3b3JkbGVzcy9ZCndvcmRwbGF5L00Kd29yZHNtaXRoCndvcmRzbWl0aHMKd29yZHkvVFBSCndvcmUKd29yaydzCndvcmsvQURKU0cKd29ya2FibGUvVQp3b3JrYWRheQp3b3JrYWhvbGljL1NNCndvcmthcm91bmQvUwp3b3JrYmFza2V0L1MKd29ya2JlbmNoL01TCndvcmtib29rL01TCndvcmtkYXkvU00Kd29ya2VyL01TCndvcmtmYXJlL00Kd29ya2Zsb3cvTVMKd29ya2ZvcmNlL00Kd29ya2hvcnNlL1NNCndvcmtob3VzZS9TTQp3b3JraW5nJ3MKd29ya2luZ21hbi9NCndvcmtpbmdtZW4Kd29ya2luZ3MvTQp3b3JraW5nd29tYW4vTQp3b3JraW5nd29tZW4Kd29ya2xvYWQvTVMKd29ya21hbi9NCndvcmttYW5saWtlCndvcmttYW5zaGlwL00Kd29ya21hdGUvUwp3b3JrbWVuCndvcmtvdXQvU00Kd29ya3BsYWNlL01TCndvcmtyb29tL01TCndvcmtzL00Kd29ya3NoZWV0L01TCndvcmtzaG9wL01TCndvcmtzaHkKd29ya3N0YXRpb24vTVMKd29ya3RhYmxlL01TCndvcmt0b3AvUwp3b3JrdXAvTVMKd29ya3dlZWsvU00Kd29ybGQvU00Kd29ybGRsaWVyCndvcmxkbGluZXNzL1VNCndvcmxkbHkvVVRQCndvcmxkdmlldy9TTQp3b3JsZHdpZGUKd29ybS9NRFNHCndvcm1ob2xlL01TCndvcm13b29kL00Kd29ybXkvVFIKd29ybi9VCndvcnJpZWQvWQp3b3JyaWVyL00Kd29ycmltZW50L00Kd29ycmlzb21lCndvcnJ5L1pHRFJTTUoKd29ycnlpbmcvWQp3b3JyeXdhcnQvU00Kd29yc2UvTQp3b3JzZW4vRFNHCndvcnNoaXAvWkdTTURSCndvcnNoaXBlci9NCndvcnNoaXBmdWwKd29yc3QvU0dNRAp3b3JzdGVkL00Kd29ydC9NCndvcnRoL00Kd29ydGhpZXMKd29ydGhpbHkvVQp3b3J0aGluZXNzL1VNCndvcnRobGVzcy9QWQp3b3J0aGxlc3NuZXNzL00Kd29ydGh3aGlsZQp3b3J0aHkncwp3b3J0aHkvVVBSVAp3b3QKd290Y2hhCndvdWxkJ3ZlCndvdWxkL1MKd291bGRuJ3QKd291bGRzdAp3b3VuZC9TR01EUgp3b3ZlL0EKd292ZW4vQVUKd293L1NHTUQKd3BtCndyYWNrL0dTTUQKd3JhaXRoL00Kd3JhaXRocwp3cmFuZ2xlL0RSU01aR0oKd3JhbmdsZXIvTQp3cmFwJ3MKd3JhcC9VUwp3cmFwYXJvdW5kL1NNCndyYXBwZWQvVQp3cmFwcGVyL1NNCndyYXBwaW5nL01TCndyYXNzZS9NUwp3cmF0aC9NCndyYXRoZnVsL1kKd3JlYWsvU0dECndyZWF0aC9NRFNHCndyZWF0aGUKd3JlYXRocwp3cmVjay9TWkdNRFIKd3JlY2thZ2UvTQp3cmVja2VyL00Kd3Jlbi9NUwp3cmVuY2gvTURTRwp3cmVzdC9TR01ECndyZXN0bGUvTVpHRFJTCndyZXN0bGVyL00Kd3Jlc3RsaW5nL00Kd3JldGNoL01TCndyZXRjaGVkL1RQUlkKd3JldGNoZWRuZXNzL00Kd3JpZ2dsZS9NWkdEUlMKd3JpZ2dsZXIvTQp3cmlnZ2x5CndyaWdodC9NUwp3cmluZy9TWkdNUgp3cmluZ2VyL00Kd3JpbmtsZS9NR0RTCndyaW5rbGVkL1UKd3JpbmtseS9UUlNNCndyaXN0L1NNCndyaXN0YmFuZC9NUwp3cmlzdHdhdGNoL01TCndyaXQvTVJCSlNaRwp3cml0ZS9TCndyaXRlci9NCndyaXRoZS9NR0RTCndyaXRpbmcvTQp3cml0dGVuL0FVCndyb25nL1NUR01QRFJZCndyb25nZG9lci9TTQp3cm9uZ2RvaW5nL1NNCndyb25nZnVsL1BZCndyb25nZnVsbmVzcy9NCndyb25naGVhZGVkL1lQCndyb25naGVhZGVkbmVzcy9NCndyb25nbmVzcy9NCndyb3RlL0EKd3JvdGgKd3JvdWdodAp3cnVuZwp3cnkvWQp3cnllcgp3cnllc3QKd3J5bmVzcy9NCnd0Cnd1bmRlcmtpbmQvUwp3dXJzdC9TTQp3dXNzL01TCnd1c3N5L1JTTVQKeAp4Y2kKeGNpaQp4Y2l2CnhjaXgKeGN2aQp4Y3ZpaQp4ZW5vbi9NCnhlbm9waG9iZS9NUwp4ZW5vcGhvYmlhL00KeGVub3Bob2JpYwp4ZXJvZ3JhcGhpYwp4ZXJvZ3JhcGh5L00KeGVyb3gvTURTRwp4aS9TTQp4aWkKeGlpaQp4aXYKeGl4Cnhvcgp4cmVmL1MKeHRlcm0vTQp4dgp4dmkKeHZpaQp4dmlpaQp4eAp4eGkKeHhpaQp4eGlpaQp4eGl2Cnh4aXgKeHh2Cnh4dmkKeHh2aWkKeHh2aWlpCnh4eAp4eHhpCnh4eGlpCnh4eGlpaQp4eHhpdgp4eHhpeAp4eHh2Cnh4eHZpCnh4eHZpaQp4eHh2aWlpCnh5bGVtL00KeHlsZW5lCnh5bG9waG9uZS9TTQp4eWxvcGhvbmlzdC9NUwp5J2FsbAp5L0YKeWEKeWFjaHQvU01ERwp5YWNodGluZy9NCnlhY2h0c21hbi9NCnlhY2h0c21lbgp5YWNodHN3b21hbi9NCnlhY2h0c3dvbWVuCnlhaG9vL1NNCnlhay9TTQp5YWtrZWQKeWFra2luZwp5YW0vU00KeWFtbWVyL1NaR01EUgp5YW1tZXJlci9NCnlhbmcvTQp5YW5rL01EU0cKeWFwL1NNCnlhcHBlZAp5YXBwaW5nCnlhcmQvTVMKeWFyZGFnZS9NUwp5YXJkYXJtL01TCnlhcmRtYW4vTQp5YXJkbWFzdGVyL01TCnlhcmRtZW4KeWFyZHN0aWNrL01TCnlhcm11bGtlL1NNCnlhcm4vTVMKeWFycm93L00KeWFzaG1hay9TCnlhdy9TR01ECnlhd2wvTVMKeWF3bi9NRFJTWkcKeWF3bmVyL00KeWF3cy9NCnlkCnllL1JTVAp5ZWEvU00KeWVhaC9NCnllYWhzCnllYXIvTVlTCnllYXJib29rL01TCnllYXJsaW5nL01TCnllYXJsb25nCnllYXJseS9TTQp5ZWFybi9HU0pECnllYXJuaW5nL00KeWVhc3QvU00KeWVhc3R5L1JUCnllZ2cvTVMKeWVsbC9NRFNHCnllbGxvdy9NRFJUR1BTCnllbGxvd2hhbW1lci9TCnllbGxvd2lzaAp5ZWxsb3duZXNzL00KeWVsbG93eQp5ZWxwL01EU0cKeWVuL1NNCnllb21hbi9NCnllb21hbnJ5L00KeWVvbWVuCnllcC9TTQp5ZXMvTVMKeWVzaGl2YS9TTQp5ZXNzZWQKeWVzc2luZwp5ZXN0ZXJkYXkvTVMKeWVzdGVyeWVhci9NCnlldAp5ZXRpL01TCnlldy9TTQp5aWQvUwp5aWVsZC9KU0dNRAp5aWtlcwp5aW4vTQp5aXAvU00KeWlwZQp5aXBwZWQKeWlwcGVlCnlpcHBpbmcKeW8KeW9iL1MKeW9iYm8vUwp5b2RlbC9TTURSWkcKeW9kZWxlci9NCnlvZ2EvTQp5b2dpL01TCnlvZ2ljCnlvZ3VydC9TTQp5b2tlJ3MKeW9rZS9VR0RTCnlva2VsL1NNCnlvbGsvTURTCnlvbgp5b25kZXIKeW9ua3MKeW9yZS9NCnlvdSdkCnlvdSdsbAp5b3UncmUKeW91J3ZlCnlvdS9TTUgKeW91bmcvVE1SCnlvdW5naXNoCnlvdW5nc3Rlci9NUwp5b3VyL1MKeW91cnNlbGYKeW91cnNlbHZlcwp5b3V0aC9NCnlvdXRoZnVsL1lQCnlvdXRoZnVsbmVzcy9NCnlvdXRocwp5b3cKeW93bC9NRFNHCnlyL1MKeXR0ZXJiaXVtL00KeXR0cml1bS9NCnl1YW4vTQp5dWNjYS9TTQp5dWNrCnl1Y2t5L1RSCnl1ay9TTQp5dWtrZWQKeXVra2luZwp5dWtreQp5dWxlL00KeXVsZXRpZGUvTQp5dW0KeXVtbXkvVFIKeXVwL1NNCnl1cHBpZS9NUwp5dXBwaWZ5L0dEUwp5dXJ0L01TCnovRE5YVEdKCnphbmluZXNzL00KemFueS9SU01QVAp6YXAvU00KemFwcGVkCnphcHBlci9NUwp6YXBwaW5nCnphcHB5CnplYWwvTQp6ZWFsb3QvTVMKemVhbG90cnkvTQp6ZWFsb3VzL1lQCnplYWxvdXNuZXNzL00KemVicmEvU00KemVidS9NUwp6ZWQvU00KemVpdGdlaXN0L1NNCnplbml0aC9NCnplbml0aHMKemVubmVkCnplb2xpdGUvUwp6ZXBoeXIvTVMKemVwcGVsaW4vTVMKemVyby9NREhTRwp6ZXJvZXMKemVzdC9NUwp6ZXN0ZnVsL1lQCnplc3RmdWxuZXNzL00KemVzdHkvUlQKemV0YS9NUwp6aWd6YWcvU00KemlnemFnZ2VkCnppZ3phZ2dpbmcKemlsY2gvTQp6aWxsaW9uL01TCnppbmMvTVMKemluY2tlZAp6aW5ja2luZwp6aW5lL1MKemluZmFuZGVsL00KemluZy9NRFJaRwp6aW5nZXIvTQp6aW5neS9SVAp6aW5uaWEvTVMKemlwJ3MKemlwL1VTCnppcHBlZC9VCnppcHBlci9NREdTCnppcHBpbmcvVQp6aXBweS9UUgp6aXJjb24vTVMKemlyY29uaXVtL00Keml0L1NNCnppdGhlci9NUwp6bG90eS9TTQp6bG90eXMKem9kaWFjL01TCnpvZGlhY2FsCnpvbWJpZS9NUwp6b25hbC9ZCnpvbmUncwp6b25lL0FHRFMKem9uaW5nL00Kem9ua2VkCnpvby9TTQp6b29rZWVwZXIvU00Kem9vbG9naWNhbC9ZCnpvb2xvZ2lzdC9TTQp6b29sb2d5L00Kem9vbS9NRFNHCnpvb3BoeXRlL1NNCnpvb3BoeXRpYwp6b29wbGFua3Rvbgp6b3JjaAp6b3N0ZXIKem91bmRzCnp1Y2NoaW5pL01TCnp3aWViYWNrL00KenlkZWNvL00Kenlnb3RlL1NNCnp5Z290aWMKenltdXJneS9NCg==
VGFrZW4gZnJvbSBodHRwczovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL2xpYnJlb2ZmaWNlL2RpY3Rpb25hcmllcy8uCg==
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+CiAgICA8eHM6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIi8+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0ib3Ryc19jb25maWciPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2V0dGluZyIgdHlwZT0iU2V0dGluZ1R5cGUiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZlcnNpb24iIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOnN0cmluZyIvPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluaXQiIHVzZT0icmVxdWlyZWQiPgogICAgICAgICAgICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgICAgICAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iRnJhbWV3b3JrIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQXBwbGljYXRpb24iLz4KICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJDb25maWciLz4KICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJDaGFuZ2VzIi8+CiAgICAgICAgICAgICAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgICAgICAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgICAgICAgICAgPC94czphdHRyaWJ1dGU+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJCb29sZWFuQXR0cmlidXRlIj4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSIwIi8+CiAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iMSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICA8L3hzOnNpbXBsZVR5cGU+CgogICAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlNldHRpbmdUeXBlIj4KICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkRlc2NyaXB0aW9uIj4KICAgICAgICAgICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgICAgICAgICA8eHM6c2ltcGxlQ29udGVudD4KICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUcmFuc2xhdGFibGUiIHVzZT0ib3B0aW9uYWwiIHR5cGU9IkJvb2xlYW5BdHRyaWJ1dGUiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgICAgICAgICAgPC94czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPC94czplbGVtZW50PgogICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOYXZpZ2F0aW9uIiB0eXBlPSJ4czpzdHJpbmciIC8+CiAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlZhbHVlIiAgICAgIHR5cGU9IlZhbHVlVHlwZSIvPgogICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJOYW1lIiB1c2U9InJlcXVpcmVkIj4KICAgICAgICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgICAgICAgICA8eHM6bWF4TGVuZ3RoIHZhbHVlPSIyNTAiIC8+CiAgICAgICAgICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICAgICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICAgICAgPC94czphdHRyaWJ1dGU+CgogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVmFsaWQiICAgICAgICAgICAgICAgICAgICB1c2U9InJlcXVpcmVkIiB0eXBlPSJCb29sZWFuQXR0cmlidXRlIi8+CiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJSZXF1aXJlZCIgICAgICAgICAgICAgICAgIHVzZT0icmVxdWlyZWQiIHR5cGU9IkJvb2xlYW5BdHRyaWJ1dGUiIC8+CiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJSZWFkT25seSIgICAgICAgICAgICAgICAgIHVzZT0ib3B0aW9uYWwiIHR5cGU9IkJvb2xlYW5BdHRyaWJ1dGUiIC8+CiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJJbnZpc2libGUiICAgICAgICAgICAgICAgIHVzZT0ib3B0aW9uYWwiIHR5cGU9IkJvb2xlYW5BdHRyaWJ1dGUiIC8+CiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJVc2VyTW9kaWZpY2F0aW9uUG9zc2libGUiIHVzZT0ib3B0aW9uYWwiIHR5cGU9IkJvb2xlYW5BdHRyaWJ1dGUiIC8+CiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJVc2VyTW9kaWZpY2F0aW9uQWN0aXZlIiAgIHVzZT0ib3B0aW9uYWwiIHR5cGU9IkJvb2xlYW5BdHRyaWJ1dGUiIC8+CgogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iQ29uZmlnTGV2ZWwiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOmludCIvPgoKICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlVzZXJQcmVmZXJlbmNlc0dyb3VwIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czpzdHJpbmciLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CgogICAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlZhbHVlVHlwZSI+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSXRlbSIgIHR5cGU9Ikl0ZW1UeXBlIi8+CiAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikhhc2giICB0eXBlPSJIYXNoVHlwZSIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBcnJheSIgdHlwZT0iQXJyYXlUeXBlIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgoKICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSIgbmFtZT0iSXRlbVR5cGUiPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkFycmF5IiB0eXBlPSJBcnJheVR5cGUiLz4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSGFzaCIgIHR5cGU9Ikhhc2hUeXBlIi8+CiAgICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikl0ZW0iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHR5cGU9Ikl0ZW1UeXBlIi8+CiAgICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUcmFuc2xhdGFibGUiIHR5cGU9IkJvb2xlYW5BdHRyaWJ1dGUiIHVzZT0ib3B0aW9uYWwiIC8+CiAgICAgICAgPCEtLSBhbGxvdyBmb3IgYXJiaXRyYXJ5IHVuc3BlY2lmaWVkIHZhbHVlLXR5cGUgc3BlY2lmaWMgYXR0cmlidXRlcyAtLT4KICAgICAgICA8eHM6YW55QXR0cmlidXRlIHByb2Nlc3NDb250ZW50cz0ic2tpcCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KCiAgICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iSGFzaFR5cGUiPgogICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGVmYXVsdEl0ZW0iIHR5cGU9Ikl0ZW1UeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJdGVtIiB0eXBlPSJJdGVtVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJNaW5JdGVtcyIgdHlwZT0ieHM6aW50IiB1c2U9Im9wdGlvbmFsIiAvPgogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTWF4SXRlbXMiIHR5cGU9InhzOmludCIgdXNlPSJvcHRpb25hbCIgLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CgogICAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkFycmF5VHlwZSI+CiAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEZWZhdWx0SXRlbSIgdHlwZT0iRGVmYXVsdEl0ZW1UeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJdGVtIiB0eXBlPSJJdGVtVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJNaW5JdGVtcyIgdHlwZT0ieHM6aW50IiB1c2U9Im9wdGlvbmFsIiAvPgogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTWF4SXRlbXMiIHR5cGU9InhzOmludCIgdXNlPSJvcHRpb25hbCIgLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIiBuYW1lPSJEZWZhdWx0SXRlbVR5cGUiPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkFycmF5IiB0eXBlPSJEZWZhdWx0QXJyYXlUeXBlIi8+CiAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikhhc2giICB0eXBlPSJEZWZhdWx0SGFzaFR5cGUiLz4KICAgICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSXRlbSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgdHlwZT0iSXRlbVR5cGUiLz4KICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlRyYW5zbGF0YWJsZSIgdHlwZT0iQm9vbGVhbkF0dHJpYnV0ZSIgdXNlPSJvcHRpb25hbCIgLz4KICAgICAgICA8IS0tIGFsbG93IGZvciBhcmJpdHJhcnkgdW5zcGVjaWZpZWQgdmFsdWUtdHlwZSBzcGVjaWZpYyBhdHRyaWJ1dGVzIC0tPgogICAgICAgIDx4czphbnlBdHRyaWJ1dGUgcHJvY2Vzc0NvbnRlbnRzPSJza2lwIi8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgoKICAgIDwhLS0gSGFzaGVzIGluIERlZmF1bHRJdGVtcyBjYW4gb25seSBjb250YWluIG90aGVyIERlZmF1bHRJdGVtcywgbm90IHJlYWwgSXRlbXMuIC0tPgogICAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkRlZmF1bHRIYXNoVHlwZSI+CiAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEZWZhdWx0SXRlbSIgdHlwZT0iRGVmYXVsdEl0ZW1UeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIvPgogICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJNaW5JdGVtcyIgdHlwZT0ieHM6aW50IiB1c2U9Im9wdGlvbmFsIiAvPgogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTWF4SXRlbXMiIHR5cGU9InhzOmludCIgdXNlPSJvcHRpb25hbCIgLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CgogICAgPCEtLSBBcnJheXMgaW4gRGVmYXVsdEl0ZW1zIGNhbiBvbmx5IGNvbnRhaW4gb3RoZXIgRGVmYXVsdEl0ZW1zLCBub3QgcmVhbCBJdGVtcy4gLS0+CiAgICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRGVmYXVsdEFycmF5VHlwZSI+CiAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEZWZhdWx0SXRlbSIgdHlwZT0iRGVmYXVsdEl0ZW1UeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIvPgogICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJNaW5JdGVtcyIgdHlwZT0ieHM6aW50IiB1c2U9Im9wdGlvbmFsIiAvPgogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTWF4SXRlbXMiIHR5cGU9InhzOmludCIgdXNlPSJvcHRpb25hbCIgLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CjwveHM6c2NoZW1hPgo=
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+CiAgICA8eHM6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIi8+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0ib3Ryc19jb25maWciPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iR2l0IiBtaW5PY2N1cnM9IjAiIHR5cGU9InhzOnN0cmluZyIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iQ29uZmlnSXRlbSIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmVyc2lvbiIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6c3RyaW5nIi8+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5pdCIgdXNlPSJyZXF1aXJlZCI+CiAgICAgICAgICAgICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICAgICAgICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJGcmFtZXdvcmsiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJBcHBsaWNhdGlvbiIvPgogICAgICAgICAgICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkNvbmZpZyIvPgogICAgICAgICAgICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkNoYW5nZXMiLz4KICAgICAgICAgICAgICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgICAgICAgICA8L3hzOmF0dHJpYnV0ZT4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IkNvbmZpZ0l0ZW0iPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGVzY3JpcHRpb24iIHR5cGU9IlRyYW5zbGF0YWJsZVN0cmluZyIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikdyb3VwIiB0eXBlPSJ4czpzdHJpbmciIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdWJHcm91cCIgdHlwZT0ieHM6c3RyaW5nIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVmFsaWRhdGVNb2R1bGUiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJTZXR0aW5nIi8+CiAgICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTmFtZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6c3RyaW5nIi8+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVmFsaWQiIHVzZT0icmVxdWlyZWQiPgogICAgICAgICAgICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgICAgICAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iMCIvPgogICAgICAgICAgICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IjEiLz4KICAgICAgICAgICAgICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgICAgICAgICA8L3hzOmF0dHJpYnV0ZT4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJSZXF1aXJlZCIgdXNlPSJyZXF1aXJlZCI+CiAgICAgICAgICAgICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICAgICAgICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSIwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iMSIvPgogICAgICAgICAgICAgICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICAgICAgICAgIDwveHM6YXR0cmlidXRlPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IkNvbmZpZ0xldmVsIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czppbnQiLz4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJUcmFuc2xhdGFibGVTdHJpbmciPgogICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlRyYW5zbGF0YWJsZSIgdXNlPSJvcHRpb25hbCI+CiAgICAgICAgICAgICAgICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSIwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IjEiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICAgICAgICAgICAgICA8L3hzOmF0dHJpYnV0ZT4KICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgPC94czpzaW1wbGVDb250ZW50PgogICAgPC94czpjb21wbGV4VHlwZT4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXR0aW5nIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlN0cmluZyIvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJPcHRpb24iLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iSGFzaCIvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJBcnJheSIvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJUZXh0QXJlYSIvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJUaW1lVmFjYXRpb25EYXlzIi8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlRpbWVWYWNhdGlvbkRheXNPbmVUaW1lIi8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlRpbWVXb3JraW5nSG91cnMiLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iRnJvbnRlbmRNb2R1bGVSZWciLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iRGF0ZVRpbWUiLz4KICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdHJpbmciPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IlRyYW5zbGF0YWJsZVN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJSZWdleCIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6YW55U2ltcGxlVHlwZSIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6YW55U2ltcGxlVHlwZSIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iQ2hlY2siIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOmFueVNpbXBsZVR5cGUiLz4KICAgICAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJPcHRpb24iPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSXRlbSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICA8eHM6c2ltcGxlQ29udGVudD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0iVHJhbnNsYXRhYmxlU3RyaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IktleSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6YW55U2ltcGxlVHlwZSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICAgICAgICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICAgICAgPC94czplbGVtZW50PgogICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlNlbGVjdGVkSUQiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOmFueVNpbXBsZVR5cGUiLz4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJMb2NhdGlvbiIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6YW55U2ltcGxlVHlwZSIvPgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iSGFzaCI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJdGVtIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgICAgICAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICAgICAgICAgICAgICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Ikhhc2giLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iQXJyYXkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iS2V5IiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czphbnlTaW1wbGVUeXBlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHJhbnNsYXRhYmxlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czphbnlTaW1wbGVUeXBlIi8+CiAgICAgICAgICAgICAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgICAgIDwveHM6ZWxlbWVudD4KICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJTZWxlY3RlZElEIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czphbnlTaW1wbGVUeXBlIi8+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJBcnJheSI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJdGVtIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgICAgICAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlRyYW5zbGF0YWJsZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6YW55U2ltcGxlVHlwZSIvPgogICAgICAgICAgICAgICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgICAgICA8L3hzOmVsZW1lbnQ+CiAgICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iU2VsZWN0ZWRJRCIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6YW55U2ltcGxlVHlwZSIvPgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iVGV4dEFyZWEiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUcmFuc2xhdGFibGUiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOmFueVNpbXBsZVR5cGUiLz4KICAgICAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJUaW1lVmFjYXRpb25EYXlzIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikl0ZW0iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgICAgICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJNb250aCIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6YW55U2ltcGxlVHlwZSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iRGF5IiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czphbnlTaW1wbGVUeXBlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUcmFuc2xhdGFibGUiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOmFueVNpbXBsZVR5cGUiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgICAgIDwveHM6ZWxlbWVudD4KICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IlRpbWVWYWNhdGlvbkRheXNPbmVUaW1lIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikl0ZW0iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgICAgICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJZZWFyIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czphbnlTaW1wbGVUeXBlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJNb250aCIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6YW55U2ltcGxlVHlwZSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iRGF5IiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czphbnlTaW1wbGVUeXBlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUcmFuc2xhdGFibGUiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOmFueVNpbXBsZVR5cGUiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgICAgIDwveHM6ZWxlbWVudD4KICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IlRpbWVXb3JraW5nSG91cnMiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF5IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDx4czpzZXF1ZW5jZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkhvdXIiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHR5cGU9InhzOmludGVnZXIiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJOYW1lIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czphbnlTaW1wbGVUeXBlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHJhbnNsYXRhYmxlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czphbnlTaW1wbGVUeXBlIi8+CiAgICAgICAgICAgICAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgICAgIDwveHM6ZWxlbWVudD4KICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGVUaW1lIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJUcmFuc2xhdGFibGVTdHJpbmciPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6YW55U2ltcGxlVHlwZSIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IkZyb250ZW5kTW9kdWxlUmVnIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iR3JvdXBSbyIgdHlwZT0ieHM6c3RyaW5nIiAvPgogICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikdyb3VwIiB0eXBlPSJ4czpzdHJpbmciLz4KICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEZXNjcmlwdGlvbiIgdHlwZT0iVHJhbnNsYXRhYmxlU3RyaW5nIiAvPgogICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlRpdGxlIiB0eXBlPSJUcmFuc2xhdGFibGVTdHJpbmciLz4KICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOYXZCYXJOYW1lIiB0eXBlPSJ4czpzdHJpbmciLz4KICAgICAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOYXZCYXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjEiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iR3JvdXBSbyIgdHlwZT0ieHM6c3RyaW5nIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJHcm91cCIgdHlwZT0ieHM6c3RyaW5nIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkRlc2NyaXB0aW9uIiB0eXBlPSJUcmFuc2xhdGFibGVTdHJpbmciIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5hbWUiIHR5cGU9IlRyYW5zbGF0YWJsZVN0cmluZyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTGluayIgdHlwZT0ieHM6c3RyaW5nIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMaW5rT3B0aW9uIiB0eXBlPSJ4czpzdHJpbmciIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5hdkJhciIgdHlwZT0ieHM6c3RyaW5nIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlR5cGUiIHR5cGU9InhzOnN0cmluZyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJCbG9jayIgdHlwZT0ieHM6c3RyaW5nIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkFjY2Vzc0tleSIgdHlwZT0ieHM6c3RyaW5nIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlByaW8iIHR5cGU9InhzOnN0cmluZyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgICAgICAgICA8L3hzOmVsZW1lbnQ+CiAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTmF2QmFyTW9kdWxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikdyb3VwUm8iIHR5cGU9InhzOnN0cmluZyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iR3JvdXAiIHR5cGU9InhzOnN0cmluZyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEZXNjcmlwdGlvbiIgdHlwZT0iVHJhbnNsYXRhYmxlU3RyaW5nIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOYW1lIiB0eXBlPSJUcmFuc2xhdGFibGVTdHJpbmciIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1vZHVsZSIgdHlwZT0ieHM6c3RyaW5nIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkJsb2NrIiB0eXBlPSJ4czpzdHJpbmciLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUHJpbyIgdHlwZT0ieHM6c3RyaW5nIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICAgICAgICAgIDwveHM6ZWxlbWVudD4KICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMb2FkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkNTUyIgdHlwZT0ieHM6c3RyaW5nIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkNTU19JRTgiIHR5cGU9InhzOnN0cmluZyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ1NTX0lFNyIgdHlwZT0ieHM6c3RyaW5nIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJKYXZhU2NyaXB0IiB0eXBlPSJ4czpzdHJpbmciIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICAgICAgICAgIDwveHM6ZWxlbWVudD4KICAgICAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CjwveHM6c2NoZW1hPgo=
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+CiAgICA8eHM6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIi8+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0ib3Ryc19jb25maWciPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iR2l0IiBtaW5PY2N1cnM9IjAiIHR5cGU9InhzOnN0cmluZyIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iQ29uZmlnSXRlbSIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmVyc2lvbiIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6c3RyaW5nIi8+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5pdCIgdXNlPSJyZXF1aXJlZCI+CiAgICAgICAgICAgICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICAgICAgICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJGcmFtZXdvcmsiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJBcHBsaWNhdGlvbiIvPgogICAgICAgICAgICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkNvbmZpZyIvPgogICAgICAgICAgICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkNoYW5nZXMiLz4KICAgICAgICAgICAgICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgICAgICAgICA8L3hzOmF0dHJpYnV0ZT4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IkNvbmZpZ0l0ZW0iPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGVzY3JpcHRpb24iIHR5cGU9IlRyYW5zbGF0YWJsZVN0cmluZyIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikdyb3VwIiB0eXBlPSJ4czpzdHJpbmciIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdWJHcm91cCIgdHlwZT0ieHM6c3RyaW5nIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVmFsaWRhdGVNb2R1bGUiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJTZXR0aW5nIi8+CiAgICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTmFtZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0iU2V0dGluZ05hbWUiLz4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJWYWxpZCIgdXNlPSJyZXF1aXJlZCI+CiAgICAgICAgICAgICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICAgICAgICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSIwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iMSIvPgogICAgICAgICAgICAgICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICAgICAgICAgIDwveHM6YXR0cmlidXRlPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlJlcXVpcmVkIiB1c2U9InJlcXVpcmVkIj4KICAgICAgICAgICAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgICAgICAgICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IjAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSIxIi8+CiAgICAgICAgICAgICAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgICAgICAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgICAgICAgICAgPC94czphdHRyaWJ1dGU+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iUmVhZE9ubHkiIHVzZT0ib3B0aW9uYWwiPgogICAgICAgICAgICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgICAgICAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iMCIvPgogICAgICAgICAgICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IjEiLz4KICAgICAgICAgICAgICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgICAgICAgICA8L3hzOmF0dHJpYnV0ZT4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJDb25maWdMZXZlbCIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6aW50Ii8+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iVHJhbnNsYXRhYmxlU3RyaW5nIj4KICAgICAgICA8eHM6c2ltcGxlQ29udGVudD4KICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUcmFuc2xhdGFibGUiIHVzZT0ib3B0aW9uYWwiPgogICAgICAgICAgICAgICAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iMCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSIxIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgICAgICAgICAgICAgPC94czphdHRyaWJ1dGU+CiAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgIDwveHM6Y29tcGxleFR5cGU+CgogICAgPHhzOnNpbXBsZVR5cGUgbmFtZT0iU2V0dGluZ05hbWUiPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICA8eHM6bWF4TGVuZ3RoIHZhbHVlPSIyNTAiIC8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgIDwveHM6c2ltcGxlVHlwZT4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXR0aW5nIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlN0cmluZyIvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJPcHRpb24iLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iSGFzaCIvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJBcnJheSIvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJUZXh0QXJlYSIvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJUaW1lVmFjYXRpb25EYXlzIi8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlRpbWVWYWNhdGlvbkRheXNPbmVUaW1lIi8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlRpbWVXb3JraW5nSG91cnMiLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iRnJvbnRlbmRNb2R1bGVSZWciLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iRGF0ZVRpbWUiLz4KICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdHJpbmciPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IlRyYW5zbGF0YWJsZVN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJSZWdleCIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6YW55U2ltcGxlVHlwZSIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6YW55U2ltcGxlVHlwZSIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iQ2hlY2siIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOmFueVNpbXBsZVR5cGUiLz4KICAgICAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJPcHRpb24iPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSXRlbSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICA8eHM6c2ltcGxlQ29udGVudD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0iVHJhbnNsYXRhYmxlU3RyaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IktleSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6YW55U2ltcGxlVHlwZSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICAgICAgICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICAgICAgPC94czplbGVtZW50PgogICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlNlbGVjdGVkSUQiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOmFueVNpbXBsZVR5cGUiLz4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJMb2NhdGlvbiIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6YW55U2ltcGxlVHlwZSIvPgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iSGFzaCI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJdGVtIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgICAgICAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICAgICAgICAgICAgICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Ikhhc2giLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iQXJyYXkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iS2V5IiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czphbnlTaW1wbGVUeXBlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHJhbnNsYXRhYmxlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czphbnlTaW1wbGVUeXBlIi8+CiAgICAgICAgICAgICAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgICAgIDwveHM6ZWxlbWVudD4KICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJTZWxlY3RlZElEIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czphbnlTaW1wbGVUeXBlIi8+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJBcnJheSI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJdGVtIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgICAgICAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlRyYW5zbGF0YWJsZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6YW55U2ltcGxlVHlwZSIvPgogICAgICAgICAgICAgICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgICAgICA8L3hzOmVsZW1lbnQ+CiAgICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iU2VsZWN0ZWRJRCIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6YW55U2ltcGxlVHlwZSIvPgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iVGV4dEFyZWEiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUcmFuc2xhdGFibGUiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOmFueVNpbXBsZVR5cGUiLz4KICAgICAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJUaW1lVmFjYXRpb25EYXlzIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikl0ZW0iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgICAgICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJNb250aCIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6YW55U2ltcGxlVHlwZSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iRGF5IiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czphbnlTaW1wbGVUeXBlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUcmFuc2xhdGFibGUiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOmFueVNpbXBsZVR5cGUiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgICAgIDwveHM6ZWxlbWVudD4KICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IlRpbWVWYWNhdGlvbkRheXNPbmVUaW1lIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikl0ZW0iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgICAgICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJZZWFyIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czphbnlTaW1wbGVUeXBlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJNb250aCIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6YW55U2ltcGxlVHlwZSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iRGF5IiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czphbnlTaW1wbGVUeXBlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUcmFuc2xhdGFibGUiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOmFueVNpbXBsZVR5cGUiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgICAgIDwveHM6ZWxlbWVudD4KICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IlRpbWVXb3JraW5nSG91cnMiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF5IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDx4czpzZXF1ZW5jZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkhvdXIiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHR5cGU9InhzOmludGVnZXIiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJOYW1lIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czphbnlTaW1wbGVUeXBlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHJhbnNsYXRhYmxlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czphbnlTaW1wbGVUeXBlIi8+CiAgICAgICAgICAgICAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgICAgIDwveHM6ZWxlbWVudD4KICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGVUaW1lIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlllYXIiIG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSIxIi8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNb250aCIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9IjEiLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkRheSIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9IjEiLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkhvdXIiIG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSIxIi8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNaW51dGUiIG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSIxIi8+CiAgICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6YW55U2ltcGxlVHlwZSIvPgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iRnJvbnRlbmRNb2R1bGVSZWciPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJHcm91cFJvIiB0eXBlPSJ4czpzdHJpbmciIC8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iR3JvdXAiIHR5cGU9InhzOnN0cmluZyIvPgogICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkRlc2NyaXB0aW9uIiB0eXBlPSJUcmFuc2xhdGFibGVTdHJpbmciIC8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVGl0bGUiIHR5cGU9IlRyYW5zbGF0YWJsZVN0cmluZyIvPgogICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5hdkJhck5hbWUiIHR5cGU9InhzOnN0cmluZyIvPgogICAgICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5hdkJhciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJHcm91cFJvIiB0eXBlPSJ4czpzdHJpbmciIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikdyb3VwIiB0eXBlPSJ4czpzdHJpbmciLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGVzY3JpcHRpb24iIHR5cGU9IlRyYW5zbGF0YWJsZVN0cmluZyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTmFtZSIgdHlwZT0iVHJhbnNsYXRhYmxlU3RyaW5nIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMaW5rIiB0eXBlPSJ4czpzdHJpbmciIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkxpbmtPcHRpb24iIHR5cGU9InhzOnN0cmluZyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTmF2QmFyIiB0eXBlPSJ4czpzdHJpbmciLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVHlwZSIgdHlwZT0ieHM6c3RyaW5nIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkJsb2NrIiB0eXBlPSJ4czpzdHJpbmciLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQWNjZXNzS2V5IiB0eXBlPSJ4czpzdHJpbmciLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUHJpbyIgdHlwZT0ieHM6c3RyaW5nIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICAgICAgICAgIDwveHM6ZWxlbWVudD4KICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOYXZCYXJNb2R1bGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjEiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iR3JvdXBSbyIgdHlwZT0ieHM6c3RyaW5nIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJHcm91cCIgdHlwZT0ieHM6c3RyaW5nIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkRlc2NyaXB0aW9uIiB0eXBlPSJUcmFuc2xhdGFibGVTdHJpbmciIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5hbWUiIHR5cGU9IlRyYW5zbGF0YWJsZVN0cmluZyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTW9kdWxlIiB0eXBlPSJ4czpzdHJpbmciLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQmxvY2siIHR5cGU9InhzOnN0cmluZyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQcmlvIiB0eXBlPSJ4czpzdHJpbmciLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSWNvbkJpZyIgdHlwZT0ieHM6c3RyaW5nIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikljb25TbWFsbCIgdHlwZT0ieHM6c3RyaW5nIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICAgICAgICAgIDwveHM6ZWxlbWVudD4KICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMb2FkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkNTUyIgdHlwZT0ieHM6c3RyaW5nIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkphdmFTY3JpcHQiIHR5cGU9InhzOnN0cmluZyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgICAgICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgICAgICAgICAgPC94czplbGVtZW50PgogICAgICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KPC94czpzY2hlbWE+Cg==
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+CiAgICA8eHM6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIi8+CgogICAgPCEtLSBPVFJTIHNjaGVtYSBmaWxlcyAtLT4KICAgIDx4czplbGVtZW50IG5hbWU9ImRhdGFiYXNlIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJUYWJsZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iVGFibGVDcmVhdGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlRhYmxlQWx0ZXIiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlRhYmxlRHJvcCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iSW5zZXJ0IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJOYW1lIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPCEtLSBPVFJTIHBhY2thZ2UgZmlsZXMgKC5zb3BtKSAtLT4KICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFiYXNlSW5zdGFsbCI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iVGFibGVDcmVhdGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlRhYmxlQWx0ZXIiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlRhYmxlRHJvcCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iSW5zZXJ0IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUeXBlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IklmUGFja2FnZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJJZk5vdFBhY2thZ2UiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFiYXNlVW5pbnN0YWxsIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJUYWJsZUNyZWF0ZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iVGFibGVBbHRlciIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iVGFibGVEcm9wIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJJbnNlcnQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlR5cGUiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iSWZQYWNrYWdlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IklmTm90UGFja2FnZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgogICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YWJhc2VSZWluc3RhbGwiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlRhYmxlQ3JlYXRlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJUYWJsZUFsdGVyIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJUYWJsZURyb3AiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Ikluc2VydCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJJZlBhY2thZ2UiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iSWZOb3RQYWNrYWdlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CiAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhYmFzZVVwZ3JhZGUiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlRhYmxlQ3JlYXRlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJUYWJsZUFsdGVyIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJUYWJsZURyb3AiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Ikluc2VydCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJJZlBhY2thZ2UiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iSWZOb3RQYWNrYWdlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPCEtLSBPcmFjbGUgYWxsb3dzIHRhYmxlIG5hbWVzIHVwIHRvIDMwIGNoYXJhY3RlcnMgb25seS4gLS0+CiAgICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJUYWJsZU5hbWUiPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6bWF4TGVuZ3RoIHZhbHVlPSIzMCIgLz4KICAgICAgICAgIDx4czpwYXR0ZXJuIHZhbHVlPSJbYS16QS1aMC05Xy1dKyIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICA8L3hzOnNpbXBsZVR5cGU+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iVGFibGUiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkNvbHVtbiIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkZvcmVpZ25LZXkiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkluZGV4IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJVbmlxdWUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Ik5hbWUiIHVzZT0ib3B0aW9uYWwiIHR5cGU9IlRhYmxlTmFtZSIvPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlZlcnNpb24iIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJUYWJsZUNyZWF0ZSI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iQ29sdW1uIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iRm9yZWlnbktleSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iSW5kZXgiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlVuaXF1ZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTmFtZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0iVGFibGVOYW1lIi8+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVmVyc2lvbiIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IlRhYmxlQWx0ZXIiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkNvbHVtbkFkZCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iQ29sdW1uQ2hhbmdlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJDb2x1bW5Ecm9wIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJGb3JlaWduS2V5Q3JlYXRlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJGb3JlaWduS2V5RHJvcCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iSW5kZXhDcmVhdGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkluZGV4RHJvcCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iVW5pcXVlQ3JlYXRlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJVbmlxdWVEcm9wIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJOYW1lIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJUYWJsZU5hbWUiLz4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJOYW1lT2xkIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Ik5hbWVOZXciIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVmVyc2lvbiIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IlRhYmxlRHJvcCI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2ltcGxlQ29udGVudD4KICAgICAgICAgICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Ik5hbWUiIHVzZT0icmVxdWlyZWQiIHR5cGU9IlRhYmxlTmFtZSIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVmVyc2lvbiIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8IS0tIENvbHVtbnMgLS0+CgogICAgPCEtLSBPcmFjbGUgYWxsb3dzIGNvbHVtbiBuYW1lcyB1cCB0byAzMCBjaGFyYWN0ZXJzIG9ubHkuIC0tPgogICAgPHhzOnNpbXBsZVR5cGUgbmFtZT0iQ29sdW1uTmFtZSI+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czptYXhMZW5ndGggdmFsdWU9IjMwIiAvPgogICAgICAgICAgPHhzOnBhdHRlcm4gdmFsdWU9IlthLXpBLVowLTlfLV0rIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgIDwveHM6c2ltcGxlVHlwZT4KCiAgICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJDb2x1bW5UeXBlIj4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJEQVRFIi8+CiAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iU01BTExJTlQiLz4KICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJCSUdJTlQiLz4KICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJJTlRFR0VSIi8+CiAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iREVDSU1BTCIvPgogICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlZBUkNIQVIiLz4KICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJMT05HQkxPQiIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICA8L3hzOnNpbXBsZVR5cGU+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29sdW1uIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0iQ29sdW1uVHlwZSIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iQXV0b0luY3JlbWVudCIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Ik5hbWUiIHVzZT0icmVxdWlyZWQiIHR5cGU9IkNvbHVtbk5hbWUiLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlJlcXVpcmVkIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iU2l6ZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlByaW1hcnlLZXkiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJEZWZhdWx0IiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgogICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29sdW1uQWRkIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0iQ29sdW1uVHlwZSIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iQXV0b0luY3JlbWVudCIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Ik5hbWUiIHVzZT0icmVxdWlyZWQiIHR5cGU9IkNvbHVtbk5hbWUiLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlJlcXVpcmVkIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iU2l6ZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlByaW1hcnlLZXkiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJEZWZhdWx0IiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgogICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29sdW1uQ2hhbmdlIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0iQ29sdW1uVHlwZSIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iQXV0b0luY3JlbWVudCIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlByaW1hcnlLZXkiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJEZWZhdWx0IiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTmFtZU9sZCIgdXNlPSJvcHRpb25hbCIgdHlwZT0iQ29sdW1uTmFtZSIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTmFtZU5ldyIgdXNlPSJvcHRpb25hbCIgdHlwZT0iQ29sdW1uTmFtZSIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iUmVxdWlyZWQiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJTaXplIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgogICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29sdW1uRHJvcCI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Ik5hbWUiIHVzZT0icmVxdWlyZWQiIHR5cGU9IkNvbHVtbk5hbWUiLz4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDwhLS0gRm9yZWlnbiBLZXlzIC0tPgoKICAgIDx4czplbGVtZW50IG5hbWU9IkZvcmVpZ25LZXkiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJSZWZlcmVuY2UiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IkZvcmVpZ25UYWJsZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0iVGFibGVOYW1lIi8+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJGb3JlaWduS2V5Q3JlYXRlIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iUmVmZXJlbmNlIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJGb3JlaWduVGFibGUiIHVzZT0icmVxdWlyZWQiIHR5cGU9IlRhYmxlTmFtZSIvPgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iRm9yZWlnbktleURyb3AiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJSZWZlcmVuY2UiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IkZvcmVpZ25UYWJsZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0iVGFibGVOYW1lIi8+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZWZlcmVuY2UiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJMb2NhbCIgdXNlPSJyZXF1aXJlZCIgdHlwZT0iQ29sdW1uTmFtZSIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iRm9yZWlnbiIgdXNlPSJyZXF1aXJlZCIgdHlwZT0iQ29sdW1uTmFtZSIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDwhLS0gVW5pcXVlIGNvbHVtbnMgLS0+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iVW5pcXVlIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iVW5pcXVlQ29sdW1uIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJOYW1lIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iVW5pcXVlQ29sdW1uIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTmFtZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0iQ29sdW1uTmFtZSIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IlVuaXF1ZUNyZWF0ZSI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlVuaXF1ZUNvbHVtbiIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTmFtZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IlVuaXF1ZURyb3AiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJOYW1lIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDwhLS0gSW5kZXggY29sdW1ucyAtLT4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJJbmRleCI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkluZGV4Q29sdW1uIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJOYW1lIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iSW5kZXhDb2x1bW4iPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJOYW1lIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJDb2x1bW5OYW1lIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJTaXplIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IkluZGV4Q3JlYXRlIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iSW5kZXhDb2x1bW4iIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Ik5hbWUiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJJbmRleERyb3AiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJOYW1lIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDwhLS0gSW5zZXJ0IHN0dWZmIGludG8gZGF0YWJhc2UgLS0+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iSW5zZXJ0Ij4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iRGF0YSIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVGFibGUiIHVzZT0icmVxdWlyZWQiIHR5cGU9IlRhYmxlTmFtZSIvPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlZlcnNpb24iIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iVHJhbnNsYXRhYmxlU3RyaW5nIj4KICAgICAgICA8eHM6c2ltcGxlQ29udGVudD4KICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUcmFuc2xhdGFibGUiIHVzZT0ib3B0aW9uYWwiPgogICAgICAgICAgICAgICAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iMCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSIxIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgICAgICAgICAgICAgPC94czphdHRyaWJ1dGU+CiAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgIDwveHM6Y29tcGxleFR5cGU+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YSI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2ltcGxlQ29udGVudD4KICAgICAgICAgICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0iVHJhbnNsYXRhYmxlU3RyaW5nIj4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IktleSIgdXNlPSJvcHRpb25hbCIgdHlwZT0iQ29sdW1uTmFtZSIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCjwveHM6c2NoZW1hPgo=
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+CiAgICA8eHM6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIi8+CgogICAgPCEtLSBPVFJTIHNjaGVtYSBmaWxlcyAtLT4KICAgIDx4czplbGVtZW50IG5hbWU9ImRhdGFiYXNlIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJUYWJsZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iVGFibGVDcmVhdGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlRhYmxlQWx0ZXIiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlRhYmxlRHJvcCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iSW5zZXJ0IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJOYW1lIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPCEtLSBPVFJTIHBhY2thZ2UgZmlsZXMgKC5zb3BtKSAtLT4KICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFiYXNlSW5zdGFsbCI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iVGFibGVDcmVhdGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlRhYmxlQWx0ZXIiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlRhYmxlRHJvcCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iSW5zZXJ0IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUeXBlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IklmUGFja2FnZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJJZk5vdFBhY2thZ2UiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFiYXNlVW5pbnN0YWxsIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJUYWJsZUNyZWF0ZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iVGFibGVBbHRlciIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iVGFibGVEcm9wIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJJbnNlcnQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlR5cGUiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iSWZQYWNrYWdlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IklmTm90UGFja2FnZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgogICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YWJhc2VSZWluc3RhbGwiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlRhYmxlQ3JlYXRlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJUYWJsZUFsdGVyIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJUYWJsZURyb3AiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Ikluc2VydCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJJZlBhY2thZ2UiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iSWZOb3RQYWNrYWdlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CiAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhYmFzZVVwZ3JhZGUiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlRhYmxlQ3JlYXRlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJUYWJsZUFsdGVyIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJUYWJsZURyb3AiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Ikluc2VydCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJJZlBhY2thZ2UiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iSWZOb3RQYWNrYWdlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPCEtLSBPcmFjbGUgYWxsb3dzIHRhYmxlIG5hbWVzIHVwIHRvIDMwIGNoYXJhY3RlcnMgb25seS4gLS0+CiAgICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJUYWJsZU5hbWUiPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6bWF4TGVuZ3RoIHZhbHVlPSIzMCIgLz4KICAgICAgICAgIDx4czpwYXR0ZXJuIHZhbHVlPSJbYS16QS1aMC05Xy1dKyIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICA8L3hzOnNpbXBsZVR5cGU+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iVGFibGUiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkNvbHVtbiIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkZvcmVpZ25LZXkiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkluZGV4IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJVbmlxdWUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Ik5hbWUiIHVzZT0ib3B0aW9uYWwiIHR5cGU9IlRhYmxlTmFtZSIvPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlZlcnNpb24iIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJUYWJsZUNyZWF0ZSI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iQ29sdW1uIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iRm9yZWlnbktleSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iSW5kZXgiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlVuaXF1ZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTmFtZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0iVGFibGVOYW1lIi8+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVmVyc2lvbiIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IlRhYmxlQWx0ZXIiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkNvbHVtbkFkZCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iQ29sdW1uQ2hhbmdlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJDb2x1bW5Ecm9wIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJGb3JlaWduS2V5Q3JlYXRlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJGb3JlaWduS2V5RHJvcCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iSW5kZXhDcmVhdGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkluZGV4RHJvcCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iVW5pcXVlQ3JlYXRlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJVbmlxdWVEcm9wIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJOYW1lIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJUYWJsZU5hbWUiLz4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJOYW1lT2xkIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Ik5hbWVOZXciIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVmVyc2lvbiIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IlRhYmxlRHJvcCI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2ltcGxlQ29udGVudD4KICAgICAgICAgICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Ik5hbWUiIHVzZT0icmVxdWlyZWQiIHR5cGU9IlRhYmxlTmFtZSIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVmVyc2lvbiIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8IS0tIENvbHVtbnMgLS0+CgogICAgPCEtLSBPcmFjbGUgYWxsb3dzIGNvbHVtbiBuYW1lcyB1cCB0byAzMCBjaGFyYWN0ZXJzIG9ubHkuIC0tPgogICAgPHhzOnNpbXBsZVR5cGUgbmFtZT0iQ29sdW1uTmFtZSI+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czptYXhMZW5ndGggdmFsdWU9IjMwIiAvPgogICAgICAgICAgPHhzOnBhdHRlcm4gdmFsdWU9IlthLXpBLVowLTlfLV0rIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgIDwveHM6c2ltcGxlVHlwZT4KCiAgICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJDb2x1bW5UeXBlIj4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJEQVRFIi8+CiAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iU01BTExJTlQiLz4KICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJCSUdJTlQiLz4KICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJJTlRFR0VSIi8+CiAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iREVDSU1BTCIvPgogICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlZBUkNIQVIiLz4KICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJMT05HQkxPQiIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICA8L3hzOnNpbXBsZVR5cGU+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29sdW1uIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0iQ29sdW1uVHlwZSIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iQXV0b0luY3JlbWVudCIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Ik5hbWUiIHVzZT0icmVxdWlyZWQiIHR5cGU9IkNvbHVtbk5hbWUiLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlJlcXVpcmVkIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iU2l6ZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlByaW1hcnlLZXkiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJEZWZhdWx0IiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgogICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29sdW1uQWRkIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0iQ29sdW1uVHlwZSIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iQXV0b0luY3JlbWVudCIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Ik5hbWUiIHVzZT0icmVxdWlyZWQiIHR5cGU9IkNvbHVtbk5hbWUiLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlJlcXVpcmVkIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iU2l6ZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlByaW1hcnlLZXkiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJEZWZhdWx0IiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgogICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29sdW1uQ2hhbmdlIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0iQ29sdW1uVHlwZSIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iQXV0b0luY3JlbWVudCIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlByaW1hcnlLZXkiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJEZWZhdWx0IiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTmFtZU9sZCIgdXNlPSJvcHRpb25hbCIgdHlwZT0iQ29sdW1uTmFtZSIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTmFtZU5ldyIgdXNlPSJvcHRpb25hbCIgdHlwZT0iQ29sdW1uTmFtZSIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iUmVxdWlyZWQiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJTaXplIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgogICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29sdW1uRHJvcCI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Ik5hbWUiIHVzZT0icmVxdWlyZWQiIHR5cGU9IkNvbHVtbk5hbWUiLz4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDwhLS0gRm9yZWlnbiBLZXlzIC0tPgoKICAgIDx4czplbGVtZW50IG5hbWU9IkZvcmVpZ25LZXkiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJSZWZlcmVuY2UiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IkZvcmVpZ25UYWJsZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IkZvcmVpZ25LZXlDcmVhdGUiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJSZWZlcmVuY2UiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IkZvcmVpZ25UYWJsZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IkZvcmVpZ25LZXlEcm9wIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iUmVmZXJlbmNlIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJGb3JlaWduVGFibGUiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZWZlcmVuY2UiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJMb2NhbCIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IkZvcmVpZ24iIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgICAgICAgPC94czpzaW1wbGVDb250ZW50PgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPCEtLSBVbmlxdWUgY29sdW1ucyAtLT4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJVbmlxdWUiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJVbmlxdWVDb2x1bW4iIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Ik5hbWUiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJVbmlxdWVDb2x1bW4iPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJOYW1lIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IlVuaXF1ZUNyZWF0ZSI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlVuaXF1ZUNvbHVtbiIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTmFtZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IlVuaXF1ZURyb3AiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJOYW1lIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDwhLS0gSW5kZXggY29sdW1ucyAtLT4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJJbmRleCI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkluZGV4Q29sdW1uIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJOYW1lIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iSW5kZXhDb2x1bW4iPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJOYW1lIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iU2l6ZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJJbmRleENyZWF0ZSI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkluZGV4Q29sdW1uIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJOYW1lIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iSW5kZXhEcm9wIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTmFtZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8IS0tIEluc2VydCBzdHVmZiBpbnRvIGRhdGFiYXNlIC0tPgoKICAgIDx4czplbGVtZW50IG5hbWU9Ikluc2VydCI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkRhdGEiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlR5cGUiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVGFibGUiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVmVyc2lvbiIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJUcmFuc2xhdGFibGVTdHJpbmciPgogICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlRyYW5zbGF0YWJsZSIgdXNlPSJvcHRpb25hbCI+CiAgICAgICAgICAgICAgICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSIwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IjEiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICAgICAgICAgICAgICA8L3hzOmF0dHJpYnV0ZT4KICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgPC94czpzaW1wbGVDb250ZW50PgogICAgPC94czpjb21wbGV4VHlwZT4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJUcmFuc2xhdGFibGVTdHJpbmciPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iS2V5IiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCjwveHM6c2NoZW1hPgo=
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgQ0FMUyBUYWJsZSBNb2RlbCBWNC4zQ1IzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBjYWxzdGJseC5tb2QgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDIgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogIFRoaXMgRFREIGlzIGJhc2VkIG9uIHRoZSBDQUxTIFRhYmxlIE1vZGVsCiAgUFVCTElDICItLy9VU0EtRE9ELy9EVEQgVGFibGUgTW9kZWwgOTUxMDEwLy9FTiIKICAKICAkSWQ6IGNhbHN0Ymx4LmR0ZCx2IDEuMTkgMjAwNC8wMS8yMSAxODo1NDoyMSBud2Fsc2ggRXhwICQKICAKICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5IGFuZCBkaXN0cmlidXRlIHRoZSBEb2NCb29rIERURAogIGFuZCBpdHMgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZQogIGlzIGhlcmVieSBncmFudGVkIGluIHBlcnBldHVpdHksIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodAogIG5vdGljZSBhbmQgdGhpcyBwYXJhZ3JhcGggYXBwZWFyIGluIGFsbCBjb3BpZXMuICBUaGUgY29weXJpZ2h0CiAgaG9sZGVycyBtYWtlIG5vIHJlcHJlc2VudGF0aW9uIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGUgRFREIGZvcgogIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3NlZCBvciBpbXBsaWVkCiAgd2FycmFudHkuCiAgCiAgSWYgeW91IG1vZGlmeSB0aGUgRG9jQm9vayBEVEQgaW4gYW55IHdheSwgZXhjZXB0IGZvciBkZWNsYXJpbmcgYW5kCiAgcmVmZXJlbmNpbmcgYWRkaXRpb25hbCBzZXRzIG9mIGdlbmVyYWwgZW50aXRpZXMgYW5kIGRlY2xhcmluZwogIGFkZGl0aW9uYWwgbm90YXRpb25zLCBsYWJlbCB5b3VyIERURCBhcyBhIHZhcmlhbnQgb2YgRG9jQm9vay4gIFNlZQogIHRoZSBtYWludGVuYW5jZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogIAogIFBsZWFzZSBkaXJlY3QgYWxsIHF1ZXN0aW9ucywgYnVnIHJlcG9ydHMsIG9yIHN1Z2dlc3Rpb25zIGZvcgogIGNoYW5nZXMgdG8gdGhlIGRvY2Jvb2tAbGlzdHMub2FzaXMtb3Blbi5vcmcgbWFpbGluZyBsaXN0LiBGb3IgbW9yZQogIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rLy4KLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIFRoaXMgbW9kdWxlIGNvbnRhaW5zIHRoZSBkZWZpbml0aW9ucyBmb3IgdGhlIENBTFMgVGFibGUgTW9kZWwKICBjb252ZXJ0ZWQgdG8gWE1MLiBJdCBoYXMgYmVlbiBtb2RpZmllZCBzbGlnaHRseSBmb3IgdXNlIGluIHRoZQogIGNvbWJpbmVkIEhUTUwvQ0FMUyBtb2RlbHMgc3VwcG9ydGVkIGJ5IERvY0Jvb2sgVjQuMy4KLS0+CjwhLS0KICBUaGVzZSBkZWZpbml0aW9ucyBhcmUgbm90IGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIHRhYmxlIG1vZGVsLCBidXQgYXJlCiAgdXNlZCBpbiB0aGUgZGVmYXVsdCBDQUxTIHRhYmxlIG1vZGVsIGFuZCBhcmUgdXN1YWxseSBkZWZpbmVkIGVsc2V3aGVyZQogIChhbmQgcHJpb3IgdG8gdGhlIGluY2x1c2lvbiBvZiB0aGlzIHRhYmxlIG1vZHVsZSkgaW4gYSBDQUxTIERURC4KLS0+CjwhLS0KICBubyBpZiB6ZXJvKHMpLAogIHllcyBpZiBhbnkgb3RoZXIgZGlnaXRzIHZhbHVlCi0tPgo8eHM6c2NoZW1hIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiPgogIDx4czppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiIHNjaGVtYUxvY2F0aW9uPSJ4bWwueHNkIi8+CiAgPHhzOnNpbXBsZVR5cGUgbmFtZT0ieWVzb3JubyI+CiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIi8+CiAgPC94czpzaW1wbGVUeXBlPgogIDx4czpncm91cCBuYW1lPSJ0aXRsZXMiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8IS0tIGRlZmF1bHQgZm9yIHVzZSBpbiBlbnRyeSBjb250ZW50IC0tPgogIDwhLS0KICAgIFRoZSBwYXJhbWV0ZXIgZW50aXRpZXMgYXMgZGVmaW5lZCBiZWxvdyBwcm92aWRlIHRoZSBDQUxTIHRhYmxlIG1vZGVsCiAgICBhcyBwdWJsaXNoZWQgKGFzIHBhcnQgb2YgdGhlIEV4YW1wbGUgRFREKSBpbiBNSUwtSERCSy0yODAwMS4KICAgIAogICAgVGhlc2UgZm9sbG93aW5nIGRlY2xhcmF0aW9ucyBwcm92aWRlIHRoZSBDQUxTLWNvbXBsaWFudCBkZWZhdWx0IGRlZmluaXRpb25zCiAgICBmb3IgdGhlc2UgZW50aXRpZXMuICBIb3dldmVyLCB0aGVzZSBlbnRpdGllcyBjYW4gYW5kIHNob3VsZCBiZSByZWRlZmluZWQKICAgIChieSBnaXZpbmcgdGhlIGFwcHJvcHJpYXRlIHBhcmFtZXRlciBlbnRpdHkgZGVjbGFyYXRpb24ocykgcHJpb3IgdG8gdGhlCiAgICByZWZlcmVuY2UgdG8gdGhpcyBUYWJsZSBNb2RlbCBkZWNsYXJhdGlvbiBzZXQgZW50aXR5KSB0byBmaXQgdGhlIG5lZWRzCiAgICBvZiB0aGUgY3VycmVudCBhcHBsaWNhdGlvbi4KICAtLT4KICA8eHM6Z3JvdXAgbmFtZT0idGJsLnRhYmxlLXRpdGxlcy5tZGwiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Z3JvdXAgcmVmPSJ0aXRsZXMiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0idGJsLnRhYmxlLW1haW4ubWRsIj4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRncm91cCIvPgogICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJncmFwaGljIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0YmwudGdyb3VwLm1kbCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sc3BlYyIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNwYW5zcGVjIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aGVhZCIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGZvb3QiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0Ym9keSIvPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmNvbXBsZXhUeXBlPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0YmwudGdyb3VwLmF0dCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRncm91cHN0eWxlIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGJsLnJvdy5tZGwiPgogICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZW50cnkiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlbnRyeXRibCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpjb21wbGV4VHlwZT4KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGJsLmVudHJ5dGJsLm1kbCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sc3BlYyIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNwYW5zcGVjIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aGVhZCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InRib2R5Ii8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Y29tcGxleFR5cGU+CiAgPCEtLSA9PT09PSAgRWxlbWVudCBhbmQgYXR0cmlidXRlIGRlY2xhcmF0aW9ucyBmb2xsb3cuID09PT09IC0tPgogIDx4czplbGVtZW50IG5hbWU9InRhYmxlIiBzdWJzdGl0dXRpb25Hcm91cD0iZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNvbXBsZXhDb250ZW50PgogICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idGJsLnRhYmxlLm1kbCI+CiAgICAgICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YWJsZS5hdHRsaXN0Ii8+CiAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgIDwveHM6Y29tcGxleENvbnRlbnQ+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGFibGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZyYW1lIiB0eXBlPSJ0YmwuZnJhbWUuYXR0dmFsIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHNlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3dzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRibC50YWJsZS5hdHQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJvZHlhdHQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3VyIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0Z3JvdXAiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y29tcGxleENvbnRlbnQ+CiAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0YmwudGdyb3VwLm1kbCI+CiAgICAgICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0Z3JvdXAuYXR0bGlzdCIvPgogICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICA8L3hzOmNvbXBsZXhDb250ZW50PgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRncm91cC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29scyIgdXNlPSJyZXF1aXJlZCIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGJsLnRncm91cC5hdHQiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sc2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvd3NlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imp1c3RpZnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFyIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXJvZmYiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3VyIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb2xzcGVjIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29sc3BlYy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29sc3BlYy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sbnVtIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbG5hbWUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sd2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sc2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvd3NlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imp1c3RpZnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFyIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXJvZmYiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNwYW5zcGVjIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3BhbnNwZWMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNwYW5zcGVjLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lc3QiIHVzZT0icmVxdWlyZWQiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZWVuZCIgdXNlPSJyZXF1aXJlZCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGFubmFtZSIgdXNlPSJyZXF1aXJlZCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm93c2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGVmdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaWdodCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZW50ZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ianVzdGlmeSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjaGFyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hhcm9mZiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGhlYWQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y29tcGxleENvbnRlbnQ+CiAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0YmwuaGRmdC5tZGwiPgogICAgICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGhlYWQuYXR0bGlzdCIvPgogICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICA8L3hzOmNvbXBsZXhDb250ZW50PgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRoZWFkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWlkZGxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRmb290Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNvbXBsZXhDb250ZW50PgogICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idGJsLmhkZnQubWRsIj4KICAgICAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRmb290LmF0dGxpc3QiLz4KICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgPC94czpjb21wbGV4Q29udGVudD4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0Zm9vdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1pZGRsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3VyIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0Ym9keSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjb21wbGV4Q29udGVudD4KICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRibC50Ym9keS5tZGwiPgogICAgICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGJvZHkuYXR0bGlzdCIvPgogICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICA8L3hzOmNvbXBsZXhDb250ZW50PgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRib2R5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWlkZGxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJvdyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjb21wbGV4Q29udGVudD4KICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRibC5yb3cubWRsIj4KICAgICAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvdy5hdHRsaXN0Ii8+CiAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgIDwveHM6Y29tcGxleENvbnRlbnQ+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icm93LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3dzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1pZGRsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3VyIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJlbnRyeXRibCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjb21wbGV4Q29udGVudD4KICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRibC5lbnRyeXRibC5tZGwiPgogICAgICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZW50cnl0YmwuYXR0bGlzdCIvPgogICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICA8L3hzOmNvbXBsZXhDb250ZW50PgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVudHJ5dGJsLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzIiB1c2U9InJlcXVpcmVkIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YmwudGdyb3VwLmF0dCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xuYW1lIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNwYW5uYW1lIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWVzdCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lZW5kIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHNlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3dzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsZWZ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJpZ2h0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNlbnRlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJqdXN0aWZ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNoYXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hhciIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFyb2ZmIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN1ciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGJsLmVudHJ5Lm1kbCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlbnRyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbG5hbWUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZXN0Ii8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWVlbmQiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3Bhbm5hbWUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibW9yZXJvd3MiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sc2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvd3NlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imp1c3RpZnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFyIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXJvZmYiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm90YXRlIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRvcCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJtaWRkbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYm90dG9tIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN1ciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CjwveHM6c2NoZW1hPgo8IS0tIEVuZCBvZiBEb2NCb29rIENBTFMgVGFibGUgTW9kZWwgVjQuM0NSMyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4K
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgZG9jdW1lbnQgaGllcmFyY2h5IG1vZHVsZSBWNC4zQ1IzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkYmhpZXJ4Lm1vZCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDIgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogZGJoaWVyeC5tb2QsdiAxLjI4IDIwMDQvMDEvMjEgMTg6NTQ6MjEgbndhbHNoIEV4cCAkCiAgCiAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSBhbmQgZGlzdHJpYnV0ZSB0aGUgRG9jQm9vayBEVEQKICBhbmQgaXRzIGFjY29tcGFueWluZyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUKICBpcyBoZXJlYnkgZ3JhbnRlZCBpbiBwZXJwZXR1aXR5LCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQKICBub3RpY2UgYW5kIHRoaXMgcGFyYWdyYXBoIGFwcGVhciBpbiBhbGwgY29waWVzLiAgVGhlIGNvcHlyaWdodAogIGhvbGRlcnMgbWFrZSBubyByZXByZXNlbnRhdGlvbiBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhlIERURCBmb3IKICBhbnkgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzZWQgb3IgaW1wbGllZAogIHdhcnJhbnR5LgogIAogIElmIHlvdSBtb2RpZnkgdGhlIERvY0Jvb2sgRFREIGluIGFueSB3YXksIGV4Y2VwdCBmb3IgZGVjbGFyaW5nIGFuZAogIHJlZmVyZW5jaW5nIGFkZGl0aW9uYWwgc2V0cyBvZiBnZW5lcmFsIGVudGl0aWVzIGFuZCBkZWNsYXJpbmcKICBhZGRpdGlvbmFsIG5vdGF0aW9ucywgbGFiZWwgeW91ciBEVEQgYXMgYSB2YXJpYW50IG9mIERvY0Jvb2suICBTZWUKICB0aGUgbWFpbnRlbmFuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAKICBQbGVhc2UgZGlyZWN0IGFsbCBxdWVzdGlvbnMsIGJ1ZyByZXBvcnRzLCBvciBzdWdnZXN0aW9ucyBmb3IKICBjaGFuZ2VzIHRvIHRoZSBkb2Nib29rQGxpc3RzLm9hc2lzLW9wZW4ub3JnIG1haWxpbmcgbGlzdC4gRm9yIG1vcmUKICBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay8uCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0KICBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBvdmVyYWxsIGRvY3VtZW50CiAgaGllcmFyY2hpZXMgb2YgRG9jQm9vayBkb2N1bWVudHMuICBJdCBjb3ZlcnMgY29tcHV0ZXIgZG9jdW1lbnRhdGlvbgogIG1hbnVhbHMgYW5kIG1hbnVhbCBmcmFnbWVudHMsIGFzIHdlbGwgYXMgcmVmZXJlbmNlIGVudHJpZXMgKHN1Y2ggYXMKICBtYW4gcGFnZXMpIGFuZCB0ZWNobmljYWwgam91cm5hbHMgb3IgYW50aG9sb2dpZXMgY29udGFpbmluZwogIGFydGljbGVzLgogIAogIFRoaXMgbW9kdWxlIGRlcGVuZHMgb24gdGhlIERvY0Jvb2sgaW5mb3JtYXRpb24gcG9vbCBtb2R1bGUuICBBbGwKICBlbGVtZW50cyBhbmQgZW50aXRpZXMgcmVmZXJlbmNlZCBidXQgbm90IGRlZmluZWQgaGVyZSBhcmUgYXNzdW1lZAogIHRvIGJlIGRlZmluZWQgaW4gdGhlIGluZm9ybWF0aW9uIHBvb2wgbW9kdWxlLgogIAogIEluIERURCBkcml2ZXIgZmlsZXMgcmVmZXJyaW5nIHRvIHRoaXMgbW9kdWxlLCBwbGVhc2UgdXNlIGFuIGVudGl0eQogIGRlY2xhcmF0aW9uIHRoYXQgdXNlcyB0aGUgcHVibGljIGlkZW50aWZpZXIgc2hvd24gYmVsb3c6CiAgCiAgPCFFTlRJVFkgJSBkYmhpZXIgUFVCTElDCiAgIi0vL09BU0lTLy9FTEVNRU5UUyBEb2NCb29rIERvY3VtZW50IEhpZXJhcmNoeSBWNC4zQ1IzLy9FTiIKICAiZGJoaWVyeC5tb2QiPgogICVkYmhpZXI7CiAgCiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiB0aGUgcGFyYW1ldGVyCiAgZW50aXR5IGFuZCBtb2R1bGUgc2NoZW1lIHVzZWQgaW4gRG9jQm9vaywgY3VzdG9taXppbmcgRG9jQm9vayBhbmQKICBwbGFubmluZyBmb3IgaW50ZXJjaGFuZ2UsIGFuZCBjaGFuZ2VzIG1hZGUgc2luY2UgdGhlIGxhc3QgcmVsZWFzZQogIG9mIERvY0Jvb2suCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRW50aXRpZXMgZm9yIG1vZHVsZSBpbmNsdXNpb25zIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIEVudGl0aWVzIGZvciBlbGVtZW50IGNsYXNzZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+Cjx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+CiAgPHhzOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIgc2NoZW1hTG9jYXRpb249InhtbC54c2QiLz4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcHBlbmRpeC5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJlZ2lucGFnZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJhcHBlbmRpeGluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idG9jY2hhcCIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJvb2tjb21wb25lbnQuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcHBlbmRpeC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcnRpY2xlLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImRpdi50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImFydGljbGVpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRvY2NoYXAiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImxvdCIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJvb2tjb21wb25lbnQuY29udGVudCIvPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6Z3JvdXAgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYXBwZW5kaXguY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYWNrbm8iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJ0aWNsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6ZWxlbWVudCBuYW1lPSJib29rLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImRpdi50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJvb2tpbmZvIi8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZGVkaWNhdGlvbiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0b2MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibG90Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdsb3NzYXJ5Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb2dyYXBoeSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwcmVmYWNlIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNoYXB0ZXIuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icmVmZXJlbmNlIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBhcnQiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYXJ0aWNsZS5jbGFzcyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcHBlbmRpeC5jbGFzcyIvPgogICAgICAgICAgPHhzOmdyb3VwIHJlZj0iaW5kZXguY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iY29sb3Bob24iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYm9vay5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjaGFwdGVyLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImNoYXB0ZXJpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYm9va2NvbXBvbmVudC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRvY2NoYXAiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJib29rY29tcG9uZW50LmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2hhcHRlci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6Z3JvdXAgbmFtZT0iaW5kZXguY2xhc3MiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmRleCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InNldGluZGV4Ii8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZmVudHJ5LmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJlZmVudHJ5aW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJyZWZtZXRhIi8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icmVtYXJrIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZm5hbWVkaXYiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmc3lub3BzaXNkaXYiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmc2VjdDEiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3Rpb24iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdGlvbi5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNlY3Rpb25pbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRpdmNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0aW9uLmNsYXNzIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0aW9uLmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Rpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmdyb3VwIG5hbWU9Im5hdi5jbGFzcyI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9InRvYyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxvdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZGV4Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZ2xvc3NhcnkiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9ncmFwaHkiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBSZWRlY2xhcmF0aW9uIHBsYWNlaG9sZGVyIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0KICAgIEZvciByZWRlY2xhcmluZyBlbnRpdGllcyB0aGF0IGFyZSBkZWNsYXJlZCBhZnRlciB0aGlzIHBvaW50IHdoaWxlCiAgICByZXRhaW5pbmcgdGhlaXIgcmVmZXJlbmNlcyB0byB0aGUgZW50aXRpZXMgdGhhdCBhcmUgZGVjbGFyZWQgYmVmb3JlCiAgICB0aGlzIHBvaW50CiAgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gRW50aXRpZXMgZm9yIGVsZW1lbnQgbWl4dHVyZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFRoZSBEb2NCb29rIFRDIG1heSBwcm9kdWNlIGFuIG9mZmljaWFsIGZvcm1zIG1vZHVsZSBmb3IgRG9jQm9vay4gLS0+CiAgPCEtLSBUaGlzIFBFIHByb3ZpZGVzIHRoZSBob29rIGJ5IHdoaWNoIGl0IGNhbiBiZSBpbnNlcnRlZCBpbnRvIHRoZSBEVEQuIC0tPgogIDx4czpncm91cCBuYW1lPSJkaXZjb21wb25lbnQubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb21wb3VuZC5jbGFzcyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJnZW5vYmouY2xhc3MiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZGVzY29iai5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InJlZmNvbXBvbmVudC5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWRtb24uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW5vcC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbXBvdW5kLmNsYXNzIi8+CiAgICAgIDx4czpncm91cCByZWY9Imdlbm9iai5jbGFzcyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJkZXNjb2JqLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iaW5kZXhkaXZjb21wb25lbnQubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaXRlbWl6ZWRsaXN0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ib3JkZXJlZGxpc3QiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ2YXJpYWJsZWxpc3QiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzaW1wbGVsaXN0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhbmNob3IiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZW1hcmsiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InJlZm5hbWUuY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGVjaC5jaGFyLmNsYXNzIi8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InBhcnRjb250ZW50Lm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFwcGVuZGl4LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY2hhcHRlci5jbGFzcyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcnRpY2xlLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJlZmFjZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icmVmZXJlbmNlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJyZWZpbmxpbmUuY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ4cmVmLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdlbi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRlY2guY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJhc2UuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZG9jaW5mby5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJyZWZjbGFzcy5jaGFyLm1peCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJhcHBsaWNhdGlvbiIvPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDwhLS0gUmVkZWNsYXJhdGlvbiBwbGFjZWhvbGRlciAyIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tCiAgICBGb3IgcmVkZWNsYXJpbmcgZW50aXRpZXMgdGhhdCBhcmUgZGVjbGFyZWQgYWZ0ZXIgdGhpcyBwb2ludCB3aGlsZQogICAgcmV0YWluaW5nIHRoZWlyIHJlZmVyZW5jZXMgdG8gdGhlIGVudGl0aWVzIHRoYXQgYXJlIGRlY2xhcmVkIGJlZm9yZQogICAgdGhpcyBwb2ludAogIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEVudGl0aWVzIGZvciBjb250ZW50IG1vZGVscyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmdyb3VwIG5hbWU9ImRpdi50aXRsZS5jb250ZW50Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic3VidGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlYWJicmV2Ii8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0idGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InN1YnRpdGxlIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZWFiYnJldiIvPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJzZWN0LnRpdGxlLmNvbnRlbnQiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9InRpdGxlIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzdWJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGVhYmJyZXYiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0icmVmc2VjdC50aXRsZS5jb250ZW50Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic3VidGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlYWJicmV2Ii8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImJvb2tjb21wb25lbnQuY29udGVudCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRpdmNvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0MSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3Rpb24uY2xhc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0MSIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3Rpb24uY2xhc3MiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFNldCBhbmQgU2V0SW5mbyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNldC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2V0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZGl2LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic2V0aW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0b2MiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2V0Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJvb2suY2xhc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic2V0aW5kZXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNldC5lbGVtZW50IC0tPgogIDwhLS0gRlBJOiBTR01MIGZvcm1hbCBwdWJsaWMgaWRlbnRpZmllciAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmcGkiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNldC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2V0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2V0aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2V0aW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNldGluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2V0aW5mby5lbGVtZW50IC0tPgogIDwhLS0KICAgIENvbnRlbnRzOiBJRHMgb2YgdGhlIFRvQywgQm9va3MsIGFuZCBTZXRJbmRleCB0aGF0IGNvbXByaXNlCiAgICB0aGUgc2V0LCBpbiB0aGUgb3JkZXIgb2YgdGhlaXIgYXBwZWFyYW5jZQogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZXRpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250ZW50cyIgdHlwZT0ieHM6SURSRUZTIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZXRpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZXRpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2V0aW5mby5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2Ygc2V0LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEJvb2sgYW5kIEJvb2tJbmZvIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJvb2sucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJvb2siIHN1YnN0aXR1dGlvbkdyb3VwPSJib29rLmNsYXNzIi8+CiAgPCEtLSBlbmQgb2YgYm9vay5lbGVtZW50IC0tPgogIDwhLS0gRlBJOiBTR01MIGZvcm1hbCBwdWJsaWMgaWRlbnRpZmllciAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYm9vay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZnBpIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJvb2sucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJvb2suYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBib29rLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYm9va2luZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJvb2tpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYm9va2luZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYm9va2luZm8uZWxlbWVudCAtLT4KICA8IS0tCiAgICBDb250ZW50czogSURzIG9mIHRoZSBUb0MsIExvVHMsIFByZWZhY2VzLCBQYXJ0cywgQ2hhcHRlcnMsCiAgICBBcHBlbmRpeGVzLCBSZWZlcmVuY2VzLCBHTG9zc2FyeSwgQmlibGlvZ3JhcGh5LCBhbmQgaW5kZXhlcwogICAgY29tcHJpc2luZyB0aGUgQm9vaywgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIGFwcGVhcmFuY2UKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYm9va2luZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRlbnRzIiB0eXBlPSJ4czpJRFJFRlMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJvb2tpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBib29raW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJvb2tpbmZvLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBib29rLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIERlZGljYXRpb24sIFRvQywgYW5kIExvVCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImRlZGljYXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImRlZGljYXRpb24iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibGVnYWxub3RpY2UubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRlZGljYXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZGVkaWNhdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJkZWRpY2F0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZGVkaWNhdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZGVkaWNhdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGRlZGljYXRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2xvcGhvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29sb3Bob24iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGV4dG9iamVjdC5taXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29sb3Bob24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29sb3Bob24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29sb3Bob24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb2xvcGhvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29sb3Bob24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb2xvcGhvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvYy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jZnJvbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0b2NwYXJ0Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRvY2NoYXAiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2JhY2siLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRvYy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2MuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2MuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2MubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2Nmcm9udC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jZnJvbnQiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2Nmcm9udC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2Nmcm9udC5lbGVtZW50IC0tPgogIDwhLS0gdG8gZWxlbWVudCB0aGF0IHRoaXMgZW50cnkgcmVwcmVzZW50cyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jZnJvbnQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmQuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jZnJvbnQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRvY2Zyb250LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9jZnJvbnQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NlbnRyeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NlbnRyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NlbnRyeS5lbGVtZW50IC0tPgogIDwhLS0gdG8gZWxlbWVudCB0aGF0IHRoaXMgZW50cnkgcmVwcmVzZW50cyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFnZW51bS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2VudHJ5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRvY2VudHJ5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jcGFydC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jcGFydCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NlbnRyeSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jY2hhcCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NwYXJ0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRvY3BhcnQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jcGFydC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY3BhcnQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRvY3BhcnQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NwYXJ0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jY2hhcC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jY2hhcCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NlbnRyeSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jbGV2ZWwxIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2NoYXAuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdG9jY2hhcC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NjaGFwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NjaGFwLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NjaGFwLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9jY2hhcC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2xldmVsMS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jbGV2ZWwxIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2VudHJ5Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NsZXZlbDIiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWwxLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRvY2xldmVsMS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDEuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NsZXZlbDEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRvY2xldmVsMS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRvY2xldmVsMS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2xldmVsMi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jbGV2ZWwyIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2VudHJ5Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NsZXZlbDMiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWwyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRvY2xldmVsMi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NsZXZlbDIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRvY2xldmVsMi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRvY2xldmVsMi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2xldmVsMy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jbGV2ZWwzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2VudHJ5Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NsZXZlbDQiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWwzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRvY2xldmVsMy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NsZXZlbDMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRvY2xldmVsMy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRvY2xldmVsMy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2xldmVsNC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jbGV2ZWw0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2VudHJ5Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NsZXZlbDUiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWw0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRvY2xldmVsNC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NsZXZlbDQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRvY2xldmVsNC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRvY2xldmVsNC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2xldmVsNS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jbGV2ZWw1Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2VudHJ5Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsNS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWw1LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWw1LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NiYWNrLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0b2NiYWNrIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jYmFjay5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NiYWNrLmVsZW1lbnQgLS0+CiAgPCEtLSB0byBlbGVtZW50IHRoYXQgdGhpcyBlbnRyeSByZXByZXNlbnRzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NiYWNrLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFnZW51bS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2JhY2sucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRvY2JhY2suYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NiYWNrLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiB0b2MuY29udGVudC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxvdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibG90Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibG90ZW50cnkiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibG90LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxvdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsb3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxvdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbG90LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbG90Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibG90ZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImxvdGVudHJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibG90ZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbG90ZW50cnkuZWxlbWVudCAtLT4KICA8IS0tCiAgICBTcmNDcmVkaXQ6IEluZm9ybWF0aW9uIGFib3V0IHRoZSBzb3VyY2Ugb2YgdGhlIGVudHJ5LAogICAgYXMgZm9yIGEgbGlzdCBvZiBpbGx1c3RyYXRpb25zCiAgLS0+CiAgPCEtLSBsaW5rZW5kOiB0byBlbGVtZW50IHRoYXQgdGhpcyBlbnRyeSByZXByZXNlbnRzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsb3RlbnRyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmQuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcmNjcmVkaXQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxvdGVudHJ5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBsb3RlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGxvdGVudHJ5Lm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBsb3QuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gQXBwZW5kaXgsIENoYXB0ZXIsIFBhcnQsIFByZWZhY2UsIFJlZmVyZW5jZSwgUGFydEludHJvIC4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXBwZW5kaXgucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFwcGVuZGl4IiBzdWJzdGl0dXRpb25Hcm91cD0iYXBwZW5kaXguY2xhc3MiLz4KICA8IS0tIGVuZCBvZiBhcHBlbmRpeC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcHBlbmRpeC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXBwZW5kaXgucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFwcGVuZGl4LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXBwZW5kaXgubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaGFwdGVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjaGFwdGVyIiBzdWJzdGl0dXRpb25Hcm91cD0iY2hhcHRlci5jbGFzcyIvPgogIDwhLS0gZW5kIG9mIGNoYXB0ZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2hhcHRlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2hhcHRlci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY2hhcHRlci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNoYXB0ZXIubW9kdWxlIC0tPgogIDwhLS0KICAgIE5vdGUgdGhhdCBQYXJ0IHdhcyB0byBoYXZlIGl0cyBjb250ZW50IG1vZGVsIHJlZHVjZWQgaW4gVjQuM0NSMy4gIFRoaXMKICAgIGNoYW5nZSB3aWxsIG5vdCBiZSBtYWRlIGFmdGVyIGFsbC4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFydC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGFydCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InBhcnRpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYm9va2NvbXBvbmVudC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InBhcnRpbnRybyIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJ0Y29udGVudC5taXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFydC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwYXJ0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcnQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcnQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBhcnQuYXR0bGlzdCAtLT4KICA8IS0tIEVMRU1FTlQgUGFydEludHJvIChkZWZpbmVkIGJlbG93KSAtLT4KICA8IS0tIGVuZCBvZiBwYXJ0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJlZmFjZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHJlZmFjZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InByZWZhY2VpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYm9va2NvbXBvbmVudC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRvY2NoYXAiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJib29rY29tcG9uZW50LmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJlZmFjZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwcmVmYWNlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByZWZhY2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmVmYWNlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwcmVmYWNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHJlZmFjZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmVyZW5jZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmZXJlbmNlIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmZXJlbmNlaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJwYXJ0aW50cm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZlcmVuY2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmZXJlbmNlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmVyZW5jZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZXJlbmNlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZlcmVuY2UuYXR0bGlzdCAtLT4KICA8IS0tIEVMRU1FTlQgUGFydEludHJvIChkZWZpbmVkIGJlbG93KSAtLT4KICA8IS0tIGVuZCBvZiByZWZlcmVuY2UubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYXJ0aW50cm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBhcnRpbnRybyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImRpdi50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYm9va2NvbXBvbmVudC5jb250ZW50Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcnRpbnRyby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwYXJ0aW50cm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFydGludHJvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJ0aW50cm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBhcnRpbnRyby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBhcnRpbnRyby5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gT3RoZXIgSW5mbyBlbGVtZW50cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXBwZW5kaXhpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcHBlbmRpeGluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcHBlbmRpeGluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXBwZW5kaXhpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFwcGVuZGl4aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFwcGVuZGl4aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXBwZW5kaXhpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXBwZW5kaXhpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvZ3JhcGh5aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvZ3JhcGh5aW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2dyYXBoeWluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmlibGlvZ3JhcGh5aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9ncmFwaHlpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvZ3JhcGh5aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmlibGlvZ3JhcGh5aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb2dyYXBoeWluZm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaGFwdGVyaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2hhcHRlcmluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaGFwdGVyaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjaGFwdGVyaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaGFwdGVyaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNoYXB0ZXJpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjaGFwdGVyaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNoYXB0ZXJpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NhcnlpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJnbG9zc2FyeWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc2FyeWluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ2xvc3NhcnlpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzYXJ5aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzYXJ5aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ2xvc3NhcnlpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ2xvc3NhcnlpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5kZXhpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmRleGluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleGluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5kZXhpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZGV4aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW5kZXhpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5kZXhpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2V0aW5kZXhpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZXRpbmRleGluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZXRpbmRleGluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2V0aW5kZXhpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNldGluZGV4aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNldGluZGV4aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2V0aW5kZXhpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2V0aW5kZXhpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFydGluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBhcnRpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFydGluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcGFydGluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFydGluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJ0aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcGFydGluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwYXJ0aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByZWZhY2VpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwcmVmYWNlaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByZWZhY2VpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByZWZhY2VpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByZWZhY2VpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJlZmFjZWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByZWZhY2VpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHJlZmFjZWluZm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZlbnRyeWluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZmVudHJ5aW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVudHJ5aW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZlbnRyeWluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZW50cnlpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZW50cnlpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZlbnRyeWluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZlbnRyeWluZm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0aW9uaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdGlvbmluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0aW9uaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZzZWN0aW9uaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0aW9uaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3Rpb25pbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZzZWN0aW9uaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3Rpb25pbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdDFpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZzZWN0MWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0MWluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDFpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QxaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3QxaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDFpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDFpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdDJpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZzZWN0MmluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0MmluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDJpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QyaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3QyaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDJpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDJpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdDNpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZzZWN0M2luZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0M2luZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDNpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QzaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3QzaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDNpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDNpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc3lub3BzaXNkaXZpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZzeW5vcHNpc2RpdmluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzeW5vcHNpc2RpdmluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc3lub3BzaXNkaXZpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnN5bm9wc2lzZGl2aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnN5bm9wc2lzZGl2aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc3lub3BzaXNkaXZpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmc3lub3BzaXNkaXZpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZXJlbmNlaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmZXJlbmNlaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVyZW5jZWluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmZXJlbmNlaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZlcmVuY2VpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZXJlbmNlaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmZXJlbmNlaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZmVyZW5jZWluZm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0MWluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlY3QxaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3QxaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0MWluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDFpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDFpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWN0MWluZm8uYXR0bGlzdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDJpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWN0MmluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0MmluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdDJpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QyaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3QyaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDJpbmZvLmF0dGxpc3QgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QzaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdDNpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDNpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY3QzaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0M2luZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0M2luZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3QzaW5mby5hdHRsaXN0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0NGluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlY3Q0aW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Q0aW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0NGluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDRpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDRpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWN0NGluZm8uYXR0bGlzdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDVpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWN0NWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0NWluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdDVpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Q1aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Q1aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDVpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gU2VjdGlvbiAocGFyYWxsZWwgdG8gU2VjdCopIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWN0aW9uIiBzdWJzdGl0dXRpb25Hcm91cD0ic2VjdGlvbi5jbGFzcyIvPgogIDwhLS0gZW5kIG9mIHNlY3Rpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlY3Rpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0aW9uaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdGlvbmluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0aW9uaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0aW9uaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0aW9uaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Rpb25pbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWN0aW9uaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlY3Rpb25pbmZvLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBzZWN0aW9uLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFNlY3QxLCBTZWN0MiwgU2VjdDMsIFNlY3Q0LCBTZWN0NSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QxLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWN0MSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic2VjdDFpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRpdmNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0MiIvPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdDIiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdDEuZWxlbWVudCAtLT4KICA8IS0tCiAgICBSZW5kZXJhczogSW5kaWNhdGVzIHRoZSBmb3JtYXQgaW4gd2hpY2ggdGhlIGhlYWRpbmcgc2hvdWxkCiAgICBhcHBlYXIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDEuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbmRlcmFzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3QxLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VjdDEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0Mi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdDIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNlY3QyaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkaXZjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdDMiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3QzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3QyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY3QyLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgUmVuZGVyYXM6IEluZGljYXRlcyB0aGUgZm9ybWF0IGluIHdoaWNoIHRoZSBoZWFkaW5nIHNob3VsZAogICAgYXBwZWFyCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZW5kZXJhcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QxIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3Q0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3Q1Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3QyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWN0Mi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlY3QyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlY3QzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0M2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZGl2Y29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3Q0Ii8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0NCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0My5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0My5lbGVtZW50IC0tPgogIDwhLS0KICAgIFJlbmRlcmFzOiBJbmRpY2F0ZXMgdGhlIGZvcm1hdCBpbiB3aGljaCB0aGUgaGVhZGluZyBzaG91bGQKICAgIGFwcGVhcgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0My5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVuZGVyYXMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0My5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWN0My5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Q0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWN0NCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic2VjdDRpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRpdmNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0NSIvPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdDUiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdDQuZWxlbWVudCAtLT4KICA8IS0tCiAgICBSZW5kZXJhczogSW5kaWNhdGVzIHRoZSBmb3JtYXQgaW4gd2hpY2ggdGhlIGhlYWRpbmcgc2hvdWxkCiAgICBhcHBlYXIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbmRlcmFzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3Q0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VjdDQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0NS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdDUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNlY3Q1aW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkaXZjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0NS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0NS5lbGVtZW50IC0tPgogIDwhLS0KICAgIFJlbmRlcmFzOiBJbmRpY2F0ZXMgdGhlIGZvcm1hdCBpbiB3aGljaCB0aGUgaGVhZGluZyBzaG91bGQKICAgIGFwcGVhcgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0NS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVuZGVyYXMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0NS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWN0NS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpbXBsZXNlY3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNpbXBsZXNlY3QiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRpdmNvbXBvbmVudC5taXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2ltcGxlc2VjdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzaW1wbGVzZWN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpbXBsZXNlY3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaW1wbGVzZWN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzaW1wbGVzZWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlc2VjdC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gQmlibGlvZ3JhcGh5IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvZ3JhcGh5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9ncmFwaHkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJpYmxpb2dyYXBoeWluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYmlibGlvZGl2Ii8+CiAgICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9lbnRyeSIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb21peGVkIi8+CiAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvZ3JhcGh5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb2dyYXBoeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9ncmFwaHkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9ncmFwaHkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb2dyYXBoeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb2dyYXBoeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2Rpdi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvZGl2Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9lbnRyeSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9taXhlZCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9kaXYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmlibGlvZGl2LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2Rpdi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2Rpdi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmlibGlvZGl2LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYmlibGlvZGl2Lm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9ncmFwaHkuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gR2xvc3NhcnkgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3Nhcnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdsb3NzYXJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJnbG9zc2FyeWluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ2xvc3NkaXYiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imdsb3NzZW50cnkiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmlibGlvZ3JhcGh5Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzYXJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdsb3NzYXJ5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzYXJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3Nhcnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3NzYXJ5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ2xvc3NhcnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2Rpdi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ2xvc3NkaXYiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imdsb3NzZW50cnkiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NkaXYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ2xvc3NkaXYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NkaXYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc2Rpdi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ2xvc3NkaXYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBnbG9zc2Rpdi5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgZ2xvc3NhcnkuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gSW5kZXggYW5kIFNldEluZGV4IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5kZXhlcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5kZXgiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImluZGV4aW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iYm9va2NvbXBvbmVudC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZGV4ZGl2Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZGV4ZW50cnkiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5kZXguYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5kZXguZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5kZXguYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZGV4ZXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGluZGV4LmF0dGxpc3QgLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2V0aW5kZXgiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNldGluZGV4aW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iYm9va2NvbXBvbmVudC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZGV4ZGl2Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZGV4ZW50cnkiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2V0aW5kZXguYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2V0aW5kZXguZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2V0aW5kZXguYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleGVzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZXRpbmRleC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluZGV4ZXMubW9kdWxlIC0tPgogIDwhLS0KICAgIFNlZ21lbnRlZExpc3QgaW4gdGhpcyBjb250ZW50IGlzIHVzZWZ1bCBmb3IgbWFya2luZyB1cCBwZXJtdXRlZAogICAgaW5kaWNlcy4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5kZXhkaXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImluZGV4ZGl2Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5kZXhkaXZjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmRleGVudHJ5Ii8+CiAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2VnbWVudGVkbGlzdCIvPgogICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5kZXhkaXYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5kZXhkaXYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5kZXhkaXYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleGRpdi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW5kZXhkaXYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbmRleGRpdi5tb2R1bGUgLS0+CiAgPCEtLSBJbmRleCBlbnRyaWVzIGFwcGVhciBpbiB0aGUgaW5kZXgsIG5vdCB0aGUgdGV4dC4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4ZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImluZGV4ZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwcmltYXJ5aWUiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzZWVpZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzZWVhbHNvaWUiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6c2VxdWVuY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNlY29uZGFyeWllIi8+CiAgICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNlZWllIi8+CiAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2VlYWxzb2llIi8+CiAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idGVydGlhcnlpZSIvPgogICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5kZXhlbnRyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbmRleGVudHJ5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4ZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleGVudHJ5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmRleGVudHJ5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5kZXhlbnRyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByaW1zZWN0ZXJpZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHJpbWFyeWllIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJpbWFyeWllLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByaW1hcnlpZS5lbGVtZW50IC0tPgogIDwhLS0gdG8gSW5kZXhUZXJtcyB0aGF0IHRoZXNlIGVudHJpZXMgcmVwcmVzZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcmltYXJ5aWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kcy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByaW1zZWN0ZXJpZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJpbWFyeWllLmF0dGxpc3QgLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2Vjb25kYXJ5aWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWNvbmRhcnlpZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWNvbmRhcnlpZS5lbGVtZW50IC0tPgogIDwhLS0gdG8gSW5kZXhUZXJtcyB0aGF0IHRoZXNlIGVudHJpZXMgcmVwcmVzZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWNvbmRhcnlpZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJpbXNlY3RlcmllLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWNvbmRhcnlpZS5hdHRsaXN0IC0tPgogIDx4czplbGVtZW50IG5hbWU9InRlcnRpYXJ5aWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ZXJ0aWFyeWllLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRlcnRpYXJ5aWUuZWxlbWVudCAtLT4KICA8IS0tIHRvIEluZGV4VGVybXMgdGhhdCB0aGVzZSBlbnRyaWVzIHJlcHJlc2VudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGVydGlhcnlpZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJpbXNlY3RlcmllLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0ZXJ0aWFyeWllLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHJpbXNlY3RlcmllLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VlaWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlZWllIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VlaWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VlaWUuZWxlbWVudCAtLT4KICA8IS0tIHRvIEluZGV4RW50cnkgdG8gbG9vayB1cCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VlaWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VlaWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlZWllLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VlaWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWVhbHNvaWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlZWFsc29pZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZWFsc29pZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWVhbHNvaWUuZWxlbWVudCAtLT4KICA8IS0tIHRvIHJlbGF0ZWQgSW5kZXhFbnRyaWVzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWVhbHNvaWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kcy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZWFsc29pZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VlYWxzb2llLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VlYWxzb2llLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBpbmRleC5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBSZWZFbnRyeSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZlbnRyeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmZW50cnkiIHN1YnN0aXR1dGlvbkdyb3VwPSJyZWZlbnRyeS5jbGFzcyIvPgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmVudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmZW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZtZXRhLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZtZXRhIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVmZW50cnl0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJtYW52b2xudW0iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZm1pc2NpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZm1ldGEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmbWV0YS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZtZXRhLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmbWV0YS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmbWV0YS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZm1ldGEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZtaXNjaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmbWlzY2luZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZtaXNjaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZtaXNjaW5mby5lbGVtZW50IC0tPgogIDwhLS0gQ2xhc3M6IEZyZWVseSBhc3NpZ25hYmxlIHBhcmFtZXRlcjsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmbWlzY2luZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZtaXNjaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmbWlzY2luZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZtaXNjaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZm5hbWVkaXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZm5hbWVkaXYiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJlZmRlc2NyaXB0b3IiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZuYW1lIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZWZwdXJwb3NlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZjbGFzcyIvPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlbWFyayIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmbmFtZWRpdi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZuYW1lZGl2LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZm5hbWVkaXYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZuYW1lZGl2LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZuYW1lZGl2LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmbmFtZWRpdi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmRlc2NyaXB0b3Iucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZmRlc2NyaXB0b3IiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmbmFtZS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZkZXNjcmlwdG9yLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZmRlc2NyaXB0b3IuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZGVzY3JpcHRvci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmRlc2NyaXB0b3Iucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZmRlc2NyaXB0b3IuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZkZXNjcmlwdG9yLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmbmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmbmFtZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZuYW1lLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmbmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmbmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZm5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZwdXJwb3NlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZwdXJwb3NlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmlubGluZS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZwdXJwb3NlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnB1cnBvc2UuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmcHVycG9zZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnB1cnBvc2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnB1cnBvc2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZwdXJwb3NlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmY2xhc3Mucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmNsYXNzLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmNsYXNzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZmNsYXNzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmNsYXNzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmY2xhc3Mucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZmNsYXNzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmY2xhc3MubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzeW5vcHNpc2Rpdi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc3lub3BzaXNkaXYiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJlZnN5bm9wc2lzZGl2aW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmc2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZzZWN0MiIvPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3QyIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnN5bm9wc2lzZGl2LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnN5bm9wc2lzZGl2LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnN5bm9wc2lzZGl2LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc3lub3BzaXNkaXYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnN5bm9wc2lzZGl2LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmc3lub3BzaXNkaXYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZzZWN0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJyZWZzZWN0aW9uaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9InJlZnNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmc2VjdGlvbiIvPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3Rpb24iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdGlvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZzZWN0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3Rpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZzZWN0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QxLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZzZWN0MSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmc2VjdDFpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icmVmc2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZzZWN0MiIvPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3QyIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3QxLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3QxLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QxLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QxLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0Mi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdDIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJlZnNlY3QyaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9InJlZnNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmc2VjdDMiLz4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZzZWN0MyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0Mi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZzZWN0Mi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0Mi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3QyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZzZWN0Mi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdDMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZnNlY3QzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJyZWZzZWN0M2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJyZWZzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmY29tcG9uZW50Lm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0My5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZzZWN0My5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0My5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3QzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZzZWN0My5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QzLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiByZWZlbnRyeS5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBBcnRpY2xlIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0KICAgIEFuIEFydGljbGUgaXMgYSBjaGFwdGVyLWxldmVsLCBzdGFuZC1hbG9uZSBkb2N1bWVudCB0aGF0IGlzIG9mdGVuLAogICAgYnV0IG5lZWQgbm90IGJlLCBjb2xsZWN0ZWQgaW50byBhIEJvb2suCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFydGljbGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFydGljbGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJhcnRpY2xlLmNsYXNzIi8+CiAgPCEtLSBlbmQgb2YgYXJ0aWNsZS5lbGVtZW50IC0tPgogIDwhLS0KICAgIENsYXNzOiBJbmRpY2F0ZXMgdGhlIHR5cGUgb2YgYSBwYXJ0aWN1bGFyIGFydGljbGU7CiAgICBhbGwgYXJ0aWNsZXMgaGF2ZSB0aGUgc2FtZSBzdHJ1Y3R1cmUgYW5kIGdlbmVyYWwgcHVycG9zZS4KICAgIE5vIGRlZmF1bHQuCiAgLS0+CiAgPCEtLSBQYXJlbnRCb29rOiBJRCBvZiB0aGUgZW5jbG9zaW5nIEJvb2sgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFydGljbGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iam91cm5hbGFydGljbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icHJvZHVjdHNoZWV0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IndoaXRlcGFwZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idGVjaHJlcG9ydCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzcGVjaWZpY2F0aW9uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImZhcSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwYXJlbnRib29rIiB0eXBlPSJ4czpJRFJFRiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJ0aWNsZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CjwveHM6c2NoZW1hPgo8IS0tIGVuZCBvZiBhcnRpY2xlLmF0dGxpc3QgLS0+CjwhLS0gZW5kIG9mIGFydGljbGUubW9kdWxlIC0tPgo8IS0tIEVuZCBvZiBEb2NCb29rIGRvY3VtZW50IGhpZXJhcmNoeSBtb2R1bGUgVjQuM0NSMyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4K
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgbm90YXRpb25zIG1vZHVsZSBWNC4zQ1IzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkYm5vdG54Lm1vZCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDIgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogZGJub3RueC5tb2QsdiAxLjIxIDIwMDQvMDEvMjEgMTg6NTQ6MjEgbndhbHNoIEV4cCAkCiAgCiAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSBhbmQgZGlzdHJpYnV0ZSB0aGUgRG9jQm9vayBEVEQKICBhbmQgaXRzIGFjY29tcGFueWluZyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUKICBpcyBoZXJlYnkgZ3JhbnRlZCBpbiBwZXJwZXR1aXR5LCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQKICBub3RpY2UgYW5kIHRoaXMgcGFyYWdyYXBoIGFwcGVhciBpbiBhbGwgY29waWVzLiAgVGhlIGNvcHlyaWdodAogIGhvbGRlcnMgbWFrZSBubyByZXByZXNlbnRhdGlvbiBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhlIERURCBmb3IKICBhbnkgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzZWQgb3IgaW1wbGllZAogIHdhcnJhbnR5LgogIAogIElmIHlvdSBtb2RpZnkgdGhlIERvY0Jvb2sgRFREIGluIGFueSB3YXksIGV4Y2VwdCBmb3IgZGVjbGFyaW5nIGFuZAogIHJlZmVyZW5jaW5nIGFkZGl0aW9uYWwgc2V0cyBvZiBnZW5lcmFsIGVudGl0aWVzIGFuZCBkZWNsYXJpbmcKICBhZGRpdGlvbmFsIG5vdGF0aW9ucywgbGFiZWwgeW91ciBEVEQgYXMgYSB2YXJpYW50IG9mIERvY0Jvb2suICBTZWUKICB0aGUgbWFpbnRlbmFuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAKICBQbGVhc2UgZGlyZWN0IGFsbCBxdWVzdGlvbnMsIGJ1ZyByZXBvcnRzLCBvciBzdWdnZXN0aW9ucyBmb3IKICBjaGFuZ2VzIHRvIHRoZSBkb2Nib29rQGxpc3RzLm9hc2lzLW9wZW4ub3JnIG1haWxpbmcgbGlzdC4gRm9yIG1vcmUKICBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay8uCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0KICBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgZW50aXR5IGRlY2xhcmF0aW9ucyBmb3IgdGhlIHN0YW5kYXJkIElTTwogIGVudGl0eSBzZXRzIHVzZWQgYnkgRG9jQm9vay4KICAKICBJbiBEVEQgZHJpdmVyIGZpbGVzIHJlZmVycmluZyB0byB0aGlzIG1vZHVsZSwgcGxlYXNlIHVzZSBhbiBlbnRpdHkKICBkZWNsYXJhdGlvbiB0aGF0IHVzZXMgdGhlIHB1YmxpYyBpZGVudGlmaWVyIHNob3duIGJlbG93OgogIAogIDwhRU5USVRZICUgZGJub3RuIFBVQkxJQwogICItLy9PQVNJUy8vRU5USVRJRVMgRG9jQm9vayBOb3RhdGlvbnMgVjQuM0NSMy8vRU4iCiAgImRibm90bngubW9kIj4KICAlZGJub3RuOwogIAogIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlsZWQgaW5mb3JtYXRpb24gb24gdGhlIHBhcmFtZXRlcgogIGVudGl0eSBhbmQgbW9kdWxlIHNjaGVtZSB1c2VkIGluIERvY0Jvb2ssIGN1c3RvbWl6aW5nIERvY0Jvb2sgYW5kCiAgcGxhbm5pbmcgZm9yIGludGVyY2hhbmdlLCBhbmQgY2hhbmdlcyBtYWRlIHNpbmNlIHRoZSBsYXN0IHJlbGVhc2UKICBvZiBEb2NCb29rLgotLT4KPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4KICA8eHM6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiBzY2hlbWFMb2NhdGlvbj0ieG1sLnhzZCIvPgogIDx4czpzaW1wbGVUeXBlIG5hbWU9Im5vdGF0aW9uLmNsYXNzIj4KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQk1QIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQ0dNLUNIQVIiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJDR00tQklOQVJZIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQ0dNLUNMRUFSIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iRElUUk9GRiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkRWSSIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkVQUyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkVRTiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkZBWCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkdJRiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkdJRjg3YSIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkdJRjg5YSIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkpQRyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkpQRUciLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJJR0VTIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUENYIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUElDIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUE5HIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUFMiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJTR01MIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iVEJMIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iVEVYIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iVElGRiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IldNRiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IldQRyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlNWRyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlBERiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlNXRiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVzcGVjaWZpYyIvPgogICAgPC94czpyZXN0cmljdGlvbj4KICA8L3hzOnNpbXBsZVR5cGU+CjwveHM6c2NoZW1hPgo8IS0tIFdvcmRQZXJmZWN0IEdyYXBoaWMgZm9ybWF0IC0tPgo8IS0tIEVuZCBvZiBEb2NCb29rIG5vdGF0aW9ucyBtb2R1bGUgVjQuM0NSMyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4K
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgWE1MIGluZm9ybWF0aW9uIHBvb2wgbW9kdWxlIFY0LjNDUjMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkYnBvb2x4Lm1vZCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDIgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogZGJwb29seC5tb2QsdiAxLjg1IDIwMDQvMDEvMjEgMTg6NTQ6MjEgbndhbHNoIEV4cCAkCiAgCiAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSBhbmQgZGlzdHJpYnV0ZSB0aGUgRG9jQm9vayBYTUwgRFRECiAgYW5kIGl0cyBhY2NvbXBhbnlpbmcgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlCiAgaXMgaGVyZWJ5IGdyYW50ZWQgaW4gcGVycGV0dWl0eSwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0CiAgbm90aWNlIGFuZCB0aGlzIHBhcmFncmFwaCBhcHBlYXIgaW4gYWxsIGNvcGllcy4gIFRoZSBjb3B5cmlnaHQKICBob2xkZXJzIG1ha2Ugbm8gcmVwcmVzZW50YXRpb24gYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoZSBEVEQgZm9yCiAgYW55IHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzc2VkIG9yIGltcGxpZWQKICB3YXJyYW50eS4KICAKICBJZiB5b3UgbW9kaWZ5IHRoZSBEb2NCb29rIFhNTCBEVEQgaW4gYW55IHdheSwgZXhjZXB0IGZvciBkZWNsYXJpbmcgYW5kCiAgcmVmZXJlbmNpbmcgYWRkaXRpb25hbCBzZXRzIG9mIGdlbmVyYWwgZW50aXRpZXMgYW5kIGRlY2xhcmluZwogIGFkZGl0aW9uYWwgbm90YXRpb25zLCBsYWJlbCB5b3VyIERURCBhcyBhIHZhcmlhbnQgb2YgRG9jQm9vay4gIFNlZQogIHRoZSBtYWludGVuYW5jZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogIAogIFBsZWFzZSBkaXJlY3QgYWxsIHF1ZXN0aW9ucywgYnVnIHJlcG9ydHMsIG9yIHN1Z2dlc3Rpb25zIGZvcgogIGNoYW5nZXMgdG8gdGhlIGRvY2Jvb2tAbGlzdHMub2FzaXMtb3Blbi5vcmcgbWFpbGluZyBsaXN0LiBGb3IgbW9yZQogIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rLy4KLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIFRoaXMgbW9kdWxlIGNvbnRhaW5zIHRoZSBkZWZpbml0aW9ucyBmb3IgdGhlIG9iamVjdHMsIGlubGluZQogIGVsZW1lbnRzLCBhbmQgc28gb24gdGhhdCBhcmUgYXZhaWxhYmxlIHRvIGJlIHVzZWQgYXMgdGhlIG1haW4KICBjb250ZW50IG9mIERvY0Jvb2sgZG9jdW1lbnRzLiAgU29tZSBlbGVtZW50cyBhcmUgdXNlZnVsIGZvciBnZW5lcmFsCiAgcHVibGlzaGluZywgYW5kIG90aGVycyBhcmUgdXNlZnVsIHNwZWNpZmljYWxseSBmb3IgY29tcHV0ZXIKICBkb2N1bWVudGF0aW9uLgogIAogIFRoaXMgbW9kdWxlIGhhcyB0aGUgZm9sbG93aW5nIGRlcGVuZGVuY2llcyBvbiBvdGhlciBtb2R1bGVzOgogIAogIG8gSXQgYXNzdW1lcyB0aGF0IGEgJW5vdGF0aW9uLmNsYXNzOyBlbnRpdHkgaXMgZGVmaW5lZCBieSB0aGUKICAgIGRyaXZlciBmaWxlIG9yIG90aGVyIGhpZ2gtbGV2ZWwgbW9kdWxlLiAgVGhpcyBlbnRpdHkgaXMKICAgIHJlZmVyZW5jZWQgaW4gdGhlIE5PVEFUSU9OIGF0dHJpYnV0ZXMgZm9yIHRoZSBncmFwaGljLXJlbGF0ZWQgYW5kCiAgICBNb2RlU3BlYyBlbGVtZW50cy4KICAKICBvIEl0IGFzc3VtZXMgdGhhdCBhbiBhcHByb3ByaWF0ZWx5IHBhcmFtZXRlcml6ZWQgdGFibGUgbW9kdWxlIGlzCiAgICBhdmFpbGFibGUgZm9yIHVzZSB3aXRoIHRoZSB0YWJsZS1yZWxhdGVkIGVsZW1lbnRzLgogIAogIEluIERURCBkcml2ZXIgZmlsZXMgcmVmZXJyaW5nIHRvIHRoaXMgbW9kdWxlLCBwbGVhc2UgdXNlIGFuIGVudGl0eQogIGRlY2xhcmF0aW9uIHRoYXQgdXNlcyB0aGUgcHVibGljIGlkZW50aWZpZXIgc2hvd24gYmVsb3c6CiAgCiAgPCFFTlRJVFkgJSBkYnBvb2wgUFVCTElDCiAgIi0vL09BU0lTLy9FTEVNRU5UUyBEb2NCb29rIFhNTCBJbmZvcm1hdGlvbiBQb29sIFY0LjNDUjMvL0VOIgogICJkYnBvb2x4Lm1vZCI+CiAgJWRicG9vbDsKICAKICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIHRoZSBwYXJhbWV0ZXIKICBlbnRpdHkgYW5kIG1vZHVsZSBzY2hlbWUgdXNlZCBpbiBEb2NCb29rLCBjdXN0b21pemluZyBEb2NCb29rIGFuZAogIHBsYW5uaW5nIGZvciBpbnRlcmNoYW5nZSwgYW5kIGNoYW5nZXMgbWFkZSBzaW5jZSB0aGUgbGFzdCByZWxlYXNlCiAgb2YgRG9jQm9vay4KLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSBHZW5lcmFsLXB1cnBvc2Ugc2VtYW50aWNzIGVudGl0aWVzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8eHM6c2NoZW1hIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiPgogIDx4czppbmNsdWRlIHNjaGVtYUxvY2F0aW9uPSJodG1sdGJseC54c2QiLz4KICA8eHM6aW5jbHVkZSBzY2hlbWFMb2NhdGlvbj0iY2Fsc3RibHgueHNkIi8+CiAgPHhzOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIgc2NoZW1hTG9jYXRpb249InhtbC54c2QiLz4KICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJ5ZXNvcm5vLmF0dHZhbHMiPgogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyIvPgogIDwveHM6c2ltcGxlVHlwZT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBFbnRpdGllcyBmb3IgbW9kdWxlIGluY2x1c2lvbnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEVudGl0aWVzIGZvciBlbGVtZW50IGNsYXNzZXMgYW5kIG1peHR1cmVzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSAiVWJpcXVpdG91cyIgY2xhc3NlczogbmR4dGVybS5jbGFzcyBhbmQgYmVnaW5wYWdlIC0tPgogIDx4czplbGVtZW50IG5hbWU9Im5keHRlcm0uY2xhc3MiIGFic3RyYWN0PSJ0cnVlIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJwcmltYXJ5Ii8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNlY29uZGFyeSIvPgogICAgICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZXJ0aWFyeSIvPgogICAgICAgICAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNlZSIvPgogICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWVhbHNvIi8+CiAgICAgICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2VlIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VlYWxzbyIvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNlZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VlYWxzbyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleHRlcm0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBPYmplY3QtbGV2ZWwgY2xhc3NlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czplbGVtZW50IG5hbWU9Imxpc3QuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYWRtb24uY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibGluZXNwZWNpZmljLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDx4czplbGVtZW50IG5hbWU9Im1ldGhvZC5zeW5vcC5jbGFzcyIgYWJzdHJhY3Q9InRydWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJzeW5vcC5jbGFzcyIvPgogIDx4czplbGVtZW50IG5hbWU9InN5bm9wLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDx4czplbGVtZW50IG5hbWU9InBhcmEuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5mb3JtYWwuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZm9ybWFsLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDwhLS0gVGhlIERvY0Jvb2sgVEMgbWF5IHByb2R1Y2UgYW4gb2ZmaWNpYWwgRUJORiBtb2R1bGUgZm9yIERvY0Jvb2suIC0tPgogIDwhLS0gVGhpcyBQRSBwcm92aWRlcyB0aGUgaG9vayBieSB3aGljaCBpdCBjYW4gYmUgaW5zZXJ0ZWQgaW50byB0aGUgRFRELiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb21wb3VuZC5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6Z3JvdXAgbmFtZT0iZ2Vub2JqLmNsYXNzIj4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYW5jaG9yIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYnJpZGdlaGVhZCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InJlbWFyayIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImhpZ2hsaWdodHMiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImRlc2NvYmouY2xhc3MiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhYnN0cmFjdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImF1dGhvcmJsdXJiIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZXBpZ3JhcGgiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBDaGFyYWN0ZXItbGV2ZWwgY2xhc3NlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czplbGVtZW50IG5hbWU9InhyZWYuY2hhci5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6ZWxlbWVudCBuYW1lPSJnZW4uY2hhci5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6ZWxlbWVudCBuYW1lPSJsaW5rLmNoYXIuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPCEtLSBUaGUgRG9jQm9vayBUQyBtYXkgcHJvZHVjZSBhbiBvZmZpY2lhbCBFQk5GIG1vZHVsZSBmb3IgRG9jQm9vay4gLS0+CiAgPCEtLSBUaGlzIFBFIHByb3ZpZGVzIHRoZSBob29rIGJ5IHdoaWNoIGl0IGNhbiBiZSBpbnNlcnRlZCBpbnRvIHRoZSBEVEQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InRlY2guY2hhci5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6Z3JvdXAgbmFtZT0iYmFzZS5jaGFyLmNsYXNzIj4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhbmNob3IiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJkb2NpbmZvLmNoYXIuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmdyb3VwIG5hbWU9Im90aGVyLmNoYXIuY2xhc3MiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZW1hcmsiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJzY3JpcHQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdXBlcnNjcmlwdCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmxpbmVvYmouY2hhci5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBFbnRpdGllcyBmb3IgY29udGVudCBtb2RlbHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czpncm91cCBuYW1lPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0idGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlYWJicmV2Ii8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBSZWRlY2xhcmF0aW9uIHBsYWNlaG9sZGVyIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0KICAgIEZvciByZWRlY2xhcmluZyBlbnRpdGllcyB0aGF0IGFyZSBkZWNsYXJlZCBhZnRlciB0aGlzIHBvaW50IHdoaWxlCiAgICByZXRhaW5pbmcgdGhlaXIgcmVmZXJlbmNlcyB0byB0aGUgZW50aXRpZXMgdGhhdCBhcmUgZGVjbGFyZWQgYmVmb3JlCiAgICB0aGlzIHBvaW50CiAgLS0+CiAgPCEtLSBPYmplY3QtbGV2ZWwgbWl4dHVyZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0KICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0IGFkbW4gbGluZSBzeW5wIHBhcmEgaW5mbSBmb3JtIGNtcGQgZ2VuICBkZXNjCiAgICBDb21wb25lbnQgbWl4dHVyZSAgICAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYCiAgICBTaWRlYmFyIG1peHR1cmUgICAgICAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIGEgICAgWAogICAgRm9vdG5vdGUgbWl4dHVyZSAgICAgICAgWCAgICAgICAgIFggICAgWCAgICBYICAgIFgKICAgIEV4YW1wbGUgbWl4dHVyZSAgICAgICAgIFggICAgICAgICBYICAgIFggICAgWCAgICBYCiAgICBIaWdobGlnaHRzIG1peHR1cmUgICAgICBYICAgIFggICAgICAgICAgICAgIFgKICAgIFBhcmFncmFwaCBtaXh0dXJlICAgICAgIFggICAgICAgICBYICAgIFggICAgICAgICBYCiAgICBBZG1vbml0aW9uIG1peHR1cmUgICAgICBYICAgICAgICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIGIgICAgYwogICAgRmlndXJlIG1peHR1cmUgICAgICAgICAgICAgICAgICAgIFggICAgWCAgICAgICAgIFgKICAgIFRhYmxlIGVudHJ5IG1peHR1cmUgICAgIFggICAgWCAgICBYICAgICAgICAgWCAgICBkCiAgICBHbG9zc2FyeSBkZWYgbWl4dHVyZSAgICBYICAgICAgICAgWCAgICBYICAgIFggICAgWCAgICAgICAgIGUKICAgIExlZ2FsIG5vdGljZSBtaXh0dXJlICAgIFggICAgWCAgICBYICAgICAgICAgWCAgICBmCiAgICAKICAgIGEuIEp1c3QgUHJvY2VkdXJlOyBub3QgU2lkZWJhciBpdHNlbGYgb3IgTXNnU2V0LgogICAgYi4gTm8gTXNnU2V0LgogICAgYy4gTm8gSGlnaGxpZ2h0cy4KICAgIGQuIEp1c3QgR3JhcGhpYzsgbm8gb3RoZXIgaW5mb3JtYWwgb2JqZWN0cy4KICAgIGUuIE5vIEFuY2hvciwgQnJpZGdlSGVhZCwgb3IgSGlnaGxpZ2h0cy4KICAgIGYuIEp1c3QgQmxvY2tRdW90ZTsgbm8gb3RoZXIgaW5mb3JtYWwgb2JqZWN0cy4KICAtLT4KICA8eHM6Z3JvdXAgbmFtZT0iY29tcG9uZW50Lm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29tcG91bmQuY2xhc3MiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZ2Vub2JqLmNsYXNzIi8+CiAgICAgIDx4czpncm91cCByZWY9ImRlc2NvYmouY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJzaWRlYmFyLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJvY2VkdXJlIi8+CiAgICAgIDx4czpncm91cCByZWY9Imdlbm9iai5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InFhbmRhc2V0Lm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJvY2VkdXJlIi8+CiAgICAgIDx4czpncm91cCByZWY9Imdlbm9iai5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InJldmRlc2NyaXB0aW9uLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJvY2VkdXJlIi8+CiAgICAgIDx4czpncm91cCByZWY9Imdlbm9iai5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImZvb3Rub3RlLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW5vcC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iZXhhbXBsZS5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJoaWdobGlnaHRzLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDwhLS0KICAgICVmb3JtYWwuY2xhc3M7IGlzIGV4cGxpY2l0bHkgZXhjbHVkZWQgZnJvbSBtYW55IGNvbnRleHRzIGluIHdoaWNoCiAgICBwYXJhZ3JhcGhzIGFyZSB1c2VkCiAgLS0+CiAgPHhzOmdyb3VwIG5hbWU9InBhcmEubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImFkbW9uLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW5vcC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InByb2NlZHVyZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InNpZGViYXIiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhbmNob3IiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJicmlkZ2VoZWFkIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icmVtYXJrIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iZmlndXJlLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJ0YWJlbnRyeS5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWRtb24uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JhcGhpYyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im1lZGlhb2JqZWN0Ii8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJnbG9zc2RlZi5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZW1hcmsiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJsZWdhbG5vdGljZS5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWRtb24uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmxvY2txdW90ZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InRleHRvYmplY3QubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJsb2NrcXVvdGUiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWVkaWFvYmplY3QubWl4IiBhYnN0cmFjdD0idHJ1ZSIvPgogIDx4czpncm91cCBuYW1lPSJsaXN0cHJlYW1ibGUubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWRtb24uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW5vcC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJnZW5vYmouY2xhc3MiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZGVzY29iai5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBDaGFyYWN0ZXItbGV2ZWwgbWl4dHVyZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gc2dtbC5mZWF0dXJlcyAtLT4KICA8IS0tIG5vdCBbc2dtbC5mZWF0dXJlc1sgLS0+CiAgPCEtLSBdXSBub3Qgc2dtbC5mZWF0dXJlcyAtLT4KICA8IS0tCiAgICAgICAgICAgICAgICAgICAgICAgICNQQ0QgeHJlZiB3b3JkIGxpbmsgY3B0ciBiYXNlIGRuZm8gb3RociBpbm9iIChzeW5vcCkKICAgIHBhcmEuY2hhci5taXggICAgICAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWAogICAgdGl0bGUuY2hhci5taXggICAgICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYCiAgICBuZHh0ZXJtLmNoYXIubWl4ICAgICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIGEKICAgIGNwdHIuY2hhci5taXggICAgICAgICBYICAgICAgICAgICAgICBYICAgIFggICAgWCAgICAgICAgIFggICAgYQogICAgc21hbGxjcHRyLmNoYXIubWl4ICAgIFggICAgICAgICAgICAgICAgICAgYiAgICAgICAgICAgICAgICAgICBhCiAgICB3b3JkLmNoYXIubWl4ICAgICAgICAgWCAgICAgICAgIGMgICAgWCAgICAgICAgIFggICAgICAgICBYICAgIGEKICAgIGRvY2luZm8uY2hhci5taXggICAgICBYICAgICAgICAgZCAgICBYICAgIGIgICAgICAgICAgICAgIFggICAgYQogICAgCiAgICBhLiBKdXN0IElubGluZUdyYXBoaWM7IG5vIElubGluZUVxdWF0aW9uLgogICAgYi4gSnVzdCBSZXBsYWNlYWJsZTsgbm8gb3RoZXIgY29tcHV0ZXIgdGVybXMuCiAgICBjLiBKdXN0IEVtcGhhc2lzIGFuZCBUcmFkZW1hcms7IG5vIG90aGVyIHdvcmQgZWxlbWVudHMuCiAgICBkLiBKdXN0IEFjcm9ueW0sIEVtcGhhc2lzLCBhbmQgVHJhZGVtYXJrOyBubyBvdGhlciB3b3JkIGVsZW1lbnRzLgogIC0tPgogIDwhLS0gVGhlIERvY0Jvb2sgVEMgbWF5IHByb2R1Y2UgYW4gb2ZmaWNpYWwgZm9ybXMgbW9kdWxlIGZvciBEb2NCb29rLiAtLT4KICA8IS0tIFRoaXMgUEUgcHJvdmlkZXMgdGhlIGhvb2sgYnkgd2hpY2ggaXQgY2FuIGJlIGluc2VydGVkIGludG8gdGhlIERURC4gLS0+CiAgPHhzOmdyb3VwIG5hbWU9InBhcmEuY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ4cmVmLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdlbi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRlY2guY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJhc2UuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZG9jaW5mby5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lb2JqLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InRpdGxlLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ieHJlZi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnZW4uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImRvY2luZm8uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW9iai5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJuZHh0ZXJtLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ieHJlZi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnZW4uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImRvY2luZm8uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZWdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJjcHRyLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJvdGhlci5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVncmFwaGljIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVtZWRpYW9iamVjdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJzbWFsbGNwdHIuY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXBsYWNlYWJsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgICA8L3hzOmNob2ljZT4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0id29yZC5jaGFyLm1peCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjcm9ueW0iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtcGhhc2lzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0cmFkZW1hcmsiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJhc2UuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZWdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImRvY2luZm8uY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtcGhhc2lzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0cmFkZW1hcmsiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlcGxhY2VhYmxlIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBFTlRJVFkgJSBiaWJsaW9jb21wb25lbnQubWl4IChzZWUgQmlibGlvZ3JhcGhpYyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSBFTlRJVFkgJSBwZXJzb24uaWRlbnQubWl4IChzZWUgQmlibGlvZ3JhcGhpYyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gRW50aXRpZXMgZm9yIGF0dHJpYnV0ZXMgYW5kIGF0dHJpYnV0ZSBjb21wb25lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEVmZmVjdGl2aXR5IGF0dHJpYnV0ZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLQogICAgQXJjaDogQ29tcHV0ZXIgb3IgY2hpcCBhcmNoaXRlY3R1cmUgdG8gd2hpY2ggZWxlbWVudCBhcHBsaWVzOyBubwogICAgZGVmYXVsdAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcmNoLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFyY2giLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gQ29uZGl0aW9uOiBHZW5lcmFsLXB1cnBvc2UgZWZmZWN0aXZpdHkgYXR0cmlidXRlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25kaXRpb24uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29uZGl0aW9uIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIENvbmZvcm1hbmNlOiBTdGFuZGFyZHMgY29uZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mb3JtYW5jZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb25mb3JtYW5jZSIgdHlwZT0ieHM6Tk1UT0tFTlMiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gT1M6IE9wZXJhdGluZyBzeXN0ZW0gdG8gd2hpY2ggZWxlbWVudCBhcHBsaWVzOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcyIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBSZXZpc2lvbjogRWRpdG9yaWFsIHJldmlzaW9uIHRvIHdoaWNoIGVsZW1lbnQgYmVsb25nczsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aXNpb24uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmV2aXNpb24iLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gU2VjdXJpdHk6IFNlY3VyaXR5IGNsYXNzaWZpY2F0aW9uOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN1cml0eS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWN1cml0eSIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgVXNlckxldmVsOiBMZXZlbCBvZiB1c2VyIGV4cGVyaWVuY2UgdG8gd2hpY2ggZWxlbWVudCBhcHBsaWVzOyBubwogICAgZGVmYXVsdAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ1c2VybGV2ZWwuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXNlcmxldmVsIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIFZlbmRvcjogQ29tcHV0ZXIgdmVuZG9yIHRvIHdoaWNoIGVsZW1lbnQgYXBwbGllczsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmVuZG9yLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZlbmRvciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVmZmVjdGl2aXR5LmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcmNoLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZGl0aW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZm9ybWFuY2UuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvcy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldmlzaW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXJpdHkuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ1c2VybGV2ZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2ZW5kb3IuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIENvbW1vbiBhdHRyaWJ1dGVzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBJZDogVW5pcXVlIGlkZW50aWZpZXIgb2YgZWxlbWVudDsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaWQuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InhzOklEIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBJZDogVW5pcXVlIGlkZW50aWZpZXIgb2YgZWxlbWVudDsgYSB2YWx1ZSBtdXN0IGJlIHN1cHBsaWVkOyBubwogICAgZGVmYXVsdAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpZHJlcS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpZCIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6SUQiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0KICAgIExhbmc6IEluZGljYXRvciBvZiBsYW5ndWFnZSBpbiB3aGljaCBlbGVtZW50IGlzIHdyaXR0ZW4sIGZvcgogICAgdHJhbnNsYXRpb24sIGNoYXJhY3RlciBzZXQgbWFuYWdlbWVudCwgZXRjLjsgbm8gZGVmYXVsdAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsYW5nLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhbmciLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gUmVtYXA6IFByZXZpb3VzIHJvbGUgb2YgZWxlbWVudCBiZWZvcmUgY29udmVyc2lvbjsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVtYXAuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVtYXAiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gUm9sZTogTmV3IHJvbGUgb2YgZWxlbWVudCBpbiBsb2NhbCBlbnZpcm9ubWVudDsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb2xlIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBYUmVmTGFiZWw6IEFsdGVybmF0ZSBsYWJlbGluZyBzdHJpbmcgZm9yIFhSZWYgdGV4dCBnZW5lcmF0aW9uOwogICAgZGVmYXVsdCBpcyB1c3VhbGx5IHRpdGxlIG9yIG90aGVyIGFwcHJvcHJpYXRlIGxhYmVsIHRleHQgYWxyZWFkeQogICAgY29udGFpbmVkIGluIGVsZW1lbnQKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ieHJlZmxhYmVsLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InhyZWZsYWJlbCIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgUmV2aXNpb25GbGFnOiBSZXZpc2lvbiBzdGF0dXMgb2YgZWxlbWVudDsgZGVmYXVsdCBpcyB0aGF0IGVsZW1lbnQKICAgIHdhc24ndCByZXZpc2VkCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldmlzaW9uZmxhZy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXZpc2lvbmZsYWciPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjaGFuZ2VkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImFkZGVkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRlbGV0ZWQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib2ZmIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRpcjogQmlkaXJlY3Rpb25hbCBvdmVycmlkZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGlyLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRpciI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imx0ciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJydGwiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibHJvIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJsbyIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSB4bWw6YmFzZTogYmFzZSBVUkkgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InhtbC1iYXNlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIHJlZj0ieG1sOmJhc2UiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gUm9sZSBpcyBpbmNsdWRlZCBleHBsaWNpdGx5IG9uIGVhY2ggZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29tbW9uLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpZC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhbmcuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZW1hcC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InhyZWZsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldmlzaW9uZmxhZy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVmZmVjdGl2aXR5LmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZGlyLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ieG1sLWJhc2UuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIFJvbGUgaXMgaW5jbHVkZWQgZXhwbGljaXRseSBvbiBlYWNoIGVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlkcmVxLmNvbW1vbi5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaWRyZXEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYW5nLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVtYXAuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4cmVmbGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZpc2lvbmZsYWcuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlZmZlY3Rpdml0eS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRpci5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InhtbC1iYXNlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBTZW1pLWNvbW1vbiBhdHRyaWJ1dGVzIGFuZCBvdGhlciBhdHRyaWJ1dGUgZW50aXRpZXMgLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0KICAgIEVudGl0eVJlZjogTmFtZSBvZiBhbiBleHRlcm5hbCBlbnRpdHkgY29udGFpbmluZyB0aGUgY29udGVudAogICAgb2YgdGhlIGdyYXBoaWMKICAtLT4KICA8IS0tCiAgICBGaWxlUmVmOiBGaWxlbmFtZSwgcXVhbGlmaWVkIGJ5IGEgcGF0aG5hbWUgaWYgZGVzaXJlZCwKICAgIGRlc2lnbmF0aW5nIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGNvbnRlbnQgb2YgdGhlIGdyYXBoaWMKICAtLT4KICA8IS0tIEZvcm1hdDogTm90YXRpb24gb2YgdGhlIGVsZW1lbnQgY29udGVudCwgaWYgYW55IC0tPgogIDwhLS0gU3JjQ3JlZGl0OiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgc291cmNlIG9mIHRoZSBHcmFwaGljIC0tPgogIDwhLS0gV2lkdGg6IFNhbWUgYXMgQ0FMUyByZXByb3dpZCAoZGVzaXJlZCB3aWR0aCkgLS0+CiAgPCEtLSBEZXB0aDogU2FtZSBhcyBDQUxTIHJlcHJvZGVwIChkZXNpcmVkIGRlcHRoKSAtLT4KICA8IS0tCiAgICBBbGlnbjogU2FtZSBhcyBDQUxTIGhwbGFjZSB3aXRoICdub25lJyByZW1vdmVkOyAjSU1QTElFRCBtZWFucwogICAgYXBwbGljYXRpb24tc3BlY2lmaWMKICAtLT4KICA8IS0tIFNjYWxlOiBDb25mbGF0aW9uIG9mIENBTFMgaHNjYWxlIGFuZCB2c2NhbGUgLS0+CiAgPCEtLSBTY2FsZWZpdDogU2FtZSBhcyBDQUxTIHNjYWxlZml0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJncmFwaGljcy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbnRpdHlyZWYiIHR5cGU9InhzOkVOVElUWSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmaWxlcmVmIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvcm1hdCIgdHlwZT0ibm90YXRpb24uY2xhc3MiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3JjY3JlZGl0Ii8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndpZHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRlbnR3aWR0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZXB0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250ZW50ZGVwdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsZWZ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJpZ2h0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNlbnRlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWlkZGxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzY2FsZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzY2FsZWZpdCIgdHlwZT0ieWVzb3Juby5hdHR2YWxzIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBBY3Rpb246IEtleSBjb21iaW5hdGlvbiB0eXBlOyBkZWZhdWx0IGlzIHVuc3BlY2lmaWVkIGlmIG9uZQogICAgY2hpbGQgZWxlbWVudCwgU2ltdWwgaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZTsgaWYgdmFsdWUgaXMKICAgIE90aGVyLCB0aGUgT3RoZXJBY3Rpb24gYXR0cmlidXRlIG11c3QgaGF2ZSBhIG5vbmVtcHR5IHZhbHVlCiAgLS0+CiAgPCEtLSBPdGhlckFjdGlvbjogVXNlci1kZWZpbmVkIGtleSBjb21iaW5hdGlvbiB0eXBlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJrZXlhY3Rpb24uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWN0aW9uIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2xpY2siLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZG91YmxlLWNsaWNrIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InByZXNzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlcSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzaW11bCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcmFjdGlvbiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgTGFiZWw6IElkZW50aWZ5aW5nIG51bWJlciBvciBzdHJpbmc7IGRlZmF1bHQgaXMgdXN1YWxseSB0aGUKICAgIGFwcHJvcHJpYXRlIG51bWJlciBvciBzdHJpbmcgYXV0b2dlbmVyYXRlZCBieSBhIGZvcm1hdHRlcgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsYWJlbC5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbCIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgRm9ybWF0OiB3aGV0aGVyIGVsZW1lbnQgaXMgYXNzdW1lZCB0byBjb250YWluIHNpZ25pZmljYW50IHdoaXRlCiAgICBzcGFjZQogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaW5lc3BlY2lmaWMuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZm9ybWF0IiBkZWZhdWx0PSJsaW5lc3BlY2lmaWMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lc3BlY2lmaWMiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGluZW51bWJlcmluZyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im51bWJlcmVkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InVubnVtYmVyZWQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29udGludWF0aW9uIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29udGludWVzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlc3RhcnRzIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0YXJ0aW5nbGluZW51bWJlciIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYW5ndWFnZSIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBMaW5rZW5kOiBsaW5rIHRvIHJlbGF0ZWQgaW5mb3JtYXRpb247IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmtlbmQuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGlua2VuZCIgdHlwZT0ieHM6SURSRUYiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gTGlua2VuZDogcmVxdWlyZWQgbGluayB0byByZWxhdGVkIGluZm9ybWF0aW9uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaW5rZW5kcmVxLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxpbmtlbmQiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOklEUkVGIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBMaW5rZW5kczogbGluayB0byBvbmUgb3IgbW9yZSBzZXRzIG9mIHJlbGF0ZWQgaW5mb3JtYXRpb247IG5vCiAgICBkZWZhdWx0CiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmtlbmRzLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxpbmtlbmRzIiB0eXBlPSJ4czpJRFJFRlMiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtYXJrLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1hcmsiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gTW9yZUluZm86IHdoZXRoZXIgZWxlbWVudCdzIGNvbnRlbnQgaGFzIGFuIGFzc29jaWF0ZWQgUmVmRW50cnkgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1vcmVpbmZvLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1vcmVpbmZvIiBkZWZhdWx0PSJub25lIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVmZW50cnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibm9uZSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBQYWdlbnVtOiBudW1iZXIgb2YgcGFnZSBvbiB3aGljaCBlbGVtZW50IGFwcGVhcnM7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhZ2VudW0uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGFnZW51bSIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgU3RhdHVzOiBFZGl0b3JpYWwgb3IgcHVibGljYXRpb24gc3RhdHVzIG9mIHRoZSBlbGVtZW50CiAgICBpdCBhcHBsaWVzIHRvLCBzdWNoIGFzICJpbiByZXZpZXciIG9yICJhcHByb3ZlZCBmb3IgZGlzdHJpYnV0aW9uIgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdGF0dXMuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RhdHVzIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBXaWR0aDogd2lkdGggb2YgdGhlIGxvbmdlc3QgbGluZSBpbiB0aGUgZWxlbWVudCB0byB3aGljaCBpdAogICAgcGVydGFpbnMsIGluIG51bWJlciBvZiBjaGFyYWN0ZXJzCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9IndpZHRoLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndpZHRoIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBUaXRsZSBlbGVtZW50cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0aXRsZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGl0bGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGl0bGUuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGl0bGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGl0bGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGl0bGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGl0bGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRpdGxlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdGl0bGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0aXRsZWFiYnJldi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGl0bGVhYmJyZXYiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGl0bGUuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGl0bGVhYmJyZXYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGl0bGVhYmJyZXYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGl0bGVhYmJyZXYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0aXRsZWFiYnJldi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdGl0bGVhYmJyZXYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0aXRsZWFiYnJldi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YnRpdGxlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdWJ0aXRsZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0aXRsZS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJ0aXRsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdWJ0aXRsZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJ0aXRsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YnRpdGxlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdWJ0aXRsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN1YnRpdGxlLm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBCaWJsaW9ncmFwaGljIGVudGl0aWVzIGFuZCBlbGVtZW50cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0KICAgIFRoZSBiaWJsaW9ncmFwaGljIGVsZW1lbnRzIGFyZSB0eXBpY2FsbHkgdXNlZCBpbiB0aGUgZG9jdW1lbnQKICAgIGhpZXJhcmNoeS4gVGhleSBkbyBub3QgYXBwZWFyIGluIGNvbnRlbnQgbW9kZWxzIG9mIGluZm9ybWF0aW9uCiAgICBwb29sIGVsZW1lbnRzLiAgU2VlIGFsc28gdGhlIGRvY3VtZW50IGluZm9ybWF0aW9uIGVsZW1lbnRzLAogICAgYmVsb3cuCiAgLS0+CiAgPHhzOmdyb3VwIG5hbWU9InBlcnNvbi5pZGVudC5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJob25vcmlmaWMiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmaXJzdG5hbWUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdXJuYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZWFnZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im90aGVybmFtZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFmZmlsaWF0aW9uIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYXV0aG9yYmx1cmIiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb250cmliIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJiaWJsaW9jb21wb25lbnQubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWJicmV2Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWJzdHJhY3QiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZGRyZXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYXJ0cGFnZW51bXMiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhdXRob3IiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhdXRob3Jncm91cCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImF1dGhvcmluaXRpYWxzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvbWlzYyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb3NldCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbGxhYiIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbmZncm91cCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbnRyYWN0bnVtIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29udHJhY3RzcG9uc29yIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29weXJpZ2h0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29ycGF1dGhvciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvcnBuYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29ycGNyZWRpdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImRhdGUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlZGl0aW9uIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZWRpdG9yIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW52cGFydG51bWJlciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImlzYm4iLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpc3NuIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaXNzdWVudW0iLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvcmduYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvaWQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjaXRlYmlibGlvaWQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9zb3VyY2UiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9yZWxhdGlvbiIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb2NvdmVyYWdlIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ib3RoZXJjcmVkaXQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYWdlbnVtcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InByaW50aGlzdG9yeSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InByb2R1Y3RuYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJvZHVjdG51bWJlciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InB1YmRhdGUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwdWJsaXNoZXIiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwdWJsaXNoZXJuYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHVic251bWJlciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InJlbGVhc2VpbmZvIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icmV2aGlzdG9yeSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InNlcmllc3ZvbG51bXMiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InRpdGxlIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0idGl0bGVhYmJyZXYiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ2b2x1bWVudW0iLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjaXRldGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwZXJzb25uYW1lIi8+CiAgICAgIDx4czpncm91cCByZWY9InBlcnNvbi5pZGVudC5taXgiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDwhLS0gSSBkb24ndCB0aGluayB0aGlzIGlzIHdlbGwgcGxhY2VkLCBidXQgaXQgbmVlZHMgdG8gYmUgaGVyZSBiZWNhdXNlIG9mIC0tPgogIDwhLS0gdGhlIHJlZmVyZW5jZSB0byBiaWJsaW9jb21wb25lbnQubWl4IC0tPgogIDx4czpncm91cCBuYW1lPSJpbmZvLmNsYXNzIj4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JhcGhpYyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im1lZGlhb2JqZWN0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGVnYWxub3RpY2UiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtb2Rlc3BlYyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN1YmplY3RzZXQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJrZXl3b3Jkc2V0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaXRlcm1zZXQiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iYmlibGlvY29tcG9uZW50Lm1peCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb2VudHJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcnRpY2xlaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJpYmxpb2NvbXBvbmVudC5taXgiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2VudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb2VudHJ5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2VudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb2VudHJ5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYmlibGlvZW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9taXhlZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvbWl4ZWQiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiaWJsaW9jb21wb25lbnQubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9tc2V0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9taXhlZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiaWJsaW9taXhlZC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9taXhlZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb21peGVkLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9taXhlZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb21peGVkLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJ0aWNsZWluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFydGljbGVpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJ0aWNsZWluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXJ0aWNsZWluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJ0aWNsZWluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcnRpY2xlaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXJ0aWNsZWluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhcnRpY2xlaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb3NldC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvc2V0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImJpYmxpb2NvbXBvbmVudC5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb3NldC5lbGVtZW50IC0tPgogIDwhLS0gUmVsYXRpb246IFJlbGF0aW9uc2hpcCBvZiBlbGVtZW50cyBjb250YWluZWQgd2l0aGluIEJpYmxpb1NldCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvc2V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWxhdGlvbiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvc2V0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9zZXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9zZXQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9tc2V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9tc2V0Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYmlibGlvY29tcG9uZW50Lm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvbXNldCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvbXNldC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiaWJsaW9tc2V0LmVsZW1lbnQgLS0+CiAgPCEtLSBSZWxhdGlvbjogUmVsYXRpb25zaGlwIG9mIGVsZW1lbnRzIGNvbnRhaW5lZCB3aXRoaW4gQmlibGlvTVNldCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvbXNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVsYXRpb24iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb21zZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb21zZXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9tc2V0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvbWlzYy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvbWlzYyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb21pc2MuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmlibGlvbWlzYy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9taXNjLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvbWlzYy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmlibGlvbWlzYy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb21pc2MubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFN1YmplY3QsIEtleXdvcmQsIGFuZCBJVGVybVNldCBlbGVtZW50cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YmplY3RzZXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN1YmplY3RzZXQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic3ViamVjdCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJqZWN0c2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN1YmplY3RzZXQuZWxlbWVudCAtLT4KICA8IS0tIFNjaGVtZTogQ29udHJvbGxlZCB2b2NhYnVsYXJ5IGVtcGxveWVkIGluIFN1YmplY3RUZXJtcyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3ViamVjdHNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2NoZW1lIiB0eXBlPSJ4czpOTVRPS0VOIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJqZWN0c2V0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdWJqZWN0c2V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3ViamVjdHNldC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YmplY3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN1YmplY3QiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic3ViamVjdHRlcm0iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3ViamVjdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdWJqZWN0LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgV2VpZ2h0OiBSYW5raW5nIG9mIHRoaXMgZ3JvdXAgb2YgU3ViamVjdFRlcm1zIHJlbGF0aXZlCiAgICB0byBvdGhlcnMsIDAgaXMgbG93LCBubyBoaWdoZXN0IHZhbHVlIHNwZWNpZmllZAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJqZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3ZWlnaHQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YmplY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN1YmplY3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzdWJqZWN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3ViamVjdHRlcm0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN1YmplY3R0ZXJtIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YmplY3R0ZXJtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN1YmplY3R0ZXJtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YmplY3R0ZXJtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3ViamVjdHRlcm0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN1YmplY3R0ZXJtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3ViamVjdHRlcm0ubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHN1YmplY3RzZXQuY29udGVudC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImtleXdvcmRzZXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImtleXdvcmRzZXQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ia2V5d29yZCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXl3b3Jkc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGtleXdvcmRzZXQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5d29yZHNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleXdvcmRzZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGtleXdvcmRzZXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBrZXl3b3Jkc2V0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5d29yZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ia2V5d29yZCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXl3b3JkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGtleXdvcmQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5d29yZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleXdvcmQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGtleXdvcmQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBrZXl3b3JkLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBrZXl3b3Jkc2V0LmNvbnRlbnQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpdGVybXNldC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaXRlcm1zZXQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5kZXh0ZXJtIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Iml0ZXJtc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGl0ZXJtc2V0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Iml0ZXJtc2V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaXRlcm1zZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGl0ZXJtc2V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaXRlcm1zZXQubW9kdWxlIC0tPgogIDwhLS0gQmlibGlvZ3JhcGhpYyBpbmZvIGZvciAiYmxvY2tzIiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmxvY2tpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJibG9ja2luZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJibG9ja2luZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmxvY2tpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJsb2NraW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJsb2NraW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmxvY2tpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYmxvY2tpbmZvLm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBDb21wb3VuZCAoc2VjdGlvbi1pc2gpIGVsZW1lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gTWVzc2FnZSBzZXQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnc2V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dzZXQiIHN1YnN0aXR1dGlvbkdyb3VwPSJjb21wb3VuZC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtc2dlbnRyeSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlbXNnZW50cnkiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1zZ3NldC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dzZXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dzZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1zZ3NldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1zZ3NldC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2VudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dlbnRyeSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtc2ciLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ibXNnaW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibXNnZXhwbGFuIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ2VudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1zZ2VudHJ5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2VudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1zZ2VudHJ5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnZW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaW1wbGVtc2dlbnRyeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2ltcGxlbXNnZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtc2d0ZXh0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibXNnZXhwbGFuIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpbXBsZW1zZ2VudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNpbXBsZW1zZ2VudHJ5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpbXBsZW1zZ2VudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhdWRpZW5jZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsZXZlbCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcmlnaW4iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpbXBsZW1zZ2VudHJ5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzaW1wbGVtc2dlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNpbXBsZW1zZ2VudHJ5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2ciPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtc2dtYWluIi8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibXNnc3ViIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1zZ3JlbCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2cuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnbWFpbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibXNnbWFpbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1zZ3RleHQiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnbWFpbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dtYWluLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ21haW4uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dtYWluLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dtYWluLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnbWFpbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ3N1Yi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibXNnc3ViIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibXNndGV4dCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dzdWIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnc3ViLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ3N1Yi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ3N1Yi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnc3ViLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnc3ViLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNncmVsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dyZWwiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtc2d0ZXh0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ3JlbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dyZWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNncmVsLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNncmVsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dyZWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dyZWwubW9kdWxlIC0tPgogIDwhLS0gTXNnVGV4dCAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2luZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ2luZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibXNnbGV2ZWwiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1zZ29yaWciLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1zZ2F1ZCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2luZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2xldmVsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dsZXZlbCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnbGV2ZWwuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnbGV2ZWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnbGV2ZWwuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dsZXZlbC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnbGV2ZWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dsZXZlbC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ29yaWcucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ29yaWciPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ29yaWcuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnb3JpZy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dvcmlnLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnb3JpZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnb3JpZy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1zZ29yaWcubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dhdWQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ2F1ZCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ2F1ZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dhdWQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnYXVkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnYXVkLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dhdWQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dhdWQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dleHBsYW4ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ2V4cGxhbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dleHBsYW4uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnZXhwbGFuLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2V4cGxhbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ2V4cGxhbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnZXhwbGFuLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnZXhwbGFuLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBtc2dzZXQuY29udGVudC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRhc2sucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRhc2siIHN1YnN0aXR1dGlvbkdyb3VwPSJjb21wb3VuZC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGFza3N1bW1hcnkiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGFza3ByZXJlcXVpc2l0ZXMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InByb2NlZHVyZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZXhhbXBsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0YXNrcmVsYXRlZCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YXNrLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRhc2suZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGFzay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRhc2sucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRhc2suYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0YXNrLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGFza3N1bW1hcnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRhc2tzdW1tYXJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGFza3N1bW1hcnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGFza3N1bW1hcnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGFza3N1bW1hcnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YXNrc3VtbWFyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdGFza3N1bW1hcnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0YXNrc3VtbWFyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRhc2twcmVyZXF1aXNpdGVzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0YXNrcHJlcmVxdWlzaXRlcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRhc2twcmVyZXF1aXNpdGVzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRhc2twcmVyZXF1aXNpdGVzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRhc2twcmVyZXF1aXNpdGVzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGFza3ByZXJlcXVpc2l0ZXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRhc2twcmVyZXF1aXNpdGVzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdGFza3ByZXJlcXVpc2l0ZXMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0YXNrcmVsYXRlZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGFza3JlbGF0ZWQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YXNrcmVsYXRlZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0YXNrcmVsYXRlZC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0YXNrcmVsYXRlZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRhc2tyZWxhdGVkLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0YXNrcmVsYXRlZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRhc2tyZWxhdGVkLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiB0YXNrLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gUWFuZEFTZXQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxYW5kYXNldC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icWFuZGFzZXQiIHN1YnN0aXR1dGlvbkdyb3VwPSJjb21wb3VuZC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InFhbmRhc2V0Lm1peCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJxYW5kYWRpdiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icWFuZGFlbnRyeSIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJxYW5kYXNldC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBxYW5kYXNldC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxYW5kYXNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVmYXVsdGxhYmVsIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icWFuZGEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibnVtYmVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vbmUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InFhbmRhc2V0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBxYW5kYXNldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHFhbmRhc2V0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icWFuZGFkaXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InFhbmRhZGl2Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icWFuZGFzZXQubWl4Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InFhbmRhZGl2Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJxYW5kYWVudHJ5Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InFhbmRhZGl2LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHFhbmRhZGl2LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InFhbmRhZGl2LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icWFuZGFkaXYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHFhbmRhZGl2LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcWFuZGFkaXYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxYW5kYWVudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJxYW5kYWVudHJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmV2aGlzdG9yeSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icXVlc3Rpb24iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFuc3dlciIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJxYW5kYWVudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHFhbmRhZW50cnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icWFuZGFlbnRyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InFhbmRhZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHFhbmRhZW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBxYW5kYWVudHJ5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icXVlc3Rpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InF1ZXN0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJsYWJlbCIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJxYW5kYXNldC5taXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icXVlc3Rpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcXVlc3Rpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icXVlc3Rpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJxdWVzdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcXVlc3Rpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBxdWVzdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFuc3dlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYW5zd2VyIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJsYWJlbCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InFhbmRhc2V0Lm1peCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icWFuZGFlbnRyeSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhbnN3ZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYW5zd2VyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFuc3dlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFuc3dlci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYW5zd2VyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYW5zd2VyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGFiZWwucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImxhYmVsIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9IndvcmQuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbGFiZWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGFiZWwuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbGFiZWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBsYWJlbC5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgcWFuZGFzZXQuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBQcm9jZWR1cmUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9jZWR1cmUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InByb2NlZHVyZSIgc3Vic3RpdHV0aW9uR3JvdXA9ImNvbXBvdW5kLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InN0ZXAiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvY2VkdXJlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByb2NlZHVyZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9jZWR1cmUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9jZWR1cmUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByb2NlZHVyZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByb2NlZHVyZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0ZXAucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN0ZXAiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPHhzOnNlcXVlbmNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic3Vic3RlcHMiLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic3RlcGFsdGVybmF0aXZlcyIvPgogICAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJzdGVwcyIvPgogICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic3RlcGFsdGVybmF0aXZlcyIvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RlcC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdGVwLmVsZW1lbnQgLS0+CiAgPCEtLSBQZXJmb3JtYW5jZTogV2hldGhlciB0aGUgU3RlcCBtdXN0IGJlIHBlcmZvcm1lZCAtLT4KICA8IS0tIG5vdCAjUkVRVUlSRUQhIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdGVwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwZXJmb3JtYW5jZSIgZGVmYXVsdD0icmVxdWlyZWQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHRpb25hbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXF1aXJlZCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RlcC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3RlcC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN0ZXAubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJzdGVwcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3Vic3RlcHMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic3RlcCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJzdGVwcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdWJzdGVwcy5lbGVtZW50IC0tPgogIDwhLS0gUGVyZm9ybWFuY2U6IHdoZXRoZXIgZW50aXJlIHNldCBvZiBzdWJzdGVwcyBtdXN0IGJlIHBlcmZvcm1lZCAtLT4KICA8IS0tIG5vdCAjUkVRVUlSRUQhIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJzdGVwcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGVyZm9ybWFuY2UiIGRlZmF1bHQ9InJlcXVpcmVkIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3B0aW9uYWwiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVxdWlyZWQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YnN0ZXBzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdWJzdGVwcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN1YnN0ZXBzLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RlcGFsdGVybmF0aXZlcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3RlcGFsdGVybmF0aXZlcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzdGVwIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0ZXBhbHRlcm5hdGl2ZXMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3RlcGFsdGVybmF0aXZlcy5lbGVtZW50IC0tPgogIDwhLS0gUGVyZm9ybWFuY2U6IFdoZXRoZXIgKG9uZSBvZikgdGhlIGFsdGVybmF0aXZlcyBtdXN0IGJlIHBlcmZvcm1lZCAtLT4KICA8IS0tIG5vdCAjUkVRVUlSRUQhIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdGVwYWx0ZXJuYXRpdmVzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwZXJmb3JtYW5jZSIgZGVmYXVsdD0icmVxdWlyZWQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHRpb25hbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXF1aXJlZCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RlcGFsdGVybmF0aXZlcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3RlcGFsdGVybmF0aXZlcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN0ZXBhbHRlcm5hdGl2ZXMubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHByb2NlZHVyZS5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIFNpZGViYXIgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpZGViYXJpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzaWRlYmFyaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpZGViYXJpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNpZGViYXJpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpZGViYXJpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2lkZWJhcmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNpZGViYXJpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2lkZWJhcmluZm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaWRlYmFyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzaWRlYmFyIiBzdWJzdGl0dXRpb25Hcm91cD0iY29tcG91bmQuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNpZGViYXJpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaWRlYmFyLm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaWRlYmFyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNpZGViYXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2lkZWJhci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpZGViYXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNpZGViYXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzaWRlYmFyLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBzaWRlYmFyLmNvbnRlbnQubW9kZWwgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gUGFyYWdyYXBoLXJlbGF0ZWQgZWxlbWVudHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWJzdHJhY3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFic3RyYWN0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWJzdHJhY3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWJzdHJhY3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWJzdHJhY3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhYnN0cmFjdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWJzdHJhY3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhYnN0cmFjdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1dGhvcmJsdXJiLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhdXRob3JibHVyYiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1dGhvcmJsdXJiLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGF1dGhvcmJsdXJiLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1dGhvcmJsdXJiLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXV0aG9yYmx1cmIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGF1dGhvcmJsdXJiLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXV0aG9yYmx1cmIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwZXJzb25ibHVyYi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGVyc29uYmx1cmIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwZXJzb25ibHVyYi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwZXJzb25ibHVyYi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwZXJzb25ibHVyYi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBlcnNvbmJsdXJiLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwZXJzb25ibHVyYi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBlcnNvbmJsdXJiLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmxvY2txdW90ZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmxvY2txdW90ZSIgc3Vic3RpdHV0aW9uR3JvdXA9ImluZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYXR0cmlidXRpb24iLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJibG9ja3F1b3RlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJsb2NrcXVvdGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmxvY2txdW90ZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJsb2NrcXVvdGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJsb2NrcXVvdGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBibG9ja3F1b3RlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXR0cmlidXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImF0dHJpYnV0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXR0cmlidXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXR0cmlidXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXR0cmlidXRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdHRyaWJ1dGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXR0cmlidXRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhdHRyaWJ1dGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJyaWRnZWhlYWQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJyaWRnZWhlYWQiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGl0bGUuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYnJpZGdlaGVhZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBicmlkZ2VoZWFkLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgUmVuZGVyYXM6IEluZGljYXRlcyB0aGUgZm9ybWF0IGluIHdoaWNoIHRoZSBCcmlkZ2VIZWFkCiAgICBzaG91bGQgYXBwZWFyCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJyaWRnZWhlYWQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbmRlcmFzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJyaWRnZWhlYWQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJyaWRnZWhlYWQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBicmlkZ2VoZWFkLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVtYXJrLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZW1hcmsiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZW1hcmsuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVtYXJrLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlbWFyay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlbWFyay5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVtYXJrLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVtYXJrLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXBpZ3JhcGgucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImVwaWdyYXBoIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJhdHRyaWJ1dGlvbiIvPgogICAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpdGVyYWxsYXlvdXQiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXBpZ3JhcGguYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZXBpZ3JhcGguZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXBpZ3JhcGguYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcGlncmFwaC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZXBpZ3JhcGguYXR0bGlzdCAtLT4KICA8IS0tIEF0dHJpYnV0aW9uIChkZWZpbmVkIGFib3ZlKSAtLT4KICA8IS0tIGVuZCBvZiBlcGlncmFwaC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvb3Rub3RlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmb290bm90ZSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImZvb3Rub3RlLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmb290bm90ZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmb290bm90ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmb290bm90ZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZm9vdG5vdGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZvb3Rub3RlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZm9vdG5vdGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJoaWdobGlnaHRzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJoaWdobGlnaHRzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImhpZ2hsaWdodHMubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImhpZ2hsaWdodHMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaGlnaGxpZ2h0cy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJoaWdobGlnaHRzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaGlnaGxpZ2h0cy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaGlnaGxpZ2h0cy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGhpZ2hsaWdodHMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmb3JtYWxwYXJhLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmb3JtYWxwYXJhIiBzdWJzdGl0dXRpb25Hcm91cD0icGFyYS5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZvcm1hbHBhcmEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZm9ybWFscGFyYS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmb3JtYWxwYXJhLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZm9ybWFscGFyYS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZm9ybWFscGFyYS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZvcm1hbHBhcmEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYXJhLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwYXJhIiBzdWJzdGl0dXRpb25Hcm91cD0icGFyYS5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJwYXJhLm1peCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFyYS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwYXJhLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcmEuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJhLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwYXJhLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcGFyYS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpbXBhcmEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNpbXBhcmEiIHN1YnN0aXR1dGlvbkdyb3VwPSJwYXJhLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2ltcGFyYS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzaW1wYXJhLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpbXBhcmEuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaW1wYXJhLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzaW1wYXJhLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2ltcGFyYS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFkbW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjYXV0aW9uIiBzdWJzdGl0dXRpb25Hcm91cD0iYWRtb24uY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFkbW9uLm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjYXV0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNhdXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2F1dGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFkbW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjYXV0aW9uLmF0dGxpc3QgLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW1wb3J0YW50IiBzdWJzdGl0dXRpb25Hcm91cD0iYWRtb24uY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFkbW9uLm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbXBvcnRhbnQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW1wb3J0YW50LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImltcG9ydGFudC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFkbW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbXBvcnRhbnQuYXR0bGlzdCAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJub3RlIiBzdWJzdGl0dXRpb25Hcm91cD0iYWRtb24uY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFkbW9uLm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJub3RlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG5vdGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibm90ZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFkbW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBub3RlLmF0dGxpc3QgLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGlwIiBzdWJzdGl0dXRpb25Hcm91cD0iYWRtb24uY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFkbW9uLm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0aXAuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGlwLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRpcC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFkbW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0aXAuYXR0bGlzdCAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ3YXJuaW5nIiBzdWJzdGl0dXRpb25Hcm91cD0iYWRtb24uY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFkbW9uLm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ3YXJuaW5nLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHdhcm5pbmcuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0id2FybmluZy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFkbW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB3YXJuaW5nLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYWRtb24ubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIExpc3RzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBHbG9zc0xpc3QgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2xpc3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdsb3NzbGlzdCIgc3Vic3RpdHV0aW9uR3JvdXA9Imxpc3QuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJnbG9zc2VudHJ5Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzbGlzdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBnbG9zc2xpc3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NsaXN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NsaXN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBnbG9zc2xpc3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBnbG9zc2xpc3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2VudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJnbG9zc2VudHJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZ2xvc3N0ZXJtIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImFjcm9ueW0iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYWJicmV2Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJldmhpc3RvcnkiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnbG9zc3NlZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ2xvc3NkZWYiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NlbnRyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBnbG9zc2VudHJ5LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU29ydEFzOiBTdHJpbmcgYnkgd2hpY2ggdGhlIEdsb3NzRW50cnkgaXMgdG8gYmUgc29ydGVkCiAgICAoYWxwaGFiZXRpemVkKSBpbiBsaWV1IG9mIGl0cyBwcm9wZXIgY29udGVudAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2VudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzb3J0YXMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3NzZW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBnbG9zc2VudHJ5Lm1vZHVsZSAtLT4KICA8IS0tIEdsb3NzVGVybSAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzZGVmLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJnbG9zc2RlZiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ2xvc3NkZWYubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJnbG9zc3NlZWFsc28iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NkZWYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ2xvc3NkZWYuZWxlbWVudCAtLT4KICA8IS0tIFN1YmplY3Q6IExpc3Qgb2Ygc3ViamVjdHM7IGtleXdvcmRzIGZvciB0aGUgZGVmaW5pdGlvbiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NkZWYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN1YmplY3QiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzZGVmLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBnbG9zc2RlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzZGVmLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NzZWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdsb3Nzc2VlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NzZWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ2xvc3NzZWUuZWxlbWVudCAtLT4KICA8IS0tCiAgICBPdGhlclRlcm06IFJlZmVyZW5jZSB0byB0aGUgR2xvc3NFbnRyeSB3aG9zZSBHbG9zc1Rlcm0KICAgIHNob3VsZCBiZSBkaXNwbGF5ZWQgYXQgdGhlIHBvaW50IG9mIHRoZSBHbG9zc1NlZQogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc3NlZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3RoZXJ0ZXJtIiB0eXBlPSJ4czpJRFJFRiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NzZWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3Nzc2VlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ2xvc3NzZWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc3NlZWFsc28ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdsb3Nzc2VlYWxzbyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3Nzc2VlYWxzby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBnbG9zc3NlZWFsc28uZWxlbWVudCAtLT4KICA8IS0tCiAgICBPdGhlclRlcm06IFJlZmVyZW5jZSB0byB0aGUgR2xvc3NFbnRyeSB3aG9zZSBHbG9zc1Rlcm0KICAgIHNob3VsZCBiZSBkaXNwbGF5ZWQgYXQgdGhlIHBvaW50IG9mIHRoZSBHbG9zc1NlZUFsc28KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NzZWVhbHNvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcnRlcm0iIHR5cGU9InhzOklEUkVGIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc3NlZWFsc28ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3Nzc2VlYWxzby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdsb3Nzc2VlYWxzby5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgZ2xvc3NlbnRyeS5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIEl0ZW1pemVkTGlzdCBhbmQgT3JkZXJlZExpc3QgLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Iml0ZW1pemVkbGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaXRlbWl6ZWRsaXN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibGlzdC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imxpc3RwcmVhbWJsZS5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJsaXN0aXRlbSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpdGVtaXplZGxpc3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaXRlbWl6ZWRsaXN0LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU3BhY2luZzogV2hldGhlciB0aGUgdmVydGljYWwgc3BhY2UgaW4gdGhlIGxpc3Qgc2hvdWxkIGJlCiAgICBjb21wcmVzc2VkCiAgLS0+CiAgPCEtLQogICAgTWFyazogS2V5d29yZCwgZS5nLiwgYnVsbGV0LCBkYXNoLCBjaGVja2JveCwgbm9uZTsKICAgIGxpc3Qgb2Yga2V5d29yZHMgYW5kIGRlZmF1bHRzIGFyZSBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYwogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpdGVtaXplZGxpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNwYWNpbmciPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JtYWwiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29tcGFjdCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWFyay5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Iml0ZW1pemVkbGlzdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaXRlbWl6ZWRsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaXRlbWl6ZWRsaXN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3JkZXJlZGxpc3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im9yZGVyZWRsaXN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibGlzdC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imxpc3RwcmVhbWJsZS5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJsaXN0aXRlbSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvcmRlcmVkbGlzdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvcmRlcmVkbGlzdC5lbGVtZW50IC0tPgogIDwhLS0KICAgIE51bWVyYXRpb246IFN0eWxlIG9mIExpc3RJdGVtIG51bWJlcmVkOyBkZWZhdWx0IGlzIGV4cGVjdGVkCiAgICB0byBiZSBBcmFiaWMKICAtLT4KICA8IS0tCiAgICBJbmhlcml0TnVtOiBTcGVjaWZpZXMgZm9yIGEgbmVzdGVkIGxpc3QgdGhhdCB0aGUgbnVtYmVyaW5nCiAgICBvZiBMaXN0SXRlbXMgc2hvdWxkIGluY2x1ZGUgdGhlIG51bWJlciBvZiB0aGUgaXRlbQogICAgd2l0aGluIHdoaWNoIHRoZXkgYXJlIG5lc3RlZCAoZS5nLiwgMWEgYW5kIDFiIHdpdGhpbiAxLAogICAgcmF0aGVyIHRoYW4gYSBhbmQgYikKICAtLT4KICA8IS0tCiAgICBDb250aW51YXRpb246IFdoZXJlIGxpc3QgbnVtYmVyaW5nIGJlZ2lucyBhZnJlc2ggKFJlc3RhcnRzLAogICAgdGhlIGRlZmF1bHQpIG9yIGNvbnRpbnVlcyB0aGF0IG9mIHRoZSBpbW1lZGlhdGVseSBwcmVjZWRpbmcKICAgIGxpc3QgKENvbnRpbnVlcykKICAtLT4KICA8IS0tCiAgICBTcGFjaW5nOiBXaGV0aGVyIHRoZSB2ZXJ0aWNhbCBzcGFjZSBpbiB0aGUgbGlzdCBzaG91bGQgYmUKICAgIGNvbXByZXNzZWQKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3JkZXJlZGxpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im51bWVyYXRpb24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhcmFiaWMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idXBwZXJhbHBoYSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsb3dlcmFscGhhIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InVwcGVycm9tYW4iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibG93ZXJyb21hbiIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbmhlcml0bnVtIiBkZWZhdWx0PSJpZ25vcmUiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpbmhlcml0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imlnbm9yZSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250aW51YXRpb24iIGRlZmF1bHQ9InJlc3RhcnRzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29udGludWVzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlc3RhcnRzIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNwYWNpbmciPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JtYWwiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29tcGFjdCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3JkZXJlZGxpc3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG9yZGVyZWRsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb3JkZXJlZGxpc3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaXN0aXRlbS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibGlzdGl0ZW0iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaXN0aXRlbS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBsaXN0aXRlbS5lbGVtZW50IC0tPgogIDwhLS0KICAgIE92ZXJyaWRlOiBJbmRpY2F0ZXMgdGhlIG1hcmsgdG8gYmUgdXNlZCBmb3IgdGhpcyBMaXN0SXRlbQogICAgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBtYXJrIG9yIHRoZSBtYXJrIHNwZWNpZmllZCBieQogICAgdGhlIE1hcmsgYXR0cmlidXRlIG9uIHRoZSBlbmNsb3NpbmcgSXRlbWl6ZWRMaXN0CiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imxpc3RpdGVtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdmVycmlkZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlzdGl0ZW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxpc3RpdGVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGlzdGl0ZW0ubW9kdWxlIC0tPgogIDwhLS0gU2VnbWVudGVkTGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VnbWVudGVkbGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VnbWVudGVkbGlzdCIgc3Vic3RpdHV0aW9uR3JvdXA9Imxpc3QuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlZ3RpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VnbGlzdGl0ZW0iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VnbWVudGVkbGlzdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWdtZW50ZWRsaXN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZ21lbnRlZGxpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWdtZW50ZWRsaXN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWdtZW50ZWRsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VnbWVudGVkbGlzdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZ3RpdGxlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWd0aXRsZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0aXRsZS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWd0aXRsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWd0aXRsZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWd0aXRsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZ3RpdGxlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWd0aXRsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlZ3RpdGxlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VnbGlzdGl0ZW0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlZ2xpc3RpdGVtIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlZyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWdsaXN0aXRlbS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWdsaXN0aXRlbS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWdsaXN0aXRlbS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZ2xpc3RpdGVtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWdsaXN0aXRlbS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlZ2xpc3RpdGVtLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VnLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWciPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWcuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VnLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VnLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VnLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBzZWdtZW50ZWRsaXN0LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gU2ltcGxlTGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2ltcGxlbGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2ltcGxlbGlzdCIgc3Vic3RpdHV0aW9uR3JvdXA9Imxpc3QuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVtYmVyIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpbXBsZWxpc3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlbGlzdC5lbGVtZW50IC0tPgogIDwhLS0gQ29sdW1uczogVGhlIG51bWJlciBvZiBjb2x1bW5zIHRoZSBhcnJheSBzaG91bGQgY29udGFpbiAtLT4KICA8IS0tCiAgICBUeXBlOiBIb3cgdGhlIE1lbWJlcnMgb2YgdGhlIFNpbXBsZUxpc3Qgc2hvdWxkIGJlCiAgICBmb3JtYXR0ZWQ6IElubGluZSAobWVtYmVycyBzZXBhcmF0ZWQgd2l0aCBjb21tYXMgZXRjLgogICAgaW5saW5lKSwgVmVydCAodG9wIHRvIGJvdHRvbSBpbiBuIENvbHVtbnMpLCBvciBIb3JpeiAoaW4KICAgIHRoZSBkaXJlY3Rpb24gb2YgdGV4dCBmbG93KSBpbiBuIENvbHVtbnMuICBJZiBDb2x1bW4KICAgIGlzIDEgb3IgaW1wbGllZCwgVHlwZT1WZXJ0IGFuZCBUeXBlPUhvcml6IGdpdmUgdGhlIHNhbWUKICAgIHJlc3VsdHMuCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpbXBsZWxpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHVtbnMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIgZGVmYXVsdD0idmVydCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImlubGluZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ2ZXJ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imhvcml6Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaW1wbGVsaXN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzaW1wbGVsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlbGlzdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lbWJlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWVtYmVyIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWVtYmVyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1lbWJlci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZW1iZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZW1iZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1lbWJlci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1lbWJlci5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlbGlzdC5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIFZhcmlhYmxlTGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZhcmlhYmxlbGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idmFyaWFibGVsaXN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibGlzdC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imxpc3RwcmVhbWJsZS5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ2YXJsaXN0ZW50cnkiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmFyaWFibGVsaXN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZhcmlhYmxlbGlzdC5lbGVtZW50IC0tPgogIDwhLS0KICAgIFRlcm1MZW5ndGg6IExlbmd0aCBiZXlvbmQgd2hpY2ggdGhlIHByZXNlbnRhdGlvbiBlbmdpbmUKICAgIG1heSBjb25zaWRlciB0aGUgVGVybSB0b28gbG9uZyBhbmQgc2VsZWN0IGFuIGFsdGVybmF0ZQogICAgcHJlc2VudGF0aW9uIG9mIHRoZSBUZXJtIGFuZCwgb3IsIGl0cyBhc3NvY2lhdGVkIExpc3RJdGVtLgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2YXJpYWJsZWxpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRlcm1sZW5ndGgiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZhcmlhYmxlbGlzdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdmFyaWFibGVsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdmFyaWFibGVsaXN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmFybGlzdGVudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2YXJsaXN0ZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGVybSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdGl0ZW0iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmFybGlzdGVudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZhcmxpc3RlbnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2YXJsaXN0ZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2YXJsaXN0ZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZhcmxpc3RlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZhcmxpc3RlbnRyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRlcm0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRlcm0iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ZXJtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRlcm0uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGVybS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRlcm0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRlcm0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0ZXJtLm1vZHVsZSAtLT4KICA8IS0tIExpc3RJdGVtIChkZWZpbmVkIGFib3ZlKSAtLT4KICA8IS0tIGVuZCBvZiB2YXJpYWJsZWxpc3QuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBDYWxsb3V0TGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYWxsb3V0bGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2FsbG91dGxpc3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJsaXN0LmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjYWxsb3V0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNhbGxvdXRsaXN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNhbGxvdXRsaXN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNhbGxvdXRsaXN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2FsbG91dGxpc3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNhbGxvdXRsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2FsbG91dGxpc3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYWxsb3V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjYWxsb3V0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2FsbG91dC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjYWxsb3V0LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgQXJlYVJlZnM6IElEcyBvZiBvbmUgb3IgbW9yZSBBcmVhcyBvciBBcmVhU2V0cyBkZXNjcmliZWQKICAgIGJ5IHRoaXMgQ2FsbG91dAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYWxsb3V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhcmVhcmVmcyIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6SURSRUZTIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjYWxsb3V0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjYWxsb3V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2FsbG91dC5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgY2FsbG91dGxpc3QuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gT2JqZWN0cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEV4YW1wbGVzIGV0Yy4gLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImV4YW1wbGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImV4YW1wbGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJmb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImV4YW1wbGUubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImV4YW1wbGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZXhhbXBsZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJleGFtcGxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmbG9hdHN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9IndpZHRoLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXhhbXBsZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZXhhbXBsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGV4YW1wbGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmZvcm1hbGV4YW1wbGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImluZm9ybWFsZXhhbXBsZSIgc3Vic3RpdHV0aW9uR3JvdXA9ImluZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZXhhbXBsZS5taXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5mb3JtYWxleGFtcGxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGluZm9ybWFsZXhhbXBsZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmZvcm1hbGV4YW1wbGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZsb2F0c3R5bGUiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9IndpZHRoLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5mb3JtYWxleGFtcGxlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGV4YW1wbGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGV4YW1wbGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9ncmFtbGlzdGluZ2NvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwcm9ncmFtbGlzdGluZ2NvIiBzdWJzdGl0dXRpb25Hcm91cD0ibGluZXNwZWNpZmljLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYXJlYXNwZWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InByb2dyYW1saXN0aW5nIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjYWxsb3V0bGlzdCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9ncmFtbGlzdGluZ2NvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByb2dyYW1saXN0aW5nY28uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvZ3JhbWxpc3Rpbmdjby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2dyYW1saXN0aW5nY28ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByb2dyYW1saXN0aW5nY28uYXR0bGlzdCAtLT4KICA8IS0tIENhbGxvdXRMaXN0IChkZWZpbmVkIGFib3ZlIGluIExpc3RzKSAtLT4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGV4YW1wbGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcmVhc3BlYy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXJlYXNwZWMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFyZWEiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFyZWFzZXQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZWFzcGVjLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFyZWFzcGVjLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgVW5pdHM6IGdsb2JhbCB1bml0IG9mIG1lYXN1cmUgaW4gd2hpY2ggY29vcmRpbmF0ZXMgaW4KICAgIHRoaXMgc3BlYyBhcmUgZXhwcmVzc2VkOgogICAgCiAgICAtIENBTFNQYWlyICJ4MSx5MSB4Mix5MiI6IGxvd2VyLWxlZnQgYW5kIHVwcGVyLXJpZ2h0CiAgICBjb29yZGluYXRlcyBpbiBhIHJlY3RhbmdsZSBkZXNjcmliaW5nIHJlcHJvIGFyZWEgaW4gd2hpY2gKICAgIGdyYXBoaWMgaXMgcGxhY2VkLCB3aGVyZSBYIGFuZCBZIGRpbWVuc2lvbnMgYXJlIGVhY2ggc29tZQogICAgbnVtYmVyIDAuLjEwMDAwICh0YWtlbiBmcm9tIENBTFMgZ3JhcGhpYyBhdHRyaWJ1dGVzKQogICAgCiAgICAtIExpbmVDb2x1bW4gImxpbmUgY29sdW1uIjogbGluZSBudW1iZXIgYW5kIGNvbHVtbiBudW1iZXIKICAgIGF0IHdoaWNoIHRvIHN0YXJ0IGNhbGxvdXQgdGV4dCBpbiAibGluZXNwZWNpZmljIiBjb250ZW50CiAgICAKICAgIC0gTGluZVJhbmdlICJzdGFydGxpbmUgZW5kbGluZSI6IHdob2xlIGxpbmVzIGZyb20gc3RhcnRsaW5lCiAgICB0byBlbmRsaW5lIGluICJsaW5lc3BlY2lmaWMiIGNvbnRlbnQKICAgIAogICAgLSBMaW5lQ29sdW1uUGFpciAibGluZTEgY29sMSBsaW5lMiBjb2wyIjogc3RhcnRpbmcgYW5kIGVuZGluZwogICAgcG9pbnRzIG9mIGFyZWEgaW4gImxpbmVzcGVjaWZpYyIgY29udGVudCB0aGF0IHN0YXJ0cyBhdAogICAgZmlyc3QgcG9zaXRpb24gYW5kIGVuZHMgYXQgc2Vjb25kIHBvc2l0aW9uIChpbmNsdWRpbmcgdGhlCiAgICBiZWdpbm5pbmdzIG9mIGFueSBpbnRlcnZlbmluZyBsaW5lcykKICAgIAogICAgLSBPdGhlcjogZGlyZWN0aXZlIHRvIGxvb2sgYXQgdmFsdWUgb2YgT3RoZXJVbml0cyBhdHRyaWJ1dGUKICAgIHRvIGdldCBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBrZXl3b3JkCiAgICAKICAgIFRoZSBkZWZhdWx0IGlzIGltcGxlbWVudGF0aW9uLXNwZWNpZmljOyB1c3VhbGx5IGRlcGVuZGVudCBvbgogICAgdGhlIHBhcmVudCBlbGVtZW50IChHcmFwaGljQ08gZ2V0cyBDQUxTUGFpciwgUHJvZ3JhbUxpc3RpbmdDTwogICAgYW5kIFNjcmVlbkNPIGdldCBMaW5lQ29sdW1uKQogIC0tPgogIDwhLS0gT3RoZXJVbml0czogVXNlci1kZWZpbmVkIHVuaXRzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcmVhc3BlYy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idW5pdHMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjYWxzcGFpciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lY29sdW1uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVyYW5nZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lY29sdW1ucGFpciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcnVuaXRzIiB0eXBlPSJ4czpOTVRPS0VOIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcmVhc3BlYy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXJlYXNwZWMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhcmVhc3BlYy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFyZWEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFyZWEiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcmVhLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFyZWEuZWxlbWVudCAtLT4KICA8IS0tIGJ1ZyBudW1iZXIvc3ltYm9sIG92ZXJyaWRlIG9yIGluaXRpYWxpemF0aW9uIC0tPgogIDwhLS0gdG8gYW55IHJlbGF0ZWQgaW5mb3JtYXRpb24gLS0+CiAgPCEtLQogICAgVW5pdHM6IHVuaXQgb2YgbWVhc3VyZSBpbiB3aGljaCBjb29yZGluYXRlcyBpbiB0aGlzCiAgICBhcmVhIGFyZSBleHByZXNzZWQ7IGluaGVyaXRzIGZyb20gQXJlYVNldCBhbmQgQXJlYVNwZWMKICAtLT4KICA8IS0tIE90aGVyVW5pdHM6IFVzZXItZGVmaW5lZCB1bml0cyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJlYS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVuaXRzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2Fsc3BhaXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGluZWNvbHVtbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lcmFuZ2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGluZWNvbHVtbnBhaXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3RoZXJ1bml0cyIgdHlwZT0ieHM6Tk1UT0tFTiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb29yZHMiIHVzZT0icmVxdWlyZWQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlkcmVxLmNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZWEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFyZWEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhcmVhLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJlYXNldC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXJlYXNldCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJhcmVhIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZWFzZXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXJlYXNldC5lbGVtZW50IC0tPgogIDwhLS0gYnVnIG51bWJlci9zeW1ib2wgb3ZlcnJpZGUgb3IgaW5pdGlhbGl6YXRpb24gLS0+CiAgPCEtLQogICAgVW5pdHM6IHVuaXQgb2YgbWVhc3VyZSBpbiB3aGljaCBjb29yZGluYXRlcyBpbiB0aGlzCiAgICBhcmVhIGFyZSBleHByZXNzZWQ7IGluaGVyaXRzIGZyb20gQXJlYVNwZWMKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJlYXNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1bml0cyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNhbHNwYWlyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVjb2x1bW4iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGluZXJhbmdlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVjb2x1bW5wYWlyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im90aGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVydW5pdHMiIHR5cGU9InhzOk5NVE9LRU4iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29vcmRzIiB1c2U9InJlcXVpcmVkIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpZHJlcS5jb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcmVhc2V0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhcmVhc2V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXJlYXNldC5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgYXJlYXNwZWMuY29udGVudC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb2dyYW1saXN0aW5nLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwcm9ncmFtbGlzdGluZyIgc3Vic3RpdHV0aW9uR3JvdXA9ImxpbmVzcGVjaWZpYy5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb3JlZiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZWFubm90YXRpb24iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRvYmplY3QiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2dyYW1saXN0aW5nLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByb2dyYW1saXN0aW5nLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb2dyYW1saXN0aW5nLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0id2lkdGguYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lc3BlY2lmaWMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9ncmFtbGlzdGluZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJvZ3JhbWxpc3RpbmcuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcm9ncmFtbGlzdGluZy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpdGVyYWxsYXlvdXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImxpdGVyYWxsYXlvdXQiIHN1YnN0aXR1dGlvbkdyb3VwPSJsaW5lc3BlY2lmaWMuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29yZWYiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVhbm5vdGF0aW9uIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaXRlcmFsbGF5b3V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxpdGVyYWxsYXlvdXQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGl0ZXJhbGxheW91dC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9IndpZHRoLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZXNwZWNpZmljLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIgZGVmYXVsdD0ibm9ybWFsIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibW9ub3NwYWNlZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JtYWwiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpdGVyYWxsYXlvdXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxpdGVyYWxsYXlvdXQuYXR0bGlzdCAtLT4KICA8IS0tIExpbmVBbm5vdGF0aW9uIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIGVuZCBvZiBsaXRlcmFsbGF5b3V0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2NyZWVuY28ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNjcmVlbmNvIiBzdWJzdGl0dXRpb25Hcm91cD0ibGluZXNwZWNpZmljLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYXJlYXNwZWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNjcmVlbiIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY2FsbG91dGxpc3QiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2NyZWVuY28uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuY28uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2NyZWVuY28uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzY3JlZW5jby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuY28uYXR0bGlzdCAtLT4KICA8IS0tIEFyZWFTcGVjIChkZWZpbmVkIGFib3ZlKSAtLT4KICA8IS0tIENhbGxvdXRMaXN0IChkZWZpbmVkIGFib3ZlIGluIExpc3RzKSAtLT4KICA8IS0tIGVuZCBvZiBzY3JlZW5jby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNjcmVlbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2NyZWVuIiBzdWJzdGl0dXRpb25Hcm91cD0ibGluZXNwZWNpZmljLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY28iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvcmVmIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZXh0b2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lYW5ub3RhdGlvbiIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2NyZWVuLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNjcmVlbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzY3JlZW4uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ3aWR0aC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmVzcGVjaWZpYy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNjcmVlbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2NyZWVuc2hvdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2NyZWVuc2hvdCIgc3Vic3RpdHV0aW9uR3JvdXA9ImxpbmVzcGVjaWZpYy5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic2NyZWVuaW5mbyIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImdyYXBoaWMiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JhcGhpY2NvIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1lZGlhb2JqZWN0Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1lZGlhb2JqZWN0Y28iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2NyZWVuc2hvdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzY3JlZW5zaG90LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNjcmVlbnNob3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzY3JlZW5zaG90LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzY3JlZW5zaG90LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuc2hvdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNjcmVlbmluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNjcmVlbmluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzY3JlZW5pbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNjcmVlbmluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2NyZWVuaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNjcmVlbmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNjcmVlbmluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzY3JlZW5pbmZvLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBzY3JlZW5zaG90LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gRmlndXJlcyBldGMuIC4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmlndXJlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmaWd1cmUiIHN1YnN0aXR1dGlvbkdyb3VwPSJmb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6Z3JvdXAgcmVmPSJmaWd1cmUubWl4Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaWd1cmUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZmlndXJlLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgRmxvYXQ6IFdoZXRoZXIgdGhlIEZpZ3VyZSBpcyBzdXBwb3NlZCB0byBiZSByZW5kZXJlZAogICAgd2hlcmUgY29udmVuaWVudCAoeWVzICgxKSB2YWx1ZSkgb3IgYXQgdGhlIHBsYWNlIGl0IG9jY3VycwogICAgaW4gdGhlIHRleHQgKG5vICgwKSB2YWx1ZSwgdGhlIGRlZmF1bHQpCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZpZ3VyZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmxvYXQiIGRlZmF1bHQ9IjAiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmbG9hdHN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBnd2lkZSIgdHlwZT0ieWVzb3Juby5hdHR2YWxzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZpZ3VyZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZmlndXJlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZmlndXJlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5mb3JtYWxmaWd1cmUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImluZm9ybWFsZmlndXJlIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5mb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmdyb3VwIHJlZj0iZmlndXJlLm1peCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5mb3JtYWxmaWd1cmUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWxmaWd1cmUuZWxlbWVudCAtLT4KICA8IS0tCiAgICBGbG9hdDogV2hldGhlciB0aGUgRmlndXJlIGlzIHN1cHBvc2VkIHRvIGJlIHJlbmRlcmVkCiAgICB3aGVyZSBjb252ZW5pZW50ICh5ZXMgKDEpIHZhbHVlKSBvciBhdCB0aGUgcGxhY2UgaXQgb2NjdXJzCiAgICBpbiB0aGUgdGV4dCAobm8gKDApIHZhbHVlLCB0aGUgZGVmYXVsdCkKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5mb3JtYWxmaWd1cmUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZsb2F0IiBkZWZhdWx0PSIwIiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmxvYXRzdHlsZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwZ3dpZGUiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmZvcm1hbGZpZ3VyZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWxmaWd1cmUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGZpZ3VyZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImdyYXBoaWNjby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ3JhcGhpY2NvIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5mb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmVhc3BlYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY2FsbG91dGxpc3QiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3JhcGhpY2NvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdyYXBoaWNjby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJncmFwaGljY28uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJncmFwaGljY28ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdyYXBoaWNjby5hdHRsaXN0IC0tPgogIDwhLS0gQXJlYVNwZWMgKGRlZmluZWQgYWJvdmUgaW4gRXhhbXBsZXMpIC0tPgogIDwhLS0gQ2FsbG91dExpc3QgKGRlZmluZWQgYWJvdmUgaW4gTGlzdHMpIC0tPgogIDwhLS0gZW5kIG9mIGdyYXBoaWNjby5tb2R1bGUgLS0+CiAgPCEtLQogICAgR3JhcGhpY2FsIGRhdGEgY2FuIGJlIHRoZSBjb250ZW50IG9mIEdyYXBoaWMsIG9yIHlvdSBjYW4gcmVmZXJlbmNlCiAgICBhbiBleHRlcm5hbCBmaWxlIGVpdGhlciBhcyBhbiBlbnRpdHkgKEVudGl0cmVmKSBvciBhIGZpbGVuYW1lCiAgICAoRmlsZXJlZikuCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImdyYXBoaWMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImdyYXBoaWMiIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImdyYXBoaWMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ3JhcGhpYy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJncmFwaGljLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3JhcGhpY3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJncmFwaGljLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBncmFwaGljLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ3JhcGhpYy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlubGluZWdyYXBoaWMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImlubGluZWdyYXBoaWMiIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmxpbmVvYmouY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlubGluZWdyYXBoaWMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5saW5lZ3JhcGhpYy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmxpbmVncmFwaGljLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3JhcGhpY3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmxpbmVncmFwaGljLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmxpbmVncmFwaGljLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5saW5lZ3JhcGhpYy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lZGlhb2JqZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtZWRpYW9iamVjdCIgc3Vic3RpdHV0aW9uR3JvdXA9ImluZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJvYmplY3RpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVkaWFvYmplY3QubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImNhcHRpb24iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWVkaWFvYmplY3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWVkaWFvYmplY3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWVkaWFvYmplY3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZWRpYW9iamVjdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWVkaWFvYmplY3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtZWRpYW9iamVjdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlubGluZW1lZGlhb2JqZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmxpbmVtZWRpYW9iamVjdCIgc3Vic3RpdHV0aW9uR3JvdXA9ImlubGluZW9iai5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJvYmplY3RpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVkaWFvYmplY3QubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlubGluZW1lZGlhb2JqZWN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGlubGluZW1lZGlhb2JqZWN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlubGluZW1lZGlhb2JqZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5saW5lbWVkaWFvYmplY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGlubGluZW1lZGlhb2JqZWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5saW5lbWVkaWFvYmplY3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2aWRlb29iamVjdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idmlkZW9vYmplY3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJtZWRpYW9iamVjdC5taXgiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im9iamVjdGluZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InZpZGVvZGF0YSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2aWRlb29iamVjdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB2aWRlb29iamVjdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2aWRlb29iamVjdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZpZGVvb2JqZWN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB2aWRlb29iamVjdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZpZGVvb2JqZWN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXVkaW9vYmplY3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImF1ZGlvb2JqZWN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibWVkaWFvYmplY3QubWl4Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJvYmplY3RpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhdWRpb2RhdGEiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXVkaW9vYmplY3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXVkaW9vYmplY3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXVkaW9vYmplY3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdWRpb29iamVjdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXVkaW9vYmplY3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhdWRpb29iamVjdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImltYWdlb2JqZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbWFnZW9iamVjdCIgc3Vic3RpdHV0aW9uR3JvdXA9Im1lZGlhb2JqZWN0Lm1peCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ib2JqZWN0aW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW1hZ2VkYXRhIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImltYWdlb2JqZWN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGltYWdlb2JqZWN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImltYWdlb2JqZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW1hZ2VvYmplY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGltYWdlb2JqZWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW1hZ2VvYmplY3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0ZXh0b2JqZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0ZXh0b2JqZWN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibWVkaWFvYmplY3QubWl4Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJvYmplY3RpbmZvIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icGhyYXNlIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRkYXRhIi8+CiAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGV4dG9iamVjdC5taXgiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGV4dG9iamVjdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0ZXh0b2JqZWN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRleHRvYmplY3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ZXh0b2JqZWN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0ZXh0b2JqZWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdGV4dG9iamVjdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9iamVjdGluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im9iamVjdGluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvYmplY3RpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG9iamVjdGluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib2JqZWN0aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9iamVjdGluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG9iamVjdGluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvYmplY3RpbmZvLm1vZHVsZSAtLT4KICA8IS0tCiAgICBFbnRpdHlSZWY6IE5hbWUgb2YgYW4gZXh0ZXJuYWwgZW50aXR5IGNvbnRhaW5pbmcgdGhlIGNvbnRlbnQKICAgIG9mIHRoZSBvYmplY3QgZGF0YQogIC0tPgogIDwhLS0KICAgIEZpbGVSZWY6IEZpbGVuYW1lLCBxdWFsaWZpZWQgYnkgYSBwYXRobmFtZSBpZiBkZXNpcmVkLAogICAgZGVzaWduYXRpbmcgdGhlIGZpbGUgY29udGFpbmluZyB0aGUgY29udGVudCBvZiB0aGUgb2JqZWN0IGRhdGEKICAtLT4KICA8IS0tIEZvcm1hdDogTm90YXRpb24gb2YgdGhlIGVsZW1lbnQgY29udGVudCwgaWYgYW55IC0tPgogIDwhLS0gU3JjQ3JlZGl0OiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgc291cmNlIG9mIHRoZSBpbWFnZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib2JqZWN0ZGF0YS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbnRpdHlyZWYiIHR5cGU9InhzOkVOVElUWSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmaWxlcmVmIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvcm1hdCIgdHlwZT0ibm90YXRpb24uY2xhc3MiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3JjY3JlZGl0Ii8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmlkZW9kYXRhLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2aWRlb2RhdGEiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2aWRlb2RhdGEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdmlkZW9kYXRhLmVsZW1lbnQgLS0+CiAgPCEtLSBXaWR0aDogU2FtZSBhcyBDQUxTIHJlcHJvd2lkIChkZXNpcmVkIHdpZHRoKSAtLT4KICA8IS0tIERlcHRoOiBTYW1lIGFzIENBTFMgcmVwcm9kZXAgKGRlc2lyZWQgZGVwdGgpIC0tPgogIDwhLS0KICAgIEFsaWduOiBTYW1lIGFzIENBTFMgaHBsYWNlIHdpdGggJ25vbmUnIHJlbW92ZWQ7ICNJTVBMSUVEIG1lYW5zCiAgICBhcHBsaWNhdGlvbi1zcGVjaWZpYwogIC0tPgogIDwhLS0gU2NhbGU6IENvbmZsYXRpb24gb2YgQ0FMUyBoc2NhbGUgYW5kIHZzY2FsZSAtLT4KICA8IS0tIFNjYWxlZml0OiBTYW1lIGFzIENBTFMgc2NhbGVmaXQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZpZGVvZGF0YS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29udGVudHdpZHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlcHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRlbnRkZXB0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRvcCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJtaWRkbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYm90dG9tIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjYWxlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjYWxlZml0IiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9iamVjdGRhdGEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2aWRlb2RhdGEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZpZGVvZGF0YS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZpZGVvZGF0YS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1ZGlvZGF0YS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXVkaW9kYXRhIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXVkaW9kYXRhLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGF1ZGlvZGF0YS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdWRpb2RhdGEuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvYmplY3RkYXRhLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXVkaW9kYXRhLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhdWRpb2RhdGEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhdWRpb2RhdGEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbWFnZWRhdGEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImltYWdlZGF0YSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImltYWdlZGF0YS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbWFnZWRhdGEuZWxlbWVudCAtLT4KICA8IS0tIFdpZHRoOiBTYW1lIGFzIENBTFMgcmVwcm93aWQgKGRlc2lyZWQgd2lkdGgpIC0tPgogIDwhLS0gRGVwdGg6IFNhbWUgYXMgQ0FMUyByZXByb2RlcCAoZGVzaXJlZCBkZXB0aCkgLS0+CiAgPCEtLQogICAgQWxpZ246IFNhbWUgYXMgQ0FMUyBocGxhY2Ugd2l0aCAnbm9uZScgcmVtb3ZlZDsgI0lNUExJRUQgbWVhbnMKICAgIGFwcGxpY2F0aW9uLXNwZWNpZmljCiAgLS0+CiAgPCEtLSBTY2FsZTogQ29uZmxhdGlvbiBvZiBDQUxTIGhzY2FsZSBhbmQgdnNjYWxlIC0tPgogIDwhLS0gU2NhbGVmaXQ6IFNhbWUgYXMgQ0FMUyBzY2FsZWZpdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW1hZ2VkYXRhLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aWR0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250ZW50d2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVwdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29udGVudGRlcHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGVmdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaWdodCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZW50ZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1pZGRsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2NhbGUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2NhbGVmaXQiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib2JqZWN0ZGF0YS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImltYWdlZGF0YS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW1hZ2VkYXRhLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW1hZ2VkYXRhLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGV4dGRhdGEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRleHRkYXRhIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGV4dGRhdGEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGV4dGRhdGEuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGV4dGRhdGEuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVuY29kaW5nIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvYmplY3RkYXRhLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGV4dGRhdGEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRleHRkYXRhLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdGV4dGRhdGEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZWRpYW9iamVjdGNvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtZWRpYW9iamVjdGNvIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5mb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im9iamVjdGluZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImltYWdlb2JqZWN0Y28iLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbWFnZW9iamVjdGNvIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRvYmplY3QiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWVkaWFvYmplY3Rjby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtZWRpYW9iamVjdGNvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lZGlhb2JqZWN0Y28uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZWRpYW9iamVjdGNvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtZWRpYW9iamVjdGNvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWVkaWFvYmplY3Rjby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImltYWdlb2JqZWN0Y28ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImltYWdlb2JqZWN0Y28iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmVhc3BlYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW1hZ2VvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNhbGxvdXRsaXN0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImltYWdlb2JqZWN0Y28uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW1hZ2VvYmplY3Rjby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbWFnZW9iamVjdGNvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW1hZ2VvYmplY3Rjby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW1hZ2VvYmplY3Rjby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGltYWdlb2JqZWN0Y28ubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIG1lZGlhb2JqZWN0LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gRXF1YXRpb25zIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFRoaXMgUEUgcHJvdmlkZXMgYSBtZWNoYW5pc20gZm9yIHJlcGxhY2luZyBlcXVhdGlvbiBjb250ZW50LCAtLT4KICA8IS0tIHBlcmhhcHMgYWRkaW5nIGEgbmV3IG9yIGRpZmZlcmVudCBtb2RlbCAoZS5nLiwgTWF0aE1MKSAtLT4KICA8eHM6Z3JvdXAgbmFtZT0iZXF1YXRpb24uY29udGVudCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJhbHQiLz4KICAgICAgPHhzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJncmFwaGljIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVkaWFvYmplY3QiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImlubGluZWVxdWF0aW9uLmNvbnRlbnQiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYWx0Ii8+CiAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmNvbXBsZXhUeXBlPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcXVhdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXF1YXRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJmb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbGVxdWF0aW9uIi8+CiAgICAgICAgICA8eHM6Z3JvdXAgcmVmPSJlcXVhdGlvbi5jb250ZW50Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVxdWF0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGVxdWF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVxdWF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmbG9hdHN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVxdWF0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlcXVhdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVxdWF0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5mb3JtYWxlcXVhdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5mb3JtYWxlcXVhdGlvbiIgc3Vic3RpdHV0aW9uR3JvdXA9ImluZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJlcXVhdGlvbi5jb250ZW50Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZm9ybWFsZXF1YXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWxlcXVhdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmZvcm1hbGVxdWF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmbG9hdHN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmZvcm1hbGVxdWF0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGVxdWF0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWxlcXVhdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlubGluZWVxdWF0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmxpbmVlcXVhdGlvbiIgc3Vic3RpdHV0aW9uR3JvdXA9ImlubGluZW9iai5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNvbXBsZXhDb250ZW50PgogICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0iaW5saW5lZXF1YXRpb24uY29udGVudCI+CiAgICAgICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmxpbmVlcXVhdGlvbi5hdHRsaXN0Ii8+CiAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgIDwveHM6Y29tcGxleENvbnRlbnQ+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbmxpbmVlcXVhdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmxpbmVlcXVhdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlubGluZWVxdWF0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmxpbmVlcXVhdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGlubGluZWVxdWF0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWx0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhbHQiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWx0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFsdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhbHQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhbHQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFsdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFsdC5tb2R1bGUgLS0+CiAgPCEtLSBUYWJsZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gQ2hvb3NlIGEgdGFibGUgbW9kZWwuIENBTFMgb3IgT0FTSVMgWE1MIEV4Y2hhbmdlIC0tPgogIDwhLS0gRG8gd2UgYWxsb3cgdGhlIEhUTUwgdGFibGUgbW9kZWwgYXMgd2VsbD8gLS0+CiAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CiAgPCEtLQogICAgeGh0bWx0YmwubW9kIGRlZmluZXMgSFRNTCB0YWJsZXMgYW5kIHNldHMgcGFyYW1ldGVyCiAgICBlbnRpdGllcyBzbyB0aGF0LCB3aGVuIHRoZSBDQUxTIHRhYmxlIG1vZHVsZSBpcyByZWFkLAogICAgd2UgZW5kIHVwIGFsbG93aW5nIGFueSB0YWJsZSB0byBiZSBDQUxTIG9yIEhUTUwuCiAgICBpLmUuIFRoaXMgaW5jbHVkZSBtdXN0IGNvbWUgZmlyc3QhCiAgLS0+CiAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CiAgPCEtLSBlbmQgb2YgYWxsb3cuaHRtbC50YWJsZXMgLS0+CiAgPCEtLSBBZGQgbGFiZWwgYW5kIHJvbGUgYXR0cmlidXRlcyB0byB0YWJsZSBhbmQgaW5mb3JtYWx0YWJsZSAtLT4KICA8IS0tCiAgICBBZGQgY29tbW9uIGF0dHJpYnV0ZXMgdG8gVGFibGUsIFRHcm91cCwgVEJvZHksIFRIZWFkLCBURm9vdCwgUm93LAogICAgRW50cnlUYmwsIGFuZCBFbnRyeSAoYW5kIEluZm9ybWFsVGFibGUgZWxlbWVudCkuCiAgLS0+CiAgPCEtLSBDb250ZW50IG1vZGVsIGZvciBUYWJsZS4gLS0+CiAgPCEtLSBBbGxvdyBlaXRoZXIgb2JqZWN0cyBvciBpbmxpbmVzOyBiZXdhcmUgb2YgUkVzIGJldHdlZW4gZWxlbWVudHMuIC0tPgogIDwhLS0gUmVmZXJlbmNlIENBTFMgVGFibGUgTW9kZWwgLS0+CiAgPCEtLSBlbmQgb2YgdGFibGUubW9kdWxlIC0tPgogIDwhLS0KICAgIE5vdGUgdGhhdCBJbmZvcm1hbFRhYmxlIGlzIGRlcGVuZGVudCBvbiBzb21lIG9mIHRoZSBlbnRpdHkKICAgIGRlY2xhcmF0aW9ucyB0aGF0IGN1c3RvbWl6ZSBUYWJsZS4KICAtLT4KICA8IS0tIHRoZSBmb2xsb3dpbmcgZW50aXR5IG1heSBoYXZlIGJlZW4gZGVjbGFyZWQgYnkgdGhlIFhIVE1MIHRhYmxlIG1vZHVsZSAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmZvcm1hbHRhYmxlIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5mb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImluZm9ybWFsLnRibC50YWJsZS5tZGwiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5mb3JtYWx0YWJsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbHRhYmxlLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgRnJhbWUsIENvbHNlcCwgYW5kIFJvd3NlcCBtdXN0IGJlIHJlcGVhdGVkIGJlY2F1c2UKICAgIHRoZXkgYXJlIG5vdCBpbiBlbnRpdGllcyBpbiB0aGUgdGFibGUgbW9kdWxlLgogIC0tPgogIDwhLS0KICAgIGluY2x1ZGVzIFRhYlN0eWxlLCBUb0NlbnRyeSwgU2hvcnRFbnRyeSwKICAgIE9yaWVudCwgUGdXaWRlCiAgLS0+CiAgPCEtLSBpbmNsdWRlcyBMYWJlbCAtLT4KICA8IS0tIGluY2x1ZGVzIGNvbW1vbiBhdHRyaWJ1dGVzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmZvcm1hbHRhYmxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmcmFtZSIgdHlwZT0idGJsLmZyYW1lLmF0dHZhbCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzZXAiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3dzZXAiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLnRhYmxlLmF0dHJpYnMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRibC50YWJsZS5hdHQiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGluZm9ybWFsdGFibGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbHRhYmxlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2FwdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2FwdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0ZXh0b2JqZWN0Lm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjYXB0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNhcHRpb24uZWxlbWVudCAtLT4KICA8IS0tIGF0dHJzIGNvbWVzIGZyb20gSFRNTCB0YWJsZXMgLi4uIC0tPgogIDwhLS0gY29tbW9uLmF0dHJpYiwgYnV0IHdpdGhvdXQgSUQgYmVjYXVzZSBJRCBpcyBpbiBhdHRycyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2FwdGlvbi5hdHRsaXN0LmNvbnRlbnQiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFuZy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlbWFwLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ieHJlZmxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2aXNpb25mbGFnLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZWZmZWN0aXZpdHkuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJkaXIuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4bWwtYmFzZS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNhcHRpb24ucm9sZS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF0dHJzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsZWZ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJpZ2h0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2FwdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNhcHRpb24uYXR0bGlzdC5jb250ZW50Ii8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjYXB0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2FwdGlvbi5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gU3lub3BzZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFN5bm9wc2lzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN5bm9wc2lzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzeW5vcHNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9InN5bm9wLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb3JlZiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGV4dG9iamVjdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZWFubm90YXRpb24iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN5bm9wc2lzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN5bm9wc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lc3BlY2lmaWMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzeW5vcHNpcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3lub3BzaXMuYXR0bGlzdCAtLT4KICA8IS0tIExpbmVBbm5vdGF0aW9uIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIGVuZCBvZiBzeW5vcHNpcy5tb2R1bGUgLS0+CiAgPCEtLSBDbWRTeW5vcHNpcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjbWRzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY21kc3lub3BzaXMiIHN1YnN0aXR1dGlvbkdyb3VwPSJzeW5vcC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iY29tbWFuZCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmciLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JvdXAiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2JyIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzeW5vcGZyYWdtZW50Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNtZHN5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNtZHN5bm9wc2lzLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU2VwY2hhcjogQ2hhcmFjdGVyIHRoYXQgc2hvdWxkIHNlcGFyYXRlIGNvbW1hbmQgYW5kIGFsbAogICAgdG9wLWxldmVsIGFyZ3VtZW50czsgYWx0ZXJuYXRlIHZhbHVlIG1pZ2h0IGJlIGUuZy4sICZEZWx0YTsKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY21kc3lub3BzaXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VwY2hhciIgZGVmYXVsdD0iICIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbWRsZW5ndGgiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNtZHN5bm9wc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjbWRzeW5vcHNpcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNtZHN5bm9wc2lzLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJnLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcmciPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFyZyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JvdXAiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im9wdGlvbiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3BmcmFnbWVudHJlZiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVwbGFjZWFibGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNiciIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJnLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFyZy5lbGVtZW50IC0tPgogIDwhLS0KICAgIENob2ljZTogV2hldGhlciBBcmcgbXVzdCBiZSBzdXBwbGllZDogT3B0IChvcHRpb25hbCB0bwogICAgc3VwcGx5LCBlLmcuIFthcmddOyB0aGUgZGVmYXVsdCksIFJlcSAocmVxdWlyZWQgdG8gc3VwcGx5LAogICAgZS5nLiB7YXJnfSksIG9yIFBsYWluIChyZXF1aXJlZCB0byBzdXBwbHksIGUuZy4gYXJnKQogIC0tPgogIDwhLS0KICAgIFJlcDogd2hldGhlciBBcmcgaXMgcmVwZWF0YWJsZTogTm9yZXBlYXQgKGUuZy4gYXJnIHdpdGhvdXQKICAgIGVsbGlwc2lzOyB0aGUgZGVmYXVsdCksIG9yIFJlcGVhdCAoZS5nLiBhcmcuLi4pCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFyZy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hvaWNlIiBkZWZhdWx0PSJvcHQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVxIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBsYWluIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlcCIgZGVmYXVsdD0ibm9yZXBlYXQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JlcGVhdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXBlYXQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXJnLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXJnLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3JvdXAucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdyb3VwIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmciLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdyb3VwIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvcHRpb24iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wZnJhZ21lbnRyZWYiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlcGxhY2VhYmxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzYnIiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdyb3VwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdyb3VwLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgQ2hvaWNlOiBXaGV0aGVyIEdyb3VwIG11c3QgYmUgc3VwcGxpZWQ6IE9wdCAob3B0aW9uYWwgdG8KICAgIHN1cHBseSwgZS5nLiAgW2cxfGcyfGczXTsgdGhlIGRlZmF1bHQpLCBSZXEgKHJlcXVpcmVkIHRvCiAgICBzdXBwbHksIGUuZy4gIHtnMXxnMnxnM30pLCBQbGFpbiAocmVxdWlyZWQgdG8gc3VwcGx5LAogICAgZS5nLiAgZzF8ZzJ8ZzMpLCBPcHRNdWx0IChjYW4gc3VwcGx5IHplcm8gb3IgbW9yZSwgZS5nLgogICAgW1tnMXxnMnxnM11dKSwgb3IgUmVxTXVsdCAobXVzdCBzdXBwbHkgb25lIG9yIG1vcmUsIGUuZy4KICAgIHt7ZzF8ZzJ8ZzN9fSkKICAtLT4KICA8IS0tCiAgICBSZXA6IHdoZXRoZXIgR3JvdXAgaXMgcmVwZWF0YWJsZTogTm9yZXBlYXQgKGUuZy4gZ3JvdXAKICAgIHdpdGhvdXQgZWxsaXBzaXM7IHRoZSBkZWZhdWx0KSwgb3IgUmVwZWF0IChlLmcuIGdyb3VwLi4uKQogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJncm91cC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hvaWNlIiBkZWZhdWx0PSJvcHQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVxIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBsYWluIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlcCIgZGVmYXVsdD0ibm9yZXBlYXQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JlcGVhdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXBlYXQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdyb3VwLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBncm91cC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdyb3VwLm1vZHVsZSAtLT4KICA8IS0tIFN5bm9wc2lzIGJyZWFrIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzYnIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNiciI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNici5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzYnIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2JyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2JyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzYnIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzYnIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzeW5vcGZyYWdtZW50cmVmLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzeW5vcGZyYWdtZW50cmVmIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5bm9wZnJhZ21lbnRyZWYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3lub3BmcmFnbWVudHJlZi5lbGVtZW50IC0tPgogIDwhLS0KICAgIHRvIFN5bm9wRnJhZ21lbnQgb2YgY29tcGxleCBzeW5vcHNpcwogICAgbWF0ZXJpYWwgZm9yIHNlcGFyYXRlIHJlZmVyZW5jaW5nCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN5bm9wZnJhZ21lbnRyZWYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kcmVxLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3lub3BmcmFnbWVudHJlZi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3lub3BmcmFnbWVudHJlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN5bm9wZnJhZ21lbnRyZWYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzeW5vcGZyYWdtZW50LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzeW5vcGZyYWdtZW50Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmciLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdyb3VwIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzeW5vcGZyYWdtZW50LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN5bm9wZnJhZ21lbnQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3lub3BmcmFnbWVudC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlkcmVxLmNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5bm9wZnJhZ21lbnQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN5bm9wZnJhZ21lbnQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzeW5vcGZyYWdtZW50Lm1vZHVsZSAtLT4KICA8IS0tIENvbW1hbmQgKGRlZmluZWQgaW4gdGhlIElubGluZXMgc2VjdGlvbiwgYmVsb3cpIC0tPgogIDwhLS0gT3B0aW9uIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIFJlcGxhY2VhYmxlIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIGVuZCBvZiBjbWRzeW5vcHNpcy5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIEZ1bmNTeW5vcHNpcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZnVuY3N5bm9wc2lzIiBzdWJzdGl0dXRpb25Hcm91cD0ic3lub3AuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImZ1bmNzeW5vcHNpc2luZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImZ1bmNwcm90b3R5cGUiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmNzeW5vcHNpcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmdW5jc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY3N5bm9wc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jc3lub3BzaXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZ1bmNzeW5vcHNpcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZ1bmNzeW5vcHNpcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNzeW5vcHNpc2luZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZ1bmNzeW5vcHNpc2luZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZXh0b2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lYW5ub3RhdGlvbiIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZnVuY3N5bm9wc2lzaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmdW5jc3lub3BzaXNpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNzeW5vcHNpc2luZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lc3BlY2lmaWMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jc3lub3BzaXNpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmdW5jc3lub3BzaXNpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZnVuY3N5bm9wc2lzaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNwcm90b3R5cGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZ1bmNwcm90b3R5cGUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZnVuY2RlZiIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InZvaWQiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idmFyYXJncyIvPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhbWRlZiIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idmFyYXJncyIvPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1vZGlmaWVyIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmNwcm90b3R5cGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZnVuY3Byb3RvdHlwZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmdW5jcHJvdG90eXBlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZnVuY3Byb3RvdHlwZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZnVuY3Byb3RvdHlwZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZ1bmNwcm90b3R5cGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmdW5jZGVmLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmdW5jZGVmIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0eXBlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXBsYWNlYWJsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZnVuY3Rpb24iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmNkZWYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZnVuY2RlZi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmdW5jZGVmLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZnVuY2RlZi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZnVuY2RlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZ1bmNkZWYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2b2lkLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2b2lkIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idm9pZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB2b2lkLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZvaWQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2b2lkLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB2b2lkLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygdm9pZC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZhcmFyZ3Mucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InZhcmFyZ3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2YXJhcmdzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZhcmFyZ3MuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmFyYXJncy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZhcmFyZ3Mucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZhcmFyZ3MuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB2YXJhcmdzLm1vZHVsZSAtLT4KICA8IS0tCiAgICBQcm9jZXNzaW5nIGFzc3VtZXMgdGhhdCBvbmx5IG9uZSBQYXJhbWV0ZXIgd2lsbCBhcHBlYXIgaW4gYQogICAgUGFyYW1EZWYsIGFuZCB0aGF0IEZ1bmNQYXJhbXMgd2lsbCBiZSB1c2VkIGF0IG1vc3Qgb25jZSwgZm9yCiAgICBwcm92aWRpbmcgaW5mb3JtYXRpb24gb24gdGhlICJpbm5lciBwYXJhbWV0ZXJzIiBmb3IgcGFyYW1ldGVycyB0aGF0CiAgICBhcmUgcG9pbnRlcnMgdG8gZnVuY3Rpb25zLgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYXJhbWRlZi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGFyYW1kZWYiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImluaXRpYWxpemVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0eXBlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXBsYWNlYWJsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYW1ldGVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmdW5jcGFyYW1zIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJhbWRlZi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwYXJhbWRlZi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYXJhbWRlZi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hvaWNlIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3B0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlcSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFyYW1kZWYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBhcmFtZGVmLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcGFyYW1kZWYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmdW5jcGFyYW1zLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmdW5jcGFyYW1zIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZnVuY3BhcmFtcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmdW5jcGFyYW1zLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNwYXJhbXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jcGFyYW1zLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmdW5jcGFyYW1zLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZnVuY3BhcmFtcy5tb2R1bGUgLS0+CiAgPCEtLSBMaW5lQW5ub3RhdGlvbiAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSBSZXBsYWNlYWJsZSAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSBGdW5jdGlvbiAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSBQYXJhbWV0ZXIgKGRlZmluZWQgaW4gdGhlIElubGluZXMgc2VjdGlvbiwgYmVsb3cpIC0tPgogIDwhLS0gZW5kIG9mIGZ1bmNzeW5vcHNpcy5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIENsYXNzU3lub3BzaXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjbGFzc3N5bm9wc2lzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjbGFzc3N5bm9wc2lzIiBzdWJzdGl0dXRpb25Hcm91cD0ic3lub3AuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im9vY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ib29pbnRlcmZhY2UiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ib29leGNlcHRpb24iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbGFzc3N5bm9wc2lzaW5mbyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmaWVsZHN5bm9wc2lzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1ldGhvZC5zeW5vcC5jbGFzcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjbGFzc3N5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNsYXNzc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2xhc3NzeW5vcHNpcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFuZ3VhZ2UiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIGRlZmF1bHQ9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2xhc3MiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaW50ZXJmYWNlIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjbGFzc3N5bm9wc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjbGFzc3N5bm9wc2lzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2xhc3NzeW5vcHNpcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNsYXNzc3lub3BzaXNpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjbGFzc3N5bm9wc2lzaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVhbm5vdGF0aW9uIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjbGFzc3N5bm9wc2lzaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjbGFzc3N5bm9wc2lzaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjbGFzc3N5bm9wc2lzaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmVzcGVjaWZpYy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNsYXNzc3lub3BzaXNpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjbGFzc3N5bm9wc2lzaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNsYXNzc3lub3BzaXNpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib29jbGFzcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib29jbGFzcyIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1vZGlmaWVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbGFzc25hbWUiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib29jbGFzcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvb2NsYXNzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9vY2xhc3MuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvb2NsYXNzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvb2NsYXNzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb29jbGFzcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9vaW50ZXJmYWNlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvb2ludGVyZmFjZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1vZGlmaWVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbnRlcmZhY2VuYW1lIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9vaW50ZXJmYWNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG9vaW50ZXJmYWNlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9vaW50ZXJmYWNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib29pbnRlcmZhY2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG9vaW50ZXJmYWNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb29pbnRlcmZhY2UubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvb2V4Y2VwdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib29leGNlcHRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZXhjZXB0aW9ubmFtZSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvb2V4Y2VwdGlvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvb2V4Y2VwdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvb2V4Y2VwdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9vZXhjZXB0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvb2V4Y2VwdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG9vZXhjZXB0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibW9kaWZpZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1vZGlmaWVyIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb2RpZmllci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtb2RpZmllci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtb2RpZmllci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vZGlmaWVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtb2RpZmllci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1vZGlmaWVyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW50ZXJmYWNlbmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW50ZXJmYWNlbmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImludGVyZmFjZW5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW50ZXJmYWNlbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbnRlcmZhY2VuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW50ZXJmYWNlbmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW50ZXJmYWNlbmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGludGVyZmFjZW5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJleGNlcHRpb25uYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJleGNlcHRpb25uYW1lIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJleGNlcHRpb25uYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGV4Y2VwdGlvbm5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXhjZXB0aW9ubmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImV4Y2VwdGlvbm5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGV4Y2VwdGlvbm5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBleGNlcHRpb25uYW1lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmllbGRzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZmllbGRzeW5vcHNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9InN5bm9wLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibW9kaWZpZXIiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idHlwZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idmFybmFtZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJpbml0aWFsaXplciIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaWVsZHN5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZpZWxkc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmllbGRzeW5vcHNpcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFuZ3VhZ2UiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZpZWxkc3lub3BzaXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZpZWxkc3lub3BzaXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmaWVsZHN5bm9wc2lzLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5pdGlhbGl6ZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImluaXRpYWxpemVyIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbml0aWFsaXplci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbml0aWFsaXplci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbml0aWFsaXplci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluaXRpYWxpemVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbml0aWFsaXplci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluaXRpYWxpemVyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29uc3RydWN0b3JzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29uc3RydWN0b3JzeW5vcHNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9Im1ldGhvZC5zeW5vcC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1vZGlmaWVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im1ldGhvZG5hbWUiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWV0aG9kcGFyYW0iLz4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ2b2lkIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJleGNlcHRpb25uYW1lIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnN0cnVjdG9yc3lub3BzaXMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29uc3RydWN0b3JzeW5vcHNpcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25zdHJ1Y3RvcnN5bm9wc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYW5ndWFnZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uc3RydWN0b3JzeW5vcHNpcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29uc3RydWN0b3JzeW5vcHNpcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbnN0cnVjdG9yc3lub3BzaXMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJkZXN0cnVjdG9yc3lub3BzaXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImRlc3RydWN0b3JzeW5vcHNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9Im1ldGhvZC5zeW5vcC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1vZGlmaWVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im1ldGhvZG5hbWUiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWV0aG9kcGFyYW0iLz4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ2b2lkIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJleGNlcHRpb25uYW1lIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRlc3RydWN0b3JzeW5vcHNpcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBkZXN0cnVjdG9yc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGVzdHJ1Y3RvcnN5bm9wc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYW5ndWFnZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZGVzdHJ1Y3RvcnN5bm9wc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBkZXN0cnVjdG9yc3lub3BzaXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBkZXN0cnVjdG9yc3lub3BzaXMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZXRob2RzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWV0aG9kc3lub3BzaXMiIHN1YnN0aXR1dGlvbkdyb3VwPSJtZXRob2Quc3lub3AuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idHlwZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ2b2lkIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtZXRob2RuYW1lIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1ldGhvZHBhcmFtIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idm9pZCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZXhjZXB0aW9ubmFtZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibW9kaWZpZXIiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWV0aG9kc3lub3BzaXMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWV0aG9kc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWV0aG9kc3lub3BzaXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxhbmd1YWdlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZXRob2RzeW5vcHNpcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWV0aG9kc3lub3BzaXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtZXRob2RzeW5vcHNpcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1ldGhvZG5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1ldGhvZG5hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1ldGhvZG5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWV0aG9kbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZXRob2RuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWV0aG9kbmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWV0aG9kbmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1ldGhvZG5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZXRob2RwYXJhbS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWV0aG9kcGFyYW0iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0eXBlIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhbWV0ZXIiLz4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImluaXRpYWxpemVyIi8+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmdW5jcGFyYW1zIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZXRob2RwYXJhbS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtZXRob2RwYXJhbS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZXRob2RwYXJhbS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hvaWNlIiBkZWZhdWx0PSJyZXEiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVxIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBsYWluIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlcCIgZGVmYXVsdD0ibm9yZXBlYXQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JlcGVhdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXBlYXQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1ldGhvZHBhcmFtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtZXRob2RwYXJhbS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1ldGhvZHBhcmFtLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBjbGFzc3N5bm9wc2lzLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIERvY3VtZW50IGluZm9ybWF0aW9uIGVudGl0aWVzIGFuZCBlbGVtZW50cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLQogICAgVGhlIGRvY3VtZW50IGluZm9ybWF0aW9uIGVsZW1lbnRzIGluY2x1ZGUgc29tZSBlbGVtZW50cyB0aGF0IGFyZQogICAgY3VycmVudGx5IHVzZWQgb25seSBpbiB0aGUgZG9jdW1lbnQgaGllcmFyY2h5IG1vZHVsZS4gVGhleSBhcmUKICAgIGRlZmluZWQgaGVyZSBzbyB0aGF0IHRoZXkgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHVzZSBpbiBjdXN0b21pemVkCiAgICBkb2N1bWVudCBoaWVyYXJjaGllcy4KICAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBBY2tubyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhY2tuby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYWNrbm8iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhY2tuby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhY2tuby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhY2tuby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFja25vLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhY2tuby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFja25vLm1vZHVsZSAtLT4KICA8IS0tIEFkZHJlc3MgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFkZHJlc3Mucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFkZHJlc3MiIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icGVyc29ubmFtZSIvPgogICAgICAgIDx4czpncm91cCByZWY9InBlcnNvbi5pZGVudC5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN0cmVldCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icG9iIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwb3N0Y29kZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY2l0eSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3RhdGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvdW50cnkiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBob25lIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmYXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtYWlsIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvdGhlcmFkZHIiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFkZHJlc3MuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWRkcmVzcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhZGRyZXNzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZXNwZWNpZmljLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRkcmVzcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWRkcmVzcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFkZHJlc3MubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdHJlZXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN0cmVldCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0cmVldC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdHJlZXQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RyZWV0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RyZWV0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdHJlZXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzdHJlZXQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwb2Iucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBvYiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBvYi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwb2IuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icG9iLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icG9iLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwb2IuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwb2IubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwb3N0Y29kZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icG9zdGNvZGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwb3N0Y29kZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwb3N0Y29kZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwb3N0Y29kZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBvc3Rjb2RlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwb3N0Y29kZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBvc3Rjb2RlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2l0eS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2l0eSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNpdHkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY2l0eS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXR5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0eS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY2l0eS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNpdHkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdGF0ZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3RhdGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0ZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdGF0ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdGF0ZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXRlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdGF0ZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN0YXRlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY291bnRyeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY291bnRyeSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvdW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY291bnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3VudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY291bnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY291bnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvdW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwaG9uZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGhvbmUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwaG9uZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwaG9uZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwaG9uZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBob25lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwaG9uZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBob25lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmF4LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmYXgiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmYXguYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZmF4LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZheC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZheC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZmF4LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZmF4Lm1vZHVsZSAtLT4KICA8IS0tIEVtYWlsIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3RoZXJhZGRyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvdGhlcmFkZHIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvdGhlcmFkZHIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb3RoZXJhZGRyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im90aGVyYWRkci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im90aGVyYWRkci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb3RoZXJhZGRyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb3RoZXJhZGRyLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBhZGRyZXNzLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gQWZmaWxpYXRpb24gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWZmaWxpYXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFmZmlsaWF0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzaG9ydGFmZmlsIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJqb2J0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJvcmduYW1lIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJvcmdkaXYiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFkZHJlc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWZmaWxpYXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWZmaWxpYXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWZmaWxpYXRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhZmZpbGlhdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWZmaWxpYXRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhZmZpbGlhdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNob3J0YWZmaWwucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNob3J0YWZmaWwiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaG9ydGFmZmlsLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNob3J0YWZmaWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2hvcnRhZmZpbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNob3J0YWZmaWwucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNob3J0YWZmaWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzaG9ydGFmZmlsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iam9idGl0bGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImpvYnRpdGxlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iam9idGl0bGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygam9idGl0bGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iam9idGl0bGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJqb2J0aXRsZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygam9idGl0bGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBqb2J0aXRsZS5tb2R1bGUgLS0+CiAgPCEtLSBPcmdOYW1lIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcmdkaXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im9yZ2RpdiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9yZ2Rpdi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvcmdkaXYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3JnZGl2LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3JnZGl2LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvcmdkaXYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvcmdkaXYubW9kdWxlIC0tPgogIDwhLS0gQWRkcmVzcyAoZGVmaW5lZCBlbHNld2hlcmUgaW4gdGhpcyBzZWN0aW9uKSAtLT4KICA8IS0tIGVuZCBvZiBhZmZpbGlhdGlvbi5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIEFydFBhZ2VOdW1zIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFydHBhZ2VudW1zLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcnRwYWdlbnVtcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFydHBhZ2VudW1zLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFydHBhZ2VudW1zLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFydHBhZ2VudW1zLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJ0cGFnZW51bXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFydHBhZ2VudW1zLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXJ0cGFnZW51bXMubW9kdWxlIC0tPgogIDwhLS0gUGVyc29uTmFtZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGVyc29ubmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGVyc29ubmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJob25vcmlmaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImZpcnN0bmFtZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3VybmFtZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZWFnZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ib3RoZXJuYW1lIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwZXJzb25uYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBlcnNvbm5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGVyc29ubmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBlcnNvbm5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBlcnNvbm5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwZXJzb25uYW1lLm1vZHVsZSAtLT4KICA8IS0tIEF1dGhvciAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1dGhvci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXV0aG9yIiBzdWJzdGl0dXRpb25Hcm91cD0iZG9jaW5mby5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBlcnNvbm5hbWUiLz4KICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwZXJzb24uaWRlbnQubWl4Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icGVyc29uYmx1cmIiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZW1haWwiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYWRkcmVzcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdXRob3IuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXV0aG9yLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1dGhvci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1dGhvci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXV0aG9yLmF0dGxpc3QgLS0+CiAgPCEtLSAoc2VlICJQZXJzb25hbCBpZGVudGl0eSBlbGVtZW50cyIgZm9yICVwZXJzb24uaWRlbnQubWl4OykgLS0+CiAgPCEtLSBlbmQgb2YgYXV0aG9yLm1vZHVsZSAtLT4KICA8IS0tIEF1dGhvckdyb3VwIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1dGhvcmdyb3VwLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhdXRob3Jncm91cCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYXV0aG9yIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlZGl0b3IiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbGxhYiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29ycGF1dGhvciIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29ycGNyZWRpdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ib3RoZXJjcmVkaXQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1dGhvcmdyb3VwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGF1dGhvcmdyb3VwLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1dGhvcmdyb3VwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXV0aG9yZ3JvdXAucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGF1dGhvcmdyb3VwLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXV0aG9yZ3JvdXAubW9kdWxlIC0tPgogIDwhLS0gQXV0aG9yIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDwhLS0gRWRpdG9yIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2xsYWIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbGxhYiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbGxhYm5hbWUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFmZmlsaWF0aW9uIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbGxhYi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb2xsYWIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29sbGFiLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29sbGFiLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb2xsYWIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb2xsYWIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2xsYWJuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb2xsYWJuYW1lIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29sbGFibmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb2xsYWJuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbGxhYm5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb2xsYWJuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb2xsYWJuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29sbGFibmFtZS5tb2R1bGUgLS0+CiAgPCEtLSBBZmZpbGlhdGlvbiAoZGVmaW5lZCBlbHNld2hlcmUgaW4gdGhpcyBzZWN0aW9uKSAtLT4KICA8IS0tIGVuZCBvZiBjb2xsYWIuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBDb3JwQXV0aG9yIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDwhLS0gT3RoZXJDcmVkaXQgKGRlZmluZWQgZWxzZXdoZXJlIGluIHRoaXMgc2VjdGlvbikgLS0+CiAgPCEtLSBlbmQgb2YgYXV0aG9yZ3JvdXAuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBBdXRob3JJbml0aWFscyAuLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdXRob3Jpbml0aWFscy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXV0aG9yaW5pdGlhbHMiIHN1YnN0aXR1dGlvbkdyb3VwPSJkb2NpbmZvLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdXRob3Jpbml0aWFscy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhdXRob3Jpbml0aWFscy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdXRob3Jpbml0aWFscy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1dGhvcmluaXRpYWxzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhdXRob3Jpbml0aWFscy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGF1dGhvcmluaXRpYWxzLm1vZHVsZSAtLT4KICA8IS0tIENvbmZHcm91cCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbmZncm91cC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29uZmdyb3VwIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbmZkYXRlcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29uZnRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb25mbnVtIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZGRyZXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb25mc3BvbnNvciIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZmdyb3VwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbmZncm91cC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mZ3JvdXAuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25mZ3JvdXAucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbmZncm91cC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbmZncm91cC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbmZkYXRlcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29uZmRhdGVzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZmRhdGVzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbmZkYXRlcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mZGF0ZXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25mZGF0ZXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbmZkYXRlcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbmZkYXRlcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbmZ0aXRsZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29uZnRpdGxlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZnRpdGxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbmZ0aXRsZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mdGl0bGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25mdGl0bGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbmZ0aXRsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbmZ0aXRsZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbmZudW0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbmZudW0iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25mbnVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbmZudW0uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29uZm51bS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbmZudW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbmZudW0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb25mbnVtLm1vZHVsZSAtLT4KICA8IS0tIEFkZHJlc3MgKGRlZmluZWQgZWxzZXdoZXJlIGluIHRoaXMgc2VjdGlvbikgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbmZzcG9uc29yLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb25mc3BvbnNvciI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbmZzcG9uc29yLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbmZzcG9uc29yLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbmZzcG9uc29yLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZnNwb25zb3Iucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbmZzcG9uc29yLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29uZnNwb25zb3IubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIGNvbmZncm91cC5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIENvbnRyYWN0TnVtIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnRyYWN0bnVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb250cmFjdG51bSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnRyYWN0bnVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbnRyYWN0bnVtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnRyYWN0bnVtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29udHJhY3RudW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbnRyYWN0bnVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29udHJhY3RudW0ubW9kdWxlIC0tPgogIDwhLS0gQ29udHJhY3RTcG9uc29yIC4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29udHJhY3RzcG9uc29yLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb250cmFjdHNwb25zb3IiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb250cmFjdHNwb25zb3IuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29udHJhY3RzcG9uc29yLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnRyYWN0c3BvbnNvci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnRyYWN0c3BvbnNvci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29udHJhY3RzcG9uc29yLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29udHJhY3RzcG9uc29yLm1vZHVsZSAtLT4KICA8IS0tIENvcHlyaWdodCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvcHlyaWdodC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29weXJpZ2h0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InllYXIiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImhvbGRlciIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3B5cmlnaHQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29weXJpZ2h0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvcHlyaWdodC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvcHlyaWdodC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29weXJpZ2h0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29weXJpZ2h0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ieWVhci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ieWVhciI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InllYXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgeWVhci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ5ZWFyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ieWVhci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgeWVhci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHllYXIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJob2xkZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImhvbGRlciI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImhvbGRlci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBob2xkZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaG9sZGVyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaG9sZGVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBob2xkZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBob2xkZXIubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIGNvcHlyaWdodC5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIENvcnBBdXRob3IgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvcnBhdXRob3Iucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvcnBhdXRob3IiIHN1YnN0aXR1dGlvbkdyb3VwPSJkb2NpbmZvLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3JwYXV0aG9yLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvcnBhdXRob3IuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29ycGF1dGhvci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvcnBhdXRob3Iucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvcnBhdXRob3IuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb3JwYXV0aG9yLm1vZHVsZSAtLT4KICA8IS0tIENvcnBDcmVkaXQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29ycGNyZWRpdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29ycGNyZWRpdCIgc3Vic3RpdHV0aW9uR3JvdXA9ImRvY2luZm8uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvcnBjcmVkaXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29ycGNyZWRpdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3JwY3JlZGl0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImdyYXBoaWNkZXNpZ25lciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcm9kdWN0aW9uZWRpdG9yIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvcHllZGl0b3IiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idGVjaG5pY2FsZWRpdG9yIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRyYW5zbGF0b3IiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvcnBjcmVkaXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvcnBjcmVkaXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb3JwY3JlZGl0Lm1vZHVsZSAtLT4KICA8IS0tIENvcnBOYW1lIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29ycG5hbWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3JwbmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb3JwbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3JwbmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvcnBuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29ycG5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvcnBuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29ycG5hbWUubW9kdWxlIC0tPgogIDwhLS0gRGF0ZSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGF0ZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZGF0ZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRhdGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZGF0ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJkYXRlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZGF0ZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZGF0ZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGRhdGUubW9kdWxlIC0tPgogIDwhLS0gRWRpdGlvbiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZWRpdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZWRpdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVkaXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZWRpdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlZGl0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZWRpdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZWRpdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVkaXRpb24ubW9kdWxlIC0tPgogIDwhLS0gRWRpdG9yIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZWRpdG9yLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJlZGl0b3IiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icGVyc29ubmFtZSIvPgogICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBlcnNvbi5pZGVudC5taXgiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwZXJzb25ibHVyYiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlbWFpbCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZGRyZXNzIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVkaXRvci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlZGl0b3IuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZWRpdG9yLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZWRpdG9yLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlZGl0b3IuYXR0bGlzdCAtLT4KICA8IS0tIChzZWUgIlBlcnNvbmFsIGlkZW50aXR5IGVsZW1lbnRzIiBmb3IgJXBlcnNvbi5pZGVudC5taXg7KSAtLT4KICA8IS0tIGVuZCBvZiBlZGl0b3IubW9kdWxlIC0tPgogIDwhLS0gSVNCTiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaXNibi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaXNibiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlzYm4uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaXNibi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpc2JuLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaXNibi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaXNibi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGlzYm4ubW9kdWxlIC0tPgogIDwhLS0gSVNTTiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaXNzbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaXNzbiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imlzc24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaXNzbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpc3NuLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaXNzbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaXNzbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGlzc24ubW9kdWxlIC0tPgogIDwhLS0gQmlibGlvSWQgLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpby5jbGFzcy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InVyaSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkb2kiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXNibiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpc3NuIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpYnJhcnlvZmNvbmdyZXNzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InB1Ym51bWJlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcmNsYXNzIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvaWQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb2lkIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvaWQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmlibGlvaWQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvaWQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW8uY2xhc3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9pZC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmlibGlvaWQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9pZC5tb2R1bGUgLS0+CiAgPCEtLSBDaXRlQmlibGlvSWQgLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNpdGViaWJsaW9pZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2l0ZWJpYmxpb2lkIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0ZWJpYmxpb2lkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNpdGViaWJsaW9pZC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXRlYmlibGlvaWQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW8uY2xhc3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaXRlYmlibGlvaWQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNpdGViaWJsaW9pZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNpdGViaWJsaW9pZC5tb2R1bGUgLS0+CiAgPCEtLSBCaWJsaW9Tb3VyY2UgLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb3NvdXJjZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvc291cmNlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvc291cmNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb3NvdXJjZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9zb3VyY2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW8uY2xhc3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9zb3VyY2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb3NvdXJjZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb3NvdXJjZS5tb2R1bGUgLS0+CiAgPCEtLSBCaWJsaW9SZWxhdGlvbiAuLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvcmVsYXRpb24udHlwZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXN2ZXJzaW9ub2YiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaGFzdmVyc2lvbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpc3JlcGxhY2VkYnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVwbGFjZXMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXNyZXF1aXJlZGJ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlcXVpcmVzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImlzcGFydG9mIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imhhc3BhcnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXNyZWZlcmVuY2VkYnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVmZXJlbmNlcyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpc2Zvcm1hdG9mIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imhhc2Zvcm1hdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlcnR5cGUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3RoZXJ0eXBlIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvcmVsYXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb3JlbGF0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvcmVsYXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmlibGlvcmVsYXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvcmVsYXRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW8uY2xhc3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9yZWxhdGlvbi50eXBlLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvcmVsYXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb3JlbGF0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYmlibGlvcmVsYXRpb24ubW9kdWxlIC0tPgogIDwhLS0gQmlibGlvQ292ZXJhZ2UgLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2NvdmVyYWdlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9jb3ZlcmFnZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2NvdmVyYWdlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb2NvdmVyYWdlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2NvdmVyYWdlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGF0aWFsIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZGNtaXBvaW50Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImlzbzMxNjYiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZGNtaWJveCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0Z24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXJzcGF0aWFsIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVyc3BhdGlhbCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZW1wb3JhbCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRjbWlwZXJpb2QiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idzNjLWR0ZiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlcnRlbXBvcmFsIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVydGVtcG9yYWwiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2NvdmVyYWdlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9jb3ZlcmFnZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb2NvdmVyYWdlLm1vZHVsZSAtLT4KICA8IS0tIEludlBhcnROdW1iZXIgLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImludnBhcnRudW1iZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImludnBhcnRudW1iZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbnZwYXJ0bnVtYmVyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGludnBhcnRudW1iZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW52cGFydG51bWJlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImludnBhcnRudW1iZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGludnBhcnRudW1iZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbnZwYXJ0bnVtYmVyLm1vZHVsZSAtLT4KICA8IS0tIElzc3VlTnVtIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imlzc3VlbnVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpc3N1ZW51bSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imlzc3VlbnVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGlzc3VlbnVtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imlzc3VlbnVtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaXNzdWVudW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGlzc3VlbnVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaXNzdWVudW0ubW9kdWxlIC0tPgogIDwhLS0gTGVnYWxOb3RpY2UgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGVnYWxub3RpY2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImxlZ2Fsbm90aWNlIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibGVnYWxub3RpY2UubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxlZ2Fsbm90aWNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxlZ2Fsbm90aWNlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxlZ2Fsbm90aWNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGVnYWxub3RpY2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxlZ2Fsbm90aWNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGVnYWxub3RpY2UubW9kdWxlIC0tPgogIDwhLS0gTW9kZVNwZWMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibW9kZXNwZWMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1vZGVzcGVjIiBzdWJzdGl0dXRpb25Hcm91cD0iZG9jaW5mby5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9kZXNwZWMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbW9kZXNwZWMuZWxlbWVudCAtLT4KICA8IS0tCiAgICBBcHBsaWNhdGlvbjogVHlwZSBvZiBhY3Rpb24gcmVxdWlyZWQgZm9yIGNvbXBsZXRpb24KICAgIG9mIHRoZSBsaW5rcyB0byB3aGljaCB0aGUgTW9kZVNwZWMgaXMgcmVsZXZhbnQgKGUuZy4sCiAgICByZXRyaWV2YWwgcXVlcnkpCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1vZGVzcGVjLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhcHBsaWNhdGlvbiIgdHlwZT0ibm90YXRpb24uY2xhc3MiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vZGVzcGVjLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtb2Rlc3BlYy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1vZGVzcGVjLm1vZHVsZSAtLT4KICA8IS0tIE9yZ05hbWUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9yZ25hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im9yZ25hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9yZ25hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb3JnbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcmduYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvcnBvcmF0aW9uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vbnByb2ZpdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb25zb3J0aXVtIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImluZm9ybWFsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im90aGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVyY2xhc3MiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9yZ25hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG9yZ25hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvcmduYW1lLm1vZHVsZSAtLT4KICA8IS0tIE90aGVyQ3JlZGl0IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im90aGVyY3JlZGl0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvdGhlcmNyZWRpdCIgc3Vic3RpdHV0aW9uR3JvdXA9ImRvY2luZm8uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwZXJzb25uYW1lIi8+CiAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGVyc29uLmlkZW50Lm1peCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBlcnNvbmJsdXJiIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtYWlsIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFkZHJlc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3RoZXJjcmVkaXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb3RoZXJjcmVkaXQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3RoZXJjcmVkaXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZ3JhcGhpY2Rlc2lnbmVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InByb2R1Y3Rpb25lZGl0b3IiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29weWVkaXRvciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0ZWNobmljYWxlZGl0b3IiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idHJhbnNsYXRvciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3RoZXJjcmVkaXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG90aGVyY3JlZGl0LmF0dGxpc3QgLS0+CiAgPCEtLSAoc2VlICJQZXJzb25hbCBpZGVudGl0eSBlbGVtZW50cyIgZm9yICVwZXJzb24uaWRlbnQubWl4OykgLS0+CiAgPCEtLSBlbmQgb2Ygb3RoZXJjcmVkaXQubW9kdWxlIC0tPgogIDwhLS0gUGFnZU51bXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFnZW51bXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBhZ2VudW1zIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFnZW51bXMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcGFnZW51bXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFnZW51bXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcGFnZW51bXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwYWdlbnVtcy5tb2R1bGUgLS0+CiAgPCEtLSBQZXJzb25hbCBpZGVudGl0eSBlbGVtZW50cyAuLi4uLi4uIC0tPgogIDwhLS0KICAgIFRoZXNlIGVsZW1lbnRzIGFyZSB1c2VkIG9ubHkgd2l0aGluIEF1dGhvciwgRWRpdG9yLCBhbmQKICAgIE90aGVyQ3JlZGl0LgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb250cmliLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb250cmliIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29udHJpYi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb250cmliLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnRyaWIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb250cmliLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb250cmliLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29udHJpYi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZpcnN0bmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZmlyc3RuYW1lIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZmlyc3RuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZpcnN0bmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmaXJzdG5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaXJzdG5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZpcnN0bmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZpcnN0bmFtZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imhvbm9yaWZpYy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaG9ub3JpZmljIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaG9ub3JpZmljLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGhvbm9yaWZpYy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJob25vcmlmaWMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJob25vcmlmaWMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGhvbm9yaWZpYy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGhvbm9yaWZpYy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmVhZ2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImxpbmVhZ2UiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lYWdlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxpbmVhZ2UuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGluZWFnZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmVhZ2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxpbmVhZ2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBsaW5lYWdlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3RoZXJuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvdGhlcm5hbWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvdGhlcm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb3RoZXJuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im90aGVybmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im90aGVybmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb3RoZXJuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb3RoZXJuYW1lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3VybmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3VybmFtZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1cm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3VybmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdXJuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3VybmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3VybmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN1cm5hbWUubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHBlcnNvbi5pZGVudC5tb2R1bGUgLS0+CiAgPCEtLSBQcmludEhpc3RvcnkgLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcmludGhpc3Rvcnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InByaW50aGlzdG9yeSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByaW50aGlzdG9yeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwcmludGhpc3RvcnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJpbnRoaXN0b3J5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJpbnRoaXN0b3J5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwcmludGhpc3RvcnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcmludGhpc3RvcnkubW9kdWxlIC0tPgogIDwhLS0gUHJvZHVjdE5hbWUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvZHVjdG5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InByb2R1Y3RuYW1lIiBzdWJzdGl0dXRpb25Hcm91cD0iZG9jaW5mby5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvZHVjdG5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJvZHVjdG5hbWUuZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBNb3JlIHByZWNpc2VseSBpZGVudGlmaWVzIHRoZSBpdGVtIHRoZSBlbGVtZW50IG5hbWVzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9kdWN0bmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIGRlZmF1bHQ9InRyYWRlIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VydmljZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0cmFkZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZWdpc3RlcmVkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvcHlyaWdodCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvZHVjdG5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByb2R1Y3RuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHJvZHVjdG5hbWUubW9kdWxlIC0tPgogIDwhLS0gUHJvZHVjdE51bWJlciAuLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvZHVjdG51bWJlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHJvZHVjdG51bWJlciIgc3Vic3RpdHV0aW9uR3JvdXA9ImRvY2luZm8uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2R1Y3RudW1iZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJvZHVjdG51bWJlci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9kdWN0bnVtYmVyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvZHVjdG51bWJlci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJvZHVjdG51bWJlci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByb2R1Y3RudW1iZXIubW9kdWxlIC0tPgogIDwhLS0gUHViRGF0ZSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHViZGF0ZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHViZGF0ZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InB1YmRhdGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHViZGF0ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwdWJkYXRlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHViZGF0ZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHViZGF0ZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHB1YmRhdGUubW9kdWxlIC0tPgogIDwhLS0gUHVibGlzaGVyIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHVibGlzaGVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwdWJsaXNoZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwdWJsaXNoZXJuYW1lIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJhZGRyZXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InB1Ymxpc2hlci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHVibGlzaGVyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHVibGlzaGVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwdWJsaXNoZXJuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwdWJsaXNoZXJuYW1lIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHVibGlzaGVybmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXJuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InB1Ymxpc2hlcm5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwdWJsaXNoZXJuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXJuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHVibGlzaGVybmFtZS5tb2R1bGUgLS0+CiAgPCEtLSBBZGRyZXNzIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDwhLS0gZW5kIG9mIHB1Ymxpc2hlci5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIFB1YnNOdW1iZXIgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InB1YnNudW1iZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InB1YnNudW1iZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwdWJzbnVtYmVyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHB1YnNudW1iZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHVic251bWJlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InB1YnNudW1iZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHB1YnNudW1iZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwdWJzbnVtYmVyLm1vZHVsZSAtLT4KICA8IS0tIFJlbGVhc2VJbmZvIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlbGVhc2VpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWxlYXNlaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlbGVhc2VpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlbGVhc2VpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlbGVhc2VpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVsZWFzZWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlbGVhc2VpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVsZWFzZWluZm8ubW9kdWxlIC0tPgogIDwhLS0gUmV2SGlzdG9yeSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aGlzdG9yeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmV2aGlzdG9yeSIgc3Vic3RpdHV0aW9uR3JvdXA9ImRvY2luZm8uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZXZpc2lvbiIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZoaXN0b3J5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJldmhpc3RvcnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aGlzdG9yeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldmhpc3Rvcnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJldmhpc3RvcnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZXZoaXN0b3J5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aXNpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJldmlzaW9uIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmV2bnVtYmVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJkYXRlIi8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYXV0aG9yIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImF1dGhvcmluaXRpYWxzIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXZyZW1hcmsiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icmV2ZGVzY3JpcHRpb24iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2aXNpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmV2aXNpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aXNpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZpc2lvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmV2aXNpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZXZpc2lvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldm51bWJlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmV2bnVtYmVyIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2bnVtYmVyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJldm51bWJlci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXZudW1iZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZudW1iZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJldm51bWJlci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJldm51bWJlci5tb2R1bGUgLS0+CiAgPCEtLSBEYXRlIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDwhLS0gQXV0aG9ySW5pdGlhbHMgKGRlZmluZWQgZWxzZXdoZXJlIGluIHRoaXMgc2VjdGlvbikgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldnJlbWFyay5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmV2cmVtYXJrIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2cmVtYXJrLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJldnJlbWFyay5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXZyZW1hcmsuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZyZW1hcmsucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJldnJlbWFyay5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJldnJlbWFyay5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldmRlc2NyaXB0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZXZkZXNjcmlwdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZXZkZXNjcmlwdGlvbi5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2ZGVzY3JpcHRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmV2ZGVzY3JpcHRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2ZGVzY3JpcHRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZkZXNjcmlwdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmV2ZGVzY3JpcHRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZXZkZXNjcmlwdGlvbi5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgcmV2aGlzdG9yeS5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIFNlcmllc1ZvbE51bXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlcmllc3ZvbG51bXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlcmllc3ZvbG51bXMiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZXJpZXN2b2xudW1zLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlcmllc3ZvbG51bXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VyaWVzdm9sbnVtcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlcmllc3ZvbG51bXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlcmllc3ZvbG51bXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZXJpZXN2b2xudW1zLm1vZHVsZSAtLT4KICA8IS0tIFZvbHVtZU51bSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZvbHVtZW51bS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idm9sdW1lbnVtIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idm9sdW1lbnVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZvbHVtZW51bS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2b2x1bWVudW0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2b2x1bWVudW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZvbHVtZW51bS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZvbHVtZW51bS5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gZW5kIG9mIGRvY2luZm8uY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gSW5saW5lLCBsaW5rLCBhbmQgdWJpcXVpdG91cyBlbGVtZW50cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFRlY2huaWNhbCBhbmQgY29tcHV0ZXIgdGVybXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFjY2VsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhY2NlbCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWNjZWwuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWNjZWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWNjZWwuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhY2NlbC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWNjZWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhY2NlbC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFjdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYWN0aW9uIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWN0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFjdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhY3Rpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFjdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWN0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYWN0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXBwbGljYXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFwcGxpY2F0aW9uIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXBwbGljYXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXBwbGljYXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXBwbGljYXRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaGFyZHdhcmUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic29mdHdhcmUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXBwbGljYXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFwcGxpY2F0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXBwbGljYXRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjbGFzc25hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNsYXNzbmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2xhc3NuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNsYXNzbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjbGFzc25hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjbGFzc25hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNsYXNzbmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNsYXNzbmFtZS5tb2R1bGUgLS0+CiAgPCEtLQogICAgQ08gaXMgYSBjYWxsb3V0IGFyZWEgb2YgdGhlIExpbmVDb2x1bW4gdW5pdCB0eXBlIChhIHNpbmdsZSBjaGFyYWN0ZXIKICAgIHBvc2l0aW9uKTsgdGhlIHBvc2l0aW9uIGlzIGRpcmVjdGx5IGluZGljYXRlZCBieSB0aGUgbG9jYXRpb24gb2YgQ08uCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvLmVsZW1lbnQgLS0+CiAgPCEtLSBidWcgbnVtYmVyL3N5bWJvbCBvdmVycmlkZSBvciBpbml0aWFsaXphdGlvbiAtLT4KICA8IS0tIHRvIGFueSByZWxhdGVkIGluZm9ybWF0aW9uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpZHJlcS5jb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY28uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjby5tb2R1bGUgLS0+CiAgPCEtLSBDT1JFRiBpcyBhIHJlZmVyZW5jZSB0byBhIENPIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3JlZi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29yZWYiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3JlZi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb3JlZi5lbGVtZW50IC0tPgogIDwhLS0gYnVnIG51bWJlci9zeW1ib2wgb3ZlcnJpZGUgb3IgaW5pdGlhbGl6YXRpb24gLS0+CiAgPCEtLSB0byBhbnkgcmVsYXRlZCBpbmZvcm1hdGlvbiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29yZWYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRyZXEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3JlZi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29yZWYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb3JlZi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbW1hbmQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbW1hbmQiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tYW5kLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbW1hbmQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29tbWFuZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbWFuZC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29tbWFuZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbW1hbmQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb21wdXRlcm91dHB1dC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29tcHV0ZXJvdXRwdXQiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbyIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tcHV0ZXJvdXRwdXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29tcHV0ZXJvdXRwdXQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29tcHV0ZXJvdXRwdXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbXB1dGVyb3V0cHV0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb21wdXRlcm91dHB1dC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbXB1dGVyb3V0cHV0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGF0YWJhc2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImRhdGFiYXNlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZGF0YWJhc2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZGF0YWJhc2UuZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBUeXBlIG9mIGRhdGFiYXNlIHRoZSBlbGVtZW50IG5hbWVzOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJkYXRhYmFzZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJuYW1lIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRhYmxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImZpZWxkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImtleTEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ia2V5MiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZWNvcmQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaW5kZXgiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idmlldyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcmltYXJ5a2V5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY29uZGFyeWtleSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJmb3JlaWdua2V5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImFsdGtleSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcm9jZWR1cmUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZGF0YXR5cGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29uc3RyYWludCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJydWxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InVzZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZ3JvdXAiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZGF0YWJhc2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGRhdGFiYXNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZGF0YWJhc2UubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlbWFpbC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZW1haWwiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlbWFpbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlbWFpbC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlbWFpbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVtYWlsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlbWFpbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVtYWlsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZW52YXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImVudmFyIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlbnZhci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlbnZhci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlbnZhci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVudmFyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlbnZhci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVudmFyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXJyb3Jjb2RlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJlcnJvcmNvZGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVycm9yY29kZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlcnJvcmNvZGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXJyb3Jjb2RlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcnJvcmNvZGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGVycm9yY29kZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVycm9yY29kZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVycm9ybmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXJyb3JuYW1lIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcnJvcm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZXJyb3JuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVycm9ybmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVycm9ybmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZXJyb3JuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZXJyb3JuYW1lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXJyb3J0ZXh0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJlcnJvcnRleHQiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVycm9ydGV4dC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlcnJvcnRleHQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXJyb3J0ZXh0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXJyb3J0ZXh0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlcnJvcnRleHQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBlcnJvcnRleHQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcnJvcnR5cGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImVycm9ydHlwZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXJyb3J0eXBlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGVycm9ydHlwZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcnJvcnR5cGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcnJvcnR5cGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGVycm9ydHlwZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVycm9ydHlwZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZpbGVuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmaWxlbmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZpbGVuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZpbGVuYW1lLmVsZW1lbnQgLS0+CiAgPCEtLSBDbGFzczogVHlwZSBvZiBmaWxlbmFtZSB0aGUgZWxlbWVudCBuYW1lczsgbm8gZGVmYXVsdCAtLT4KICA8IS0tCiAgICBQYXRoOiBTZWFyY2ggcGF0aCAocG9zc2libHkgc3lzdGVtLXNwZWNpZmljKSBpbiB3aGljaAogICAgZmlsZSBjYW4gYmUgZm91bmQKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmlsZW5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaGVhZGVyZmlsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwYXJ0aXRpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZGV2aWNlZmlsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaWJyYXJ5ZmlsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkaXJlY3RvcnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZXh0ZW5zaW9uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InN5bWxpbmsiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGF0aCIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaWxlbmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZmlsZW5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmaWxlbmFtZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmN0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmdW5jdGlvbiIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmN0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZ1bmN0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmN0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZnVuY3Rpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmdW5jdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aWJ1dHRvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ3VpYnV0dG9uIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhY2NlbCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3VpYnV0dG9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGd1aWJ1dHRvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWlidXR0b24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aWJ1dHRvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ3VpYnV0dG9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ3VpYnV0dG9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3VpaWNvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ3VpaWNvbiIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYWNjZWwiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aWljb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ3VpaWNvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWlpY29uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWlpY29uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBndWlpY29uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ3VpaWNvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aWxhYmVsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJndWlsYWJlbCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYWNjZWwiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aWxhYmVsLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGd1aWxhYmVsLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aWxhYmVsLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWlsYWJlbC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ3VpbGFiZWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBndWlsYWJlbC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aW1lbnUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imd1aW1lbnUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjY2VsIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWltZW51LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGd1aW1lbnUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3VpbWVudS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3VpbWVudS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ3VpbWVudS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGd1aW1lbnUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWltZW51aXRlbS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ3VpbWVudWl0ZW0iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjY2VsIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWltZW51aXRlbS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBndWltZW51aXRlbS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWltZW51aXRlbS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3VpbWVudWl0ZW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGd1aW1lbnVpdGVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ3VpbWVudWl0ZW0ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWlzdWJtZW51LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJndWlzdWJtZW51IiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhY2NlbCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3Vpc3VibWVudS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBndWlzdWJtZW51LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aXN1Ym1lbnUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aXN1Ym1lbnUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGd1aXN1Ym1lbnUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBndWlzdWJtZW51Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaGFyZHdhcmUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImhhcmR3YXJlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaGFyZHdhcmUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaGFyZHdhcmUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaGFyZHdhcmUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImhhcmR3YXJlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBoYXJkd2FyZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGhhcmR3YXJlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW50ZXJmYWNlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbnRlcmZhY2UiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjY2VsIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbnRlcmZhY2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW50ZXJmYWNlLmVsZW1lbnQgLS0+CiAgPCEtLSBDbGFzczogVHlwZSBvZiB0aGUgSW50ZXJmYWNlIGl0ZW07IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImludGVyZmFjZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW50ZXJmYWNlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbnRlcmZhY2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbnRlcmZhY2UubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJrZXljYXAucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImtleWNhcCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleWNhcC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBrZXljYXAuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5Y2FwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmdW5jdGlvbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImFsdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb250cm9sIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNoaWZ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1ldGEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZXNjYXBlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImVudGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRhYiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJiYWNrc3BhY2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29tbWFuZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHRpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic3BhY2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZGVsZXRlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imluc2VydCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ1cCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkb3duIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaG9tZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJlbmQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icGFnZXVwIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBhZ2Vkb3duIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im90aGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVyZnVuY3Rpb24iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5Y2FwLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBrZXljYXAuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBrZXljYXAubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJrZXljb2RlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJrZXljb2RlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXljb2RlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGtleWNvZGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5Y29kZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleWNvZGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGtleWNvZGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBrZXljb2RlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5Y29tYm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImtleWNvbWJvIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJrZXljYXAiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImtleWNvbWJvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJrZXlzeW0iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1vdXNlYnV0dG9uIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXljb21iby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBrZXljb21iby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJrZXljb21iby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleWFjdGlvbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5Y29tYm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGtleWNvbWJvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Yga2V5Y29tYm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJrZXlzeXNtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJrZXlzeW0iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleXN5bS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBrZXlzeW0uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5c3ltLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5c3lzbS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Yga2V5c3ltLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Yga2V5c3ltLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGluZWFubm90YXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImxpbmVhbm5vdGF0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZWFubm90YXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbGluZWFubm90YXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGluZWFubm90YXRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lYW5ub3RhdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbGluZWFubm90YXRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBsaW5lYW5ub3RhdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpdGVyYWwucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImxpdGVyYWwiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaXRlcmFsLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxpdGVyYWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGl0ZXJhbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGl0ZXJhbC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbGl0ZXJhbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGxpdGVyYWwubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2RlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb2RlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29kZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb2RlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvZGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxhbmd1YWdlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb2RlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb2RlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29kZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnN0YW50LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb25zdGFudCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uc3RhbnQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29uc3RhbnQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29uc3RhbnQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGltaXQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnN0YW50LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb25zdGFudC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbnN0YW50Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmFybmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idmFybmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmFybmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB2YXJuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZhcm5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2YXJuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB2YXJuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdmFybmFtZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1hcmt1cC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWFya3VwIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtYXJrdXAuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWFya3VwLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1hcmt1cC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1hcmt1cC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWFya3VwLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWFya3VwLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWVkaWFsYWJlbC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWVkaWFsYWJlbCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWVkaWFsYWJlbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtZWRpYWxhYmVsLmVsZW1lbnQgLS0+CiAgPCEtLSBDbGFzczogVHlwZSBvZiBtZWRpdW0gbmFtZWQgYnkgdGhlIGVsZW1lbnQ7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lZGlhbGFiZWwuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2FydHJpZGdlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNkcm9tIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRpc2siLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idGFwZSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWVkaWFsYWJlbC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWVkaWFsYWJlbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1lZGlhbGFiZWwubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZW51Y2hvaWNlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtZW51Y2hvaWNlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzaG9ydGN1dCIvPgogICAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJndWlidXR0b24iLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3VpaWNvbiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJndWlsYWJlbCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJndWltZW51Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imd1aW1lbnVpdGVtIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imd1aXN1Ym1lbnUiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iaW50ZXJmYWNlIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1lbnVjaG9pY2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWVudWNob2ljZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZW51Y2hvaWNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZW51Y2hvaWNlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtZW51Y2hvaWNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWVudWNob2ljZS5tb2R1bGUgLS0+CiAgPCEtLSBTZWUgYWxzbyBLZXlDb21ibyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2hvcnRjdXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNob3J0Y3V0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJrZXljYXAiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImtleWNvbWJvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJrZXlzeW0iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1vdXNlYnV0dG9uIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaG9ydGN1dC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzaG9ydGN1dC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaG9ydGN1dC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleWFjdGlvbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2hvcnRjdXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNob3J0Y3V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2hvcnRjdXQubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIG1lbnVjaG9pY2UuY29udGVudC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1vdXNlYnV0dG9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtb3VzZWJ1dHRvbiIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW91c2VidXR0b24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbW91c2VidXR0b24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibW91c2VidXR0b24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vdXNlYnV0dG9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtb3VzZWJ1dHRvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1vdXNlYnV0dG9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNndGV4dC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibXNndGV4dCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ3RleHQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNndGV4dC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2d0ZXh0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNndGV4dC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNndGV4dC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1zZ3RleHQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcHRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im9wdGlvbiIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9wdGlvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvcHRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3B0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3B0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvcHRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvcHRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcHRpb25hbC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib3B0aW9uYWwiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvcHRpb25hbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvcHRpb25hbC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcHRpb25hbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9wdGlvbmFsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvcHRpb25hbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG9wdGlvbmFsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFyYW1ldGVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwYXJhbWV0ZXIiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJhbWV0ZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcGFyYW1ldGVyLmVsZW1lbnQgLS0+CiAgPCEtLSBDbGFzczogVHlwZSBvZiB0aGUgUGFyYW1ldGVyOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYXJhbWV0ZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29tbWFuZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJmdW5jdGlvbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHRpb24iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFyYW1ldGVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwYXJhbWV0ZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwYXJhbWV0ZXIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9tcHQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InByb21wdCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY28iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb21wdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwcm9tcHQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvbXB0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9tcHQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByb21wdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByb21wdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb3BlcnR5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwcm9wZXJ0eSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb3BlcnR5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByb3BlcnR5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb3BlcnR5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9wZXJ0eS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJvcGVydHkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcm9wZXJ0eS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlcGxhY2VhYmxlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZXBsYWNlYWJsZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvcHRpb25hbCIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJhc2UuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZWdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbyIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVwbGFjZWFibGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVwbGFjZWFibGUuZWxlbWVudCAtLT4KICA8IS0tCiAgICBDbGFzczogVHlwZSBvZiBpbmZvcm1hdGlvbiB0aGUgZWxlbWVudCByZXByZXNlbnRzOyBubwogICAgZGVmYXVsdAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXBsYWNlYWJsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb21tYW5kIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImZ1bmN0aW9uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im9wdGlvbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwYXJhbWV0ZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlcGxhY2VhYmxlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZXBsYWNlYWJsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlcGxhY2VhYmxlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV0dXJudmFsdWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJldHVybnZhbHVlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXR1cm52YWx1ZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZXR1cm52YWx1ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXR1cm52YWx1ZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldHVybnZhbHVlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZXR1cm52YWx1ZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJldHVybnZhbHVlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2dtbHRhZy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2dtbHRhZyIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2dtbHRhZy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZ21sdGFnLmVsZW1lbnQgLS0+CiAgPCEtLSBDbGFzczogVHlwZSBvZiBTR01MIGNvbnN0cnVjdCB0aGUgZWxlbWVudCBuYW1lczsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2dtbHRhZy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhdHRyaWJ1dGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYXR0dmFsdWUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZWxlbWVudCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJlbmR0YWciLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZW1wdHl0YWciLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZ2VuZW50aXR5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im51bWNoYXJyZWYiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icGFyYW1lbnRpdHkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icGkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ieG1scGkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic3RhcnR0YWciLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2dtbGNvbW1lbnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icHJlZml4Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5hbWVzcGFjZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsb2NhbG5hbWUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZXNwYWNlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZ21sdGFnLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZ21sdGFnLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2dtbHRhZy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0cnVjdGZpZWxkLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdHJ1Y3RmaWVsZCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RydWN0ZmllbGQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3RydWN0ZmllbGQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RydWN0ZmllbGQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdHJ1Y3RmaWVsZC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3RydWN0ZmllbGQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzdHJ1Y3RmaWVsZC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0cnVjdG5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN0cnVjdG5hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0cnVjdG5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3RydWN0bmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdHJ1Y3RuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RydWN0bmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3RydWN0bmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN0cnVjdG5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzeW1ib2wucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN5bWJvbCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3ltYm9sLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN5bWJvbC5lbGVtZW50IC0tPgogIDwhLS0gQ2xhc3M6IFR5cGUgb2Ygc3ltYm9sOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzeW1ib2wuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGltaXQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5bWJvbC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3ltYm9sLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3ltYm9sLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3lzdGVtaXRlbS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3lzdGVtaXRlbSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjcm9ueW0iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzeXN0ZW1pdGVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN5c3RlbWl0ZW0uZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBUeXBlIG9mIHN5c3RlbSBpdGVtIHRoZSBlbGVtZW50IG5hbWVzOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzeXN0ZW1pdGVtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvbnN0YW50Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImV2ZW50Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImV2ZW50aGFuZGxlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkb21haW5uYW1lIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImZxZG9tYWlubmFtZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpcGFkZHJlc3MiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibmV0bWFzayIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJldGhlcmFkZHJlc3MiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZ3JvdXBuYW1lIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpYnJhcnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWFjcm8iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3NuYW1lIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImZpbGVzeXN0ZW0iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVzb3VyY2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic3lzdGVtbmFtZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ1c2VybmFtZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJuZXdzZ3JvdXAiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icHJvY2VzcyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZXJ2aWNlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlcnZlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkYWVtb24iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3lzdGVtaXRlbS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3lzdGVtaXRlbS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN5c3RlbWl0ZW0ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ1cmkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InVyaSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idXJpLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHVyaS5lbGVtZW50IC0tPgogIDwhLS0gVHlwZTogVHlwZSBvZiBVUkk7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InVyaS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idXJpLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB1cmkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB1cmkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2tlbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9rZW4iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRva2VuLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRva2VuLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRva2VuLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9rZW4ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRva2VuLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9rZW4ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0eXBlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0eXBlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0eXBlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHR5cGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idHlwZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InR5cGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHR5cGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0eXBlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idXNlcmlucHV0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ1c2VyaW5wdXQiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbyIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idXNlcmlucHV0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHVzZXJpbnB1dC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ1c2VyaW5wdXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InVzZXJpbnB1dC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdXNlcmlucHV0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdXNlcmlucHV0Lm1vZHVsZSAtLT4KICA8IS0tIEdlbmVyYWwgd29yZHMgYW5kIHBocmFzZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFiYnJldi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYWJicmV2IiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0id29yZC5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhYmJyZXYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWJicmV2LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFiYnJldi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFiYnJldi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWJicmV2LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYWJicmV2Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWNyb255bS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYWNyb255bSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9IndvcmQuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWNyb255bS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhY3JvbnltLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFjcm9ueW0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhY3JvbnltLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhY3JvbnltLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYWNyb255bS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNpdGF0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjaXRhdGlvbiIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0YXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY2l0YXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2l0YXRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaXRhdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY2l0YXRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjaXRhdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNpdGVyZWZlbnRyeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2l0ZXJlZmVudHJ5IiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZWZlbnRyeXRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im1hbnZvbG51bSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaXRlcmVmZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY2l0ZXJlZmVudHJ5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNpdGVyZWZlbnRyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNpdGVyZWZlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY2l0ZXJlZmVudHJ5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2l0ZXJlZmVudHJ5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZW50cnl0aXRsZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmZW50cnl0aXRsZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVudHJ5dGl0bGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmZW50cnl0aXRsZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZlbnRyeXRpdGxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZW50cnl0aXRsZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmZW50cnl0aXRsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5dGl0bGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJuYW12b2xudW0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1hbnZvbG51bSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ3b3JkLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1hbnZvbG51bS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtYW52b2xudW0uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWFudm9sbnVtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibmFtdm9sbnVtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtYW52b2xudW0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtYW52b2xudW0ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXRldGl0bGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNpdGV0aXRsZSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0ZXRpdGxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNpdGV0aXRsZS5lbGVtZW50IC0tPgogIDwhLS0gUHVid29yazogR2VucmUgb2YgcHVibGlzaGVkIHdvcmsgY2l0ZWQ7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNpdGV0aXRsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icHVid29yayI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImFydGljbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYm9vayIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjaGFwdGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBhcnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVmZW50cnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdGlvbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJqb3VybmFsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlcmllcyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZXQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWFudXNjcmlwdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZHJvbSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkdmQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0id2lraSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJnb3BoZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYmJzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImVtYWlsbWVzc2FnZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ3ZWJwYWdlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5ld3Nwb3N0aW5nIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaXRldGl0bGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNpdGV0aXRsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNpdGV0aXRsZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVtcGhhc2lzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJlbXBoYXNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZW1waGFzaXMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZW1waGFzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZW1waGFzaXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlbXBoYXNpcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZW1waGFzaXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBlbXBoYXNpcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvcmVpZ25waHJhc2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZvcmVpZ25waHJhc2UiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZvcmVpZ25waHJhc2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZm9yZWlnbnBocmFzZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmb3JlaWducGhyYXNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZm9yZWlnbnBocmFzZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZm9yZWlnbnBocmFzZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZvcmVpZ25waHJhc2UubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc3Rlcm0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdsb3NzdGVybSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3N0ZXJtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdsb3NzdGVybS5lbGVtZW50IC0tPgogIDwhLS0gdG8gR2xvc3NFbnRyeSBpZiBHbG9zc3Rlcm0gdXNlZCBpbiB0ZXh0IC0tPgogIDwhLS0KICAgIEJhc2VGb3JtOiBQcm92aWRlcyB0aGUgZm9ybSBvZiBHbG9zc1Rlcm0gdG8gYmUgdXNlZAogICAgZm9yIGluZGV4aW5nCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzdGVybS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmFzZWZvcm0iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmQuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc3Rlcm0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3NzdGVybS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzdGVybS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZpcnN0dGVybS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZmlyc3R0ZXJtIiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaXJzdHRlcm0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZmlyc3R0ZXJtLmVsZW1lbnQgLS0+CiAgPCEtLSB0byBHbG9zc0VudHJ5IG9yIG90aGVyIGV4cGxhbmF0aW9uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmaXJzdHRlcm0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhc2Vmb3JtIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZmlyc3R0ZXJtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmaXJzdHRlcm0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmaXJzdHRlcm0ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwaHJhc2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBocmFzZSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGhyYXNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBocmFzZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwaHJhc2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwaHJhc2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBocmFzZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBocmFzZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InF1b3RlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJxdW90ZSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icXVvdGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcXVvdGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icXVvdGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJxdW90ZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcXVvdGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBxdW90ZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNzc2NyaXB0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdWJzY3JpcHQiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZW1waGFzaXMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlcGxhY2VhYmxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW1ib2wiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZWdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYmFzZS5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3Vic2NyaXB0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN1YnNjcmlwdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJzY3JpcHQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzc3NjcmlwdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3Vic2NyaXB0LmF0dGxpc3QgLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3VwZXJzY3JpcHQiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZW1waGFzaXMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlcGxhY2VhYmxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW1ib2wiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZWdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYmFzZS5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3VwZXJzY3JpcHQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3VwZXJzY3JpcHQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3VwZXJzY3JpcHQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzc3NjcmlwdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3VwZXJzY3JpcHQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzc3NjcmlwdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRyYWRlbWFyay5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idHJhZGVtYXJrIiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGVjaC5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYmFzZS5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtcGhhc2lzIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0cmFkZW1hcmsuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdHJhZGVtYXJrLmVsZW1lbnQgLS0+CiAgPCEtLSBDbGFzczogTW9yZSBwcmVjaXNlbHkgaWRlbnRpZmllcyB0aGUgaXRlbSB0aGUgZWxlbWVudCBuYW1lcyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idHJhZGVtYXJrLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIgZGVmYXVsdD0idHJhZGUiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZXJ2aWNlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRyYWRlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlZ2lzdGVyZWQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29weXJpZ2h0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0cmFkZW1hcmsucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRyYWRlbWFyay5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRyYWRlbWFyay5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9IndvcmRhc3dvcmQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9IndvcmRhc3dvcmQiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ3b3JkLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9IndvcmRhc3dvcmQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygd29yZGFzd29yZC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ3b3JkYXN3b3JkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0id29yZGFzd29yZC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygd29yZGFzd29yZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHdvcmRhc3dvcmQubW9kdWxlIC0tPgogIDwhLS0gTGlua3MgYW5kIGNyb3NzLXJlZmVyZW5jZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGluay5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibGluayIgc3Vic3RpdHV0aW9uR3JvdXA9ImxpbmsuY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmsuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbGluay5lbGVtZW50IC0tPgogIDwhLS0KICAgIEVuZHRlcm06IElEIG9mIGVsZW1lbnQgY29udGFpbmluZyB0ZXh0IHRoYXQgaXMgdG8gYmUKICAgIGZldGNoZWQgZnJvbSBlbHNld2hlcmUgaW4gdGhlIGRvY3VtZW50IHRvIGFwcGVhciBhcwogICAgdGhlIGNvbnRlbnQgb2YgdGhpcyBlbGVtZW50CiAgLS0+CiAgPCEtLSB0byBsaW5rZWQtdG8gb2JqZWN0IC0tPgogIDwhLS0gVHlwZTogRnJlZWx5IGFzc2lnbmFibGUgcGFyYW1ldGVyIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaW5rLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbmR0ZXJtIiB0eXBlPSJ4czpJRFJFRiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ4cmVmc3R5bGUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHJlcS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imxpbmsucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxpbmsuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBsaW5rLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib2xpbmsucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im9saW5rIiBzdWJzdGl0dXRpb25Hcm91cD0ibGluay5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib2xpbmsuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb2xpbmsuZWxlbWVudCAtLT4KICA8IS0tIFRhcmdldERvY0VudDogTmFtZSBvZiBhbiBlbnRpdHkgdG8gYmUgdGhlIHRhcmdldCBvZiB0aGUgbGluayAtLT4KICA8IS0tCiAgICBMaW5rTW9kZTogSUQgb2YgYSBNb2RlU3BlYyBjb250YWluaW5nIGluc3RydWN0aW9ucyBmb3IKICAgIG9wZXJhdGluZyBvbiB0aGUgZW50aXR5IG5hbWVkIGJ5IFRhcmdldERvY0VudAogIC0tPgogIDwhLS0gTG9jYWxJbmZvOiBJbmZvcm1hdGlvbiB0aGF0IG1heSBiZSBwYXNzZWQgdG8gTW9kZVNwZWMgLS0+CiAgPCEtLSBUeXBlOiBGcmVlbHkgYXNzaWduYWJsZSBwYXJhbWV0ZXIgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9saW5rLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0YXJnZXRkb2NlbnQiIHR5cGU9InhzOkVOVElUWSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsaW5rbW9kZSIgdHlwZT0ieHM6SURSRUYiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibG9jYWxpbmZvIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGFyZ2V0ZG9jIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRhcmdldHB0ciIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ4cmVmc3R5bGUiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9saW5rLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvbGluay5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG9saW5rLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idWxpbmsucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InVsaW5rIiBzdWJzdGl0dXRpb25Hcm91cD0ibGluay5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idWxpbmsuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdWxpbmsuZWxlbWVudCAtLT4KICA8IS0tIFVSTDogdW5pZm9ybSByZXNvdXJjZSBsb2NhdG9yOyB0aGUgdGFyZ2V0IG9mIHRoZSBVTGluayAtLT4KICA8IS0tIFR5cGU6IEZyZWVseSBhc3NpZ25hYmxlIHBhcmFtZXRlciAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idWxpbmsuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVybCIgdXNlPSJyZXF1aXJlZCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InhyZWZzdHlsZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idWxpbmsucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHVsaW5rLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdWxpbmsubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmb290bm90ZXJlZi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZm9vdG5vdGVyZWYiIHN1YnN0aXR1dGlvbkdyb3VwPSJ4cmVmLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmb290bm90ZXJlZi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmb290bm90ZXJlZi5lbGVtZW50IC0tPgogIDwhLS0gdG8gZm9vdG5vdGUgY29udGVudCBzdXBwbGllZCBlbHNld2hlcmUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvb3Rub3RlcmVmLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHJlcS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZm9vdG5vdGVyZWYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZvb3Rub3RlcmVmLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZm9vdG5vdGVyZWYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ4cmVmLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ4cmVmIiBzdWJzdGl0dXRpb25Hcm91cD0ieHJlZi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ieHJlZi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB4cmVmLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgRW5kdGVybTogSUQgb2YgZWxlbWVudCBjb250YWluaW5nIHRleHQgdGhhdCBpcyB0byBiZQogICAgZmV0Y2hlZCBmcm9tIGVsc2V3aGVyZSBpbiB0aGUgZG9jdW1lbnQgdG8gYXBwZWFyIGFzCiAgICB0aGUgY29udGVudCBvZiB0aGlzIGVsZW1lbnQKICAtLT4KICA8IS0tIHRvIGxpbmtlZC10byBvYmplY3QgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InhyZWYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVuZHRlcm0iIHR5cGU9InhzOklEUkVGIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InhyZWZzdHlsZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHJlcS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InhyZWYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHhyZWYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB4cmVmLm1vZHVsZSAtLT4KICA8IS0tIFViaXF1aXRvdXMgZWxlbWVudHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFuY2hvci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYW5jaG9yIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYW5jaG9yLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFuY2hvci5lbGVtZW50IC0tPgogIDwhLS0gcmVxdWlyZWQgLS0+CiAgPCEtLSByZXBsYWNlcyBMYW5nIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhbmNob3IuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpZHJlcS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhZ2VudW0uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZW1hcC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InhyZWZsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldmlzaW9uZmxhZy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVmZmVjdGl2aXR5LmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYW5jaG9yLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhbmNob3IuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhbmNob3IubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiZWdpbnBhZ2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJlZ2lucGFnZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJlZ2lucGFnZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiZWdpbnBhZ2UuZWxlbWVudCAtLT4KICA8IS0tIFBhZ2VOdW06IE51bWJlciBvZiBwYWdlIHRoYXQgYmVnaW5zIGF0IHRoaXMgcG9pbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJlZ2lucGFnZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhZ2VudW0uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiZWdpbnBhZ2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJlZ2lucGFnZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJlZ2lucGFnZS5tb2R1bGUgLS0+CiAgPCEtLQogICAgSW5kZXhUZXJtcyBhcHBlYXIgaW4gdGhlIHRleHQgZmxvdyBmb3IgZ2VuZXJhdGluZyBvciBsaW5raW5nIGFuCiAgICBpbmRleC4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5kZXh0ZXJtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmRleHRlcm0iIHN1YnN0aXR1dGlvbkdyb3VwPSJuZHh0ZXJtLmNsYXNzIi8+CiAgPCEtLSBlbmQgb2YgaW5kZXh0ZXJtLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU2NvcGU6IEluZGljYXRlcyB3aGljaCBnZW5lcmF0ZWQgaW5kaWNlcyB0aGUgSW5kZXhUZXJtCiAgICBzaG91bGQgYXBwZWFyIGluOiBHbG9iYWwgKHdob2xlIGRvY3VtZW50IHNldCksIExvY2FsICh0aGlzCiAgICBkb2N1bWVudCBvbmx5KSwgb3IgQWxsIChib3RoKQogIC0tPgogIDwhLS0KICAgIFNpZ25pZmljYW5jZTogV2hldGhlciB0aGlzIEluZGV4VGVybSBpcyB0aGUgbW9zdCBwZXJ0aW5lbnQKICAgIG9mIGl0cyBzZXJpZXMgKFByZWZlcnJlZCkgb3Igbm90IChOb3JtYWwsIHRoZSBkZWZhdWx0KQogIC0tPgogIDwhLS0KICAgIENsYXNzOiBJbmRpY2F0ZXMgdHlwZSBvZiBJbmRleFRlcm07IGRlZmF1bHQgaXMgU2luZ3VsYXIsCiAgICBvciBFbmRPZlJhbmdlIGlmIFN0YXJ0UmVmIGlzIHN1cHBsaWVkOyBTdGFydE9mUmFuZ2UgdmFsdWUKICAgIG11c3QgYmUgc3VwcGxpZWQgZXhwbGljaXRseSBvbiBzdGFydHMgb2YgcmFuZ2VzCiAgLS0+CiAgPCEtLQogICAgU3RhcnRSZWY6IElEIG9mIHRoZSBJbmRleFRlcm0gdGhhdCBzdGFydHMgdGhlIGluZGV4aW5nCiAgICByYW5nZSBlbmRlZCBieSB0aGlzIEluZGV4VGVybQogIC0tPgogIDwhLS0KICAgIFpvbmU6IElEcyBvZiB0aGUgZWxlbWVudHMgdG8gd2hpY2ggdGhlIEluZGV4VGVybSBhcHBsaWVzLAogICAgYW5kIGluZGljYXRlcyB0aGF0IHRoZSBJbmRleFRlcm0gYXBwbGllcyB0byB0aG9zZSBlbnRpcmUKICAgIGVsZW1lbnRzIHJhdGhlciB0aGFuIHRoZSBwb2ludCBhdCB3aGljaCB0aGUgSW5kZXhUZXJtCiAgICBvY2N1cnMKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5kZXh0ZXJtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFnZW51bS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2NvcGUiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhbGwiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZ2xvYmFsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxvY2FsIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNpZ25pZmljYW5jZSIgZGVmYXVsdD0ibm9ybWFsIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icHJlZmVycmVkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vcm1hbCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNpbmd1bGFyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InN0YXJ0b2ZyYW5nZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJlbmRvZnJhbmdlIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0YXJ0cmVmIiB0eXBlPSJ4czpJRFJFRiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ6b25lIiB0eXBlPSJ4czpJRFJFRlMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5kZXh0ZXJtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmRleHRlcm0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbmRleHRlcm0ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcmltc2VjdGVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwcmltYXJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJpbWFyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwcmltYXJ5LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU29ydEFzOiBBbHRlcm5hdGUgc29ydCBzdHJpbmcgZm9yIGluZGV4IHNvcnRpbmcsIGUuZy4sCiAgICAiZm91cnRlZW4iIGZvciBhbiBlbGVtZW50IGNvbnRhaW5pbmcgIjE0IgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcmltYXJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzb3J0YXMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByaW1zZWN0ZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByaW1hcnkuYXR0bGlzdCAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWNvbmRhcnkiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWNvbmRhcnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2Vjb25kYXJ5LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU29ydEFzOiBBbHRlcm5hdGUgc29ydCBzdHJpbmcgZm9yIGluZGV4IHNvcnRpbmcsIGUuZy4sCiAgICAiZm91cnRlZW4iIGZvciBhbiBlbGVtZW50IGNvbnRhaW5pbmcgIjE0IgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWNvbmRhcnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNvcnRhcyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJpbXNlY3Rlci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2Vjb25kYXJ5LmF0dGxpc3QgLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGVydGlhcnkiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ZXJ0aWFyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0ZXJ0aWFyeS5lbGVtZW50IC0tPgogIDwhLS0KICAgIFNvcnRBczogQWx0ZXJuYXRlIHNvcnQgc3RyaW5nIGZvciBpbmRleCBzb3J0aW5nLCBlLmcuLAogICAgImZvdXJ0ZWVuIiBmb3IgYW4gZWxlbWVudCBjb250YWluaW5nICIxNCIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGVydGlhcnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNvcnRhcyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJpbXNlY3Rlci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdGVydGlhcnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcmltc2VjdGVyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2Vlc2VlYWxzby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWVzZWVhbHNvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWUuYXR0bGlzdCAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWVhbHNvIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VlYWxzby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWVhbHNvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZWFsc28uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWVzZWVhbHNvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KPC94czpzY2hlbWE+CjwhLS0gZW5kIG9mIHNlZWFsc28uYXR0bGlzdCAtLT4KPCEtLSBlbmQgb2Ygc2Vlc2VlYWxzby5tb2R1bGUgLS0+CjwhLS0gZW5kIG9mIGluZGV4dGVybS5jb250ZW50Lm1vZHVsZSAtLT4KPCEtLSBFbmQgb2YgRG9jQm9vayBYTUwgaW5mb3JtYXRpb24gcG9vbCBtb2R1bGUgVjQuM0NSMyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+Cg==
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgWE1MIERURCBWNC4zQ1IzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkb2Nib29reC5kdGQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDIgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogZG9jYm9va3guZHRkLHYgMS4yMCAyMDA0LzAxLzIxIDE4OjU0OjIxIG53YWxzaCBFeHAgJAogIAogIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnkgYW5kIGRpc3RyaWJ1dGUgdGhlIERvY0Jvb2sgWE1MIERURAogIGFuZCBpdHMgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZQogIGlzIGhlcmVieSBncmFudGVkIGluIHBlcnBldHVpdHksIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodAogIG5vdGljZSBhbmQgdGhpcyBwYXJhZ3JhcGggYXBwZWFyIGluIGFsbCBjb3BpZXMuICBUaGUgY29weXJpZ2h0CiAgaG9sZGVycyBtYWtlIG5vIHJlcHJlc2VudGF0aW9uIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGUgRFREIGZvcgogIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3NlZCBvciBpbXBsaWVkCiAgd2FycmFudHkuCiAgCiAgSWYgeW91IG1vZGlmeSB0aGUgRG9jQm9vayBEVEQgaW4gYW55IHdheSwgZXhjZXB0IGZvciBkZWNsYXJpbmcgYW5kCiAgcmVmZXJlbmNpbmcgYWRkaXRpb25hbCBzZXRzIG9mIGdlbmVyYWwgZW50aXRpZXMgYW5kIGRlY2xhcmluZwogIGFkZGl0aW9uYWwgbm90YXRpb25zLCBsYWJlbCB5b3VyIERURCBhcyBhIHZhcmlhbnQgb2YgRG9jQm9vay4gIFNlZQogIHRoZSBtYWludGVuYW5jZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogIAogIFBsZWFzZSBkaXJlY3QgYWxsIHF1ZXN0aW9ucywgYnVnIHJlcG9ydHMsIG9yIHN1Z2dlc3Rpb25zIGZvcgogIGNoYW5nZXMgdG8gdGhlIGRvY2Jvb2tAbGlzdHMub2FzaXMtb3Blbi5vcmcgbWFpbGluZyBsaXN0LiBGb3IgbW9yZQogIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rLy4KLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIFRoaXMgaXMgdGhlIGRyaXZlciBmaWxlIGZvciBWNC4zQ1IzIG9mIHRoZSBEb2NCb29rIERURC4KICBQbGVhc2UgdXNlIHRoZSBmb2xsb3dpbmcgZm9ybWFsIHB1YmxpYyBpZGVudGlmaWVyIHRvIGlkZW50aWZ5IGl0OgogIAogICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjNDUjMvL0VOIgogIAogIEZvciBleGFtcGxlLCBpZiB5b3VyIGRvY3VtZW50J3MgdG9wLWxldmVsIGVsZW1lbnQgaXMgQm9vaywgYW5kCiAgeW91IGFyZSB1c2luZyBEb2NCb29rIGRpcmVjdGx5LCB1c2UgdGhlIEZQSSBpbiB0aGUgRE9DVFlQRQogIGRlY2xhcmF0aW9uOgogIAogIDwhRE9DVFlQRSBib29rIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4zQ1IzLy9FTiIKICAgICAgICAgICAgICAgICAiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjNiMi9kb2Nib29reC5kdGQiCiAgICAgICAgICAgICAgICAgWy4uLl0+CiAgCiAgT3IsIGlmIHlvdSBoYXZlIGEgaGlnaGVyLWxldmVsIGRyaXZlciBmaWxlIHRoYXQgY3VzdG9taXplcyBEb2NCb29rLAogIHVzZSB0aGUgRlBJIGluIHRoZSBwYXJhbWV0ZXIgZW50aXR5IGRlY2xhcmF0aW9uOgogIAogIDwhRU5USVRZICUgRG9jQm9va0RURCBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuM0NSMy8vRU4iCiAgICAgICAgICAgICAiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjNiMi9kb2Nib29reC5kdGQiPgogICVEb2NCb29rRFREOwogIAogIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlsZWQgaW5mb3JtYXRpb24gb24gdGhlIHBhcmFtZXRlcgogIGVudGl0eSBhbmQgbW9kdWxlIHNjaGVtZSB1c2VkIGluIERvY0Jvb2ssIGN1c3RvbWl6aW5nIERvY0Jvb2sgYW5kCiAgcGxhbm5pbmcgZm9yIGludGVyY2hhbmdlLCBhbmQgY2hhbmdlcyBtYWRlIHNpbmNlIHRoZSBsYXN0IHJlbGVhc2UKICBvZiBEb2NCb29rLgotLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIEVuYWJsZSBTR01MIGZlYXR1cmVzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSBOb3RhdGlvbiBkZWNsYXJhdGlvbnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8eHM6c2NoZW1hIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiPgogIDx4czppbmNsdWRlIHNjaGVtYUxvY2F0aW9uPSJkYm5vdG54LnhzZCIvPgogIDx4czppbmNsdWRlIHNjaGVtYUxvY2F0aW9uPSJkYnBvb2x4LnhzZCIvPgogIDx4czppbmNsdWRlIHNjaGVtYUxvY2F0aW9uPSJkYmhpZXJ4LnhzZCIvPgogIDx4czppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiIHNjaGVtYUxvY2F0aW9uPSJ4bWwueHNkIi8+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gSVNPIGNoYXJhY3RlciBlbnRpdHkgc2V0cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIGV1cm8gc2lnbiwgVSsyMEFDIE5FVyAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBEVEQgbW9kdWxlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gSW5mb3JtYXRpb24gcG9vbCAuLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFJlZGVjbGFyYXRpb24gcGxhY2Vob2xkZXIgLi4uLi4gLS0+CiAgPCEtLSBEb2N1bWVudCBoaWVyYXJjaHkgLi4uLi4uLi4uLi4uIC0tPgo8L3hzOnNjaGVtYT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIE90aGVyIGdlbmVyYWwgZW50aXRpZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRW5kIG9mIERvY0Jvb2sgWE1MIERURCBWNC4zQ1IzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo=
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgWE1MIEhUTUwgVGFibGUgTW9kdWxlIFY0LjNDUjMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBodG1sdGJseC5tb2QgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAyMDAzIEFyYm9yVGV4dCwgSW5jLiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLAogIGFuZCB0aGUgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogaHRtbHRibHgubW9kLHYgMS4xMSAyMDA0LzAxLzIxIDE4OjU0OjIxIG53YWxzaCBFeHAgJAogIAogIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnkgYW5kIGRpc3RyaWJ1dGUgdGhlIERvY0Jvb2sgWE1MIERURAogIGFuZCBpdHMgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZQogIGlzIGhlcmVieSBncmFudGVkIGluIHBlcnBldHVpdHksIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodAogIG5vdGljZSBhbmQgdGhpcyBwYXJhZ3JhcGggYXBwZWFyIGluIGFsbCBjb3BpZXMuICBUaGUgY29weXJpZ2h0CiAgaG9sZGVycyBtYWtlIG5vIHJlcHJlc2VudGF0aW9uIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGUgRFREIGZvcgogIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3NlZCBvciBpbXBsaWVkCiAgd2FycmFudHkuCiAgCiAgSWYgeW91IG1vZGlmeSB0aGUgRG9jQm9vayBYTUwgRFREIGluIGFueSB3YXksIGV4Y2VwdCBmb3IgZGVjbGFyaW5nIGFuZAogIHJlZmVyZW5jaW5nIGFkZGl0aW9uYWwgc2V0cyBvZiBnZW5lcmFsIGVudGl0aWVzIGFuZCBkZWNsYXJpbmcKICBhZGRpdGlvbmFsIG5vdGF0aW9ucywgbGFiZWwgeW91ciBEVEQgYXMgYSB2YXJpYW50IG9mIERvY0Jvb2suICBTZWUKICB0aGUgbWFpbnRlbmFuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAKICBQbGVhc2UgZGlyZWN0IGFsbCBxdWVzdGlvbnMsIGJ1ZyByZXBvcnRzLCBvciBzdWdnZXN0aW9ucyBmb3IKICBjaGFuZ2VzIHRvIHRoZSBkb2Nib29rQGxpc3RzLm9hc2lzLW9wZW4ub3JnIG1haWxpbmcgbGlzdC4gRm9yIG1vcmUKICBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay8uCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0KICBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgZGVmaW5pdGlvbnMgZm9yIGVsZW1lbnRzIHRoYXQgYXJlCiAgaXNvbW9ycGhpYyB0byB0aGUgSFRNTCBlbGVtZW50cy4gT25lIGNvdWxkIGFyZ3VlIHdlIHNob3VsZAogIGluc3RlYWQgaGF2ZSBiYXNlZCBvdXJzZWx2ZXMgb24gdGhlIFhIVE1MIFRhYmxlIE1vZHVsZSwgYnV0IHRoZQogIEhUTUwgb25lIGlzIG1vcmUgbGlrZSB3aGF0IGJyb3dzZXJzIGFyZSBsaWtlbHkgdG8gYWNjZXB0IHRvZGF5CiAgYW5kIHVzZXJzIGFyZSBsaWtlbHkgdG8gdXNlLgogIAogIFRoaXMgbW9kdWxlIGhhcyBiZWVuIGRldmVsb3BlZCBmb3IgdXNlIHdpdGggdGhlIERvY0Jvb2sgVjQuMwogICJ1bmlvbiB0YWJsZSBtb2RlbCIgaW4gd2hpY2ggZWxlbWVudHMgYW5kIGF0dGxpc3RzIGNvbW1vbiB0byBib3RoCiAgbW9kZWxzIGFyZSBkZWZpbmVkIChhcyB0aGUgdW5pb24pIGluIHRoZSBDQUxTIHRhYmxlIG1vZHVsZSBieQogIHNldHRpbmcgdmFyaW91cyBwYXJhbWV0ZXIgZW50aXRpZXMgYXBwcm9wcmlhdGVseSBpbiB0aGlzIGZpbGUuCiAgCiAgSW4gRFREIGRyaXZlciBmaWxlcyByZWZlcnJpbmcgdG8gdGhpcyBtb2R1bGUsIHBsZWFzZSB1c2UgYW4gZW50aXR5CiAgZGVjbGFyYXRpb24gdGhhdCB1c2VzIHRoZSBwdWJsaWMgaWRlbnRpZmllciBzaG93biBiZWxvdzoKICAKICA8IUVOVElUWSAlIGh0bWx0YmwgUFVCTElDCiAgIi0vL09BU0lTLy9FTEVNRU5UUyBEb2NCb29rIFhNTCBIVE1MIFRhYmxlcyBWNC4zQ1IzLy9FTiIKICAiaHRtbHRibHgubW9kIj4KICAlaHRtbHRibDsKICAKICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIHRoZSBwYXJhbWV0ZXIKICBlbnRpdHkgYW5kIG1vZHVsZSBzY2hlbWUgdXNlZCBpbiBEb2NCb29rLCBjdXN0b21pemluZyBEb2NCb29rIGFuZAogIHBsYW5uaW5nIGZvciBpbnRlcmNoYW5nZSwgYW5kIGNoYW5nZXMgbWFkZSBzaW5jZSB0aGUgbGFzdCByZWxlYXNlCiAgb2YgRG9jQm9vay4KLS0+CjwhLS0gPT09PT09PT09PT09PT09PT09PT09PT0gWEhUTUwgVGFibGVzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4KICA8eHM6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiBzY2hlbWFMb2NhdGlvbj0ieG1sLnhzZCIvPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJodG1sLmNvcmVhdHRycyI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlkIiB0eXBlPSJ4czpJRCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdHlsZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aXRsZSIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBEb2VzIG5vdCBjb250YWluIGxhbmcgb3IgZGlyIGJlY2F1c2UgdGhleSBhcmUgaW4gJWNvbW1vbi5hdHRyaWJzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpMThuIj4KICAgIDx4czphdHRyaWJ1dGUgcmVmPSJ4bWw6bGFuZyIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImV2ZW50cyI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uY2xpY2siLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25kYmxjbGljayIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbm1vdXNlZG93biIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbm1vdXNldXAiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25tb3VzZW92ZXIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25tb3VzZW1vdmUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25tb3VzZW91dCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmtleXByZXNzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ua2V5ZG93biIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmtleXVwIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXR0cnMiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaHRtbC5jb3JlYXR0cnMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImkxOG4iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImV2ZW50cyIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNlbGxoYWxpZ24iPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJpZ2h0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imp1c3RpZnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFyIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXJvZmYiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjZWxsdmFsaWduIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1pZGRsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYmFzZWxpbmUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbGdyb3VwIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbGdyb3VwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czplbGVtZW50IG5hbWU9ImNvbCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0ciI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRkIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0aCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJ0YWJlbnRyeS5taXgiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRoLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czplbGVtZW50IG5hbWU9InRkIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICAgIDx4czpncm91cCByZWY9InRhYmVudHJ5Lm1peCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbGdyb3VwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXR0cnMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3BhbiIgZGVmYXVsdD0iMSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aWR0aCIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2VsbGhhbGlnbiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2VsbHZhbGlnbiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF0dHJzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNwYW4iIGRlZmF1bHQ9IjEiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNlbGxoYWxpZ24iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNlbGx2YWxpZ24iLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0ci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF0dHJzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjZWxsaGFsaWduIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjZWxsdmFsaWduIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJnY29sb3IiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0aC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF0dHJzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFiYnIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXhpcyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJoZWFkZXJzIiB0eXBlPSJ4czpJRFJFRlMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2NvcGUiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyb3ciLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29sIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJvd2dyb3VwIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvbGdyb3VwIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvd3NwYW4iIGRlZmF1bHQ9IjEiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sc3BhbiIgZGVmYXVsdD0iMSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2VsbGhhbGlnbiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2VsbHZhbGlnbiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJub3dyYXAiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3dyYXAiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmdjb2xvciIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aWR0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJoZWlnaHQiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0ZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF0dHJzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFiYnIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXhpcyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJoZWFkZXJzIiB0eXBlPSJ4czpJRFJFRlMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2NvcGUiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyb3ciLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29sIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJvd2dyb3VwIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvbGdyb3VwIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvd3NwYW4iIGRlZmF1bHQ9IjEiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sc3BhbiIgZGVmYXVsdD0iMSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2VsbGhhbGlnbiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2VsbHZhbGlnbiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJub3dyYXAiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3dyYXAiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmdjb2xvciIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aWR0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJoZWlnaHQiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgogIDwhLS0KICAgIFNldCB1cCB0byByZWFkIGluIHRoZSBDQUxTIG1vZGVsIGNvbmZpZ3VyZWQgdG8KICAgIG1lcmdlIHdpdGggdGhlIFhIVE1MIHRhYmxlIG1vZGVsCiAgLS0+CiAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRhYmxlcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBBZGQgbGFiZWwgYW5kIHJvbGUgYXR0cmlidXRlcyB0byB0YWJsZSBhbmQgaW5mb3JtYWx0YWJsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYm9keWF0dCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZsb2F0c3R5bGUiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgQWRkIGNvbW1vbiBhdHRyaWJ1dGVzIHRvIFRhYmxlLCBUR3JvdXAsIFRCb2R5LCBUSGVhZCwgVEZvb3QsIFJvdywgCiAgICBFbnRyeVRibCwgYW5kIEVudHJ5IChhbmQgSW5mb3JtYWxUYWJsZSBlbGVtZW50KS4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdXIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdHlsZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aXRsZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaTE4biIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXZlbnRzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YWJsZXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb21tb24udGFibGUuYXR0cmlicyI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJib2R5YXR0Ii8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN1ciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBDb250ZW50IG1vZGVsIGZvciBUYWJsZSAodGhhdCBhbHNvIGFsbG93cyBIVE1MIHRhYmxlcykgLS0+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRibC50YWJsZS5tZGwiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGV4dG9iamVjdCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJncmFwaGljIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtZWRpYW9iamVjdCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGdyb3VwIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNhcHRpb24iLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb2wiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sZ3JvdXAiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGhlYWQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGZvb3QiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGJvZHkiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRyIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmNvbXBsZXhUeXBlPgogIDx4czpncm91cCBuYW1lPSJpbmZvcm1hbC50YmwudGFibGUubWRsIj4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRleHRvYmplY3QiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ3JhcGhpYyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVkaWFvYmplY3QiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRncm91cCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbGdyb3VwIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRoZWFkIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRmb290Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRib2R5Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0ciIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8IS0tIEF0dHJpYnV0ZXMgZm9yIFRhYmxlIChpbmNsdWRpbmcgSFRNTCBvbmVzKSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGJsLnRhYmxlLmF0dCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRhYnN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRvY2VudHJ5IiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2hvcnRlbnRyeSIgdHlwZT0ieWVzb3Juby5hdHR2YWxzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9yaWVudCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBvcnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGFuZCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwZ3dpZGUiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdW1tYXJ5Ii8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndpZHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvcmRlciIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJydWxlcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vbmUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZ3JvdXBzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJvd3MiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29scyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhbGwiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2VsbHNwYWNpbmciLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2VsbHBhZGRpbmciLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsZWZ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNlbnRlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaWdodCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiZ2NvbG9yIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJ0YmwuZnJhbWUuYXR0dmFsIj4KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idm9pZCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImFib3ZlIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYmVsb3ciLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJoc2lkZXMiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaHMiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaHMiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ2c2lkZXMiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3giLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3JkZXIiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3Bib3QiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhbGwiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzaWRlcyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vbmUiLz4KICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgPC94czpzaW1wbGVUeXBlPgogIDwhLS0gQWxsb3cgZWl0aGVyIG9iamVjdHMgb3IgaW5saW5lczsgYmV3YXJlIG9mIFJFcyBiZXR3ZWVuIGVsZW1lbnRzLiAtLT4KICA8eHM6Z3JvdXAgbmFtZT0idGJsLmVudHJ5Lm1kbCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6Z3JvdXAgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czpncm91cCByZWY9InRhYmVudHJ5Lm1peCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8IS0tCiAgICB0aGVhZCwgdGZvb3QsIGFuZCB0Ym9keSBhcmUgZGVmaW5lZCBpbiBib3RoIHRhYmxlIG1vZGVscywKICAgIHNvIHdlIHNldCB1cCBwYXJhbWV0ZXIgZW50aXRpZXMgdG8gZGVmaW5lIHVuaW9uIG1vZGVscyBmb3IgdGhlbQogIC0tPgogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0YmwuaGRmdC5tZGwiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idHIiLz4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sc3BlYyIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJvdyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgPC94czpjaG9pY2U+CiAgPC94czpjb21wbGV4VHlwZT4KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGJsLnRib2R5Lm1kbCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0ciIvPgogICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyb3ciLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Y29tcGxleFR5cGU+CjwveHM6c2NoZW1hPgo=
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSI+CiAgPHhzOmltcG9ydCBzY2hlbWFMb2NhdGlvbj0iZG9jYm9vay54c2QiLz4KICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhc2UiLz4KICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhbmciIHR5cGU9InhzOk5NVE9LRU4iLz4KPC94czpzY2hlbWE+Cg==
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgQ0FMUyBUYWJsZSBNb2RlbCBWNC4yIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBjYWxzdGJseC5tb2QgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDIgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogIFRoaXMgRFREIGlzIGJhc2VkIG9uIHRoZSBDQUxTIFRhYmxlIE1vZGVsCiAgUFVCTElDICItLy9VU0EtRE9ELy9EVEQgVGFibGUgTW9kZWwgOTUxMDEwLy9FTiIKICAKICAkSWQ6IGNhbHN0Ymx4LmR0ZCx2IDEuMTIgMjAwMi8wNy8xNyAxNToyNjoxNiBud2Fsc2ggRXhwICQKICAKICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5IGFuZCBkaXN0cmlidXRlIHRoZSBEb2NCb29rIERURAogIGFuZCBpdHMgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZQogIGlzIGhlcmVieSBncmFudGVkIGluIHBlcnBldHVpdHksIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodAogIG5vdGljZSBhbmQgdGhpcyBwYXJhZ3JhcGggYXBwZWFyIGluIGFsbCBjb3BpZXMuICBUaGUgY29weXJpZ2h0CiAgaG9sZGVycyBtYWtlIG5vIHJlcHJlc2VudGF0aW9uIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGUgRFREIGZvcgogIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3NlZCBvciBpbXBsaWVkCiAgd2FycmFudHkuCiAgCiAgSWYgeW91IG1vZGlmeSB0aGUgRG9jQm9vayBEVEQgaW4gYW55IHdheSwgZXhjZXB0IGZvciBkZWNsYXJpbmcgYW5kCiAgcmVmZXJlbmNpbmcgYWRkaXRpb25hbCBzZXRzIG9mIGdlbmVyYWwgZW50aXRpZXMgYW5kIGRlY2xhcmluZwogIGFkZGl0aW9uYWwgbm90YXRpb25zLCBsYWJlbCB5b3VyIERURCBhcyBhIHZhcmlhbnQgb2YgRG9jQm9vay4gIFNlZQogIHRoZSBtYWludGVuYW5jZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogIAogIFBsZWFzZSBkaXJlY3QgYWxsIHF1ZXN0aW9ucywgYnVnIHJlcG9ydHMsIG9yIHN1Z2dlc3Rpb25zIGZvcgogIGNoYW5nZXMgdG8gdGhlIGRvY2Jvb2tAbGlzdHMub2FzaXMtb3Blbi5vcmcgbWFpbGluZyBsaXN0LiBGb3IgbW9yZQogIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rLy4KLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIFRoaXMgbW9kdWxlIGNvbnRhaW5zIHRoZSBkZWZpbml0aW9ucyBmb3IgdGhlIENBTFMgVGFibGUgTW9kZWwKICBjb252ZXJ0ZWQgdG8gWE1MLgotLT4KPCEtLQogIFRoZXNlIGRlZmluaXRpb25zIGFyZSBub3QgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgdGFibGUgbW9kZWwsIGJ1dCBhcmUKICB1c2VkIGluIHRoZSBkZWZhdWx0IENBTFMgdGFibGUgbW9kZWwgYW5kIGFyZSB1c3VhbGx5IGRlZmluZWQgZWxzZXdoZXJlCiAgKGFuZCBwcmlvciB0byB0aGUgaW5jbHVzaW9uIG9mIHRoaXMgdGFibGUgbW9kdWxlKSBpbiBhIENBTFMgRFRELgotLT4KPCEtLQogIG5vIGlmIHplcm8ocyksCiAgeWVzIGlmIGFueSBvdGhlciBkaWdpdHMgdmFsdWUKLS0+Cjx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+CiAgPHhzOnNpbXBsZVR5cGUgbmFtZT0ieWVzb3JubyI+CiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIi8+CiAgPC94czpzaW1wbGVUeXBlPgogIDx4czpncm91cCBuYW1lPSJ0aXRsZXMiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8IS0tIGRlZmF1bHQgZm9yIHVzZSBpbiBlbnRyeSBjb250ZW50IC0tPgogIDwhLS0KICAgIFRoZSBwYXJhbWV0ZXIgZW50aXRpZXMgYXMgZGVmaW5lZCBiZWxvdyBwcm92aWRlIHRoZSBDQUxTIHRhYmxlIG1vZGVsCiAgICBhcyBwdWJsaXNoZWQgKGFzIHBhcnQgb2YgdGhlIEV4YW1wbGUgRFREKSBpbiBNSUwtSERCSy0yODAwMS4KICAgIAogICAgVGhlc2UgZm9sbG93aW5nIGRlY2xhcmF0aW9ucyBwcm92aWRlIHRoZSBDQUxTLWNvbXBsaWFudCBkZWZhdWx0IGRlZmluaXRpb25zCiAgICBmb3IgdGhlc2UgZW50aXRpZXMuICBIb3dldmVyLCB0aGVzZSBlbnRpdGllcyBjYW4gYW5kIHNob3VsZCBiZSByZWRlZmluZWQKICAgIChieSBnaXZpbmcgdGhlIGFwcHJvcHJpYXRlIHBhcmFtZXRlciBlbnRpdHkgZGVjbGFyYXRpb24ocykgcHJpb3IgdG8gdGhlCiAgICByZWZlcmVuY2UgdG8gdGhpcyBUYWJsZSBNb2RlbCBkZWNsYXJhdGlvbiBzZXQgZW50aXR5KSB0byBmaXQgdGhlIG5lZWRzCiAgICBvZiB0aGUgY3VycmVudCBhcHBsaWNhdGlvbi4KICAtLT4KICA8eHM6Z3JvdXAgbmFtZT0idGJsLnRhYmxlLXRpdGxlcy5tZGwiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Z3JvdXAgcmVmPSJ0aXRsZXMiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0idGJsLnRhYmxlLW1haW4ubWRsIj4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRncm91cCIvPgogICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJncmFwaGljIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0YmwudGFibGUuYXR0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGFic3R5bGUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idG9jZW50cnkiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2hvcnRlbnRyeSIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcmllbnQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwb3J0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxhbmQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGd3aWRlIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGJsLnRncm91cC5tZGwiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbHNwZWMiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzcGFuc3BlYyIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGhlYWQiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRmb290Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0idGJvZHkiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpjb21wbGV4VHlwZT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGJsLnRncm91cC5hdHQiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0Z3JvdXBzdHlsZSIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRibC5oZGZ0Lm1kbCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sc3BlYyIvPgogICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyb3ciLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpjb21wbGV4VHlwZT4KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGJsLnJvdy5tZGwiPgogICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZW50cnkiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlbnRyeXRibCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpjb21wbGV4VHlwZT4KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGJsLmVudHJ5dGJsLm1kbCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sc3BlYyIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNwYW5zcGVjIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aGVhZCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InRib2R5Ii8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Y29tcGxleFR5cGU+CiAgPCEtLSA9PT09PSAgRWxlbWVudCBhbmQgYXR0cmlidXRlIGRlY2xhcmF0aW9ucyBmb2xsb3cuID09PT09IC0tPgogIDx4czplbGVtZW50IG5hbWU9InRhYmxlIiBzdWJzdGl0dXRpb25Hcm91cD0iZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNvbXBsZXhDb250ZW50PgogICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idGJsLnRhYmxlLm1kbCI+CiAgICAgICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YWJsZS5hdHRsaXN0Ii8+CiAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgIDwveHM6Y29tcGxleENvbnRlbnQ+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGFibGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZyYW1lIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3Bib3QiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYWxsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNpZGVzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vbmUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sc2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvd3NlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGJsLnRhYmxlLmF0dCIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYm9keWF0dCIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRncm91cCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjb21wbGV4Q29udGVudD4KICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRibC50Z3JvdXAubWRsIj4KICAgICAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRncm91cC5hdHRsaXN0Ii8+CiAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgIDwveHM6Y29tcGxleENvbnRlbnQ+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGdyb3VwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzIiB1c2U9InJlcXVpcmVkIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YmwudGdyb3VwLmF0dCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm93c2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGVmdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaWdodCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZW50ZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ianVzdGlmeSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjaGFyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hhcm9mZiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbHNwZWMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb2xzcGVjLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2xzcGVjLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xudW0iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sbmFtZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2x3aWR0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm93c2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGVmdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaWdodCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZW50ZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ianVzdGlmeSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjaGFyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hhcm9mZiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3BhbnNwZWMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzcGFuc3BlYy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3BhbnNwZWMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWVzdCIgdXNlPSJyZXF1aXJlZCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lZW5kIiB1c2U9InJlcXVpcmVkIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNwYW5uYW1lIiB1c2U9InJlcXVpcmVkIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHNlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3dzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsZWZ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJpZ2h0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNlbnRlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJqdXN0aWZ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNoYXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hhciIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFyb2ZmIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0aGVhZCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjb21wbGV4Q29udGVudD4KICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRibC5oZGZ0Lm1kbCI+CiAgICAgICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0aGVhZC5hdHRsaXN0Ii8+CiAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgIDwveHM6Y29tcGxleENvbnRlbnQ+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGhlYWQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRvcCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJtaWRkbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYm90dG9tIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN1ciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGZvb3QiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y29tcGxleENvbnRlbnQ+CiAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0YmwuaGRmdC5tZGwiPgogICAgICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGZvb3QuYXR0bGlzdCIvPgogICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICA8L3hzOmNvbXBsZXhDb250ZW50PgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRmb290LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWlkZGxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRib2R5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJvdyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0Ym9keS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGJvZHkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRvcCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJtaWRkbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYm90dG9tIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN1ciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icm93Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNvbXBsZXhDb250ZW50PgogICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idGJsLnJvdy5tZGwiPgogICAgICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm93LmF0dGxpc3QiLz4KICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgPC94czpjb21wbGV4Q29udGVudD4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyb3cuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvd3NlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWlkZGxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImVudHJ5dGJsIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNvbXBsZXhDb250ZW50PgogICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idGJsLmVudHJ5dGJsLm1kbCI+CiAgICAgICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlbnRyeXRibC5hdHRsaXN0Ii8+CiAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgIDwveHM6Y29tcGxleENvbnRlbnQ+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZW50cnl0YmwuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHMiIHVzZT0icmVxdWlyZWQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRibC50Z3JvdXAuYXR0Ii8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbG5hbWUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3Bhbm5hbWUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZXN0Ii8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWVlbmQiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sc2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvd3NlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imp1c3RpZnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFyIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXJvZmYiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3VyIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJlbnRyeSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0YmwuZW50cnkubWRsIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlbnRyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sbmFtZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lc3QiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZWVuZCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGFubmFtZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtb3Jlcm93cyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm93c2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGVmdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaWdodCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZW50ZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ianVzdGlmeSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjaGFyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hhcm9mZiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3RhdGUiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1pZGRsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3VyIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KPC94czpzY2hlbWE+CjwhLS0gRW5kIG9mIERvY0Jvb2sgQ0FMUyBUYWJsZSBNb2RlbCBWNC4yIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo=
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgZG9jdW1lbnQgaGllcmFyY2h5IG1vZHVsZSBWNC4yIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkYmhpZXJ4Lm1vZCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDIgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogZGJoaWVyeC5tb2QsdiAxLjE5IDIwMDIvMDcvMTcgMTU6MjY6MTYgbndhbHNoIEV4cCAkCiAgCiAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSBhbmQgZGlzdHJpYnV0ZSB0aGUgRG9jQm9vayBEVEQKICBhbmQgaXRzIGFjY29tcGFueWluZyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUKICBpcyBoZXJlYnkgZ3JhbnRlZCBpbiBwZXJwZXR1aXR5LCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQKICBub3RpY2UgYW5kIHRoaXMgcGFyYWdyYXBoIGFwcGVhciBpbiBhbGwgY29waWVzLiAgVGhlIGNvcHlyaWdodAogIGhvbGRlcnMgbWFrZSBubyByZXByZXNlbnRhdGlvbiBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhlIERURCBmb3IKICBhbnkgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzZWQgb3IgaW1wbGllZAogIHdhcnJhbnR5LgogIAogIElmIHlvdSBtb2RpZnkgdGhlIERvY0Jvb2sgRFREIGluIGFueSB3YXksIGV4Y2VwdCBmb3IgZGVjbGFyaW5nIGFuZAogIHJlZmVyZW5jaW5nIGFkZGl0aW9uYWwgc2V0cyBvZiBnZW5lcmFsIGVudGl0aWVzIGFuZCBkZWNsYXJpbmcKICBhZGRpdGlvbmFsIG5vdGF0aW9ucywgbGFiZWwgeW91ciBEVEQgYXMgYSB2YXJpYW50IG9mIERvY0Jvb2suICBTZWUKICB0aGUgbWFpbnRlbmFuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAKICBQbGVhc2UgZGlyZWN0IGFsbCBxdWVzdGlvbnMsIGJ1ZyByZXBvcnRzLCBvciBzdWdnZXN0aW9ucyBmb3IKICBjaGFuZ2VzIHRvIHRoZSBkb2Nib29rQGxpc3RzLm9hc2lzLW9wZW4ub3JnIG1haWxpbmcgbGlzdC4gRm9yIG1vcmUKICBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay8uCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0KICBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBvdmVyYWxsIGRvY3VtZW50CiAgaGllcmFyY2hpZXMgb2YgRG9jQm9vayBkb2N1bWVudHMuICBJdCBjb3ZlcnMgY29tcHV0ZXIgZG9jdW1lbnRhdGlvbgogIG1hbnVhbHMgYW5kIG1hbnVhbCBmcmFnbWVudHMsIGFzIHdlbGwgYXMgcmVmZXJlbmNlIGVudHJpZXMgKHN1Y2ggYXMKICBtYW4gcGFnZXMpIGFuZCB0ZWNobmljYWwgam91cm5hbHMgb3IgYW50aG9sb2dpZXMgY29udGFpbmluZwogIGFydGljbGVzLgogIAogIFRoaXMgbW9kdWxlIGRlcGVuZHMgb24gdGhlIERvY0Jvb2sgaW5mb3JtYXRpb24gcG9vbCBtb2R1bGUuICBBbGwKICBlbGVtZW50cyBhbmQgZW50aXRpZXMgcmVmZXJlbmNlZCBidXQgbm90IGRlZmluZWQgaGVyZSBhcmUgYXNzdW1lZAogIHRvIGJlIGRlZmluZWQgaW4gdGhlIGluZm9ybWF0aW9uIHBvb2wgbW9kdWxlLgogIAogIEluIERURCBkcml2ZXIgZmlsZXMgcmVmZXJyaW5nIHRvIHRoaXMgbW9kdWxlLCBwbGVhc2UgdXNlIGFuIGVudGl0eQogIGRlY2xhcmF0aW9uIHRoYXQgdXNlcyB0aGUgcHVibGljIGlkZW50aWZpZXIgc2hvd24gYmVsb3c6CiAgCiAgPCFFTlRJVFkgJSBkYmhpZXIgUFVCTElDCiAgIi0vL09BU0lTLy9FTEVNRU5UUyBEb2NCb29rIERvY3VtZW50IEhpZXJhcmNoeSBWNC4yLy9FTiIKICAiZGJoaWVyeC5tb2QiPgogICVkYmhpZXI7CiAgCiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiB0aGUgcGFyYW1ldGVyCiAgZW50aXR5IGFuZCBtb2R1bGUgc2NoZW1lIHVzZWQgaW4gRG9jQm9vaywgY3VzdG9taXppbmcgRG9jQm9vayBhbmQKICBwbGFubmluZyBmb3IgaW50ZXJjaGFuZ2UsIGFuZCBjaGFuZ2VzIG1hZGUgc2luY2UgdGhlIGxhc3QgcmVsZWFzZQogIG9mIERvY0Jvb2suCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRW50aXRpZXMgZm9yIG1vZHVsZSBpbmNsdXNpb25zIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIEVudGl0aWVzIGZvciBlbGVtZW50IGNsYXNzZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+Cjx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXBwZW5kaXguY2xhc3MiIGFic3RyYWN0PSJ0cnVlIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYXBwZW5kaXhpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYm9va2NvbXBvbmVudC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRvY2NoYXAiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJib29rY29tcG9uZW50LmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXBwZW5kaXguYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXJ0aWNsZS5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJkaXYudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJhcnRpY2xlaW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0b2NjaGFwIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJsb3QiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJib29rY29tcG9uZW50LmNvbnRlbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmdyb3VwIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFwcGVuZGl4LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFja25vIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFydGljbGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYm9vay5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJkaXYudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJib29raW5mbyIvPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImRlZGljYXRpb24iLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idG9jIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxvdCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnbG9zc2FyeSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9ncmFwaHkiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icHJlZmFjZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjaGFwdGVyLmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlZmVyZW5jZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJ0Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFydGljbGUuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYXBwZW5kaXguY2xhc3MiLz4KICAgICAgICAgIDx4czpncm91cCByZWY9ImluZGV4LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbG9waG9uIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJvb2suYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2hhcHRlci5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJlZ2lucGFnZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJjaGFwdGVyaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0b2NjaGFwIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYm9va2NvbXBvbmVudC5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNoYXB0ZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmdyb3VwIG5hbWU9ImluZGV4LmNsYXNzIj4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5kZXgiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzZXRpbmRleCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZlbnRyeS5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJlZ2lucGFnZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJyZWZlbnRyeWluZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmbWV0YSIvPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlbWFyayIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlZm5hbWVkaXYiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmc3lub3BzaXNkaXYiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmc2VjdDEiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3Rpb24iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdGlvbi5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNlY3Rpb25pbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRpdmNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0aW9uLmNsYXNzIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0aW9uLmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Rpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmdyb3VwIG5hbWU9Im5hdi5jbGFzcyI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9InRvYyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxvdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZGV4Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZ2xvc3NhcnkiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9ncmFwaHkiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBSZWRlY2xhcmF0aW9uIHBsYWNlaG9sZGVyIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0KICAgIEZvciByZWRlY2xhcmluZyBlbnRpdGllcyB0aGF0IGFyZSBkZWNsYXJlZCBhZnRlciB0aGlzIHBvaW50IHdoaWxlCiAgICByZXRhaW5pbmcgdGhlaXIgcmVmZXJlbmNlcyB0byB0aGUgZW50aXRpZXMgdGhhdCBhcmUgZGVjbGFyZWQgYmVmb3JlCiAgICB0aGlzIHBvaW50CiAgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gRW50aXRpZXMgZm9yIGVsZW1lbnQgbWl4dHVyZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFRoZSBEb2NCb29rIFRDIG1heSBwcm9kdWNlIGFuIG9mZmljaWFsIGZvcm1zIG1vZHVsZSBmb3IgRG9jQm9vay4gLS0+CiAgPCEtLSBUaGlzIFBFIHByb3ZpZGVzIHRoZSBob29rIGJ5IHdoaWNoIGl0IGNhbiBiZSBpbnNlcnRlZCBpbnRvIHRoZSBEVEQuIC0tPgogIDx4czpncm91cCBuYW1lPSJkaXZjb21wb25lbnQubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb21wb3VuZC5jbGFzcyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJnZW5vYmouY2xhc3MiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZGVzY29iai5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InJlZmNvbXBvbmVudC5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWRtb24uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW5vcC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbXBvdW5kLmNsYXNzIi8+CiAgICAgIDx4czpncm91cCByZWY9Imdlbm9iai5jbGFzcyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJkZXNjb2JqLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iaW5kZXhkaXZjb21wb25lbnQubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaXRlbWl6ZWRsaXN0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ib3JkZXJlZGxpc3QiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ2YXJpYWJsZWxpc3QiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzaW1wbGVsaXN0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhbmNob3IiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZW1hcmsiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InJlZm5hbWUuY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGVjaC5jaGFyLmNsYXNzIi8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InBhcnRjb250ZW50Lm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFwcGVuZGl4LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY2hhcHRlci5jbGFzcyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcnRpY2xlLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJlZmFjZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icmVmZXJlbmNlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJyZWZpbmxpbmUuY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ4cmVmLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdlbi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRlY2guY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJhc2UuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZG9jaW5mby5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJyZWZjbGFzcy5jaGFyLm1peCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJhcHBsaWNhdGlvbiIvPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDwhLS0gUmVkZWNsYXJhdGlvbiBwbGFjZWhvbGRlciAyIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tCiAgICBGb3IgcmVkZWNsYXJpbmcgZW50aXRpZXMgdGhhdCBhcmUgZGVjbGFyZWQgYWZ0ZXIgdGhpcyBwb2ludCB3aGlsZQogICAgcmV0YWluaW5nIHRoZWlyIHJlZmVyZW5jZXMgdG8gdGhlIGVudGl0aWVzIHRoYXQgYXJlIGRlY2xhcmVkIGJlZm9yZQogICAgdGhpcyBwb2ludAogIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEVudGl0aWVzIGZvciBjb250ZW50IG1vZGVscyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmdyb3VwIG5hbWU9ImRpdi50aXRsZS5jb250ZW50Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic3VidGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlYWJicmV2Ii8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0idGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InN1YnRpdGxlIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZWFiYnJldiIvPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJzZWN0LnRpdGxlLmNvbnRlbnQiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9InRpdGxlIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzdWJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGVhYmJyZXYiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0icmVmc2VjdC50aXRsZS5jb250ZW50Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic3VidGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlYWJicmV2Ii8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImJvb2tjb21wb25lbnQuY29udGVudCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRpdmNvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0MSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3Rpb24uY2xhc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0MSIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3Rpb24uY2xhc3MiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFNldCBhbmQgU2V0SW5mbyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNldC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2V0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZGl2LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic2V0aW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0b2MiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJib29rLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNldGluZGV4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNldC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZXQuZWxlbWVudCAtLT4KICA8IS0tIEZQSTogU0dNTCBmb3JtYWwgcHVibGljIGlkZW50aWZpZXIgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZnBpIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNldC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNldGluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNldGluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZXRpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNldGluZm8uZWxlbWVudCAtLT4KICA8IS0tCiAgICBDb250ZW50czogSURzIG9mIHRoZSBUb0MsIEJvb2tzLCBhbmQgU2V0SW5kZXggdGhhdCBjb21wcmlzZQogICAgdGhlIHNldCwgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIGFwcGVhcmFuY2UKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2V0aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29udGVudHMiIHR5cGU9InhzOklEUkVGUyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2V0aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2V0aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNldGluZm8ubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHNldC5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBCb29rIGFuZCBCb29rSW5mbyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJib29rLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJib29rIiBzdWJzdGl0dXRpb25Hcm91cD0iYm9vay5jbGFzcyIvPgogIDwhLS0gZW5kIG9mIGJvb2suZWxlbWVudCAtLT4KICA8IS0tIEZQSTogU0dNTCBmb3JtYWwgcHVibGljIGlkZW50aWZpZXIgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJvb2suYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZwaSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJib29rLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBib29rLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYm9vay5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJvb2tpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJib29raW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJvb2tpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJvb2tpbmZvLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgQ29udGVudHM6IElEcyBvZiB0aGUgVG9DLCBMb1RzLCBQcmVmYWNlcywgUGFydHMsIENoYXB0ZXJzLAogICAgQXBwZW5kaXhlcywgUmVmZXJlbmNlcywgR0xvc3NhcnksIEJpYmxpb2dyYXBoeSwgYW5kIGluZGV4ZXMKICAgIGNvbXByaXNpbmcgdGhlIEJvb2ssIGluIHRoZSBvcmRlciBvZiB0aGVpciBhcHBlYXJhbmNlCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJvb2tpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250ZW50cyIgdHlwZT0ieHM6SURSRUZTIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJib29raW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYm9va2luZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBib29raW5mby5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgYm9vay5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBEZWRpY2F0aW9uLCBUb0MsIGFuZCBMb1QgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJkZWRpY2F0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJkZWRpY2F0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImxlZ2Fsbm90aWNlLm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJkZWRpY2F0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGRlZGljYXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGVkaWNhdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRlZGljYXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGRlZGljYXRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBkZWRpY2F0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29sb3Bob24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbG9waG9uIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRleHRvYmplY3QubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbG9waG9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbG9waG9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbG9waG9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29sb3Bob24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbG9waG9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29sb3Bob24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2Mucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvYyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2Zyb250Ii8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idG9jcGFydCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0b2NjaGFwIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NiYWNrIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvYy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2MuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFnZW51bS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvYy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdG9jLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9jLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jZnJvbnQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2Zyb250Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jZnJvbnQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdG9jZnJvbnQuZWxlbWVudCAtLT4KICA8IS0tIHRvIGVsZW1lbnQgdGhhdCB0aGlzIGVudHJ5IHJlcHJlc2VudHMgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2Zyb250LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFnZW51bS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2Zyb250LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2Nmcm9udC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRvY2Zyb250Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2VudHJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdG9jZW50cnkuZWxlbWVudCAtLT4KICA8IS0tIHRvIGVsZW1lbnQgdGhhdCB0aGlzIGVudHJ5IHJlcHJlc2VudHMgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2VudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhZ2VudW0uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdG9jZW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NlbnRyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY3BhcnQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY3BhcnQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jZW50cnkiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2NoYXAiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jcGFydC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NwYXJ0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY3BhcnQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NwYXJ0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NwYXJ0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9jcGFydC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2NoYXAucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2NoYXAiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jZW50cnkiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2xldmVsMSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NjaGFwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRvY2NoYXAuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jY2hhcC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jY2hhcC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdG9jY2hhcC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRvY2NoYXAubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2xldmVsMSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NlbnRyeSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jbGV2ZWwyIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsMS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDEuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWwxLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWwxLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2xldmVsMiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NlbnRyeSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jbGV2ZWwzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsMi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWwyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWwyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2xldmVsMyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NlbnRyeSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jbGV2ZWw0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsMy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWwzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWwzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2xldmVsNCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NlbnRyeSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jbGV2ZWw1Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsNC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWw0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWw0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2xldmVsNSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NlbnRyeSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NsZXZlbDUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdG9jbGV2ZWw1LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2xldmVsNS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsNS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdG9jbGV2ZWw1LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9jbGV2ZWw1Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jYmFjay5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jYmFjayI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2JhY2suYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdG9jYmFjay5lbGVtZW50IC0tPgogIDwhLS0gdG8gZWxlbWVudCB0aGF0IHRoaXMgZW50cnkgcmVwcmVzZW50cyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jYmFjay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhZ2VudW0uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NiYWNrLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NiYWNrLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9jYmFjay5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgdG9jLmNvbnRlbnQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsb3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImxvdCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImxvdGVudHJ5Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxvdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBsb3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibG90LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsb3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxvdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGxvdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxvdGVudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJsb3RlbnRyeSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxvdGVudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxvdGVudHJ5LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU3JjQ3JlZGl0OiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgc291cmNlIG9mIHRoZSBlbnRyeSwKICAgIGFzIGZvciBhIGxpc3Qgb2YgaWxsdXN0cmF0aW9ucwogIC0tPgogIDwhLS0gbGlua2VuZDogdG8gZWxlbWVudCB0aGF0IHRoaXMgZW50cnkgcmVwcmVzZW50cyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibG90ZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFnZW51bS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3JjY3JlZGl0Ii8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsb3RlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbG90ZW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBsb3RlbnRyeS5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgbG90LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEFwcGVuZGl4LCBDaGFwdGVyLCBQYXJ0LCBQcmVmYWNlLCBSZWZlcmVuY2UsIFBhcnRJbnRybyAuLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFwcGVuZGl4LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcHBlbmRpeCIgc3Vic3RpdHV0aW9uR3JvdXA9ImFwcGVuZGl4LmNsYXNzIi8+CiAgPCEtLSBlbmQgb2YgYXBwZW5kaXguZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXBwZW5kaXguYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFwcGVuZGl4LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhcHBlbmRpeC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFwcGVuZGl4Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2hhcHRlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2hhcHRlciIgc3Vic3RpdHV0aW9uR3JvdXA9ImNoYXB0ZXIuY2xhc3MiLz4KICA8IS0tIGVuZCBvZiBjaGFwdGVyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNoYXB0ZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNoYXB0ZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNoYXB0ZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjaGFwdGVyLm1vZHVsZSAtLT4KICA8IS0tCiAgICBOb3RlIHRoYXQgUGFydCB3YXMgdG8gaGF2ZSBpdHMgY29udGVudCBtb2RlbCByZWR1Y2VkIGluIFY0LjIuICBUaGlzCiAgICBjaGFuZ2Ugd2lsbCBub3QgYmUgbWFkZSBhZnRlciBhbGwuCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcnQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBhcnQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJlZ2lucGFnZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJwYXJ0aW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJwYXJ0aW50cm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFydGNvbnRlbnQubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcnQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcGFydC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYXJ0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJ0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwYXJ0LmF0dGxpc3QgLS0+CiAgPCEtLSBFTEVNRU5UIFBhcnRJbnRybyAoZGVmaW5lZCBiZWxvdykgLS0+CiAgPCEtLSBlbmQgb2YgcGFydC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByZWZhY2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InByZWZhY2UiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJlZ2lucGFnZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJwcmVmYWNlaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0b2NjaGFwIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYm9va2NvbXBvbmVudC5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByZWZhY2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJlZmFjZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcmVmYWNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJlZmFjZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJlZmFjZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByZWZhY2UubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZlcmVuY2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZmVyZW5jZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJlZmVyZW5jZWluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icGFydGludHJvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZXJlbmNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZmVyZW5jZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZlcmVuY2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVyZW5jZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmZXJlbmNlLmF0dGxpc3QgLS0+CiAgPCEtLSBFTEVNRU5UIFBhcnRJbnRybyAoZGVmaW5lZCBiZWxvdykgLS0+CiAgPCEtLSBlbmQgb2YgcmVmZXJlbmNlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFydGludHJvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwYXJ0aW50cm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJkaXYudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJvb2tjb21wb25lbnQuY29udGVudCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJ0aW50cm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcGFydGludHJvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcnRpbnRyby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFydGludHJvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwYXJ0aW50cm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwYXJ0aW50cm8ubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIE90aGVyIEluZm8gZWxlbWVudHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFwcGVuZGl4aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXBwZW5kaXhpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXBwZW5kaXhpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFwcGVuZGl4aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcHBlbmRpeGluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcHBlbmRpeGluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFwcGVuZGl4aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFwcGVuZGl4aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2dyYXBoeWluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb2dyYXBoeWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9ncmFwaHlpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb2dyYXBoeWluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvZ3JhcGh5aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2dyYXBoeWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb2dyYXBoeWluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9ncmFwaHlpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2hhcHRlcmluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNoYXB0ZXJpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2hhcHRlcmluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY2hhcHRlcmluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2hhcHRlcmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaGFwdGVyaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY2hhcHRlcmluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjaGFwdGVyaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzYXJ5aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ2xvc3NhcnlpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NhcnlpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdsb3NzYXJ5aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2FyeWluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc2FyeWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3NzYXJ5aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzYXJ5aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5kZXhpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5kZXhpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGluZGV4aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmRleGluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleGluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGluZGV4aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluZGV4aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNldGluZGV4aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2V0aW5kZXhpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2V0aW5kZXhpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNldGluZGV4aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZXRpbmRleGluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZXRpbmRleGluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNldGluZGV4aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNldGluZGV4aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcnRpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwYXJ0aW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcnRpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBhcnRpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcnRpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFydGluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBhcnRpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcGFydGluZm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcmVmYWNlaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHJlZmFjZWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmVmYWNlaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwcmVmYWNlaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcmVmYWNlaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByZWZhY2VpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwcmVmYWNlaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByZWZhY2VpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZW50cnlpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZlbnRyeWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZlbnRyeWluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmZW50cnlpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmVudHJ5aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVudHJ5aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmZW50cnlpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmZW50cnlpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdGlvbmluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZnNlY3Rpb25pbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdGlvbmluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdGlvbmluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdGlvbmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0aW9uaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdGlvbmluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZzZWN0aW9uaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QxaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdDFpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDFpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3QxaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0MWluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0MWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QxaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QxaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QyaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdDJpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDJpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3QyaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0MmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0MmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QyaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QyaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QzaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdDNpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDNpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3QzaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0M2luZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0M2luZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QzaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QzaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnN5bm9wc2lzZGl2aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc3lub3BzaXNkaXZpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc3lub3BzaXNkaXZpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnN5bm9wc2lzZGl2aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzeW5vcHNpc2RpdmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzeW5vcHNpc2RpdmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnN5bm9wc2lzZGl2aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnN5bm9wc2lzZGl2aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmVyZW5jZWluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZmVyZW5jZWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZlcmVuY2VpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZmVyZW5jZWluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZXJlbmNlaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVyZW5jZWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZmVyZW5jZWluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZlcmVuY2VpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDFpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWN0MWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0MWluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdDFpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QxaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3QxaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDFpbmZvLmF0dGxpc3QgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QyaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdDJpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDJpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY3QyaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0MmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0MmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3QyaW5mby5hdHRsaXN0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0M2luZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlY3QzaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3QzaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0M2luZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDNpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDNpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWN0M2luZm8uYXR0bGlzdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDRpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWN0NGluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0NGluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdDRpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Q0aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Q0aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDRpbmZvLmF0dGxpc3QgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Q1aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdDVpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDVpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY3Q1aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0NWluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0NWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3Q1aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFNlY3Rpb24gKHBhcmFsbGVsIHRvIFNlY3QqKSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdGlvbiIgc3Vic3RpdHV0aW9uR3JvdXA9InNlY3Rpb24uY2xhc3MiLz4KICA8IS0tIGVuZCBvZiBzZWN0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Rpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Rpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3Rpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWN0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdGlvbmluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlY3Rpb25pbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdGlvbmluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdGlvbmluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdGlvbmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0aW9uaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdGlvbmluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWN0aW9uaW5mby5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2Ygc2VjdGlvbi5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBTZWN0MSwgU2VjdDIsIFNlY3QzLCBTZWN0NCwgU2VjdDUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0MS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdDEiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNlY3QxaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkaXZjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdDIiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3QyIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3QxLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY3QxLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgUmVuZGVyYXM6IEluZGljYXRlcyB0aGUgZm9ybWF0IGluIHdoaWNoIHRoZSBoZWFkaW5nIHNob3VsZAogICAgYXBwZWFyCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QxLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZW5kZXJhcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3Q0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3Q1Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3QxLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWN0MS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlY3QxLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlY3QyIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0MmluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZGl2Y29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3QzIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0MyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0Mi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0Mi5lbGVtZW50IC0tPgogIDwhLS0KICAgIFJlbmRlcmFzOiBJbmRpY2F0ZXMgdGhlIGZvcm1hdCBpbiB3aGljaCB0aGUgaGVhZGluZyBzaG91bGQKICAgIGFwcGVhcgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0Mi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVuZGVyYXMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0Mi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWN0Mi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWN0MyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic2VjdDNpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRpdmNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0NCIvPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdDQiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdDMuZWxlbWVudCAtLT4KICA8IS0tCiAgICBSZW5kZXJhczogSW5kaWNhdGVzIHRoZSBmb3JtYXQgaW4gd2hpY2ggdGhlIGhlYWRpbmcgc2hvdWxkCiAgICBhcHBlYXIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbmRlcmFzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3QzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VjdDMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0NC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdDQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNlY3Q0aW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkaXZjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdDUiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3Q1Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Q0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY3Q0LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgUmVuZGVyYXM6IEluZGljYXRlcyB0aGUgZm9ybWF0IGluIHdoaWNoIHRoZSBoZWFkaW5nIHNob3VsZAogICAgYXBwZWFyCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Q0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZW5kZXJhcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QxIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3Q1Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Q0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWN0NC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlY3Q0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlY3Q1Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0NWluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZGl2Y29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdDUuZWxlbWVudCAtLT4KICA8IS0tCiAgICBSZW5kZXJhczogSW5kaWNhdGVzIHRoZSBmb3JtYXQgaW4gd2hpY2ggdGhlIGhlYWRpbmcgc2hvdWxkCiAgICBhcHBlYXIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbmRlcmFzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3Q1LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VjdDUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaW1wbGVzZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzaW1wbGVzZWN0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkaXZjb21wb25lbnQubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpbXBsZXNlY3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlc2VjdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaW1wbGVzZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2ltcGxlc2VjdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlc2VjdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNpbXBsZXNlY3QubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEJpYmxpb2dyYXBoeSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2dyYXBoeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvZ3JhcGh5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJiaWJsaW9ncmFwaHlpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImJpYmxpb2RpdiIvPgogICAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvZW50cnkiLz4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9taXhlZCIvPgogICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2dyYXBoeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiaWJsaW9ncmFwaHkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvZ3JhcGh5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvZ3JhcGh5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9ncmFwaHkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9ncmFwaHkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9kaXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb2RpdiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvZW50cnkiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvbWl4ZWQiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvZGl2LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb2Rpdi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9kaXYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9kaXYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb2Rpdi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb2Rpdi5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgYmlibGlvZ3JhcGh5LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEdsb3NzYXJ5IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzYXJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJnbG9zc2FyeSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iZ2xvc3NhcnlpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imdsb3NzZGl2Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJnbG9zc2VudHJ5Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJpYmxpb2dyYXBoeSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc2FyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBnbG9zc2FyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2FyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzYXJ5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBnbG9zc2FyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzYXJ5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NkaXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdsb3NzZGl2Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJnbG9zc2VudHJ5Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzZGl2LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdsb3NzZGl2LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzZGl2LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NkaXYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3NzZGl2LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ2xvc3NkaXYubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzYXJ5LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEluZGV4IGFuZCBTZXRJbmRleCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4ZXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImluZGV4Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJpbmRleGluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmRleGRpdiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmRleGVudHJ5Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZGV4LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGluZGV4LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5kZXhlcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW5kZXguYXR0bGlzdCAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZXRpbmRleCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic2V0aW5kZXhpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5kZXhkaXYiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5kZXhlbnRyeSIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZXRpbmRleC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZXRpbmRleC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZXRpbmRleC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZGV4ZXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNldGluZGV4LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5kZXhlcy5tb2R1bGUgLS0+CiAgPCEtLQogICAgU2VnbWVudGVkTGlzdCBpbiB0aGlzIGNvbnRlbnQgaXMgdXNlZnVsIGZvciBtYXJraW5nIHVwIHBlcm11dGVkCiAgICBpbmRpY2VzLgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmRleGRpdi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5kZXhkaXYiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmRleGRpdmNvbXBvbmVudC5taXgiLz4KICAgICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZGV4ZW50cnkiLz4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzZWdtZW50ZWRsaXN0Ii8+CiAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleGRpdi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbmRleGRpdi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmRleGRpdi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZGV4ZGl2LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmRleGRpdi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluZGV4ZGl2Lm1vZHVsZSAtLT4KICA8IS0tIEluZGV4IGVudHJpZXMgYXBwZWFyIGluIHRoZSBpbmRleCwgbm90IHRoZSB0ZXh0LiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5kZXhlbnRyeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5kZXhlbnRyeSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InByaW1hcnlpZSIvPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNlZWllIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNlZWFsc29pZSIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpzZXF1ZW5jZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2Vjb25kYXJ5aWUiLz4KICAgICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2VlaWUiLz4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzZWVhbHNvaWUiLz4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZXJ0aWFyeWllIi8+CiAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleGVudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGluZGV4ZW50cnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5kZXhlbnRyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZGV4ZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGluZGV4ZW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbmRleGVudHJ5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJpbXNlY3RlcmllLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwcmltYXJ5aWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmltYXJ5aWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJpbWFyeWllLmVsZW1lbnQgLS0+CiAgPCEtLSB0byBJbmRleFRlcm1zIHRoYXQgdGhlc2UgZW50cmllcyByZXByZXNlbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByaW1hcnlpZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJpbXNlY3RlcmllLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwcmltYXJ5aWUuYXR0bGlzdCAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWNvbmRhcnlpZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY29uZGFyeWllLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY29uZGFyeWllLmVsZW1lbnQgLS0+CiAgPCEtLSB0byBJbmRleFRlcm1zIHRoYXQgdGhlc2UgZW50cmllcyByZXByZXNlbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY29uZGFyeWllLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmltc2VjdGVyaWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY29uZGFyeWllLmF0dGxpc3QgLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGVydGlhcnlpZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRlcnRpYXJ5aWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGVydGlhcnlpZS5lbGVtZW50IC0tPgogIDwhLS0gdG8gSW5kZXhUZXJtcyB0aGF0IHRoZXNlIGVudHJpZXMgcmVwcmVzZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0ZXJ0aWFyeWllLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmltc2VjdGVyaWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRlcnRpYXJ5aWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcmltc2VjdGVyaWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWVpZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VlaWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWVpZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWVpZS5lbGVtZW50IC0tPgogIDwhLS0gdG8gSW5kZXhFbnRyeSB0byBsb29rIHVwIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWVpZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmQuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWVpZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VlaWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWVpZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZWFsc29pZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VlYWxzb2llIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VlYWxzb2llLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlZWFsc29pZS5lbGVtZW50IC0tPgogIDwhLS0gdG8gcmVsYXRlZCBJbmRleEVudHJpZXMgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZWFsc29pZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VlYWxzb2llLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWVhbHNvaWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWVhbHNvaWUubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIGluZGV4LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFJlZkVudHJ5IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmVudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZlbnRyeSIgc3Vic3RpdHV0aW9uR3JvdXA9InJlZmVudHJ5LmNsYXNzIi8+CiAgPCEtLSBlbmQgb2YgcmVmZW50cnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmZW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZlbnRyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZm1ldGEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZm1ldGEiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZWZlbnRyeXRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im1hbnZvbG51bSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmbWlzY2luZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmbWV0YS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZtZXRhLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZm1ldGEuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZtZXRhLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZtZXRhLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmbWV0YS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZm1pc2NpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZtaXNjaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZm1pc2NpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZm1pc2NpbmZvLmVsZW1lbnQgLS0+CiAgPCEtLSBDbGFzczogRnJlZWx5IGFzc2lnbmFibGUgcGFyYW1ldGVyOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZtaXNjaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZm1pc2NpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZtaXNjaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZm1pc2NpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmbmFtZWRpdi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmbmFtZWRpdiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmZGVzY3JpcHRvciIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZm5hbWUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlZnB1cnBvc2UiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmNsYXNzIi8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icmVtYXJrIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZuYW1lZGl2LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZm5hbWVkaXYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmbmFtZWRpdi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZm5hbWVkaXYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZm5hbWVkaXYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZuYW1lZGl2Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZGVzY3JpcHRvci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmZGVzY3JpcHRvciI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZuYW1lLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmRlc2NyaXB0b3IuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmZGVzY3JpcHRvci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZkZXNjcmlwdG9yLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZGVzY3JpcHRvci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmZGVzY3JpcHRvci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZmRlc2NyaXB0b3IubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZuYW1lIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZm5hbWUuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmbmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZm5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmbmFtZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnB1cnBvc2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZnB1cnBvc2UiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmaW5saW5lLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnB1cnBvc2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmcHVycG9zZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZwdXJwb3NlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmcHVycG9zZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmcHVycG9zZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnB1cnBvc2UubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZjbGFzcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmY2xhc3MuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmY2xhc3MuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmY2xhc3MuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmY2xhc3MuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZjbGFzcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmY2xhc3MuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZjbGFzcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnN5bm9wc2lzZGl2LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZzeW5vcHNpc2RpdiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmc3lub3BzaXNkaXZpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJyZWZzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmY29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3QyIi8+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmc2VjdDIiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc3lub3BzaXNkaXYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc3lub3BzaXNkaXYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc3lub3BzaXNkaXYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzeW5vcHNpc2Rpdi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc3lub3BzaXNkaXYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZzeW5vcHNpc2Rpdi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3Rpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZnNlY3Rpb24iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJlZnNlY3Rpb25pbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icmVmc2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZzZWN0aW9uIi8+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmc2VjdGlvbiIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3Rpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3Rpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3Rpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZzZWN0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdDEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZnNlY3QxIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJyZWZzZWN0MWluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJyZWZzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmY29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3QyIi8+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmc2VjdDIiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDEuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdDEuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0MS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZzZWN0MS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZzZWN0MiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmc2VjdDJpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icmVmc2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZzZWN0MyIvPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3QzIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3QyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3QyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0My5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdDMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJlZnNlY3QzaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9InJlZnNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZjb21wb25lbnQubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3QzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3QzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDMubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEFydGljbGUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLQogICAgQW4gQXJ0aWNsZSBpcyBhIGNoYXB0ZXItbGV2ZWwsIHN0YW5kLWFsb25lIGRvY3VtZW50IHRoYXQgaXMgb2Z0ZW4sCiAgICBidXQgbmVlZCBub3QgYmUsIGNvbGxlY3RlZCBpbnRvIGEgQm9vay4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJ0aWNsZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXJ0aWNsZSIgc3Vic3RpdHV0aW9uR3JvdXA9ImFydGljbGUuY2xhc3MiLz4KICA8IS0tIGVuZCBvZiBhcnRpY2xlLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgQ2xhc3M6IEluZGljYXRlcyB0aGUgdHlwZSBvZiBhIHBhcnRpY3VsYXIgYXJ0aWNsZTsKICAgIGFsbCBhcnRpY2xlcyBoYXZlIHRoZSBzYW1lIHN0cnVjdHVyZSBhbmQgZ2VuZXJhbCBwdXJwb3NlLgogICAgTm8gZGVmYXVsdC4KICAtLT4KICA8IS0tIFBhcmVudEJvb2s6IElEIG9mIHRoZSBlbmNsb3NpbmcgQm9vayAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJ0aWNsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJqb3VybmFsYXJ0aWNsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcm9kdWN0c2hlZXQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0id2hpdGVwYXBlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0ZWNocmVwb3J0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNwZWNpZmljYXRpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZmFxIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBhcmVudGJvb2siIHR5cGU9InhzOklEUkVGIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcnRpY2xlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KPC94czpzY2hlbWE+CjwhLS0gZW5kIG9mIGFydGljbGUuYXR0bGlzdCAtLT4KPCEtLSBlbmQgb2YgYXJ0aWNsZS5tb2R1bGUgLS0+CjwhLS0gRW5kIG9mIERvY0Jvb2sgZG9jdW1lbnQgaGllcmFyY2h5IG1vZHVsZSBWNC4yIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo=
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgbm90YXRpb25zIG1vZHVsZSBWNC4yIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkYm5vdG54Lm1vZCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDIgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogZGJub3RueC5tb2QsdiAxLjEzIDIwMDIvMDcvMTcgMTU6MjY6MTYgbndhbHNoIEV4cCAkCiAgCiAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSBhbmQgZGlzdHJpYnV0ZSB0aGUgRG9jQm9vayBEVEQKICBhbmQgaXRzIGFjY29tcGFueWluZyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUKICBpcyBoZXJlYnkgZ3JhbnRlZCBpbiBwZXJwZXR1aXR5LCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQKICBub3RpY2UgYW5kIHRoaXMgcGFyYWdyYXBoIGFwcGVhciBpbiBhbGwgY29waWVzLiAgVGhlIGNvcHlyaWdodAogIGhvbGRlcnMgbWFrZSBubyByZXByZXNlbnRhdGlvbiBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhlIERURCBmb3IKICBhbnkgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzZWQgb3IgaW1wbGllZAogIHdhcnJhbnR5LgogIAogIElmIHlvdSBtb2RpZnkgdGhlIERvY0Jvb2sgRFREIGluIGFueSB3YXksIGV4Y2VwdCBmb3IgZGVjbGFyaW5nIGFuZAogIHJlZmVyZW5jaW5nIGFkZGl0aW9uYWwgc2V0cyBvZiBnZW5lcmFsIGVudGl0aWVzIGFuZCBkZWNsYXJpbmcKICBhZGRpdGlvbmFsIG5vdGF0aW9ucywgbGFiZWwgeW91ciBEVEQgYXMgYSB2YXJpYW50IG9mIERvY0Jvb2suICBTZWUKICB0aGUgbWFpbnRlbmFuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAKICBQbGVhc2UgZGlyZWN0IGFsbCBxdWVzdGlvbnMsIGJ1ZyByZXBvcnRzLCBvciBzdWdnZXN0aW9ucyBmb3IKICBjaGFuZ2VzIHRvIHRoZSBkb2Nib29rQGxpc3RzLm9hc2lzLW9wZW4ub3JnIG1haWxpbmcgbGlzdC4gRm9yIG1vcmUKICBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay8uCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0KICBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgZW50aXR5IGRlY2xhcmF0aW9ucyBmb3IgdGhlIHN0YW5kYXJkIElTTwogIGVudGl0eSBzZXRzIHVzZWQgYnkgRG9jQm9vay4KICAKICBJbiBEVEQgZHJpdmVyIGZpbGVzIHJlZmVycmluZyB0byB0aGlzIG1vZHVsZSwgcGxlYXNlIHVzZSBhbiBlbnRpdHkKICBkZWNsYXJhdGlvbiB0aGF0IHVzZXMgdGhlIHB1YmxpYyBpZGVudGlmaWVyIHNob3duIGJlbG93OgogIAogIDwhRU5USVRZICUgZGJub3RuIFBVQkxJQwogICItLy9PQVNJUy8vRU5USVRJRVMgRG9jQm9vayBOb3RhdGlvbnMgVjQuMi8vRU4iCiAgImRibm90bngubW9kIj4KICAlZGJub3RuOwogIAogIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlsZWQgaW5mb3JtYXRpb24gb24gdGhlIHBhcmFtZXRlcgogIGVudGl0eSBhbmQgbW9kdWxlIHNjaGVtZSB1c2VkIGluIERvY0Jvb2ssIGN1c3RvbWl6aW5nIERvY0Jvb2sgYW5kCiAgcGxhbm5pbmcgZm9yIGludGVyY2hhbmdlLCBhbmQgY2hhbmdlcyBtYWRlIHNpbmNlIHRoZSBsYXN0IHJlbGVhc2UKICBvZiBEb2NCb29rLgotLT4KPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4KICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJub3RhdGlvbi5jbGFzcyI+CiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkJNUCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkNHTS1DSEFSIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQ0dNLUJJTkFSWSIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkNHTS1DTEVBUiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkRJVFJPRkYiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJEVkkiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJFUFMiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJFUU4iLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJGQVgiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJHSUYiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJHSUY4N2EiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJHSUY4OWEiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJKUEciLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJKUEVHIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iSUdFUyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlBDWCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlBJQyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlBORyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlBTIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iU0dNTCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlRCTCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlRFWCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlRJRkYiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJXTUYiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJXUEciLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJTVkciLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lc3BlY2lmaWMiLz4KICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgPC94czpzaW1wbGVUeXBlPgo8L3hzOnNjaGVtYT4KPCEtLSBXb3JkUGVyZmVjdCBHcmFwaGljIGZvcm1hdCAtLT4KPCEtLSBFbmQgb2YgRG9jQm9vayBub3RhdGlvbnMgbW9kdWxlIFY0LjIgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+Cg==
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgWE1MIGluZm9ybWF0aW9uIHBvb2wgbW9kdWxlIFY0LjIgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkYnBvb2x4Lm1vZCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDIgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogZGJwb29seC5tb2QsdiAxLjQ2IDIwMDIvMDcvMTcgMTU6MjY6MTYgbndhbHNoIEV4cCAkCiAgCiAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSBhbmQgZGlzdHJpYnV0ZSB0aGUgRG9jQm9vayBYTUwgRFRECiAgYW5kIGl0cyBhY2NvbXBhbnlpbmcgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlCiAgaXMgaGVyZWJ5IGdyYW50ZWQgaW4gcGVycGV0dWl0eSwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0CiAgbm90aWNlIGFuZCB0aGlzIHBhcmFncmFwaCBhcHBlYXIgaW4gYWxsIGNvcGllcy4gIFRoZSBjb3B5cmlnaHQKICBob2xkZXJzIG1ha2Ugbm8gcmVwcmVzZW50YXRpb24gYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoZSBEVEQgZm9yCiAgYW55IHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzc2VkIG9yIGltcGxpZWQKICB3YXJyYW50eS4KICAKICBJZiB5b3UgbW9kaWZ5IHRoZSBEb2NCb29rIFhNTCBEVEQgaW4gYW55IHdheSwgZXhjZXB0IGZvciBkZWNsYXJpbmcgYW5kCiAgcmVmZXJlbmNpbmcgYWRkaXRpb25hbCBzZXRzIG9mIGdlbmVyYWwgZW50aXRpZXMgYW5kIGRlY2xhcmluZwogIGFkZGl0aW9uYWwgbm90YXRpb25zLCBsYWJlbCB5b3VyIERURCBhcyBhIHZhcmlhbnQgb2YgRG9jQm9vay4gIFNlZQogIHRoZSBtYWludGVuYW5jZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogIAogIFBsZWFzZSBkaXJlY3QgYWxsIHF1ZXN0aW9ucywgYnVnIHJlcG9ydHMsIG9yIHN1Z2dlc3Rpb25zIGZvcgogIGNoYW5nZXMgdG8gdGhlIGRvY2Jvb2tAbGlzdHMub2FzaXMtb3Blbi5vcmcgbWFpbGluZyBsaXN0LiBGb3IgbW9yZQogIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rLy4KLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIFRoaXMgbW9kdWxlIGNvbnRhaW5zIHRoZSBkZWZpbml0aW9ucyBmb3IgdGhlIG9iamVjdHMsIGlubGluZQogIGVsZW1lbnRzLCBhbmQgc28gb24gdGhhdCBhcmUgYXZhaWxhYmxlIHRvIGJlIHVzZWQgYXMgdGhlIG1haW4KICBjb250ZW50IG9mIERvY0Jvb2sgZG9jdW1lbnRzLiAgU29tZSBlbGVtZW50cyBhcmUgdXNlZnVsIGZvciBnZW5lcmFsCiAgcHVibGlzaGluZywgYW5kIG90aGVycyBhcmUgdXNlZnVsIHNwZWNpZmljYWxseSBmb3IgY29tcHV0ZXIKICBkb2N1bWVudGF0aW9uLgogIAogIFRoaXMgbW9kdWxlIGhhcyB0aGUgZm9sbG93aW5nIGRlcGVuZGVuY2llcyBvbiBvdGhlciBtb2R1bGVzOgogIAogIG8gSXQgYXNzdW1lcyB0aGF0IGEgJW5vdGF0aW9uLmNsYXNzOyBlbnRpdHkgaXMgZGVmaW5lZCBieSB0aGUKICAgIGRyaXZlciBmaWxlIG9yIG90aGVyIGhpZ2gtbGV2ZWwgbW9kdWxlLiAgVGhpcyBlbnRpdHkgaXMKICAgIHJlZmVyZW5jZWQgaW4gdGhlIE5PVEFUSU9OIGF0dHJpYnV0ZXMgZm9yIHRoZSBncmFwaGljLXJlbGF0ZWQgYW5kCiAgICBNb2RlU3BlYyBlbGVtZW50cy4KICAKICBvIEl0IGFzc3VtZXMgdGhhdCBhbiBhcHByb3ByaWF0ZWx5IHBhcmFtZXRlcml6ZWQgdGFibGUgbW9kdWxlIGlzCiAgICBhdmFpbGFibGUgZm9yIHVzZSB3aXRoIHRoZSB0YWJsZS1yZWxhdGVkIGVsZW1lbnRzLgogIAogIEluIERURCBkcml2ZXIgZmlsZXMgcmVmZXJyaW5nIHRvIHRoaXMgbW9kdWxlLCBwbGVhc2UgdXNlIGFuIGVudGl0eQogIGRlY2xhcmF0aW9uIHRoYXQgdXNlcyB0aGUgcHVibGljIGlkZW50aWZpZXIgc2hvd24gYmVsb3c6CiAgCiAgPCFFTlRJVFkgJSBkYnBvb2wgUFVCTElDCiAgIi0vL09BU0lTLy9FTEVNRU5UUyBEb2NCb29rIFhNTCBJbmZvcm1hdGlvbiBQb29sIFY0LjIvL0VOIgogICJkYnBvb2x4Lm1vZCI+CiAgJWRicG9vbDsKICAKICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIHRoZSBwYXJhbWV0ZXIKICBlbnRpdHkgYW5kIG1vZHVsZSBzY2hlbWUgdXNlZCBpbiBEb2NCb29rLCBjdXN0b21pemluZyBEb2NCb29rIGFuZAogIHBsYW5uaW5nIGZvciBpbnRlcmNoYW5nZSwgYW5kIGNoYW5nZXMgbWFkZSBzaW5jZSB0aGUgbGFzdCByZWxlYXNlCiAgb2YgRG9jQm9vay4KLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSBHZW5lcmFsLXB1cnBvc2Ugc2VtYW50aWNzIGVudGl0aWVzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8eHM6c2NoZW1hIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiPgogIDx4czppbmNsdWRlIHNjaGVtYUxvY2F0aW9uPSJjYWxzdGJseC54c2QiLz4KICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJ5ZXNvcm5vLmF0dHZhbHMiPgogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyIvPgogIDwveHM6c2ltcGxlVHlwZT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBFbnRpdGllcyBmb3IgbW9kdWxlIGluY2x1c2lvbnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEVudGl0aWVzIGZvciBlbGVtZW50IGNsYXNzZXMgYW5kIG1peHR1cmVzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSAiVWJpcXVpdG91cyIgY2xhc3NlczogbmR4dGVybS5jbGFzcyBhbmQgYmVnaW5wYWdlIC0tPgogIDx4czplbGVtZW50IG5hbWU9Im5keHRlcm0uY2xhc3MiIGFic3RyYWN0PSJ0cnVlIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJwcmltYXJ5Ii8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNlY29uZGFyeSIvPgogICAgICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZXJ0aWFyeSIvPgogICAgICAgICAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNlZSIvPgogICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWVhbHNvIi8+CiAgICAgICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2VlIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VlYWxzbyIvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNlZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VlYWxzbyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleHRlcm0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBPYmplY3QtbGV2ZWwgY2xhc3NlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czplbGVtZW50IG5hbWU9Imxpc3QuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYWRtb24uY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibGluZXNwZWNpZmljLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDx4czplbGVtZW50IG5hbWU9Im1ldGhvZC5zeW5vcC5jbGFzcyIgYWJzdHJhY3Q9InRydWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJzeW5vcC5jbGFzcyIvPgogIDx4czplbGVtZW50IG5hbWU9InN5bm9wLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDx4czplbGVtZW50IG5hbWU9InBhcmEuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5mb3JtYWwuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZm9ybWFsLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDwhLS0gVGhlIERvY0Jvb2sgVEMgbWF5IHByb2R1Y2UgYW4gb2ZmaWNpYWwgRUJORiBtb2R1bGUgZm9yIERvY0Jvb2suIC0tPgogIDwhLS0gVGhpcyBQRSBwcm92aWRlcyB0aGUgaG9vayBieSB3aGljaCBpdCBjYW4gYmUgaW5zZXJ0ZWQgaW50byB0aGUgRFRELiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb21wb3VuZC5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6Z3JvdXAgbmFtZT0iZ2Vub2JqLmNsYXNzIj4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYW5jaG9yIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYnJpZGdlaGVhZCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InJlbWFyayIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImhpZ2hsaWdodHMiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImRlc2NvYmouY2xhc3MiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhYnN0cmFjdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImF1dGhvcmJsdXJiIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZXBpZ3JhcGgiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBDaGFyYWN0ZXItbGV2ZWwgY2xhc3NlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czplbGVtZW50IG5hbWU9InhyZWYuY2hhci5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6ZWxlbWVudCBuYW1lPSJnZW4uY2hhci5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6ZWxlbWVudCBuYW1lPSJsaW5rLmNoYXIuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPCEtLSBUaGUgRG9jQm9vayBUQyBtYXkgcHJvZHVjZSBhbiBvZmZpY2lhbCBFQk5GIG1vZHVsZSBmb3IgRG9jQm9vay4gLS0+CiAgPCEtLSBUaGlzIFBFIHByb3ZpZGVzIHRoZSBob29rIGJ5IHdoaWNoIGl0IGNhbiBiZSBpbnNlcnRlZCBpbnRvIHRoZSBEVEQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InRlY2guY2hhci5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6Z3JvdXAgbmFtZT0iYmFzZS5jaGFyLmNsYXNzIj4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhbmNob3IiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJkb2NpbmZvLmNoYXIuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmdyb3VwIG5hbWU9Im90aGVyLmNoYXIuY2xhc3MiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZW1hcmsiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJzY3JpcHQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdXBlcnNjcmlwdCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmxpbmVvYmouY2hhci5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBFbnRpdGllcyBmb3IgY29udGVudCBtb2RlbHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czpncm91cCBuYW1lPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0idGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlYWJicmV2Ii8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBSZWRlY2xhcmF0aW9uIHBsYWNlaG9sZGVyIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0KICAgIEZvciByZWRlY2xhcmluZyBlbnRpdGllcyB0aGF0IGFyZSBkZWNsYXJlZCBhZnRlciB0aGlzIHBvaW50IHdoaWxlCiAgICByZXRhaW5pbmcgdGhlaXIgcmVmZXJlbmNlcyB0byB0aGUgZW50aXRpZXMgdGhhdCBhcmUgZGVjbGFyZWQgYmVmb3JlCiAgICB0aGlzIHBvaW50CiAgLS0+CiAgPCEtLSBPYmplY3QtbGV2ZWwgbWl4dHVyZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0KICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0IGFkbW4gbGluZSBzeW5wIHBhcmEgaW5mbSBmb3JtIGNtcGQgZ2VuICBkZXNjCiAgICBDb21wb25lbnQgbWl4dHVyZSAgICAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYCiAgICBTaWRlYmFyIG1peHR1cmUgICAgICAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIGEgICAgWAogICAgRm9vdG5vdGUgbWl4dHVyZSAgICAgICAgWCAgICAgICAgIFggICAgWCAgICBYICAgIFgKICAgIEV4YW1wbGUgbWl4dHVyZSAgICAgICAgIFggICAgICAgICBYICAgIFggICAgWCAgICBYCiAgICBIaWdobGlnaHRzIG1peHR1cmUgICAgICBYICAgIFggICAgICAgICAgICAgIFgKICAgIFBhcmFncmFwaCBtaXh0dXJlICAgICAgIFggICAgICAgICBYICAgIFggICAgICAgICBYCiAgICBBZG1vbml0aW9uIG1peHR1cmUgICAgICBYICAgICAgICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIGIgICAgYwogICAgRmlndXJlIG1peHR1cmUgICAgICAgICAgICAgICAgICAgIFggICAgWCAgICAgICAgIFgKICAgIFRhYmxlIGVudHJ5IG1peHR1cmUgICAgIFggICAgWCAgICBYICAgICAgICAgWCAgICBkCiAgICBHbG9zc2FyeSBkZWYgbWl4dHVyZSAgICBYICAgICAgICAgWCAgICBYICAgIFggICAgWCAgICAgICAgIGUKICAgIExlZ2FsIG5vdGljZSBtaXh0dXJlICAgIFggICAgWCAgICBYICAgICAgICAgWCAgICBmCiAgICAKICAgIGEuIEp1c3QgUHJvY2VkdXJlOyBub3QgU2lkZWJhciBpdHNlbGYgb3IgTXNnU2V0LgogICAgYi4gTm8gTXNnU2V0LgogICAgYy4gTm8gSGlnaGxpZ2h0cy4KICAgIGQuIEp1c3QgR3JhcGhpYzsgbm8gb3RoZXIgaW5mb3JtYWwgb2JqZWN0cy4KICAgIGUuIE5vIEFuY2hvciwgQnJpZGdlSGVhZCwgb3IgSGlnaGxpZ2h0cy4KICAgIGYuIEp1c3QgQmxvY2tRdW90ZTsgbm8gb3RoZXIgaW5mb3JtYWwgb2JqZWN0cy4KICAtLT4KICA8eHM6Z3JvdXAgbmFtZT0iY29tcG9uZW50Lm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29tcG91bmQuY2xhc3MiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZ2Vub2JqLmNsYXNzIi8+CiAgICAgIDx4czpncm91cCByZWY9ImRlc2NvYmouY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJzaWRlYmFyLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJvY2VkdXJlIi8+CiAgICAgIDx4czpncm91cCByZWY9Imdlbm9iai5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InFhbmRhc2V0Lm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJvY2VkdXJlIi8+CiAgICAgIDx4czpncm91cCByZWY9Imdlbm9iai5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InJldmRlc2NyaXB0aW9uLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJvY2VkdXJlIi8+CiAgICAgIDx4czpncm91cCByZWY9Imdlbm9iai5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImZvb3Rub3RlLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW5vcC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iZXhhbXBsZS5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJoaWdobGlnaHRzLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDwhLS0KICAgICVmb3JtYWwuY2xhc3M7IGlzIGV4cGxpY2l0bHkgZXhjbHVkZWQgZnJvbSBtYW55IGNvbnRleHRzIGluIHdoaWNoCiAgICBwYXJhZ3JhcGhzIGFyZSB1c2VkCiAgLS0+CiAgPHhzOmdyb3VwIG5hbWU9InBhcmEubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImFkbW9uLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW5vcC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InByb2NlZHVyZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InNpZGViYXIiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhbmNob3IiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJicmlkZ2VoZWFkIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icmVtYXJrIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iZmlndXJlLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJ0YWJlbnRyeS5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWRtb24uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JhcGhpYyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im1lZGlhb2JqZWN0Ii8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJnbG9zc2RlZi5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZW1hcmsiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJsZWdhbG5vdGljZS5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWRtb24uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmxvY2txdW90ZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InRleHRvYmplY3QubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJsb2NrcXVvdGUiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWVkaWFvYmplY3QubWl4IiBhYnN0cmFjdD0idHJ1ZSIvPgogIDx4czpncm91cCBuYW1lPSJsaXN0cHJlYW1ibGUubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWRtb24uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW5vcC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJnZW5vYmouY2xhc3MiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZGVzY29iai5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBDaGFyYWN0ZXItbGV2ZWwgbWl4dHVyZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gc2dtbC5mZWF0dXJlcyAtLT4KICA8IS0tIG5vdCBbc2dtbC5mZWF0dXJlc1sgLS0+CiAgPCEtLSBdXSBub3Qgc2dtbC5mZWF0dXJlcyAtLT4KICA8IS0tCiAgICAgICAgICAgICAgICAgICAgICAgICNQQ0QgeHJlZiB3b3JkIGxpbmsgY3B0ciBiYXNlIGRuZm8gb3RociBpbm9iIChzeW5vcCkKICAgIHBhcmEuY2hhci5taXggICAgICAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWAogICAgdGl0bGUuY2hhci5taXggICAgICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYCiAgICBuZHh0ZXJtLmNoYXIubWl4ICAgICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIGEKICAgIGNwdHIuY2hhci5taXggICAgICAgICBYICAgICAgICAgICAgICBYICAgIFggICAgWCAgICAgICAgIFggICAgYQogICAgc21hbGxjcHRyLmNoYXIubWl4ICAgIFggICAgICAgICAgICAgICAgICAgYiAgICAgICAgICAgICAgICAgICBhCiAgICB3b3JkLmNoYXIubWl4ICAgICAgICAgWCAgICAgICAgIGMgICAgWCAgICAgICAgIFggICAgICAgICBYICAgIGEKICAgIGRvY2luZm8uY2hhci5taXggICAgICBYICAgICAgICAgZCAgICBYICAgIGIgICAgICAgICAgICAgIFggICAgYQogICAgCiAgICBhLiBKdXN0IElubGluZUdyYXBoaWM7IG5vIElubGluZUVxdWF0aW9uLgogICAgYi4gSnVzdCBSZXBsYWNlYWJsZTsgbm8gb3RoZXIgY29tcHV0ZXIgdGVybXMuCiAgICBjLiBKdXN0IEVtcGhhc2lzIGFuZCBUcmFkZW1hcms7IG5vIG90aGVyIHdvcmQgZWxlbWVudHMuCiAgICBkLiBKdXN0IEFjcm9ueW0sIEVtcGhhc2lzLCBhbmQgVHJhZGVtYXJrOyBubyBvdGhlciB3b3JkIGVsZW1lbnRzLgogIC0tPgogIDwhLS0gVGhlIERvY0Jvb2sgVEMgbWF5IHByb2R1Y2UgYW4gb2ZmaWNpYWwgZm9ybXMgbW9kdWxlIGZvciBEb2NCb29rLiAtLT4KICA8IS0tIFRoaXMgUEUgcHJvdmlkZXMgdGhlIGhvb2sgYnkgd2hpY2ggaXQgY2FuIGJlIGluc2VydGVkIGludG8gdGhlIERURC4gLS0+CiAgPHhzOmdyb3VwIG5hbWU9InBhcmEuY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ4cmVmLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdlbi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRlY2guY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJhc2UuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZG9jaW5mby5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lb2JqLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InRpdGxlLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ieHJlZi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnZW4uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImRvY2luZm8uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW9iai5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJuZHh0ZXJtLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ieHJlZi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnZW4uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImRvY2luZm8uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZWdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJjcHRyLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJvdGhlci5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVncmFwaGljIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVtZWRpYW9iamVjdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJzbWFsbGNwdHIuY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXBsYWNlYWJsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgICA8L3hzOmNob2ljZT4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0id29yZC5jaGFyLm1peCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjcm9ueW0iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtcGhhc2lzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0cmFkZW1hcmsiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJhc2UuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZWdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImRvY2luZm8uY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtcGhhc2lzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0cmFkZW1hcmsiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlcGxhY2VhYmxlIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBFTlRJVFkgJSBiaWJsaW9jb21wb25lbnQubWl4IChzZWUgQmlibGlvZ3JhcGhpYyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSBFTlRJVFkgJSBwZXJzb24uaWRlbnQubWl4IChzZWUgQmlibGlvZ3JhcGhpYyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gRW50aXRpZXMgZm9yIGF0dHJpYnV0ZXMgYW5kIGF0dHJpYnV0ZSBjb21wb25lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEVmZmVjdGl2aXR5IGF0dHJpYnV0ZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLQogICAgQXJjaDogQ29tcHV0ZXIgb3IgY2hpcCBhcmNoaXRlY3R1cmUgdG8gd2hpY2ggZWxlbWVudCBhcHBsaWVzOyBubwogICAgZGVmYXVsdAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcmNoLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFyY2giLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gQ29uZGl0aW9uOiBHZW5lcmFsLXB1cnBvc2UgZWZmZWN0aXZpdHkgYXR0cmlidXRlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25kaXRpb24uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29uZGl0aW9uIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIENvbmZvcm1hbmNlOiBTdGFuZGFyZHMgY29uZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mb3JtYW5jZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb25mb3JtYW5jZSIgdHlwZT0ieHM6Tk1UT0tFTlMiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gT1M6IE9wZXJhdGluZyBzeXN0ZW0gdG8gd2hpY2ggZWxlbWVudCBhcHBsaWVzOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcyIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBSZXZpc2lvbjogRWRpdG9yaWFsIHJldmlzaW9uIHRvIHdoaWNoIGVsZW1lbnQgYmVsb25nczsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aXNpb24uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmV2aXNpb24iLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gU2VjdXJpdHk6IFNlY3VyaXR5IGNsYXNzaWZpY2F0aW9uOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN1cml0eS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWN1cml0eSIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgVXNlckxldmVsOiBMZXZlbCBvZiB1c2VyIGV4cGVyaWVuY2UgdG8gd2hpY2ggZWxlbWVudCBhcHBsaWVzOyBubwogICAgZGVmYXVsdAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ1c2VybGV2ZWwuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXNlcmxldmVsIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIFZlbmRvcjogQ29tcHV0ZXIgdmVuZG9yIHRvIHdoaWNoIGVsZW1lbnQgYXBwbGllczsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmVuZG9yLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZlbmRvciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVmZmVjdGl2aXR5LmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcmNoLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZGl0aW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZm9ybWFuY2UuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvcy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldmlzaW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXJpdHkuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ1c2VybGV2ZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2ZW5kb3IuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIENvbW1vbiBhdHRyaWJ1dGVzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBJZDogVW5pcXVlIGlkZW50aWZpZXIgb2YgZWxlbWVudDsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaWQuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InhzOklEIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBJZDogVW5pcXVlIGlkZW50aWZpZXIgb2YgZWxlbWVudDsgYSB2YWx1ZSBtdXN0IGJlIHN1cHBsaWVkOyBubwogICAgZGVmYXVsdAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpZHJlcS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpZCIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6SUQiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0KICAgIExhbmc6IEluZGljYXRvciBvZiBsYW5ndWFnZSBpbiB3aGljaCBlbGVtZW50IGlzIHdyaXR0ZW4sIGZvcgogICAgdHJhbnNsYXRpb24sIGNoYXJhY3RlciBzZXQgbWFuYWdlbWVudCwgZXRjLjsgbm8gZGVmYXVsdAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsYW5nLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhbmciLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gUmVtYXA6IFByZXZpb3VzIHJvbGUgb2YgZWxlbWVudCBiZWZvcmUgY29udmVyc2lvbjsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVtYXAuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVtYXAiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gUm9sZTogTmV3IHJvbGUgb2YgZWxlbWVudCBpbiBsb2NhbCBlbnZpcm9ubWVudDsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb2xlIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBYUmVmTGFiZWw6IEFsdGVybmF0ZSBsYWJlbGluZyBzdHJpbmcgZm9yIFhSZWYgdGV4dCBnZW5lcmF0aW9uOwogICAgZGVmYXVsdCBpcyB1c3VhbGx5IHRpdGxlIG9yIG90aGVyIGFwcHJvcHJpYXRlIGxhYmVsIHRleHQgYWxyZWFkeQogICAgY29udGFpbmVkIGluIGVsZW1lbnQKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ieHJlZmxhYmVsLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InhyZWZsYWJlbCIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgUmV2aXNpb25GbGFnOiBSZXZpc2lvbiBzdGF0dXMgb2YgZWxlbWVudDsgZGVmYXVsdCBpcyB0aGF0IGVsZW1lbnQKICAgIHdhc24ndCByZXZpc2VkCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldmlzaW9uZmxhZy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXZpc2lvbmZsYWciPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjaGFuZ2VkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImFkZGVkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRlbGV0ZWQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib2ZmIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIFJvbGUgaXMgaW5jbHVkZWQgZXhwbGljaXRseSBvbiBlYWNoIGVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbW1vbi5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaWQuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYW5nLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVtYXAuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4cmVmbGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZpc2lvbmZsYWcuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlZmZlY3Rpdml0eS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gUm9sZSBpcyBpbmNsdWRlZCBleHBsaWNpdGx5IG9uIGVhY2ggZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaWRyZXEuY29tbW9uLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpZHJlcS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhbmcuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZW1hcC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InhyZWZsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldmlzaW9uZmxhZy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVmZmVjdGl2aXR5LmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBTZW1pLWNvbW1vbiBhdHRyaWJ1dGVzIGFuZCBvdGhlciBhdHRyaWJ1dGUgZW50aXRpZXMgLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0KICAgIEVudGl0eVJlZjogTmFtZSBvZiBhbiBleHRlcm5hbCBlbnRpdHkgY29udGFpbmluZyB0aGUgY29udGVudAogICAgb2YgdGhlIGdyYXBoaWMKICAtLT4KICA8IS0tCiAgICBGaWxlUmVmOiBGaWxlbmFtZSwgcXVhbGlmaWVkIGJ5IGEgcGF0aG5hbWUgaWYgZGVzaXJlZCwKICAgIGRlc2lnbmF0aW5nIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGNvbnRlbnQgb2YgdGhlIGdyYXBoaWMKICAtLT4KICA8IS0tIEZvcm1hdDogTm90YXRpb24gb2YgdGhlIGVsZW1lbnQgY29udGVudCwgaWYgYW55IC0tPgogIDwhLS0gU3JjQ3JlZGl0OiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgc291cmNlIG9mIHRoZSBHcmFwaGljIC0tPgogIDwhLS0gV2lkdGg6IFNhbWUgYXMgQ0FMUyByZXByb3dpZCAoZGVzaXJlZCB3aWR0aCkgLS0+CiAgPCEtLSBEZXB0aDogU2FtZSBhcyBDQUxTIHJlcHJvZGVwIChkZXNpcmVkIGRlcHRoKSAtLT4KICA8IS0tCiAgICBBbGlnbjogU2FtZSBhcyBDQUxTIGhwbGFjZSB3aXRoICdub25lJyByZW1vdmVkOyAjSU1QTElFRCBtZWFucwogICAgYXBwbGljYXRpb24tc3BlY2lmaWMKICAtLT4KICA8IS0tIFNjYWxlOiBDb25mbGF0aW9uIG9mIENBTFMgaHNjYWxlIGFuZCB2c2NhbGUgLS0+CiAgPCEtLSBTY2FsZWZpdDogU2FtZSBhcyBDQUxTIHNjYWxlZml0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJncmFwaGljcy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbnRpdHlyZWYiIHR5cGU9InhzOkVOVElUWSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmaWxlcmVmIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvcm1hdCIgdHlwZT0ibm90YXRpb24uY2xhc3MiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3JjY3JlZGl0Ii8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndpZHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRlbnR3aWR0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZXB0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250ZW50ZGVwdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsZWZ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJpZ2h0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNlbnRlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWlkZGxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzY2FsZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzY2FsZWZpdCIgdHlwZT0ieWVzb3Juby5hdHR2YWxzIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBBY3Rpb246IEtleSBjb21iaW5hdGlvbiB0eXBlOyBkZWZhdWx0IGlzIHVuc3BlY2lmaWVkIGlmIG9uZQogICAgY2hpbGQgZWxlbWVudCwgU2ltdWwgaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZTsgaWYgdmFsdWUgaXMKICAgIE90aGVyLCB0aGUgT3RoZXJBY3Rpb24gYXR0cmlidXRlIG11c3QgaGF2ZSBhIG5vbmVtcHR5IHZhbHVlCiAgLS0+CiAgPCEtLSBPdGhlckFjdGlvbjogVXNlci1kZWZpbmVkIGtleSBjb21iaW5hdGlvbiB0eXBlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJrZXlhY3Rpb24uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWN0aW9uIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2xpY2siLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZG91YmxlLWNsaWNrIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InByZXNzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlcSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzaW11bCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcmFjdGlvbiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgTGFiZWw6IElkZW50aWZ5aW5nIG51bWJlciBvciBzdHJpbmc7IGRlZmF1bHQgaXMgdXN1YWxseSB0aGUKICAgIGFwcHJvcHJpYXRlIG51bWJlciBvciBzdHJpbmcgYXV0b2dlbmVyYXRlZCBieSBhIGZvcm1hdHRlcgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsYWJlbC5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbCIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgRm9ybWF0OiB3aGV0aGVyIGVsZW1lbnQgaXMgYXNzdW1lZCB0byBjb250YWluIHNpZ25pZmljYW50IHdoaXRlCiAgICBzcGFjZQogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaW5lc3BlY2lmaWMuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZm9ybWF0IiBkZWZhdWx0PSJsaW5lc3BlY2lmaWMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lc3BlY2lmaWMiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGluZW51bWJlcmluZyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im51bWJlcmVkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InVubnVtYmVyZWQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gTGlua2VuZDogbGluayB0byByZWxhdGVkIGluZm9ybWF0aW9uOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaW5rZW5kLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxpbmtlbmQiIHR5cGU9InhzOklEUkVGIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIExpbmtlbmQ6IHJlcXVpcmVkIGxpbmsgdG8gcmVsYXRlZCBpbmZvcm1hdGlvbiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGlua2VuZHJlcS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsaW5rZW5kIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czpJRFJFRiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgTGlua2VuZHM6IGxpbmsgdG8gb25lIG9yIG1vcmUgc2V0cyBvZiByZWxhdGVkIGluZm9ybWF0aW9uOyBubwogICAgZGVmYXVsdAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaW5rZW5kcy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsaW5rZW5kcyIgdHlwZT0ieHM6SURSRUZTIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWFyay5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYXJrIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIE1vcmVJbmZvOiB3aGV0aGVyIGVsZW1lbnQncyBjb250ZW50IGhhcyBhbiBhc3NvY2lhdGVkIFJlZkVudHJ5IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtb3JlaW5mby5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtb3JlaW5mbyIgZGVmYXVsdD0ibm9uZSI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlZmVudHJ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vbmUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gUGFnZW51bTogbnVtYmVyIG9mIHBhZ2Ugb24gd2hpY2ggZWxlbWVudCBhcHBlYXJzOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYWdlbnVtLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBhZ2VudW0iLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0KICAgIFN0YXR1czogRWRpdG9yaWFsIG9yIHB1YmxpY2F0aW9uIHN0YXR1cyBvZiB0aGUgZWxlbWVudAogICAgaXQgYXBwbGllcyB0bywgc3VjaCBhcyAiaW4gcmV2aWV3IiBvciAiYXBwcm92ZWQgZm9yIGRpc3RyaWJ1dGlvbiIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RhdHVzLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0YXR1cyIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgV2lkdGg6IHdpZHRoIG9mIHRoZSBsb25nZXN0IGxpbmUgaW4gdGhlIGVsZW1lbnQgdG8gd2hpY2ggaXQKICAgIHBlcnRhaW5zLCBpbiBudW1iZXIgb2YgY2hhcmFjdGVycwogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ3aWR0aC5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aWR0aCIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gVGl0bGUgZWxlbWVudHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGl0bGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRpdGxlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRpdGxlLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRpdGxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRpdGxlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRpdGxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFnZW51bS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRpdGxlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0aXRsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRpdGxlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGl0bGVhYmJyZXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRpdGxlYWJicmV2Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRpdGxlLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRpdGxlYWJicmV2LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRpdGxlYWJicmV2LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRpdGxlYWJicmV2LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGl0bGVhYmJyZXYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRpdGxlYWJicmV2LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdGl0bGVhYmJyZXYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJ0aXRsZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3VidGl0bGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGl0bGUuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3VidGl0bGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3VidGl0bGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3VidGl0bGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJ0aXRsZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3VidGl0bGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzdWJ0aXRsZS5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gQmlibGlvZ3JhcGhpYyBlbnRpdGllcyBhbmQgZWxlbWVudHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tCiAgICBUaGUgYmlibGlvZ3JhcGhpYyBlbGVtZW50cyBhcmUgdHlwaWNhbGx5IHVzZWQgaW4gdGhlIGRvY3VtZW50CiAgICBoaWVyYXJjaHkuIFRoZXkgZG8gbm90IGFwcGVhciBpbiBjb250ZW50IG1vZGVscyBvZiBpbmZvcm1hdGlvbgogICAgcG9vbCBlbGVtZW50cy4gIFNlZSBhbHNvIHRoZSBkb2N1bWVudCBpbmZvcm1hdGlvbiBlbGVtZW50cywKICAgIGJlbG93LgogIC0tPgogIDx4czpncm91cCBuYW1lPSJwZXJzb24uaWRlbnQubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaG9ub3JpZmljIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZmlyc3RuYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3VybmFtZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVhZ2UiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvdGhlcm5hbWUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZmZpbGlhdGlvbiIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImF1dGhvcmJsdXJiIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29udHJpYiIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iYmlibGlvY29tcG9uZW50Lm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFiYnJldiIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFic3RyYWN0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWRkcmVzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFydHBhZ2VudW1zIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYXV0aG9yIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYXV0aG9yZ3JvdXAiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhdXRob3Jpbml0aWFscyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb21pc2MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9zZXQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb2xsYWIiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb25mZ3JvdXAiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb250cmFjdG51bSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbnRyYWN0c3BvbnNvciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvcHlyaWdodCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvcnBhdXRob3IiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb3JwbmFtZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImRhdGUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlZGl0aW9uIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZWRpdG9yIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW52cGFydG51bWJlciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImlzYm4iLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpc3NuIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaXNzdWVudW0iLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvcmduYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvaWQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjaXRlYmlibGlvaWQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9zb3VyY2UiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9yZWxhdGlvbiIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb2NvdmVyYWdlIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ib3RoZXJjcmVkaXQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYWdlbnVtcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InByaW50aGlzdG9yeSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InByb2R1Y3RuYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJvZHVjdG51bWJlciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InB1YmRhdGUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwdWJsaXNoZXIiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwdWJsaXNoZXJuYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHVic251bWJlciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InJlbGVhc2VpbmZvIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icmV2aGlzdG9yeSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InNlcmllc3ZvbG51bXMiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InRpdGxlIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0idGl0bGVhYmJyZXYiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ2b2x1bWVudW0iLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjaXRldGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwZXJzb25uYW1lIi8+CiAgICAgIDx4czpncm91cCByZWY9InBlcnNvbi5pZGVudC5taXgiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDwhLS0gSSBkb24ndCB0aGluayB0aGlzIGlzIHdlbGwgcGxhY2VkLCBidXQgaXQgbmVlZHMgdG8gYmUgaGVyZSBiZWNhdXNlIG9mIC0tPgogIDwhLS0gdGhlIHJlZmVyZW5jZSB0byBiaWJsaW9jb21wb25lbnQubWl4IC0tPgogIDx4czpncm91cCBuYW1lPSJpbmZvLmNsYXNzIj4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JhcGhpYyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im1lZGlhb2JqZWN0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGVnYWxub3RpY2UiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtb2Rlc3BlYyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN1YmplY3RzZXQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJrZXl3b3Jkc2V0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaXRlcm1zZXQiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iYmlibGlvY29tcG9uZW50Lm1peCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb2VudHJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcnRpY2xlaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJpYmxpb2NvbXBvbmVudC5taXgiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2VudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb2VudHJ5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2VudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb2VudHJ5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYmlibGlvZW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9taXhlZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvbWl4ZWQiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiaWJsaW9jb21wb25lbnQubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9tc2V0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9taXhlZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiaWJsaW9taXhlZC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9taXhlZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb21peGVkLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9taXhlZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb21peGVkLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJ0aWNsZWluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFydGljbGVpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJ0aWNsZWluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXJ0aWNsZWluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJ0aWNsZWluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcnRpY2xlaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXJ0aWNsZWluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhcnRpY2xlaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb3NldC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvc2V0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImJpYmxpb2NvbXBvbmVudC5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb3NldC5lbGVtZW50IC0tPgogIDwhLS0gUmVsYXRpb246IFJlbGF0aW9uc2hpcCBvZiBlbGVtZW50cyBjb250YWluZWQgd2l0aGluIEJpYmxpb1NldCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvc2V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWxhdGlvbiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvc2V0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9zZXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9zZXQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9tc2V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9tc2V0Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYmlibGlvY29tcG9uZW50Lm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvbXNldCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvbXNldC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiaWJsaW9tc2V0LmVsZW1lbnQgLS0+CiAgPCEtLSBSZWxhdGlvbjogUmVsYXRpb25zaGlwIG9mIGVsZW1lbnRzIGNvbnRhaW5lZCB3aXRoaW4gQmlibGlvTVNldCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvbXNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVsYXRpb24iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb21zZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb21zZXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9tc2V0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvbWlzYy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvbWlzYyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb21pc2MuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmlibGlvbWlzYy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9taXNjLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvbWlzYy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmlibGlvbWlzYy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb21pc2MubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFN1YmplY3QsIEtleXdvcmQsIGFuZCBJVGVybVNldCBlbGVtZW50cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YmplY3RzZXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN1YmplY3RzZXQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic3ViamVjdCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJqZWN0c2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN1YmplY3RzZXQuZWxlbWVudCAtLT4KICA8IS0tIFNjaGVtZTogQ29udHJvbGxlZCB2b2NhYnVsYXJ5IGVtcGxveWVkIGluIFN1YmplY3RUZXJtcyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3ViamVjdHNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2NoZW1lIiB0eXBlPSJ4czpOTVRPS0VOIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJqZWN0c2V0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdWJqZWN0c2V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3ViamVjdHNldC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YmplY3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN1YmplY3QiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic3ViamVjdHRlcm0iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3ViamVjdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdWJqZWN0LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgV2VpZ2h0OiBSYW5raW5nIG9mIHRoaXMgZ3JvdXAgb2YgU3ViamVjdFRlcm1zIHJlbGF0aXZlCiAgICB0byBvdGhlcnMsIDAgaXMgbG93LCBubyBoaWdoZXN0IHZhbHVlIHNwZWNpZmllZAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJqZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3ZWlnaHQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YmplY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN1YmplY3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzdWJqZWN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3ViamVjdHRlcm0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN1YmplY3R0ZXJtIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YmplY3R0ZXJtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN1YmplY3R0ZXJtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YmplY3R0ZXJtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3ViamVjdHRlcm0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN1YmplY3R0ZXJtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3ViamVjdHRlcm0ubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHN1YmplY3RzZXQuY29udGVudC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImtleXdvcmRzZXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImtleXdvcmRzZXQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ia2V5d29yZCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXl3b3Jkc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGtleXdvcmRzZXQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5d29yZHNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleXdvcmRzZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGtleXdvcmRzZXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBrZXl3b3Jkc2V0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5d29yZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ia2V5d29yZCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXl3b3JkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGtleXdvcmQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5d29yZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleXdvcmQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGtleXdvcmQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBrZXl3b3JkLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBrZXl3b3Jkc2V0LmNvbnRlbnQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpdGVybXNldC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaXRlcm1zZXQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5kZXh0ZXJtIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Iml0ZXJtc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGl0ZXJtc2V0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Iml0ZXJtc2V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaXRlcm1zZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGl0ZXJtc2V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaXRlcm1zZXQubW9kdWxlIC0tPgogIDwhLS0gQmlibGlvZ3JhcGhpYyBpbmZvIGZvciAiYmxvY2tzIiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmxvY2tpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJibG9ja2luZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJibG9ja2luZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmxvY2tpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJsb2NraW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJsb2NraW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmxvY2tpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYmxvY2tpbmZvLm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBDb21wb3VuZCAoc2VjdGlvbi1pc2gpIGVsZW1lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gTWVzc2FnZSBzZXQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnc2V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dzZXQiIHN1YnN0aXR1dGlvbkdyb3VwPSJjb21wb3VuZC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtc2dlbnRyeSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlbXNnZW50cnkiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1zZ3NldC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dzZXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dzZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1zZ3NldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1zZ3NldC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2VudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dlbnRyeSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtc2ciLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ibXNnaW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibXNnZXhwbGFuIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ2VudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1zZ2VudHJ5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2VudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1zZ2VudHJ5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnZW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaW1wbGVtc2dlbnRyeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2ltcGxlbXNnZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtc2d0ZXh0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibXNnZXhwbGFuIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpbXBsZW1zZ2VudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNpbXBsZW1zZ2VudHJ5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpbXBsZW1zZ2VudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhdWRpZW5jZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsZXZlbCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcmlnaW4iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpbXBsZW1zZ2VudHJ5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzaW1wbGVtc2dlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNpbXBsZW1zZ2VudHJ5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2ciPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtc2dtYWluIi8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibXNnc3ViIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1zZ3JlbCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2cuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnbWFpbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibXNnbWFpbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1zZ3RleHQiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnbWFpbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dtYWluLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ21haW4uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dtYWluLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dtYWluLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnbWFpbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ3N1Yi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibXNnc3ViIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibXNndGV4dCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dzdWIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnc3ViLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ3N1Yi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ3N1Yi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnc3ViLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnc3ViLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNncmVsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dyZWwiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtc2d0ZXh0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ3JlbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dyZWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNncmVsLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNncmVsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dyZWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dyZWwubW9kdWxlIC0tPgogIDwhLS0gTXNnVGV4dCAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2luZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ2luZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibXNnbGV2ZWwiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1zZ29yaWciLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1zZ2F1ZCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2luZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2xldmVsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dsZXZlbCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnbGV2ZWwuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnbGV2ZWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnbGV2ZWwuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dsZXZlbC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnbGV2ZWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dsZXZlbC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ29yaWcucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ29yaWciPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ29yaWcuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnb3JpZy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dvcmlnLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnb3JpZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnb3JpZy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1zZ29yaWcubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dhdWQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ2F1ZCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ2F1ZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dhdWQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnYXVkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnYXVkLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dhdWQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dhdWQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dleHBsYW4ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ2V4cGxhbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dleHBsYW4uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnZXhwbGFuLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2V4cGxhbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ2V4cGxhbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnZXhwbGFuLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnZXhwbGFuLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBtc2dzZXQuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBRYW5kQVNldCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InFhbmRhc2V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJxYW5kYXNldCIgc3Vic3RpdHV0aW9uR3JvdXA9ImNvbXBvdW5kLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icWFuZGFzZXQubWl4Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InFhbmRhZGl2Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJxYW5kYWVudHJ5Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InFhbmRhc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHFhbmRhc2V0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InFhbmRhc2V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZWZhdWx0bGFiZWwiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJxYW5kYSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJudW1iZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibm9uZSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icWFuZGFzZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHFhbmRhc2V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcWFuZGFzZXQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxYW5kYWRpdi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icWFuZGFkaXYiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJxYW5kYXNldC5taXgiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icWFuZGFkaXYiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InFhbmRhZW50cnkiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icWFuZGFkaXYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcWFuZGFkaXYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icWFuZGFkaXYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJxYW5kYWRpdi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcWFuZGFkaXYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBxYW5kYWRpdi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InFhbmRhZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InFhbmRhZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJyZXZoaXN0b3J5Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJxdWVzdGlvbiIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYW5zd2VyIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InFhbmRhZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcWFuZGFlbnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxYW5kYWVudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icWFuZGFlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcWFuZGFlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHFhbmRhZW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxdWVzdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icXVlc3Rpb24iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImxhYmVsIi8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InFhbmRhc2V0Lm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJxdWVzdGlvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBxdWVzdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxdWVzdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InF1ZXN0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBxdWVzdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHF1ZXN0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYW5zd2VyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhbnN3ZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImxhYmVsIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icWFuZGFzZXQubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJxYW5kYWVudHJ5Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFuc3dlci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhbnN3ZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYW5zd2VyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYW5zd2VyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhbnN3ZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhbnN3ZXIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsYWJlbC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibGFiZWwiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0id29yZC5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBsYWJlbC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsYWJlbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBsYWJlbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGxhYmVsLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBxYW5kYXNldC5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIFByb2NlZHVyZSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb2NlZHVyZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHJvY2VkdXJlIiBzdWJzdGl0dXRpb25Hcm91cD0iY29tcG91bmQuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic3RlcCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9jZWR1cmUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJvY2VkdXJlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb2NlZHVyZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2NlZHVyZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJvY2VkdXJlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHJvY2VkdXJlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RlcC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3RlcCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6c2VxdWVuY2UgbWluT2NjdXJzPSIwIj4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN1YnN0ZXBzIi8+CiAgICAgICAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJzdGVwcyIvPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGVwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN0ZXAuZWxlbWVudCAtLT4KICA8IS0tIFBlcmZvcm1hbmNlOiBXaGV0aGVyIHRoZSBTdGVwIG11c3QgYmUgcGVyZm9ybWVkIC0tPgogIDwhLS0gbm90ICNSRVFVSVJFRCEgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0ZXAuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBlcmZvcm1hbmNlIiBkZWZhdWx0PSJyZXF1aXJlZCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im9wdGlvbmFsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlcXVpcmVkIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGVwLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdGVwLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3RlcC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YnN0ZXBzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdWJzdGVwcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzdGVwIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YnN0ZXBzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN1YnN0ZXBzLmVsZW1lbnQgLS0+CiAgPCEtLSBQZXJmb3JtYW5jZTogd2hldGhlciBlbnRpcmUgc2V0IG9mIHN1YnN0ZXBzIG11c3QgYmUgcGVyZm9ybWVkIC0tPgogIDwhLS0gbm90ICNSRVFVSVJFRCEgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YnN0ZXBzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwZXJmb3JtYW5jZSIgZGVmYXVsdD0icmVxdWlyZWQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHRpb25hbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXF1aXJlZCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3Vic3RlcHMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN1YnN0ZXBzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3Vic3RlcHMubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHByb2NlZHVyZS5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIFNpZGViYXIgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpZGViYXJpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzaWRlYmFyaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpZGViYXJpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNpZGViYXJpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpZGViYXJpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2lkZWJhcmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNpZGViYXJpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2lkZWJhcmluZm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaWRlYmFyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzaWRlYmFyIiBzdWJzdGl0dXRpb25Hcm91cD0iY29tcG91bmQuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNpZGViYXJpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaWRlYmFyLm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaWRlYmFyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNpZGViYXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2lkZWJhci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpZGViYXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNpZGViYXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzaWRlYmFyLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBzaWRlYmFyLmNvbnRlbnQubW9kZWwgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gUGFyYWdyYXBoLXJlbGF0ZWQgZWxlbWVudHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWJzdHJhY3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFic3RyYWN0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWJzdHJhY3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWJzdHJhY3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWJzdHJhY3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhYnN0cmFjdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWJzdHJhY3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhYnN0cmFjdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1dGhvcmJsdXJiLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhdXRob3JibHVyYiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1dGhvcmJsdXJiLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGF1dGhvcmJsdXJiLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1dGhvcmJsdXJiLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXV0aG9yYmx1cmIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGF1dGhvcmJsdXJiLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXV0aG9yYmx1cmIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwZXJzb25ibHVyYi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGVyc29uYmx1cmIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwZXJzb25ibHVyYi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwZXJzb25ibHVyYi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwZXJzb25ibHVyYi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBlcnNvbmJsdXJiLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwZXJzb25ibHVyYi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBlcnNvbmJsdXJiLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmxvY2txdW90ZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmxvY2txdW90ZSIgc3Vic3RpdHV0aW9uR3JvdXA9ImluZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJhdHRyaWJ1dGlvbiIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJsb2NrcXVvdGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmxvY2txdW90ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJibG9ja3F1b3RlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmxvY2txdW90ZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmxvY2txdW90ZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJsb2NrcXVvdGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdHRyaWJ1dGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXR0cmlidXRpb24iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdHRyaWJ1dGlvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhdHRyaWJ1dGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdHRyaWJ1dGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF0dHJpYnV0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhdHRyaWJ1dGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGF0dHJpYnV0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYnJpZGdlaGVhZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYnJpZGdlaGVhZCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0aXRsZS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJicmlkZ2VoZWFkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJyaWRnZWhlYWQuZWxlbWVudCAtLT4KICA8IS0tCiAgICBSZW5kZXJhczogSW5kaWNhdGVzIHRoZSBmb3JtYXQgaW4gd2hpY2ggdGhlIEJyaWRnZUhlYWQKICAgIHNob3VsZCBhcHBlYXIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYnJpZGdlaGVhZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVuZGVyYXMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYnJpZGdlaGVhZC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYnJpZGdlaGVhZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJyaWRnZWhlYWQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZW1hcmsucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlbWFyayI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlbWFyay5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZW1hcmsuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVtYXJrLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVtYXJrLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZW1hcmsuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZW1hcmsubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcGlncmFwaC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXBpZ3JhcGgiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImF0dHJpYnV0aW9uIi8+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibGl0ZXJhbGxheW91dCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcGlncmFwaC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlcGlncmFwaC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcGlncmFwaC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVwaWdyYXBoLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlcGlncmFwaC5hdHRsaXN0IC0tPgogIDwhLS0gQXR0cmlidXRpb24gKGRlZmluZWQgYWJvdmUpIC0tPgogIDwhLS0gZW5kIG9mIGVwaWdyYXBoLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZm9vdG5vdGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZvb3Rub3RlIiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZm9vdG5vdGUubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZvb3Rub3RlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZvb3Rub3RlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvb3Rub3RlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmb290bm90ZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZm9vdG5vdGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmb290bm90ZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImhpZ2hsaWdodHMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImhpZ2hsaWdodHMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaGlnaGxpZ2h0cy5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaGlnaGxpZ2h0cy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBoaWdobGlnaHRzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImhpZ2hsaWdodHMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJoaWdobGlnaHRzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBoaWdobGlnaHRzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaGlnaGxpZ2h0cy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvcm1hbHBhcmEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZvcm1hbHBhcmEiIHN1YnN0aXR1dGlvbkdyb3VwPSJwYXJhLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZm9ybWFscGFyYS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmb3JtYWxwYXJhLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvcm1hbHBhcmEuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmb3JtYWxwYXJhLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmb3JtYWxwYXJhLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZm9ybWFscGFyYS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcmEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBhcmEiIHN1YnN0aXR1dGlvbkdyb3VwPSJwYXJhLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICAgIDx4czpncm91cCByZWY9InBhcmEubWl4Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJhLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBhcmEuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFyYS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcmEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBhcmEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwYXJhLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2ltcGFyYS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2ltcGFyYSIgc3Vic3RpdHV0aW9uR3JvdXA9InBhcmEuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaW1wYXJhLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNpbXBhcmEuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2ltcGFyYS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpbXBhcmEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNpbXBhcmEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzaW1wYXJhLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWRtb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNhdXRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJhZG1vbi5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYWRtb24ubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNhdXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY2F1dGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYXV0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRtb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNhdXRpb24uYXR0bGlzdCAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbXBvcnRhbnQiIHN1YnN0aXR1dGlvbkdyb3VwPSJhZG1vbi5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYWRtb24ubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImltcG9ydGFudC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbXBvcnRhbnQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW1wb3J0YW50LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRtb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGltcG9ydGFudC5hdHRsaXN0IC0tPgogIDx4czplbGVtZW50IG5hbWU9Im5vdGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJhZG1vbi5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYWRtb24ubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im5vdGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygbm90ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJub3RlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRtb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG5vdGUuYXR0bGlzdCAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0aXAiIHN1YnN0aXR1dGlvbkdyb3VwPSJhZG1vbi5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYWRtb24ubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRpcC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0aXAuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGlwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRtb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRpcC5hdHRsaXN0IC0tPgogIDx4czplbGVtZW50IG5hbWU9Indhcm5pbmciIHN1YnN0aXR1dGlvbkdyb3VwPSJhZG1vbi5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYWRtb24ubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Indhcm5pbmcuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygd2FybmluZy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ3YXJuaW5nLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRtb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHdhcm5pbmcuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhZG1vbi5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gTGlzdHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEdsb3NzTGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzbGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ2xvc3NsaXN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibGlzdC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJnbG9zc2VudHJ5Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzbGlzdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBnbG9zc2xpc3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NsaXN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NsaXN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBnbG9zc2xpc3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBnbG9zc2xpc3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2VudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJnbG9zc2VudHJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZ2xvc3N0ZXJtIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImFjcm9ueW0iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYWJicmV2Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJldmhpc3RvcnkiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnbG9zc3NlZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ2xvc3NkZWYiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NlbnRyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBnbG9zc2VudHJ5LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU29ydEFzOiBTdHJpbmcgYnkgd2hpY2ggdGhlIEdsb3NzRW50cnkgaXMgdG8gYmUgc29ydGVkCiAgICAoYWxwaGFiZXRpemVkKSBpbiBsaWV1IG9mIGl0cyBwcm9wZXIgY29udGVudAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2VudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzb3J0YXMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3NzZW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBnbG9zc2VudHJ5Lm1vZHVsZSAtLT4KICA8IS0tIEdsb3NzVGVybSAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzZGVmLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJnbG9zc2RlZiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ2xvc3NkZWYubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJnbG9zc3NlZWFsc28iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NkZWYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ2xvc3NkZWYuZWxlbWVudCAtLT4KICA8IS0tIFN1YmplY3Q6IExpc3Qgb2Ygc3ViamVjdHM7IGtleXdvcmRzIGZvciB0aGUgZGVmaW5pdGlvbiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NkZWYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN1YmplY3QiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzZGVmLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBnbG9zc2RlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzZGVmLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NzZWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdsb3Nzc2VlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NzZWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ2xvc3NzZWUuZWxlbWVudCAtLT4KICA8IS0tCiAgICBPdGhlclRlcm06IFJlZmVyZW5jZSB0byB0aGUgR2xvc3NFbnRyeSB3aG9zZSBHbG9zc1Rlcm0KICAgIHNob3VsZCBiZSBkaXNwbGF5ZWQgYXQgdGhlIHBvaW50IG9mIHRoZSBHbG9zc1NlZQogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc3NlZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3RoZXJ0ZXJtIiB0eXBlPSJ4czpJRFJFRiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NzZWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3Nzc2VlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ2xvc3NzZWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc3NlZWFsc28ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdsb3Nzc2VlYWxzbyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3Nzc2VlYWxzby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBnbG9zc3NlZWFsc28uZWxlbWVudCAtLT4KICA8IS0tCiAgICBPdGhlclRlcm06IFJlZmVyZW5jZSB0byB0aGUgR2xvc3NFbnRyeSB3aG9zZSBHbG9zc1Rlcm0KICAgIHNob3VsZCBiZSBkaXNwbGF5ZWQgYXQgdGhlIHBvaW50IG9mIHRoZSBHbG9zc1NlZUFsc28KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NzZWVhbHNvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcnRlcm0iIHR5cGU9InhzOklEUkVGIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc3NlZWFsc28ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3Nzc2VlYWxzby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdsb3Nzc2VlYWxzby5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgZ2xvc3NlbnRyeS5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIEl0ZW1pemVkTGlzdCBhbmQgT3JkZXJlZExpc3QgLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Iml0ZW1pemVkbGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaXRlbWl6ZWRsaXN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibGlzdC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imxpc3RwcmVhbWJsZS5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJsaXN0aXRlbSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpdGVtaXplZGxpc3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaXRlbWl6ZWRsaXN0LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU3BhY2luZzogV2hldGhlciB0aGUgdmVydGljYWwgc3BhY2UgaW4gdGhlIGxpc3Qgc2hvdWxkIGJlCiAgICBjb21wcmVzc2VkCiAgLS0+CiAgPCEtLQogICAgTWFyazogS2V5d29yZCwgZS5nLiwgYnVsbGV0LCBkYXNoLCBjaGVja2JveCwgbm9uZTsKICAgIGxpc3Qgb2Yga2V5d29yZHMgYW5kIGRlZmF1bHRzIGFyZSBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYwogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpdGVtaXplZGxpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNwYWNpbmciPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JtYWwiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29tcGFjdCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWFyay5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Iml0ZW1pemVkbGlzdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaXRlbWl6ZWRsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaXRlbWl6ZWRsaXN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3JkZXJlZGxpc3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im9yZGVyZWRsaXN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibGlzdC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imxpc3RwcmVhbWJsZS5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJsaXN0aXRlbSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvcmRlcmVkbGlzdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvcmRlcmVkbGlzdC5lbGVtZW50IC0tPgogIDwhLS0KICAgIE51bWVyYXRpb246IFN0eWxlIG9mIExpc3RJdGVtIG51bWJlcmVkOyBkZWZhdWx0IGlzIGV4cGVjdGVkCiAgICB0byBiZSBBcmFiaWMKICAtLT4KICA8IS0tCiAgICBJbmhlcml0TnVtOiBTcGVjaWZpZXMgZm9yIGEgbmVzdGVkIGxpc3QgdGhhdCB0aGUgbnVtYmVyaW5nCiAgICBvZiBMaXN0SXRlbXMgc2hvdWxkIGluY2x1ZGUgdGhlIG51bWJlciBvZiB0aGUgaXRlbQogICAgd2l0aGluIHdoaWNoIHRoZXkgYXJlIG5lc3RlZCAoZS5nLiwgMWEgYW5kIDFiIHdpdGhpbiAxLAogICAgcmF0aGVyIHRoYW4gYSBhbmQgYikKICAtLT4KICA8IS0tCiAgICBDb250aW51YXRpb246IFdoZXJlIGxpc3QgbnVtYmVyaW5nIGJlZ2lucyBhZnJlc2ggKFJlc3RhcnRzLAogICAgdGhlIGRlZmF1bHQpIG9yIGNvbnRpbnVlcyB0aGF0IG9mIHRoZSBpbW1lZGlhdGVseSBwcmVjZWRpbmcKICAgIGxpc3QgKENvbnRpbnVlcykKICAtLT4KICA8IS0tCiAgICBTcGFjaW5nOiBXaGV0aGVyIHRoZSB2ZXJ0aWNhbCBzcGFjZSBpbiB0aGUgbGlzdCBzaG91bGQgYmUKICAgIGNvbXByZXNzZWQKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3JkZXJlZGxpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im51bWVyYXRpb24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhcmFiaWMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idXBwZXJhbHBoYSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsb3dlcmFscGhhIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InVwcGVycm9tYW4iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibG93ZXJyb21hbiIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbmhlcml0bnVtIiBkZWZhdWx0PSJpZ25vcmUiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpbmhlcml0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imlnbm9yZSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250aW51YXRpb24iIGRlZmF1bHQ9InJlc3RhcnRzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29udGludWVzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlc3RhcnRzIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNwYWNpbmciPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JtYWwiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29tcGFjdCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3JkZXJlZGxpc3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG9yZGVyZWRsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb3JkZXJlZGxpc3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaXN0aXRlbS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibGlzdGl0ZW0iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaXN0aXRlbS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBsaXN0aXRlbS5lbGVtZW50IC0tPgogIDwhLS0KICAgIE92ZXJyaWRlOiBJbmRpY2F0ZXMgdGhlIG1hcmsgdG8gYmUgdXNlZCBmb3IgdGhpcyBMaXN0SXRlbQogICAgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBtYXJrIG9yIHRoZSBtYXJrIHNwZWNpZmllZCBieQogICAgdGhlIE1hcmsgYXR0cmlidXRlIG9uIHRoZSBlbmNsb3NpbmcgSXRlbWl6ZWRMaXN0CiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imxpc3RpdGVtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdmVycmlkZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlzdGl0ZW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxpc3RpdGVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGlzdGl0ZW0ubW9kdWxlIC0tPgogIDwhLS0gU2VnbWVudGVkTGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VnbWVudGVkbGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VnbWVudGVkbGlzdCIgc3Vic3RpdHV0aW9uR3JvdXA9Imxpc3QuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlZ3RpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VnbGlzdGl0ZW0iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VnbWVudGVkbGlzdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWdtZW50ZWRsaXN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZ21lbnRlZGxpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWdtZW50ZWRsaXN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWdtZW50ZWRsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VnbWVudGVkbGlzdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZ3RpdGxlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWd0aXRsZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0aXRsZS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWd0aXRsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWd0aXRsZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWd0aXRsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZ3RpdGxlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWd0aXRsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlZ3RpdGxlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VnbGlzdGl0ZW0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlZ2xpc3RpdGVtIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlZyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWdsaXN0aXRlbS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWdsaXN0aXRlbS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWdsaXN0aXRlbS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZ2xpc3RpdGVtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWdsaXN0aXRlbS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlZ2xpc3RpdGVtLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VnLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWciPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWcuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VnLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VnLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VnLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBzZWdtZW50ZWRsaXN0LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gU2ltcGxlTGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2ltcGxlbGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2ltcGxlbGlzdCIgc3Vic3RpdHV0aW9uR3JvdXA9Imxpc3QuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVtYmVyIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpbXBsZWxpc3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlbGlzdC5lbGVtZW50IC0tPgogIDwhLS0gQ29sdW1uczogVGhlIG51bWJlciBvZiBjb2x1bW5zIHRoZSBhcnJheSBzaG91bGQgY29udGFpbiAtLT4KICA8IS0tCiAgICBUeXBlOiBIb3cgdGhlIE1lbWJlcnMgb2YgdGhlIFNpbXBsZUxpc3Qgc2hvdWxkIGJlCiAgICBmb3JtYXR0ZWQ6IElubGluZSAobWVtYmVycyBzZXBhcmF0ZWQgd2l0aCBjb21tYXMgZXRjLgogICAgaW5saW5lKSwgVmVydCAodG9wIHRvIGJvdHRvbSBpbiBuIENvbHVtbnMpLCBvciBIb3JpeiAoaW4KICAgIHRoZSBkaXJlY3Rpb24gb2YgdGV4dCBmbG93KSBpbiBuIENvbHVtbnMuICBJZiBDb2x1bW4KICAgIGlzIDEgb3IgaW1wbGllZCwgVHlwZT1WZXJ0IGFuZCBUeXBlPUhvcml6IGdpdmUgdGhlIHNhbWUKICAgIHJlc3VsdHMuCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpbXBsZWxpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHVtbnMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIgZGVmYXVsdD0idmVydCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImlubGluZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ2ZXJ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imhvcml6Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaW1wbGVsaXN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzaW1wbGVsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlbGlzdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lbWJlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWVtYmVyIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWVtYmVyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1lbWJlci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZW1iZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZW1iZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1lbWJlci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1lbWJlci5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlbGlzdC5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIFZhcmlhYmxlTGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZhcmlhYmxlbGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idmFyaWFibGVsaXN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibGlzdC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imxpc3RwcmVhbWJsZS5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ2YXJsaXN0ZW50cnkiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmFyaWFibGVsaXN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZhcmlhYmxlbGlzdC5lbGVtZW50IC0tPgogIDwhLS0KICAgIFRlcm1MZW5ndGg6IExlbmd0aCBiZXlvbmQgd2hpY2ggdGhlIHByZXNlbnRhdGlvbiBlbmdpbmUKICAgIG1heSBjb25zaWRlciB0aGUgVGVybSB0b28gbG9uZyBhbmQgc2VsZWN0IGFuIGFsdGVybmF0ZQogICAgcHJlc2VudGF0aW9uIG9mIHRoZSBUZXJtIGFuZCwgb3IsIGl0cyBhc3NvY2lhdGVkIExpc3RJdGVtLgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2YXJpYWJsZWxpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRlcm1sZW5ndGgiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZhcmlhYmxlbGlzdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdmFyaWFibGVsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdmFyaWFibGVsaXN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmFybGlzdGVudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2YXJsaXN0ZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGVybSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdGl0ZW0iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmFybGlzdGVudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZhcmxpc3RlbnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2YXJsaXN0ZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2YXJsaXN0ZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZhcmxpc3RlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZhcmxpc3RlbnRyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRlcm0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRlcm0iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ZXJtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRlcm0uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGVybS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRlcm0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRlcm0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0ZXJtLm1vZHVsZSAtLT4KICA8IS0tIExpc3RJdGVtIChkZWZpbmVkIGFib3ZlKSAtLT4KICA8IS0tIGVuZCBvZiB2YXJpYWJsZWxpc3QuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBDYWxsb3V0TGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYWxsb3V0bGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2FsbG91dGxpc3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJsaXN0LmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjYWxsb3V0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNhbGxvdXRsaXN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNhbGxvdXRsaXN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNhbGxvdXRsaXN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2FsbG91dGxpc3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNhbGxvdXRsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2FsbG91dGxpc3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYWxsb3V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjYWxsb3V0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2FsbG91dC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjYWxsb3V0LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgQXJlYVJlZnM6IElEcyBvZiBvbmUgb3IgbW9yZSBBcmVhcyBvciBBcmVhU2V0cyBkZXNjcmliZWQKICAgIGJ5IHRoaXMgQ2FsbG91dAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYWxsb3V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhcmVhcmVmcyIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6SURSRUZTIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjYWxsb3V0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjYWxsb3V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2FsbG91dC5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgY2FsbG91dGxpc3QuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gT2JqZWN0cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEV4YW1wbGVzIGV0Yy4gLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImV4YW1wbGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImV4YW1wbGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJmb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImV4YW1wbGUubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImV4YW1wbGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZXhhbXBsZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJleGFtcGxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ3aWR0aC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImV4YW1wbGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGV4YW1wbGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBleGFtcGxlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5mb3JtYWxleGFtcGxlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmZvcm1hbGV4YW1wbGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImV4YW1wbGUubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZm9ybWFsZXhhbXBsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGV4YW1wbGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5mb3JtYWxleGFtcGxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0id2lkdGguYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmZvcm1hbGV4YW1wbGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGluZm9ybWFsZXhhbXBsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluZm9ybWFsZXhhbXBsZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb2dyYW1saXN0aW5nY28ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InByb2dyYW1saXN0aW5nY28iIHN1YnN0aXR1dGlvbkdyb3VwPSJsaW5lc3BlY2lmaWMuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmVhc3BlYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icHJvZ3JhbWxpc3RpbmciLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNhbGxvdXRsaXN0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2dyYW1saXN0aW5nY28uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJvZ3JhbWxpc3Rpbmdjby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9ncmFtbGlzdGluZ2NvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvZ3JhbWxpc3Rpbmdjby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJvZ3JhbWxpc3Rpbmdjby5hdHRsaXN0IC0tPgogIDwhLS0gQ2FsbG91dExpc3QgKGRlZmluZWQgYWJvdmUgaW4gTGlzdHMpIC0tPgogIDwhLS0gZW5kIG9mIGluZm9ybWFsZXhhbXBsZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFyZWFzcGVjLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcmVhc3BlYyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYXJlYSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYXJlYXNldCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJlYXNwZWMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXJlYXNwZWMuZWxlbWVudCAtLT4KICA8IS0tCiAgICBVbml0czogZ2xvYmFsIHVuaXQgb2YgbWVhc3VyZSBpbiB3aGljaCBjb29yZGluYXRlcyBpbgogICAgdGhpcyBzcGVjIGFyZSBleHByZXNzZWQ6CiAgICAKICAgIC0gQ0FMU1BhaXIgIngxLHkxIHgyLHkyIjogbG93ZXItbGVmdCBhbmQgdXBwZXItcmlnaHQKICAgIGNvb3JkaW5hdGVzIGluIGEgcmVjdGFuZ2xlIGRlc2NyaWJpbmcgcmVwcm8gYXJlYSBpbiB3aGljaAogICAgZ3JhcGhpYyBpcyBwbGFjZWQsIHdoZXJlIFggYW5kIFkgZGltZW5zaW9ucyBhcmUgZWFjaCBzb21lCiAgICBudW1iZXIgMC4uMTAwMDAgKHRha2VuIGZyb20gQ0FMUyBncmFwaGljIGF0dHJpYnV0ZXMpCiAgICAKICAgIC0gTGluZUNvbHVtbiAibGluZSBjb2x1bW4iOiBsaW5lIG51bWJlciBhbmQgY29sdW1uIG51bWJlcgogICAgYXQgd2hpY2ggdG8gc3RhcnQgY2FsbG91dCB0ZXh0IGluICJsaW5lc3BlY2lmaWMiIGNvbnRlbnQKICAgIAogICAgLSBMaW5lUmFuZ2UgInN0YXJ0bGluZSBlbmRsaW5lIjogd2hvbGUgbGluZXMgZnJvbSBzdGFydGxpbmUKICAgIHRvIGVuZGxpbmUgaW4gImxpbmVzcGVjaWZpYyIgY29udGVudAogICAgCiAgICAtIExpbmVDb2x1bW5QYWlyICJsaW5lMSBjb2wxIGxpbmUyIGNvbDIiOiBzdGFydGluZyBhbmQgZW5kaW5nCiAgICBwb2ludHMgb2YgYXJlYSBpbiAibGluZXNwZWNpZmljIiBjb250ZW50IHRoYXQgc3RhcnRzIGF0CiAgICBmaXJzdCBwb3NpdGlvbiBhbmQgZW5kcyBhdCBzZWNvbmQgcG9zaXRpb24gKGluY2x1ZGluZyB0aGUKICAgIGJlZ2lubmluZ3Mgb2YgYW55IGludGVydmVuaW5nIGxpbmVzKQogICAgCiAgICAtIE90aGVyOiBkaXJlY3RpdmUgdG8gbG9vayBhdCB2YWx1ZSBvZiBPdGhlclVuaXRzIGF0dHJpYnV0ZQogICAgdG8gZ2V0IGltcGxlbWVudGF0aW9uLXNwZWNpZmljIGtleXdvcmQKICAgIAogICAgVGhlIGRlZmF1bHQgaXMgaW1wbGVtZW50YXRpb24tc3BlY2lmaWM7IHVzdWFsbHkgZGVwZW5kZW50IG9uCiAgICB0aGUgcGFyZW50IGVsZW1lbnQgKEdyYXBoaWNDTyBnZXRzIENBTFNQYWlyLCBQcm9ncmFtTGlzdGluZ0NPCiAgICBhbmQgU2NyZWVuQ08gZ2V0IExpbmVDb2x1bW4pCiAgLS0+CiAgPCEtLSBPdGhlclVuaXRzOiBVc2VyLWRlZmluZWQgdW5pdHMgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFyZWFzcGVjLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1bml0cyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNhbHNwYWlyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVjb2x1bW4iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGluZXJhbmdlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVjb2x1bW5wYWlyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im90aGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVydW5pdHMiIHR5cGU9InhzOk5NVE9LRU4iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZWFzcGVjLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhcmVhc3BlYy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFyZWFzcGVjLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJlYS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXJlYSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZWEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXJlYS5lbGVtZW50IC0tPgogIDwhLS0gYnVnIG51bWJlci9zeW1ib2wgb3ZlcnJpZGUgb3IgaW5pdGlhbGl6YXRpb24gLS0+CiAgPCEtLSB0byBhbnkgcmVsYXRlZCBpbmZvcm1hdGlvbiAtLT4KICA8IS0tCiAgICBVbml0czogdW5pdCBvZiBtZWFzdXJlIGluIHdoaWNoIGNvb3JkaW5hdGVzIGluIHRoaXMKICAgIGFyZWEgYXJlIGV4cHJlc3NlZDsgaW5oZXJpdHMgZnJvbSBBcmVhU2V0IGFuZCBBcmVhU3BlYwogIC0tPgogIDwhLS0gT3RoZXJVbml0czogVXNlci1kZWZpbmVkIHVuaXRzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcmVhLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kcy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idW5pdHMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjYWxzcGFpciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lY29sdW1uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVyYW5nZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lY29sdW1ucGFpciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcnVuaXRzIiB0eXBlPSJ4czpOTVRPS0VOIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvb3JkcyIgdXNlPSJyZXF1aXJlZCIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaWRyZXEuY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJlYS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXJlYS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFyZWEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcmVhc2V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcmVhc2V0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFyZWEiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJlYXNldC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhcmVhc2V0LmVsZW1lbnQgLS0+CiAgPCEtLSBidWcgbnVtYmVyL3N5bWJvbCBvdmVycmlkZSBvciBpbml0aWFsaXphdGlvbiAtLT4KICA8IS0tCiAgICBVbml0czogdW5pdCBvZiBtZWFzdXJlIGluIHdoaWNoIGNvb3JkaW5hdGVzIGluIHRoaXMKICAgIGFyZWEgYXJlIGV4cHJlc3NlZDsgaW5oZXJpdHMgZnJvbSBBcmVhU3BlYwogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcmVhc2V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVuaXRzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2Fsc3BhaXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGluZWNvbHVtbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lcmFuZ2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGluZWNvbHVtbnBhaXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3RoZXJ1bml0cyIgdHlwZT0ieHM6Tk1UT0tFTiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb29yZHMiIHVzZT0icmVxdWlyZWQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlkcmVxLmNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZWFzZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFyZWFzZXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhcmVhc2V0Lm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBhcmVhc3BlYy5jb250ZW50Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvZ3JhbWxpc3Rpbmcucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InByb2dyYW1saXN0aW5nIiBzdWJzdGl0dXRpb25Hcm91cD0ibGluZXNwZWNpZmljLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY28iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvcmVmIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lYW5ub3RhdGlvbiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGV4dG9iamVjdCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvZ3JhbWxpc3RpbmcuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJvZ3JhbWxpc3RpbmcuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvZ3JhbWxpc3RpbmcuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ3aWR0aC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmVzcGVjaWZpYy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2dyYW1saXN0aW5nLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwcm9ncmFtbGlzdGluZy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByb2dyYW1saXN0aW5nLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGl0ZXJhbGxheW91dC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibGl0ZXJhbGxheW91dCIgc3Vic3RpdHV0aW9uR3JvdXA9ImxpbmVzcGVjaWZpYy5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb3JlZiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGV4dG9iamVjdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZWFubm90YXRpb24iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpdGVyYWxsYXlvdXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbGl0ZXJhbGxheW91dC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaXRlcmFsbGF5b3V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0id2lkdGguYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lc3BlY2lmaWMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIiBkZWZhdWx0PSJub3JtYWwiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJtb25vc3BhY2VkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vcm1hbCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGl0ZXJhbGxheW91dC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbGl0ZXJhbGxheW91dC5hdHRsaXN0IC0tPgogIDwhLS0gTGluZUFubm90YXRpb24gKGRlZmluZWQgaW4gdGhlIElubGluZXMgc2VjdGlvbiwgYmVsb3cpIC0tPgogIDwhLS0gZW5kIG9mIGxpdGVyYWxsYXlvdXQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzY3JlZW5jby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2NyZWVuY28iIHN1YnN0aXR1dGlvbkdyb3VwPSJsaW5lc3BlY2lmaWMuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmVhc3BlYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic2NyZWVuIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjYWxsb3V0bGlzdCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzY3JlZW5jby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzY3JlZW5jby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzY3JlZW5jby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNjcmVlbmNvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzY3JlZW5jby5hdHRsaXN0IC0tPgogIDwhLS0gQXJlYVNwZWMgKGRlZmluZWQgYWJvdmUpIC0tPgogIDwhLS0gQ2FsbG91dExpc3QgKGRlZmluZWQgYWJvdmUgaW4gTGlzdHMpIC0tPgogIDwhLS0gZW5kIG9mIHNjcmVlbmNvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2NyZWVuLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzY3JlZW4iIHN1YnN0aXR1dGlvbkdyb3VwPSJsaW5lc3BlY2lmaWMuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29yZWYiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVhbm5vdGF0aW9uIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzY3JlZW4uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNjcmVlbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9IndpZHRoLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZXNwZWNpZmljLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2NyZWVuLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzY3JlZW4uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzY3JlZW4ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzY3JlZW5zaG90LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzY3JlZW5zaG90IiBzdWJzdGl0dXRpb25Hcm91cD0ibGluZXNwZWNpZmljLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzY3JlZW5pbmZvIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JhcGhpYyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJncmFwaGljY28iLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibWVkaWFvYmplY3QiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibWVkaWFvYmplY3RjbyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzY3JlZW5zaG90LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNjcmVlbnNob3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2NyZWVuc2hvdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNjcmVlbnNob3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNjcmVlbnNob3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzY3JlZW5zaG90Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2NyZWVuaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2NyZWVuaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNjcmVlbmluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzY3JlZW5pbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2NyZWVuaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNjcmVlbmluZm8ubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHNjcmVlbnNob3QuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBGaWd1cmVzIGV0Yy4gLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmaWd1cmUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZpZ3VyZSIgc3Vic3RpdHV0aW9uR3JvdXA9ImZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czpncm91cCByZWY9ImZpZ3VyZS5taXgiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZpZ3VyZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmaWd1cmUuZWxlbWVudCAtLT4KICA8IS0tCiAgICBGbG9hdDogV2hldGhlciB0aGUgRmlndXJlIGlzIHN1cHBvc2VkIHRvIGJlIHJlbmRlcmVkCiAgICB3aGVyZSBjb252ZW5pZW50ICh5ZXMgKDEpIHZhbHVlKSBvciBhdCB0aGUgcGxhY2UgaXQgb2NjdXJzCiAgICBpbiB0aGUgdGV4dCAobm8gKDApIHZhbHVlLCB0aGUgZGVmYXVsdCkKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmlndXJlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmbG9hdCIgZGVmYXVsdD0iMCIgdHlwZT0ieWVzb3Juby5hdHR2YWxzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBnd2lkZSIgdHlwZT0ieWVzb3Juby5hdHR2YWxzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZpZ3VyZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZmlndXJlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZmlndXJlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5mb3JtYWxmaWd1cmUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImluZm9ybWFsZmlndXJlIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5mb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmdyb3VwIHJlZj0iZmlndXJlLm1peCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5mb3JtYWxmaWd1cmUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWxmaWd1cmUuZWxlbWVudCAtLT4KICA8IS0tCiAgICBGbG9hdDogV2hldGhlciB0aGUgRmlndXJlIGlzIHN1cHBvc2VkIHRvIGJlIHJlbmRlcmVkCiAgICB3aGVyZSBjb252ZW5pZW50ICh5ZXMgKDEpIHZhbHVlKSBvciBhdCB0aGUgcGxhY2UgaXQgb2NjdXJzCiAgICBpbiB0aGUgdGV4dCAobm8gKDApIHZhbHVlLCB0aGUgZGVmYXVsdCkKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5mb3JtYWxmaWd1cmUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZsb2F0IiBkZWZhdWx0PSIwIiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGd3aWRlIiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5mb3JtYWxmaWd1cmUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGluZm9ybWFsZmlndXJlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWxmaWd1cmUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJncmFwaGljY28ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImdyYXBoaWNjbyIgc3Vic3RpdHV0aW9uR3JvdXA9ImluZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYXJlYXNwZWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNhbGxvdXRsaXN0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImdyYXBoaWNjby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBncmFwaGljY28uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3JhcGhpY2NvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3JhcGhpY2NvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBncmFwaGljY28uYXR0bGlzdCAtLT4KICA8IS0tIEFyZWFTcGVjIChkZWZpbmVkIGFib3ZlIGluIEV4YW1wbGVzKSAtLT4KICA8IS0tIENhbGxvdXRMaXN0IChkZWZpbmVkIGFib3ZlIGluIExpc3RzKSAtLT4KICA8IS0tIGVuZCBvZiBncmFwaGljY28ubW9kdWxlIC0tPgogIDwhLS0KICAgIEdyYXBoaWNhbCBkYXRhIGNhbiBiZSB0aGUgY29udGVudCBvZiBHcmFwaGljLCBvciB5b3UgY2FuIHJlZmVyZW5jZQogICAgYW4gZXh0ZXJuYWwgZmlsZSBlaXRoZXIgYXMgYW4gZW50aXR5IChFbnRpdHJlZikgb3IgYSBmaWxlbmFtZQogICAgKEZpbGVyZWYpLgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJncmFwaGljLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJncmFwaGljIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5mb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJncmFwaGljLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdyYXBoaWMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3JhcGhpYy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImdyYXBoaWNzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3JhcGhpYy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ3JhcGhpYy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdyYXBoaWMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmxpbmVncmFwaGljLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmxpbmVncmFwaGljIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5saW5lb2JqLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmxpbmVncmFwaGljLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGlubGluZWdyYXBoaWMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5saW5lZ3JhcGhpYy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImdyYXBoaWNzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5saW5lZ3JhcGhpYy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW5saW5lZ3JhcGhpYy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGlubGluZWdyYXBoaWMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZWRpYW9iamVjdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWVkaWFvYmplY3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ib2JqZWN0aW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1lZGlhb2JqZWN0Lm1peCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJjYXB0aW9uIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1lZGlhb2JqZWN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1lZGlhb2JqZWN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lZGlhb2JqZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWVkaWFvYmplY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1lZGlhb2JqZWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWVkaWFvYmplY3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmxpbmVtZWRpYW9iamVjdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5saW5lbWVkaWFvYmplY3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmxpbmVvYmouY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ib2JqZWN0aW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1lZGlhb2JqZWN0Lm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmxpbmVtZWRpYW9iamVjdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbmxpbmVtZWRpYW9iamVjdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmxpbmVtZWRpYW9iamVjdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlubGluZW1lZGlhb2JqZWN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmxpbmVtZWRpYW9iamVjdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGlubGluZW1lZGlhb2JqZWN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmlkZW9vYmplY3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InZpZGVvb2JqZWN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibWVkaWFvYmplY3QubWl4Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJvYmplY3RpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ2aWRlb2RhdGEiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmlkZW9vYmplY3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdmlkZW9vYmplY3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmlkZW9vYmplY3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2aWRlb29iamVjdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdmlkZW9vYmplY3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB2aWRlb29iamVjdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1ZGlvb2JqZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhdWRpb29iamVjdCIgc3Vic3RpdHV0aW9uR3JvdXA9Im1lZGlhb2JqZWN0Lm1peCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ib2JqZWN0aW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYXVkaW9kYXRhIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1ZGlvb2JqZWN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGF1ZGlvb2JqZWN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1ZGlvb2JqZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXVkaW9vYmplY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGF1ZGlvb2JqZWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXVkaW9vYmplY3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbWFnZW9iamVjdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW1hZ2VvYmplY3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJtZWRpYW9iamVjdC5taXgiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im9iamVjdGluZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImltYWdlZGF0YSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbWFnZW9iamVjdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbWFnZW9iamVjdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbWFnZW9iamVjdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImltYWdlb2JqZWN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbWFnZW9iamVjdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGltYWdlb2JqZWN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGV4dG9iamVjdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGV4dG9iamVjdCIgc3Vic3RpdHV0aW9uR3JvdXA9Im1lZGlhb2JqZWN0Lm1peCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ib2JqZWN0aW5mbyIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBocmFzZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZXh0ZGF0YSIvPgogICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRleHRvYmplY3QubWl4Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRleHRvYmplY3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGV4dG9iamVjdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0ZXh0b2JqZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGV4dG9iamVjdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdGV4dG9iamVjdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRleHRvYmplY3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvYmplY3RpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvYmplY3RpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib2JqZWN0aW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvYmplY3RpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9iamVjdGluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvYmplY3RpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvYmplY3RpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb2JqZWN0aW5mby5tb2R1bGUgLS0+CiAgPCEtLQogICAgRW50aXR5UmVmOiBOYW1lIG9mIGFuIGV4dGVybmFsIGVudGl0eSBjb250YWluaW5nIHRoZSBjb250ZW50CiAgICBvZiB0aGUgb2JqZWN0IGRhdGEKICAtLT4KICA8IS0tCiAgICBGaWxlUmVmOiBGaWxlbmFtZSwgcXVhbGlmaWVkIGJ5IGEgcGF0aG5hbWUgaWYgZGVzaXJlZCwKICAgIGRlc2lnbmF0aW5nIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGNvbnRlbnQgb2YgdGhlIG9iamVjdCBkYXRhCiAgLS0+CiAgPCEtLSBGb3JtYXQ6IE5vdGF0aW9uIG9mIHRoZSBlbGVtZW50IGNvbnRlbnQsIGlmIGFueSAtLT4KICA8IS0tIFNyY0NyZWRpdDogSW5mb3JtYXRpb24gYWJvdXQgdGhlIHNvdXJjZSBvZiB0aGUgaW1hZ2UgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9iamVjdGRhdGEuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW50aXR5cmVmIiB0eXBlPSJ4czpFTlRJVFkiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlsZXJlZiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmb3JtYXQiIHR5cGU9Im5vdGF0aW9uLmNsYXNzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNyY2NyZWRpdCIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZpZGVvZGF0YS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idmlkZW9kYXRhIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmlkZW9kYXRhLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZpZGVvZGF0YS5lbGVtZW50IC0tPgogIDwhLS0gV2lkdGg6IFNhbWUgYXMgQ0FMUyByZXByb3dpZCAoZGVzaXJlZCB3aWR0aCkgLS0+CiAgPCEtLSBEZXB0aDogU2FtZSBhcyBDQUxTIHJlcHJvZGVwIChkZXNpcmVkIGRlcHRoKSAtLT4KICA8IS0tCiAgICBBbGlnbjogU2FtZSBhcyBDQUxTIGhwbGFjZSB3aXRoICdub25lJyByZW1vdmVkOyAjSU1QTElFRCBtZWFucwogICAgYXBwbGljYXRpb24tc3BlY2lmaWMKICAtLT4KICA8IS0tIFNjYWxlOiBDb25mbGF0aW9uIG9mIENBTFMgaHNjYWxlIGFuZCB2c2NhbGUgLS0+CiAgPCEtLSBTY2FsZWZpdDogU2FtZSBhcyBDQUxTIHNjYWxlZml0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2aWRlb2RhdGEuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndpZHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRlbnR3aWR0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZXB0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250ZW50ZGVwdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsZWZ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJpZ2h0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNlbnRlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWlkZGxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzY2FsZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzY2FsZWZpdCIgdHlwZT0ieWVzb3Juby5hdHR2YWxzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvYmplY3RkYXRhLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmlkZW9kYXRhLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB2aWRlb2RhdGEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB2aWRlb2RhdGEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdWRpb2RhdGEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImF1ZGlvZGF0YSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1ZGlvZGF0YS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhdWRpb2RhdGEuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXVkaW9kYXRhLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib2JqZWN0ZGF0YS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1ZGlvZGF0YS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXVkaW9kYXRhLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXVkaW9kYXRhLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW1hZ2VkYXRhLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbWFnZWRhdGEiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbWFnZWRhdGEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW1hZ2VkYXRhLmVsZW1lbnQgLS0+CiAgPCEtLSBXaWR0aDogU2FtZSBhcyBDQUxTIHJlcHJvd2lkIChkZXNpcmVkIHdpZHRoKSAtLT4KICA8IS0tIERlcHRoOiBTYW1lIGFzIENBTFMgcmVwcm9kZXAgKGRlc2lyZWQgZGVwdGgpIC0tPgogIDwhLS0KICAgIEFsaWduOiBTYW1lIGFzIENBTFMgaHBsYWNlIHdpdGggJ25vbmUnIHJlbW92ZWQ7ICNJTVBMSUVEIG1lYW5zCiAgICBhcHBsaWNhdGlvbi1zcGVjaWZpYwogIC0tPgogIDwhLS0gU2NhbGU6IENvbmZsYXRpb24gb2YgQ0FMUyBoc2NhbGUgYW5kIHZzY2FsZSAtLT4KICA8IS0tIFNjYWxlZml0OiBTYW1lIGFzIENBTFMgc2NhbGVmaXQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImltYWdlZGF0YS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29udGVudHdpZHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlcHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRlbnRkZXB0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRvcCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJtaWRkbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYm90dG9tIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjYWxlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjYWxlZml0IiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9iamVjdGRhdGEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbWFnZWRhdGEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGltYWdlZGF0YS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGltYWdlZGF0YS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRleHRkYXRhLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0ZXh0ZGF0YSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRleHRkYXRhLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRleHRkYXRhLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRleHRkYXRhLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbmNvZGluZyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib2JqZWN0ZGF0YS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRleHRkYXRhLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0ZXh0ZGF0YS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRleHRkYXRhLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2FwdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2FwdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRleHRvYmplY3QubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNhcHRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY2FwdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYXB0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2FwdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY2FwdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNhcHRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZWRpYW9iamVjdGNvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtZWRpYW9iamVjdGNvIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5mb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im9iamVjdGluZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImltYWdlb2JqZWN0Y28iLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbWFnZW9iamVjdGNvIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRvYmplY3QiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWVkaWFvYmplY3Rjby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtZWRpYW9iamVjdGNvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lZGlhb2JqZWN0Y28uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZWRpYW9iamVjdGNvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtZWRpYW9iamVjdGNvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWVkaWFvYmplY3Rjby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImltYWdlb2JqZWN0Y28ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImltYWdlb2JqZWN0Y28iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmVhc3BlYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW1hZ2VvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNhbGxvdXRsaXN0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImltYWdlb2JqZWN0Y28uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW1hZ2VvYmplY3Rjby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbWFnZW9iamVjdGNvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW1hZ2VvYmplY3Rjby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW1hZ2VvYmplY3Rjby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGltYWdlb2JqZWN0Y28ubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIG1lZGlhb2JqZWN0LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gRXF1YXRpb25zIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFRoaXMgUEUgcHJvdmlkZXMgYSBtZWNoYW5pc20gZm9yIHJlcGxhY2luZyBlcXVhdGlvbiBjb250ZW50LCAtLT4KICA8IS0tIHBlcmhhcHMgYWRkaW5nIGEgbmV3IG9yIGRpZmZlcmVudCBtb2RlbCAoZS5nLiwgTWF0aE1MKSAtLT4KICA8eHM6Z3JvdXAgbmFtZT0iZXF1YXRpb24uY29udGVudCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJhbHQiLz4KICAgICAgPHhzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJncmFwaGljIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVkaWFvYmplY3QiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImlubGluZWVxdWF0aW9uLmNvbnRlbnQiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYWx0Ii8+CiAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmNvbXBsZXhUeXBlPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcXVhdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXF1YXRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJmb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbGVxdWF0aW9uIi8+CiAgICAgICAgICA8eHM6Z3JvdXAgcmVmPSJlcXVhdGlvbi5jb250ZW50Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVxdWF0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGVxdWF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVxdWF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcXVhdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZXF1YXRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBlcXVhdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZm9ybWFsZXF1YXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImluZm9ybWFsZXF1YXRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iZXF1YXRpb24uY29udGVudCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmZvcm1hbGVxdWF0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGluZm9ybWFsZXF1YXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5mb3JtYWxlcXVhdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZm9ybWFsZXF1YXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGluZm9ybWFsZXF1YXRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGVxdWF0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5saW5lZXF1YXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImlubGluZWVxdWF0aW9uIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5saW5lb2JqLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y29tcGxleENvbnRlbnQ+CiAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJpbmxpbmVlcXVhdGlvbi5jb250ZW50Ij4KICAgICAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlubGluZWVxdWF0aW9uLmF0dGxpc3QiLz4KICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgPC94czpjb21wbGV4Q29udGVudD4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGlubGluZWVxdWF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlubGluZWVxdWF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5saW5lZXF1YXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGlubGluZWVxdWF0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5saW5lZXF1YXRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhbHQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFsdCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhbHQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWx0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFsdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFsdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWx0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYWx0Lm1vZHVsZSAtLT4KICA8IS0tIFRhYmxlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBDaG9vc2UgYSB0YWJsZSBtb2RlbC4gQ0FMUyBvciBPQVNJUyBYTUwgRXhjaGFuZ2UgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRhYmxlcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBBZGQgbGFiZWwgYW5kIHJvbGUgYXR0cmlidXRlcyB0byB0YWJsZSBhbmQgaW5mb3JtYWx0YWJsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYm9keWF0dCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0KICAgIEFkZCBjb21tb24gYXR0cmlidXRlcyB0byBUYWJsZSwgVEdyb3VwLCBUQm9keSwgVEhlYWQsIFRGb290LCBSb3csCiAgICBFbnRyeVRibCwgYW5kIEVudHJ5IChhbmQgSW5mb3JtYWxUYWJsZSBlbGVtZW50KS4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdXIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGFibGVzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29tbW9uLnRhYmxlLmF0dHJpYnMiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYm9keWF0dCIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gQ29udGVudCBtb2RlbCBmb3IgVGFibGUuIC0tPgogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0YmwudGFibGUubWRsIj4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0ZXh0b2JqZWN0Ii8+CiAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1lZGlhb2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGdyb3VwIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmNvbXBsZXhUeXBlPgogIDwhLS0gQWxsb3cgZWl0aGVyIG9iamVjdHMgb3IgaW5saW5lczsgYmV3YXJlIG9mIFJFcyBiZXR3ZWVuIGVsZW1lbnRzLiAtLT4KICA8eHM6Z3JvdXAgbmFtZT0idGJsLmVudHJ5Lm1kbCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6Z3JvdXAgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czpncm91cCByZWY9InRhYmVudHJ5Lm1peCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8IS0tIFJlZmVyZW5jZSBDQUxTIFRhYmxlIE1vZGVsIC0tPgogIDwhLS0gZW5kIG9mIHRhYmxlLm1vZHVsZSAtLT4KICA8IS0tCiAgICBOb3RlIHRoYXQgSW5mb3JtYWxUYWJsZSBpcyBkZXBlbmRlbnQgb24gc29tZSBvZiB0aGUgZW50aXR5CiAgICBkZWNsYXJhdGlvbnMgdGhhdCBjdXN0b21pemUgVGFibGUuCiAgLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5mb3JtYWx0YWJsZSIgc3Vic3RpdHV0aW9uR3JvdXA9ImluZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRleHRvYmplY3QiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ3JhcGhpYyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVkaWFvYmplY3QiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRncm91cCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmZvcm1hbHRhYmxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGluZm9ybWFsdGFibGUuZWxlbWVudCAtLT4KICA8IS0tCiAgICBGcmFtZSwgQ29sc2VwLCBhbmQgUm93c2VwIG11c3QgYmUgcmVwZWF0ZWQgYmVjYXVzZQogICAgdGhleSBhcmUgbm90IGluIGVudGl0aWVzIGluIHRoZSB0YWJsZSBtb2R1bGUuCiAgLS0+CiAgPCEtLQogICAgaW5jbHVkZXMgVGFiU3R5bGUsIFRvQ2VudHJ5LCBTaG9ydEVudHJ5LAogICAgT3JpZW50LCBQZ1dpZGUKICAtLT4KICA8IS0tIGluY2x1ZGVzIExhYmVsIC0tPgogIDwhLS0gaW5jbHVkZXMgY29tbW9uIGF0dHJpYnV0ZXMgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZm9ybWFsdGFibGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZyYW1lIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3Bib3QiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYWxsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNpZGVzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vbmUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sc2VwIiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm93c2VwIiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi50YWJsZS5hdHRyaWJzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YmwudGFibGUuYXR0Ii8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbHRhYmxlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWx0YWJsZS5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gU3lub3BzZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFN5bm9wc2lzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN5bm9wc2lzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzeW5vcHNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9InN5bm9wLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb3JlZiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGV4dG9iamVjdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZWFubm90YXRpb24iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN5bm9wc2lzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN5bm9wc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lc3BlY2lmaWMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzeW5vcHNpcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3lub3BzaXMuYXR0bGlzdCAtLT4KICA8IS0tIExpbmVBbm5vdGF0aW9uIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIGVuZCBvZiBzeW5vcHNpcy5tb2R1bGUgLS0+CiAgPCEtLSBDbWRTeW5vcHNpcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjbWRzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY21kc3lub3BzaXMiIHN1YnN0aXR1dGlvbkdyb3VwPSJzeW5vcC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iY29tbWFuZCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmciLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JvdXAiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2JyIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzeW5vcGZyYWdtZW50Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNtZHN5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNtZHN5bm9wc2lzLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU2VwY2hhcjogQ2hhcmFjdGVyIHRoYXQgc2hvdWxkIHNlcGFyYXRlIGNvbW1hbmQgYW5kIGFsbAogICAgdG9wLWxldmVsIGFyZ3VtZW50czsgYWx0ZXJuYXRlIHZhbHVlIG1pZ2h0IGJlIGUuZy4sICZEZWx0YTsKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY21kc3lub3BzaXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VwY2hhciIgZGVmYXVsdD0iICIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbWRsZW5ndGgiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNtZHN5bm9wc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjbWRzeW5vcHNpcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNtZHN5bm9wc2lzLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJnLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcmciPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFyZyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JvdXAiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im9wdGlvbiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3BmcmFnbWVudHJlZiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVwbGFjZWFibGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNiciIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJnLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFyZy5lbGVtZW50IC0tPgogIDwhLS0KICAgIENob2ljZTogV2hldGhlciBBcmcgbXVzdCBiZSBzdXBwbGllZDogT3B0IChvcHRpb25hbCB0bwogICAgc3VwcGx5LCBlLmcuIFthcmddOyB0aGUgZGVmYXVsdCksIFJlcSAocmVxdWlyZWQgdG8gc3VwcGx5LAogICAgZS5nLiB7YXJnfSksIG9yIFBsYWluIChyZXF1aXJlZCB0byBzdXBwbHksIGUuZy4gYXJnKQogIC0tPgogIDwhLS0KICAgIFJlcDogd2hldGhlciBBcmcgaXMgcmVwZWF0YWJsZTogTm9yZXBlYXQgKGUuZy4gYXJnIHdpdGhvdXQKICAgIGVsbGlwc2lzOyB0aGUgZGVmYXVsdCksIG9yIFJlcGVhdCAoZS5nLiBhcmcuLi4pCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFyZy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hvaWNlIiBkZWZhdWx0PSJvcHQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVxIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBsYWluIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlcCIgZGVmYXVsdD0ibm9yZXBlYXQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JlcGVhdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXBlYXQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXJnLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXJnLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3JvdXAucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdyb3VwIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmciLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdyb3VwIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvcHRpb24iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wZnJhZ21lbnRyZWYiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlcGxhY2VhYmxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzYnIiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdyb3VwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdyb3VwLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgQ2hvaWNlOiBXaGV0aGVyIEdyb3VwIG11c3QgYmUgc3VwcGxpZWQ6IE9wdCAob3B0aW9uYWwgdG8KICAgIHN1cHBseSwgZS5nLiAgW2cxfGcyfGczXTsgdGhlIGRlZmF1bHQpLCBSZXEgKHJlcXVpcmVkIHRvCiAgICBzdXBwbHksIGUuZy4gIHtnMXxnMnxnM30pLCBQbGFpbiAocmVxdWlyZWQgdG8gc3VwcGx5LAogICAgZS5nLiAgZzF8ZzJ8ZzMpLCBPcHRNdWx0IChjYW4gc3VwcGx5IHplcm8gb3IgbW9yZSwgZS5nLgogICAgW1tnMXxnMnxnM11dKSwgb3IgUmVxTXVsdCAobXVzdCBzdXBwbHkgb25lIG9yIG1vcmUsIGUuZy4KICAgIHt7ZzF8ZzJ8ZzN9fSkKICAtLT4KICA8IS0tCiAgICBSZXA6IHdoZXRoZXIgR3JvdXAgaXMgcmVwZWF0YWJsZTogTm9yZXBlYXQgKGUuZy4gZ3JvdXAKICAgIHdpdGhvdXQgZWxsaXBzaXM7IHRoZSBkZWZhdWx0KSwgb3IgUmVwZWF0IChlLmcuIGdyb3VwLi4uKQogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJncm91cC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hvaWNlIiBkZWZhdWx0PSJvcHQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVxIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBsYWluIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlcCIgZGVmYXVsdD0ibm9yZXBlYXQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JlcGVhdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXBlYXQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdyb3VwLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBncm91cC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdyb3VwLm1vZHVsZSAtLT4KICA8IS0tIFN5bm9wc2lzIGJyZWFrIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzYnIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNiciI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNici5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzYnIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2JyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2JyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzYnIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzYnIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzeW5vcGZyYWdtZW50cmVmLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzeW5vcGZyYWdtZW50cmVmIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5bm9wZnJhZ21lbnRyZWYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3lub3BmcmFnbWVudHJlZi5lbGVtZW50IC0tPgogIDwhLS0KICAgIHRvIFN5bm9wRnJhZ21lbnQgb2YgY29tcGxleCBzeW5vcHNpcwogICAgbWF0ZXJpYWwgZm9yIHNlcGFyYXRlIHJlZmVyZW5jaW5nCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN5bm9wZnJhZ21lbnRyZWYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kcmVxLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3lub3BmcmFnbWVudHJlZi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3lub3BmcmFnbWVudHJlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN5bm9wZnJhZ21lbnRyZWYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzeW5vcGZyYWdtZW50LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzeW5vcGZyYWdtZW50Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmciLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdyb3VwIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzeW5vcGZyYWdtZW50LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN5bm9wZnJhZ21lbnQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3lub3BmcmFnbWVudC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlkcmVxLmNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5bm9wZnJhZ21lbnQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN5bm9wZnJhZ21lbnQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzeW5vcGZyYWdtZW50Lm1vZHVsZSAtLT4KICA8IS0tIENvbW1hbmQgKGRlZmluZWQgaW4gdGhlIElubGluZXMgc2VjdGlvbiwgYmVsb3cpIC0tPgogIDwhLS0gT3B0aW9uIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIFJlcGxhY2VhYmxlIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIGVuZCBvZiBjbWRzeW5vcHNpcy5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIEZ1bmNTeW5vcHNpcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZnVuY3N5bm9wc2lzIiBzdWJzdGl0dXRpb25Hcm91cD0ic3lub3AuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImZ1bmNzeW5vcHNpc2luZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImZ1bmNwcm90b3R5cGUiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmNzeW5vcHNpcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmdW5jc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY3N5bm9wc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jc3lub3BzaXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZ1bmNzeW5vcHNpcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZ1bmNzeW5vcHNpcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNzeW5vcHNpc2luZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZ1bmNzeW5vcHNpc2luZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZXh0b2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lYW5ub3RhdGlvbiIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZnVuY3N5bm9wc2lzaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmdW5jc3lub3BzaXNpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNzeW5vcHNpc2luZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lc3BlY2lmaWMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jc3lub3BzaXNpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmdW5jc3lub3BzaXNpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZnVuY3N5bm9wc2lzaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNwcm90b3R5cGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZ1bmNwcm90b3R5cGUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmdW5jZGVmIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idm9pZCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ2YXJhcmdzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhbWRlZiIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jcHJvdG90eXBlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZ1bmNwcm90b3R5cGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY3Byb3RvdHlwZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmNwcm90b3R5cGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZ1bmNwcm90b3R5cGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmdW5jcHJvdG90eXBlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY2RlZi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZnVuY2RlZiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idHlwZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVwbGFjZWFibGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImZ1bmN0aW9uIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jZGVmLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZ1bmNkZWYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY2RlZi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmNkZWYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZ1bmNkZWYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmdW5jZGVmLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idm9pZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idm9pZCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZvaWQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygdm9pZC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2b2lkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idm9pZC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygdm9pZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZvaWQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2YXJhcmdzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2YXJhcmdzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmFyYXJncy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB2YXJhcmdzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZhcmFyZ3MuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2YXJhcmdzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB2YXJhcmdzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdmFyYXJncy5tb2R1bGUgLS0+CiAgPCEtLQogICAgUHJvY2Vzc2luZyBhc3N1bWVzIHRoYXQgb25seSBvbmUgUGFyYW1ldGVyIHdpbGwgYXBwZWFyIGluIGEKICAgIFBhcmFtRGVmLCBhbmQgdGhhdCBGdW5jUGFyYW1zIHdpbGwgYmUgdXNlZCBhdCBtb3N0IG9uY2UsIGZvcgogICAgcHJvdmlkaW5nIGluZm9ybWF0aW9uIG9uIHRoZSAiaW5uZXIgcGFyYW1ldGVycyIgZm9yIHBhcmFtZXRlcnMgdGhhdAogICAgYXJlIHBvaW50ZXJzIHRvIGZ1bmN0aW9ucy4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFyYW1kZWYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBhcmFtZGVmIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0eXBlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXBsYWNlYWJsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYW1ldGVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmdW5jcGFyYW1zIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJhbWRlZi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwYXJhbWRlZi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYXJhbWRlZi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcmFtZGVmLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwYXJhbWRlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBhcmFtZGVmLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY3BhcmFtcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZnVuY3BhcmFtcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmNwYXJhbXMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZnVuY3BhcmFtcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmdW5jcGFyYW1zLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZnVuY3BhcmFtcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZnVuY3BhcmFtcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZ1bmNwYXJhbXMubW9kdWxlIC0tPgogIDwhLS0gTGluZUFubm90YXRpb24gKGRlZmluZWQgaW4gdGhlIElubGluZXMgc2VjdGlvbiwgYmVsb3cpIC0tPgogIDwhLS0gUmVwbGFjZWFibGUgKGRlZmluZWQgaW4gdGhlIElubGluZXMgc2VjdGlvbiwgYmVsb3cpIC0tPgogIDwhLS0gRnVuY3Rpb24gKGRlZmluZWQgaW4gdGhlIElubGluZXMgc2VjdGlvbiwgYmVsb3cpIC0tPgogIDwhLS0gUGFyYW1ldGVyIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIGVuZCBvZiBmdW5jc3lub3BzaXMuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBDbGFzc1N5bm9wc2lzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2xhc3NzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2xhc3NzeW5vcHNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9InN5bm9wLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvb2NsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im9vaW50ZXJmYWNlIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im9vZXhjZXB0aW9uIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iY2xhc3NzeW5vcHNpc2luZm8iLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZmllbGRzeW5vcHNpcyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtZXRob2Quc3lub3AuY2xhc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2xhc3NzeW5vcHNpcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjbGFzc3N5bm9wc2lzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNsYXNzc3lub3BzaXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxhbmd1YWdlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIiBkZWZhdWx0PSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNsYXNzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImludGVyZmFjZSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2xhc3NzeW5vcHNpcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY2xhc3NzeW5vcHNpcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNsYXNzc3lub3BzaXMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjbGFzc3N5bm9wc2lzaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2xhc3NzeW5vcHNpc2luZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZXh0b2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lYW5ub3RhdGlvbiIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2xhc3NzeW5vcHNpc2luZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY2xhc3NzeW5vcHNpc2luZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2xhc3NzeW5vcHNpc2luZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lc3BlY2lmaWMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjbGFzc3N5bm9wc2lzaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY2xhc3NzeW5vcHNpc2luZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjbGFzc3N5bm9wc2lzaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9vY2xhc3Mucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im9vY2xhc3MiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY2xhc3NuYW1lIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9vY2xhc3MuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb29jbGFzcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvb2NsYXNzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib29jbGFzcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb29jbGFzcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG9vY2xhc3MubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvb2ludGVyZmFjZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib29pbnRlcmZhY2UiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW50ZXJmYWNlbmFtZSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvb2ludGVyZmFjZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvb2ludGVyZmFjZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvb2ludGVyZmFjZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9vaW50ZXJmYWNlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvb2ludGVyZmFjZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG9vaW50ZXJmYWNlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib29leGNlcHRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im9vZXhjZXB0aW9uIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibW9kaWZpZXIiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImV4Y2VwdGlvbm5hbWUiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib29leGNlcHRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb29leGNlcHRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib29leGNlcHRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvb2V4Y2VwdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb29leGNlcHRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvb2V4Y2VwdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1vZGlmaWVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtb2RpZmllciI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9kaWZpZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbW9kaWZpZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibW9kaWZpZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb2RpZmllci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbW9kaWZpZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtb2RpZmllci5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImludGVyZmFjZW5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImludGVyZmFjZW5hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbnRlcmZhY2VuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGludGVyZmFjZW5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW50ZXJmYWNlbmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImludGVyZmFjZW5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGludGVyZmFjZW5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbnRlcmZhY2VuYW1lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXhjZXB0aW9ubmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXhjZXB0aW9ubmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXhjZXB0aW9ubmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBleGNlcHRpb25uYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImV4Y2VwdGlvbm5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJleGNlcHRpb25uYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBleGNlcHRpb25uYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZXhjZXB0aW9ubmFtZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZpZWxkc3lub3BzaXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZpZWxkc3lub3BzaXMiIHN1YnN0aXR1dGlvbkdyb3VwPSJzeW5vcC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1vZGlmaWVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InR5cGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InZhcm5hbWUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iaW5pdGlhbGl6ZXIiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZmllbGRzeW5vcHNpcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmaWVsZHN5bm9wc2lzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZpZWxkc3lub3BzaXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxhbmd1YWdlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaWVsZHN5bm9wc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmaWVsZHN5bm9wc2lzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZmllbGRzeW5vcHNpcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluaXRpYWxpemVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbml0aWFsaXplciI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5pdGlhbGl6ZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5pdGlhbGl6ZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5pdGlhbGl6ZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbml0aWFsaXplci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW5pdGlhbGl6ZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbml0aWFsaXplci5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnN0cnVjdG9yc3lub3BzaXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbnN0cnVjdG9yc3lub3BzaXMiIHN1YnN0aXR1dGlvbkdyb3VwPSJtZXRob2Quc3lub3AuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJtZXRob2RuYW1lIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1ldGhvZHBhcmFtIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InZvaWQiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImV4Y2VwdGlvbm5hbWUiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uc3RydWN0b3JzeW5vcHNpcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb25zdHJ1Y3RvcnN5bm9wc2lzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnN0cnVjdG9yc3lub3BzaXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxhbmd1YWdlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25zdHJ1Y3RvcnN5bm9wc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb25zdHJ1Y3RvcnN5bm9wc2lzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29uc3RydWN0b3JzeW5vcHNpcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImRlc3RydWN0b3JzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZGVzdHJ1Y3RvcnN5bm9wc2lzIiBzdWJzdGl0dXRpb25Hcm91cD0ibWV0aG9kLnN5bm9wLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibW9kaWZpZXIiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ibWV0aG9kbmFtZSIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtZXRob2RwYXJhbSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ2b2lkIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJleGNlcHRpb25uYW1lIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRlc3RydWN0b3JzeW5vcHNpcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBkZXN0cnVjdG9yc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGVzdHJ1Y3RvcnN5bm9wc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYW5ndWFnZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZGVzdHJ1Y3RvcnN5bm9wc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBkZXN0cnVjdG9yc3lub3BzaXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBkZXN0cnVjdG9yc3lub3BzaXMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZXRob2RzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWV0aG9kc3lub3BzaXMiIHN1YnN0aXR1dGlvbkdyb3VwPSJtZXRob2Quc3lub3AuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idHlwZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ2b2lkIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtZXRob2RuYW1lIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1ldGhvZHBhcmFtIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InZvaWQiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImV4Y2VwdGlvbm5hbWUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1vZGlmaWVyIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1ldGhvZHN5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1ldGhvZHN5bm9wc2lzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1ldGhvZHN5bm9wc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYW5ndWFnZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWV0aG9kc3lub3BzaXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1ldGhvZHN5bm9wc2lzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWV0aG9kc3lub3BzaXMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZXRob2RuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtZXRob2RuYW1lIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZXRob2RuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1ldGhvZG5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWV0aG9kbmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1ldGhvZG5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1ldGhvZG5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtZXRob2RuYW1lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWV0aG9kcGFyYW0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1ldGhvZHBhcmFtIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibW9kaWZpZXIiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idHlwZSIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYW1ldGVyIi8+CiAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJpbml0aWFsaXplciIvPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZnVuY3BhcmFtcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibW9kaWZpZXIiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWV0aG9kcGFyYW0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWV0aG9kcGFyYW0uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWV0aG9kcGFyYW0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNob2ljZSIgZGVmYXVsdD0icmVxIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3B0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlcSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwbGFpbiIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXAiIGRlZmF1bHQ9Im5vcmVwZWF0Ij4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibm9yZXBlYXQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVwZWF0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZXRob2RwYXJhbS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWV0aG9kcGFyYW0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtZXRob2RwYXJhbS5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgY2xhc3NzeW5vcHNpcy5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBEb2N1bWVudCBpbmZvcm1hdGlvbiBlbnRpdGllcyBhbmQgZWxlbWVudHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0KICAgIFRoZSBkb2N1bWVudCBpbmZvcm1hdGlvbiBlbGVtZW50cyBpbmNsdWRlIHNvbWUgZWxlbWVudHMgdGhhdCBhcmUKICAgIGN1cnJlbnRseSB1c2VkIG9ubHkgaW4gdGhlIGRvY3VtZW50IGhpZXJhcmNoeSBtb2R1bGUuIFRoZXkgYXJlCiAgICBkZWZpbmVkIGhlcmUgc28gdGhhdCB0aGV5IHdpbGwgYmUgYXZhaWxhYmxlIGZvciB1c2UgaW4gY3VzdG9taXplZAogICAgZG9jdW1lbnQgaGllcmFyY2hpZXMuCiAgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gQWNrbm8gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWNrbm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFja25vIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWNrbm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWNrbm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWNrbm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhY2tuby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWNrbm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhY2tuby5tb2R1bGUgLS0+CiAgPCEtLSBBZGRyZXNzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhZGRyZXNzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhZGRyZXNzIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5mb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBlcnNvbm5hbWUiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJwZXJzb24uaWRlbnQubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdHJlZXQiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBvYiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icG9zdGNvZGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNpdHkiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN0YXRlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb3VudHJ5Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwaG9uZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZmF4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlbWFpbCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ib3RoZXJhZGRyIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhZGRyZXNzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFkZHJlc3MuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWRkcmVzcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmVzcGVjaWZpYy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFkZHJlc3Mucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFkZHJlc3MuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhZGRyZXNzLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RyZWV0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdHJlZXQiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdHJlZXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3RyZWV0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0cmVldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0cmVldC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3RyZWV0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3RyZWV0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icG9iLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwb2IiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwb2IuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcG9iLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBvYi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBvYi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcG9iLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcG9iLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icG9zdGNvZGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBvc3Rjb2RlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icG9zdGNvZGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcG9zdGNvZGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icG9zdGNvZGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwb3N0Y29kZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcG9zdGNvZGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwb3N0Y29kZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNpdHkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNpdHkiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaXR5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNpdHkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2l0eS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNpdHkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNpdHkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjaXR5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RhdGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN0YXRlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3RhdGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RhdGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0ZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3RhdGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzdGF0ZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvdW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvdW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3VudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvdW50cnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY291bnRyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvdW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvdW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb3VudHJ5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGhvbmUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBob25lIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGhvbmUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcGhvbmUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGhvbmUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwaG9uZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcGhvbmUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwaG9uZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZheC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZmF4Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZmF4LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZheC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmYXguYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmYXgucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZheC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZheC5tb2R1bGUgLS0+CiAgPCEtLSBFbWFpbCAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im90aGVyYWRkci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib3RoZXJhZGRyIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3RoZXJhZGRyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG90aGVyYWRkci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvdGhlcmFkZHIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvdGhlcmFkZHIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG90aGVyYWRkci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG90aGVyYWRkci5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgYWRkcmVzcy5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIEFmZmlsaWF0aW9uIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFmZmlsaWF0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhZmZpbGlhdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic2hvcnRhZmZpbCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iam9idGl0bGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ib3JnbmFtZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ib3JnZGl2Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJhZGRyZXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFmZmlsaWF0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFmZmlsaWF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFmZmlsaWF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWZmaWxpYXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFmZmlsaWF0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYWZmaWxpYXRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaG9ydGFmZmlsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzaG9ydGFmZmlsIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2hvcnRhZmZpbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzaG9ydGFmZmlsLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNob3J0YWZmaWwuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaG9ydGFmZmlsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzaG9ydGFmZmlsLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2hvcnRhZmZpbC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImpvYnRpdGxlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJqb2J0aXRsZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImpvYnRpdGxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGpvYnRpdGxlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImpvYnRpdGxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iam9idGl0bGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGpvYnRpdGxlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygam9idGl0bGUubW9kdWxlIC0tPgogIDwhLS0gT3JnTmFtZSAoZGVmaW5lZCBlbHNld2hlcmUgaW4gdGhpcyBzZWN0aW9uKSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3JnZGl2LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvcmdkaXYiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvcmdkaXYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb3JnZGl2LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9yZ2Rpdi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9yZ2Rpdi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb3JnZGl2LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb3JnZGl2Lm1vZHVsZSAtLT4KICA8IS0tIEFkZHJlc3MgKGRlZmluZWQgZWxzZXdoZXJlIGluIHRoaXMgc2VjdGlvbikgLS0+CiAgPCEtLSBlbmQgb2YgYWZmaWxpYXRpb24uY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBBcnRQYWdlTnVtcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcnRwYWdlbnVtcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXJ0cGFnZW51bXMiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcnRwYWdlbnVtcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhcnRwYWdlbnVtcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcnRwYWdlbnVtcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFydHBhZ2VudW1zLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhcnRwYWdlbnVtcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFydHBhZ2VudW1zLm1vZHVsZSAtLT4KICA8IS0tIFBlcnNvbk5hbWUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBlcnNvbm5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBlcnNvbm5hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaG9ub3JpZmljIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmaXJzdG5hbWUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN1cm5hbWUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVhZ2UiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im90aGVybmFtZSIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGVyc29ubmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwZXJzb25uYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBlcnNvbm5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwZXJzb25uYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwZXJzb25uYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcGVyc29ubmFtZS5tb2R1bGUgLS0+CiAgPCEtLSBBdXRob3IgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdXRob3Iucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImF1dGhvciIgc3Vic3RpdHV0aW9uR3JvdXA9ImRvY2luZm8uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwZXJzb25uYW1lIi8+CiAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGVyc29uLmlkZW50Lm1peCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBlcnNvbmJsdXJiIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtYWlsIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFkZHJlc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXV0aG9yLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGF1dGhvci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdXRob3IuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdXRob3Iucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGF1dGhvci5hdHRsaXN0IC0tPgogIDwhLS0gKHNlZSAiUGVyc29uYWwgaWRlbnRpdHkgZWxlbWVudHMiIGZvciAlcGVyc29uLmlkZW50Lm1peDspIC0tPgogIDwhLS0gZW5kIG9mIGF1dGhvci5tb2R1bGUgLS0+CiAgPCEtLSBBdXRob3JHcm91cCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdXRob3Jncm91cC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXV0aG9yZ3JvdXAiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImF1dGhvciIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZWRpdG9yIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb2xsYWIiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvcnBhdXRob3IiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im90aGVyY3JlZGl0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdXRob3Jncm91cC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhdXRob3Jncm91cC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdXRob3Jncm91cC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1dGhvcmdyb3VwLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhdXRob3Jncm91cC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGF1dGhvcmdyb3VwLm1vZHVsZSAtLT4KICA8IS0tIEF1dGhvciAoZGVmaW5lZCBlbHNld2hlcmUgaW4gdGhpcyBzZWN0aW9uKSAtLT4KICA8IS0tIEVkaXRvciAoZGVmaW5lZCBlbHNld2hlcmUgaW4gdGhpcyBzZWN0aW9uKSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29sbGFiLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb2xsYWIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb2xsYWJuYW1lIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJhZmZpbGlhdGlvbiIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb2xsYWIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29sbGFiLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbGxhYi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbGxhYi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29sbGFiLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29sbGFiLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29sbGFibmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29sbGFibmFtZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbGxhYm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29sbGFibmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2xsYWJuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29sbGFibmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29sbGFibmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbGxhYm5hbWUubW9kdWxlIC0tPgogIDwhLS0gQWZmaWxpYXRpb24gKGRlZmluZWQgZWxzZXdoZXJlIGluIHRoaXMgc2VjdGlvbikgLS0+CiAgPCEtLSBlbmQgb2YgY29sbGFiLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gQ29ycEF1dGhvciAoZGVmaW5lZCBlbHNld2hlcmUgaW4gdGhpcyBzZWN0aW9uKSAtLT4KICA8IS0tIE90aGVyQ3JlZGl0IChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDwhLS0gZW5kIG9mIGF1dGhvcmdyb3VwLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gQXV0aG9ySW5pdGlhbHMgLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXV0aG9yaW5pdGlhbHMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImF1dGhvcmluaXRpYWxzIiBzdWJzdGl0dXRpb25Hcm91cD0iZG9jaW5mby5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXV0aG9yaW5pdGlhbHMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXV0aG9yaW5pdGlhbHMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXV0aG9yaW5pdGlhbHMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdXRob3Jpbml0aWFscy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXV0aG9yaW5pdGlhbHMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhdXRob3Jpbml0aWFscy5tb2R1bGUgLS0+CiAgPCEtLSBDb25mR3JvdXAgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mZ3JvdXAucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbmZncm91cCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb25mZGF0ZXMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbmZ0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29uZm51bSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYWRkcmVzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29uZnNwb25zb3IiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbmZncm91cC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb25mZ3JvdXAuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29uZmdyb3VwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZmdyb3VwLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb25mZ3JvdXAuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb25mZ3JvdXAubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mZGF0ZXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbmZkYXRlcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbmZkYXRlcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb25mZGF0ZXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29uZmRhdGVzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZmRhdGVzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb25mZGF0ZXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb25mZGF0ZXMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mdGl0bGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbmZ0aXRsZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbmZ0aXRsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb25mdGl0bGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29uZnRpdGxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZnRpdGxlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb25mdGl0bGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb25mdGl0bGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mbnVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb25mbnVtIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZm51bS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb25mbnVtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbmZudW0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25mbnVtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb25mbnVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29uZm51bS5tb2R1bGUgLS0+CiAgPCEtLSBBZGRyZXNzIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mc3BvbnNvci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29uZnNwb25zb3IiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25mc3BvbnNvci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb25mc3BvbnNvci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mc3BvbnNvci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbmZzcG9uc29yLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb25mc3BvbnNvci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbmZzcG9uc29yLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBjb25mZ3JvdXAuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBDb250cmFjdE51bSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb250cmFjdG51bS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29udHJhY3RudW0iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb250cmFjdG51bS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb250cmFjdG51bS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb250cmFjdG51bS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnRyYWN0bnVtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb250cmFjdG51bS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbnRyYWN0bnVtLm1vZHVsZSAtLT4KICA8IS0tIENvbnRyYWN0U3BvbnNvciAuLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnRyYWN0c3BvbnNvci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29udHJhY3RzcG9uc29yIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29udHJhY3RzcG9uc29yLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbnRyYWN0c3BvbnNvci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb250cmFjdHNwb25zb3IuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb250cmFjdHNwb25zb3Iucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbnRyYWN0c3BvbnNvci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbnRyYWN0c3BvbnNvci5tb2R1bGUgLS0+CiAgPCEtLSBDb3B5cmlnaHQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3B5cmlnaHQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvcHlyaWdodCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ5ZWFyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJob2xkZXIiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29weXJpZ2h0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvcHlyaWdodC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3B5cmlnaHQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3B5cmlnaHQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvcHlyaWdodC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvcHlyaWdodC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InllYXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InllYXIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ5ZWFyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHllYXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ieWVhci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InllYXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHllYXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB5ZWFyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaG9sZGVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJob2xkZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJob2xkZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaG9sZGVyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImhvbGRlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImhvbGRlci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaG9sZGVyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaG9sZGVyLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBjb3B5cmlnaHQuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBDb3JwQXV0aG9yIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3JwYXV0aG9yLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb3JwYXV0aG9yIiBzdWJzdGl0dXRpb25Hcm91cD0iZG9jaW5mby5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29ycGF1dGhvci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb3JwYXV0aG9yLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvcnBhdXRob3IuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3JwYXV0aG9yLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb3JwYXV0aG9yLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29ycGF1dGhvci5tb2R1bGUgLS0+CiAgPCEtLSBDb3JwTmFtZSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNvcnBuYW1lIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29ycG5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29ycG5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29ycG5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3JwbmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvcnBuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb3JwbmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvcnBuYW1lLm1vZHVsZSAtLT4KICA8IS0tIERhdGUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImRhdGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImRhdGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJkYXRlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGRhdGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGF0ZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRhdGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGRhdGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBkYXRlLm1vZHVsZSAtLT4KICA8IS0tIEVkaXRpb24gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVkaXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImVkaXRpb24iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlZGl0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGVkaXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZWRpdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVkaXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGVkaXRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBlZGl0aW9uLm1vZHVsZSAtLT4KICA8IS0tIEVkaXRvciAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVkaXRvci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZWRpdG9yIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBlcnNvbm5hbWUiLz4KICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwZXJzb24uaWRlbnQubWl4Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icGVyc29uYmx1cmIiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZW1haWwiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYWRkcmVzcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlZGl0b3IuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZWRpdG9yLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVkaXRvci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVkaXRvci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZWRpdG9yLmF0dGxpc3QgLS0+CiAgPCEtLSAoc2VlICJQZXJzb25hbCBpZGVudGl0eSBlbGVtZW50cyIgZm9yICVwZXJzb24uaWRlbnQubWl4OykgLS0+CiAgPCEtLSBlbmQgb2YgZWRpdG9yLm1vZHVsZSAtLT4KICA8IS0tIElTQk4gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlzYm4ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImlzYm4iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpc2JuLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGlzYm4uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaXNibi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlzYm4ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGlzYm4uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpc2JuLm1vZHVsZSAtLT4KICA8IS0tIElTU04gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imlzc24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imlzc24iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpc3NuLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGlzc24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaXNzbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imlzc24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGlzc24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpc3NuLm1vZHVsZSAtLT4KICA8IS0tIEJpYmxpb0lkIC4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW8uY2xhc3MuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ1cmkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZG9pIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImlzYm4iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXNzbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaWJyYXJ5b2Zjb25ncmVzcyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwdWJudW1iZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3RoZXJjbGFzcyIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2lkLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9pZCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2lkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb2lkLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2lkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvLmNsYXNzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvaWQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb2lkLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYmlibGlvaWQubW9kdWxlIC0tPgogIDwhLS0gQ2l0ZUJpYmxpb0lkIC4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXRlYmlibGlvaWQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNpdGViaWJsaW9pZCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNpdGViaWJsaW9pZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjaXRlYmlibGlvaWQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2l0ZWJpYmxpb2lkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvLmNsYXNzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0ZWJpYmxpb2lkLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjaXRlYmlibGlvaWQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjaXRlYmlibGlvaWQubW9kdWxlIC0tPgogIDwhLS0gQmlibGlvU291cmNlIC4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9zb3VyY2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb3NvdXJjZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb3NvdXJjZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiaWJsaW9zb3VyY2UuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvc291cmNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvLmNsYXNzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvc291cmNlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9zb3VyY2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9zb3VyY2UubW9kdWxlIC0tPgogIDwhLS0gQmlibGlvUmVsYXRpb24gLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb3JlbGF0aW9uLnR5cGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImlzdmVyc2lvbm9mIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imhhc3ZlcnNpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXNyZXBsYWNlZGJ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlcGxhY2VzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImlzcmVxdWlyZWRieSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXF1aXJlcyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpc3BhcnRvZiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJoYXNwYXJ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImlzcmVmZXJlbmNlZGJ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlZmVyZW5jZXMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXNmb3JtYXRvZiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJoYXNmb3JtYXQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXJ0eXBlIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVydHlwZSIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb3JlbGF0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9yZWxhdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb3JlbGF0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb3JlbGF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb3JlbGF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvLmNsYXNzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvcmVsYXRpb24udHlwZS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb3JlbGF0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9yZWxhdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb3JlbGF0aW9uLm1vZHVsZSAtLT4KICA8IS0tIEJpYmxpb0NvdmVyYWdlIC4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9jb3ZlcmFnZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvY292ZXJhZ2UiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9jb3ZlcmFnZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiaWJsaW9jb3ZlcmFnZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9jb3ZlcmFnZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3BhdGlhbCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRjbWlwb2ludCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpc28zMTY2Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRjbWlib3giLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idGduIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im90aGVyc3BhdGlhbCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcnNwYXRpYWwiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGVtcG9yYWwiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkY21pcGVyaW9kIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InczYy1kdGYiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXJ0ZW1wb3JhbCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcnRlbXBvcmFsIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9jb3ZlcmFnZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmlibGlvY292ZXJhZ2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9jb3ZlcmFnZS5tb2R1bGUgLS0+CiAgPCEtLSBJbnZQYXJ0TnVtYmVyIC4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbnZwYXJ0bnVtYmVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbnZwYXJ0bnVtYmVyIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW52cGFydG51bWJlci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbnZwYXJ0bnVtYmVyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImludnBhcnRudW1iZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbnZwYXJ0bnVtYmVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbnZwYXJ0bnVtYmVyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW52cGFydG51bWJlci5tb2R1bGUgLS0+CiAgPCEtLSBJc3N1ZU51bSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpc3N1ZW51bS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaXNzdWVudW0iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpc3N1ZW51bS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpc3N1ZW51bS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpc3N1ZW51bS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imlzc3VlbnVtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpc3N1ZW51bS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGlzc3VlbnVtLm1vZHVsZSAtLT4KICA8IS0tIExlZ2FsTm90aWNlIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxlZ2Fsbm90aWNlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJsZWdhbG5vdGljZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImxlZ2Fsbm90aWNlLm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsZWdhbG5vdGljZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBsZWdhbG5vdGljZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsZWdhbG5vdGljZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxlZ2Fsbm90aWNlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBsZWdhbG5vdGljZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGxlZ2Fsbm90aWNlLm1vZHVsZSAtLT4KICA8IS0tIE1vZGVTcGVjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1vZGVzcGVjLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtb2Rlc3BlYyIgc3Vic3RpdHV0aW9uR3JvdXA9ImRvY2luZm8uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vZGVzcGVjLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1vZGVzcGVjLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgQXBwbGljYXRpb246IFR5cGUgb2YgYWN0aW9uIHJlcXVpcmVkIGZvciBjb21wbGV0aW9uCiAgICBvZiB0aGUgbGlua3MgdG8gd2hpY2ggdGhlIE1vZGVTcGVjIGlzIHJlbGV2YW50IChlLmcuLAogICAgcmV0cmlldmFsIHF1ZXJ5KQogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtb2Rlc3BlYy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXBwbGljYXRpb24iIHR5cGU9Im5vdGF0aW9uLmNsYXNzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb2Rlc3BlYy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbW9kZXNwZWMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtb2Rlc3BlYy5tb2R1bGUgLS0+CiAgPCEtLSBPcmdOYW1lIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcmduYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvcmduYW1lIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3JnbmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvcmduYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9yZ25hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29ycG9yYXRpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibm9ucHJvZml0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvbnNvcnRpdW0iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaW5mb3JtYWwiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3RoZXJjbGFzcyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3JnbmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb3JnbmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG9yZ25hbWUubW9kdWxlIC0tPgogIDwhLS0gT3RoZXJDcmVkaXQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3RoZXJjcmVkaXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im90aGVyY3JlZGl0IiBzdWJzdGl0dXRpb25Hcm91cD0iZG9jaW5mby5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBlcnNvbm5hbWUiLz4KICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwZXJzb24uaWRlbnQubWl4Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icGVyc29uYmx1cmIiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZW1haWwiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYWRkcmVzcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvdGhlcmNyZWRpdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvdGhlcmNyZWRpdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvdGhlcmNyZWRpdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im90aGVyY3JlZGl0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvdGhlcmNyZWRpdC5hdHRsaXN0IC0tPgogIDwhLS0gKHNlZSAiUGVyc29uYWwgaWRlbnRpdHkgZWxlbWVudHMiIGZvciAlcGVyc29uLmlkZW50Lm1peDspIC0tPgogIDwhLS0gZW5kIG9mIG90aGVyY3JlZGl0Lm1vZHVsZSAtLT4KICA8IS0tIFBhZ2VOdW1zIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhZ2VudW1zLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwYWdlbnVtcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhZ2VudW1zLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBhZ2VudW1zLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhZ2VudW1zLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFnZW51bXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBhZ2VudW1zLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcGFnZW51bXMubW9kdWxlIC0tPgogIDwhLS0gUGVyc29uYWwgaWRlbnRpdHkgZWxlbWVudHMgLi4uLi4uLiAtLT4KICA8IS0tCiAgICBUaGVzZSBlbGVtZW50cyBhcmUgdXNlZCBvbmx5IHdpdGhpbiBBdXRob3IsIEVkaXRvciwgYW5kCiAgICBPdGhlckNyZWRpdC4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29udHJpYi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29udHJpYiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnRyaWIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29udHJpYi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb250cmliLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29udHJpYi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29udHJpYi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbnRyaWIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmaXJzdG5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZpcnN0bmFtZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZpcnN0bmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmaXJzdG5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmlyc3RuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZmlyc3RuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmaXJzdG5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmaXJzdG5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJob25vcmlmaWMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imhvbm9yaWZpYyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imhvbm9yaWZpYy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBob25vcmlmaWMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaG9ub3JpZmljLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaG9ub3JpZmljLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBob25vcmlmaWMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBob25vcmlmaWMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaW5lYWdlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJsaW5lYWdlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZWFnZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBsaW5lYWdlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmVhZ2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lYWdlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBsaW5lYWdlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGluZWFnZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im90aGVybmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib3RoZXJuYW1lIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3RoZXJuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG90aGVybmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvdGhlcm5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvdGhlcm5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG90aGVybmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG90aGVybmFtZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1cm5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN1cm5hbWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdXJuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN1cm5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3VybmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1cm5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN1cm5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzdXJuYW1lLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBwZXJzb24uaWRlbnQubW9kdWxlIC0tPgogIDwhLS0gUHJpbnRIaXN0b3J5IC4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJpbnRoaXN0b3J5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwcmludGhpc3RvcnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmludGhpc3RvcnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJpbnRoaXN0b3J5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByaW50aGlzdG9yeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByaW50aGlzdG9yeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJpbnRoaXN0b3J5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHJpbnRoaXN0b3J5Lm1vZHVsZSAtLT4KICA8IS0tIFByb2R1Y3ROYW1lIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb2R1Y3RuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwcm9kdWN0bmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9ImRvY2luZm8uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2R1Y3RuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByb2R1Y3RuYW1lLmVsZW1lbnQgLS0+CiAgPCEtLSBDbGFzczogTW9yZSBwcmVjaXNlbHkgaWRlbnRpZmllcyB0aGUgaXRlbSB0aGUgZWxlbWVudCBuYW1lcyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvZHVjdG5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIiBkZWZhdWx0PSJ0cmFkZSI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlcnZpY2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idHJhZGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVnaXN0ZXJlZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb3B5cmlnaHQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2R1Y3RuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwcm9kdWN0bmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByb2R1Y3RuYW1lLm1vZHVsZSAtLT4KICA8IS0tIFByb2R1Y3ROdW1iZXIgLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb2R1Y3RudW1iZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InByb2R1Y3RudW1iZXIiIHN1YnN0aXR1dGlvbkdyb3VwPSJkb2NpbmZvLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9kdWN0bnVtYmVyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByb2R1Y3RudW1iZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvZHVjdG51bWJlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2R1Y3RudW1iZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByb2R1Y3RudW1iZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcm9kdWN0bnVtYmVyLm1vZHVsZSAtLT4KICA8IS0tIFB1YkRhdGUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InB1YmRhdGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InB1YmRhdGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwdWJkYXRlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHB1YmRhdGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHViZGF0ZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InB1YmRhdGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHB1YmRhdGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwdWJkYXRlLm1vZHVsZSAtLT4KICA8IS0tIFB1Ymxpc2hlciAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InB1Ymxpc2hlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHVibGlzaGVyIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icHVibGlzaGVybmFtZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYWRkcmVzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwdWJsaXNoZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHVibGlzaGVyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InB1Ymxpc2hlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InB1Ymxpc2hlci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHVibGlzaGVyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHVibGlzaGVyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHVibGlzaGVybmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHVibGlzaGVybmFtZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InB1Ymxpc2hlcm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHVibGlzaGVybmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwdWJsaXNoZXJuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHVibGlzaGVybmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHVibGlzaGVybmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHB1Ymxpc2hlcm5hbWUubW9kdWxlIC0tPgogIDwhLS0gQWRkcmVzcyAoZGVmaW5lZCBlbHNld2hlcmUgaW4gdGhpcyBzZWN0aW9uKSAtLT4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXIuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBQdWJzTnVtYmVyIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwdWJzbnVtYmVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwdWJzbnVtYmVyIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHVic251bWJlci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwdWJzbnVtYmVyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InB1YnNudW1iZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwdWJzbnVtYmVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwdWJzbnVtYmVyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHVic251bWJlci5tb2R1bGUgLS0+CiAgPCEtLSBSZWxlYXNlSW5mbyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWxlYXNlaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVsZWFzZWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWxlYXNlaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWxlYXNlaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWxlYXNlaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlbGVhc2VpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWxlYXNlaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlbGVhc2VpbmZvLm1vZHVsZSAtLT4KICA8IS0tIFJldkhpc3RvcnkgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldmhpc3Rvcnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJldmhpc3RvcnkiIHN1YnN0aXR1dGlvbkdyb3VwPSJkb2NpbmZvLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmV2aXNpb24iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2aGlzdG9yeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZXZoaXN0b3J5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldmhpc3RvcnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZoaXN0b3J5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZXZoaXN0b3J5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmV2aGlzdG9yeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldmlzaW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZXZpc2lvbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJldm51bWJlciIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZGF0ZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYXV0aG9yaW5pdGlhbHMiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJldnJlbWFyayIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXZkZXNjcmlwdGlvbiIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZpc2lvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZXZpc2lvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXZpc2lvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldmlzaW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZXZpc2lvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJldmlzaW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2bnVtYmVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZXZudW1iZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZudW1iZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmV2bnVtYmVyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldm51bWJlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldm51bWJlci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmV2bnVtYmVyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmV2bnVtYmVyLm1vZHVsZSAtLT4KICA8IS0tIERhdGUgKGRlZmluZWQgZWxzZXdoZXJlIGluIHRoaXMgc2VjdGlvbikgLS0+CiAgPCEtLSBBdXRob3JJbml0aWFscyAoZGVmaW5lZCBlbHNld2hlcmUgaW4gdGhpcyBzZWN0aW9uKSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2cmVtYXJrLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZXZyZW1hcmsiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZyZW1hcmsuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmV2cmVtYXJrLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldnJlbWFyay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldnJlbWFyay5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmV2cmVtYXJrLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmV2cmVtYXJrLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2ZGVzY3JpcHRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJldmRlc2NyaXB0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJldmRlc2NyaXB0aW9uLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZkZXNjcmlwdGlvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZXZkZXNjcmlwdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXZkZXNjcmlwdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldmRlc2NyaXB0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZXZkZXNjcmlwdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJldmRlc2NyaXB0aW9uLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiByZXZoaXN0b3J5LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gU2VyaWVzVm9sTnVtcyAuLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VyaWVzdm9sbnVtcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VyaWVzdm9sbnVtcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlcmllc3ZvbG51bXMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VyaWVzdm9sbnVtcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZXJpZXN2b2xudW1zLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VyaWVzdm9sbnVtcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VyaWVzdm9sbnVtcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlcmllc3ZvbG51bXMubW9kdWxlIC0tPgogIDwhLS0gVm9sdW1lTnVtIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idm9sdW1lbnVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2b2x1bWVudW0iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2b2x1bWVudW0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygdm9sdW1lbnVtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZvbHVtZW51bS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZvbHVtZW51bS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygdm9sdW1lbnVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygdm9sdW1lbnVtLm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBlbmQgb2YgZG9jaW5mby5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBJbmxpbmUsIGxpbmssIGFuZCB1YmlxdWl0b3VzIGVsZW1lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gVGVjaG5pY2FsIGFuZCBjb21wdXRlciB0ZXJtcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWNjZWwucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFjY2VsIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhY2NlbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhY2NlbC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhY2NlbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFjY2VsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhY2NlbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFjY2VsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWN0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhY3Rpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhY3Rpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWN0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFjdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWN0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhY3Rpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhY3Rpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcHBsaWNhdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXBwbGljYXRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcHBsaWNhdGlvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhcHBsaWNhdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcHBsaWNhdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJoYXJkd2FyZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzb2Z0d2FyZSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcHBsaWNhdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXBwbGljYXRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhcHBsaWNhdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNsYXNzbmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2xhc3NuYW1lIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjbGFzc25hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY2xhc3NuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNsYXNzbmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNsYXNzbmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY2xhc3NuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2xhc3NuYW1lLm1vZHVsZSAtLT4KICA8IS0tCiAgICBDTyBpcyBhIGNhbGxvdXQgYXJlYSBvZiB0aGUgTGluZUNvbHVtbiB1bml0IHR5cGUgKGEgc2luZ2xlIGNoYXJhY3RlcgogICAgcG9zaXRpb24pOyB0aGUgcG9zaXRpb24gaXMgZGlyZWN0bHkgaW5kaWNhdGVkIGJ5IHRoZSBsb2NhdGlvbiBvZiBDTy4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY28ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY28uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY28uZWxlbWVudCAtLT4KICA8IS0tIGJ1ZyBudW1iZXIvc3ltYm9sIG92ZXJyaWRlIG9yIGluaXRpYWxpemF0aW9uIC0tPgogIDwhLS0gdG8gYW55IHJlbGF0ZWQgaW5mb3JtYXRpb24gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kcy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlkcmVxLmNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvLm1vZHVsZSAtLT4KICA8IS0tIENPUkVGIGlzIGEgcmVmZXJlbmNlIHRvIGEgQ08gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvcmVmLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb3JlZiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvcmVmLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvcmVmLmVsZW1lbnQgLS0+CiAgPCEtLSBidWcgbnVtYmVyL3N5bWJvbCBvdmVycmlkZSBvciBpbml0aWFsaXphdGlvbiAtLT4KICA8IS0tIHRvIGFueSByZWxhdGVkIGluZm9ybWF0aW9uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3JlZi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHJlcS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvcmVmLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb3JlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvcmVmLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29tbWFuZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29tbWFuZCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1hbmQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29tbWFuZC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb21tYW5kLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tYW5kLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb21tYW5kLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29tbWFuZC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbXB1dGVyb3V0cHV0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb21wdXRlcm91dHB1dCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21wdXRlcm91dHB1dC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb21wdXRlcm91dHB1dC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb21wdXRlcm91dHB1dC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tcHV0ZXJvdXRwdXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbXB1dGVyb3V0cHV0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29tcHV0ZXJvdXRwdXQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJkYXRhYmFzZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZGF0YWJhc2UiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJkYXRhYmFzZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBkYXRhYmFzZS5lbGVtZW50IC0tPgogIDwhLS0gQ2xhc3M6IFR5cGUgb2YgZGF0YWJhc2UgdGhlIGVsZW1lbnQgbmFtZXM7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImRhdGFiYXNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5hbWUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idGFibGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZmllbGQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ia2V5MSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJrZXkyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlY29yZCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJkYXRhYmFzZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZGF0YWJhc2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBkYXRhYmFzZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVtYWlsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJlbWFpbCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVtYWlsLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGVtYWlsLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVtYWlsLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZW1haWwucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGVtYWlsLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZW1haWwubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlbnZhci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZW52YXIiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVudmFyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGVudmFyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVudmFyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZW52YXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGVudmFyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZW52YXIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcnJvcmNvZGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImVycm9yY29kZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXJyb3Jjb2RlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGVycm9yY29kZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcnJvcmNvZGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVycm9yY29kZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZXJyb3Jjb2RlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZXJyb3Jjb2RlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXJyb3JuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJlcnJvcm5hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVycm9ybmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlcnJvcm5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXJyb3JuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXJyb3JuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlcnJvcm5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBlcnJvcm5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcnJvcnRleHQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImVycm9ydGV4dCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXJyb3J0ZXh0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGVycm9ydGV4dC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcnJvcnRleHQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcnJvcnRleHQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGVycm9ydGV4dC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVycm9ydGV4dC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVycm9ydHlwZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXJyb3J0eXBlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcnJvcnR5cGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZXJyb3J0eXBlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVycm9ydHlwZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVycm9ydHlwZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZXJyb3J0eXBlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZXJyb3J0eXBlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmlsZW5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZpbGVuYW1lIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZmlsZW5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZmlsZW5hbWUuZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBUeXBlIG9mIGZpbGVuYW1lIHRoZSBlbGVtZW50IG5hbWVzOyBubyBkZWZhdWx0IC0tPgogIDwhLS0KICAgIFBhdGg6IFNlYXJjaCBwYXRoIChwb3NzaWJseSBzeXN0ZW0tc3BlY2lmaWMpIGluIHdoaWNoCiAgICBmaWxlIGNhbiBiZSBmb3VuZAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmaWxlbmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJoZWFkZXJmaWxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBhcnRpdGlvbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkZXZpY2VmaWxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpYnJhcnlmaWxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRpcmVjdG9yeSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJleHRlbnNpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic3ltbGluayIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwYXRoIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZpbGVuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmaWxlbmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZpbGVuYW1lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY3Rpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZ1bmN0aW9uIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZnVuY3Rpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZnVuY3Rpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY3Rpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmN0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmdW5jdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZ1bmN0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3VpYnV0dG9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJndWlidXR0b24iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjY2VsIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWlidXR0b24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ3VpYnV0dG9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aWJ1dHRvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3VpYnV0dG9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBndWlidXR0b24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBndWlidXR0b24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWlpY29uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJndWlpY29uIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhY2NlbCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3VpaWNvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBndWlpY29uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aWljb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aWljb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGd1aWljb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBndWlpY29uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3VpbGFiZWwucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imd1aWxhYmVsIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhY2NlbCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3VpbGFiZWwuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ3VpbGFiZWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3VpbGFiZWwuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aWxhYmVsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBndWlsYWJlbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGd1aWxhYmVsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3VpbWVudS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ3VpbWVudSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYWNjZWwiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aW1lbnUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ3VpbWVudS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWltZW51LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWltZW51LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBndWltZW51LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ3VpbWVudS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aW1lbnVpdGVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJndWltZW51aXRlbSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYWNjZWwiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aW1lbnVpdGVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGd1aW1lbnVpdGVtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aW1lbnVpdGVtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWltZW51aXRlbS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ3VpbWVudWl0ZW0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBndWltZW51aXRlbS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aXN1Ym1lbnUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imd1aXN1Ym1lbnUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjY2VsIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWlzdWJtZW51LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGd1aXN1Ym1lbnUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3Vpc3VibWVudS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3Vpc3VibWVudS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ3Vpc3VibWVudS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGd1aXN1Ym1lbnUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJoYXJkd2FyZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaGFyZHdhcmUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJoYXJkd2FyZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBoYXJkd2FyZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJoYXJkd2FyZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaGFyZHdhcmUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGhhcmR3YXJlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaGFyZHdhcmUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbnRlcmZhY2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImludGVyZmFjZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYWNjZWwiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImludGVyZmFjZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbnRlcmZhY2UuZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBUeXBlIG9mIHRoZSBJbnRlcmZhY2UgaXRlbTsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW50ZXJmYWNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbnRlcmZhY2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGludGVyZmFjZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGludGVyZmFjZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImtleWNhcC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ia2V5Y2FwIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5Y2FwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGtleWNhcC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJrZXljYXAuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleWNhcC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Yga2V5Y2FwLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Yga2V5Y2FwLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5Y29kZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ia2V5Y29kZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5Y29kZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBrZXljb2RlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImtleWNvZGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXljb2RlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBrZXljb2RlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Yga2V5Y29kZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImtleWNvbWJvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJrZXljb21ibyIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ia2V5Y2FwIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJrZXljb21ibyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ia2V5c3ltIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtb3VzZWJ1dHRvbiIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5Y29tYm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Yga2V5Y29tYm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5Y29tYm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXlhY3Rpb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleWNvbWJvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBrZXljb21iby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGtleWNvbWJvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5c3lzbS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ia2V5c3ltIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXlzeW0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Yga2V5c3ltLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImtleXN5bS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleXN5c20ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGtleXN5bS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGtleXN5bS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmVhbm5vdGF0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJsaW5lYW5ub3RhdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmVhbm5vdGF0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxpbmVhbm5vdGF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmVhbm5vdGF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZWFubm90YXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxpbmVhbm5vdGF0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGluZWFubm90YXRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaXRlcmFsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJsaXRlcmFsIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGl0ZXJhbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBsaXRlcmFsLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpdGVyYWwuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpdGVyYWwucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxpdGVyYWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBsaXRlcmFsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29uc3RhbnQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbnN0YW50IiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25zdGFudC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb25zdGFudC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25zdGFudC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW1pdCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uc3RhbnQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbnN0YW50LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29uc3RhbnQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2YXJuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2YXJuYW1lIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2YXJuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZhcm5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmFybmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZhcm5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZhcm5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB2YXJuYW1lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWFya3VwLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtYXJrdXAiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1hcmt1cC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtYXJrdXAuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWFya3VwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWFya3VwLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtYXJrdXAuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtYXJrdXAubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZWRpYWxhYmVsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtZWRpYWxhYmVsIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZWRpYWxhYmVsLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1lZGlhbGFiZWwuZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBUeXBlIG9mIG1lZGl1bSBuYW1lZCBieSB0aGUgZWxlbWVudDsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWVkaWFsYWJlbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjYXJ0cmlkZ2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2Ryb20iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZGlzayIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0YXBlIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZWRpYWxhYmVsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtZWRpYWxhYmVsLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWVkaWFsYWJlbC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lbnVjaG9pY2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1lbnVjaG9pY2UiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNob3J0Y3V0Ii8+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imd1aWJ1dHRvbiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJndWlpY29uIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imd1aWxhYmVsIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imd1aW1lbnUiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3VpbWVudWl0ZW0iLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3Vpc3VibWVudSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbnRlcmZhY2UiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWVudWNob2ljZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtZW51Y2hvaWNlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lbnVjaG9pY2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1lbnVjaG9pY2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1lbnVjaG9pY2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtZW51Y2hvaWNlLm1vZHVsZSAtLT4KICA8IS0tIFNlZSBhbHNvIEtleUNvbWJvIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaG9ydGN1dC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2hvcnRjdXQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImtleWNhcCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ia2V5Y29tYm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImtleXN5bSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibW91c2VidXR0b24iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNob3J0Y3V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNob3J0Y3V0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNob3J0Y3V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5YWN0aW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaG9ydGN1dC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2hvcnRjdXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzaG9ydGN1dC5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgbWVudWNob2ljZS5jb250ZW50Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibW91c2VidXR0b24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1vdXNlYnV0dG9uIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3VzZWJ1dHRvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtb3VzZWJ1dHRvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtb3VzZWJ1dHRvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW91c2VidXR0b24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1vdXNlYnV0dG9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbW91c2VidXR0b24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2d0ZXh0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2d0ZXh0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNndGV4dC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2d0ZXh0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ3RleHQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2d0ZXh0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2d0ZXh0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNndGV4dC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9wdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib3B0aW9uIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3B0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG9wdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcHRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvcHRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG9wdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG9wdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9wdGlvbmFsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvcHRpb25hbCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9wdGlvbmFsLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG9wdGlvbmFsLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9wdGlvbmFsLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3B0aW9uYWwucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG9wdGlvbmFsLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb3B0aW9uYWwubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYXJhbWV0ZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBhcmFtZXRlciIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcmFtZXRlci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwYXJhbWV0ZXIuZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBUeXBlIG9mIHRoZSBQYXJhbWV0ZXI7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcmFtZXRlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb21tYW5kIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImZ1bmN0aW9uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im9wdGlvbiIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJhbWV0ZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBhcmFtZXRlci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBhcmFtZXRlci5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb21wdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHJvbXB0IiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbyIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvbXB0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByb21wdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9tcHQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb21wdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJvbXB0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHJvbXB0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvcGVydHkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InByb3BlcnR5IiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvcGVydHkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJvcGVydHkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvcGVydHkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb3BlcnR5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwcm9wZXJ0eS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByb3BlcnR5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVwbGFjZWFibGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlcGxhY2VhYmxlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im9wdGlvbmFsIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYmFzZS5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXBsYWNlYWJsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZXBsYWNlYWJsZS5lbGVtZW50IC0tPgogIDwhLS0KICAgIENsYXNzOiBUeXBlIG9mIGluZm9ybWF0aW9uIHRoZSBlbGVtZW50IHJlcHJlc2VudHM7IG5vCiAgICBkZWZhdWx0CiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlcGxhY2VhYmxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvbW1hbmQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZnVuY3Rpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3B0aW9uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBhcmFtZXRlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVwbGFjZWFibGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlcGxhY2VhYmxlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVwbGFjZWFibGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXR1cm52YWx1ZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmV0dXJudmFsdWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldHVybnZhbHVlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJldHVybnZhbHVlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldHVybnZhbHVlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV0dXJudmFsdWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJldHVybnZhbHVlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmV0dXJudmFsdWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZ21sdGFnLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZ21sdGFnIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZ21sdGFnLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNnbWx0YWcuZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBUeXBlIG9mIFNHTUwgY29uc3RydWN0IHRoZSBlbGVtZW50IG5hbWVzOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZ21sdGFnLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImF0dHJpYnV0ZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhdHR2YWx1ZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJlbGVtZW50Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImVuZHRhZyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJlbXB0eXRhZyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJnZW5lbnRpdHkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibnVtY2hhcnJlZiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwYXJhbWVudGl0eSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwaSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ4bWxwaSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzdGFydHRhZyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZ21sY29tbWVudCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2dtbHRhZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2dtbHRhZy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNnbWx0YWcubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdHJ1Y3RmaWVsZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3RydWN0ZmllbGQiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0cnVjdGZpZWxkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN0cnVjdGZpZWxkLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0cnVjdGZpZWxkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RydWN0ZmllbGQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN0cnVjdGZpZWxkLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3RydWN0ZmllbGQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdHJ1Y3RuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdHJ1Y3RuYW1lIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdHJ1Y3RuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN0cnVjdG5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RydWN0bmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0cnVjdG5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN0cnVjdG5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzdHJ1Y3RuYW1lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3ltYm9sLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzeW1ib2wiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5bWJvbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzeW1ib2wuZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBUeXBlIG9mIHN5bWJvbDsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3ltYm9sLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbWl0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzeW1ib2wucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN5bWJvbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN5bWJvbC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN5c3RlbWl0ZW0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN5c3RlbWl0ZW0iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhY3JvbnltIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbyIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3lzdGVtaXRlbS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzeXN0ZW1pdGVtLmVsZW1lbnQgLS0+CiAgPCEtLSBDbGFzczogVHlwZSBvZiBzeXN0ZW0gaXRlbSB0aGUgZWxlbWVudCBuYW1lczsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3lzdGVtaXRlbS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb25zdGFudCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJldmVudCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJldmVudGhhbmRsZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZG9tYWlubmFtZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJmcWRvbWFpbm5hbWUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXBhZGRyZXNzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5ldG1hc2siLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZXRoZXJhZGRyZXNzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imdyb3VwbmFtZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaWJyYXJ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1hY3JvIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im9zbmFtZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJmaWxlc3lzdGVtIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlc291cmNlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InN5c3RlbW5hbWUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idXNlcm5hbWUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibmV3c2dyb3VwIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5c3RlbWl0ZW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN5c3RlbWl0ZW0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzeXN0ZW1pdGVtLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9rZW4ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRva2VuIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2tlbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2tlbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2tlbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRva2VuLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2tlbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRva2VuLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idHlwZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idHlwZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idHlwZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0eXBlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InR5cGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0eXBlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0eXBlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdHlwZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InVzZXJpbnB1dC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idXNlcmlucHV0IiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY28iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InVzZXJpbnB1dC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB1c2VyaW5wdXQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idXNlcmlucHV0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ1c2VyaW5wdXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHVzZXJpbnB1dC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHVzZXJpbnB1dC5tb2R1bGUgLS0+CiAgPCEtLSBHZW5lcmFsIHdvcmRzIGFuZCBwaHJhc2VzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhYmJyZXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFiYnJldiIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9IndvcmQuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWJicmV2LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFiYnJldi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhYmJyZXYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhYmJyZXYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFiYnJldi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFiYnJldi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFjcm9ueW0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFjcm9ueW0iIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ3b3JkLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFjcm9ueW0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWNyb255bS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhY3JvbnltLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWNyb255bS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWNyb255bS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFjcm9ueW0ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXRhdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2l0YXRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNpdGF0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNpdGF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNpdGF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0YXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNpdGF0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2l0YXRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXRlcmVmZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNpdGVyZWZlbnRyeSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVmZW50cnl0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJtYW52b2xudW0iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0ZXJlZmVudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNpdGVyZWZlbnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXRlcmVmZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaXRlcmVmZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNpdGVyZWZlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNpdGVyZWZlbnRyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmVudHJ5dGl0bGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZmVudHJ5dGl0bGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZlbnRyeXRpdGxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5dGl0bGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZW50cnl0aXRsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVudHJ5dGl0bGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5dGl0bGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZlbnRyeXRpdGxlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibmFtdm9sbnVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtYW52b2xudW0iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0id29yZC5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtYW52b2xudW0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWFudm9sbnVtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1hbnZvbG51bS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im5hbXZvbG51bS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWFudm9sbnVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWFudm9sbnVtLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2l0ZXRpdGxlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjaXRldGl0bGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNpdGV0aXRsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjaXRldGl0bGUuZWxlbWVudCAtLT4KICA8IS0tIFB1Yndvcms6IEdlbnJlIG9mIHB1Ymxpc2hlZCB3b3JrIGNpdGVkOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXRldGl0bGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InB1YndvcmsiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhcnRpY2xlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvb2siLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhcHRlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwYXJ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlZmVudHJ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3Rpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iam91cm5hbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZXJpZXMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2V0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1hbnVzY3JpcHQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNpdGV0aXRsZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY2l0ZXRpdGxlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2l0ZXRpdGxlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZW1waGFzaXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImVtcGhhc2lzIiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlbXBoYXNpcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlbXBoYXNpcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlbXBoYXNpcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVtcGhhc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlbXBoYXNpcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVtcGhhc2lzLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmlyc3R0ZXJtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmaXJzdHRlcm0iIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ3b3JkLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZpcnN0dGVybS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmaXJzdHRlcm0uZWxlbWVudCAtLT4KICA8IS0tIHRvIEdsb3NzRW50cnkgb3Igb3RoZXIgZXhwbGFuYXRpb24gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZpcnN0dGVybS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmQuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaXJzdHRlcm0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZpcnN0dGVybS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZpcnN0dGVybS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvcmVpZ25waHJhc2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZvcmVpZ25waHJhc2UiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZvcmVpZ25waHJhc2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZm9yZWlnbnBocmFzZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmb3JlaWducGhyYXNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZm9yZWlnbnBocmFzZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZm9yZWlnbnBocmFzZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZvcmVpZ25waHJhc2UubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc3Rlcm0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdsb3NzdGVybSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3N0ZXJtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdsb3NzdGVybS5lbGVtZW50IC0tPgogIDwhLS0gdG8gR2xvc3NFbnRyeSBpZiBHbG9zc3Rlcm0gdXNlZCBpbiB0ZXh0IC0tPgogIDwhLS0KICAgIEJhc2VGb3JtOiBQcm92aWRlcyB0aGUgZm9ybSBvZiBHbG9zc1Rlcm0gdG8gYmUgdXNlZAogICAgZm9yIGluZGV4aW5nCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzdGVybS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmQuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhc2Vmb3JtIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc3Rlcm0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3NzdGVybS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzdGVybS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBocmFzZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGhyYXNlIiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwaHJhc2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcGhyYXNlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBocmFzZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBocmFzZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcGhyYXNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcGhyYXNlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icXVvdGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InF1b3RlIiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJxdW90ZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBxdW90ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxdW90ZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InF1b3RlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBxdW90ZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHF1b3RlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3NzY3JpcHQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN1YnNjcmlwdCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlbXBoYXNpcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVwbGFjZWFibGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN5bWJvbCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJvdGhlci5jaGFyLmNsYXNzIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJzY3JpcHQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3Vic2NyaXB0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YnNjcmlwdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNzc2NyaXB0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdWJzY3JpcHQuYXR0bGlzdCAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdXBlcnNjcmlwdCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlbXBoYXNpcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVwbGFjZWFibGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN5bWJvbCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJvdGhlci5jaGFyLmNsYXNzIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdXBlcnNjcmlwdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdXBlcnNjcmlwdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdXBlcnNjcmlwdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNzc2NyaXB0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdXBlcnNjcmlwdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNzc2NyaXB0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idHJhZGVtYXJrLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0cmFkZW1hcmsiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJvdGhlci5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVncmFwaGljIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVtZWRpYW9iamVjdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZW1waGFzaXMiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRyYWRlbWFyay5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0cmFkZW1hcmsuZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBNb3JlIHByZWNpc2VseSBpZGVudGlmaWVzIHRoZSBpdGVtIHRoZSBlbGVtZW50IG5hbWVzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0cmFkZW1hcmsuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIiBkZWZhdWx0PSJ0cmFkZSI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlcnZpY2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idHJhZGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVnaXN0ZXJlZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb3B5cmlnaHQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRyYWRlbWFyay5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdHJhZGVtYXJrLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdHJhZGVtYXJrLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0id29yZGFzd29yZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0id29yZGFzd29yZCIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9IndvcmQuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0id29yZGFzd29yZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB3b3JkYXN3b3JkLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9IndvcmRhc3dvcmQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ3b3JkYXN3b3JkLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB3b3JkYXN3b3JkLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygd29yZGFzd29yZC5tb2R1bGUgLS0+CiAgPCEtLSBMaW5rcyBhbmQgY3Jvc3MtcmVmZXJlbmNlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaW5rLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJsaW5rIiBzdWJzdGl0dXRpb25Hcm91cD0ibGluay5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluay5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBsaW5rLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgRW5kdGVybTogSUQgb2YgZWxlbWVudCBjb250YWluaW5nIHRleHQgdGhhdCBpcyB0byBiZQogICAgZmV0Y2hlZCBmcm9tIGVsc2V3aGVyZSBpbiB0aGUgZG9jdW1lbnQgdG8gYXBwZWFyIGFzCiAgICB0aGUgY29udGVudCBvZiB0aGlzIGVsZW1lbnQKICAtLT4KICA8IS0tIHRvIGxpbmtlZC10byBvYmplY3QgLS0+CiAgPCEtLSBUeXBlOiBGcmVlbHkgYXNzaWduYWJsZSBwYXJhbWV0ZXIgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmsuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVuZHRlcm0iIHR5cGU9InhzOklEUkVGIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kcmVxLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBsaW5rLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGluay5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9saW5rLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvbGluayIgc3Vic3RpdHV0aW9uR3JvdXA9ImxpbmsuY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9saW5rLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG9saW5rLmVsZW1lbnQgLS0+CiAgPCEtLSBUYXJnZXREb2NFbnQ6IE5hbWUgb2YgYW4gZW50aXR5IHRvIGJlIHRoZSB0YXJnZXQgb2YgdGhlIGxpbmsgLS0+CiAgPCEtLQogICAgTGlua01vZGU6IElEIG9mIGEgTW9kZVNwZWMgY29udGFpbmluZyBpbnN0cnVjdGlvbnMgZm9yCiAgICBvcGVyYXRpbmcgb24gdGhlIGVudGl0eSBuYW1lZCBieSBUYXJnZXREb2NFbnQKICAtLT4KICA8IS0tIExvY2FsSW5mbzogSW5mb3JtYXRpb24gdGhhdCBtYXkgYmUgcGFzc2VkIHRvIE1vZGVTcGVjIC0tPgogIDwhLS0gVHlwZTogRnJlZWx5IGFzc2lnbmFibGUgcGFyYW1ldGVyIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvbGluay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGFyZ2V0ZG9jZW50IiB0eXBlPSJ4czpFTlRJVFkiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGlua21vZGUiIHR5cGU9InhzOklEUkVGIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxvY2FsaW5mbyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRhcmdldGRvYyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0YXJnZXRwdHIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9saW5rLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvbGluay5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG9saW5rLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idWxpbmsucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InVsaW5rIiBzdWJzdGl0dXRpb25Hcm91cD0ibGluay5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idWxpbmsuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdWxpbmsuZWxlbWVudCAtLT4KICA8IS0tIFVSTDogdW5pZm9ybSByZXNvdXJjZSBsb2NhdG9yOyB0aGUgdGFyZ2V0IG9mIHRoZSBVTGluayAtLT4KICA8IS0tIFR5cGU6IEZyZWVseSBhc3NpZ25hYmxlIHBhcmFtZXRlciAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idWxpbmsuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVybCIgdXNlPSJyZXF1aXJlZCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ1bGluay5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdWxpbmsuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB1bGluay5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvb3Rub3RlcmVmLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmb290bm90ZXJlZiIgc3Vic3RpdHV0aW9uR3JvdXA9InhyZWYuY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZvb3Rub3RlcmVmLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZvb3Rub3RlcmVmLmVsZW1lbnQgLS0+CiAgPCEtLSB0byBmb290bm90ZSBjb250ZW50IHN1cHBsaWVkIGVsc2V3aGVyZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZm9vdG5vdGVyZWYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kcmVxLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmb290bm90ZXJlZi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZm9vdG5vdGVyZWYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmb290bm90ZXJlZi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InhyZWYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InhyZWYiIHN1YnN0aXR1dGlvbkdyb3VwPSJ4cmVmLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4cmVmLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHhyZWYuZWxlbWVudCAtLT4KICA8IS0tCiAgICBFbmR0ZXJtOiBJRCBvZiBlbGVtZW50IGNvbnRhaW5pbmcgdGV4dCB0aGF0IGlzIHRvIGJlCiAgICBmZXRjaGVkIGZyb20gZWxzZXdoZXJlIGluIHRoZSBkb2N1bWVudCB0byBhcHBlYXIgYXMKICAgIHRoZSBjb250ZW50IG9mIHRoaXMgZWxlbWVudAogIC0tPgogIDwhLS0gdG8gbGlua2VkLXRvIG9iamVjdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ieHJlZi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW5kdGVybSIgdHlwZT0ieHM6SURSRUYiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRyZXEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4cmVmLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB4cmVmLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgeHJlZi5tb2R1bGUgLS0+CiAgPCEtLSBVYmlxdWl0b3VzIGVsZW1lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhbmNob3Iucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFuY2hvciI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFuY2hvci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhbmNob3IuZWxlbWVudCAtLT4KICA8IS0tIHJlcXVpcmVkIC0tPgogIDwhLS0gcmVwbGFjZXMgTGFuZyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYW5jaG9yLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaWRyZXEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVtYXAuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4cmVmbGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZpc2lvbmZsYWcuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlZmZlY3Rpdml0eS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFuY2hvci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYW5jaG9yLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYW5jaG9yLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmVnaW5wYWdlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJiZWdpbnBhZ2UiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiZWdpbnBhZ2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmVnaW5wYWdlLmVsZW1lbnQgLS0+CiAgPCEtLSBQYWdlTnVtOiBOdW1iZXIgb2YgcGFnZSB0aGF0IGJlZ2lucyBhdCB0aGlzIHBvaW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiZWdpbnBhZ2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmVnaW5wYWdlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiZWdpbnBhZ2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiZWdpbnBhZ2UubW9kdWxlIC0tPgogIDwhLS0KICAgIEluZGV4VGVybXMgYXBwZWFyIGluIHRoZSB0ZXh0IGZsb3cgZm9yIGdlbmVyYXRpbmcgb3IgbGlua2luZyBhbgogICAgaW5kZXguCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4dGVybS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5kZXh0ZXJtIiBzdWJzdGl0dXRpb25Hcm91cD0ibmR4dGVybS5jbGFzcyIvPgogIDwhLS0gZW5kIG9mIGluZGV4dGVybS5lbGVtZW50IC0tPgogIDwhLS0KICAgIFNjb3BlOiBJbmRpY2F0ZXMgd2hpY2ggZ2VuZXJhdGVkIGluZGljZXMgdGhlIEluZGV4VGVybQogICAgc2hvdWxkIGFwcGVhciBpbjogR2xvYmFsICh3aG9sZSBkb2N1bWVudCBzZXQpLCBMb2NhbCAodGhpcwogICAgZG9jdW1lbnQgb25seSksIG9yIEFsbCAoYm90aCkKICAtLT4KICA8IS0tCiAgICBTaWduaWZpY2FuY2U6IFdoZXRoZXIgdGhpcyBJbmRleFRlcm0gaXMgdGhlIG1vc3QgcGVydGluZW50CiAgICBvZiBpdHMgc2VyaWVzIChQcmVmZXJyZWQpIG9yIG5vdCAoTm9ybWFsLCB0aGUgZGVmYXVsdCkKICAtLT4KICA8IS0tCiAgICBDbGFzczogSW5kaWNhdGVzIHR5cGUgb2YgSW5kZXhUZXJtOyBkZWZhdWx0IGlzIFNpbmd1bGFyLAogICAgb3IgRW5kT2ZSYW5nZSBpZiBTdGFydFJlZiBpcyBzdXBwbGllZDsgU3RhcnRPZlJhbmdlIHZhbHVlCiAgICBtdXN0IGJlIHN1cHBsaWVkIGV4cGxpY2l0bHkgb24gc3RhcnRzIG9mIHJhbmdlcwogIC0tPgogIDwhLS0KICAgIFN0YXJ0UmVmOiBJRCBvZiB0aGUgSW5kZXhUZXJtIHRoYXQgc3RhcnRzIHRoZSBpbmRleGluZwogICAgcmFuZ2UgZW5kZWQgYnkgdGhpcyBJbmRleFRlcm0KICAtLT4KICA8IS0tCiAgICBab25lOiBJRHMgb2YgdGhlIGVsZW1lbnRzIHRvIHdoaWNoIHRoZSBJbmRleFRlcm0gYXBwbGllcywKICAgIGFuZCBpbmRpY2F0ZXMgdGhhdCB0aGUgSW5kZXhUZXJtIGFwcGxpZXMgdG8gdGhvc2UgZW50aXJlCiAgICBlbGVtZW50cyByYXRoZXIgdGhhbiB0aGUgcG9pbnQgYXQgd2hpY2ggdGhlIEluZGV4VGVybQogICAgb2NjdXJzCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4dGVybS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhZ2VudW0uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjb3BlIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYWxsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imdsb2JhbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsb2NhbCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaWduaWZpY2FuY2UiIGRlZmF1bHQ9Im5vcm1hbCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InByZWZlcnJlZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JtYWwiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzaW5ndWxhciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzdGFydG9mcmFuZ2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZW5kb2ZyYW5nZSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGFydHJlZiIgdHlwZT0ieHM6SURSRUYiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iem9uZSIgdHlwZT0ieHM6SURSRUZTIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleHRlcm0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGluZGV4dGVybS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluZGV4dGVybS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByaW1zZWN0ZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InByaW1hcnkiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmltYXJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByaW1hcnkuZWxlbWVudCAtLT4KICA8IS0tCiAgICBTb3J0QXM6IEFsdGVybmF0ZSBzb3J0IHN0cmluZyBmb3IgaW5kZXggc29ydGluZywgZS5nLiwKICAgICJmb3VydGVlbiIgZm9yIGFuIGVsZW1lbnQgY29udGFpbmluZyAiMTQiCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByaW1hcnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNvcnRhcyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJpbXNlY3Rlci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJpbWFyeS5hdHRsaXN0IC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlY29uZGFyeSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY29uZGFyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWNvbmRhcnkuZWxlbWVudCAtLT4KICA8IS0tCiAgICBTb3J0QXM6IEFsdGVybmF0ZSBzb3J0IHN0cmluZyBmb3IgaW5kZXggc29ydGluZywgZS5nLiwKICAgICJmb3VydGVlbiIgZm9yIGFuIGVsZW1lbnQgY29udGFpbmluZyAiMTQiCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY29uZGFyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic29ydGFzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmltc2VjdGVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWNvbmRhcnkuYXR0bGlzdCAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0ZXJ0aWFyeSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRlcnRpYXJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRlcnRpYXJ5LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU29ydEFzOiBBbHRlcm5hdGUgc29ydCBzdHJpbmcgZm9yIGluZGV4IHNvcnRpbmcsIGUuZy4sCiAgICAiZm91cnRlZW4iIGZvciBhbiBlbGVtZW50IGNvbnRhaW5pbmcgIjE0IgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0ZXJ0aWFyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic29ydGFzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmltc2VjdGVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0ZXJ0aWFyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByaW1zZWN0ZXIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWVzZWVhbHNvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZXNlZWFsc28ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlZS5hdHRsaXN0IC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlZWFsc28iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWVhbHNvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlZWFsc28uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VlYWxzby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZXNlZWFsc28ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgo8L3hzOnNjaGVtYT4KPCEtLSBlbmQgb2Ygc2VlYWxzby5hdHRsaXN0IC0tPgo8IS0tIGVuZCBvZiBzZWVzZWVhbHNvLm1vZHVsZSAtLT4KPCEtLSBlbmQgb2YgaW5kZXh0ZXJtLmNvbnRlbnQubW9kdWxlIC0tPgo8IS0tIEVuZCBvZiBEb2NCb29rIFhNTCBpbmZvcm1hdGlvbiBwb29sIG1vZHVsZSBWNC4yIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4K
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgWE1MIERURCBWNC4yIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkb2Nib29reC5kdGQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDIgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogZG9jYm9va3guZHRkLHYgMS4xMyAyMDAyLzA3LzE3IDE1OjI2OjE2IG53YWxzaCBFeHAgJAogIAogIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnkgYW5kIGRpc3RyaWJ1dGUgdGhlIERvY0Jvb2sgWE1MIERURAogIGFuZCBpdHMgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZQogIGlzIGhlcmVieSBncmFudGVkIGluIHBlcnBldHVpdHksIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodAogIG5vdGljZSBhbmQgdGhpcyBwYXJhZ3JhcGggYXBwZWFyIGluIGFsbCBjb3BpZXMuICBUaGUgY29weXJpZ2h0CiAgaG9sZGVycyBtYWtlIG5vIHJlcHJlc2VudGF0aW9uIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGUgRFREIGZvcgogIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3NlZCBvciBpbXBsaWVkCiAgd2FycmFudHkuCiAgCiAgSWYgeW91IG1vZGlmeSB0aGUgRG9jQm9vayBEVEQgaW4gYW55IHdheSwgZXhjZXB0IGZvciBkZWNsYXJpbmcgYW5kCiAgcmVmZXJlbmNpbmcgYWRkaXRpb25hbCBzZXRzIG9mIGdlbmVyYWwgZW50aXRpZXMgYW5kIGRlY2xhcmluZwogIGFkZGl0aW9uYWwgbm90YXRpb25zLCBsYWJlbCB5b3VyIERURCBhcyBhIHZhcmlhbnQgb2YgRG9jQm9vay4gIFNlZQogIHRoZSBtYWludGVuYW5jZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogIAogIFBsZWFzZSBkaXJlY3QgYWxsIHF1ZXN0aW9ucywgYnVnIHJlcG9ydHMsIG9yIHN1Z2dlc3Rpb25zIGZvcgogIGNoYW5nZXMgdG8gdGhlIGRvY2Jvb2tAbGlzdHMub2FzaXMtb3Blbi5vcmcgbWFpbGluZyBsaXN0LiBGb3IgbW9yZQogIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rLy4KLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIFRoaXMgaXMgdGhlIGRyaXZlciBmaWxlIGZvciBWNC4yIG9mIHRoZSBEb2NCb29rIERURC4KICBQbGVhc2UgdXNlIHRoZSBmb2xsb3dpbmcgZm9ybWFsIHB1YmxpYyBpZGVudGlmaWVyIHRvIGlkZW50aWZ5IGl0OgogIAogICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgogIAogIEZvciBleGFtcGxlLCBpZiB5b3VyIGRvY3VtZW50J3MgdG9wLWxldmVsIGVsZW1lbnQgaXMgQm9vaywgYW5kCiAgeW91IGFyZSB1c2luZyBEb2NCb29rIGRpcmVjdGx5LCB1c2UgdGhlIEZQSSBpbiB0aGUgRE9DVFlQRQogIGRlY2xhcmF0aW9uOgogIAogIDwhRE9DVFlQRSBib29rIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKICAgICAgICAgICAgICAgICAiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgogICAgICAgICAgICAgICAgIFsuLi5dPgogIAogIE9yLCBpZiB5b3UgaGF2ZSBhIGhpZ2hlci1sZXZlbCBkcml2ZXIgZmlsZSB0aGF0IGN1c3RvbWl6ZXMgRG9jQm9vaywKICB1c2UgdGhlIEZQSSBpbiB0aGUgcGFyYW1ldGVyIGVudGl0eSBkZWNsYXJhdGlvbjoKICAKICA8IUVOVElUWSAlIERvY0Jvb2tEVEQgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgogICAgICAgICAgICAgImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCI+CiAgJURvY0Jvb2tEVEQ7CiAgCiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiB0aGUgcGFyYW1ldGVyCiAgZW50aXR5IGFuZCBtb2R1bGUgc2NoZW1lIHVzZWQgaW4gRG9jQm9vaywgY3VzdG9taXppbmcgRG9jQm9vayBhbmQKICBwbGFubmluZyBmb3IgaW50ZXJjaGFuZ2UsIGFuZCBjaGFuZ2VzIG1hZGUgc2luY2UgdGhlIGxhc3QgcmVsZWFzZQogIG9mIERvY0Jvb2suCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRW5hYmxlIFNHTUwgZmVhdHVyZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIE5vdGF0aW9uIGRlY2xhcmF0aW9ucyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+Cjx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+CiAgPHhzOmluY2x1ZGUgc2NoZW1hTG9jYXRpb249ImRibm90bngueHNkIi8+CiAgPHhzOmluY2x1ZGUgc2NoZW1hTG9jYXRpb249ImRicG9vbHgueHNkIi8+CiAgPHhzOmluY2x1ZGUgc2NoZW1hTG9jYXRpb249ImRiaGllcngueHNkIi8+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gSVNPIGNoYXJhY3RlciBlbnRpdHkgc2V0cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIGV1cm8gc2lnbiwgVSsyMEFDIE5FVyAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBEVEQgbW9kdWxlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gSW5mb3JtYXRpb24gcG9vbCAuLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFJlZGVjbGFyYXRpb24gcGxhY2Vob2xkZXIgLi4uLi4gLS0+CiAgPCEtLSBEb2N1bWVudCBoaWVyYXJjaHkgLi4uLi4uLi4uLi4uIC0tPgo8L3hzOnNjaGVtYT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIE90aGVyIGdlbmVyYWwgZW50aXRpZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRW5kIG9mIERvY0Jvb2sgWE1MIERURCBWNC4yIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo=
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgQ0FMUyBUYWJsZSBNb2RlbCBWNC40IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBjYWxzdGJseC5tb2QgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDIgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogIFRoaXMgRFREIGlzIGJhc2VkIG9uIHRoZSBDQUxTIFRhYmxlIE1vZGVsCiAgUFVCTElDICItLy9VU0EtRE9ELy9EVEQgVGFibGUgTW9kZWwgOTUxMDEwLy9FTiIKICAKICAkSWQ6IGNhbHN0Ymx4LmR0ZCx2IDEuMjcgMjAwNS8wMS8yNyAxMzo1MjowMCBud2Fsc2ggRXhwICQKICAKICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5IGFuZCBkaXN0cmlidXRlIHRoZSBEb2NCb29rIERURAogIGFuZCBpdHMgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZQogIGlzIGhlcmVieSBncmFudGVkIGluIHBlcnBldHVpdHksIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodAogIG5vdGljZSBhbmQgdGhpcyBwYXJhZ3JhcGggYXBwZWFyIGluIGFsbCBjb3BpZXMuICBUaGUgY29weXJpZ2h0CiAgaG9sZGVycyBtYWtlIG5vIHJlcHJlc2VudGF0aW9uIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGUgRFREIGZvcgogIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3NlZCBvciBpbXBsaWVkCiAgd2FycmFudHkuCiAgCiAgSWYgeW91IG1vZGlmeSB0aGUgRG9jQm9vayBEVEQgaW4gYW55IHdheSwgZXhjZXB0IGZvciBkZWNsYXJpbmcgYW5kCiAgcmVmZXJlbmNpbmcgYWRkaXRpb25hbCBzZXRzIG9mIGdlbmVyYWwgZW50aXRpZXMgYW5kIGRlY2xhcmluZwogIGFkZGl0aW9uYWwgbm90YXRpb25zLCBsYWJlbCB5b3VyIERURCBhcyBhIHZhcmlhbnQgb2YgRG9jQm9vay4gIFNlZQogIHRoZSBtYWludGVuYW5jZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogIAogIFBsZWFzZSBkaXJlY3QgYWxsIHF1ZXN0aW9ucywgYnVnIHJlcG9ydHMsIG9yIHN1Z2dlc3Rpb25zIGZvcgogIGNoYW5nZXMgdG8gdGhlIGRvY2Jvb2tAbGlzdHMub2FzaXMtb3Blbi5vcmcgbWFpbGluZyBsaXN0LiBGb3IgbW9yZQogIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rLy4KLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIFRoaXMgbW9kdWxlIGNvbnRhaW5zIHRoZSBkZWZpbml0aW9ucyBmb3IgdGhlIENBTFMgVGFibGUgTW9kZWwKICBjb252ZXJ0ZWQgdG8gWE1MLiBJdCBoYXMgYmVlbiBtb2RpZmllZCBzbGlnaHRseSBmb3IgdXNlIGluIHRoZQogIGNvbWJpbmVkIEhUTUwvQ0FMUyBtb2RlbHMgc3VwcG9ydGVkIGJ5IERvY0Jvb2sgVjQuNC4KLS0+CjwhLS0KICBUaGVzZSBkZWZpbml0aW9ucyBhcmUgbm90IGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIHRhYmxlIG1vZGVsLCBidXQgYXJlCiAgdXNlZCBpbiB0aGUgZGVmYXVsdCBDQUxTIHRhYmxlIG1vZGVsIGFuZCBhcmUgdXN1YWxseSBkZWZpbmVkIGVsc2V3aGVyZQogIChhbmQgcHJpb3IgdG8gdGhlIGluY2x1c2lvbiBvZiB0aGlzIHRhYmxlIG1vZHVsZSkgaW4gYSBDQUxTIERURC4KLS0+CjwhLS0KICBubyBpZiB6ZXJvKHMpLAogIHllcyBpZiBhbnkgb3RoZXIgZGlnaXRzIHZhbHVlCi0tPgo8eHM6c2NoZW1hIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiPgogIDx4czppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiIHNjaGVtYUxvY2F0aW9uPSJ4bWwueHNkIi8+CiAgPHhzOnNpbXBsZVR5cGUgbmFtZT0ieWVzb3JubyI+CiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIi8+CiAgPC94czpzaW1wbGVUeXBlPgogIDx4czpncm91cCBuYW1lPSJ0aXRsZXMiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8IS0tIGRlZmF1bHQgZm9yIHVzZSBpbiBlbnRyeSBjb250ZW50IC0tPgogIDwhLS0KICAgIFRoZSBwYXJhbWV0ZXIgZW50aXRpZXMgYXMgZGVmaW5lZCBiZWxvdyBwcm92aWRlIHRoZSBDQUxTIHRhYmxlIG1vZGVsCiAgICBhcyBwdWJsaXNoZWQgKGFzIHBhcnQgb2YgdGhlIEV4YW1wbGUgRFREKSBpbiBNSUwtSERCSy0yODAwMS4KICAgIAogICAgVGhlc2UgZm9sbG93aW5nIGRlY2xhcmF0aW9ucyBwcm92aWRlIHRoZSBDQUxTLWNvbXBsaWFudCBkZWZhdWx0IGRlZmluaXRpb25zCiAgICBmb3IgdGhlc2UgZW50aXRpZXMuICBIb3dldmVyLCB0aGVzZSBlbnRpdGllcyBjYW4gYW5kIHNob3VsZCBiZSByZWRlZmluZWQKICAgIChieSBnaXZpbmcgdGhlIGFwcHJvcHJpYXRlIHBhcmFtZXRlciBlbnRpdHkgZGVjbGFyYXRpb24ocykgcHJpb3IgdG8gdGhlCiAgICByZWZlcmVuY2UgdG8gdGhpcyBUYWJsZSBNb2RlbCBkZWNsYXJhdGlvbiBzZXQgZW50aXR5KSB0byBmaXQgdGhlIG5lZWRzCiAgICBvZiB0aGUgY3VycmVudCBhcHBsaWNhdGlvbi4KICAtLT4KICA8eHM6Z3JvdXAgbmFtZT0idGJsLnRhYmxlLXRpdGxlcy5tZGwiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Z3JvdXAgcmVmPSJ0aXRsZXMiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0idGJsLnRhYmxlLW1haW4ubWRsIj4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRncm91cCIvPgogICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJncmFwaGljIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0YmwudGdyb3VwLm1kbCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sc3BlYyIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNwYW5zcGVjIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aGVhZCIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGZvb3QiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0Ym9keSIvPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmNvbXBsZXhUeXBlPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0YmwudGdyb3VwLmF0dCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRncm91cHN0eWxlIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGJsLnJvdy5tZGwiPgogICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZW50cnkiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlbnRyeXRibCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpjb21wbGV4VHlwZT4KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGJsLmVudHJ5dGJsLm1kbCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sc3BlYyIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNwYW5zcGVjIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aGVhZCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InRib2R5Ii8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Y29tcGxleFR5cGU+CiAgPCEtLSA9PT09PSAgRWxlbWVudCBhbmQgYXR0cmlidXRlIGRlY2xhcmF0aW9ucyBmb2xsb3cuID09PT09IC0tPgogIDx4czplbGVtZW50IG5hbWU9InRhYmxlIiBzdWJzdGl0dXRpb25Hcm91cD0iZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNvbXBsZXhDb250ZW50PgogICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idGJsLnRhYmxlLm1kbCI+CiAgICAgICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YWJsZS5hdHRsaXN0Ii8+CiAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgIDwveHM6Y29tcGxleENvbnRlbnQ+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGFibGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZyYW1lIiB0eXBlPSJ0YmwuZnJhbWUuYXR0dmFsIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHNlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3dzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRibC50YWJsZS5hdHQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJvZHlhdHQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3VyIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0Z3JvdXAiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y29tcGxleENvbnRlbnQ+CiAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0YmwudGdyb3VwLm1kbCI+CiAgICAgICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0Z3JvdXAuYXR0bGlzdCIvPgogICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICA8L3hzOmNvbXBsZXhDb250ZW50PgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRncm91cC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29scyIgdXNlPSJyZXF1aXJlZCIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGJsLnRncm91cC5hdHQiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sc2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvd3NlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imp1c3RpZnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFyIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXJvZmYiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3VyIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb2xzcGVjIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29sc3BlYy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29sc3BlYy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sbnVtIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbG5hbWUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sd2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sc2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvd3NlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imp1c3RpZnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFyIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXJvZmYiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNwYW5zcGVjIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3BhbnNwZWMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNwYW5zcGVjLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lc3QiIHVzZT0icmVxdWlyZWQiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZWVuZCIgdXNlPSJyZXF1aXJlZCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGFubmFtZSIgdXNlPSJyZXF1aXJlZCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm93c2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGVmdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaWdodCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZW50ZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ianVzdGlmeSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjaGFyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hhcm9mZiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGhlYWQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y29tcGxleENvbnRlbnQ+CiAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0YmwuaGRmdC5tZGwiPgogICAgICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGhlYWQuYXR0bGlzdCIvPgogICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICA8L3hzOmNvbXBsZXhDb250ZW50PgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRoZWFkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWlkZGxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRmb290Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNvbXBsZXhDb250ZW50PgogICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idGJsLmhkZnQubWRsIj4KICAgICAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRmb290LmF0dGxpc3QiLz4KICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgPC94czpjb21wbGV4Q29udGVudD4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0Zm9vdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1pZGRsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3VyIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0Ym9keSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjb21wbGV4Q29udGVudD4KICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRibC50Ym9keS5tZGwiPgogICAgICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGJvZHkuYXR0bGlzdCIvPgogICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICA8L3hzOmNvbXBsZXhDb250ZW50PgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRib2R5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWlkZGxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJvdyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjb21wbGV4Q29udGVudD4KICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRibC5yb3cubWRsIj4KICAgICAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvdy5hdHRsaXN0Ii8+CiAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgIDwveHM6Y29tcGxleENvbnRlbnQ+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icm93LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3dzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1pZGRsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3VyIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJlbnRyeXRibCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjb21wbGV4Q29udGVudD4KICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRibC5lbnRyeXRibC5tZGwiPgogICAgICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZW50cnl0YmwuYXR0bGlzdCIvPgogICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICA8L3hzOmNvbXBsZXhDb250ZW50PgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVudHJ5dGJsLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzIiB1c2U9InJlcXVpcmVkIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YmwudGdyb3VwLmF0dCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xuYW1lIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNwYW5uYW1lIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWVzdCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lZW5kIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHNlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3dzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsZWZ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJpZ2h0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNlbnRlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJqdXN0aWZ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNoYXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hhciIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFyb2ZmIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN1ciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGJsLmVudHJ5Lm1kbCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlbnRyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbG5hbWUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZXN0Ii8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWVlbmQiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3Bhbm5hbWUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibW9yZXJvd3MiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sc2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvd3NlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imp1c3RpZnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFyIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXJvZmYiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm90YXRlIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRvcCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJtaWRkbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYm90dG9tIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN1ciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CjwveHM6c2NoZW1hPgo8IS0tIEVuZCBvZiBEb2NCb29rIENBTFMgVGFibGUgTW9kZWwgVjQuNCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4K
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgZG9jdW1lbnQgaGllcmFyY2h5IG1vZHVsZSBWNC40IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkYmhpZXJ4Lm1vZCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDQgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogZGJoaWVyeC5tb2QsdiAxLjM4IDIwMDUvMDEvMjcgMTM6NTI6MDAgbndhbHNoIEV4cCAkCiAgCiAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSBhbmQgZGlzdHJpYnV0ZSB0aGUgRG9jQm9vayBEVEQKICBhbmQgaXRzIGFjY29tcGFueWluZyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUKICBpcyBoZXJlYnkgZ3JhbnRlZCBpbiBwZXJwZXR1aXR5LCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQKICBub3RpY2UgYW5kIHRoaXMgcGFyYWdyYXBoIGFwcGVhciBpbiBhbGwgY29waWVzLiAgVGhlIGNvcHlyaWdodAogIGhvbGRlcnMgbWFrZSBubyByZXByZXNlbnRhdGlvbiBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhlIERURCBmb3IKICBhbnkgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzZWQgb3IgaW1wbGllZAogIHdhcnJhbnR5LgogIAogIElmIHlvdSBtb2RpZnkgdGhlIERvY0Jvb2sgRFREIGluIGFueSB3YXksIGV4Y2VwdCBmb3IgZGVjbGFyaW5nIGFuZAogIHJlZmVyZW5jaW5nIGFkZGl0aW9uYWwgc2V0cyBvZiBnZW5lcmFsIGVudGl0aWVzIGFuZCBkZWNsYXJpbmcKICBhZGRpdGlvbmFsIG5vdGF0aW9ucywgbGFiZWwgeW91ciBEVEQgYXMgYSB2YXJpYW50IG9mIERvY0Jvb2suICBTZWUKICB0aGUgbWFpbnRlbmFuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAKICBQbGVhc2UgZGlyZWN0IGFsbCBxdWVzdGlvbnMsIGJ1ZyByZXBvcnRzLCBvciBzdWdnZXN0aW9ucyBmb3IKICBjaGFuZ2VzIHRvIHRoZSBkb2Nib29rQGxpc3RzLm9hc2lzLW9wZW4ub3JnIG1haWxpbmcgbGlzdC4gRm9yIG1vcmUKICBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay8uCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0KICBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBvdmVyYWxsIGRvY3VtZW50CiAgaGllcmFyY2hpZXMgb2YgRG9jQm9vayBkb2N1bWVudHMuICBJdCBjb3ZlcnMgY29tcHV0ZXIgZG9jdW1lbnRhdGlvbgogIG1hbnVhbHMgYW5kIG1hbnVhbCBmcmFnbWVudHMsIGFzIHdlbGwgYXMgcmVmZXJlbmNlIGVudHJpZXMgKHN1Y2ggYXMKICBtYW4gcGFnZXMpIGFuZCB0ZWNobmljYWwgam91cm5hbHMgb3IgYW50aG9sb2dpZXMgY29udGFpbmluZwogIGFydGljbGVzLgogIAogIFRoaXMgbW9kdWxlIGRlcGVuZHMgb24gdGhlIERvY0Jvb2sgaW5mb3JtYXRpb24gcG9vbCBtb2R1bGUuICBBbGwKICBlbGVtZW50cyBhbmQgZW50aXRpZXMgcmVmZXJlbmNlZCBidXQgbm90IGRlZmluZWQgaGVyZSBhcmUgYXNzdW1lZAogIHRvIGJlIGRlZmluZWQgaW4gdGhlIGluZm9ybWF0aW9uIHBvb2wgbW9kdWxlLgogIAogIEluIERURCBkcml2ZXIgZmlsZXMgcmVmZXJyaW5nIHRvIHRoaXMgbW9kdWxlLCBwbGVhc2UgdXNlIGFuIGVudGl0eQogIGRlY2xhcmF0aW9uIHRoYXQgdXNlcyB0aGUgcHVibGljIGlkZW50aWZpZXIgc2hvd24gYmVsb3c6CiAgCiAgPCFFTlRJVFkgJSBkYmhpZXIgUFVCTElDCiAgIi0vL09BU0lTLy9FTEVNRU5UUyBEb2NCb29rIERvY3VtZW50IEhpZXJhcmNoeSBWNC40Ly9FTiIKICAiZGJoaWVyeC5tb2QiPgogICVkYmhpZXI7CiAgCiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiB0aGUgcGFyYW1ldGVyCiAgZW50aXR5IGFuZCBtb2R1bGUgc2NoZW1lIHVzZWQgaW4gRG9jQm9vaywgY3VzdG9taXppbmcgRG9jQm9vayBhbmQKICBwbGFubmluZyBmb3IgaW50ZXJjaGFuZ2UsIGFuZCBjaGFuZ2VzIG1hZGUgc2luY2UgdGhlIGxhc3QgcmVsZWFzZQogIG9mIERvY0Jvb2suCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRW50aXRpZXMgZm9yIG1vZHVsZSBpbmNsdXNpb25zIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIEVudGl0aWVzIGZvciBlbGVtZW50IGNsYXNzZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+Cjx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+CiAgPHhzOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIgc2NoZW1hTG9jYXRpb249InhtbC54c2QiLz4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcHBlbmRpeC5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJlZ2lucGFnZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJhcHBlbmRpeGluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idG9jY2hhcCIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJvb2tjb21wb25lbnQuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcHBlbmRpeC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcnRpY2xlLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImRpdi50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImFydGljbGVpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRvY2NoYXAiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImxvdCIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJvb2tjb21wb25lbnQuY29udGVudCIvPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6Z3JvdXAgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYXBwZW5kaXguY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYWNrbm8iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJ0aWNsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6ZWxlbWVudCBuYW1lPSJib29rLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImRpdi50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJvb2tpbmZvIi8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZGVkaWNhdGlvbiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0b2MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibG90Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdsb3NzYXJ5Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb2dyYXBoeSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwcmVmYWNlIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNoYXB0ZXIuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icmVmZXJlbmNlIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBhcnQiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYXJ0aWNsZS5jbGFzcyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcHBlbmRpeC5jbGFzcyIvPgogICAgICAgICAgPHhzOmdyb3VwIHJlZj0iaW5kZXguY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iY29sb3Bob24iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYm9vay5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjaGFwdGVyLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImNoYXB0ZXJpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYm9va2NvbXBvbmVudC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRvY2NoYXAiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJib29rY29tcG9uZW50LmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2hhcHRlci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6Z3JvdXAgbmFtZT0iaW5kZXguY2xhc3MiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmRleCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InNldGluZGV4Ii8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZmVudHJ5LmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJlZmVudHJ5aW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJyZWZtZXRhIi8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icmVtYXJrIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZm5hbWVkaXYiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmc3lub3BzaXNkaXYiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmc2VjdDEiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3Rpb24iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdGlvbi5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNlY3Rpb25pbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRpdmNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0aW9uLmNsYXNzIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0aW9uLmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Rpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmdyb3VwIG5hbWU9Im5hdi5jbGFzcyI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9InRvYyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxvdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZGV4Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZ2xvc3NhcnkiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9ncmFwaHkiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBSZWRlY2xhcmF0aW9uIHBsYWNlaG9sZGVyIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0KICAgIEZvciByZWRlY2xhcmluZyBlbnRpdGllcyB0aGF0IGFyZSBkZWNsYXJlZCBhZnRlciB0aGlzIHBvaW50IHdoaWxlCiAgICByZXRhaW5pbmcgdGhlaXIgcmVmZXJlbmNlcyB0byB0aGUgZW50aXRpZXMgdGhhdCBhcmUgZGVjbGFyZWQgYmVmb3JlCiAgICB0aGlzIHBvaW50CiAgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gRW50aXRpZXMgZm9yIGVsZW1lbnQgbWl4dHVyZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6Z3JvdXAgbmFtZT0iZGl2Y29tcG9uZW50Lm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29tcG91bmQuY2xhc3MiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZ2Vub2JqLmNsYXNzIi8+CiAgICAgIDx4czpncm91cCByZWY9ImRlc2NvYmouY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJyZWZjb21wb25lbnQubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb21wb3VuZC5jbGFzcyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJnZW5vYmouY2xhc3MiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZGVzY29iai5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImluZGV4ZGl2Y29tcG9uZW50Lm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Iml0ZW1pemVkbGlzdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im9yZGVyZWRsaXN0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0idmFyaWFibGVsaXN0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic2ltcGxlbGlzdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYW5jaG9yIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icmVtYXJrIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJyZWZuYW1lLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRlY2guY2hhci5jbGFzcyIvPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJwYXJ0Y29udGVudC5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcHBlbmRpeC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNoYXB0ZXIuY2xhc3MiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYXJ0aWNsZS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InByZWZhY2UiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InJlZmVyZW5jZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0icmVmaW5saW5lLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ieHJlZi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnZW4uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImRvY2luZm8uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgICA8L3hzOmNob2ljZT4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0icmVmY2xhc3MuY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYXBwbGljYXRpb24iLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8IS0tIFJlZGVjbGFyYXRpb24gcGxhY2Vob2xkZXIgMiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLQogICAgRm9yIHJlZGVjbGFyaW5nIGVudGl0aWVzIHRoYXQgYXJlIGRlY2xhcmVkIGFmdGVyIHRoaXMgcG9pbnQgd2hpbGUKICAgIHJldGFpbmluZyB0aGVpciByZWZlcmVuY2VzIHRvIHRoZSBlbnRpdGllcyB0aGF0IGFyZSBkZWNsYXJlZCBiZWZvcmUKICAgIHRoaXMgcG9pbnQKICAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBFbnRpdGllcyBmb3IgY29udGVudCBtb2RlbHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czpncm91cCBuYW1lPSJkaXYudGl0bGUuY29udGVudCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0idGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InN1YnRpdGxlIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZWFiYnJldiIvPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9InRpdGxlIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzdWJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGVhYmJyZXYiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0ic2VjdC50aXRsZS5jb250ZW50Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic3VidGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlYWJicmV2Ii8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InJlZnNlY3QudGl0bGUuY29udGVudCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0idGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InN1YnRpdGxlIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZWFiYnJldiIvPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJib29rY29tcG9uZW50LmNvbnRlbnQiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkaXZjb21wb25lbnQubWl4Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdDEiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0aW9uLmNsYXNzIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdDEiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0aW9uLmNsYXNzIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBTZXQgYW5kIFNldEluZm8gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNldCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImRpdi50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNldGluZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idG9jIi8+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNldCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJib29rLmNsYXNzIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNldGluZGV4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNldC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZXQuZWxlbWVudCAtLT4KICA8IS0tIEZQSTogU0dNTCBmb3JtYWwgcHVibGljIGlkZW50aWZpZXIgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZnBpIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNldC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNldGluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNldGluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZXRpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNldGluZm8uZWxlbWVudCAtLT4KICA8IS0tCiAgICBDb250ZW50czogSURzIG9mIHRoZSBUb0MsIEJvb2tzLCBhbmQgU2V0SW5kZXggdGhhdCBjb21wcmlzZQogICAgdGhlIHNldCwgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIGFwcGVhcmFuY2UKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2V0aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29udGVudHMiIHR5cGU9InhzOklEUkVGUyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2V0aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2V0aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNldGluZm8ubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHNldC5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBCb29rIGFuZCBCb29rSW5mbyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJib29rLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJib29rIiBzdWJzdGl0dXRpb25Hcm91cD0iYm9vay5jbGFzcyIvPgogIDwhLS0gZW5kIG9mIGJvb2suZWxlbWVudCAtLT4KICA8IS0tIEZQSTogU0dNTCBmb3JtYWwgcHVibGljIGlkZW50aWZpZXIgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJvb2suYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZwaSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJib29rLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBib29rLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYm9vay5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJvb2tpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJib29raW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJvb2tpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJvb2tpbmZvLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgQ29udGVudHM6IElEcyBvZiB0aGUgVG9DLCBMb1RzLCBQcmVmYWNlcywgUGFydHMsIENoYXB0ZXJzLAogICAgQXBwZW5kaXhlcywgUmVmZXJlbmNlcywgR0xvc3NhcnksIEJpYmxpb2dyYXBoeSwgYW5kIGluZGV4ZXMKICAgIGNvbXByaXNpbmcgdGhlIEJvb2ssIGluIHRoZSBvcmRlciBvZiB0aGVpciBhcHBlYXJhbmNlCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJvb2tpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250ZW50cyIgdHlwZT0ieHM6SURSRUZTIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJib29raW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYm9va2luZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBib29raW5mby5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgYm9vay5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBEZWRpY2F0aW9uLCBUb0MsIGFuZCBMb1QgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJkZWRpY2F0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJkZWRpY2F0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImxlZ2Fsbm90aWNlLm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJkZWRpY2F0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGRlZGljYXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGVkaWNhdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRlZGljYXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGRlZGljYXRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBkZWRpY2F0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29sb3Bob24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbG9waG9uIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRleHRvYmplY3QubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbG9waG9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbG9waG9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbG9waG9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29sb3Bob24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbG9waG9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29sb3Bob24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2Mucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvYyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2Zyb250Ii8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idG9jcGFydCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0b2NjaGFwIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NiYWNrIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvYy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2MuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFnZW51bS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvYy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdG9jLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9jLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jZnJvbnQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2Zyb250Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jZnJvbnQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdG9jZnJvbnQuZWxlbWVudCAtLT4KICA8IS0tIHRvIGVsZW1lbnQgdGhhdCB0aGlzIGVudHJ5IHJlcHJlc2VudHMgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2Zyb250LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFnZW51bS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2Zyb250LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2Nmcm9udC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRvY2Zyb250Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2VudHJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdG9jZW50cnkuZWxlbWVudCAtLT4KICA8IS0tIHRvIGVsZW1lbnQgdGhhdCB0aGlzIGVudHJ5IHJlcHJlc2VudHMgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2VudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhZ2VudW0uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdG9jZW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NlbnRyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY3BhcnQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY3BhcnQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jZW50cnkiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2NoYXAiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jcGFydC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NwYXJ0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY3BhcnQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NwYXJ0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NwYXJ0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9jcGFydC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2NoYXAucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2NoYXAiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jZW50cnkiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2xldmVsMSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NjaGFwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRvY2NoYXAuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jY2hhcC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jY2hhcC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdG9jY2hhcC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRvY2NoYXAubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2xldmVsMSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NlbnRyeSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jbGV2ZWwyIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsMS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDEuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWwxLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWwxLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2xldmVsMiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NlbnRyeSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jbGV2ZWwzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsMi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWwyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWwyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2xldmVsMyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NlbnRyeSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jbGV2ZWw0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsMy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWwzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWwzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2xldmVsNCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NlbnRyeSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jbGV2ZWw1Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsNC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWw0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWw0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2xldmVsNSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NlbnRyeSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NsZXZlbDUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdG9jbGV2ZWw1LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2xldmVsNS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsNS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdG9jbGV2ZWw1LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9jbGV2ZWw1Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jYmFjay5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jYmFjayI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2JhY2suYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdG9jYmFjay5lbGVtZW50IC0tPgogIDwhLS0gdG8gZWxlbWVudCB0aGF0IHRoaXMgZW50cnkgcmVwcmVzZW50cyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jYmFjay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhZ2VudW0uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NiYWNrLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NiYWNrLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9jYmFjay5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgdG9jLmNvbnRlbnQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsb3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImxvdCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImxvdGVudHJ5Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxvdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBsb3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibG90LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsb3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxvdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGxvdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxvdGVudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJsb3RlbnRyeSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxvdGVudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxvdGVudHJ5LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU3JjQ3JlZGl0OiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgc291cmNlIG9mIHRoZSBlbnRyeSwKICAgIGFzIGZvciBhIGxpc3Qgb2YgaWxsdXN0cmF0aW9ucwogIC0tPgogIDwhLS0gbGlua2VuZDogdG8gZWxlbWVudCB0aGF0IHRoaXMgZW50cnkgcmVwcmVzZW50cyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibG90ZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFnZW51bS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3JjY3JlZGl0Ii8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsb3RlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbG90ZW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBsb3RlbnRyeS5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgbG90LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEFwcGVuZGl4LCBDaGFwdGVyLCBQYXJ0LCBQcmVmYWNlLCBSZWZlcmVuY2UsIFBhcnRJbnRybyAuLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFwcGVuZGl4LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcHBlbmRpeCIgc3Vic3RpdHV0aW9uR3JvdXA9ImFwcGVuZGl4LmNsYXNzIi8+CiAgPCEtLSBlbmQgb2YgYXBwZW5kaXguZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXBwZW5kaXguYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFwcGVuZGl4LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhcHBlbmRpeC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFwcGVuZGl4Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2hhcHRlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2hhcHRlciIgc3Vic3RpdHV0aW9uR3JvdXA9ImNoYXB0ZXIuY2xhc3MiLz4KICA8IS0tIGVuZCBvZiBjaGFwdGVyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNoYXB0ZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNoYXB0ZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNoYXB0ZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjaGFwdGVyLm1vZHVsZSAtLT4KICA8IS0tCiAgICBOb3RlIHRoYXQgUGFydCB3YXMgdG8gaGF2ZSBpdHMgY29udGVudCBtb2RlbCByZWR1Y2VkIGluIFY0LjQuICBUaGlzCiAgICBjaGFuZ2Ugd2lsbCBub3QgYmUgbWFkZSBhZnRlciBhbGwuCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcnQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBhcnQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJlZ2lucGFnZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJwYXJ0aW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJwYXJ0aW50cm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFydGNvbnRlbnQubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcnQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcGFydC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYXJ0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJ0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwYXJ0LmF0dGxpc3QgLS0+CiAgPCEtLSBFTEVNRU5UIFBhcnRJbnRybyAoZGVmaW5lZCBiZWxvdykgLS0+CiAgPCEtLSBlbmQgb2YgcGFydC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByZWZhY2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InByZWZhY2UiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJlZ2lucGFnZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJwcmVmYWNlaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0b2NjaGFwIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYm9va2NvbXBvbmVudC5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByZWZhY2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJlZmFjZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcmVmYWNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJlZmFjZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJlZmFjZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByZWZhY2UubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZlcmVuY2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZmVyZW5jZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJlZmVyZW5jZWluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icGFydGludHJvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZXJlbmNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZmVyZW5jZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZlcmVuY2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVyZW5jZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmZXJlbmNlLmF0dGxpc3QgLS0+CiAgPCEtLSBFTEVNRU5UIFBhcnRJbnRybyAoZGVmaW5lZCBiZWxvdykgLS0+CiAgPCEtLSBlbmQgb2YgcmVmZXJlbmNlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFydGludHJvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwYXJ0aW50cm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJkaXYudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJvb2tjb21wb25lbnQuY29udGVudCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJ0aW50cm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcGFydGludHJvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcnRpbnRyby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFydGludHJvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwYXJ0aW50cm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwYXJ0aW50cm8ubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIE90aGVyIEluZm8gZWxlbWVudHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFwcGVuZGl4aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXBwZW5kaXhpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXBwZW5kaXhpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFwcGVuZGl4aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcHBlbmRpeGluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcHBlbmRpeGluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFwcGVuZGl4aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFwcGVuZGl4aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2dyYXBoeWluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb2dyYXBoeWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9ncmFwaHlpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb2dyYXBoeWluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvZ3JhcGh5aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2dyYXBoeWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb2dyYXBoeWluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9ncmFwaHlpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2hhcHRlcmluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNoYXB0ZXJpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2hhcHRlcmluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY2hhcHRlcmluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2hhcHRlcmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaGFwdGVyaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY2hhcHRlcmluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjaGFwdGVyaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzYXJ5aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ2xvc3NhcnlpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NhcnlpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdsb3NzYXJ5aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2FyeWluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc2FyeWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3NzYXJ5aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzYXJ5aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5kZXhpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5kZXhpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGluZGV4aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmRleGluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleGluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGluZGV4aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluZGV4aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNldGluZGV4aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2V0aW5kZXhpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2V0aW5kZXhpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNldGluZGV4aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZXRpbmRleGluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZXRpbmRleGluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNldGluZGV4aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNldGluZGV4aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcnRpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwYXJ0aW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcnRpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBhcnRpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcnRpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFydGluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBhcnRpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcGFydGluZm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcmVmYWNlaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHJlZmFjZWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmVmYWNlaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwcmVmYWNlaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcmVmYWNlaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByZWZhY2VpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwcmVmYWNlaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByZWZhY2VpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZW50cnlpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZlbnRyeWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZlbnRyeWluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmZW50cnlpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmVudHJ5aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVudHJ5aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmZW50cnlpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmZW50cnlpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdGlvbmluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZnNlY3Rpb25pbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdGlvbmluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdGlvbmluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdGlvbmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0aW9uaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdGlvbmluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZzZWN0aW9uaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QxaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdDFpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDFpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3QxaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0MWluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0MWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QxaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QxaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QyaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdDJpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDJpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3QyaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0MmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0MmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QyaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QyaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QzaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdDNpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDNpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3QzaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0M2luZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0M2luZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QzaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QzaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnN5bm9wc2lzZGl2aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc3lub3BzaXNkaXZpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc3lub3BzaXNkaXZpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnN5bm9wc2lzZGl2aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzeW5vcHNpc2RpdmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzeW5vcHNpc2RpdmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnN5bm9wc2lzZGl2aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnN5bm9wc2lzZGl2aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmVyZW5jZWluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZmVyZW5jZWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZlcmVuY2VpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZmVyZW5jZWluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZXJlbmNlaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVyZW5jZWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZmVyZW5jZWluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZlcmVuY2VpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDFpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWN0MWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0MWluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdDFpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QxaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3QxaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDFpbmZvLmF0dGxpc3QgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QyaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdDJpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDJpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY3QyaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0MmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0MmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3QyaW5mby5hdHRsaXN0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0M2luZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlY3QzaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3QzaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0M2luZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDNpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDNpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWN0M2luZm8uYXR0bGlzdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDRpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWN0NGluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0NGluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdDRpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Q0aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Q0aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDRpbmZvLmF0dGxpc3QgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Q1aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdDVpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDVpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY3Q1aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0NWluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0NWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3Q1aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFNlY3Rpb24gKHBhcmFsbGVsIHRvIFNlY3QqKSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdGlvbiIgc3Vic3RpdHV0aW9uR3JvdXA9InNlY3Rpb24uY2xhc3MiLz4KICA8IS0tIGVuZCBvZiBzZWN0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Rpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Rpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3Rpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWN0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdGlvbmluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlY3Rpb25pbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdGlvbmluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdGlvbmluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdGlvbmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0aW9uaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdGlvbmluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWN0aW9uaW5mby5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2Ygc2VjdGlvbi5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBTZWN0MSwgU2VjdDIsIFNlY3QzLCBTZWN0NCwgU2VjdDUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0MS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdDEiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNlY3QxaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkaXZjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdDIiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3QyIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3QxLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY3QxLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgUmVuZGVyYXM6IEluZGljYXRlcyB0aGUgZm9ybWF0IGluIHdoaWNoIHRoZSBoZWFkaW5nIHNob3VsZAogICAgYXBwZWFyCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QxLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZW5kZXJhcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3Q0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3Q1Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3QxLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWN0MS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlY3QxLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlY3QyIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0MmluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZGl2Y29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3QzIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0MyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0Mi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0Mi5lbGVtZW50IC0tPgogIDwhLS0KICAgIFJlbmRlcmFzOiBJbmRpY2F0ZXMgdGhlIGZvcm1hdCBpbiB3aGljaCB0aGUgaGVhZGluZyBzaG91bGQKICAgIGFwcGVhcgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0Mi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVuZGVyYXMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0Mi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWN0Mi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWN0MyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic2VjdDNpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRpdmNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0NCIvPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdDQiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdDMuZWxlbWVudCAtLT4KICA8IS0tCiAgICBSZW5kZXJhczogSW5kaWNhdGVzIHRoZSBmb3JtYXQgaW4gd2hpY2ggdGhlIGhlYWRpbmcgc2hvdWxkCiAgICBhcHBlYXIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbmRlcmFzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3QzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VjdDMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0NC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdDQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNlY3Q0aW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkaXZjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdDUiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3Q1Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Q0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY3Q0LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgUmVuZGVyYXM6IEluZGljYXRlcyB0aGUgZm9ybWF0IGluIHdoaWNoIHRoZSBoZWFkaW5nIHNob3VsZAogICAgYXBwZWFyCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Q0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZW5kZXJhcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QxIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3Q1Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Q0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWN0NC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlY3Q0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlY3Q1Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0NWluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZGl2Y29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdDUuZWxlbWVudCAtLT4KICA8IS0tCiAgICBSZW5kZXJhczogSW5kaWNhdGVzIHRoZSBmb3JtYXQgaW4gd2hpY2ggdGhlIGhlYWRpbmcgc2hvdWxkCiAgICBhcHBlYXIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbmRlcmFzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3Q1LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VjdDUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaW1wbGVzZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzaW1wbGVzZWN0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkaXZjb21wb25lbnQubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpbXBsZXNlY3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlc2VjdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaW1wbGVzZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2ltcGxlc2VjdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlc2VjdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNpbXBsZXNlY3QubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEJpYmxpb2dyYXBoeSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2dyYXBoeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvZ3JhcGh5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJiaWJsaW9ncmFwaHlpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImJpYmxpb2RpdiIvPgogICAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvZW50cnkiLz4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9taXhlZCIvPgogICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2dyYXBoeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiaWJsaW9ncmFwaHkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvZ3JhcGh5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvZ3JhcGh5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9ncmFwaHkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9ncmFwaHkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9kaXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb2RpdiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvZW50cnkiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvbWl4ZWQiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvZGl2LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb2Rpdi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9kaXYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9kaXYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb2Rpdi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb2Rpdi5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgYmlibGlvZ3JhcGh5LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEdsb3NzYXJ5IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzYXJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJnbG9zc2FyeSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iZ2xvc3NhcnlpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imdsb3NzZGl2Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJnbG9zc2VudHJ5Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJpYmxpb2dyYXBoeSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc2FyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBnbG9zc2FyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2FyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzYXJ5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBnbG9zc2FyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzYXJ5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NkaXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdsb3NzZGl2Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJnbG9zc2VudHJ5Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzZGl2LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdsb3NzZGl2LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzZGl2LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NkaXYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3NzZGl2LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ2xvc3NkaXYubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzYXJ5LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEluZGV4IGFuZCBTZXRJbmRleCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4ZXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImluZGV4Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJpbmRleGluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmRleGRpdiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmRleGVudHJ5Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZGV4LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGluZGV4LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleGVzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmRleC5hdHRsaXN0IC0tPgogIDx4czplbGVtZW50IG5hbWU9InNldGluZGV4Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzZXRpbmRleGluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmRleGRpdiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmRleGVudHJ5Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNldGluZGV4LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNldGluZGV4LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNldGluZGV4LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5kZXhlcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2V0aW5kZXguYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbmRleGVzLm1vZHVsZSAtLT4KICA8IS0tCiAgICBTZWdtZW50ZWRMaXN0IGluIHRoaXMgY29udGVudCBpcyB1c2VmdWwgZm9yIG1hcmtpbmcgdXAgcGVybXV0ZWQKICAgIGluZGljZXMuCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4ZGl2LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmRleGRpdiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZGV4ZGl2Y29tcG9uZW50Lm1peCIvPgogICAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5kZXhlbnRyeSIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNlZ21lbnRlZGxpc3QiLz4KICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZGV4ZGl2LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGluZGV4ZGl2LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4ZGl2LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5kZXhkaXYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGluZGV4ZGl2LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5kZXhkaXYubW9kdWxlIC0tPgogIDwhLS0gSW5kZXggZW50cmllcyBhcHBlYXIgaW4gdGhlIGluZGV4LCBub3QgdGhlIHRleHQuIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmRleGVudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmRleGVudHJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icHJpbWFyeWllIi8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2VlaWUiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2VlYWxzb2llIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOnNlcXVlbmNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzZWNvbmRhcnlpZSIvPgogICAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzZWVpZSIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNlZWFsc29pZSIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRlcnRpYXJ5aWUiLz4KICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZGV4ZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5kZXhlbnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmRleGVudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5kZXhlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW5kZXhlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluZGV4ZW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcmltc2VjdGVyaWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InByaW1hcnlpZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByaW1hcnlpZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwcmltYXJ5aWUuZWxlbWVudCAtLT4KICA8IS0tIHRvIEluZGV4VGVybXMgdGhhdCB0aGVzZSBlbnRyaWVzIHJlcHJlc2VudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJpbWFyeWllLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmltc2VjdGVyaWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByaW1hcnlpZS5hdHRsaXN0IC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlY29uZGFyeWllIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2Vjb25kYXJ5aWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2Vjb25kYXJ5aWUuZWxlbWVudCAtLT4KICA8IS0tIHRvIEluZGV4VGVybXMgdGhhdCB0aGVzZSBlbnRyaWVzIHJlcHJlc2VudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2Vjb25kYXJ5aWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kcy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByaW1zZWN0ZXJpZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2Vjb25kYXJ5aWUuYXR0bGlzdCAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0ZXJ0aWFyeWllIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGVydGlhcnlpZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0ZXJ0aWFyeWllLmVsZW1lbnQgLS0+CiAgPCEtLSB0byBJbmRleFRlcm1zIHRoYXQgdGhlc2UgZW50cmllcyByZXByZXNlbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRlcnRpYXJ5aWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kcy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByaW1zZWN0ZXJpZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdGVydGlhcnlpZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByaW1zZWN0ZXJpZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZWllLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWVpZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZWllLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlZWllLmVsZW1lbnQgLS0+CiAgPCEtLSB0byBJbmRleEVudHJ5IHRvIGxvb2sgdXAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZWllLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZWllLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWVpZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlZWllLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VlYWxzb2llLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWVhbHNvaWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWVhbHNvaWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VlYWxzb2llLmVsZW1lbnQgLS0+CiAgPCEtLSB0byByZWxhdGVkIEluZGV4RW50cmllcyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VlYWxzb2llLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWVhbHNvaWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlZWFsc29pZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlZWFsc29pZS5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgaW5kZXguY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gUmVmRW50cnkgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZmVudHJ5IiBzdWJzdGl0dXRpb25Hcm91cD0icmVmZW50cnkuY2xhc3MiLz4KICA8IS0tIGVuZCBvZiByZWZlbnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZlbnRyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVudHJ5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmbWV0YS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmbWV0YSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlZmVudHJ5dGl0bGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ibWFudm9sbnVtIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZtaXNjaW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZtZXRhLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZm1ldGEuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmbWV0YS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZm1ldGEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZm1ldGEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZtZXRhLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmbWlzY2luZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZm1pc2NpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmbWlzY2luZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmbWlzY2luZm8uZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBGcmVlbHkgYXNzaWduYWJsZSBwYXJhbWV0ZXI7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZm1pc2NpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmbWlzY2luZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZm1pc2NpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmbWlzY2luZm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZuYW1lZGl2LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZuYW1lZGl2Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJyZWZkZXNjcmlwdG9yIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmbmFtZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVmcHVycG9zZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmY2xhc3MiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZW1hcmsiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZm5hbWVkaXYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmbmFtZWRpdi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZuYW1lZGl2LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmbmFtZWRpdi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmbmFtZWRpdi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZm5hbWVkaXYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZkZXNjcmlwdG9yLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZkZXNjcmlwdG9yIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZm5hbWUuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZGVzY3JpcHRvci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZkZXNjcmlwdG9yLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmRlc2NyaXB0b3IuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZkZXNjcmlwdG9yLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZkZXNjcmlwdG9yLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmZGVzY3JpcHRvci5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZm5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZm5hbWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmbmFtZS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZm5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmbmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZm5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZm5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZuYW1lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmcHVycG9zZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmcHVycG9zZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZpbmxpbmUuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmcHVycG9zZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZwdXJwb3NlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnB1cnBvc2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZwdXJwb3NlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZwdXJwb3NlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmcHVycG9zZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmNsYXNzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZjbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZjbGFzcy5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZjbGFzcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZjbGFzcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZjbGFzcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmNsYXNzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZjbGFzcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZmNsYXNzLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc3lub3BzaXNkaXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZnN5bm9wc2lzZGl2Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJyZWZzeW5vcHNpc2RpdmluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9InJlZnNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmc2VjdDIiLz4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZzZWN0MiIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzeW5vcHNpc2Rpdi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZzeW5vcHNpc2Rpdi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzeW5vcHNpc2Rpdi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnN5bm9wc2lzZGl2LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZzeW5vcHNpc2Rpdi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnN5bm9wc2lzZGl2Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmc2VjdGlvbmluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJyZWZzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmY29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3Rpb24iLz4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZzZWN0aW9uIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3Rpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3Rpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0MS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdDEiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJlZnNlY3QxaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9InJlZnNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmc2VjdDIiLz4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZzZWN0MiIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0MS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZzZWN0MS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0MS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3QxLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZzZWN0MS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QxLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdDIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZnNlY3QyIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJyZWZzZWN0MmluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJyZWZzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmY29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3QzIi8+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmc2VjdDMiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdDIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0Mi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZzZWN0Mi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZzZWN0MyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmc2VjdDNpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icmVmc2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmNvbXBvbmVudC5taXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdDMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0My5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZzZWN0My5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgcmVmZW50cnkuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gQXJ0aWNsZSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tCiAgICBBbiBBcnRpY2xlIGlzIGEgY2hhcHRlci1sZXZlbCwgc3RhbmQtYWxvbmUgZG9jdW1lbnQgdGhhdCBpcyBvZnRlbiwKICAgIGJ1dCBuZWVkIG5vdCBiZSwgY29sbGVjdGVkIGludG8gYSBCb29rLgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcnRpY2xlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcnRpY2xlIiBzdWJzdGl0dXRpb25Hcm91cD0iYXJ0aWNsZS5jbGFzcyIvPgogIDwhLS0gZW5kIG9mIGFydGljbGUuZWxlbWVudCAtLT4KICA8IS0tCiAgICBDbGFzczogSW5kaWNhdGVzIHRoZSB0eXBlIG9mIGEgcGFydGljdWxhciBhcnRpY2xlOwogICAgYWxsIGFydGljbGVzIGhhdmUgdGhlIHNhbWUgc3RydWN0dXJlIGFuZCBnZW5lcmFsIHB1cnBvc2UuCiAgICBObyBkZWZhdWx0LgogIC0tPgogIDwhLS0gUGFyZW50Qm9vazogSUQgb2YgdGhlIGVuY2xvc2luZyBCb29rIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcnRpY2xlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImpvdXJuYWxhcnRpY2xlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InByb2R1Y3RzaGVldCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ3aGl0ZXBhcGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRlY2hyZXBvcnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic3BlY2lmaWNhdGlvbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJmYXEiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGFyZW50Ym9vayIgdHlwZT0ieHM6SURSRUYiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFydGljbGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgo8L3hzOnNjaGVtYT4KPCEtLSBlbmQgb2YgYXJ0aWNsZS5hdHRsaXN0IC0tPgo8IS0tIGVuZCBvZiBhcnRpY2xlLm1vZHVsZSAtLT4KPCEtLSBFbmQgb2YgRG9jQm9vayBkb2N1bWVudCBoaWVyYXJjaHkgbW9kdWxlIFY0LjQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+Cg==
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgbm90YXRpb25zIG1vZHVsZSBWNC40IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkYm5vdG54Lm1vZCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDQgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogZGJub3RueC5tb2QsdiAxLjMxIDIwMDUvMDEvMjcgMTM6NTI6MDAgbndhbHNoIEV4cCAkCiAgCiAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSBhbmQgZGlzdHJpYnV0ZSB0aGUgRG9jQm9vayBEVEQKICBhbmQgaXRzIGFjY29tcGFueWluZyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUKICBpcyBoZXJlYnkgZ3JhbnRlZCBpbiBwZXJwZXR1aXR5LCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQKICBub3RpY2UgYW5kIHRoaXMgcGFyYWdyYXBoIGFwcGVhciBpbiBhbGwgY29waWVzLiAgVGhlIGNvcHlyaWdodAogIGhvbGRlcnMgbWFrZSBubyByZXByZXNlbnRhdGlvbiBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhlIERURCBmb3IKICBhbnkgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzZWQgb3IgaW1wbGllZAogIHdhcnJhbnR5LgogIAogIElmIHlvdSBtb2RpZnkgdGhlIERvY0Jvb2sgRFREIGluIGFueSB3YXksIGV4Y2VwdCBmb3IgZGVjbGFyaW5nIGFuZAogIHJlZmVyZW5jaW5nIGFkZGl0aW9uYWwgc2V0cyBvZiBnZW5lcmFsIGVudGl0aWVzIGFuZCBkZWNsYXJpbmcKICBhZGRpdGlvbmFsIG5vdGF0aW9ucywgbGFiZWwgeW91ciBEVEQgYXMgYSB2YXJpYW50IG9mIERvY0Jvb2suICBTZWUKICB0aGUgbWFpbnRlbmFuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAKICBQbGVhc2UgZGlyZWN0IGFsbCBxdWVzdGlvbnMsIGJ1ZyByZXBvcnRzLCBvciBzdWdnZXN0aW9ucyBmb3IKICBjaGFuZ2VzIHRvIHRoZSBkb2Nib29rQGxpc3RzLm9hc2lzLW9wZW4ub3JnIG1haWxpbmcgbGlzdC4gRm9yIG1vcmUKICBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay8uCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0KICBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgbm90YXRpb24gZGVjbGFyYXRpb25zIHVzZWQgYnkgRG9jQm9vay4KICAKICBJbiBEVEQgZHJpdmVyIGZpbGVzIHJlZmVycmluZyB0byB0aGlzIG1vZHVsZSwgcGxlYXNlIHVzZSBhbiBlbnRpdHkKICBkZWNsYXJhdGlvbiB0aGF0IHVzZXMgdGhlIHB1YmxpYyBpZGVudGlmaWVyIHNob3duIGJlbG93OgogIAogIDwhRU5USVRZICUgZGJub3RuIFBVQkxJQwogICItLy9PQVNJUy8vRU5USVRJRVMgRG9jQm9vayBOb3RhdGlvbnMgVjQuNC8vRU4iCiAgImRibm90bngubW9kIj4KICAlZGJub3RuOwogIAogIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlsZWQgaW5mb3JtYXRpb24gb24gdGhlIHBhcmFtZXRlcgogIGVudGl0eSBhbmQgbW9kdWxlIHNjaGVtZSB1c2VkIGluIERvY0Jvb2ssIGN1c3RvbWl6aW5nIERvY0Jvb2sgYW5kCiAgcGxhbm5pbmcgZm9yIGludGVyY2hhbmdlLCBhbmQgY2hhbmdlcyBtYWRlIHNpbmNlIHRoZSBsYXN0IHJlbGVhc2UKICBvZiBEb2NCb29rLgotLT4KPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4KICA8eHM6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiBzY2hlbWFMb2NhdGlvbj0ieG1sLnhzZCIvPgogIDx4czpzaW1wbGVUeXBlIG5hbWU9Im5vdGF0aW9uLmNsYXNzIj4KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQk1QIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQ0dNLUNIQVIiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJDR00tQklOQVJZIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQ0dNLUNMRUFSIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iRElUUk9GRiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkRWSSIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkVQUyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkVRTiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkZBWCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkdJRiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkdJRjg3YSIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkdJRjg5YSIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkpQRyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkpQRUciLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJJR0VTIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUENYIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUElDIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUE5HIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUFMiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJTR01MIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iVEJMIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iVEVYIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iVElGRiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IldNRiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IldQRyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlNWRyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlBERiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlNXRiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVzcGVjaWZpYyIvPgogICAgPC94czpyZXN0cmljdGlvbj4KICA8L3hzOnNpbXBsZVR5cGU+CjwveHM6c2NoZW1hPgo8IS0tIFdvcmRQZXJmZWN0IEdyYXBoaWMgZm9ybWF0IC0tPgo8IS0tIEVuZCBvZiBEb2NCb29rIG5vdGF0aW9ucyBtb2R1bGUgVjQuNCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4K
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgWE1MIGluZm9ybWF0aW9uIHBvb2wgbW9kdWxlIFY0LjQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkYnBvb2x4Lm1vZCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDQgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogZGJwb29seC5tb2QsdiAxLjEwNyAyMDA1LzAxLzI3IDEzOjUyOjAwIG53YWxzaCBFeHAgJAogIAogIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnkgYW5kIGRpc3RyaWJ1dGUgdGhlIERvY0Jvb2sgWE1MIERURAogIGFuZCBpdHMgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZQogIGlzIGhlcmVieSBncmFudGVkIGluIHBlcnBldHVpdHksIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodAogIG5vdGljZSBhbmQgdGhpcyBwYXJhZ3JhcGggYXBwZWFyIGluIGFsbCBjb3BpZXMuICBUaGUgY29weXJpZ2h0CiAgaG9sZGVycyBtYWtlIG5vIHJlcHJlc2VudGF0aW9uIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGUgRFREIGZvcgogIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3NlZCBvciBpbXBsaWVkCiAgd2FycmFudHkuCiAgCiAgSWYgeW91IG1vZGlmeSB0aGUgRG9jQm9vayBYTUwgRFREIGluIGFueSB3YXksIGV4Y2VwdCBmb3IgZGVjbGFyaW5nIGFuZAogIHJlZmVyZW5jaW5nIGFkZGl0aW9uYWwgc2V0cyBvZiBnZW5lcmFsIGVudGl0aWVzIGFuZCBkZWNsYXJpbmcKICBhZGRpdGlvbmFsIG5vdGF0aW9ucywgbGFiZWwgeW91ciBEVEQgYXMgYSB2YXJpYW50IG9mIERvY0Jvb2suICBTZWUKICB0aGUgbWFpbnRlbmFuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAKICBQbGVhc2UgZGlyZWN0IGFsbCBxdWVzdGlvbnMsIGJ1ZyByZXBvcnRzLCBvciBzdWdnZXN0aW9ucyBmb3IKICBjaGFuZ2VzIHRvIHRoZSBkb2Nib29rQGxpc3RzLm9hc2lzLW9wZW4ub3JnIG1haWxpbmcgbGlzdC4gRm9yIG1vcmUKICBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay8uCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0KICBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBvYmplY3RzLCBpbmxpbmUKICBlbGVtZW50cywgYW5kIHNvIG9uIHRoYXQgYXJlIGF2YWlsYWJsZSB0byBiZSB1c2VkIGFzIHRoZSBtYWluCiAgY29udGVudCBvZiBEb2NCb29rIGRvY3VtZW50cy4gIFNvbWUgZWxlbWVudHMgYXJlIHVzZWZ1bCBmb3IgZ2VuZXJhbAogIHB1Ymxpc2hpbmcsIGFuZCBvdGhlcnMgYXJlIHVzZWZ1bCBzcGVjaWZpY2FsbHkgZm9yIGNvbXB1dGVyCiAgZG9jdW1lbnRhdGlvbi4KICAKICBUaGlzIG1vZHVsZSBoYXMgdGhlIGZvbGxvd2luZyBkZXBlbmRlbmNpZXMgb24gb3RoZXIgbW9kdWxlczoKICAKICBvIEl0IGFzc3VtZXMgdGhhdCBhICVub3RhdGlvbi5jbGFzczsgZW50aXR5IGlzIGRlZmluZWQgYnkgdGhlCiAgICBkcml2ZXIgZmlsZSBvciBvdGhlciBoaWdoLWxldmVsIG1vZHVsZS4gIFRoaXMgZW50aXR5IGlzCiAgICByZWZlcmVuY2VkIGluIHRoZSBOT1RBVElPTiBhdHRyaWJ1dGVzIGZvciB0aGUgZ3JhcGhpYy1yZWxhdGVkIGFuZAogICAgTW9kZVNwZWMgZWxlbWVudHMuCiAgCiAgbyBJdCBhc3N1bWVzIHRoYXQgYW4gYXBwcm9wcmlhdGVseSBwYXJhbWV0ZXJpemVkIHRhYmxlIG1vZHVsZSBpcwogICAgYXZhaWxhYmxlIGZvciB1c2Ugd2l0aCB0aGUgdGFibGUtcmVsYXRlZCBlbGVtZW50cy4KICAKICBJbiBEVEQgZHJpdmVyIGZpbGVzIHJlZmVycmluZyB0byB0aGlzIG1vZHVsZSwgcGxlYXNlIHVzZSBhbiBlbnRpdHkKICBkZWNsYXJhdGlvbiB0aGF0IHVzZXMgdGhlIHB1YmxpYyBpZGVudGlmaWVyIHNob3duIGJlbG93OgogIAogIDwhRU5USVRZICUgZGJwb29sIFBVQkxJQwogICItLy9PQVNJUy8vRUxFTUVOVFMgRG9jQm9vayBYTUwgSW5mb3JtYXRpb24gUG9vbCBWNC40Ly9FTiIKICAiZGJwb29seC5tb2QiPgogICVkYnBvb2w7CiAgCiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiB0aGUgcGFyYW1ldGVyCiAgZW50aXR5IGFuZCBtb2R1bGUgc2NoZW1lIHVzZWQgaW4gRG9jQm9vaywgY3VzdG9taXppbmcgRG9jQm9vayBhbmQKICBwbGFubmluZyBmb3IgaW50ZXJjaGFuZ2UsIGFuZCBjaGFuZ2VzIG1hZGUgc2luY2UgdGhlIGxhc3QgcmVsZWFzZQogIG9mIERvY0Jvb2suCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRm9ybXMgZW50aXRpZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSBUaGVzZSBQRXMgcHJvdmlkZSB0aGUgaG9vayBieSB3aGljaCB0aGUgZm9ybXMgbW9kdWxlIGNhbiBiZSBpbnNlcnRlZCAtLT4KPCEtLSBpbnRvIHRoZSBEVEQuIC0tPgo8eHM6c2NoZW1hIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiPgogIDx4czppbmNsdWRlIHNjaGVtYUxvY2F0aW9uPSJodG1sdGJseC54c2QiLz4KICA8eHM6aW5jbHVkZSBzY2hlbWFMb2NhdGlvbj0iY2Fsc3RibHgueHNkIi8+CiAgPHhzOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIgc2NoZW1hTG9jYXRpb249InhtbC54c2QiLz4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBHZW5lcmFsLXB1cnBvc2Ugc2VtYW50aWNzIGVudGl0aWVzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czpzaW1wbGVUeXBlIG5hbWU9Inllc29ybm8uYXR0dmFscyI+CiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIi8+CiAgPC94czpzaW1wbGVUeXBlPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEVudGl0aWVzIGZvciBtb2R1bGUgaW5jbHVzaW9ucyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gRW50aXRpZXMgZm9yIGVsZW1lbnQgY2xhc3NlcyBhbmQgbWl4dHVyZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tICJVYmlxdWl0b3VzIiBjbGFzc2VzOiBuZHh0ZXJtLmNsYXNzIGFuZCBiZWdpbnBhZ2UgLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibmR4dGVybS5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InByaW1hcnkiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2Vjb25kYXJ5Ii8+CiAgICAgICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIj4KICAgICAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRlcnRpYXJ5Ii8+CiAgICAgICAgICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2VlIi8+CiAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlZWFsc28iLz4KICAgICAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzZWUiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWVhbHNvIi8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2VlIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWVhbHNvIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZGV4dGVybS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIE9iamVjdC1sZXZlbCBjbGFzc2VzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibGlzdC5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6ZWxlbWVudCBuYW1lPSJhZG1vbi5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6ZWxlbWVudCBuYW1lPSJsaW5lc3BlY2lmaWMuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWV0aG9kLnN5bm9wLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIgc3Vic3RpdHV0aW9uR3JvdXA9InN5bm9wLmNsYXNzIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3lub3AuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGFyYS5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmZvcm1hbC5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6ZWxlbWVudCBuYW1lPSJmb3JtYWwuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPCEtLSBUaGUgRG9jQm9vayBUQyBtYXkgcHJvZHVjZSBhbiBvZmZpY2lhbCBFQk5GIG1vZHVsZSBmb3IgRG9jQm9vay4gLS0+CiAgPCEtLSBUaGlzIFBFIHByb3ZpZGVzIHRoZSBob29rIGJ5IHdoaWNoIGl0IGNhbiBiZSBpbnNlcnRlZCBpbnRvIHRoZSBEVEQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNvbXBvdW5kLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDx4czpncm91cCBuYW1lPSJnZW5vYmouY2xhc3MiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhbmNob3IiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJicmlkZ2VoZWFkIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icmVtYXJrIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaGlnaGxpZ2h0cyIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iZGVzY29iai5jbGFzcyI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFic3RyYWN0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYXV0aG9yYmx1cmIiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlcGlncmFwaCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8IS0tIENoYXJhY3Rlci1sZXZlbCBjbGFzc2VzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ieHJlZi5jaGFyLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDx4czplbGVtZW50IG5hbWU9Imdlbi5jaGFyLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDx4czplbGVtZW50IG5hbWU9ImxpbmsuY2hhci5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8IS0tIFRoZSBEb2NCb29rIFRDIG1heSBwcm9kdWNlIGFuIG9mZmljaWFsIEVCTkYgbW9kdWxlIGZvciBEb2NCb29rLiAtLT4KICA8IS0tIFRoaXMgUEUgcHJvdmlkZXMgdGhlIGhvb2sgYnkgd2hpY2ggaXQgY2FuIGJlIGluc2VydGVkIGludG8gdGhlIERURC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGVjaC5jaGFyLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDx4czpncm91cCBuYW1lPSJiYXNlLmNoYXIuY2xhc3MiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFuY2hvciIvPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImRvY2luZm8uY2hhci5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6Z3JvdXAgbmFtZT0ib3RoZXIuY2hhci5jbGFzcyI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9InJlbWFyayIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN1YnNjcmlwdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN1cGVyc2NyaXB0Ii8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImlubGluZW9iai5jaGFyLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEVudGl0aWVzIGZvciBjb250ZW50IG1vZGVscyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmdyb3VwIG5hbWU9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGVhYmJyZXYiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8IS0tIFJlZGVjbGFyYXRpb24gcGxhY2Vob2xkZXIgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLQogICAgRm9yIHJlZGVjbGFyaW5nIGVudGl0aWVzIHRoYXQgYXJlIGRlY2xhcmVkIGFmdGVyIHRoaXMgcG9pbnQgd2hpbGUKICAgIHJldGFpbmluZyB0aGVpciByZWZlcmVuY2VzIHRvIHRoZSBlbnRpdGllcyB0aGF0IGFyZSBkZWNsYXJlZCBiZWZvcmUKICAgIHRoaXMgcG9pbnQKICAtLT4KICA8IS0tIE9iamVjdC1sZXZlbCBtaXh0dXJlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLQogICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QgYWRtbiBsaW5lIHN5bnAgcGFyYSBpbmZtIGZvcm0gY21wZCBnZW4gIGRlc2MKICAgIENvbXBvbmVudCBtaXh0dXJlICAgICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFgKICAgIFNpZGViYXIgbWl4dHVyZSAgICAgICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgYSAgICBYCiAgICBGb290bm90ZSBtaXh0dXJlICAgICAgICBYICAgICAgICAgWCAgICBYICAgIFggICAgWAogICAgRXhhbXBsZSBtaXh0dXJlICAgICAgICAgWCAgICAgICAgIFggICAgWCAgICBYICAgIFgKICAgIEhpZ2hsaWdodHMgbWl4dHVyZSAgICAgIFggICAgWCAgICAgICAgICAgICAgWAogICAgUGFyYWdyYXBoIG1peHR1cmUgICAgICAgWCAgICAgICAgIFggICAgWCAgICAgICAgIFgKICAgIEFkbW9uaXRpb24gbWl4dHVyZSAgICAgIFggICAgICAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgYiAgICBjCiAgICBGaWd1cmUgbWl4dHVyZSAgICAgICAgICAgICAgICAgICAgWCAgICBYICAgICAgICAgWAogICAgVGFibGUgZW50cnkgbWl4dHVyZSAgICAgWCAgICBYICAgIFggICAgICAgICBYICAgIGQKICAgIEdsb3NzYXJ5IGRlZiBtaXh0dXJlICAgIFggICAgICAgICBYICAgIFggICAgWCAgICBYICAgICAgICAgZQogICAgTGVnYWwgbm90aWNlIG1peHR1cmUgICAgWCAgICBYICAgIFggICAgICAgICBYICAgIGYKICAgIAogICAgYS4gSnVzdCBQcm9jZWR1cmU7IG5vdCBTaWRlYmFyIGl0c2VsZiBvciBNc2dTZXQuCiAgICBiLiBObyBNc2dTZXQuCiAgICBjLiBObyBIaWdobGlnaHRzLgogICAgZC4gSnVzdCBHcmFwaGljOyBubyBvdGhlciBpbmZvcm1hbCBvYmplY3RzLgogICAgZS4gTm8gQW5jaG9yLCBCcmlkZ2VIZWFkLCBvciBIaWdobGlnaHRzLgogICAgZi4gSnVzdCBCbG9ja1F1b3RlOyBubyBvdGhlciBpbmZvcm1hbCBvYmplY3RzLgogIC0tPgogIDx4czpncm91cCBuYW1lPSJjb21wb25lbnQubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb21wb3VuZC5jbGFzcyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJnZW5vYmouY2xhc3MiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZGVzY29iai5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InNpZGViYXIubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwcm9jZWR1cmUiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZ2Vub2JqLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0icWFuZGFzZXQubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwcm9jZWR1cmUiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZ2Vub2JqLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0icmV2ZGVzY3JpcHRpb24ubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwcm9jZWR1cmUiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZ2Vub2JqLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iZm9vdG5vdGUubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJleGFtcGxlLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW5vcC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImhpZ2hsaWdodHMubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLQogICAgJWZvcm1hbC5jbGFzczsgaXMgZXhwbGljaXRseSBleGNsdWRlZCBmcm9tIG1hbnkgY29udGV4dHMgaW4gd2hpY2gKICAgIHBhcmFncmFwaHMgYXJlIHVzZWQKICAtLT4KICA8eHM6Z3JvdXAgbmFtZT0icGFyYS5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWRtb24uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImZvcm1hbC5jbGFzcyIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iYWRtb24ubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJvY2VkdXJlIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic2lkZWJhciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFuY2hvciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJyaWRnZWhlYWQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZW1hcmsiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJmaWd1cmUubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InRhYmVudHJ5Lm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJncmFwaGljIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibWVkaWFvYmplY3QiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9Imdsb3NzZGVmLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW5vcC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InJlbWFyayIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImxlZ2Fsbm90aWNlLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJibG9ja3F1b3RlIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0idGV4dG9iamVjdC5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWRtb24uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmxvY2txdW90ZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtZWRpYW9iamVjdC5taXgiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmdyb3VwIG5hbWU9Imxpc3RwcmVhbWJsZS5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czpncm91cCByZWY9Imdlbm9iai5jbGFzcyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJkZXNjb2JqLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8IS0tIENoYXJhY3Rlci1sZXZlbCBtaXh0dXJlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBzZ21sLmZlYXR1cmVzIC0tPgogIDwhLS0gbm90IFtzZ21sLmZlYXR1cmVzWyAtLT4KICA8IS0tIF1dIG5vdCBzZ21sLmZlYXR1cmVzIC0tPgogIDwhLS0KICAgICAgICAgICAgICAgICAgICAgICAgI1BDRCB4cmVmIHdvcmQgbGluayBjcHRyIGJhc2UgZG5mbyBvdGhyIGlub2IgKHN5bm9wKQogICAgcGFyYS5jaGFyLm1peCAgICAgICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYCiAgICB0aXRsZS5jaGFyLm1peCAgICAgICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFgKICAgIG5keHRlcm0uY2hhci5taXggICAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgYQogICAgY3B0ci5jaGFyLm1peCAgICAgICAgIFggICAgICAgICAgICAgIFggICAgWCAgICBYICAgICAgICAgWCAgICBhCiAgICBzbWFsbGNwdHIuY2hhci5taXggICAgWCAgICAgICAgICAgICAgICAgICBiICAgICAgICAgICAgICAgICAgIGEKICAgIHdvcmQuY2hhci5taXggICAgICAgICBYICAgICAgICAgYyAgICBYICAgICAgICAgWCAgICAgICAgIFggICAgYQogICAgZG9jaW5mby5jaGFyLm1peCAgICAgIFggICAgICAgICBkICAgIFggICAgYiAgICAgICAgICAgICAgWCAgICBhCiAgICAKICAgIGEuIEp1c3QgSW5saW5lR3JhcGhpYzsgbm8gSW5saW5lRXF1YXRpb24uCiAgICBiLiBKdXN0IFJlcGxhY2VhYmxlOyBubyBvdGhlciBjb21wdXRlciB0ZXJtcy4KICAgIGMuIEp1c3QgRW1waGFzaXMgYW5kIFRyYWRlbWFyazsgbm8gb3RoZXIgd29yZCBlbGVtZW50cy4KICAgIGQuIEp1c3QgQWNyb255bSwgRW1waGFzaXMsIGFuZCBUcmFkZW1hcms7IG5vIG90aGVyIHdvcmQgZWxlbWVudHMuCiAgLS0+CiAgPHhzOmdyb3VwIG5hbWU9InBhcmEuY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ4cmVmLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdlbi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRlY2guY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJhc2UuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZG9jaW5mby5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lb2JqLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InRpdGxlLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ieHJlZi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnZW4uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImRvY2luZm8uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW9iai5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJuZHh0ZXJtLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ieHJlZi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnZW4uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImRvY2luZm8uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZWdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJjcHRyLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJvdGhlci5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVncmFwaGljIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVtZWRpYW9iamVjdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJzbWFsbGNwdHIuY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXBsYWNlYWJsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgICA8L3hzOmNob2ljZT4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0id29yZC5jaGFyLm1peCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjcm9ueW0iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtcGhhc2lzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0cmFkZW1hcmsiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJhc2UuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZWdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImRvY2luZm8uY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtcGhhc2lzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0cmFkZW1hcmsiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlcGxhY2VhYmxlIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBFTlRJVFkgJSBiaWJsaW9jb21wb25lbnQubWl4IChzZWUgQmlibGlvZ3JhcGhpYyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSBFTlRJVFkgJSBwZXJzb24uaWRlbnQubWl4IChzZWUgQmlibGlvZ3JhcGhpYyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gRW50aXRpZXMgZm9yIGF0dHJpYnV0ZXMgYW5kIGF0dHJpYnV0ZSBjb21wb25lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEVmZmVjdGl2aXR5IGF0dHJpYnV0ZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLQogICAgQXJjaDogQ29tcHV0ZXIgb3IgY2hpcCBhcmNoaXRlY3R1cmUgdG8gd2hpY2ggZWxlbWVudCBhcHBsaWVzOyBubwogICAgZGVmYXVsdAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcmNoLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFyY2giLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gQ29uZGl0aW9uOiBHZW5lcmFsLXB1cnBvc2UgZWZmZWN0aXZpdHkgYXR0cmlidXRlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25kaXRpb24uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29uZGl0aW9uIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIENvbmZvcm1hbmNlOiBTdGFuZGFyZHMgY29uZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mb3JtYW5jZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb25mb3JtYW5jZSIgdHlwZT0ieHM6Tk1UT0tFTlMiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gT1M6IE9wZXJhdGluZyBzeXN0ZW0gdG8gd2hpY2ggZWxlbWVudCBhcHBsaWVzOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcyIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBSZXZpc2lvbjogRWRpdG9yaWFsIHJldmlzaW9uIHRvIHdoaWNoIGVsZW1lbnQgYmVsb25nczsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aXNpb24uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmV2aXNpb24iLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gU2VjdXJpdHk6IFNlY3VyaXR5IGNsYXNzaWZpY2F0aW9uOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN1cml0eS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWN1cml0eSIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgVXNlckxldmVsOiBMZXZlbCBvZiB1c2VyIGV4cGVyaWVuY2UgdG8gd2hpY2ggZWxlbWVudCBhcHBsaWVzOyBubwogICAgZGVmYXVsdAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ1c2VybGV2ZWwuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXNlcmxldmVsIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIFZlbmRvcjogQ29tcHV0ZXIgdmVuZG9yIHRvIHdoaWNoIGVsZW1lbnQgYXBwbGllczsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmVuZG9yLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZlbmRvciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBXb3Jkc2l6ZTogQ29tcHV0ZXIgd29yZCBzaXplICgzMiBiaXQsIDY0IGJpdCwgZXRjLik7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9IndvcmRzaXplLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndvcmRzaXplIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZWZmZWN0aXZpdHkuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyY2guYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25kaXRpb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25mb3JtYW5jZS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9zLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2aXNpb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN1cml0eS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InVzZXJsZXZlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZlbmRvci5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9IndvcmRzaXplLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBDb21tb24gYXR0cmlidXRlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gSWQ6IFVuaXF1ZSBpZGVudGlmaWVyIG9mIGVsZW1lbnQ7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlkLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlkIiB0eXBlPSJ4czpJRCIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgSWQ6IFVuaXF1ZSBpZGVudGlmaWVyIG9mIGVsZW1lbnQ7IGEgdmFsdWUgbXVzdCBiZSBzdXBwbGllZDsgbm8KICAgIGRlZmF1bHQKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaWRyZXEuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWQiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOklEIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBMYW5nOiBJbmRpY2F0b3Igb2YgbGFuZ3VhZ2UgaW4gd2hpY2ggZWxlbWVudCBpcyB3cml0dGVuLCBmb3IKICAgIHRyYW5zbGF0aW9uLCBjaGFyYWN0ZXIgc2V0IG1hbmFnZW1lbnQsIGV0Yy47IG5vIGRlZmF1bHQKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGFuZy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYW5nIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIFJlbWFwOiBQcmV2aW91cyByb2xlIG9mIGVsZW1lbnQgYmVmb3JlIGNvbnZlcnNpb247IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlbWFwLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbWFwIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIFJvbGU6IE5ldyByb2xlIG9mIGVsZW1lbnQgaW4gbG9jYWwgZW52aXJvbm1lbnQ7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm9sZSIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgWFJlZkxhYmVsOiBBbHRlcm5hdGUgbGFiZWxpbmcgc3RyaW5nIGZvciBYUmVmIHRleHQgZ2VuZXJhdGlvbjsKICAgIGRlZmF1bHQgaXMgdXN1YWxseSB0aXRsZSBvciBvdGhlciBhcHByb3ByaWF0ZSBsYWJlbCB0ZXh0IGFscmVhZHkKICAgIGNvbnRhaW5lZCBpbiBlbGVtZW50CiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InhyZWZsYWJlbC5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ4cmVmbGFiZWwiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0KICAgIFJldmlzaW9uRmxhZzogUmV2aXNpb24gc3RhdHVzIG9mIGVsZW1lbnQ7IGRlZmF1bHQgaXMgdGhhdCBlbGVtZW50CiAgICB3YXNuJ3QgcmV2aXNlZAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXZpc2lvbmZsYWcuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmV2aXNpb25mbGFnIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhbmdlZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhZGRlZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkZWxldGVkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im9mZiIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkaXI6IEJpZGlyZWN0aW9uYWwgb3ZlcnJpZGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImRpci5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkaXIiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsdHIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icnRsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxybyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJybG8iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0geG1sOmJhc2U6IGJhc2UgVVJJIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ4bWwtYmFzZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSByZWY9InhtbDpiYXNlIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIFJvbGUgaXMgaW5jbHVkZWQgZXhwbGljaXRseSBvbiBlYWNoIGVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbW1vbi5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaWQuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYW5nLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVtYXAuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4cmVmbGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZpc2lvbmZsYWcuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlZmZlY3Rpdml0eS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRpci5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InhtbC1iYXNlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBSb2xlIGlzIGluY2x1ZGVkIGV4cGxpY2l0bHkgb24gZWFjaCBlbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpZHJlcS5jb21tb24uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlkcmVxLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFuZy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlbWFwLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ieHJlZmxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2aXNpb25mbGFnLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZWZmZWN0aXZpdHkuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJkaXIuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4bWwtYmFzZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gU2VtaS1jb21tb24gYXR0cmlidXRlcyBhbmQgb3RoZXIgYXR0cmlidXRlIGVudGl0aWVzIC4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tCiAgICBFbnRpdHlSZWY6IE5hbWUgb2YgYW4gZXh0ZXJuYWwgZW50aXR5IGNvbnRhaW5pbmcgdGhlIGNvbnRlbnQKICAgIG9mIHRoZSBncmFwaGljCiAgLS0+CiAgPCEtLQogICAgRmlsZVJlZjogRmlsZW5hbWUsIHF1YWxpZmllZCBieSBhIHBhdGhuYW1lIGlmIGRlc2lyZWQsCiAgICBkZXNpZ25hdGluZyB0aGUgZmlsZSBjb250YWluaW5nIHRoZSBjb250ZW50IG9mIHRoZSBncmFwaGljCiAgLS0+CiAgPCEtLSBGb3JtYXQ6IE5vdGF0aW9uIG9mIHRoZSBlbGVtZW50IGNvbnRlbnQsIGlmIGFueSAtLT4KICA8IS0tIFNyY0NyZWRpdDogSW5mb3JtYXRpb24gYWJvdXQgdGhlIHNvdXJjZSBvZiB0aGUgR3JhcGhpYyAtLT4KICA8IS0tIFdpZHRoOiBTYW1lIGFzIENBTFMgcmVwcm93aWQgKGRlc2lyZWQgd2lkdGgpIC0tPgogIDwhLS0gRGVwdGg6IFNhbWUgYXMgQ0FMUyByZXByb2RlcCAoZGVzaXJlZCBkZXB0aCkgLS0+CiAgPCEtLQogICAgQWxpZ246IFNhbWUgYXMgQ0FMUyBocGxhY2Ugd2l0aCAnbm9uZScgcmVtb3ZlZDsgI0lNUExJRUQgbWVhbnMKICAgIGFwcGxpY2F0aW9uLXNwZWNpZmljCiAgLS0+CiAgPCEtLSBTY2FsZTogQ29uZmxhdGlvbiBvZiBDQUxTIGhzY2FsZSBhbmQgdnNjYWxlIC0tPgogIDwhLS0gU2NhbGVmaXQ6IFNhbWUgYXMgQ0FMUyBzY2FsZWZpdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3JhcGhpY3MuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW50aXR5cmVmIiB0eXBlPSJ4czpFTlRJVFkiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlsZXJlZiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmb3JtYXQiIHR5cGU9Im5vdGF0aW9uLmNsYXNzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNyY2NyZWRpdCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aWR0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250ZW50d2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVwdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29udGVudGRlcHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGVmdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaWdodCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZW50ZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1pZGRsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2NhbGUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2NhbGVmaXQiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgQWN0aW9uOiBLZXkgY29tYmluYXRpb24gdHlwZTsgZGVmYXVsdCBpcyB1bnNwZWNpZmllZCBpZiBvbmUKICAgIGNoaWxkIGVsZW1lbnQsIFNpbXVsIGlmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmU7IGlmIHZhbHVlIGlzCiAgICBPdGhlciwgdGhlIE90aGVyQWN0aW9uIGF0dHJpYnV0ZSBtdXN0IGhhdmUgYSBub25lbXB0eSB2YWx1ZQogIC0tPgogIDwhLS0gT3RoZXJBY3Rpb246IFVzZXItZGVmaW5lZCBrZXkgY29tYmluYXRpb24gdHlwZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5YWN0aW9uLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFjdGlvbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNsaWNrIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRvdWJsZS1jbGljayIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcmVzcyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZXEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2ltdWwiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3RoZXJhY3Rpb24iLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0KICAgIExhYmVsOiBJZGVudGlmeWluZyBudW1iZXIgb3Igc3RyaW5nOyBkZWZhdWx0IGlzIHVzdWFsbHkgdGhlCiAgICBhcHByb3ByaWF0ZSBudW1iZXIgb3Igc3RyaW5nIGF1dG9nZW5lcmF0ZWQgYnkgYSBmb3JtYXR0ZXIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGFiZWwuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWwiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0geG1sOnNwYWNlOiB3aGl0ZXNwYWNlIHRyZWF0bWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ieG1sLXNwYWNlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIHJlZj0ieG1sOnNwYWNlIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBGb3JtYXQ6IHdoZXRoZXIgZWxlbWVudCBpcyBhc3N1bWVkIHRvIGNvbnRhaW4gc2lnbmlmaWNhbnQgd2hpdGUKICAgIHNwYWNlCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmVzcGVjaWZpYy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmb3JtYXQiIGRlZmF1bHQ9ImxpbmVzcGVjaWZpYyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVzcGVjaWZpYyIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ieG1sLXNwYWNlLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsaW5lbnVtYmVyaW5nIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibnVtYmVyZWQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idW5udW1iZXJlZCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250aW51YXRpb24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb250aW51ZXMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVzdGFydHMiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RhcnRpbmdsaW5lbnVtYmVyIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxhbmd1YWdlIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIExpbmtlbmQ6IGxpbmsgdG8gcmVsYXRlZCBpbmZvcm1hdGlvbjsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGlua2VuZC5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsaW5rZW5kIiB0eXBlPSJ4czpJRFJFRiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBMaW5rZW5kOiByZXF1aXJlZCBsaW5rIHRvIHJlbGF0ZWQgaW5mb3JtYXRpb24gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmtlbmRyZXEuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGlua2VuZCIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6SURSRUYiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0KICAgIExpbmtlbmRzOiBsaW5rIHRvIG9uZSBvciBtb3JlIHNldHMgb2YgcmVsYXRlZCBpbmZvcm1hdGlvbjsgbm8KICAgIGRlZmF1bHQKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGlua2VuZHMuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGlua2VuZHMiIHR5cGU9InhzOklEUkVGUyIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1hcmsuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWFyayIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBNb3JlSW5mbzogd2hldGhlciBlbGVtZW50J3MgY29udGVudCBoYXMgYW4gYXNzb2NpYXRlZCBSZWZFbnRyeSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibW9yZWluZm8uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibW9yZWluZm8iIGRlZmF1bHQ9Im5vbmUiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZWZlbnRyeSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub25lIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIFBhZ2VudW06IG51bWJlciBvZiBwYWdlIG9uIHdoaWNoIGVsZW1lbnQgYXBwZWFyczsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFnZW51bS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwYWdlbnVtIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBTdGF0dXM6IEVkaXRvcmlhbCBvciBwdWJsaWNhdGlvbiBzdGF0dXMgb2YgdGhlIGVsZW1lbnQKICAgIGl0IGFwcGxpZXMgdG8sIHN1Y2ggYXMgImluIHJldmlldyIgb3IgImFwcHJvdmVkIGZvciBkaXN0cmlidXRpb24iCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0YXR1cy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGF0dXMiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0KICAgIFdpZHRoOiB3aWR0aCBvZiB0aGUgbG9uZ2VzdCBsaW5lIGluIHRoZSBlbGVtZW50IHRvIHdoaWNoIGl0CiAgICBwZXJ0YWlucywgaW4gbnVtYmVyIG9mIGNoYXJhY3RlcnMKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0id2lkdGguYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2lkdGgiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFRpdGxlIGVsZW1lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRpdGxlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0aXRsZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0aXRsZS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0aXRsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0aXRsZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0aXRsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhZ2VudW0uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0aXRsZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdGl0bGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0aXRsZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRpdGxlYWJicmV2LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0aXRsZWFiYnJldiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0aXRsZS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0aXRsZWFiYnJldi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0aXRsZWFiYnJldi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0aXRsZWFiYnJldi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRpdGxlYWJicmV2LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0aXRsZWFiYnJldi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRpdGxlYWJicmV2Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3VidGl0bGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN1YnRpdGxlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRpdGxlLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YnRpdGxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN1YnRpdGxlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YnRpdGxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3VidGl0bGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN1YnRpdGxlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3VidGl0bGUubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEJpYmxpb2dyYXBoaWMgZW50aXRpZXMgYW5kIGVsZW1lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLQogICAgVGhlIGJpYmxpb2dyYXBoaWMgZWxlbWVudHMgYXJlIHR5cGljYWxseSB1c2VkIGluIHRoZSBkb2N1bWVudAogICAgaGllcmFyY2h5LiBUaGV5IGRvIG5vdCBhcHBlYXIgaW4gY29udGVudCBtb2RlbHMgb2YgaW5mb3JtYXRpb24KICAgIHBvb2wgZWxlbWVudHMuICBTZWUgYWxzbyB0aGUgZG9jdW1lbnQgaW5mb3JtYXRpb24gZWxlbWVudHMsCiAgICBiZWxvdy4KICAtLT4KICA8eHM6Z3JvdXAgbmFtZT0icGVyc29uLmlkZW50Lm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imhvbm9yaWZpYyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImZpcnN0bmFtZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN1cm5hbWUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lYWdlIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ib3RoZXJuYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWZmaWxpYXRpb24iLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhdXRob3JibHVyYiIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbnRyaWIiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImJpYmxpb2NvbXBvbmVudC5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhYmJyZXYiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhYnN0cmFjdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkZHJlc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcnRwYWdlbnVtcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImF1dGhvciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImF1dGhvcmdyb3VwIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYXV0aG9yaW5pdGlhbHMiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9taXNjIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvc2V0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29sbGFiIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29uZmdyb3VwIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29udHJhY3RudW0iLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb250cmFjdHNwb25zb3IiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb3B5cmlnaHQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb3JwYXV0aG9yIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29ycG5hbWUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb3JwY3JlZGl0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZGF0ZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImVkaXRpb24iLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlZGl0b3IiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbnZwYXJ0bnVtYmVyIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaXNibiIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imlzc24iLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpc3N1ZW51bSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im9yZ25hbWUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9pZCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNpdGViaWJsaW9pZCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb3NvdXJjZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb3JlbGF0aW9uIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvY292ZXJhZ2UiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvdGhlcmNyZWRpdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhZ2VudW1zIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJpbnRoaXN0b3J5Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJvZHVjdG5hbWUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwcm9kdWN0bnVtYmVyIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHViZGF0ZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InB1Ymxpc2hlciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InB1Ymxpc2hlcm5hbWUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwdWJzbnVtYmVyIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icmVsZWFzZWluZm8iLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXZoaXN0b3J5Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic2VyaWVzdm9sbnVtcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN1YnRpdGxlIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0idGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0aXRsZWFiYnJldiIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InZvbHVtZW51bSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNpdGV0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBlcnNvbm5hbWUiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0icGVyc29uLmlkZW50Lm1peCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBJIGRvbid0IHRoaW5rIHRoaXMgaXMgd2VsbCBwbGFjZWQsIGJ1dCBpdCBuZWVkcyB0byBiZSBoZXJlIGJlY2F1c2Ugb2YgLS0+CiAgPCEtLSB0aGUgcmVmZXJlbmNlIHRvIGJpYmxpb2NvbXBvbmVudC5taXggLS0+CiAgPHhzOmdyb3VwIG5hbWU9ImluZm8uY2xhc3MiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJncmFwaGljIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibWVkaWFvYmplY3QiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsZWdhbG5vdGljZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im1vZGVzcGVjIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3ViamVjdHNldCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImtleXdvcmRzZXQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpdGVybXNldCIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJiaWJsaW9jb21wb25lbnQubWl4Ii8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDwhLS0gQmlibGlvTGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2xpc3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb2xpc3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJsaXN0LmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb2VudHJ5Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb21peGVkIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2xpc3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmlibGlvbGlzdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9saXN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvbGlzdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmlibGlvbGlzdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb2xpc3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9lbnRyeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFydGljbGVpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYmlibGlvY29tcG9uZW50Lm1peCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmlibGlvZW50cnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9lbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmlibGlvZW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9lbnRyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb21peGVkLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9taXhlZCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9ImJpYmxpb2NvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb21zZXQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb21peGVkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb21peGVkLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb21peGVkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvbWl4ZWQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb21peGVkLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYmlibGlvbWl4ZWQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcnRpY2xlaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXJ0aWNsZWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcnRpY2xlaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhcnRpY2xlaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcnRpY2xlaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFydGljbGVpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhcnRpY2xlaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFydGljbGVpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvc2V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9zZXQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYmlibGlvY29tcG9uZW50Lm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9zZXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmlibGlvc2V0LmVsZW1lbnQgLS0+CiAgPCEtLSBSZWxhdGlvbjogUmVsYXRpb25zaGlwIG9mIGVsZW1lbnRzIGNvbnRhaW5lZCB3aXRoaW4gQmlibGlvU2V0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9zZXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbGF0aW9uIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9zZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb3NldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb3NldC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb21zZXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb21zZXQiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiaWJsaW9jb21wb25lbnQubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9tc2V0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9tc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb21zZXQuZWxlbWVudCAtLT4KICA8IS0tIFJlbGF0aW9uOiBSZWxhdGlvbnNoaXAgb2YgZWxlbWVudHMgY29udGFpbmVkIHdpdGhpbiBCaWJsaW9NU2V0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9tc2V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWxhdGlvbiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvbXNldC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmlibGlvbXNldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb21zZXQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9taXNjLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9taXNjIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvbWlzYy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiaWJsaW9taXNjLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb21pc2MuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9taXNjLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9taXNjLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYmlibGlvbWlzYy5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gU3ViamVjdCwgS2V5d29yZCwgYW5kIElUZXJtU2V0IGVsZW1lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3ViamVjdHNldC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3ViamVjdHNldCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzdWJqZWN0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YmplY3RzZXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3ViamVjdHNldC5lbGVtZW50IC0tPgogIDwhLS0gU2NoZW1lOiBDb250cm9sbGVkIHZvY2FidWxhcnkgZW1wbG95ZWQgaW4gU3ViamVjdFRlcm1zIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJqZWN0c2V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzY2hlbWUiIHR5cGU9InhzOk5NVE9LRU4iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YmplY3RzZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN1YmplY3RzZXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzdWJqZWN0c2V0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3ViamVjdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3ViamVjdCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzdWJqZWN0dGVybSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJqZWN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN1YmplY3QuZWxlbWVudCAtLT4KICA8IS0tCiAgICBXZWlnaHQ6IFJhbmtpbmcgb2YgdGhpcyBncm91cCBvZiBTdWJqZWN0VGVybXMgcmVsYXRpdmUKICAgIHRvIG90aGVycywgMCBpcyBsb3csIG5vIGhpZ2hlc3QgdmFsdWUgc3BlY2lmaWVkCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YmplY3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndlaWdodCIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3ViamVjdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3ViamVjdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN1YmplY3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJqZWN0dGVybS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3ViamVjdHRlcm0iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3ViamVjdHRlcm0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3ViamVjdHRlcm0uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3ViamVjdHRlcm0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJqZWN0dGVybS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3ViamVjdHRlcm0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzdWJqZWN0dGVybS5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2Ygc3ViamVjdHNldC5jb250ZW50Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5d29yZHNldC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ia2V5d29yZHNldCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJrZXl3b3JkIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleXdvcmRzZXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Yga2V5d29yZHNldC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJrZXl3b3Jkc2V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5d29yZHNldC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Yga2V5d29yZHNldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGtleXdvcmRzZXQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJrZXl3b3JkLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJrZXl3b3JkIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleXdvcmQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Yga2V5d29yZC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJrZXl3b3JkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5d29yZC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Yga2V5d29yZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGtleXdvcmQubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIGtleXdvcmRzZXQuY29udGVudC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Iml0ZXJtc2V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpdGVybXNldCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmRleHRlcm0iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaXRlcm1zZXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaXRlcm1zZXQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaXRlcm1zZXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpdGVybXNldC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaXRlcm1zZXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpdGVybXNldC5tb2R1bGUgLS0+CiAgPCEtLSBCaWJsaW9ncmFwaGljIGluZm8gZm9yICJibG9ja3MiIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJibG9ja2luZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJsb2NraW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJsb2NraW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBibG9ja2luZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmxvY2tpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmxvY2tpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBibG9ja2luZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBibG9ja2luZm8ubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIENvbXBvdW5kIChzZWN0aW9uLWlzaCkgZWxlbWVudHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBNZXNzYWdlIHNldCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dzZXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ3NldCIgc3Vic3RpdHV0aW9uR3JvdXA9ImNvbXBvdW5kLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1zZ2VudHJ5Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVtc2dlbnRyeSIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dzZXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnc2V0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ3NldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ3NldC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnc2V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnc2V0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ2VudHJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1zZyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJtc2dpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtc2dleHBsYW4iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnZW50cnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnZW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dlbnRyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpbXBsZW1zZ2VudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzaW1wbGVtc2dlbnRyeSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1zZ3RleHQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtc2dleHBsYW4iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2ltcGxlbXNnZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlbXNnZW50cnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2ltcGxlbXNnZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImF1ZGllbmNlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxldmVsIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9yaWdpbiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2ltcGxlbXNnZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNpbXBsZW1zZ2VudHJ5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlbXNnZW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2cucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1zZyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1zZ21haW4iLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtc2dzdWIiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibXNncmVsIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2cuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2cuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2cubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dtYWluLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dtYWluIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibXNndGV4dCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dtYWluLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1zZ21haW4uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnbWFpbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ21haW4ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1zZ21haW4uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dtYWluLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnc3ViLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dzdWIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtc2d0ZXh0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ3N1Yi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dzdWIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnc3ViLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnc3ViLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dzdWIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dzdWIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dyZWwucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ3JlbCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1zZ3RleHQiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNncmVsLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1zZ3JlbC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dyZWwuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dyZWwucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1zZ3JlbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1zZ3JlbC5tb2R1bGUgLS0+CiAgPCEtLSBNc2dUZXh0IChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibXNnaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtc2dsZXZlbCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibXNnb3JpZyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibXNnYXVkIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1zZ2luZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ2luZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1zZ2luZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnbGV2ZWwucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ2xldmVsIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dsZXZlbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dsZXZlbC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dsZXZlbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ2xldmVsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dsZXZlbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1zZ2xldmVsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnb3JpZy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibXNnb3JpZyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnb3JpZy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dvcmlnLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ29yaWcuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dvcmlnLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dvcmlnLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnb3JpZy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2F1ZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibXNnYXVkIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnYXVkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1zZ2F1ZC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dhdWQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dhdWQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1zZ2F1ZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1zZ2F1ZC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2V4cGxhbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibXNnZXhwbGFuIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZSIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ2V4cGxhbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dleHBsYW4uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnZXhwbGFuLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnZXhwbGFuLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dleHBsYW4uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dleHBsYW4ubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIG1zZ3NldC5jb250ZW50Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGFzay5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGFzayIgc3Vic3RpdHV0aW9uR3JvdXA9ImNvbXBvdW5kLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0YXNrc3VtbWFyeSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0YXNrcHJlcmVxdWlzaXRlcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icHJvY2VkdXJlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJleGFtcGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRhc2tyZWxhdGVkIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRhc2suYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGFzay5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0YXNrLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGFzay5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdGFzay5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRhc2subW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0YXNrc3VtbWFyeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGFza3N1bW1hcnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YXNrc3VtbWFyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0YXNrc3VtbWFyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0YXNrc3VtbWFyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRhc2tzdW1tYXJ5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0YXNrc3VtbWFyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRhc2tzdW1tYXJ5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGFza3ByZXJlcXVpc2l0ZXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRhc2twcmVyZXF1aXNpdGVzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGFza3ByZXJlcXVpc2l0ZXMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGFza3ByZXJlcXVpc2l0ZXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGFza3ByZXJlcXVpc2l0ZXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YXNrcHJlcmVxdWlzaXRlcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdGFza3ByZXJlcXVpc2l0ZXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0YXNrcHJlcmVxdWlzaXRlcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRhc2tyZWxhdGVkLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0YXNrcmVsYXRlZCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRhc2tyZWxhdGVkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRhc2tyZWxhdGVkLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRhc2tyZWxhdGVkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGFza3JlbGF0ZWQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRhc2tyZWxhdGVkLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdGFza3JlbGF0ZWQubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHRhc2suY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBRYW5kQVNldCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InFhbmRhc2V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJxYW5kYXNldCIgc3Vic3RpdHV0aW9uR3JvdXA9ImNvbXBvdW5kLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icWFuZGFzZXQubWl4Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InFhbmRhZGl2Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJxYW5kYWVudHJ5Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InFhbmRhc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHFhbmRhc2V0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InFhbmRhc2V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZWZhdWx0bGFiZWwiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJxYW5kYSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJudW1iZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibm9uZSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icWFuZGFzZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHFhbmRhc2V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcWFuZGFzZXQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxYW5kYWRpdi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icWFuZGFkaXYiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJxYW5kYXNldC5taXgiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icWFuZGFkaXYiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InFhbmRhZW50cnkiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icWFuZGFkaXYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcWFuZGFkaXYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icWFuZGFkaXYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJxYW5kYWRpdi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcWFuZGFkaXYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBxYW5kYWRpdi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InFhbmRhZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InFhbmRhZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJyZXZoaXN0b3J5Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJxdWVzdGlvbiIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYW5zd2VyIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InFhbmRhZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcWFuZGFlbnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxYW5kYWVudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icWFuZGFlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcWFuZGFlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHFhbmRhZW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxdWVzdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icXVlc3Rpb24iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImxhYmVsIi8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InFhbmRhc2V0Lm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJxdWVzdGlvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBxdWVzdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxdWVzdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InF1ZXN0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBxdWVzdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHF1ZXN0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYW5zd2VyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhbnN3ZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImxhYmVsIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icWFuZGFzZXQubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJxYW5kYWVudHJ5Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFuc3dlci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhbnN3ZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYW5zd2VyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYW5zd2VyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhbnN3ZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhbnN3ZXIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsYWJlbC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibGFiZWwiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0id29yZC5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBsYWJlbC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsYWJlbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBsYWJlbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGxhYmVsLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBxYW5kYXNldC5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIFByb2NlZHVyZSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb2NlZHVyZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHJvY2VkdXJlIiBzdWJzdGl0dXRpb25Hcm91cD0iY29tcG91bmQuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic3RlcCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9jZWR1cmUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJvY2VkdXJlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb2NlZHVyZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2NlZHVyZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJvY2VkdXJlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHJvY2VkdXJlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RlcC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3RlcCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6c2VxdWVuY2UgbWluT2NjdXJzPSIwIj4KICAgICAgICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJzdGVwcyIvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdGVwYWx0ZXJuYXRpdmVzIi8+CiAgICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN1YnN0ZXBzIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdGVwYWx0ZXJuYXRpdmVzIi8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGVwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN0ZXAuZWxlbWVudCAtLT4KICA8IS0tIFBlcmZvcm1hbmNlOiBXaGV0aGVyIHRoZSBTdGVwIG11c3QgYmUgcGVyZm9ybWVkIC0tPgogIDwhLS0gbm90ICNSRVFVSVJFRCEgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0ZXAuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBlcmZvcm1hbmNlIiBkZWZhdWx0PSJyZXF1aXJlZCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im9wdGlvbmFsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlcXVpcmVkIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGVwLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdGVwLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3RlcC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YnN0ZXBzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdWJzdGVwcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzdGVwIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YnN0ZXBzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN1YnN0ZXBzLmVsZW1lbnQgLS0+CiAgPCEtLSBQZXJmb3JtYW5jZTogd2hldGhlciBlbnRpcmUgc2V0IG9mIHN1YnN0ZXBzIG11c3QgYmUgcGVyZm9ybWVkIC0tPgogIDwhLS0gbm90ICNSRVFVSVJFRCEgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YnN0ZXBzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwZXJmb3JtYW5jZSIgZGVmYXVsdD0icmVxdWlyZWQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHRpb25hbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXF1aXJlZCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3Vic3RlcHMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN1YnN0ZXBzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3Vic3RlcHMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdGVwYWx0ZXJuYXRpdmVzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdGVwYWx0ZXJuYXRpdmVzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InN0ZXAiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RlcGFsdGVybmF0aXZlcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdGVwYWx0ZXJuYXRpdmVzLmVsZW1lbnQgLS0+CiAgPCEtLSBQZXJmb3JtYW5jZTogV2hldGhlciAob25lIG9mKSB0aGUgYWx0ZXJuYXRpdmVzIG11c3QgYmUgcGVyZm9ybWVkIC0tPgogIDwhLS0gbm90ICNSRVFVSVJFRCEgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0ZXBhbHRlcm5hdGl2ZXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBlcmZvcm1hbmNlIiBkZWZhdWx0PSJyZXF1aXJlZCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im9wdGlvbmFsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlcXVpcmVkIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGVwYWx0ZXJuYXRpdmVzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdGVwYWx0ZXJuYXRpdmVzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3RlcGFsdGVybmF0aXZlcy5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgcHJvY2VkdXJlLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gU2lkZWJhciAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2lkZWJhcmluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNpZGViYXJpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2lkZWJhcmluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2lkZWJhcmluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2lkZWJhcmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaWRlYmFyaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2lkZWJhcmluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzaWRlYmFyaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpZGViYXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNpZGViYXIiIHN1YnN0aXR1dGlvbkdyb3VwPSJjb21wb3VuZC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic2lkZWJhcmluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpZGViYXIubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpZGViYXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2lkZWJhci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaWRlYmFyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2lkZWJhci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2lkZWJhci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNpZGViYXIubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHNpZGViYXIuY29udGVudC5tb2RlbCAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBQYXJhZ3JhcGgtcmVsYXRlZCBlbGVtZW50cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhYnN0cmFjdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYWJzdHJhY3QiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhYnN0cmFjdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhYnN0cmFjdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhYnN0cmFjdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFic3RyYWN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhYnN0cmFjdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFic3RyYWN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXV0aG9yYmx1cmIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImF1dGhvcmJsdXJiIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXV0aG9yYmx1cmIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXV0aG9yYmx1cmIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXV0aG9yYmx1cmIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdXRob3JibHVyYi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXV0aG9yYmx1cmIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhdXRob3JibHVyYi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBlcnNvbmJsdXJiLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwZXJzb25ibHVyYiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBlcnNvbmJsdXJiLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBlcnNvbmJsdXJiLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBlcnNvbmJsdXJiLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGVyc29uYmx1cmIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBlcnNvbmJsdXJiLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcGVyc29uYmx1cmIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJibG9ja3F1b3RlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJibG9ja3F1b3RlIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5mb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJhdHRyaWJ1dGlvbiIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJsb2NrcXVvdGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmxvY2txdW90ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJibG9ja3F1b3RlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmxvY2txdW90ZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmxvY2txdW90ZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJsb2NrcXVvdGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdHRyaWJ1dGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXR0cmlidXRpb24iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdHRyaWJ1dGlvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhdHRyaWJ1dGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdHRyaWJ1dGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF0dHJpYnV0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhdHRyaWJ1dGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGF0dHJpYnV0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYnJpZGdlaGVhZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYnJpZGdlaGVhZCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0aXRsZS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJicmlkZ2VoZWFkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJyaWRnZWhlYWQuZWxlbWVudCAtLT4KICA8IS0tCiAgICBSZW5kZXJhczogSW5kaWNhdGVzIHRoZSBmb3JtYXQgaW4gd2hpY2ggdGhlIEJyaWRnZUhlYWQKICAgIHNob3VsZCBhcHBlYXIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYnJpZGdlaGVhZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVuZGVyYXMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYnJpZGdlaGVhZC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYnJpZGdlaGVhZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJyaWRnZWhlYWQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZW1hcmsucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlbWFyayI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlbWFyay5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZW1hcmsuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVtYXJrLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVtYXJrLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZW1hcmsuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZW1hcmsubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcGlncmFwaC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXBpZ3JhcGgiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImF0dHJpYnV0aW9uIi8+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibGl0ZXJhbGxheW91dCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcGlncmFwaC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlcGlncmFwaC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcGlncmFwaC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVwaWdyYXBoLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlcGlncmFwaC5hdHRsaXN0IC0tPgogIDwhLS0gQXR0cmlidXRpb24gKGRlZmluZWQgYWJvdmUpIC0tPgogIDwhLS0gZW5kIG9mIGVwaWdyYXBoLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZm9vdG5vdGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZvb3Rub3RlIiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZm9vdG5vdGUubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZvb3Rub3RlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZvb3Rub3RlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvb3Rub3RlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmb290bm90ZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZm9vdG5vdGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmb290bm90ZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImhpZ2hsaWdodHMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImhpZ2hsaWdodHMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaGlnaGxpZ2h0cy5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaGlnaGxpZ2h0cy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBoaWdobGlnaHRzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImhpZ2hsaWdodHMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJoaWdobGlnaHRzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBoaWdobGlnaHRzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaGlnaGxpZ2h0cy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvcm1hbHBhcmEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZvcm1hbHBhcmEiIHN1YnN0aXR1dGlvbkdyb3VwPSJwYXJhLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZm9ybWFscGFyYS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmb3JtYWxwYXJhLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvcm1hbHBhcmEuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmb3JtYWxwYXJhLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmb3JtYWxwYXJhLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZm9ybWFscGFyYS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcmEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBhcmEiIHN1YnN0aXR1dGlvbkdyb3VwPSJwYXJhLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICAgIDx4czpncm91cCByZWY9InBhcmEubWl4Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJhLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBhcmEuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFyYS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcmEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBhcmEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwYXJhLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2ltcGFyYS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2ltcGFyYSIgc3Vic3RpdHV0aW9uR3JvdXA9InBhcmEuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaW1wYXJhLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNpbXBhcmEuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2ltcGFyYS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpbXBhcmEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNpbXBhcmEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzaW1wYXJhLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWRtb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNhdXRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJhZG1vbi5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYWRtb24ubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNhdXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY2F1dGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYXV0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRtb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNhdXRpb24uYXR0bGlzdCAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbXBvcnRhbnQiIHN1YnN0aXR1dGlvbkdyb3VwPSJhZG1vbi5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYWRtb24ubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImltcG9ydGFudC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbXBvcnRhbnQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW1wb3J0YW50LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRtb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGltcG9ydGFudC5hdHRsaXN0IC0tPgogIDx4czplbGVtZW50IG5hbWU9Im5vdGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJhZG1vbi5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYWRtb24ubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im5vdGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygbm90ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJub3RlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRtb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG5vdGUuYXR0bGlzdCAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0aXAiIHN1YnN0aXR1dGlvbkdyb3VwPSJhZG1vbi5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYWRtb24ubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRpcC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0aXAuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGlwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRtb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRpcC5hdHRsaXN0IC0tPgogIDx4czplbGVtZW50IG5hbWU9Indhcm5pbmciIHN1YnN0aXR1dGlvbkdyb3VwPSJhZG1vbi5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYWRtb24ubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Indhcm5pbmcuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygd2FybmluZy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ3YXJuaW5nLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRtb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHdhcm5pbmcuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhZG1vbi5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gTGlzdHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEdsb3NzTGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzbGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ2xvc3NsaXN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibGlzdC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imdsb3NzZW50cnkiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NsaXN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdsb3NzbGlzdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2xpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc2xpc3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3NzbGlzdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzbGlzdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdsb3NzZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnbG9zc3Rlcm0iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYWNyb255bSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJhYmJyZXYiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmV2aGlzdG9yeSIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdsb3Nzc2VlIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJnbG9zc2RlZiIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc2VudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdsb3NzZW50cnkuZWxlbWVudCAtLT4KICA8IS0tCiAgICBTb3J0QXM6IFN0cmluZyBieSB3aGljaCB0aGUgR2xvc3NFbnRyeSBpcyB0byBiZSBzb3J0ZWQKICAgIChhbHBoYWJldGl6ZWQpIGluIGxpZXUgb2YgaXRzIHByb3BlciBjb250ZW50CiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNvcnRhcyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ2xvc3NlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzZW50cnkubW9kdWxlIC0tPgogIDwhLS0gR2xvc3NUZXJtIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NkZWYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdsb3NzZGVmIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJnbG9zc2RlZi5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imdsb3Nzc2VlYWxzbyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc2RlZi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBnbG9zc2RlZi5lbGVtZW50IC0tPgogIDwhLS0gU3ViamVjdDogTGlzdCBvZiBzdWJqZWN0czsga2V5d29yZHMgZm9yIHRoZSBkZWZpbml0aW9uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2RlZi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3ViamVjdCIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NkZWYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3NzZGVmLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ2xvc3NkZWYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc3NlZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ2xvc3NzZWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc3NlZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBnbG9zc3NlZS5lbGVtZW50IC0tPgogIDwhLS0KICAgIE90aGVyVGVybTogUmVmZXJlbmNlIHRvIHRoZSBHbG9zc0VudHJ5IHdob3NlIEdsb3NzVGVybQogICAgc2hvdWxkIGJlIGRpc3BsYXllZCBhdCB0aGUgcG9pbnQgb2YgdGhlIEdsb3NzU2VlCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3Nzc2VlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcnRlcm0iIHR5cGU9InhzOklEUkVGIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc3NlZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ2xvc3NzZWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBnbG9zc3NlZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3Nzc2VlYWxzby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ2xvc3NzZWVhbHNvIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NzZWVhbHNvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdsb3Nzc2VlYWxzby5lbGVtZW50IC0tPgogIDwhLS0KICAgIE90aGVyVGVybTogUmVmZXJlbmNlIHRvIHRoZSBHbG9zc0VudHJ5IHdob3NlIEdsb3NzVGVybQogICAgc2hvdWxkIGJlIGRpc3BsYXllZCBhdCB0aGUgcG9pbnQgb2YgdGhlIEdsb3NzU2VlQWxzbwogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc3NlZWFsc28uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVydGVybSIgdHlwZT0ieHM6SURSRUYiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3Nzc2VlYWxzby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ2xvc3NzZWVhbHNvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ2xvc3NzZWVhbHNvLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBnbG9zc2VudHJ5LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gSXRlbWl6ZWRMaXN0IGFuZCBPcmRlcmVkTGlzdCAuLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaXRlbWl6ZWRsaXN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpdGVtaXplZGxpc3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJsaXN0LmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibGlzdHByZWFtYmxlLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imxpc3RpdGVtIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Iml0ZW1pemVkbGlzdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpdGVtaXplZGxpc3QuZWxlbWVudCAtLT4KICA8IS0tCiAgICBTcGFjaW5nOiBXaGV0aGVyIHRoZSB2ZXJ0aWNhbCBzcGFjZSBpbiB0aGUgbGlzdCBzaG91bGQgYmUKICAgIGNvbXByZXNzZWQKICAtLT4KICA8IS0tCiAgICBNYXJrOiBLZXl3b3JkLCBlLmcuLCBidWxsZXQsIGRhc2gsIGNoZWNrYm94LCBub25lOwogICAgbGlzdCBvZiBrZXl3b3JkcyBhbmQgZGVmYXVsdHMgYXJlIGltcGxlbWVudGF0aW9uIHNwZWNpZmljCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Iml0ZW1pemVkbGlzdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3BhY2luZyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vcm1hbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb21wYWN0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtYXJrLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaXRlbWl6ZWRsaXN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpdGVtaXplZGxpc3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpdGVtaXplZGxpc3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcmRlcmVkbGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib3JkZXJlZGxpc3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJsaXN0LmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibGlzdHByZWFtYmxlLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imxpc3RpdGVtIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9yZGVyZWRsaXN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG9yZGVyZWRsaXN0LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgTnVtZXJhdGlvbjogU3R5bGUgb2YgTGlzdEl0ZW0gbnVtYmVyZWQ7IGRlZmF1bHQgaXMgZXhwZWN0ZWQKICAgIHRvIGJlIEFyYWJpYwogIC0tPgogIDwhLS0KICAgIEluaGVyaXROdW06IFNwZWNpZmllcyBmb3IgYSBuZXN0ZWQgbGlzdCB0aGF0IHRoZSBudW1iZXJpbmcKICAgIG9mIExpc3RJdGVtcyBzaG91bGQgaW5jbHVkZSB0aGUgbnVtYmVyIG9mIHRoZSBpdGVtCiAgICB3aXRoaW4gd2hpY2ggdGhleSBhcmUgbmVzdGVkIChlLmcuLCAxYSBhbmQgMWIgd2l0aGluIDEsCiAgICByYXRoZXIgdGhhbiBhIGFuZCBiKQogIC0tPgogIDwhLS0KICAgIENvbnRpbnVhdGlvbjogV2hlcmUgbGlzdCBudW1iZXJpbmcgYmVnaW5zIGFmcmVzaCAoUmVzdGFydHMsCiAgICB0aGUgZGVmYXVsdCkgb3IgY29udGludWVzIHRoYXQgb2YgdGhlIGltbWVkaWF0ZWx5IHByZWNlZGluZwogICAgbGlzdCAoQ29udGludWVzKQogIC0tPgogIDwhLS0KICAgIFNwYWNpbmc6IFdoZXRoZXIgdGhlIHZlcnRpY2FsIHNwYWNlIGluIHRoZSBsaXN0IHNob3VsZCBiZQogICAgY29tcHJlc3NlZAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcmRlcmVkbGlzdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibnVtZXJhdGlvbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImFyYWJpYyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ1cHBlcmFscGhhIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imxvd2VyYWxwaGEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idXBwZXJyb21hbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsb3dlcnJvbWFuIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluaGVyaXRudW0iIGRlZmF1bHQ9Imlnbm9yZSI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImluaGVyaXQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaWdub3JlIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRpbnVhdGlvbiIgZGVmYXVsdD0icmVzdGFydHMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb250aW51ZXMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVzdGFydHMiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3BhY2luZyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vcm1hbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb21wYWN0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvcmRlcmVkbGlzdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb3JkZXJlZGxpc3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvcmRlcmVkbGlzdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imxpc3RpdGVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJsaXN0aXRlbSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imxpc3RpdGVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxpc3RpdGVtLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgT3ZlcnJpZGU6IEluZGljYXRlcyB0aGUgbWFyayB0byBiZSB1c2VkIGZvciB0aGlzIExpc3RJdGVtCiAgICBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IG1hcmsgb3IgdGhlIG1hcmsgc3BlY2lmaWVkIGJ5CiAgICB0aGUgTWFyayBhdHRyaWJ1dGUgb24gdGhlIGVuY2xvc2luZyBJdGVtaXplZExpc3QKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGlzdGl0ZW0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im92ZXJyaWRlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaXN0aXRlbS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbGlzdGl0ZW0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBsaXN0aXRlbS5tb2R1bGUgLS0+CiAgPCEtLSBTZWdtZW50ZWRMaXN0IC4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWdtZW50ZWRsaXN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWdtZW50ZWRsaXN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibGlzdC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VndGl0bGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWdsaXN0aXRlbSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWdtZW50ZWRsaXN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlZ21lbnRlZGxpc3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VnbWVudGVkbGlzdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZ21lbnRlZGxpc3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlZ21lbnRlZGxpc3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWdtZW50ZWRsaXN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VndGl0bGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlZ3RpdGxlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRpdGxlLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZ3RpdGxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlZ3RpdGxlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZ3RpdGxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VndGl0bGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlZ3RpdGxlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VndGl0bGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWdsaXN0aXRlbS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VnbGlzdGl0ZW0iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VnIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZ2xpc3RpdGVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlZ2xpc3RpdGVtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZ2xpc3RpdGVtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VnbGlzdGl0ZW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlZ2xpc3RpdGVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VnbGlzdGl0ZW0ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWcucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlZyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWcuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VnLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VnLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWcuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWcubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHNlZ21lbnRlZGxpc3QuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBTaW1wbGVMaXN0IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaW1wbGVsaXN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzaW1wbGVsaXN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibGlzdC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtZW1iZXIiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2ltcGxlbGlzdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzaW1wbGVsaXN0LmVsZW1lbnQgLS0+CiAgPCEtLSBDb2x1bW5zOiBUaGUgbnVtYmVyIG9mIGNvbHVtbnMgdGhlIGFycmF5IHNob3VsZCBjb250YWluIC0tPgogIDwhLS0KICAgIFR5cGU6IEhvdyB0aGUgTWVtYmVycyBvZiB0aGUgU2ltcGxlTGlzdCBzaG91bGQgYmUKICAgIGZvcm1hdHRlZDogSW5saW5lIChtZW1iZXJzIHNlcGFyYXRlZCB3aXRoIGNvbW1hcyBldGMuCiAgICBpbmxpbmUpLCBWZXJ0ICh0b3AgdG8gYm90dG9tIGluIG4gQ29sdW1ucyksIG9yIEhvcml6IChpbgogICAgdGhlIGRpcmVjdGlvbiBvZiB0ZXh0IGZsb3cpIGluIG4gQ29sdW1ucy4gIElmIENvbHVtbgogICAgaXMgMSBvciBpbXBsaWVkLCBUeXBlPVZlcnQgYW5kIFR5cGU9SG9yaXogZ2l2ZSB0aGUgc2FtZQogICAgcmVzdWx0cy4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2ltcGxlbGlzdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sdW1ucyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIiBkZWZhdWx0PSJ2ZXJ0Ij4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaW5saW5lIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InZlcnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaG9yaXoiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpbXBsZWxpc3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNpbXBsZWxpc3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzaW1wbGVsaXN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWVtYmVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtZW1iZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZW1iZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWVtYmVyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lbWJlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1lbWJlci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWVtYmVyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWVtYmVyLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBzaW1wbGVsaXN0LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gVmFyaWFibGVMaXN0IC4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmFyaWFibGVsaXN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2YXJpYWJsZWxpc3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJsaXN0LmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibGlzdHByZWFtYmxlLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InZhcmxpc3RlbnRyeSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2YXJpYWJsZWxpc3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdmFyaWFibGVsaXN0LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgVGVybUxlbmd0aDogTGVuZ3RoIGJleW9uZCB3aGljaCB0aGUgcHJlc2VudGF0aW9uIGVuZ2luZQogICAgbWF5IGNvbnNpZGVyIHRoZSBUZXJtIHRvbyBsb25nIGFuZCBzZWxlY3QgYW4gYWx0ZXJuYXRlCiAgICBwcmVzZW50YXRpb24gb2YgdGhlIFRlcm0gYW5kLCBvciwgaXRzIGFzc29jaWF0ZWQgTGlzdEl0ZW0uCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZhcmlhYmxlbGlzdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGVybWxlbmd0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGFjaW5nIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibm9ybWFsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvbXBhY3QiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZhcmlhYmxlbGlzdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdmFyaWFibGVsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdmFyaWFibGVsaXN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmFybGlzdGVudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2YXJsaXN0ZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGVybSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdGl0ZW0iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmFybGlzdGVudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZhcmxpc3RlbnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2YXJsaXN0ZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2YXJsaXN0ZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZhcmxpc3RlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZhcmxpc3RlbnRyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRlcm0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRlcm0iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ZXJtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRlcm0uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGVybS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRlcm0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRlcm0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0ZXJtLm1vZHVsZSAtLT4KICA8IS0tIExpc3RJdGVtIChkZWZpbmVkIGFib3ZlKSAtLT4KICA8IS0tIGVuZCBvZiB2YXJpYWJsZWxpc3QuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBDYWxsb3V0TGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYWxsb3V0bGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2FsbG91dGxpc3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJsaXN0LmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjYWxsb3V0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNhbGxvdXRsaXN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNhbGxvdXRsaXN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNhbGxvdXRsaXN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2FsbG91dGxpc3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNhbGxvdXRsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2FsbG91dGxpc3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYWxsb3V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjYWxsb3V0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2FsbG91dC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjYWxsb3V0LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgQXJlYVJlZnM6IElEcyBvZiBvbmUgb3IgbW9yZSBBcmVhcyBvciBBcmVhU2V0cyBkZXNjcmliZWQKICAgIGJ5IHRoaXMgQ2FsbG91dAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYWxsb3V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhcmVhcmVmcyIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6SURSRUZTIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjYWxsb3V0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjYWxsb3V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2FsbG91dC5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgY2FsbG91dGxpc3QuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gT2JqZWN0cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEV4YW1wbGVzIGV0Yy4gLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImV4YW1wbGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImV4YW1wbGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJmb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImV4YW1wbGUubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImV4YW1wbGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZXhhbXBsZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJleGFtcGxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmbG9hdHN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9IndpZHRoLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXhhbXBsZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZXhhbXBsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGV4YW1wbGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmZvcm1hbGV4YW1wbGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImluZm9ybWFsZXhhbXBsZSIgc3Vic3RpdHV0aW9uR3JvdXA9ImluZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZXhhbXBsZS5taXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5mb3JtYWxleGFtcGxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGluZm9ybWFsZXhhbXBsZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmZvcm1hbGV4YW1wbGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZsb2F0c3R5bGUiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9IndpZHRoLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5mb3JtYWxleGFtcGxlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGV4YW1wbGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGV4YW1wbGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9ncmFtbGlzdGluZ2NvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwcm9ncmFtbGlzdGluZ2NvIiBzdWJzdGl0dXRpb25Hcm91cD0ibGluZXNwZWNpZmljLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYXJlYXNwZWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InByb2dyYW1saXN0aW5nIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjYWxsb3V0bGlzdCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9ncmFtbGlzdGluZ2NvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByb2dyYW1saXN0aW5nY28uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvZ3JhbWxpc3Rpbmdjby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2dyYW1saXN0aW5nY28ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByb2dyYW1saXN0aW5nY28uYXR0bGlzdCAtLT4KICA8IS0tIENhbGxvdXRMaXN0IChkZWZpbmVkIGFib3ZlIGluIExpc3RzKSAtLT4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGV4YW1wbGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcmVhc3BlYy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXJlYXNwZWMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFyZWEiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFyZWFzZXQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZWFzcGVjLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFyZWFzcGVjLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgVW5pdHM6IGdsb2JhbCB1bml0IG9mIG1lYXN1cmUgaW4gd2hpY2ggY29vcmRpbmF0ZXMgaW4KICAgIHRoaXMgc3BlYyBhcmUgZXhwcmVzc2VkOgogICAgCiAgICAtIENBTFNQYWlyICJ4MSx5MSB4Mix5MiI6IGxvd2VyLWxlZnQgYW5kIHVwcGVyLXJpZ2h0CiAgICBjb29yZGluYXRlcyBpbiBhIHJlY3RhbmdsZSBkZXNjcmliaW5nIHJlcHJvIGFyZWEgaW4gd2hpY2gKICAgIGdyYXBoaWMgaXMgcGxhY2VkLCB3aGVyZSBYIGFuZCBZIGRpbWVuc2lvbnMgYXJlIGVhY2ggc29tZQogICAgbnVtYmVyIDAuLjEwMDAwICh0YWtlbiBmcm9tIENBTFMgZ3JhcGhpYyBhdHRyaWJ1dGVzKQogICAgCiAgICAtIExpbmVDb2x1bW4gImxpbmUgY29sdW1uIjogbGluZSBudW1iZXIgYW5kIGNvbHVtbiBudW1iZXIKICAgIGF0IHdoaWNoIHRvIHN0YXJ0IGNhbGxvdXQgdGV4dCBpbiAibGluZXNwZWNpZmljIiBjb250ZW50CiAgICAKICAgIC0gTGluZVJhbmdlICJzdGFydGxpbmUgZW5kbGluZSI6IHdob2xlIGxpbmVzIGZyb20gc3RhcnRsaW5lCiAgICB0byBlbmRsaW5lIGluICJsaW5lc3BlY2lmaWMiIGNvbnRlbnQKICAgIAogICAgLSBMaW5lQ29sdW1uUGFpciAibGluZTEgY29sMSBsaW5lMiBjb2wyIjogc3RhcnRpbmcgYW5kIGVuZGluZwogICAgcG9pbnRzIG9mIGFyZWEgaW4gImxpbmVzcGVjaWZpYyIgY29udGVudCB0aGF0IHN0YXJ0cyBhdAogICAgZmlyc3QgcG9zaXRpb24gYW5kIGVuZHMgYXQgc2Vjb25kIHBvc2l0aW9uIChpbmNsdWRpbmcgdGhlCiAgICBiZWdpbm5pbmdzIG9mIGFueSBpbnRlcnZlbmluZyBsaW5lcykKICAgIAogICAgLSBPdGhlcjogZGlyZWN0aXZlIHRvIGxvb2sgYXQgdmFsdWUgb2YgT3RoZXJVbml0cyBhdHRyaWJ1dGUKICAgIHRvIGdldCBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBrZXl3b3JkCiAgICAKICAgIFRoZSBkZWZhdWx0IGlzIGltcGxlbWVudGF0aW9uLXNwZWNpZmljOyB1c3VhbGx5IGRlcGVuZGVudCBvbgogICAgdGhlIHBhcmVudCBlbGVtZW50IChHcmFwaGljQ08gZ2V0cyBDQUxTUGFpciwgUHJvZ3JhbUxpc3RpbmdDTwogICAgYW5kIFNjcmVlbkNPIGdldCBMaW5lQ29sdW1uKQogIC0tPgogIDwhLS0gT3RoZXJVbml0czogVXNlci1kZWZpbmVkIHVuaXRzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcmVhc3BlYy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idW5pdHMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjYWxzcGFpciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lY29sdW1uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVyYW5nZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lY29sdW1ucGFpciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcnVuaXRzIiB0eXBlPSJ4czpOTVRPS0VOIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcmVhc3BlYy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXJlYXNwZWMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhcmVhc3BlYy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFyZWEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFyZWEiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcmVhLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFyZWEuZWxlbWVudCAtLT4KICA8IS0tIGJ1ZyBudW1iZXIvc3ltYm9sIG92ZXJyaWRlIG9yIGluaXRpYWxpemF0aW9uIC0tPgogIDwhLS0gdG8gYW55IHJlbGF0ZWQgaW5mb3JtYXRpb24gLS0+CiAgPCEtLQogICAgVW5pdHM6IHVuaXQgb2YgbWVhc3VyZSBpbiB3aGljaCBjb29yZGluYXRlcyBpbiB0aGlzCiAgICBhcmVhIGFyZSBleHByZXNzZWQ7IGluaGVyaXRzIGZyb20gQXJlYVNldCBhbmQgQXJlYVNwZWMKICAtLT4KICA8IS0tIE90aGVyVW5pdHM6IFVzZXItZGVmaW5lZCB1bml0cyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJlYS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVuaXRzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2Fsc3BhaXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGluZWNvbHVtbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lcmFuZ2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGluZWNvbHVtbnBhaXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3RoZXJ1bml0cyIgdHlwZT0ieHM6Tk1UT0tFTiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb29yZHMiIHVzZT0icmVxdWlyZWQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlkcmVxLmNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZWEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFyZWEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhcmVhLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJlYXNldC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXJlYXNldCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJhcmVhIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZWFzZXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXJlYXNldC5lbGVtZW50IC0tPgogIDwhLS0gYnVnIG51bWJlci9zeW1ib2wgb3ZlcnJpZGUgb3IgaW5pdGlhbGl6YXRpb24gLS0+CiAgPCEtLQogICAgVW5pdHM6IHVuaXQgb2YgbWVhc3VyZSBpbiB3aGljaCBjb29yZGluYXRlcyBpbiB0aGlzCiAgICBhcmVhIGFyZSBleHByZXNzZWQ7IGluaGVyaXRzIGZyb20gQXJlYVNwZWMKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJlYXNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1bml0cyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNhbHNwYWlyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVjb2x1bW4iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGluZXJhbmdlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVjb2x1bW5wYWlyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im90aGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVydW5pdHMiIHR5cGU9InhzOk5NVE9LRU4iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29vcmRzIiB1c2U9InJlcXVpcmVkIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpZHJlcS5jb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcmVhc2V0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhcmVhc2V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXJlYXNldC5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgYXJlYXNwZWMuY29udGVudC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb2dyYW1saXN0aW5nLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwcm9ncmFtbGlzdGluZyIgc3Vic3RpdHV0aW9uR3JvdXA9ImxpbmVzcGVjaWZpYy5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb3JlZiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZWFubm90YXRpb24iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRvYmplY3QiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2dyYW1saXN0aW5nLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByb2dyYW1saXN0aW5nLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb2dyYW1saXN0aW5nLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0id2lkdGguYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lc3BlY2lmaWMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9ncmFtbGlzdGluZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJvZ3JhbWxpc3RpbmcuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcm9ncmFtbGlzdGluZy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpdGVyYWxsYXlvdXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImxpdGVyYWxsYXlvdXQiIHN1YnN0aXR1dGlvbkdyb3VwPSJsaW5lc3BlY2lmaWMuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29yZWYiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVhbm5vdGF0aW9uIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaXRlcmFsbGF5b3V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxpdGVyYWxsYXlvdXQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGl0ZXJhbGxheW91dC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9IndpZHRoLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZXNwZWNpZmljLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIgZGVmYXVsdD0ibm9ybWFsIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibW9ub3NwYWNlZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JtYWwiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpdGVyYWxsYXlvdXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxpdGVyYWxsYXlvdXQuYXR0bGlzdCAtLT4KICA8IS0tIExpbmVBbm5vdGF0aW9uIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIGVuZCBvZiBsaXRlcmFsbGF5b3V0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2NyZWVuY28ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNjcmVlbmNvIiBzdWJzdGl0dXRpb25Hcm91cD0ibGluZXNwZWNpZmljLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYXJlYXNwZWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNjcmVlbiIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY2FsbG91dGxpc3QiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2NyZWVuY28uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuY28uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2NyZWVuY28uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzY3JlZW5jby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuY28uYXR0bGlzdCAtLT4KICA8IS0tIEFyZWFTcGVjIChkZWZpbmVkIGFib3ZlKSAtLT4KICA8IS0tIENhbGxvdXRMaXN0IChkZWZpbmVkIGFib3ZlIGluIExpc3RzKSAtLT4KICA8IS0tIGVuZCBvZiBzY3JlZW5jby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNjcmVlbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2NyZWVuIiBzdWJzdGl0dXRpb25Hcm91cD0ibGluZXNwZWNpZmljLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY28iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvcmVmIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZXh0b2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lYW5ub3RhdGlvbiIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2NyZWVuLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNjcmVlbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzY3JlZW4uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ3aWR0aC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmVzcGVjaWZpYy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNjcmVlbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2NyZWVuc2hvdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2NyZWVuc2hvdCIgc3Vic3RpdHV0aW9uR3JvdXA9ImxpbmVzcGVjaWZpYy5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic2NyZWVuaW5mbyIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImdyYXBoaWMiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JhcGhpY2NvIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1lZGlhb2JqZWN0Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1lZGlhb2JqZWN0Y28iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2NyZWVuc2hvdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzY3JlZW5zaG90LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNjcmVlbnNob3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzY3JlZW5zaG90LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzY3JlZW5zaG90LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuc2hvdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNjcmVlbmluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNjcmVlbmluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzY3JlZW5pbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNjcmVlbmluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2NyZWVuaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNjcmVlbmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNjcmVlbmluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzY3JlZW5pbmZvLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBzY3JlZW5zaG90LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gRmlndXJlcyBldGMuIC4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmlndXJlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmaWd1cmUiIHN1YnN0aXR1dGlvbkdyb3VwPSJmb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6Z3JvdXAgcmVmPSJmaWd1cmUubWl4Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaWd1cmUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZmlndXJlLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgRmxvYXQ6IFdoZXRoZXIgdGhlIEZpZ3VyZSBpcyBzdXBwb3NlZCB0byBiZSByZW5kZXJlZAogICAgd2hlcmUgY29udmVuaWVudCAoeWVzICgxKSB2YWx1ZSkgb3IgYXQgdGhlIHBsYWNlIGl0IG9jY3VycwogICAgaW4gdGhlIHRleHQgKG5vICgwKSB2YWx1ZSwgdGhlIGRlZmF1bHQpCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZpZ3VyZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmxvYXQiIGRlZmF1bHQ9IjAiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmbG9hdHN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBnd2lkZSIgdHlwZT0ieWVzb3Juby5hdHR2YWxzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZpZ3VyZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZmlndXJlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZmlndXJlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5mb3JtYWxmaWd1cmUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImluZm9ybWFsZmlndXJlIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5mb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmdyb3VwIHJlZj0iZmlndXJlLm1peCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5mb3JtYWxmaWd1cmUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWxmaWd1cmUuZWxlbWVudCAtLT4KICA8IS0tCiAgICBGbG9hdDogV2hldGhlciB0aGUgRmlndXJlIGlzIHN1cHBvc2VkIHRvIGJlIHJlbmRlcmVkCiAgICB3aGVyZSBjb252ZW5pZW50ICh5ZXMgKDEpIHZhbHVlKSBvciBhdCB0aGUgcGxhY2UgaXQgb2NjdXJzCiAgICBpbiB0aGUgdGV4dCAobm8gKDApIHZhbHVlLCB0aGUgZGVmYXVsdCkKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5mb3JtYWxmaWd1cmUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZsb2F0IiBkZWZhdWx0PSIwIiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmxvYXRzdHlsZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwZ3dpZGUiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmZvcm1hbGZpZ3VyZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWxmaWd1cmUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGZpZ3VyZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImdyYXBoaWNjby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ3JhcGhpY2NvIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5mb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmVhc3BlYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY2FsbG91dGxpc3QiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3JhcGhpY2NvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdyYXBoaWNjby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJncmFwaGljY28uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJncmFwaGljY28ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdyYXBoaWNjby5hdHRsaXN0IC0tPgogIDwhLS0gQXJlYVNwZWMgKGRlZmluZWQgYWJvdmUgaW4gRXhhbXBsZXMpIC0tPgogIDwhLS0gQ2FsbG91dExpc3QgKGRlZmluZWQgYWJvdmUgaW4gTGlzdHMpIC0tPgogIDwhLS0gZW5kIG9mIGdyYXBoaWNjby5tb2R1bGUgLS0+CiAgPCEtLQogICAgR3JhcGhpY2FsIGRhdGEgY2FuIGJlIHRoZSBjb250ZW50IG9mIEdyYXBoaWMsIG9yIHlvdSBjYW4gcmVmZXJlbmNlCiAgICBhbiBleHRlcm5hbCBmaWxlIGVpdGhlciBhcyBhbiBlbnRpdHkgKEVudGl0cmVmKSBvciBhIGZpbGVuYW1lCiAgICAoRmlsZXJlZikuCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImdyYXBoaWMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImdyYXBoaWMiIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImdyYXBoaWMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ3JhcGhpYy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJncmFwaGljLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3JhcGhpY3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJncmFwaGljLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBncmFwaGljLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ3JhcGhpYy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlubGluZWdyYXBoaWMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImlubGluZWdyYXBoaWMiIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmxpbmVvYmouY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlubGluZWdyYXBoaWMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5saW5lZ3JhcGhpYy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmxpbmVncmFwaGljLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3JhcGhpY3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmxpbmVncmFwaGljLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmxpbmVncmFwaGljLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5saW5lZ3JhcGhpYy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lZGlhb2JqZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtZWRpYW9iamVjdCIgc3Vic3RpdHV0aW9uR3JvdXA9ImluZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJvYmplY3RpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVkaWFvYmplY3QubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImNhcHRpb24iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWVkaWFvYmplY3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWVkaWFvYmplY3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWVkaWFvYmplY3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZWRpYW9iamVjdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWVkaWFvYmplY3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtZWRpYW9iamVjdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlubGluZW1lZGlhb2JqZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmxpbmVtZWRpYW9iamVjdCIgc3Vic3RpdHV0aW9uR3JvdXA9ImlubGluZW9iai5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJvYmplY3RpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVkaWFvYmplY3QubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlubGluZW1lZGlhb2JqZWN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGlubGluZW1lZGlhb2JqZWN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlubGluZW1lZGlhb2JqZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5saW5lbWVkaWFvYmplY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGlubGluZW1lZGlhb2JqZWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5saW5lbWVkaWFvYmplY3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2aWRlb29iamVjdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idmlkZW9vYmplY3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJtZWRpYW9iamVjdC5taXgiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im9iamVjdGluZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InZpZGVvZGF0YSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2aWRlb29iamVjdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB2aWRlb29iamVjdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2aWRlb29iamVjdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZpZGVvb2JqZWN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB2aWRlb29iamVjdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZpZGVvb2JqZWN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXVkaW9vYmplY3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImF1ZGlvb2JqZWN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibWVkaWFvYmplY3QubWl4Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJvYmplY3RpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhdWRpb2RhdGEiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXVkaW9vYmplY3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXVkaW9vYmplY3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXVkaW9vYmplY3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdWRpb29iamVjdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXVkaW9vYmplY3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhdWRpb29iamVjdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImltYWdlb2JqZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbWFnZW9iamVjdCIgc3Vic3RpdHV0aW9uR3JvdXA9Im1lZGlhb2JqZWN0Lm1peCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ib2JqZWN0aW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW1hZ2VkYXRhIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImltYWdlb2JqZWN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGltYWdlb2JqZWN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImltYWdlb2JqZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW1hZ2VvYmplY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGltYWdlb2JqZWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW1hZ2VvYmplY3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0ZXh0b2JqZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0ZXh0b2JqZWN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibWVkaWFvYmplY3QubWl4Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJvYmplY3RpbmZvIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icGhyYXNlIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRkYXRhIi8+CiAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGV4dG9iamVjdC5taXgiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGV4dG9iamVjdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0ZXh0b2JqZWN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRleHRvYmplY3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ZXh0b2JqZWN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0ZXh0b2JqZWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdGV4dG9iamVjdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9iamVjdGluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im9iamVjdGluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvYmplY3RpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG9iamVjdGluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib2JqZWN0aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9iamVjdGluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG9iamVjdGluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvYmplY3RpbmZvLm1vZHVsZSAtLT4KICA8IS0tCiAgICBFbnRpdHlSZWY6IE5hbWUgb2YgYW4gZXh0ZXJuYWwgZW50aXR5IGNvbnRhaW5pbmcgdGhlIGNvbnRlbnQKICAgIG9mIHRoZSBvYmplY3QgZGF0YQogIC0tPgogIDwhLS0KICAgIEZpbGVSZWY6IEZpbGVuYW1lLCBxdWFsaWZpZWQgYnkgYSBwYXRobmFtZSBpZiBkZXNpcmVkLAogICAgZGVzaWduYXRpbmcgdGhlIGZpbGUgY29udGFpbmluZyB0aGUgY29udGVudCBvZiB0aGUgb2JqZWN0IGRhdGEKICAtLT4KICA8IS0tIEZvcm1hdDogTm90YXRpb24gb2YgdGhlIGVsZW1lbnQgY29udGVudCwgaWYgYW55IC0tPgogIDwhLS0gU3JjQ3JlZGl0OiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgc291cmNlIG9mIHRoZSBpbWFnZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib2JqZWN0ZGF0YS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbnRpdHlyZWYiIHR5cGU9InhzOkVOVElUWSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmaWxlcmVmIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvcm1hdCIgdHlwZT0ibm90YXRpb24uY2xhc3MiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3JjY3JlZGl0Ii8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmlkZW9kYXRhLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2aWRlb2RhdGEiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2aWRlb2RhdGEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdmlkZW9kYXRhLmVsZW1lbnQgLS0+CiAgPCEtLSBXaWR0aDogU2FtZSBhcyBDQUxTIHJlcHJvd2lkIChkZXNpcmVkIHdpZHRoKSAtLT4KICA8IS0tIERlcHRoOiBTYW1lIGFzIENBTFMgcmVwcm9kZXAgKGRlc2lyZWQgZGVwdGgpIC0tPgogIDwhLS0KICAgIEFsaWduOiBTYW1lIGFzIENBTFMgaHBsYWNlIHdpdGggJ25vbmUnIHJlbW92ZWQ7ICNJTVBMSUVEIG1lYW5zCiAgICBhcHBsaWNhdGlvbi1zcGVjaWZpYwogIC0tPgogIDwhLS0gU2NhbGU6IENvbmZsYXRpb24gb2YgQ0FMUyBoc2NhbGUgYW5kIHZzY2FsZSAtLT4KICA8IS0tIFNjYWxlZml0OiBTYW1lIGFzIENBTFMgc2NhbGVmaXQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZpZGVvZGF0YS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29udGVudHdpZHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlcHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRlbnRkZXB0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRvcCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJtaWRkbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYm90dG9tIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjYWxlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjYWxlZml0IiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9iamVjdGRhdGEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2aWRlb2RhdGEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZpZGVvZGF0YS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZpZGVvZGF0YS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1ZGlvZGF0YS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXVkaW9kYXRhIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXVkaW9kYXRhLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGF1ZGlvZGF0YS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdWRpb2RhdGEuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvYmplY3RkYXRhLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXVkaW9kYXRhLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhdWRpb2RhdGEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhdWRpb2RhdGEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbWFnZWRhdGEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImltYWdlZGF0YSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImltYWdlZGF0YS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbWFnZWRhdGEuZWxlbWVudCAtLT4KICA8IS0tIFdpZHRoOiBTYW1lIGFzIENBTFMgcmVwcm93aWQgKGRlc2lyZWQgd2lkdGgpIC0tPgogIDwhLS0gRGVwdGg6IFNhbWUgYXMgQ0FMUyByZXByb2RlcCAoZGVzaXJlZCBkZXB0aCkgLS0+CiAgPCEtLQogICAgQWxpZ246IFNhbWUgYXMgQ0FMUyBocGxhY2Ugd2l0aCAnbm9uZScgcmVtb3ZlZDsgI0lNUExJRUQgbWVhbnMKICAgIGFwcGxpY2F0aW9uLXNwZWNpZmljCiAgLS0+CiAgPCEtLSBTY2FsZTogQ29uZmxhdGlvbiBvZiBDQUxTIGhzY2FsZSBhbmQgdnNjYWxlIC0tPgogIDwhLS0gU2NhbGVmaXQ6IFNhbWUgYXMgQ0FMUyBzY2FsZWZpdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW1hZ2VkYXRhLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aWR0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250ZW50d2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVwdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29udGVudGRlcHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGVmdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaWdodCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZW50ZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1pZGRsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2NhbGUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2NhbGVmaXQiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib2JqZWN0ZGF0YS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImltYWdlZGF0YS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW1hZ2VkYXRhLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW1hZ2VkYXRhLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGV4dGRhdGEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRleHRkYXRhIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGV4dGRhdGEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGV4dGRhdGEuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGV4dGRhdGEuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVuY29kaW5nIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvYmplY3RkYXRhLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGV4dGRhdGEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRleHRkYXRhLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdGV4dGRhdGEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZWRpYW9iamVjdGNvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtZWRpYW9iamVjdGNvIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5mb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im9iamVjdGluZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImltYWdlb2JqZWN0Y28iLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbWFnZW9iamVjdGNvIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRvYmplY3QiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWVkaWFvYmplY3Rjby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtZWRpYW9iamVjdGNvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lZGlhb2JqZWN0Y28uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZWRpYW9iamVjdGNvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtZWRpYW9iamVjdGNvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWVkaWFvYmplY3Rjby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImltYWdlb2JqZWN0Y28ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImltYWdlb2JqZWN0Y28iIHN1YnN0aXR1dGlvbkdyb3VwPSJtZWRpYW9iamVjdC5taXgiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmVhc3BlYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW1hZ2VvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNhbGxvdXRsaXN0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImltYWdlb2JqZWN0Y28uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW1hZ2VvYmplY3Rjby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbWFnZW9iamVjdGNvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW1hZ2VvYmplY3Rjby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW1hZ2VvYmplY3Rjby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGltYWdlb2JqZWN0Y28ubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIG1lZGlhb2JqZWN0LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gRXF1YXRpb25zIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFRoaXMgUEUgcHJvdmlkZXMgYSBtZWNoYW5pc20gZm9yIHJlcGxhY2luZyBlcXVhdGlvbiBjb250ZW50LCAtLT4KICA8IS0tIHBlcmhhcHMgYWRkaW5nIGEgbmV3IG9yIGRpZmZlcmVudCBtb2RlbCAoZS5nLiwgTWF0aE1MKSAtLT4KICA8eHM6Z3JvdXAgbmFtZT0iZXF1YXRpb24uY29udGVudCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJhbHQiLz4KICAgICAgPHhzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJncmFwaGljIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVkaWFvYmplY3QiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImlubGluZWVxdWF0aW9uLmNvbnRlbnQiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYWx0Ii8+CiAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmNvbXBsZXhUeXBlPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcXVhdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXF1YXRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJmb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbGVxdWF0aW9uIi8+CiAgICAgICAgICA8eHM6Z3JvdXAgcmVmPSJlcXVhdGlvbi5jb250ZW50Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVxdWF0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGVxdWF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVxdWF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmbG9hdHN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVxdWF0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlcXVhdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVxdWF0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5mb3JtYWxlcXVhdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5mb3JtYWxlcXVhdGlvbiIgc3Vic3RpdHV0aW9uR3JvdXA9ImluZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJlcXVhdGlvbi5jb250ZW50Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZm9ybWFsZXF1YXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWxlcXVhdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmZvcm1hbGVxdWF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmbG9hdHN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmZvcm1hbGVxdWF0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGVxdWF0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWxlcXVhdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlubGluZWVxdWF0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmxpbmVlcXVhdGlvbiIgc3Vic3RpdHV0aW9uR3JvdXA9ImlubGluZW9iai5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNvbXBsZXhDb250ZW50PgogICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0iaW5saW5lZXF1YXRpb24uY29udGVudCI+CiAgICAgICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmxpbmVlcXVhdGlvbi5hdHRsaXN0Ii8+CiAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgIDwveHM6Y29tcGxleENvbnRlbnQ+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbmxpbmVlcXVhdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmxpbmVlcXVhdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlubGluZWVxdWF0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmxpbmVlcXVhdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGlubGluZWVxdWF0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWx0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhbHQiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWx0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFsdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhbHQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhbHQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFsdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFsdC5tb2R1bGUgLS0+CiAgPCEtLSBUYWJsZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gQ2hvb3NlIGEgdGFibGUgbW9kZWwuIENBTFMgb3IgT0FTSVMgWE1MIEV4Y2hhbmdlIC0tPgogIDwhLS0gRG8gd2UgYWxsb3cgdGhlIEhUTUwgdGFibGUgbW9kZWwgYXMgd2VsbD8gLS0+CiAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CiAgPCEtLQogICAgeGh0bWx0YmwubW9kIGRlZmluZXMgSFRNTCB0YWJsZXMgYW5kIHNldHMgcGFyYW1ldGVyCiAgICBlbnRpdGllcyBzbyB0aGF0LCB3aGVuIHRoZSBDQUxTIHRhYmxlIG1vZHVsZSBpcyByZWFkLAogICAgd2UgZW5kIHVwIGFsbG93aW5nIGFueSB0YWJsZSB0byBiZSBDQUxTIG9yIEhUTUwuCiAgICBpLmUuIFRoaXMgaW5jbHVkZSBtdXN0IGNvbWUgZmlyc3QhCiAgLS0+CiAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CiAgPCEtLSBlbmQgb2YgYWxsb3cuaHRtbC50YWJsZXMgLS0+CiAgPCEtLSBBZGQgbGFiZWwgYW5kIHJvbGUgYXR0cmlidXRlcyB0byB0YWJsZSBhbmQgaW5mb3JtYWx0YWJsZSAtLT4KICA8IS0tCiAgICBBZGQgY29tbW9uIGF0dHJpYnV0ZXMgdG8gVGFibGUsIFRHcm91cCwgVEJvZHksIFRIZWFkLCBURm9vdCwgUm93LAogICAgRW50cnlUYmwsIGFuZCBFbnRyeSAoYW5kIEluZm9ybWFsVGFibGUgZWxlbWVudCkuCiAgLS0+CiAgPCEtLSBDb250ZW50IG1vZGVsIGZvciBUYWJsZS4gLS0+CiAgPCEtLSBBbGxvdyBlaXRoZXIgb2JqZWN0cyBvciBpbmxpbmVzOyBiZXdhcmUgb2YgUkVzIGJldHdlZW4gZWxlbWVudHMuIC0tPgogIDwhLS0gUmVmZXJlbmNlIENBTFMgVGFibGUgTW9kZWwgLS0+CiAgPCEtLSBlbmQgb2YgdGFibGUubW9kdWxlIC0tPgogIDwhLS0KICAgIE5vdGUgdGhhdCBJbmZvcm1hbFRhYmxlIGlzIGRlcGVuZGVudCBvbiBzb21lIG9mIHRoZSBlbnRpdHkKICAgIGRlY2xhcmF0aW9ucyB0aGF0IGN1c3RvbWl6ZSBUYWJsZS4KICAtLT4KICA8IS0tIHRoZSBmb2xsb3dpbmcgZW50aXR5IG1heSBoYXZlIGJlZW4gZGVjbGFyZWQgYnkgdGhlIFhIVE1MIHRhYmxlIG1vZHVsZSAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmZvcm1hbHRhYmxlIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5mb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImluZm9ybWFsLnRibC50YWJsZS5tZGwiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5mb3JtYWx0YWJsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbHRhYmxlLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgRnJhbWUsIENvbHNlcCwgYW5kIFJvd3NlcCBtdXN0IGJlIHJlcGVhdGVkIGJlY2F1c2UKICAgIHRoZXkgYXJlIG5vdCBpbiBlbnRpdGllcyBpbiB0aGUgdGFibGUgbW9kdWxlLgogIC0tPgogIDwhLS0KICAgIGluY2x1ZGVzIFRhYlN0eWxlLCBUb0NlbnRyeSwgU2hvcnRFbnRyeSwKICAgIE9yaWVudCwgUGdXaWRlCiAgLS0+CiAgPCEtLSBpbmNsdWRlcyBMYWJlbCAtLT4KICA8IS0tIGluY2x1ZGVzIGNvbW1vbiBhdHRyaWJ1dGVzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmZvcm1hbHRhYmxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmcmFtZSIgdHlwZT0idGJsLmZyYW1lLmF0dHZhbCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzZXAiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3dzZXAiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLnRhYmxlLmF0dHJpYnMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRibC50YWJsZS5hdHQiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGluZm9ybWFsdGFibGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbHRhYmxlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2FwdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2FwdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0ZXh0b2JqZWN0Lm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjYXB0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNhcHRpb24uZWxlbWVudCAtLT4KICA8IS0tIGF0dHJzIGNvbWVzIGZyb20gSFRNTCB0YWJsZXMgLi4uIC0tPgogIDwhLS0gY29tbW9uLmF0dHJpYiwgYnV0IHdpdGhvdXQgSUQgYmVjYXVzZSBJRCBpcyBpbiBhdHRycyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2FwdGlvbi5hdHRsaXN0LmNvbnRlbnQiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFuZy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlbWFwLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ieHJlZmxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2aXNpb25mbGFnLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZWZmZWN0aXZpdHkuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJkaXIuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4bWwtYmFzZS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNhcHRpb24ucm9sZS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF0dHJzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsZWZ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJpZ2h0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2FwdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNhcHRpb24uYXR0bGlzdC5jb250ZW50Ii8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjYXB0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2FwdGlvbi5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gU3lub3BzZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFN5bm9wc2lzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN5bm9wc2lzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzeW5vcHNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9InN5bm9wLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb3JlZiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGV4dG9iamVjdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZWFubm90YXRpb24iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN5bm9wc2lzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN5bm9wc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lc3BlY2lmaWMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzeW5vcHNpcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3lub3BzaXMuYXR0bGlzdCAtLT4KICA8IS0tIExpbmVBbm5vdGF0aW9uIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIGVuZCBvZiBzeW5vcHNpcy5tb2R1bGUgLS0+CiAgPCEtLSBDbWRTeW5vcHNpcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjbWRzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY21kc3lub3BzaXMiIHN1YnN0aXR1dGlvbkdyb3VwPSJzeW5vcC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iY29tbWFuZCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmciLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JvdXAiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2JyIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzeW5vcGZyYWdtZW50Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNtZHN5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNtZHN5bm9wc2lzLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU2VwY2hhcjogQ2hhcmFjdGVyIHRoYXQgc2hvdWxkIHNlcGFyYXRlIGNvbW1hbmQgYW5kIGFsbAogICAgdG9wLWxldmVsIGFyZ3VtZW50czsgYWx0ZXJuYXRlIHZhbHVlIG1pZ2h0IGJlIGUuZy4sICZEZWx0YTsKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY21kc3lub3BzaXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VwY2hhciIgZGVmYXVsdD0iICIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbWRsZW5ndGgiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNtZHN5bm9wc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjbWRzeW5vcHNpcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNtZHN5bm9wc2lzLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJnLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcmciPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFyZyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JvdXAiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im9wdGlvbiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3BmcmFnbWVudHJlZiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVwbGFjZWFibGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNiciIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJnLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFyZy5lbGVtZW50IC0tPgogIDwhLS0KICAgIENob2ljZTogV2hldGhlciBBcmcgbXVzdCBiZSBzdXBwbGllZDogT3B0IChvcHRpb25hbCB0bwogICAgc3VwcGx5LCBlLmcuIFthcmddOyB0aGUgZGVmYXVsdCksIFJlcSAocmVxdWlyZWQgdG8gc3VwcGx5LAogICAgZS5nLiB7YXJnfSksIG9yIFBsYWluIChyZXF1aXJlZCB0byBzdXBwbHksIGUuZy4gYXJnKQogIC0tPgogIDwhLS0KICAgIFJlcDogd2hldGhlciBBcmcgaXMgcmVwZWF0YWJsZTogTm9yZXBlYXQgKGUuZy4gYXJnIHdpdGhvdXQKICAgIGVsbGlwc2lzOyB0aGUgZGVmYXVsdCksIG9yIFJlcGVhdCAoZS5nLiBhcmcuLi4pCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFyZy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hvaWNlIiBkZWZhdWx0PSJvcHQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVxIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBsYWluIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlcCIgZGVmYXVsdD0ibm9yZXBlYXQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JlcGVhdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXBlYXQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXJnLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXJnLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3JvdXAucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdyb3VwIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmciLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdyb3VwIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvcHRpb24iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wZnJhZ21lbnRyZWYiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlcGxhY2VhYmxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzYnIiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdyb3VwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdyb3VwLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgQ2hvaWNlOiBXaGV0aGVyIEdyb3VwIG11c3QgYmUgc3VwcGxpZWQ6IE9wdCAob3B0aW9uYWwgdG8KICAgIHN1cHBseSwgZS5nLiAgW2cxfGcyfGczXTsgdGhlIGRlZmF1bHQpLCBSZXEgKHJlcXVpcmVkIHRvCiAgICBzdXBwbHksIGUuZy4gIHtnMXxnMnxnM30pLCBQbGFpbiAocmVxdWlyZWQgdG8gc3VwcGx5LAogICAgZS5nLiAgZzF8ZzJ8ZzMpLCBPcHRNdWx0IChjYW4gc3VwcGx5IHplcm8gb3IgbW9yZSwgZS5nLgogICAgW1tnMXxnMnxnM11dKSwgb3IgUmVxTXVsdCAobXVzdCBzdXBwbHkgb25lIG9yIG1vcmUsIGUuZy4KICAgIHt7ZzF8ZzJ8ZzN9fSkKICAtLT4KICA8IS0tCiAgICBSZXA6IHdoZXRoZXIgR3JvdXAgaXMgcmVwZWF0YWJsZTogTm9yZXBlYXQgKGUuZy4gZ3JvdXAKICAgIHdpdGhvdXQgZWxsaXBzaXM7IHRoZSBkZWZhdWx0KSwgb3IgUmVwZWF0IChlLmcuIGdyb3VwLi4uKQogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJncm91cC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hvaWNlIiBkZWZhdWx0PSJvcHQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVxIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBsYWluIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlcCIgZGVmYXVsdD0ibm9yZXBlYXQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JlcGVhdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXBlYXQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdyb3VwLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBncm91cC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdyb3VwLm1vZHVsZSAtLT4KICA8IS0tIFN5bm9wc2lzIGJyZWFrIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzYnIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNiciI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNici5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzYnIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2JyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2JyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzYnIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzYnIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzeW5vcGZyYWdtZW50cmVmLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzeW5vcGZyYWdtZW50cmVmIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5bm9wZnJhZ21lbnRyZWYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3lub3BmcmFnbWVudHJlZi5lbGVtZW50IC0tPgogIDwhLS0KICAgIHRvIFN5bm9wRnJhZ21lbnQgb2YgY29tcGxleCBzeW5vcHNpcwogICAgbWF0ZXJpYWwgZm9yIHNlcGFyYXRlIHJlZmVyZW5jaW5nCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN5bm9wZnJhZ21lbnRyZWYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kcmVxLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3lub3BmcmFnbWVudHJlZi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3lub3BmcmFnbWVudHJlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN5bm9wZnJhZ21lbnRyZWYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzeW5vcGZyYWdtZW50LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzeW5vcGZyYWdtZW50Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmciLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdyb3VwIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzeW5vcGZyYWdtZW50LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN5bm9wZnJhZ21lbnQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3lub3BmcmFnbWVudC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlkcmVxLmNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5bm9wZnJhZ21lbnQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN5bm9wZnJhZ21lbnQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzeW5vcGZyYWdtZW50Lm1vZHVsZSAtLT4KICA8IS0tIENvbW1hbmQgKGRlZmluZWQgaW4gdGhlIElubGluZXMgc2VjdGlvbiwgYmVsb3cpIC0tPgogIDwhLS0gT3B0aW9uIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIFJlcGxhY2VhYmxlIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIGVuZCBvZiBjbWRzeW5vcHNpcy5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIEZ1bmNTeW5vcHNpcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZnVuY3N5bm9wc2lzIiBzdWJzdGl0dXRpb25Hcm91cD0ic3lub3AuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImZ1bmNzeW5vcHNpc2luZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImZ1bmNwcm90b3R5cGUiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmNzeW5vcHNpcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmdW5jc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY3N5bm9wc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jc3lub3BzaXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZ1bmNzeW5vcHNpcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZ1bmNzeW5vcHNpcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNzeW5vcHNpc2luZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZ1bmNzeW5vcHNpc2luZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZXh0b2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lYW5ub3RhdGlvbiIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZnVuY3N5bm9wc2lzaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmdW5jc3lub3BzaXNpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNzeW5vcHNpc2luZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lc3BlY2lmaWMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jc3lub3BzaXNpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmdW5jc3lub3BzaXNpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZnVuY3N5bm9wc2lzaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNwcm90b3R5cGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZ1bmNwcm90b3R5cGUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZnVuY2RlZiIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InZvaWQiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idmFyYXJncyIvPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhbWRlZiIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idmFyYXJncyIvPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1vZGlmaWVyIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmNwcm90b3R5cGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZnVuY3Byb3RvdHlwZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmdW5jcHJvdG90eXBlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZnVuY3Byb3RvdHlwZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZnVuY3Byb3RvdHlwZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZ1bmNwcm90b3R5cGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmdW5jZGVmLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmdW5jZGVmIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0eXBlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXBsYWNlYWJsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZnVuY3Rpb24iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmNkZWYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZnVuY2RlZi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmdW5jZGVmLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZnVuY2RlZi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZnVuY2RlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZ1bmNkZWYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2b2lkLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2b2lkIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idm9pZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB2b2lkLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZvaWQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2b2lkLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB2b2lkLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygdm9pZC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZhcmFyZ3Mucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InZhcmFyZ3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2YXJhcmdzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZhcmFyZ3MuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmFyYXJncy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZhcmFyZ3Mucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZhcmFyZ3MuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB2YXJhcmdzLm1vZHVsZSAtLT4KICA8IS0tCiAgICBQcm9jZXNzaW5nIGFzc3VtZXMgdGhhdCBvbmx5IG9uZSBQYXJhbWV0ZXIgd2lsbCBhcHBlYXIgaW4gYQogICAgUGFyYW1EZWYsIGFuZCB0aGF0IEZ1bmNQYXJhbXMgd2lsbCBiZSB1c2VkIGF0IG1vc3Qgb25jZSwgZm9yCiAgICBwcm92aWRpbmcgaW5mb3JtYXRpb24gb24gdGhlICJpbm5lciBwYXJhbWV0ZXJzIiBmb3IgcGFyYW1ldGVycyB0aGF0CiAgICBhcmUgcG9pbnRlcnMgdG8gZnVuY3Rpb25zLgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYXJhbWRlZi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGFyYW1kZWYiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImluaXRpYWxpemVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0eXBlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXBsYWNlYWJsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYW1ldGVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmdW5jcGFyYW1zIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJhbWRlZi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwYXJhbWRlZi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYXJhbWRlZi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hvaWNlIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3B0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlcSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFyYW1kZWYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBhcmFtZGVmLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcGFyYW1kZWYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmdW5jcGFyYW1zLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmdW5jcGFyYW1zIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZnVuY3BhcmFtcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmdW5jcGFyYW1zLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNwYXJhbXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jcGFyYW1zLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmdW5jcGFyYW1zLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZnVuY3BhcmFtcy5tb2R1bGUgLS0+CiAgPCEtLSBMaW5lQW5ub3RhdGlvbiAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSBSZXBsYWNlYWJsZSAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSBGdW5jdGlvbiAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSBQYXJhbWV0ZXIgKGRlZmluZWQgaW4gdGhlIElubGluZXMgc2VjdGlvbiwgYmVsb3cpIC0tPgogIDwhLS0gZW5kIG9mIGZ1bmNzeW5vcHNpcy5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIENsYXNzU3lub3BzaXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjbGFzc3N5bm9wc2lzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjbGFzc3N5bm9wc2lzIiBzdWJzdGl0dXRpb25Hcm91cD0ic3lub3AuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im9vY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ib29pbnRlcmZhY2UiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ib29leGNlcHRpb24iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbGFzc3N5bm9wc2lzaW5mbyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmaWVsZHN5bm9wc2lzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1ldGhvZC5zeW5vcC5jbGFzcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjbGFzc3N5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNsYXNzc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2xhc3NzeW5vcHNpcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFuZ3VhZ2UiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIGRlZmF1bHQ9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2xhc3MiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaW50ZXJmYWNlIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjbGFzc3N5bm9wc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjbGFzc3N5bm9wc2lzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2xhc3NzeW5vcHNpcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNsYXNzc3lub3BzaXNpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjbGFzc3N5bm9wc2lzaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVhbm5vdGF0aW9uIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjbGFzc3N5bm9wc2lzaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjbGFzc3N5bm9wc2lzaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjbGFzc3N5bm9wc2lzaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmVzcGVjaWZpYy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNsYXNzc3lub3BzaXNpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjbGFzc3N5bm9wc2lzaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNsYXNzc3lub3BzaXNpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib29jbGFzcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib29jbGFzcyIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtb2RpZmllciIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYWNrYWdlIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbGFzc25hbWUiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib29jbGFzcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvb2NsYXNzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9vY2xhc3MuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvb2NsYXNzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvb2NsYXNzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb29jbGFzcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9vaW50ZXJmYWNlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvb2ludGVyZmFjZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtb2RpZmllciIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYWNrYWdlIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbnRlcmZhY2VuYW1lIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9vaW50ZXJmYWNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG9vaW50ZXJmYWNlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9vaW50ZXJmYWNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib29pbnRlcmZhY2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG9vaW50ZXJmYWNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb29pbnRlcmZhY2UubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvb2V4Y2VwdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib29leGNlcHRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibW9kaWZpZXIiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icGFja2FnZSIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZXhjZXB0aW9ubmFtZSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvb2V4Y2VwdGlvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvb2V4Y2VwdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvb2V4Y2VwdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9vZXhjZXB0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvb2V4Y2VwdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG9vZXhjZXB0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibW9kaWZpZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1vZGlmaWVyIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb2RpZmllci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtb2RpZmllci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtb2RpZmllci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vZGlmaWVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtb2RpZmllci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1vZGlmaWVyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW50ZXJmYWNlbmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW50ZXJmYWNlbmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImludGVyZmFjZW5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW50ZXJmYWNlbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbnRlcmZhY2VuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW50ZXJmYWNlbmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW50ZXJmYWNlbmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGludGVyZmFjZW5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJleGNlcHRpb25uYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJleGNlcHRpb25uYW1lIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJleGNlcHRpb25uYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGV4Y2VwdGlvbm5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXhjZXB0aW9ubmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImV4Y2VwdGlvbm5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGV4Y2VwdGlvbm5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBleGNlcHRpb25uYW1lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmllbGRzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZmllbGRzeW5vcHNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9InN5bm9wLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibW9kaWZpZXIiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idHlwZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idmFybmFtZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJpbml0aWFsaXplciIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaWVsZHN5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZpZWxkc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmllbGRzeW5vcHNpcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFuZ3VhZ2UiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZpZWxkc3lub3BzaXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZpZWxkc3lub3BzaXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmaWVsZHN5bm9wc2lzLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5pdGlhbGl6ZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImluaXRpYWxpemVyIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbml0aWFsaXplci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbml0aWFsaXplci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbml0aWFsaXplci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluaXRpYWxpemVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbml0aWFsaXplci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluaXRpYWxpemVyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29uc3RydWN0b3JzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29uc3RydWN0b3JzeW5vcHNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9Im1ldGhvZC5zeW5vcC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1vZGlmaWVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im1ldGhvZG5hbWUiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWV0aG9kcGFyYW0iLz4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ2b2lkIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJleGNlcHRpb25uYW1lIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnN0cnVjdG9yc3lub3BzaXMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29uc3RydWN0b3JzeW5vcHNpcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25zdHJ1Y3RvcnN5bm9wc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYW5ndWFnZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uc3RydWN0b3JzeW5vcHNpcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29uc3RydWN0b3JzeW5vcHNpcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbnN0cnVjdG9yc3lub3BzaXMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJkZXN0cnVjdG9yc3lub3BzaXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImRlc3RydWN0b3JzeW5vcHNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9Im1ldGhvZC5zeW5vcC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1vZGlmaWVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im1ldGhvZG5hbWUiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWV0aG9kcGFyYW0iLz4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ2b2lkIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJleGNlcHRpb25uYW1lIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRlc3RydWN0b3JzeW5vcHNpcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBkZXN0cnVjdG9yc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGVzdHJ1Y3RvcnN5bm9wc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYW5ndWFnZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZGVzdHJ1Y3RvcnN5bm9wc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBkZXN0cnVjdG9yc3lub3BzaXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBkZXN0cnVjdG9yc3lub3BzaXMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZXRob2RzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWV0aG9kc3lub3BzaXMiIHN1YnN0aXR1dGlvbkdyb3VwPSJtZXRob2Quc3lub3AuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idHlwZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ2b2lkIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtZXRob2RuYW1lIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1ldGhvZHBhcmFtIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idm9pZCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZXhjZXB0aW9ubmFtZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibW9kaWZpZXIiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWV0aG9kc3lub3BzaXMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWV0aG9kc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWV0aG9kc3lub3BzaXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxhbmd1YWdlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZXRob2RzeW5vcHNpcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWV0aG9kc3lub3BzaXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtZXRob2RzeW5vcHNpcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1ldGhvZG5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1ldGhvZG5hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1ldGhvZG5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWV0aG9kbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZXRob2RuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWV0aG9kbmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWV0aG9kbmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1ldGhvZG5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZXRob2RwYXJhbS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWV0aG9kcGFyYW0iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0eXBlIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhbWV0ZXIiLz4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImluaXRpYWxpemVyIi8+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmdW5jcGFyYW1zIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZXRob2RwYXJhbS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtZXRob2RwYXJhbS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZXRob2RwYXJhbS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hvaWNlIiBkZWZhdWx0PSJyZXEiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVxIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBsYWluIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlcCIgZGVmYXVsdD0ibm9yZXBlYXQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JlcGVhdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXBlYXQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1ldGhvZHBhcmFtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtZXRob2RwYXJhbS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1ldGhvZHBhcmFtLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBjbGFzc3N5bm9wc2lzLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIERvY3VtZW50IGluZm9ybWF0aW9uIGVudGl0aWVzIGFuZCBlbGVtZW50cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLQogICAgVGhlIGRvY3VtZW50IGluZm9ybWF0aW9uIGVsZW1lbnRzIGluY2x1ZGUgc29tZSBlbGVtZW50cyB0aGF0IGFyZQogICAgY3VycmVudGx5IHVzZWQgb25seSBpbiB0aGUgZG9jdW1lbnQgaGllcmFyY2h5IG1vZHVsZS4gVGhleSBhcmUKICAgIGRlZmluZWQgaGVyZSBzbyB0aGF0IHRoZXkgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHVzZSBpbiBjdXN0b21pemVkCiAgICBkb2N1bWVudCBoaWVyYXJjaGllcy4KICAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBBY2tubyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhY2tuby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYWNrbm8iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhY2tuby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhY2tuby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhY2tuby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFja25vLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhY2tuby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFja25vLm1vZHVsZSAtLT4KICA8IS0tIEFkZHJlc3MgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFkZHJlc3Mucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFkZHJlc3MiIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icGVyc29ubmFtZSIvPgogICAgICAgIDx4czpncm91cCByZWY9InBlcnNvbi5pZGVudC5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN0cmVldCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icG9iIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwb3N0Y29kZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY2l0eSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3RhdGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvdW50cnkiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBob25lIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmYXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtYWlsIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvdGhlcmFkZHIiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFkZHJlc3MuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWRkcmVzcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhZGRyZXNzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZXNwZWNpZmljLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRkcmVzcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWRkcmVzcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFkZHJlc3MubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdHJlZXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN0cmVldCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0cmVldC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdHJlZXQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RyZWV0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RyZWV0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdHJlZXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzdHJlZXQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwb2Iucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBvYiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBvYi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwb2IuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icG9iLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icG9iLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwb2IuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwb2IubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwb3N0Y29kZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icG9zdGNvZGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwb3N0Y29kZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwb3N0Y29kZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwb3N0Y29kZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBvc3Rjb2RlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwb3N0Y29kZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBvc3Rjb2RlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2l0eS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2l0eSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNpdHkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY2l0eS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXR5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0eS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY2l0eS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNpdHkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdGF0ZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3RhdGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0ZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdGF0ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdGF0ZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXRlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdGF0ZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN0YXRlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY291bnRyeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY291bnRyeSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvdW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY291bnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3VudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY291bnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY291bnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvdW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwaG9uZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGhvbmUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwaG9uZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwaG9uZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwaG9uZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBob25lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwaG9uZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBob25lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmF4LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmYXgiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmYXguYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZmF4LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZheC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZheC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZmF4LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZmF4Lm1vZHVsZSAtLT4KICA8IS0tIEVtYWlsIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3RoZXJhZGRyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvdGhlcmFkZHIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvdGhlcmFkZHIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb3RoZXJhZGRyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im90aGVyYWRkci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im90aGVyYWRkci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb3RoZXJhZGRyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb3RoZXJhZGRyLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBhZGRyZXNzLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gQWZmaWxpYXRpb24gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWZmaWxpYXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFmZmlsaWF0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzaG9ydGFmZmlsIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJqb2J0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJvcmduYW1lIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJvcmdkaXYiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFkZHJlc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWZmaWxpYXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWZmaWxpYXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWZmaWxpYXRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhZmZpbGlhdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWZmaWxpYXRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhZmZpbGlhdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNob3J0YWZmaWwucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNob3J0YWZmaWwiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaG9ydGFmZmlsLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNob3J0YWZmaWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2hvcnRhZmZpbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNob3J0YWZmaWwucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNob3J0YWZmaWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzaG9ydGFmZmlsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iam9idGl0bGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImpvYnRpdGxlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iam9idGl0bGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygam9idGl0bGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iam9idGl0bGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJqb2J0aXRsZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygam9idGl0bGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBqb2J0aXRsZS5tb2R1bGUgLS0+CiAgPCEtLSBPcmdOYW1lIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcmdkaXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im9yZ2RpdiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9yZ2Rpdi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvcmdkaXYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3JnZGl2LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3JnZGl2LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvcmdkaXYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvcmdkaXYubW9kdWxlIC0tPgogIDwhLS0gQWRkcmVzcyAoZGVmaW5lZCBlbHNld2hlcmUgaW4gdGhpcyBzZWN0aW9uKSAtLT4KICA8IS0tIGVuZCBvZiBhZmZpbGlhdGlvbi5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIEFydFBhZ2VOdW1zIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFydHBhZ2VudW1zLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcnRwYWdlbnVtcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFydHBhZ2VudW1zLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFydHBhZ2VudW1zLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFydHBhZ2VudW1zLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJ0cGFnZW51bXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFydHBhZ2VudW1zLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXJ0cGFnZW51bXMubW9kdWxlIC0tPgogIDwhLS0gUGVyc29uTmFtZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGVyc29ubmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGVyc29ubmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJob25vcmlmaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImZpcnN0bmFtZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3VybmFtZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZWFnZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ib3RoZXJuYW1lIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwZXJzb25uYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBlcnNvbm5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGVyc29ubmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBlcnNvbm5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBlcnNvbm5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwZXJzb25uYW1lLm1vZHVsZSAtLT4KICA8IS0tIEF1dGhvciAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1dGhvci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXV0aG9yIiBzdWJzdGl0dXRpb25Hcm91cD0iZG9jaW5mby5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBlcnNvbm5hbWUiLz4KICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwZXJzb24uaWRlbnQubWl4Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icGVyc29uYmx1cmIiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZW1haWwiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYWRkcmVzcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdXRob3IuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXV0aG9yLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1dGhvci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1dGhvci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXV0aG9yLmF0dGxpc3QgLS0+CiAgPCEtLSAoc2VlICJQZXJzb25hbCBpZGVudGl0eSBlbGVtZW50cyIgZm9yICVwZXJzb24uaWRlbnQubWl4OykgLS0+CiAgPCEtLSBlbmQgb2YgYXV0aG9yLm1vZHVsZSAtLT4KICA8IS0tIEF1dGhvckdyb3VwIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1dGhvcmdyb3VwLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhdXRob3Jncm91cCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYXV0aG9yIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlZGl0b3IiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbGxhYiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29ycGF1dGhvciIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29ycGNyZWRpdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ib3RoZXJjcmVkaXQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1dGhvcmdyb3VwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGF1dGhvcmdyb3VwLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1dGhvcmdyb3VwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXV0aG9yZ3JvdXAucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGF1dGhvcmdyb3VwLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXV0aG9yZ3JvdXAubW9kdWxlIC0tPgogIDwhLS0gQXV0aG9yIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDwhLS0gRWRpdG9yIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2xsYWIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbGxhYiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbGxhYm5hbWUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFmZmlsaWF0aW9uIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbGxhYi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb2xsYWIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29sbGFiLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29sbGFiLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb2xsYWIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb2xsYWIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2xsYWJuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb2xsYWJuYW1lIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29sbGFibmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb2xsYWJuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbGxhYm5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb2xsYWJuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb2xsYWJuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29sbGFibmFtZS5tb2R1bGUgLS0+CiAgPCEtLSBBZmZpbGlhdGlvbiAoZGVmaW5lZCBlbHNld2hlcmUgaW4gdGhpcyBzZWN0aW9uKSAtLT4KICA8IS0tIGVuZCBvZiBjb2xsYWIuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBDb3JwQXV0aG9yIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDwhLS0gT3RoZXJDcmVkaXQgKGRlZmluZWQgZWxzZXdoZXJlIGluIHRoaXMgc2VjdGlvbikgLS0+CiAgPCEtLSBlbmQgb2YgYXV0aG9yZ3JvdXAuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBBdXRob3JJbml0aWFscyAuLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdXRob3Jpbml0aWFscy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXV0aG9yaW5pdGlhbHMiIHN1YnN0aXR1dGlvbkdyb3VwPSJkb2NpbmZvLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdXRob3Jpbml0aWFscy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhdXRob3Jpbml0aWFscy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdXRob3Jpbml0aWFscy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1dGhvcmluaXRpYWxzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhdXRob3Jpbml0aWFscy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGF1dGhvcmluaXRpYWxzLm1vZHVsZSAtLT4KICA8IS0tIENvbmZHcm91cCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbmZncm91cC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29uZmdyb3VwIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbmZkYXRlcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29uZnRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb25mbnVtIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZGRyZXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb25mc3BvbnNvciIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZmdyb3VwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbmZncm91cC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mZ3JvdXAuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25mZ3JvdXAucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbmZncm91cC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbmZncm91cC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbmZkYXRlcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29uZmRhdGVzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZmRhdGVzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbmZkYXRlcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mZGF0ZXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25mZGF0ZXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbmZkYXRlcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbmZkYXRlcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbmZ0aXRsZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29uZnRpdGxlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZnRpdGxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbmZ0aXRsZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mdGl0bGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25mdGl0bGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbmZ0aXRsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbmZ0aXRsZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbmZudW0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbmZudW0iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25mbnVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbmZudW0uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29uZm51bS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbmZudW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbmZudW0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb25mbnVtLm1vZHVsZSAtLT4KICA8IS0tIEFkZHJlc3MgKGRlZmluZWQgZWxzZXdoZXJlIGluIHRoaXMgc2VjdGlvbikgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbmZzcG9uc29yLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb25mc3BvbnNvciI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbmZzcG9uc29yLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbmZzcG9uc29yLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbmZzcG9uc29yLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZnNwb25zb3Iucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbmZzcG9uc29yLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29uZnNwb25zb3IubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIGNvbmZncm91cC5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIENvbnRyYWN0TnVtIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnRyYWN0bnVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb250cmFjdG51bSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnRyYWN0bnVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbnRyYWN0bnVtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnRyYWN0bnVtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29udHJhY3RudW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbnRyYWN0bnVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29udHJhY3RudW0ubW9kdWxlIC0tPgogIDwhLS0gQ29udHJhY3RTcG9uc29yIC4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29udHJhY3RzcG9uc29yLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb250cmFjdHNwb25zb3IiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb250cmFjdHNwb25zb3IuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29udHJhY3RzcG9uc29yLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnRyYWN0c3BvbnNvci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnRyYWN0c3BvbnNvci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29udHJhY3RzcG9uc29yLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29udHJhY3RzcG9uc29yLm1vZHVsZSAtLT4KICA8IS0tIENvcHlyaWdodCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvcHlyaWdodC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29weXJpZ2h0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InllYXIiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImhvbGRlciIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3B5cmlnaHQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29weXJpZ2h0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvcHlyaWdodC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvcHlyaWdodC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29weXJpZ2h0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29weXJpZ2h0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ieWVhci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ieWVhciI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InllYXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgeWVhci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ5ZWFyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ieWVhci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgeWVhci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHllYXIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJob2xkZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImhvbGRlciI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImhvbGRlci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBob2xkZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaG9sZGVyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaG9sZGVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBob2xkZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBob2xkZXIubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIGNvcHlyaWdodC5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIENvcnBBdXRob3IgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvcnBhdXRob3Iucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvcnBhdXRob3IiIHN1YnN0aXR1dGlvbkdyb3VwPSJkb2NpbmZvLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3JwYXV0aG9yLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvcnBhdXRob3IuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29ycGF1dGhvci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvcnBhdXRob3Iucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvcnBhdXRob3IuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb3JwYXV0aG9yLm1vZHVsZSAtLT4KICA8IS0tIENvcnBDcmVkaXQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29ycGNyZWRpdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29ycGNyZWRpdCIgc3Vic3RpdHV0aW9uR3JvdXA9ImRvY2luZm8uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvcnBjcmVkaXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29ycGNyZWRpdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3JwY3JlZGl0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImdyYXBoaWNkZXNpZ25lciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcm9kdWN0aW9uZWRpdG9yIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvcHllZGl0b3IiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idGVjaG5pY2FsZWRpdG9yIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRyYW5zbGF0b3IiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvcnBjcmVkaXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvcnBjcmVkaXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb3JwY3JlZGl0Lm1vZHVsZSAtLT4KICA8IS0tIENvcnBOYW1lIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29ycG5hbWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3JwbmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb3JwbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3JwbmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvcnBuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29ycG5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvcnBuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29ycG5hbWUubW9kdWxlIC0tPgogIDwhLS0gRGF0ZSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGF0ZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZGF0ZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRhdGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZGF0ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJkYXRlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZGF0ZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZGF0ZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGRhdGUubW9kdWxlIC0tPgogIDwhLS0gRWRpdGlvbiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZWRpdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZWRpdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVkaXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZWRpdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlZGl0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZWRpdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZWRpdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVkaXRpb24ubW9kdWxlIC0tPgogIDwhLS0gRWRpdG9yIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZWRpdG9yLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJlZGl0b3IiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icGVyc29ubmFtZSIvPgogICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBlcnNvbi5pZGVudC5taXgiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwZXJzb25ibHVyYiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlbWFpbCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZGRyZXNzIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVkaXRvci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlZGl0b3IuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZWRpdG9yLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZWRpdG9yLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlZGl0b3IuYXR0bGlzdCAtLT4KICA8IS0tIChzZWUgIlBlcnNvbmFsIGlkZW50aXR5IGVsZW1lbnRzIiBmb3IgJXBlcnNvbi5pZGVudC5taXg7KSAtLT4KICA8IS0tIGVuZCBvZiBlZGl0b3IubW9kdWxlIC0tPgogIDwhLS0gSVNCTiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaXNibi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaXNibiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlzYm4uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaXNibi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpc2JuLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaXNibi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaXNibi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGlzYm4ubW9kdWxlIC0tPgogIDwhLS0gSVNTTiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaXNzbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaXNzbiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imlzc24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaXNzbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpc3NuLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaXNzbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaXNzbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGlzc24ubW9kdWxlIC0tPgogIDwhLS0gQmlibGlvSWQgLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpby5jbGFzcy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InVyaSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkb2kiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXNibiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpc3NuIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpYnJhcnlvZmNvbmdyZXNzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InB1Ym51bWJlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcmNsYXNzIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvaWQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb2lkIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvaWQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmlibGlvaWQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvaWQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW8uY2xhc3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9pZC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmlibGlvaWQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9pZC5tb2R1bGUgLS0+CiAgPCEtLSBDaXRlQmlibGlvSWQgLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNpdGViaWJsaW9pZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2l0ZWJpYmxpb2lkIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0ZWJpYmxpb2lkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNpdGViaWJsaW9pZC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXRlYmlibGlvaWQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW8uY2xhc3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaXRlYmlibGlvaWQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNpdGViaWJsaW9pZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNpdGViaWJsaW9pZC5tb2R1bGUgLS0+CiAgPCEtLSBCaWJsaW9Tb3VyY2UgLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb3NvdXJjZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvc291cmNlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvc291cmNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb3NvdXJjZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9zb3VyY2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW8uY2xhc3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9zb3VyY2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb3NvdXJjZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb3NvdXJjZS5tb2R1bGUgLS0+CiAgPCEtLSBCaWJsaW9SZWxhdGlvbiAuLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvcmVsYXRpb24udHlwZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXN2ZXJzaW9ub2YiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaGFzdmVyc2lvbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpc3JlcGxhY2VkYnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVwbGFjZXMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXNyZXF1aXJlZGJ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlcXVpcmVzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImlzcGFydG9mIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imhhc3BhcnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXNyZWZlcmVuY2VkYnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVmZXJlbmNlcyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpc2Zvcm1hdG9mIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imhhc2Zvcm1hdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlcnR5cGUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3RoZXJ0eXBlIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvcmVsYXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb3JlbGF0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvcmVsYXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmlibGlvcmVsYXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvcmVsYXRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW8uY2xhc3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9yZWxhdGlvbi50eXBlLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvcmVsYXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb3JlbGF0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYmlibGlvcmVsYXRpb24ubW9kdWxlIC0tPgogIDwhLS0gQmlibGlvQ292ZXJhZ2UgLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2NvdmVyYWdlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9jb3ZlcmFnZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2NvdmVyYWdlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb2NvdmVyYWdlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2NvdmVyYWdlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGF0aWFsIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZGNtaXBvaW50Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImlzbzMxNjYiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZGNtaWJveCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0Z24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXJzcGF0aWFsIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVyc3BhdGlhbCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZW1wb3JhbCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRjbWlwZXJpb2QiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idzNjLWR0ZiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlcnRlbXBvcmFsIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVydGVtcG9yYWwiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2NvdmVyYWdlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9jb3ZlcmFnZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb2NvdmVyYWdlLm1vZHVsZSAtLT4KICA8IS0tIEludlBhcnROdW1iZXIgLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImludnBhcnRudW1iZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImludnBhcnRudW1iZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbnZwYXJ0bnVtYmVyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGludnBhcnRudW1iZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW52cGFydG51bWJlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImludnBhcnRudW1iZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGludnBhcnRudW1iZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbnZwYXJ0bnVtYmVyLm1vZHVsZSAtLT4KICA8IS0tIElzc3VlTnVtIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imlzc3VlbnVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpc3N1ZW51bSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imlzc3VlbnVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGlzc3VlbnVtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imlzc3VlbnVtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaXNzdWVudW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGlzc3VlbnVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaXNzdWVudW0ubW9kdWxlIC0tPgogIDwhLS0gTGVnYWxOb3RpY2UgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGVnYWxub3RpY2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImxlZ2Fsbm90aWNlIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibGVnYWxub3RpY2UubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxlZ2Fsbm90aWNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxlZ2Fsbm90aWNlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxlZ2Fsbm90aWNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGVnYWxub3RpY2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxlZ2Fsbm90aWNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGVnYWxub3RpY2UubW9kdWxlIC0tPgogIDwhLS0gTW9kZVNwZWMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibW9kZXNwZWMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1vZGVzcGVjIiBzdWJzdGl0dXRpb25Hcm91cD0iZG9jaW5mby5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9kZXNwZWMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbW9kZXNwZWMuZWxlbWVudCAtLT4KICA8IS0tCiAgICBBcHBsaWNhdGlvbjogVHlwZSBvZiBhY3Rpb24gcmVxdWlyZWQgZm9yIGNvbXBsZXRpb24KICAgIG9mIHRoZSBsaW5rcyB0byB3aGljaCB0aGUgTW9kZVNwZWMgaXMgcmVsZXZhbnQgKGUuZy4sCiAgICByZXRyaWV2YWwgcXVlcnkpCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1vZGVzcGVjLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhcHBsaWNhdGlvbiIgdHlwZT0ibm90YXRpb24uY2xhc3MiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vZGVzcGVjLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtb2Rlc3BlYy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1vZGVzcGVjLm1vZHVsZSAtLT4KICA8IS0tIE9yZ05hbWUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9yZ25hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im9yZ25hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9yZ25hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb3JnbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcmduYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvcnBvcmF0aW9uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vbnByb2ZpdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb25zb3J0aXVtIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImluZm9ybWFsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im90aGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVyY2xhc3MiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9yZ25hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG9yZ25hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvcmduYW1lLm1vZHVsZSAtLT4KICA8IS0tIE90aGVyQ3JlZGl0IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im90aGVyY3JlZGl0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvdGhlcmNyZWRpdCIgc3Vic3RpdHV0aW9uR3JvdXA9ImRvY2luZm8uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwZXJzb25uYW1lIi8+CiAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGVyc29uLmlkZW50Lm1peCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBlcnNvbmJsdXJiIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtYWlsIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFkZHJlc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3RoZXJjcmVkaXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb3RoZXJjcmVkaXQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3RoZXJjcmVkaXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZ3JhcGhpY2Rlc2lnbmVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InByb2R1Y3Rpb25lZGl0b3IiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29weWVkaXRvciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0ZWNobmljYWxlZGl0b3IiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idHJhbnNsYXRvciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3RoZXJjcmVkaXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG90aGVyY3JlZGl0LmF0dGxpc3QgLS0+CiAgPCEtLSAoc2VlICJQZXJzb25hbCBpZGVudGl0eSBlbGVtZW50cyIgZm9yICVwZXJzb24uaWRlbnQubWl4OykgLS0+CiAgPCEtLSBlbmQgb2Ygb3RoZXJjcmVkaXQubW9kdWxlIC0tPgogIDwhLS0gUGFnZU51bXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFnZW51bXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBhZ2VudW1zIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFnZW51bXMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcGFnZW51bXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFnZW51bXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcGFnZW51bXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwYWdlbnVtcy5tb2R1bGUgLS0+CiAgPCEtLSBQZXJzb25hbCBpZGVudGl0eSBlbGVtZW50cyAuLi4uLi4uIC0tPgogIDwhLS0KICAgIFRoZXNlIGVsZW1lbnRzIGFyZSB1c2VkIG9ubHkgd2l0aGluIEF1dGhvciwgRWRpdG9yLCBhbmQKICAgIE90aGVyQ3JlZGl0LgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb250cmliLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb250cmliIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29udHJpYi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb250cmliLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnRyaWIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb250cmliLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb250cmliLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29udHJpYi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZpcnN0bmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZmlyc3RuYW1lIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZmlyc3RuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZpcnN0bmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmaXJzdG5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaXJzdG5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZpcnN0bmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZpcnN0bmFtZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imhvbm9yaWZpYy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaG9ub3JpZmljIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaG9ub3JpZmljLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGhvbm9yaWZpYy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJob25vcmlmaWMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJob25vcmlmaWMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGhvbm9yaWZpYy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGhvbm9yaWZpYy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmVhZ2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImxpbmVhZ2UiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lYWdlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxpbmVhZ2UuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGluZWFnZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmVhZ2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxpbmVhZ2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBsaW5lYWdlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3RoZXJuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvdGhlcm5hbWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvdGhlcm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb3RoZXJuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im90aGVybmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im90aGVybmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb3RoZXJuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb3RoZXJuYW1lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3VybmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3VybmFtZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1cm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3VybmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdXJuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3VybmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3VybmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN1cm5hbWUubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHBlcnNvbi5pZGVudC5tb2R1bGUgLS0+CiAgPCEtLSBQcmludEhpc3RvcnkgLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcmludGhpc3Rvcnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InByaW50aGlzdG9yeSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByaW50aGlzdG9yeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwcmludGhpc3RvcnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJpbnRoaXN0b3J5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJpbnRoaXN0b3J5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwcmludGhpc3RvcnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcmludGhpc3RvcnkubW9kdWxlIC0tPgogIDwhLS0gUHJvZHVjdE5hbWUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvZHVjdG5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InByb2R1Y3RuYW1lIiBzdWJzdGl0dXRpb25Hcm91cD0iZG9jaW5mby5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvZHVjdG5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJvZHVjdG5hbWUuZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBNb3JlIHByZWNpc2VseSBpZGVudGlmaWVzIHRoZSBpdGVtIHRoZSBlbGVtZW50IG5hbWVzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9kdWN0bmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIGRlZmF1bHQ9InRyYWRlIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VydmljZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0cmFkZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZWdpc3RlcmVkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvcHlyaWdodCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvZHVjdG5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByb2R1Y3RuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHJvZHVjdG5hbWUubW9kdWxlIC0tPgogIDwhLS0gUHJvZHVjdE51bWJlciAuLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvZHVjdG51bWJlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHJvZHVjdG51bWJlciIgc3Vic3RpdHV0aW9uR3JvdXA9ImRvY2luZm8uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2R1Y3RudW1iZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJvZHVjdG51bWJlci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9kdWN0bnVtYmVyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvZHVjdG51bWJlci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJvZHVjdG51bWJlci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByb2R1Y3RudW1iZXIubW9kdWxlIC0tPgogIDwhLS0gUHViRGF0ZSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHViZGF0ZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHViZGF0ZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InB1YmRhdGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHViZGF0ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwdWJkYXRlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHViZGF0ZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHViZGF0ZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHB1YmRhdGUubW9kdWxlIC0tPgogIDwhLS0gUHVibGlzaGVyIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHVibGlzaGVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwdWJsaXNoZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwdWJsaXNoZXJuYW1lIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJhZGRyZXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InB1Ymxpc2hlci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHVibGlzaGVyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHVibGlzaGVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwdWJsaXNoZXJuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwdWJsaXNoZXJuYW1lIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHVibGlzaGVybmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXJuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InB1Ymxpc2hlcm5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwdWJsaXNoZXJuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXJuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHVibGlzaGVybmFtZS5tb2R1bGUgLS0+CiAgPCEtLSBBZGRyZXNzIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDwhLS0gZW5kIG9mIHB1Ymxpc2hlci5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIFB1YnNOdW1iZXIgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InB1YnNudW1iZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InB1YnNudW1iZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwdWJzbnVtYmVyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHB1YnNudW1iZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHVic251bWJlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InB1YnNudW1iZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHB1YnNudW1iZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwdWJzbnVtYmVyLm1vZHVsZSAtLT4KICA8IS0tIFJlbGVhc2VJbmZvIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlbGVhc2VpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWxlYXNlaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlbGVhc2VpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlbGVhc2VpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlbGVhc2VpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVsZWFzZWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlbGVhc2VpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVsZWFzZWluZm8ubW9kdWxlIC0tPgogIDwhLS0gUmV2SGlzdG9yeSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aGlzdG9yeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmV2aGlzdG9yeSIgc3Vic3RpdHV0aW9uR3JvdXA9ImRvY2luZm8uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZXZpc2lvbiIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZoaXN0b3J5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJldmhpc3RvcnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aGlzdG9yeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldmhpc3Rvcnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJldmhpc3RvcnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZXZoaXN0b3J5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aXNpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJldmlzaW9uIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmV2bnVtYmVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJkYXRlIi8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYXV0aG9yIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImF1dGhvcmluaXRpYWxzIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXZyZW1hcmsiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icmV2ZGVzY3JpcHRpb24iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2aXNpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmV2aXNpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aXNpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZpc2lvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmV2aXNpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZXZpc2lvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldm51bWJlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmV2bnVtYmVyIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2bnVtYmVyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJldm51bWJlci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXZudW1iZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZudW1iZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJldm51bWJlci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJldm51bWJlci5tb2R1bGUgLS0+CiAgPCEtLSBEYXRlIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDwhLS0gQXV0aG9ySW5pdGlhbHMgKGRlZmluZWQgZWxzZXdoZXJlIGluIHRoaXMgc2VjdGlvbikgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldnJlbWFyay5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmV2cmVtYXJrIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2cmVtYXJrLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJldnJlbWFyay5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXZyZW1hcmsuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZyZW1hcmsucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJldnJlbWFyay5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJldnJlbWFyay5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldmRlc2NyaXB0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZXZkZXNjcmlwdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZXZkZXNjcmlwdGlvbi5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2ZGVzY3JpcHRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmV2ZGVzY3JpcHRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2ZGVzY3JpcHRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZkZXNjcmlwdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmV2ZGVzY3JpcHRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZXZkZXNjcmlwdGlvbi5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgcmV2aGlzdG9yeS5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIFNlcmllc1ZvbE51bXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlcmllc3ZvbG51bXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlcmllc3ZvbG51bXMiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZXJpZXN2b2xudW1zLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlcmllc3ZvbG51bXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VyaWVzdm9sbnVtcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlcmllc3ZvbG51bXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlcmllc3ZvbG51bXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZXJpZXN2b2xudW1zLm1vZHVsZSAtLT4KICA8IS0tIFZvbHVtZU51bSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZvbHVtZW51bS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idm9sdW1lbnVtIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idm9sdW1lbnVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZvbHVtZW51bS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2b2x1bWVudW0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2b2x1bWVudW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZvbHVtZW51bS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZvbHVtZW51bS5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gZW5kIG9mIGRvY2luZm8uY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gSW5saW5lLCBsaW5rLCBhbmQgdWJpcXVpdG91cyBlbGVtZW50cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFRlY2huaWNhbCBhbmQgY29tcHV0ZXIgdGVybXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFjY2VsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhY2NlbCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWNjZWwuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWNjZWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWNjZWwuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhY2NlbC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWNjZWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhY2NlbC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFjdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYWN0aW9uIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWN0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFjdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhY3Rpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFjdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWN0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYWN0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXBwbGljYXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFwcGxpY2F0aW9uIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXBwbGljYXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXBwbGljYXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXBwbGljYXRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaGFyZHdhcmUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic29mdHdhcmUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXBwbGljYXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFwcGxpY2F0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXBwbGljYXRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjbGFzc25hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNsYXNzbmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2xhc3NuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNsYXNzbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjbGFzc25hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjbGFzc25hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNsYXNzbmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNsYXNzbmFtZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhY2thZ2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBhY2thZ2UiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhY2thZ2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcGFja2FnZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYWNrYWdlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFja2FnZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcGFja2FnZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBhY2thZ2UubW9kdWxlIC0tPgogIDwhLS0KICAgIENPIGlzIGEgY2FsbG91dCBhcmVhIG9mIHRoZSBMaW5lQ29sdW1uIHVuaXQgdHlwZSAoYSBzaW5nbGUgY2hhcmFjdGVyCiAgICBwb3NpdGlvbik7IHRoZSBwb3NpdGlvbiBpcyBkaXJlY3RseSBpbmRpY2F0ZWQgYnkgdGhlIGxvY2F0aW9uIG9mIENPLgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY28iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjby5lbGVtZW50IC0tPgogIDwhLS0gYnVnIG51bWJlci9zeW1ib2wgb3ZlcnJpZGUgb3IgaW5pdGlhbGl6YXRpb24gLS0+CiAgPCEtLSB0byBhbnkgcmVsYXRlZCBpbmZvcm1hdGlvbiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY28uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaWRyZXEuY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY28ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY28ubW9kdWxlIC0tPgogIDwhLS0gQ09SRUYgaXMgYSByZWZlcmVuY2UgdG8gYSBDTyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29yZWYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvcmVmIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29yZWYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29yZWYuZWxlbWVudCAtLT4KICA8IS0tIGJ1ZyBudW1iZXIvc3ltYm9sIG92ZXJyaWRlIG9yIGluaXRpYWxpemF0aW9uIC0tPgogIDwhLS0gdG8gYW55IHJlbGF0ZWQgaW5mb3JtYXRpb24gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvcmVmLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kcmVxLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29yZWYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvcmVmLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29yZWYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb21tYW5kLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb21tYW5kIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbWFuZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb21tYW5kLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbW1hbmQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1hbmQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbW1hbmQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb21tYW5kLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29tcHV0ZXJvdXRwdXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbXB1dGVyb3V0cHV0IiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY28iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbXB1dGVyb3V0cHV0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbXB1dGVyb3V0cHV0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbXB1dGVyb3V0cHV0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21wdXRlcm91dHB1dC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29tcHV0ZXJvdXRwdXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb21wdXRlcm91dHB1dC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImRhdGFiYXNlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJkYXRhYmFzZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRhdGFiYXNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGRhdGFiYXNlLmVsZW1lbnQgLS0+CiAgPCEtLSBDbGFzczogVHlwZSBvZiBkYXRhYmFzZSB0aGUgZWxlbWVudCBuYW1lczsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGF0YWJhc2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibmFtZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0YWJsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJmaWVsZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJrZXkxIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImtleTIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVjb3JkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImluZGV4Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InZpZXciLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icHJpbWFyeWtleSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWNvbmRhcnlrZXkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZm9yZWlnbmtleSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhbHRrZXkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icHJvY2VkdXJlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRhdGF0eXBlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvbnN0cmFpbnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icnVsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ1c2VyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imdyb3VwIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRhdGFiYXNlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBkYXRhYmFzZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGRhdGFiYXNlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZW1haWwucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImVtYWlsIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZW1haWwuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZW1haWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZW1haWwuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlbWFpbC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZW1haWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBlbWFpbC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVudmFyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJlbnZhciIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZW52YXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZW52YXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZW52YXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlbnZhci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZW52YXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBlbnZhci5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVycm9yY29kZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXJyb3Jjb2RlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcnJvcmNvZGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZXJyb3Jjb2RlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVycm9yY29kZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXJyb3Jjb2RlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlcnJvcmNvZGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBlcnJvcmNvZGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcnJvcm5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImVycm9ybmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXJyb3JuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGVycm9ybmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcnJvcm5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcnJvcm5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGVycm9ybmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVycm9ybmFtZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVycm9ydGV4dC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXJyb3J0ZXh0IiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcnJvcnRleHQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZXJyb3J0ZXh0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVycm9ydGV4dC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVycm9ydGV4dC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZXJyb3J0ZXh0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZXJyb3J0ZXh0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXJyb3J0eXBlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJlcnJvcnR5cGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVycm9ydHlwZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlcnJvcnR5cGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXJyb3J0eXBlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXJyb3J0eXBlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlcnJvcnR5cGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBlcnJvcnR5cGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmaWxlbmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZmlsZW5hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaWxlbmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmaWxlbmFtZS5lbGVtZW50IC0tPgogIDwhLS0gQ2xhc3M6IFR5cGUgb2YgZmlsZW5hbWUgdGhlIGVsZW1lbnQgbmFtZXM7IG5vIGRlZmF1bHQgLS0+CiAgPCEtLQogICAgUGF0aDogU2VhcmNoIHBhdGggKHBvc3NpYmx5IHN5c3RlbS1zcGVjaWZpYykgaW4gd2hpY2gKICAgIGZpbGUgY2FuIGJlIGZvdW5kCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZpbGVuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImhlYWRlcmZpbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icGFydGl0aW9uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRldmljZWZpbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGlicmFyeWZpbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZGlyZWN0b3J5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImV4dGVuc2lvbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzeW1saW5rIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBhdGgiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZmlsZW5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZpbGVuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZmlsZW5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmdW5jdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZnVuY3Rpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jdGlvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmdW5jdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmdW5jdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZnVuY3Rpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZ1bmN0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZnVuY3Rpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWlidXR0b24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imd1aWJ1dHRvbiIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYWNjZWwiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN1cGVyc2NyaXB0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJzY3JpcHQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aWJ1dHRvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBndWlidXR0b24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3VpYnV0dG9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWlidXR0b24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGd1aWJ1dHRvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGd1aWJ1dHRvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aWljb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imd1aWljb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjY2VsIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdXBlcnNjcmlwdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3Vic2NyaXB0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWlpY29uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGd1aWljb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3VpaWNvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3VpaWNvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ3VpaWNvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGd1aWljb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWlsYWJlbC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ3VpbGFiZWwiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjY2VsIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdXBlcnNjcmlwdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3Vic2NyaXB0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWlsYWJlbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBndWlsYWJlbC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWlsYWJlbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3VpbGFiZWwucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGd1aWxhYmVsLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ3VpbGFiZWwubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWltZW51LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJndWltZW51IiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhY2NlbCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3VwZXJzY3JpcHQiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN1YnNjcmlwdCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3VpbWVudS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBndWltZW51LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aW1lbnUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aW1lbnUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGd1aW1lbnUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBndWltZW51Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3VpbWVudWl0ZW0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imd1aW1lbnVpdGVtIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhY2NlbCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3VwZXJzY3JpcHQiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN1YnNjcmlwdCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3VpbWVudWl0ZW0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ3VpbWVudWl0ZW0uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3VpbWVudWl0ZW0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aW1lbnVpdGVtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBndWltZW51aXRlbS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGd1aW1lbnVpdGVtLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3Vpc3VibWVudS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ3Vpc3VibWVudSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYWNjZWwiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN1cGVyc2NyaXB0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJzY3JpcHQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aXN1Ym1lbnUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ3Vpc3VibWVudS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWlzdWJtZW51LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWlzdWJtZW51LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBndWlzdWJtZW51LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ3Vpc3VibWVudS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImhhcmR3YXJlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJoYXJkd2FyZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImhhcmR3YXJlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGhhcmR3YXJlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImhhcmR3YXJlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJoYXJkd2FyZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaGFyZHdhcmUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBoYXJkd2FyZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImludGVyZmFjZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW50ZXJmYWNlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhY2NlbCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW50ZXJmYWNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGludGVyZmFjZS5lbGVtZW50IC0tPgogIDwhLS0gQ2xhc3M6IFR5cGUgb2YgdGhlIEludGVyZmFjZSBpdGVtOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbnRlcmZhY2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImludGVyZmFjZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW50ZXJmYWNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW50ZXJmYWNlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5Y2FwLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJrZXljYXAiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXljYXAuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Yga2V5Y2FwLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImtleWNhcC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZnVuY3Rpb24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhbHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29udHJvbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzaGlmdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJtZXRhIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImVzY2FwZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJlbnRlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0YWIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYmFja3NwYWNlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvbW1hbmQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3B0aW9uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNwYWNlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRlbGV0ZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpbnNlcnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idXAiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZG93biIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsZWZ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJpZ2h0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImhvbWUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZW5kIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBhZ2V1cCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwYWdlZG93biIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcmZ1bmN0aW9uIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleWNhcC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Yga2V5Y2FwLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Yga2V5Y2FwLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5Y29kZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ia2V5Y29kZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5Y29kZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBrZXljb2RlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImtleWNvZGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXljb2RlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBrZXljb2RlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Yga2V5Y29kZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImtleWNvbWJvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJrZXljb21ibyIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ia2V5Y2FwIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJrZXljb21ibyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ia2V5c3ltIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtb3VzZWJ1dHRvbiIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5Y29tYm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Yga2V5Y29tYm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5Y29tYm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXlhY3Rpb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleWNvbWJvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBrZXljb21iby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGtleWNvbWJvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5c3lzbS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ia2V5c3ltIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXlzeW0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Yga2V5c3ltLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImtleXN5bS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleXN5c20ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGtleXN5bS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGtleXN5bS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmVhbm5vdGF0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJsaW5lYW5ub3RhdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmVhbm5vdGF0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxpbmVhbm5vdGF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmVhbm5vdGF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZWFubm90YXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxpbmVhbm5vdGF0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGluZWFubm90YXRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaXRlcmFsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJsaXRlcmFsIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGl0ZXJhbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBsaXRlcmFsLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpdGVyYWwuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpdGVyYWwucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxpdGVyYWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBsaXRlcmFsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29kZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29kZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvZGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29kZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2RlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYW5ndWFnZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29kZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29kZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvZGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25zdGFudC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29uc3RhbnQiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnN0YW50LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbnN0YW50LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnN0YW50LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbWl0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25zdGFudC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29uc3RhbnQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb25zdGFudC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZhcm5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InZhcm5hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZhcm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdmFybmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2YXJuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmFybmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdmFybmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZhcm5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtYXJrdXAucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1hcmt1cCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWFya3VwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1hcmt1cC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtYXJrdXAuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtYXJrdXAucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1hcmt1cC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1hcmt1cC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lZGlhbGFiZWwucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1lZGlhbGFiZWwiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1lZGlhbGFiZWwuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWVkaWFsYWJlbC5lbGVtZW50IC0tPgogIDwhLS0gQ2xhc3M6IFR5cGUgb2YgbWVkaXVtIG5hbWVkIGJ5IHRoZSBlbGVtZW50OyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZWRpYWxhYmVsLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNhcnRyaWRnZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZHJvbSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkaXNrIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRhcGUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1lZGlhbGFiZWwucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1lZGlhbGFiZWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtZWRpYWxhYmVsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWVudWNob2ljZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWVudWNob2ljZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic2hvcnRjdXQiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3VpYnV0dG9uIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imd1aWljb24iLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3VpbGFiZWwiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3VpbWVudSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJndWltZW51aXRlbSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJndWlzdWJtZW51Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImludGVyZmFjZSIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZW51Y2hvaWNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1lbnVjaG9pY2UuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWVudWNob2ljZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWVudWNob2ljZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWVudWNob2ljZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1lbnVjaG9pY2UubW9kdWxlIC0tPgogIDwhLS0gU2VlIGFsc28gS2V5Q29tYm8gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNob3J0Y3V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzaG9ydGN1dCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ia2V5Y2FwIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJrZXljb21ibyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ia2V5c3ltIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtb3VzZWJ1dHRvbiIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2hvcnRjdXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2hvcnRjdXQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2hvcnRjdXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXlhY3Rpb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNob3J0Y3V0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzaG9ydGN1dC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNob3J0Y3V0Lm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBtZW51Y2hvaWNlLmNvbnRlbnQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtb3VzZWJ1dHRvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibW91c2VidXR0b24iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vdXNlYnV0dG9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1vdXNlYnV0dG9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1vdXNlYnV0dG9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3VzZWJ1dHRvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbW91c2VidXR0b24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtb3VzZWJ1dHRvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ3RleHQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ3RleHQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2d0ZXh0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1zZ3RleHQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNndGV4dC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ3RleHQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1zZ3RleHQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2d0ZXh0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3B0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvcHRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvcHRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb3B0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9wdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9wdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb3B0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb3B0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3B0aW9uYWwucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im9wdGlvbmFsIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3B0aW9uYWwuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb3B0aW9uYWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3B0aW9uYWwuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvcHRpb25hbC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb3B0aW9uYWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvcHRpb25hbC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcmFtZXRlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGFyYW1ldGVyIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFyYW1ldGVyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBhcmFtZXRlci5lbGVtZW50IC0tPgogIDwhLS0gQ2xhc3M6IFR5cGUgb2YgdGhlIFBhcmFtZXRlcjsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFyYW1ldGVyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvbW1hbmQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZnVuY3Rpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3B0aW9uIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcmFtZXRlci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcGFyYW1ldGVyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcGFyYW1ldGVyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvbXB0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwcm9tcHQiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9tcHQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJvbXB0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb21wdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvbXB0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwcm9tcHQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcm9tcHQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9wZXJ0eS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHJvcGVydHkiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9wZXJ0eS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwcm9wZXJ0eS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9wZXJ0eS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvcGVydHkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByb3BlcnR5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHJvcGVydHkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXBsYWNlYWJsZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVwbGFjZWFibGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ib3B0aW9uYWwiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJvdGhlci5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVncmFwaGljIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVtZWRpYW9iamVjdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY28iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlcGxhY2VhYmxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlcGxhY2VhYmxlLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgQ2xhc3M6IFR5cGUgb2YgaW5mb3JtYXRpb24gdGhlIGVsZW1lbnQgcmVwcmVzZW50czsgbm8KICAgIGRlZmF1bHQKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVwbGFjZWFibGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29tbWFuZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJmdW5jdGlvbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHRpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icGFyYW1ldGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXBsYWNlYWJsZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVwbGFjZWFibGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZXBsYWNlYWJsZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldHVybnZhbHVlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZXR1cm52YWx1ZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV0dXJudmFsdWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmV0dXJudmFsdWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV0dXJudmFsdWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXR1cm52YWx1ZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmV0dXJudmFsdWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZXR1cm52YWx1ZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNnbWx0YWcucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNnbWx0YWciIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNnbWx0YWcuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2dtbHRhZy5lbGVtZW50IC0tPgogIDwhLS0gQ2xhc3M6IFR5cGUgb2YgU0dNTCBjb25zdHJ1Y3QgdGhlIGVsZW1lbnQgbmFtZXM7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNnbWx0YWcuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYXR0cmlidXRlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImF0dHZhbHVlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImVsZW1lbnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZW5kdGFnIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImVtcHR5dGFnIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImdlbmVudGl0eSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJudW1jaGFycmVmIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBhcmFtZW50aXR5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBpIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InhtbHBpIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InN0YXJ0dGFnIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNnbWxjb21tZW50Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InByZWZpeCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJuYW1lc3BhY2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibG9jYWxuYW1lIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWVzcGFjZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2dtbHRhZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2dtbHRhZy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNnbWx0YWcubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdHJ1Y3RmaWVsZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3RydWN0ZmllbGQiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0cnVjdGZpZWxkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN0cnVjdGZpZWxkLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0cnVjdGZpZWxkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RydWN0ZmllbGQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN0cnVjdGZpZWxkLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3RydWN0ZmllbGQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdHJ1Y3RuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdHJ1Y3RuYW1lIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdHJ1Y3RuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN0cnVjdG5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RydWN0bmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0cnVjdG5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN0cnVjdG5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzdHJ1Y3RuYW1lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3ltYm9sLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzeW1ib2wiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5bWJvbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzeW1ib2wuZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBUeXBlIG9mIHN5bWJvbDsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3ltYm9sLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbWl0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzeW1ib2wucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN5bWJvbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN5bWJvbC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN5c3RlbWl0ZW0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN5c3RlbWl0ZW0iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhY3JvbnltIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbyIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3lzdGVtaXRlbS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzeXN0ZW1pdGVtLmVsZW1lbnQgLS0+CiAgPCEtLSBDbGFzczogVHlwZSBvZiBzeXN0ZW0gaXRlbSB0aGUgZWxlbWVudCBuYW1lczsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3lzdGVtaXRlbS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb25zdGFudCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkYWVtb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZG9tYWlubmFtZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJldGhlcmFkZHJlc3MiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZXZlbnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZXZlbnRoYW5kbGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImZpbGVzeXN0ZW0iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZnFkb21haW5uYW1lIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imdyb3VwbmFtZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpcGFkZHJlc3MiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGlicmFyeSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJtYWNybyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJuZXRtYXNrIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5ld3Nncm91cCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvc25hbWUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icHJvdG9jb2wiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVzb3VyY2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic3lzdGVtbmFtZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ1c2VybmFtZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcm9jZXNzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlcnZlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZXJ2aWNlIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5c3RlbWl0ZW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN5c3RlbWl0ZW0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzeXN0ZW1pdGVtLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idXJpLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ1cmkiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InVyaS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB1cmkuZWxlbWVudCAtLT4KICA8IS0tIFR5cGU6IFR5cGUgb2YgVVJJOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ1cmkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InVyaS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdXJpLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdXJpLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9rZW4ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRva2VuIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2tlbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2tlbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2tlbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRva2VuLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2tlbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRva2VuLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idHlwZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idHlwZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idHlwZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0eXBlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InR5cGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0eXBlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0eXBlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdHlwZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InVzZXJpbnB1dC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idXNlcmlucHV0IiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY28iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InVzZXJpbnB1dC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB1c2VyaW5wdXQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idXNlcmlucHV0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ1c2VyaW5wdXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHVzZXJpbnB1dC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHVzZXJpbnB1dC5tb2R1bGUgLS0+CiAgPCEtLSBHZW5lcmFsIHdvcmRzIGFuZCBwaHJhc2VzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhYmJyZXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFiYnJldiIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9IndvcmQuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWJicmV2LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFiYnJldi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhYmJyZXYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhYmJyZXYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFiYnJldi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFiYnJldi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFjcm9ueW0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFjcm9ueW0iIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ3b3JkLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFjcm9ueW0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWNyb255bS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhY3JvbnltLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWNyb255bS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWNyb255bS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFjcm9ueW0ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXRhdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2l0YXRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNpdGF0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNpdGF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNpdGF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0YXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNpdGF0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2l0YXRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXRlcmVmZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNpdGVyZWZlbnRyeSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVmZW50cnl0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJtYW52b2xudW0iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0ZXJlZmVudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNpdGVyZWZlbnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXRlcmVmZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaXRlcmVmZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNpdGVyZWZlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNpdGVyZWZlbnRyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmVudHJ5dGl0bGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZmVudHJ5dGl0bGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZlbnRyeXRpdGxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5dGl0bGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZW50cnl0aXRsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVudHJ5dGl0bGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5dGl0bGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZlbnRyeXRpdGxlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibmFtdm9sbnVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtYW52b2xudW0iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0id29yZC5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtYW52b2xudW0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWFudm9sbnVtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1hbnZvbG51bS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im5hbXZvbG51bS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWFudm9sbnVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWFudm9sbnVtLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2l0ZXRpdGxlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjaXRldGl0bGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNpdGV0aXRsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjaXRldGl0bGUuZWxlbWVudCAtLT4KICA8IS0tIFB1Yndvcms6IEdlbnJlIG9mIHB1Ymxpc2hlZCB3b3JrIGNpdGVkOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXRldGl0bGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InB1YndvcmsiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhcnRpY2xlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvb2siLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhcHRlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwYXJ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlZmVudHJ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3Rpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iam91cm5hbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZXJpZXMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2V0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1hbnVzY3JpcHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2Ryb20iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZHZkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Indpa2kiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZ29waGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJicyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJlbWFpbG1lc3NhZ2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0id2VicGFnZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJuZXdzcG9zdGluZyIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0ZXRpdGxlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjaXRldGl0bGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjaXRldGl0bGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlbXBoYXNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZW1waGFzaXMiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVtcGhhc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGVtcGhhc2lzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVtcGhhc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZW1waGFzaXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGVtcGhhc2lzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZW1waGFzaXMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmb3JlaWducGhyYXNlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmb3JlaWducGhyYXNlIiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmb3JlaWducGhyYXNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZvcmVpZ25waHJhc2UuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZm9yZWlnbnBocmFzZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZvcmVpZ25waHJhc2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZvcmVpZ25waHJhc2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmb3JlaWducGhyYXNlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3N0ZXJtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJnbG9zc3Rlcm0iIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzdGVybS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBnbG9zc3Rlcm0uZWxlbWVudCAtLT4KICA8IS0tIHRvIEdsb3NzRW50cnkgaWYgR2xvc3N0ZXJtIHVzZWQgaW4gdGV4dCAtLT4KICA8IS0tCiAgICBCYXNlRm9ybTogUHJvdmlkZXMgdGhlIGZvcm0gb2YgR2xvc3NUZXJtIHRvIGJlIHVzZWQKICAgIGZvciBpbmRleGluZwogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc3Rlcm0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhc2Vmb3JtIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3N0ZXJtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBnbG9zc3Rlcm0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBnbG9zc3Rlcm0ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmaXJzdHRlcm0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZpcnN0dGVybSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZmlyc3R0ZXJtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZpcnN0dGVybS5lbGVtZW50IC0tPgogIDwhLS0gdG8gR2xvc3NFbnRyeSBvciBvdGhlciBleHBsYW5hdGlvbiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmlyc3R0ZXJtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiYXNlZm9ybSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZpcnN0dGVybS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZmlyc3R0ZXJtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZmlyc3R0ZXJtLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGhyYXNlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwaHJhc2UiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBocmFzZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwaHJhc2UuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGhyYXNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGhyYXNlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwaHJhc2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwaHJhc2UubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxdW90ZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icXVvdGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InF1b3RlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHF1b3RlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InF1b3RlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icXVvdGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHF1b3RlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcXVvdGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzc3NjcmlwdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3Vic2NyaXB0Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtcGhhc2lzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXBsYWNlYWJsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3ltYm9sIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVncmFwaGljIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVtZWRpYW9iamVjdCIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJhc2UuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YnNjcmlwdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdWJzY3JpcHQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3Vic2NyaXB0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3NzY3JpcHQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN1YnNjcmlwdC5hdHRsaXN0IC0tPgogIDx4czplbGVtZW50IG5hbWU9InN1cGVyc2NyaXB0Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtcGhhc2lzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXBsYWNlYWJsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3ltYm9sIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVncmFwaGljIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVtZWRpYW9iamVjdCIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJhc2UuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1cGVyc2NyaXB0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN1cGVyc2NyaXB0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1cGVyc2NyaXB0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3NzY3JpcHQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN1cGVyc2NyaXB0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3NzY3JpcHQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0cmFkZW1hcmsucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRyYWRlbWFyayIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRlY2guY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJhc2UuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZWdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlbXBoYXNpcyIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idHJhZGVtYXJrLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRyYWRlbWFyay5lbGVtZW50IC0tPgogIDwhLS0gQ2xhc3M6IE1vcmUgcHJlY2lzZWx5IGlkZW50aWZpZXMgdGhlIGl0ZW0gdGhlIGVsZW1lbnQgbmFtZXMgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRyYWRlbWFyay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIGRlZmF1bHQ9InRyYWRlIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VydmljZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0cmFkZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZWdpc3RlcmVkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvcHlyaWdodCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idHJhZGVtYXJrLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0cmFkZW1hcmsuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0cmFkZW1hcmsubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ3b3JkYXN3b3JkLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ3b3JkYXN3b3JkIiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0id29yZC5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ3b3JkYXN3b3JkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHdvcmRhc3dvcmQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0id29yZGFzd29yZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9IndvcmRhc3dvcmQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHdvcmRhc3dvcmQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB3b3JkYXN3b3JkLm1vZHVsZSAtLT4KICA8IS0tIExpbmtzIGFuZCBjcm9zcy1yZWZlcmVuY2VzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imxpbmsucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImxpbmsiIHN1YnN0aXR1dGlvbkdyb3VwPSJsaW5rLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxpbmsuZWxlbWVudCAtLT4KICA8IS0tCiAgICBFbmR0ZXJtOiBJRCBvZiBlbGVtZW50IGNvbnRhaW5pbmcgdGV4dCB0aGF0IGlzIHRvIGJlCiAgICBmZXRjaGVkIGZyb20gZWxzZXdoZXJlIGluIHRoZSBkb2N1bWVudCB0byBhcHBlYXIgYXMKICAgIHRoZSBjb250ZW50IG9mIHRoaXMgZWxlbWVudAogIC0tPgogIDwhLS0gdG8gbGlua2VkLXRvIG9iamVjdCAtLT4KICA8IS0tIFR5cGU6IEZyZWVseSBhc3NpZ25hYmxlIHBhcmFtZXRlciAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGluay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW5kdGVybSIgdHlwZT0ieHM6SURSRUYiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieHJlZnN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRyZXEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBsaW5rLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGluay5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9saW5rLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvbGluayIgc3Vic3RpdHV0aW9uR3JvdXA9ImxpbmsuY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9saW5rLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG9saW5rLmVsZW1lbnQgLS0+CiAgPCEtLSBUYXJnZXREb2NFbnQ6IE5hbWUgb2YgYW4gZW50aXR5IHRvIGJlIHRoZSB0YXJnZXQgb2YgdGhlIGxpbmsgLS0+CiAgPCEtLQogICAgTGlua01vZGU6IElEIG9mIGEgTW9kZVNwZWMgY29udGFpbmluZyBpbnN0cnVjdGlvbnMgZm9yCiAgICBvcGVyYXRpbmcgb24gdGhlIGVudGl0eSBuYW1lZCBieSBUYXJnZXREb2NFbnQKICAtLT4KICA8IS0tIExvY2FsSW5mbzogSW5mb3JtYXRpb24gdGhhdCBtYXkgYmUgcGFzc2VkIHRvIE1vZGVTcGVjIC0tPgogIDwhLS0gVHlwZTogRnJlZWx5IGFzc2lnbmFibGUgcGFyYW1ldGVyIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvbGluay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGFyZ2V0ZG9jZW50IiB0eXBlPSJ4czpFTlRJVFkiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGlua21vZGUiIHR5cGU9InhzOklEUkVGIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxvY2FsaW5mbyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRhcmdldGRvYyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0YXJnZXRwdHIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieHJlZnN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvbGluay5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb2xpbmsuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvbGluay5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InVsaW5rLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ1bGluayIgc3Vic3RpdHV0aW9uR3JvdXA9ImxpbmsuY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InVsaW5rLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHVsaW5rLmVsZW1lbnQgLS0+CiAgPCEtLSBVUkw6IHVuaWZvcm0gcmVzb3VyY2UgbG9jYXRvcjsgdGhlIHRhcmdldCBvZiB0aGUgVUxpbmsgLS0+CiAgPCEtLSBUeXBlOiBGcmVlbHkgYXNzaWduYWJsZSBwYXJhbWV0ZXIgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InVsaW5rLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1cmwiIHVzZT0icmVxdWlyZWQiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ4cmVmc3R5bGUiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InVsaW5rLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB1bGluay5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHVsaW5rLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZm9vdG5vdGVyZWYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZvb3Rub3RlcmVmIiBzdWJzdGl0dXRpb25Hcm91cD0ieHJlZi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZm9vdG5vdGVyZWYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZm9vdG5vdGVyZWYuZWxlbWVudCAtLT4KICA8IS0tIHRvIGZvb3Rub3RlIGNvbnRlbnQgc3VwcGxpZWQgZWxzZXdoZXJlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmb290bm90ZXJlZi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRyZXEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZvb3Rub3RlcmVmLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmb290bm90ZXJlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZvb3Rub3RlcmVmLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ieHJlZi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ieHJlZiIgc3Vic3RpdHV0aW9uR3JvdXA9InhyZWYuY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InhyZWYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgeHJlZi5lbGVtZW50IC0tPgogIDwhLS0KICAgIEVuZHRlcm06IElEIG9mIGVsZW1lbnQgY29udGFpbmluZyB0ZXh0IHRoYXQgaXMgdG8gYmUKICAgIGZldGNoZWQgZnJvbSBlbHNld2hlcmUgaW4gdGhlIGRvY3VtZW50IHRvIGFwcGVhciBhcwogICAgdGhlIGNvbnRlbnQgb2YgdGhpcyBlbGVtZW50CiAgLS0+CiAgPCEtLSB0byBsaW5rZWQtdG8gb2JqZWN0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ4cmVmLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbmR0ZXJtIiB0eXBlPSJ4czpJRFJFRiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ4cmVmc3R5bGUiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRyZXEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4cmVmLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB4cmVmLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgeHJlZi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb3JlZi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvcmVmIiBzdWJzdGl0dXRpb25Hcm91cD0ieHJlZi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvcmVmLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb3JlZi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9yZWYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVuZHRlcm0iIHR5cGU9InhzOklEUkVGIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InhyZWZzdHlsZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1bml0cyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiZWdpbiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbmQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRyZXEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9yZWYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb3JlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb3JlZi5tb2R1bGUgLS0+CiAgPCEtLSBVYmlxdWl0b3VzIGVsZW1lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhbmNob3Iucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFuY2hvciI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFuY2hvci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhbmNob3IuZWxlbWVudCAtLT4KICA8IS0tIHJlcXVpcmVkIC0tPgogIDwhLS0gcmVwbGFjZXMgTGFuZyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYW5jaG9yLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaWRyZXEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVtYXAuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4cmVmbGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZpc2lvbmZsYWcuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlZmZlY3Rpdml0eS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFuY2hvci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYW5jaG9yLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYW5jaG9yLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmVnaW5wYWdlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJiZWdpbnBhZ2UiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiZWdpbnBhZ2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmVnaW5wYWdlLmVsZW1lbnQgLS0+CiAgPCEtLSBQYWdlTnVtOiBOdW1iZXIgb2YgcGFnZSB0aGF0IGJlZ2lucyBhdCB0aGlzIHBvaW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiZWdpbnBhZ2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmVnaW5wYWdlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiZWdpbnBhZ2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiZWdpbnBhZ2UubW9kdWxlIC0tPgogIDwhLS0KICAgIEluZGV4VGVybXMgYXBwZWFyIGluIHRoZSB0ZXh0IGZsb3cgZm9yIGdlbmVyYXRpbmcgb3IgbGlua2luZyBhbgogICAgaW5kZXguCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4dGVybS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5kZXh0ZXJtIiBzdWJzdGl0dXRpb25Hcm91cD0ibmR4dGVybS5jbGFzcyIvPgogIDwhLS0gZW5kIG9mIGluZGV4dGVybS5lbGVtZW50IC0tPgogIDwhLS0KICAgIFNjb3BlOiBJbmRpY2F0ZXMgd2hpY2ggZ2VuZXJhdGVkIGluZGljZXMgdGhlIEluZGV4VGVybQogICAgc2hvdWxkIGFwcGVhciBpbjogR2xvYmFsICh3aG9sZSBkb2N1bWVudCBzZXQpLCBMb2NhbCAodGhpcwogICAgZG9jdW1lbnQgb25seSksIG9yIEFsbCAoYm90aCkKICAtLT4KICA8IS0tCiAgICBTaWduaWZpY2FuY2U6IFdoZXRoZXIgdGhpcyBJbmRleFRlcm0gaXMgdGhlIG1vc3QgcGVydGluZW50CiAgICBvZiBpdHMgc2VyaWVzIChQcmVmZXJyZWQpIG9yIG5vdCAoTm9ybWFsLCB0aGUgZGVmYXVsdCkKICAtLT4KICA8IS0tCiAgICBDbGFzczogSW5kaWNhdGVzIHR5cGUgb2YgSW5kZXhUZXJtOyBkZWZhdWx0IGlzIFNpbmd1bGFyLAogICAgb3IgRW5kT2ZSYW5nZSBpZiBTdGFydFJlZiBpcyBzdXBwbGllZDsgU3RhcnRPZlJhbmdlIHZhbHVlCiAgICBtdXN0IGJlIHN1cHBsaWVkIGV4cGxpY2l0bHkgb24gc3RhcnRzIG9mIHJhbmdlcwogIC0tPgogIDwhLS0KICAgIFN0YXJ0UmVmOiBJRCBvZiB0aGUgSW5kZXhUZXJtIHRoYXQgc3RhcnRzIHRoZSBpbmRleGluZwogICAgcmFuZ2UgZW5kZWQgYnkgdGhpcyBJbmRleFRlcm0KICAtLT4KICA8IS0tCiAgICBab25lOiBJRHMgb2YgdGhlIGVsZW1lbnRzIHRvIHdoaWNoIHRoZSBJbmRleFRlcm0gYXBwbGllcywKICAgIGFuZCBpbmRpY2F0ZXMgdGhhdCB0aGUgSW5kZXhUZXJtIGFwcGxpZXMgdG8gdGhvc2UgZW50aXJlCiAgICBlbGVtZW50cyByYXRoZXIgdGhhbiB0aGUgcG9pbnQgYXQgd2hpY2ggdGhlIEluZGV4VGVybQogICAgb2NjdXJzCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4dGVybS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhZ2VudW0uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjb3BlIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYWxsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imdsb2JhbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsb2NhbCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaWduaWZpY2FuY2UiIGRlZmF1bHQ9Im5vcm1hbCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InByZWZlcnJlZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JtYWwiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzaW5ndWxhciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzdGFydG9mcmFuZ2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZW5kb2ZyYW5nZSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGFydHJlZiIgdHlwZT0ieHM6SURSRUYiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iem9uZSIgdHlwZT0ieHM6SURSRUZTIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZGV4dGVybS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW5kZXh0ZXJtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5kZXh0ZXJtLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJpbXNlY3Rlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHJpbWFyeSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByaW1hcnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJpbWFyeS5lbGVtZW50IC0tPgogIDwhLS0KICAgIFNvcnRBczogQWx0ZXJuYXRlIHNvcnQgc3RyaW5nIGZvciBpbmRleCBzb3J0aW5nLCBlLmcuLAogICAgImZvdXJ0ZWVuIiBmb3IgYW4gZWxlbWVudCBjb250YWluaW5nICIxNCIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJpbWFyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic29ydGFzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmltc2VjdGVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwcmltYXJ5LmF0dGxpc3QgLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2Vjb25kYXJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2Vjb25kYXJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY29uZGFyeS5lbGVtZW50IC0tPgogIDwhLS0KICAgIFNvcnRBczogQWx0ZXJuYXRlIHNvcnQgc3RyaW5nIGZvciBpbmRleCBzb3J0aW5nLCBlLmcuLAogICAgImZvdXJ0ZWVuIiBmb3IgYW4gZWxlbWVudCBjb250YWluaW5nICIxNCIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2Vjb25kYXJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzb3J0YXMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByaW1zZWN0ZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY29uZGFyeS5hdHRsaXN0IC0tPgogIDx4czplbGVtZW50IG5hbWU9InRlcnRpYXJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGVydGlhcnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGVydGlhcnkuZWxlbWVudCAtLT4KICA8IS0tCiAgICBTb3J0QXM6IEFsdGVybmF0ZSBzb3J0IHN0cmluZyBmb3IgaW5kZXggc29ydGluZywgZS5nLiwKICAgICJmb3VydGVlbiIgZm9yIGFuIGVsZW1lbnQgY29udGFpbmluZyAiMTQiCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRlcnRpYXJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzb3J0YXMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByaW1zZWN0ZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRlcnRpYXJ5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHJpbXNlY3Rlci5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZXNlZWFsc28ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2Vlc2VlYWxzby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VlLmF0dGxpc3QgLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VlYWxzbyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZWFsc28uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VlYWxzby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWVhbHNvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2Vlc2VlYWxzby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CjwveHM6c2NoZW1hPgo8IS0tIGVuZCBvZiBzZWVhbHNvLmF0dGxpc3QgLS0+CjwhLS0gZW5kIG9mIHNlZXNlZWFsc28ubW9kdWxlIC0tPgo8IS0tIGVuZCBvZiBpbmRleHRlcm0uY29udGVudC5tb2R1bGUgLS0+CjwhLS0gRW5kIG9mIERvY0Jvb2sgWE1MIGluZm9ybWF0aW9uIHBvb2wgbW9kdWxlIFY0LjQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo=
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgWE1MIERURCBWNC40IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkb2Nib29reC5kdGQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDQgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogIFNlZSBhbHNvIGh0dHA6Ly9kb2Nib29rLm9yZy9zcGVjcy8KICAKICAkSWQ6IGRvY2Jvb2t4LmR0ZCx2IDEuMzEgMjAwNS8wMS8yNyAxMzo1MjozNiBud2Fsc2ggRXhwICQKICAKICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5IGFuZCBkaXN0cmlidXRlIHRoZSBEb2NCb29rIFhNTCBEVEQKICBhbmQgaXRzIGFjY29tcGFueWluZyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUKICBpcyBoZXJlYnkgZ3JhbnRlZCBpbiBwZXJwZXR1aXR5LCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQKICBub3RpY2UgYW5kIHRoaXMgcGFyYWdyYXBoIGFwcGVhciBpbiBhbGwgY29waWVzLiAgVGhlIGNvcHlyaWdodAogIGhvbGRlcnMgbWFrZSBubyByZXByZXNlbnRhdGlvbiBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhlIERURCBmb3IKICBhbnkgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzZWQgb3IgaW1wbGllZAogIHdhcnJhbnR5LgogIAogIElmIHlvdSBtb2RpZnkgdGhlIERvY0Jvb2sgRFREIGluIGFueSB3YXksIGV4Y2VwdCBmb3IgZGVjbGFyaW5nIGFuZAogIHJlZmVyZW5jaW5nIGFkZGl0aW9uYWwgc2V0cyBvZiBnZW5lcmFsIGVudGl0aWVzIGFuZCBkZWNsYXJpbmcKICBhZGRpdGlvbmFsIG5vdGF0aW9ucywgbGFiZWwgeW91ciBEVEQgYXMgYSB2YXJpYW50IG9mIERvY0Jvb2suICBTZWUKICB0aGUgbWFpbnRlbmFuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAKICBQbGVhc2UgZGlyZWN0IGFsbCBxdWVzdGlvbnMsIGJ1ZyByZXBvcnRzLCBvciBzdWdnZXN0aW9ucyBmb3IKICBjaGFuZ2VzIHRvIHRoZSBkb2Nib29rQGxpc3RzLm9hc2lzLW9wZW4ub3JnIG1haWxpbmcgbGlzdC4gRm9yIG1vcmUKICBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay8uCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0KICBUaGlzIGlzIHRoZSBkcml2ZXIgZmlsZSBmb3IgVjQuNCBvZiB0aGUgRG9jQm9vayBEVEQuCiAgUGxlYXNlIHVzZSB0aGUgZm9sbG93aW5nIGZvcm1hbCBwdWJsaWMgaWRlbnRpZmllciB0byBpZGVudGlmeSBpdDoKICAKICAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC40Ly9FTiIKICAKICBGb3IgZXhhbXBsZSwgaWYgeW91ciBkb2N1bWVudCdzIHRvcC1sZXZlbCBlbGVtZW50IGlzIEJvb2ssIGFuZAogIHlvdSBhcmUgdXNpbmcgRG9jQm9vayBkaXJlY3RseSwgdXNlIHRoZSBGUEkgaW4gdGhlIERPQ1RZUEUKICBkZWNsYXJhdGlvbjoKICAKICA8IURPQ1RZUEUgYm9vayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuNC8vRU4iCiAgICAgICAgICAgICAgICAgImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC40L2RvY2Jvb2t4LmR0ZCIKICAgICAgICAgICAgICAgICBbLi4uXT4KICAKICBPciwgaWYgeW91IGhhdmUgYSBoaWdoZXItbGV2ZWwgZHJpdmVyIGZpbGUgdGhhdCBjdXN0b21pemVzIERvY0Jvb2ssCiAgdXNlIHRoZSBGUEkgaW4gdGhlIHBhcmFtZXRlciBlbnRpdHkgZGVjbGFyYXRpb246CiAgCiAgPCFFTlRJVFkgJSBEb2NCb29rRFREIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC40Ly9FTiIKICAgICAgICAgICAgICJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuNC9kb2Nib29reC5kdGQiPgogICVEb2NCb29rRFREOwogIAogIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlsZWQgaW5mb3JtYXRpb24gb24gdGhlIHBhcmFtZXRlcgogIGVudGl0eSBhbmQgbW9kdWxlIHNjaGVtZSB1c2VkIGluIERvY0Jvb2ssIGN1c3RvbWl6aW5nIERvY0Jvb2sgYW5kCiAgcGxhbm5pbmcgZm9yIGludGVyY2hhbmdlLCBhbmQgY2hhbmdlcyBtYWRlIHNpbmNlIHRoZSBsYXN0IHJlbGVhc2UKICBvZiBEb2NCb29rLgotLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIEVuYWJsZSBTR01MIGZlYXR1cmVzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSBOb3RhdGlvbiBkZWNsYXJhdGlvbnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8eHM6c2NoZW1hIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiPgogIDx4czppbmNsdWRlIHNjaGVtYUxvY2F0aW9uPSJkYm5vdG54LnhzZCIvPgogIDx4czppbmNsdWRlIHNjaGVtYUxvY2F0aW9uPSJkYnBvb2x4LnhzZCIvPgogIDx4czppbmNsdWRlIHNjaGVtYUxvY2F0aW9uPSJkYmhpZXJ4LnhzZCIvPgogIDx4czppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiIHNjaGVtYUxvY2F0aW9uPSJ4bWwueHNkIi8+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gSVNPIGNoYXJhY3RlciBlbnRpdHkgc2V0cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIGV1cm8gc2lnbiwgVSsyMEFDIE5FVyAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBEVEQgbW9kdWxlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gSW5mb3JtYXRpb24gcG9vbCAuLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFJlZGVjbGFyYXRpb24gcGxhY2Vob2xkZXIgLi4uLi4gLS0+CiAgPCEtLSBEb2N1bWVudCBoaWVyYXJjaHkgLi4uLi4uLi4uLi4uIC0tPgo8L3hzOnNjaGVtYT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIE90aGVyIGdlbmVyYWwgZW50aXRpZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRW5kIG9mIERvY0Jvb2sgWE1MIERURCBWNC40IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo=
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgWE1MIEhUTUwgVGFibGUgTW9kdWxlIFY0LjQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBodG1sdGJseC5tb2QgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAyMDAzLCAyMDA0IEFyYm9yVGV4dCwgSW5jLiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLAogIEluYy4sIGFuZCB0aGUgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogaHRtbHRibHgubW9kLHYgMS4yMyAyMDA1LzAxLzI3IDEzOjUyOjAwIG53YWxzaCBFeHAgJAogIAogIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnkgYW5kIGRpc3RyaWJ1dGUgdGhlIERvY0Jvb2sgWE1MIERURAogIGFuZCBpdHMgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZQogIGlzIGhlcmVieSBncmFudGVkIGluIHBlcnBldHVpdHksIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodAogIG5vdGljZSBhbmQgdGhpcyBwYXJhZ3JhcGggYXBwZWFyIGluIGFsbCBjb3BpZXMuICBUaGUgY29weXJpZ2h0CiAgaG9sZGVycyBtYWtlIG5vIHJlcHJlc2VudGF0aW9uIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGUgRFREIGZvcgogIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3NlZCBvciBpbXBsaWVkCiAgd2FycmFudHkuCiAgCiAgSWYgeW91IG1vZGlmeSB0aGUgRG9jQm9vayBYTUwgRFREIGluIGFueSB3YXksIGV4Y2VwdCBmb3IgZGVjbGFyaW5nIGFuZAogIHJlZmVyZW5jaW5nIGFkZGl0aW9uYWwgc2V0cyBvZiBnZW5lcmFsIGVudGl0aWVzIGFuZCBkZWNsYXJpbmcKICBhZGRpdGlvbmFsIG5vdGF0aW9ucywgbGFiZWwgeW91ciBEVEQgYXMgYSB2YXJpYW50IG9mIERvY0Jvb2suICBTZWUKICB0aGUgbWFpbnRlbmFuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAKICBQbGVhc2UgZGlyZWN0IGFsbCBxdWVzdGlvbnMsIGJ1ZyByZXBvcnRzLCBvciBzdWdnZXN0aW9ucyBmb3IKICBjaGFuZ2VzIHRvIHRoZSBkb2Nib29rQGxpc3RzLm9hc2lzLW9wZW4ub3JnIG1haWxpbmcgbGlzdC4gRm9yIG1vcmUKICBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay8uCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0KICBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgZGVmaW5pdGlvbnMgZm9yIGVsZW1lbnRzIHRoYXQgYXJlCiAgaXNvbW9ycGhpYyB0byB0aGUgSFRNTCBlbGVtZW50cy4gT25lIGNvdWxkIGFyZ3VlIHdlIHNob3VsZAogIGluc3RlYWQgaGF2ZSBiYXNlZCBvdXJzZWx2ZXMgb24gdGhlIFhIVE1MIFRhYmxlIE1vZHVsZSwgYnV0IHRoZQogIEhUTUwgb25lIGlzIG1vcmUgbGlrZSB3aGF0IGJyb3dzZXJzIGFyZSBsaWtlbHkgdG8gYWNjZXB0IHRvZGF5CiAgYW5kIHVzZXJzIGFyZSBsaWtlbHkgdG8gdXNlLgogIAogIFRoaXMgbW9kdWxlIGhhcyBiZWVuIGRldmVsb3BlZCBmb3IgdXNlIHdpdGggdGhlIERvY0Jvb2sgVjQuNAogICJ1bmlvbiB0YWJsZSBtb2RlbCIgaW4gd2hpY2ggZWxlbWVudHMgYW5kIGF0dGxpc3RzIGNvbW1vbiB0byBib3RoCiAgbW9kZWxzIGFyZSBkZWZpbmVkIChhcyB0aGUgdW5pb24pIGluIHRoZSBDQUxTIHRhYmxlIG1vZHVsZSBieQogIHNldHRpbmcgdmFyaW91cyBwYXJhbWV0ZXIgZW50aXRpZXMgYXBwcm9wcmlhdGVseSBpbiB0aGlzIGZpbGUuCiAgCiAgSW4gRFREIGRyaXZlciBmaWxlcyByZWZlcnJpbmcgdG8gdGhpcyBtb2R1bGUsIHBsZWFzZSB1c2UgYW4gZW50aXR5CiAgZGVjbGFyYXRpb24gdGhhdCB1c2VzIHRoZSBwdWJsaWMgaWRlbnRpZmllciBzaG93biBiZWxvdzoKICAKICA8IUVOVElUWSAlIGh0bWx0YmwgUFVCTElDCiAgIi0vL09BU0lTLy9FTEVNRU5UUyBEb2NCb29rIFhNTCBIVE1MIFRhYmxlcyBWNC40Ly9FTiIKICAiaHRtbHRibHgubW9kIj4KICAlaHRtbHRibDsKICAKICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIHRoZSBwYXJhbWV0ZXIKICBlbnRpdHkgYW5kIG1vZHVsZSBzY2hlbWUgdXNlZCBpbiBEb2NCb29rLCBjdXN0b21pemluZyBEb2NCb29rIGFuZAogIHBsYW5uaW5nIGZvciBpbnRlcmNoYW5nZSwgYW5kIGNoYW5nZXMgbWFkZSBzaW5jZSB0aGUgbGFzdCByZWxlYXNlCiAgb2YgRG9jQm9vay4KLS0+CjwhLS0gPT09PT09PT09PT09PT09PT09PT09PT0gWEhUTUwgVGFibGVzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4KICA8eHM6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiBzY2hlbWFMb2NhdGlvbj0ieG1sLnhzZCIvPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJodG1sLmNvcmVhdHRycyI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlkIiB0eXBlPSJ4czpJRCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdHlsZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aXRsZSIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBEb2VzIG5vdCBjb250YWluIGxhbmcgb3IgZGlyIGJlY2F1c2UgdGhleSBhcmUgaW4gJWNvbW1vbi5hdHRyaWJzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpMThuIj4KICAgIDx4czphdHRyaWJ1dGUgcmVmPSJ4bWw6bGFuZyIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImV2ZW50cyI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uY2xpY2siLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25kYmxjbGljayIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbm1vdXNlZG93biIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbm1vdXNldXAiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25tb3VzZW92ZXIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25tb3VzZW1vdmUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25tb3VzZW91dCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmtleXByZXNzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ua2V5ZG93biIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmtleXVwIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXR0cnMiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaHRtbC5jb3JlYXR0cnMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImkxOG4iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImV2ZW50cyIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNlbGxoYWxpZ24iPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJpZ2h0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imp1c3RpZnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFyIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXJvZmYiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjZWxsdmFsaWduIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1pZGRsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYmFzZWxpbmUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbGdyb3VwIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbGdyb3VwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czplbGVtZW50IG5hbWU9ImNvbCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0ciI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRkIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0aCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJ0YWJlbnRyeS5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRhYmxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbHRhYmxlIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0aC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0ZCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJ0YWJlbnRyeS5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRhYmxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbHRhYmxlIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29sZ3JvdXAuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdHRycyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGFuIiBkZWZhdWx0PSIxIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndpZHRoIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjZWxsaGFsaWduIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjZWxsdmFsaWduIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29sLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXR0cnMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3BhbiIgZGVmYXVsdD0iMSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aWR0aCIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2VsbGhhbGlnbiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2VsbHZhbGlnbiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXR0cnMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNlbGxoYWxpZ24iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNlbGx2YWxpZ24iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmdjb2xvciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRoLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXR0cnMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWJiciIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJheGlzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhlYWRlcnMiIHR5cGU9InhzOklEUkVGUyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzY29wZSI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJvdyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb2wiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icm93Z3JvdXAiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29sZ3JvdXAiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm93c3BhbiIgZGVmYXVsdD0iMSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzcGFuIiBkZWZhdWx0PSIxIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjZWxsaGFsaWduIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjZWxsdmFsaWduIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5vd3JhcCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vd3JhcCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiZ2NvbG9yIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndpZHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhlaWdodCIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXR0cnMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWJiciIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJheGlzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhlYWRlcnMiIHR5cGU9InhzOklEUkVGUyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzY29wZSI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJvdyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb2wiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icm93Z3JvdXAiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29sZ3JvdXAiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm93c3BhbiIgZGVmYXVsdD0iMSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzcGFuIiBkZWZhdWx0PSIxIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjZWxsaGFsaWduIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjZWxsdmFsaWduIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5vd3JhcCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vd3JhcCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiZ2NvbG9yIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndpZHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhlaWdodCIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CiAgPCEtLQogICAgU2V0IHVwIHRvIHJlYWQgaW4gdGhlIENBTFMgbW9kZWwgY29uZmlndXJlZCB0bwogICAgbWVyZ2Ugd2l0aCB0aGUgWEhUTUwgdGFibGUgbW9kZWwKICAtLT4KICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGFibGVzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIEFkZCBsYWJlbCBhbmQgcm9sZSBhdHRyaWJ1dGVzIHRvIHRhYmxlIGFuZCBpbmZvcm1hbHRhYmxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJib2R5YXR0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmxvYXRzdHlsZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3doZWFkZXIiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJmaXJzdGNvbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3Jvd2hlYWRlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBBZGQgY29tbW9uIGF0dHJpYnV0ZXMgdG8gVGFibGUsIFRHcm91cCwgVEJvZHksIFRIZWFkLCBURm9vdCwgUm93LCAKICAgIEVudHJ5VGJsLCBhbmQgRW50cnkgKGFuZCBJbmZvcm1hbFRhYmxlIGVsZW1lbnQpLgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN1ciI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRpdGxlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpMThuIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJldmVudHMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRhYmxlcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbW1vbi50YWJsZS5hdHRyaWJzIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJvZHlhdHQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3VyIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIENvbnRlbnQgbW9kZWwgZm9yIFRhYmxlICh0aGF0IGFsc28gYWxsb3dzIEhUTUwgdGFibGVzKSAtLT4KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGJsLnRhYmxlLm1kbCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0ZXh0b2JqZWN0Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImdyYXBoaWMiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1lZGlhb2JqZWN0Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0Z3JvdXAiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY2FwdGlvbiIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb2xncm91cCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aGVhZCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0Zm9vdCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0Ym9keSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idHIiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Y29tcGxleFR5cGU+CiAgPHhzOmdyb3VwIG5hbWU9ImluZm9ybWFsLnRibC50YWJsZS5tZGwiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGV4dG9iamVjdCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJncmFwaGljIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtZWRpYW9iamVjdCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGdyb3VwIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb2wiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sZ3JvdXAiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGhlYWQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGZvb3QiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGJvZHkiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRyIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDwhLS0gQXR0cmlidXRlcyBmb3IgVGFibGUgKGluY2x1ZGluZyBIVE1MIG9uZXMpIC0tPgogIDwhLS0gTi5CLiBydWxlcyA9IChub25lIHwgZ3JvdXBzIHwgcm93cyB8IGNvbHMgfCBhbGwpIGJ1dCBpdCBjYW4ndCBiZSBzcGVjJ2QgLS0+CiAgPCEtLSB0aGF0IHdheSBiZWNhdXNlICdhbGwnIGFscmVhZHkgb2NjdXJzIGluIGEgZGlmZmVyZW50IGVudW1lcmF0aW9uIGluIC0tPgogIDwhLS0gQ0FMUyB0YWJsZXMgKGZyYW1lKS4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRibC50YWJsZS5hdHQiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0YWJzdHlsZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0b2NlbnRyeSIgdHlwZT0ieWVzb3Juby5hdHR2YWxzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNob3J0ZW50cnkiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcmllbnQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwb3J0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxhbmQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGd3aWRlIiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3VtbWFyeSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aWR0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icnVsZXMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2VsbHNwYWNpbmciLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2VsbHBhZGRpbmciLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsZWZ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNlbnRlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaWdodCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiZ2NvbG9yIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJ0YmwuZnJhbWUuYXR0dmFsIj4KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idm9pZCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImFib3ZlIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYmVsb3ciLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJoc2lkZXMiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaHMiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaHMiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ2c2lkZXMiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3giLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3JkZXIiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3Bib3QiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhbGwiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzaWRlcyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vbmUiLz4KICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgPC94czpzaW1wbGVUeXBlPgogIDwhLS0gQWxsb3cgZWl0aGVyIG9iamVjdHMgb3IgaW5saW5lczsgYmV3YXJlIG9mIFJFcyBiZXR3ZWVuIGVsZW1lbnRzLiAtLT4KICA8eHM6Z3JvdXAgbmFtZT0idGJsLmVudHJ5Lm1kbCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6Z3JvdXAgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czpncm91cCByZWY9InRhYmVudHJ5Lm1peCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8IS0tCiAgICB0aGVhZCwgdGZvb3QsIGFuZCB0Ym9keSBhcmUgZGVmaW5lZCBpbiBib3RoIHRhYmxlIG1vZGVscywKICAgIHNvIHdlIHNldCB1cCBwYXJhbWV0ZXIgZW50aXRpZXMgdG8gZGVmaW5lIHVuaW9uIG1vZGVscyBmb3IgdGhlbQogIC0tPgogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0YmwuaGRmdC5tZGwiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idHIiLz4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sc3BlYyIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJvdyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgPC94czpjaG9pY2U+CiAgPC94czpjb21wbGV4VHlwZT4KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGJsLnRib2R5Lm1kbCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0ciIvPgogICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyb3ciLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Y29tcGxleFR5cGU+CjwveHM6c2NoZW1hPgo8IS0tIEVuZCBvZiBEb2NCb29rIFhNTCBIVE1MIFRhYmxlIE1vZHVsZSBWNC40IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4K
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSI+CiAgPHhzOmltcG9ydCBzY2hlbWFMb2NhdGlvbj0iZG9jYm9vay54c2QiLz4KICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhc2UiLz4KICA8eHM6YXR0cmlidXRlIG5hbWU9InNwYWNlIj4KICAgIDx4czpzaW1wbGVUeXBlPgogICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icHJlc2VydmUiLz4KICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgIDwveHM6c2ltcGxlVHlwZT4KICA8L3hzOmF0dHJpYnV0ZT4KICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhbmciIHR5cGU9InhzOk5NVE9LRU4iLz4KPC94czpzY2hlbWE+Cg==
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgQ0FMUyBUYWJsZSBNb2RlbCBWNC41IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBjYWxzdGJseC5tb2QgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDIgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogIFRoaXMgRFREIGlzIGJhc2VkIG9uIHRoZSBDQUxTIFRhYmxlIE1vZGVsCiAgUFVCTElDICItLy9VU0EtRE9ELy9EVEQgVGFibGUgTW9kZWwgOTUxMDEwLy9FTiIKICAKICAkSWQ6IGNhbHN0Ymx4LmR0ZCA2MzQwIDIwMDYtMTAtMDMgMTM6MjM6MjRaIG53YWxzaCAkCiAgCiAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSBhbmQgZGlzdHJpYnV0ZSB0aGUgRG9jQm9vayBEVEQKICBhbmQgaXRzIGFjY29tcGFueWluZyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUKICBpcyBoZXJlYnkgZ3JhbnRlZCBpbiBwZXJwZXR1aXR5LCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQKICBub3RpY2UgYW5kIHRoaXMgcGFyYWdyYXBoIGFwcGVhciBpbiBhbGwgY29waWVzLiAgVGhlIGNvcHlyaWdodAogIGhvbGRlcnMgbWFrZSBubyByZXByZXNlbnRhdGlvbiBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhlIERURCBmb3IKICBhbnkgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzZWQgb3IgaW1wbGllZAogIHdhcnJhbnR5LgogIAogIElmIHlvdSBtb2RpZnkgdGhlIERvY0Jvb2sgRFREIGluIGFueSB3YXksIGV4Y2VwdCBmb3IgZGVjbGFyaW5nIGFuZAogIHJlZmVyZW5jaW5nIGFkZGl0aW9uYWwgc2V0cyBvZiBnZW5lcmFsIGVudGl0aWVzIGFuZCBkZWNsYXJpbmcKICBhZGRpdGlvbmFsIG5vdGF0aW9ucywgbGFiZWwgeW91ciBEVEQgYXMgYSB2YXJpYW50IG9mIERvY0Jvb2suICBTZWUKICB0aGUgbWFpbnRlbmFuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAKICBQbGVhc2UgZGlyZWN0IGFsbCBxdWVzdGlvbnMsIGJ1ZyByZXBvcnRzLCBvciBzdWdnZXN0aW9ucyBmb3IKICBjaGFuZ2VzIHRvIHRoZSBkb2Nib29rQGxpc3RzLm9hc2lzLW9wZW4ub3JnIG1haWxpbmcgbGlzdC4gRm9yIG1vcmUKICBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay8uCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0KICBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBDQUxTIFRhYmxlIE1vZGVsCiAgY29udmVydGVkIHRvIFhNTC4gSXQgaGFzIGJlZW4gbW9kaWZpZWQgc2xpZ2h0bHkgZm9yIHVzZSBpbiB0aGUKICBjb21iaW5lZCBIVE1ML0NBTFMgbW9kZWxzIHN1cHBvcnRlZCBieSBEb2NCb29rIFY0LjUuCi0tPgo8IS0tCiAgVGhlc2UgZGVmaW5pdGlvbnMgYXJlIG5vdCBkaXJlY3RseSByZWxhdGVkIHRvIHRoZSB0YWJsZSBtb2RlbCwgYnV0IGFyZQogIHVzZWQgaW4gdGhlIGRlZmF1bHQgQ0FMUyB0YWJsZSBtb2RlbCBhbmQgYXJlIHVzdWFsbHkgZGVmaW5lZCBlbHNld2hlcmUKICAoYW5kIHByaW9yIHRvIHRoZSBpbmNsdXNpb24gb2YgdGhpcyB0YWJsZSBtb2R1bGUpIGluIGEgQ0FMUyBEVEQuCi0tPgo8IS0tCiAgbm8gaWYgemVybyhzKSwKICB5ZXMgaWYgYW55IG90aGVyIGRpZ2l0cyB2YWx1ZQotLT4KPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4KICA8eHM6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiBzY2hlbWFMb2NhdGlvbj0ieG1sLnhzZCIvPgogIDx4czpzaW1wbGVUeXBlIG5hbWU9Inllc29ybm8iPgogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyIvPgogIDwveHM6c2ltcGxlVHlwZT4KICA8eHM6Z3JvdXAgbmFtZT0idGl0bGVzIj4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBkZWZhdWx0IGZvciB1c2UgaW4gZW50cnkgY29udGVudCAtLT4KICA8IS0tCiAgICBUaGUgcGFyYW1ldGVyIGVudGl0aWVzIGFzIGRlZmluZWQgYmVsb3cgcHJvdmlkZSB0aGUgQ0FMUyB0YWJsZSBtb2RlbAogICAgYXMgcHVibGlzaGVkIChhcyBwYXJ0IG9mIHRoZSBFeGFtcGxlIERURCkgaW4gTUlMLUhEQkstMjgwMDEuCiAgICAKICAgIFRoZXNlIGZvbGxvd2luZyBkZWNsYXJhdGlvbnMgcHJvdmlkZSB0aGUgQ0FMUy1jb21wbGlhbnQgZGVmYXVsdCBkZWZpbml0aW9ucwogICAgZm9yIHRoZXNlIGVudGl0aWVzLiAgSG93ZXZlciwgdGhlc2UgZW50aXRpZXMgY2FuIGFuZCBzaG91bGQgYmUgcmVkZWZpbmVkCiAgICAoYnkgZ2l2aW5nIHRoZSBhcHByb3ByaWF0ZSBwYXJhbWV0ZXIgZW50aXR5IGRlY2xhcmF0aW9uKHMpIHByaW9yIHRvIHRoZQogICAgcmVmZXJlbmNlIHRvIHRoaXMgVGFibGUgTW9kZWwgZGVjbGFyYXRpb24gc2V0IGVudGl0eSkgdG8gZml0IHRoZSBuZWVkcwogICAgb2YgdGhlIGN1cnJlbnQgYXBwbGljYXRpb24uCiAgLS0+CiAgPHhzOmdyb3VwIG5hbWU9InRibC50YWJsZS10aXRsZXMubWRsIj4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmdyb3VwIHJlZj0idGl0bGVzIi8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InRibC50YWJsZS1tYWluLm1kbCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0Z3JvdXAiLz4KICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ3JhcGhpYyIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGJsLnRncm91cC5tZGwiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbHNwZWMiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzcGFuc3BlYyIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGhlYWQiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRmb290Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0idGJvZHkiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpjb21wbGV4VHlwZT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGJsLnRncm91cC5hdHQiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0Z3JvdXBzdHlsZSIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRibC5yb3cubWRsIj4KICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImVudHJ5Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZW50cnl0YmwiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Y29tcGxleFR5cGU+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRibC5lbnRyeXRibC5tZGwiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbHNwZWMiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzcGFuc3BlYyIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGhlYWQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0Ym9keSIvPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmNvbXBsZXhUeXBlPgogIDwhLS0gPT09PT0gIEVsZW1lbnQgYW5kIGF0dHJpYnV0ZSBkZWNsYXJhdGlvbnMgZm9sbG93LiA9PT09PSAtLT4KICA8IS0tIGRvYzpBIGZvcm1hbCB0YWJsZSBpbiBhIGRvY3VtZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0YWJsZSIgc3Vic3RpdHV0aW9uR3JvdXA9ImZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjb21wbGV4Q29udGVudD4KICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRibC50YWJsZS5tZGwiPgogICAgICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGFibGUuYXR0bGlzdCIvPgogICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICA8L3hzOmNvbXBsZXhDb250ZW50PgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRhYmxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmcmFtZSIgdHlwZT0idGJsLmZyYW1lLmF0dHZhbCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm93c2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YmwudGFibGUuYXR0Ii8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJib2R5YXR0Ii8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN1ciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSB3cmFwcGVyIGZvciB0aGUgbWFpbiBjb250ZW50IG9mIGEgdGFibGUsIG9yIHBhcnQgb2YgYSB0YWJsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGdyb3VwIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNvbXBsZXhDb250ZW50PgogICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idGJsLnRncm91cC5tZGwiPgogICAgICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGdyb3VwLmF0dGxpc3QiLz4KICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgPC94czpjb21wbGV4Q29udGVudD4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0Z3JvdXAuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHMiIHVzZT0icmVxdWlyZWQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRibC50Z3JvdXAuYXR0Ii8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHNlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3dzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsZWZ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJpZ2h0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNlbnRlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJqdXN0aWZ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNoYXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hhciIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFyb2ZmIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN1ciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6U3BlY2lmaWNhdGlvbnMgZm9yIGEgY29sdW1uIGluIGEgdGFibGUuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNvbHNwZWMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb2xzcGVjLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2xzcGVjLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xudW0iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sbmFtZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2x3aWR0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm93c2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGVmdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaWdodCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZW50ZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ianVzdGlmeSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjaGFyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hhcm9mZiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6Rm9ybWF0dGluZyBpbmZvcm1hdGlvbiBmb3IgYSBzcGFubmVkIGNvbHVtbiBpbiBhIHRhYmxlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzcGFuc3BlYyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNwYW5zcGVjLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzcGFuc3BlYy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZXN0IiB1c2U9InJlcXVpcmVkIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWVlbmQiIHVzZT0icmVxdWlyZWQiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3Bhbm5hbWUiIHVzZT0icmVxdWlyZWQiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sc2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvd3NlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imp1c3RpZnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFyIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXJvZmYiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgdGFibGUgaGVhZGVyIGNvbnNpc3Rpbmcgb2Ygb25lIG9yIG1vcmUgcm93cy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGhlYWQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y29tcGxleENvbnRlbnQ+CiAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0YmwuaGRmdC5tZGwiPgogICAgICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGhlYWQuYXR0bGlzdCIvPgogICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICA8L3hzOmNvbXBsZXhDb250ZW50PgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRoZWFkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWlkZGxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgdGFibGUgZm9vdGVyIGNvbnNpc3Rpbmcgb2Ygb25lIG9yIG1vcmUgcm93cy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGZvb3QiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y29tcGxleENvbnRlbnQ+CiAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0YmwuaGRmdC5tZGwiPgogICAgICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGZvb3QuYXR0bGlzdCIvPgogICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICA8L3hzOmNvbXBsZXhDb250ZW50PgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRmb290LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWlkZGxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgd3JhcHBlciBmb3IgdGhlIHJvd3Mgb2YgYSB0YWJsZSBvciBpbmZvcm1hbCB0YWJsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGJvZHkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y29tcGxleENvbnRlbnQ+CiAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0YmwudGJvZHkubWRsIj4KICAgICAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRib2R5LmF0dGxpc3QiLz4KICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgPC94czpjb21wbGV4Q29udGVudD4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0Ym9keS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1pZGRsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3VyIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHJvdyBpbiBhIHRhYmxlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJyb3ciPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y29tcGxleENvbnRlbnQ+CiAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0Ymwucm93Lm1kbCI+CiAgICAgICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb3cuYXR0bGlzdCIvPgogICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICA8L3hzOmNvbXBsZXhDb250ZW50PgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJvdy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm93c2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRvcCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJtaWRkbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYm90dG9tIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN1ciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBzdWJ0YWJsZSBhcHBlYXJpbmcgaW4gcGxhY2Ugb2YgYW4gRW50cnkgaW4gYSB0YWJsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZW50cnl0YmwiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y29tcGxleENvbnRlbnQ+CiAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0YmwuZW50cnl0YmwubWRsIj4KICAgICAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVudHJ5dGJsLmF0dGxpc3QiLz4KICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgPC94czpjb21wbGV4Q29udGVudD4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlbnRyeXRibC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29scyIgdXNlPSJyZXF1aXJlZCIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGJsLnRncm91cC5hdHQiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sbmFtZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGFubmFtZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lc3QiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZWVuZCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm93c2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGVmdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaWdodCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZW50ZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ianVzdGlmeSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjaGFyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hhcm9mZiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgY2VsbCBpbiBhIHRhYmxlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJlbnRyeSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0YmwuZW50cnkubWRsIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlbnRyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sbmFtZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lc3QiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZWVuZCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGFubmFtZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtb3Jlcm93cyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm93c2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGVmdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaWdodCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZW50ZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ianVzdGlmeSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjaGFyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hhcm9mZiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3RhdGUiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1pZGRsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3VyIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KPC94czpzY2hlbWE+CjwhLS0gRW5kIG9mIERvY0Jvb2sgQ0FMUyBUYWJsZSBNb2RlbCBWNC41IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo=
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgZG9jdW1lbnQgaGllcmFyY2h5IG1vZHVsZSBWNC41IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkYmhpZXJ4Lm1vZCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDQgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogZGJoaWVyeC5tb2QgNjM0MCAyMDA2LTEwLTAzIDEzOjIzOjI0WiBud2Fsc2ggJAogIAogIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnkgYW5kIGRpc3RyaWJ1dGUgdGhlIERvY0Jvb2sgRFRECiAgYW5kIGl0cyBhY2NvbXBhbnlpbmcgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlCiAgaXMgaGVyZWJ5IGdyYW50ZWQgaW4gcGVycGV0dWl0eSwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0CiAgbm90aWNlIGFuZCB0aGlzIHBhcmFncmFwaCBhcHBlYXIgaW4gYWxsIGNvcGllcy4gIFRoZSBjb3B5cmlnaHQKICBob2xkZXJzIG1ha2Ugbm8gcmVwcmVzZW50YXRpb24gYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoZSBEVEQgZm9yCiAgYW55IHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzc2VkIG9yIGltcGxpZWQKICB3YXJyYW50eS4KICAKICBJZiB5b3UgbW9kaWZ5IHRoZSBEb2NCb29rIERURCBpbiBhbnkgd2F5LCBleGNlcHQgZm9yIGRlY2xhcmluZyBhbmQKICByZWZlcmVuY2luZyBhZGRpdGlvbmFsIHNldHMgb2YgZ2VuZXJhbCBlbnRpdGllcyBhbmQgZGVjbGFyaW5nCiAgYWRkaXRpb25hbCBub3RhdGlvbnMsIGxhYmVsIHlvdXIgRFREIGFzIGEgdmFyaWFudCBvZiBEb2NCb29rLiAgU2VlCiAgdGhlIG1haW50ZW5hbmNlIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgCiAgUGxlYXNlIGRpcmVjdCBhbGwgcXVlc3Rpb25zLCBidWcgcmVwb3J0cywgb3Igc3VnZ2VzdGlvbnMgZm9yCiAgY2hhbmdlcyB0byB0aGUgZG9jYm9va0BsaXN0cy5vYXNpcy1vcGVuLm9yZyBtYWlsaW5nIGxpc3QuIEZvciBtb3JlCiAgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2svLgotLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tCiAgVGhpcyBtb2R1bGUgY29udGFpbnMgdGhlIGRlZmluaXRpb25zIGZvciB0aGUgb3ZlcmFsbCBkb2N1bWVudAogIGhpZXJhcmNoaWVzIG9mIERvY0Jvb2sgZG9jdW1lbnRzLiAgSXQgY292ZXJzIGNvbXB1dGVyIGRvY3VtZW50YXRpb24KICBtYW51YWxzIGFuZCBtYW51YWwgZnJhZ21lbnRzLCBhcyB3ZWxsIGFzIHJlZmVyZW5jZSBlbnRyaWVzIChzdWNoIGFzCiAgbWFuIHBhZ2VzKSBhbmQgdGVjaG5pY2FsIGpvdXJuYWxzIG9yIGFudGhvbG9naWVzIGNvbnRhaW5pbmcKICBhcnRpY2xlcy4KICAKICBUaGlzIG1vZHVsZSBkZXBlbmRzIG9uIHRoZSBEb2NCb29rIGluZm9ybWF0aW9uIHBvb2wgbW9kdWxlLiAgQWxsCiAgZWxlbWVudHMgYW5kIGVudGl0aWVzIHJlZmVyZW5jZWQgYnV0IG5vdCBkZWZpbmVkIGhlcmUgYXJlIGFzc3VtZWQKICB0byBiZSBkZWZpbmVkIGluIHRoZSBpbmZvcm1hdGlvbiBwb29sIG1vZHVsZS4KICAKICBJbiBEVEQgZHJpdmVyIGZpbGVzIHJlZmVycmluZyB0byB0aGlzIG1vZHVsZSwgcGxlYXNlIHVzZSBhbiBlbnRpdHkKICBkZWNsYXJhdGlvbiB0aGF0IHVzZXMgdGhlIHB1YmxpYyBpZGVudGlmaWVyIHNob3duIGJlbG93OgogIAogIDwhRU5USVRZICUgZGJoaWVyIFBVQkxJQwogICItLy9PQVNJUy8vRUxFTUVOVFMgRG9jQm9vayBEb2N1bWVudCBIaWVyYXJjaHkgVjQuNS8vRU4iCiAgImRiaGllcngubW9kIj4KICAlZGJoaWVyOwogIAogIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlsZWQgaW5mb3JtYXRpb24gb24gdGhlIHBhcmFtZXRlcgogIGVudGl0eSBhbmQgbW9kdWxlIHNjaGVtZSB1c2VkIGluIERvY0Jvb2ssIGN1c3RvbWl6aW5nIERvY0Jvb2sgYW5kCiAgcGxhbm5pbmcgZm9yIGludGVyY2hhbmdlLCBhbmQgY2hhbmdlcyBtYWRlIHNpbmNlIHRoZSBsYXN0IHJlbGVhc2UKICBvZiBEb2NCb29rLgotLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIEVudGl0aWVzIGZvciBtb2R1bGUgaW5jbHVzaW9ucyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSBFbnRpdGllcyBmb3IgZWxlbWVudCBjbGFzc2VzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8eHM6c2NoZW1hIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiPgogIDx4czppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiIHNjaGVtYUxvY2F0aW9uPSJ4bWwueHNkIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXBwZW5kaXguY2xhc3MiIGFic3RyYWN0PSJ0cnVlIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYXBwZW5kaXhpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYm9va2NvbXBvbmVudC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRvY2NoYXAiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJib29rY29tcG9uZW50LmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXBwZW5kaXguYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXJ0aWNsZS5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJkaXYudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJhcnRpY2xlaW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0b2NjaGFwIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJsb3QiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJib29rY29tcG9uZW50LmNvbnRlbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmdyb3VwIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFwcGVuZGl4LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbG9waG9uIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFja25vIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFydGljbGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYm9vay5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJkaXYudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJib29raW5mbyIvPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImRlZGljYXRpb24iLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idG9jIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxvdCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnbG9zc2FyeSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9ncmFwaHkiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icHJlZmFjZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjaGFwdGVyLmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlZmVyZW5jZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJ0Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFydGljbGUuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYXBwZW5kaXguY2xhc3MiLz4KICAgICAgICAgIDx4czpncm91cCByZWY9ImluZGV4LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbG9waG9uIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJvb2suYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2hhcHRlci5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJlZ2lucGFnZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJjaGFwdGVyaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0b2NjaGFwIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYm9va2NvbXBvbmVudC5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNoYXB0ZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmdyb3VwIG5hbWU9ImluZGV4LmNsYXNzIj4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5kZXgiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzZXRpbmRleCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZlbnRyeS5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJlZ2lucGFnZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJyZWZlbnRyeWluZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmbWV0YSIvPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlbWFyayIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZuYW1lZGl2Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJlZnN5bm9wc2lzZGl2Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3QxIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZzZWN0aW9uIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czplbGVtZW50IG5hbWU9InNlY3Rpb24uY2xhc3MiIGFic3RyYWN0PSJ0cnVlIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0aW9uaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkaXZjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdGlvbi5jbGFzcyIvPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdGlvbi5jbGFzcyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czpncm91cCBuYW1lPSJuYXYuY2xhc3MiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0b2MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsb3QiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmRleCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imdsb3NzYXJ5Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvZ3JhcGh5Ii8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDwhLS0gUmVkZWNsYXJhdGlvbiBwbGFjZWhvbGRlciAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tCiAgICBGb3IgcmVkZWNsYXJpbmcgZW50aXRpZXMgdGhhdCBhcmUgZGVjbGFyZWQgYWZ0ZXIgdGhpcyBwb2ludCB3aGlsZQogICAgcmV0YWluaW5nIHRoZWlyIHJlZmVyZW5jZXMgdG8gdGhlIGVudGl0aWVzIHRoYXQgYXJlIGRlY2xhcmVkIGJlZm9yZQogICAgdGhpcyBwb2ludAogIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEVudGl0aWVzIGZvciBlbGVtZW50IG1peHR1cmVzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmdyb3VwIG5hbWU9ImRpdmNvbXBvbmVudC5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWRtb24uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW5vcC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbXBvdW5kLmNsYXNzIi8+CiAgICAgIDx4czpncm91cCByZWY9Imdlbm9iai5jbGFzcyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJkZXNjb2JqLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0icmVmY29tcG9uZW50Lm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29tcG91bmQuY2xhc3MiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZ2Vub2JqLmNsYXNzIi8+CiAgICAgIDx4czpncm91cCByZWY9ImRlc2NvYmouY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJpbmRleGRpdmNvbXBvbmVudC5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpdGVtaXplZGxpc3QiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvcmRlcmVkbGlzdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InZhcmlhYmxlbGlzdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InNpbXBsZWxpc3QiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW5vcC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFuY2hvciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InJlbWFyayIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0icmVmbmFtZS5jaGFyLm1peCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0icGFydGNvbnRlbnQubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYXBwZW5kaXguY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjaGFwdGVyLmNsYXNzIi8+CiAgICAgIDx4czpncm91cCByZWY9Im5hdi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFydGljbGUuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwcmVmYWNlIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZWZlcmVuY2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InJlZmlubGluZS5jaGFyLm1peCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InhyZWYuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZ2VuLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGVjaC5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYmFzZS5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJkb2NpbmZvLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJvdGhlci5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InJlZmNsYXNzLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImFwcGxpY2F0aW9uIi8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBSZWRlY2xhcmF0aW9uIHBsYWNlaG9sZGVyIDIgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0KICAgIEZvciByZWRlY2xhcmluZyBlbnRpdGllcyB0aGF0IGFyZSBkZWNsYXJlZCBhZnRlciB0aGlzIHBvaW50IHdoaWxlCiAgICByZXRhaW5pbmcgdGhlaXIgcmVmZXJlbmNlcyB0byB0aGUgZW50aXRpZXMgdGhhdCBhcmUgZGVjbGFyZWQgYmVmb3JlCiAgICB0aGlzIHBvaW50CiAgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gRW50aXRpZXMgZm9yIGNvbnRlbnQgbW9kZWxzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6Z3JvdXAgbmFtZT0iZGl2LnRpdGxlLmNvbnRlbnQiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9InRpdGxlIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzdWJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGVhYmJyZXYiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iYm9va2NvbXBvbmVudC50aXRsZS5jb250ZW50Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic3VidGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlYWJicmV2Ii8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InNlY3QudGl0bGUuY29udGVudCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0idGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InN1YnRpdGxlIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZWFiYnJldiIvPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJyZWZzZWN0LnRpdGxlLmNvbnRlbnQiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9InRpdGxlIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzdWJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGVhYmJyZXYiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iYm9va2NvbXBvbmVudC5jb250ZW50Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZGl2Y29tcG9uZW50Lm1peCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3QxIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdGlvbi5jbGFzcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3QxIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdGlvbi5jbGFzcyIvPgogICAgICA8L3hzOmNob2ljZT4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gU2V0IGFuZCBTZXRJbmZvIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGNvbGxlY3Rpb24gb2YgYm9va3MuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNldCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImRpdi50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNldGluZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idG9jIi8+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNldCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJib29rLmNsYXNzIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNldGluZGV4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNldC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZXQuZWxlbWVudCAtLT4KICA8IS0tIEZQSTogU0dNTCBmb3JtYWwgcHVibGljIGlkZW50aWZpZXIgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZnBpIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNldC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNldGluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOk1ldGEtaW5mb3JtYXRpb24gZm9yIGEgU2V0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZXRpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2V0aW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZXRpbmZvLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgQ29udGVudHM6IElEcyBvZiB0aGUgVG9DLCBCb29rcywgYW5kIFNldEluZGV4IHRoYXQgY29tcHJpc2UKICAgIHRoZSBzZXQsIGluIHRoZSBvcmRlciBvZiB0aGVpciBhcHBlYXJhbmNlCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNldGluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRlbnRzIiB0eXBlPSJ4czpJRFJFRlMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNldGluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNldGluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZXRpbmZvLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBzZXQuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gQm9vayBhbmQgQm9va0luZm8gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYm9vay5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBib29rLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJib29rIiBzdWJzdGl0dXRpb25Hcm91cD0iYm9vay5jbGFzcyIvPgogIDwhLS0gZW5kIG9mIGJvb2suZWxlbWVudCAtLT4KICA8IS0tIEZQSTogU0dNTCBmb3JtYWwgcHVibGljIGlkZW50aWZpZXIgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJvb2suYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZwaSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJib29rLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBib29rLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYm9vay5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJvb2tpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpNZXRhLWluZm9ybWF0aW9uIGZvciBhIEJvb2suIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImJvb2tpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYm9va2luZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYm9va2luZm8uZWxlbWVudCAtLT4KICA8IS0tCiAgICBDb250ZW50czogSURzIG9mIHRoZSBUb0MsIExvVHMsIFByZWZhY2VzLCBQYXJ0cywgQ2hhcHRlcnMsCiAgICBBcHBlbmRpeGVzLCBSZWZlcmVuY2VzLCBHTG9zc2FyeSwgQmlibGlvZ3JhcGh5LCBhbmQgaW5kZXhlcwogICAgY29tcHJpc2luZyB0aGUgQm9vaywgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIGFwcGVhcmFuY2UKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYm9va2luZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRlbnRzIiB0eXBlPSJ4czpJRFJFRlMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJvb2tpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBib29raW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJvb2tpbmZvLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBib29rLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIERlZGljYXRpb24sIFRvQywgYW5kIExvVCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImRlZGljYXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgd3JhcHBlciBmb3IgdGhlIGRlZGljYXRpb24gc2VjdGlvbiBvZiBhIGJvb2suIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImRlZGljYXRpb24iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibGVnYWxub3RpY2UubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRlZGljYXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZGVkaWNhdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJkZWRpY2F0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZGVkaWNhdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZGVkaWNhdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGRlZGljYXRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2xvcGhvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGV4dCBhdCB0aGUgYmFjayBvZiBhIGJvb2sgZGVzY3JpYmluZyBmYWN0cyBhYm91dCBpdHMgcHJvZHVjdGlvbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29sb3Bob24iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGV4dG9iamVjdC5taXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29sb3Bob24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29sb3Bob24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29sb3Bob24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb2xvcGhvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29sb3Bob24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb2xvcGhvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvYy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSB0YWJsZSBvZiBjb250ZW50cy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jZnJvbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0b2NwYXJ0Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRvY2NoYXAiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2JhY2siLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRvYy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2MuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2MuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2MubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2Nmcm9udC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gZW50cnkgaW4gYSB0YWJsZSBvZiBjb250ZW50cyBmb3IgYSBmcm9udCBtYXR0ZXIgY29tcG9uZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0b2Nmcm9udCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2Zyb250LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRvY2Zyb250LmVsZW1lbnQgLS0+CiAgPCEtLSB0byBlbGVtZW50IHRoYXQgdGhpcyBlbnRyeSByZXByZXNlbnRzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2Nmcm9udC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhZ2VudW0uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2Nmcm9udC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdG9jZnJvbnQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2Nmcm9udC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2VudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGNvbXBvbmVudCB0aXRsZSBpbiBhIHRhYmxlIG9mIGNvbnRlbnRzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0b2NlbnRyeSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2VudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRvY2VudHJ5LmVsZW1lbnQgLS0+CiAgPCEtLSB0byBlbGVtZW50IHRoYXQgdGhpcyBlbnRyeSByZXByZXNlbnRzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NlbnRyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmQuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRvY2VudHJ5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9jZW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NwYXJ0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBbiBlbnRyeSBpbiBhIHRhYmxlIG9mIGNvbnRlbnRzIGZvciBhIHBhcnQgb2YgYSBib29rLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0b2NwYXJ0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2VudHJ5Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NjaGFwIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY3BhcnQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdG9jcGFydC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NwYXJ0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jcGFydC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdG9jcGFydC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRvY3BhcnQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NjaGFwLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBbiBlbnRyeSBpbiBhIHRhYmxlIG9mIGNvbnRlbnRzIGZvciBhIGNvbXBvbmVudCBpbiB0aGUgYm9keSBvZiBhIGRvY3VtZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0b2NjaGFwIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2VudHJ5Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NsZXZlbDEiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jY2hhcC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NjaGFwLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2NoYXAuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2NoYXAucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRvY2NoYXAuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NjaGFwLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWwxLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHRvcC1sZXZlbCBlbnRyeSB3aXRoaW4gYSB0YWJsZSBvZiBjb250ZW50cyBlbnRyeSBmb3IgYSBjaGFwdGVyLWxpa2UgY29tcG9uZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0b2NsZXZlbDEiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jZW50cnkiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2xldmVsMiIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NsZXZlbDEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdG9jbGV2ZWwxLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2xldmVsMS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsMS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdG9jbGV2ZWwxLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9jbGV2ZWwxLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWwyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHNlY29uZC1sZXZlbCBlbnRyeSB3aXRoaW4gYSB0YWJsZSBvZiBjb250ZW50cyBlbnRyeSBmb3IgYSBjaGFwdGVyLWxpa2UgY29tcG9uZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0b2NsZXZlbDIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jZW50cnkiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2xldmVsMyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NsZXZlbDIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdG9jbGV2ZWwyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2xldmVsMi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsMi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdG9jbGV2ZWwyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9jbGV2ZWwyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWwzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHRoaXJkLWxldmVsIGVudHJ5IHdpdGhpbiBhIHRhYmxlIG9mIGNvbnRlbnRzIGVudHJ5IGZvciBhIGNoYXB0ZXItbGlrZSBjb21wb25lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InRvY2xldmVsMyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NlbnRyeSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jbGV2ZWw0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsMy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWwzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWwzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgZm91cnRoLWxldmVsIGVudHJ5IHdpdGhpbiBhIHRhYmxlIG9mIGNvbnRlbnRzIGVudHJ5IGZvciBhIGNoYXB0ZXItbGlrZSBjb21wb25lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InRvY2xldmVsNCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NlbnRyeSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jbGV2ZWw1Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsNC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWw0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWw0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgZmlmdGgtbGV2ZWwgZW50cnkgd2l0aGluIGEgdGFibGUgb2YgY29udGVudHMgZW50cnkgZm9yIGEgY2hhcHRlci1saWtlIGNvbXBvbmVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jbGV2ZWw1Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2VudHJ5Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsNS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWw1LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWw1LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NiYWNrLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBbiBlbnRyeSBpbiBhIHRhYmxlIG9mIGNvbnRlbnRzIGZvciBhIGJhY2sgbWF0dGVyIGNvbXBvbmVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jYmFjayI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2JhY2suYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdG9jYmFjay5lbGVtZW50IC0tPgogIDwhLS0gdG8gZWxlbWVudCB0aGF0IHRoaXMgZW50cnkgcmVwcmVzZW50cyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jYmFjay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhZ2VudW0uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NiYWNrLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NiYWNrLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9jYmFjay5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgdG9jLmNvbnRlbnQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsb3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgbGlzdCBvZiB0aGUgdGl0bGVzIG9mIGZvcm1hbCBvYmplY3RzIChhcyB0YWJsZXMgb3IgZmlndXJlcykgaW4gYSBkb2N1bWVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibG90Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibG90ZW50cnkiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibG90LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxvdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsb3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxvdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbG90LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbG90Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibG90ZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkFuIGVudHJ5IGluIGEgbGlzdCBvZiB0aXRsZXMuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImxvdGVudHJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibG90ZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbG90ZW50cnkuZWxlbWVudCAtLT4KICA8IS0tCiAgICBTcmNDcmVkaXQ6IEluZm9ybWF0aW9uIGFib3V0IHRoZSBzb3VyY2Ugb2YgdGhlIGVudHJ5LAogICAgYXMgZm9yIGEgbGlzdCBvZiBpbGx1c3RyYXRpb25zCiAgLS0+CiAgPCEtLSBsaW5rZW5kOiB0byBlbGVtZW50IHRoYXQgdGhpcyBlbnRyeSByZXByZXNlbnRzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsb3RlbnRyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmQuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcmNjcmVkaXQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxvdGVudHJ5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBsb3RlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGxvdGVudHJ5Lm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBsb3QuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gQXBwZW5kaXgsIENoYXB0ZXIsIFBhcnQsIFByZWZhY2UsIFJlZmVyZW5jZSwgUGFydEludHJvIC4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXBwZW5kaXgucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkFuIGFwcGVuZGl4IGluIGEgQm9vayBvciBBcnRpY2xlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcHBlbmRpeCIgc3Vic3RpdHV0aW9uR3JvdXA9ImFwcGVuZGl4LmNsYXNzIi8+CiAgPCEtLSBlbmQgb2YgYXBwZW5kaXguZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXBwZW5kaXguYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFwcGVuZGl4LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhcHBlbmRpeC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFwcGVuZGl4Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2hhcHRlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBjaGFwdGVyLCBhcyBvZiBhIGJvb2suIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNoYXB0ZXIiIHN1YnN0aXR1dGlvbkdyb3VwPSJjaGFwdGVyLmNsYXNzIi8+CiAgPCEtLSBlbmQgb2YgY2hhcHRlci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaGFwdGVyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaGFwdGVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjaGFwdGVyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2hhcHRlci5tb2R1bGUgLS0+CiAgPCEtLQogICAgTm90ZSB0aGF0IFBhcnQgd2FzIHRvIGhhdmUgaXRzIGNvbnRlbnQgbW9kZWwgcmVkdWNlZCBpbiBWNC41LiAgVGhpcwogICAgY2hhbmdlIHdpbGwgbm90IGJlIG1hZGUgYWZ0ZXIgYWxsLgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYXJ0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGRpdmlzaW9uIGluIGEgYm9vay4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGFydCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InBhcnRpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYm9va2NvbXBvbmVudC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InBhcnRpbnRybyIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJ0Y29udGVudC5taXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFydC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwYXJ0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcnQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcnQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBhcnQuYXR0bGlzdCAtLT4KICA8IS0tIEVMRU1FTlQgUGFydEludHJvIChkZWZpbmVkIGJlbG93KSAtLT4KICA8IS0tIGVuZCBvZiBwYXJ0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJlZmFjZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6SW50cm9kdWN0b3J5IG1hdHRlciBwcmVjZWRpbmcgdGhlIGZpcnN0IGNoYXB0ZXIgb2YgYSBib29rLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJwcmVmYWNlIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icHJlZmFjZWluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idG9jY2hhcCIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJvb2tjb21wb25lbnQuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmVmYWNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByZWZhY2UuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJlZmFjZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByZWZhY2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByZWZhY2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcmVmYWNlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZXJlbmNlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGNvbGxlY3Rpb24gb2YgcmVmZXJlbmNlIGVudHJpZXMuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InJlZmVyZW5jZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJlZmVyZW5jZWluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icGFydGludHJvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZXJlbmNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZmVyZW5jZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZlcmVuY2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVyZW5jZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmZXJlbmNlLmF0dGxpc3QgLS0+CiAgPCEtLSBFTEVNRU5UIFBhcnRJbnRybyAoZGVmaW5lZCBiZWxvdykgLS0+CiAgPCEtLSBlbmQgb2YgcmVmZXJlbmNlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFydGludHJvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBbiBpbnRyb2R1Y3Rpb24gdG8gdGhlIGNvbnRlbnRzIG9mIGEgcGFydC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGFydGludHJvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZGl2LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJib29rY29tcG9uZW50LmNvbnRlbnQiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFydGludHJvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBhcnRpbnRyby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYXJ0aW50cm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcnRpbnRyby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcGFydGludHJvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcGFydGludHJvLm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBPdGhlciBJbmZvIGVsZW1lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcHBlbmRpeGluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOk1ldGEtaW5mb3JtYXRpb24gZm9yIGFuIEFwcGVuZGl4LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcHBlbmRpeGluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcHBlbmRpeGluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXBwZW5kaXhpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFwcGVuZGl4aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFwcGVuZGl4aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXBwZW5kaXhpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXBwZW5kaXhpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvZ3JhcGh5aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6TWV0YS1pbmZvcm1hdGlvbiBmb3IgYSBCaWJsaW9ncmFwaHkuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb2dyYXBoeWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9ncmFwaHlpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb2dyYXBoeWluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvZ3JhcGh5aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2dyYXBoeWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb2dyYXBoeWluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9ncmFwaHlpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2hhcHRlcmluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOk1ldGEtaW5mb3JtYXRpb24gZm9yIGEgQ2hhcHRlci4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2hhcHRlcmluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaGFwdGVyaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjaGFwdGVyaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaGFwdGVyaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNoYXB0ZXJpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjaGFwdGVyaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNoYXB0ZXJpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NhcnlpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpNZXRhLWluZm9ybWF0aW9uIGZvciBhIEdsb3NzYXJ5LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJnbG9zc2FyeWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc2FyeWluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ2xvc3NhcnlpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzYXJ5aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzYXJ5aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ2xvc3NhcnlpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ2xvc3NhcnlpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5kZXhpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpNZXRhLWluZm9ybWF0aW9uIGZvciBhbiBJbmRleC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5kZXhpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5kZXhpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGluZGV4aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmRleGluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleGluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGluZGV4aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluZGV4aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNldGluZGV4aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6TWV0YS1pbmZvcm1hdGlvbiBmb3IgYSBTZXRJbmRleC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2V0aW5kZXhpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2V0aW5kZXhpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNldGluZGV4aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZXRpbmRleGluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZXRpbmRleGluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNldGluZGV4aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNldGluZGV4aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcnRpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpNZXRhLWluZm9ybWF0aW9uIGZvciBhIFBhcnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InBhcnRpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFydGluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcGFydGluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFydGluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJ0aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcGFydGluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwYXJ0aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByZWZhY2VpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpNZXRhLWluZm9ybWF0aW9uIGZvciBhIFByZWZhY2UuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InByZWZhY2VpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJlZmFjZWluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJlZmFjZWluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJlZmFjZWluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmVmYWNlaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJlZmFjZWluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcmVmYWNlaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmVudHJ5aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6TWV0YS1pbmZvcm1hdGlvbiBmb3IgYSBSZWZlbnRyeS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmZW50cnlpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZW50cnlpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZlbnRyeWluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZlbnRyeWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3Rpb25pbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpNZXRhLWluZm9ybWF0aW9uIGZvciBhIHJlZnNlY3Rpb24uIC0tPgogIDx4czplbGVtZW50IG5hbWU9InJlZnNlY3Rpb25pbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdGlvbmluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdGlvbmluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdGlvbmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0aW9uaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdGlvbmluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZzZWN0aW9uaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QxaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6TWV0YS1pbmZvcm1hdGlvbiBmb3IgYSBSZWZTZWN0MS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdDFpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDFpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3QxaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0MWluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0MWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QxaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QxaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QyaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6TWV0YS1pbmZvcm1hdGlvbiBmb3IgYSBSZWZTZWN0Mi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdDJpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDJpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3QyaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0MmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0MmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QyaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QyaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QzaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6TWV0YS1pbmZvcm1hdGlvbiBmb3IgYSBSZWZTZWN0My4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdDNpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDNpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3QzaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0M2luZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0M2luZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QzaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QzaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnN5bm9wc2lzZGl2aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6TWV0YS1pbmZvcm1hdGlvbiBmb3IgYSBSZWZTeW5vcHNpc0Rpdi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc3lub3BzaXNkaXZpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc3lub3BzaXNkaXZpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnN5bm9wc2lzZGl2aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzeW5vcHNpc2RpdmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzeW5vcHNpc2RpdmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnN5bm9wc2lzZGl2aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnN5bm9wc2lzZGl2aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmVyZW5jZWluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOk1ldGEtaW5mb3JtYXRpb24gZm9yIGEgUmVmZXJlbmNlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZlcmVuY2VpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZXJlbmNlaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZlcmVuY2VpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmVyZW5jZWluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZlcmVuY2VpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZlcmVuY2VpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmZXJlbmNlaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QxaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6TWV0YS1pbmZvcm1hdGlvbiBmb3IgYSBTZWN0MS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdDFpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDFpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY3QxaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0MWluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0MWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3QxaW5mby5hdHRsaXN0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0MmluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOk1ldGEtaW5mb3JtYXRpb24gZm9yIGEgU2VjdDIuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlY3QyaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3QyaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0MmluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDJpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDJpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWN0MmluZm8uYXR0bGlzdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDNpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpNZXRhLWluZm9ybWF0aW9uIGZvciBhIFNlY3QzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWN0M2luZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0M2luZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdDNpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QzaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3QzaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDNpbmZvLmF0dGxpc3QgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Q0aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6TWV0YS1pbmZvcm1hdGlvbiBmb3IgYSBTZWN0NC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdDRpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDRpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY3Q0aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0NGluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0NGluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3Q0aW5mby5hdHRsaXN0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0NWluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOk1ldGEtaW5mb3JtYXRpb24gZm9yIGEgU2VjdDUuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlY3Q1aW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Q1aW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0NWluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDVpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDVpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWN0NWluZm8uYXR0bGlzdCAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBTZWN0aW9uIChwYXJhbGxlbCB0byBTZWN0KikgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Rpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgcmVjdXJzaXZlIHNlY3Rpb24uIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlY3Rpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJzZWN0aW9uLmNsYXNzIi8+CiAgPCEtLSBlbmQgb2Ygc2VjdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWN0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VjdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Rpb25pbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpNZXRhLWluZm9ybWF0aW9uIGZvciBhIHJlY3Vyc2l2ZSBzZWN0aW9uLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWN0aW9uaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Rpb25pbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY3Rpb25pbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Rpb25pbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdGlvbmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3Rpb25pbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VjdGlvbmluZm8ubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHNlY3Rpb24uY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gU2VjdDEsIFNlY3QyLCBTZWN0MywgU2VjdDQsIFNlY3Q1IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgdG9wLWxldmVsIHNlY3Rpb24gb2YgZG9jdW1lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlY3QxIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0MWluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZGl2Y29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3QyIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0MiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0MS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0MS5lbGVtZW50IC0tPgogIDwhLS0KICAgIFJlbmRlcmFzOiBJbmRpY2F0ZXMgdGhlIGZvcm1hdCBpbiB3aGljaCB0aGUgaGVhZGluZyBzaG91bGQKICAgIGFwcGVhcgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0MS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVuZGVyYXMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0MS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWN0MS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHN1YnNlY3Rpb24gd2l0aGluIGEgU2VjdDEuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlY3QyIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0MmluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZGl2Y29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3QzIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0MyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0Mi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0Mi5lbGVtZW50IC0tPgogIDwhLS0KICAgIFJlbmRlcmFzOiBJbmRpY2F0ZXMgdGhlIGZvcm1hdCBpbiB3aGljaCB0aGUgaGVhZGluZyBzaG91bGQKICAgIGFwcGVhcgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0Mi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVuZGVyYXMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0Mi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWN0Mi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHN1YnNlY3Rpb24gd2l0aGluIGEgU2VjdDIuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlY3QzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0M2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZGl2Y29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3Q0Ii8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0NCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0My5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0My5lbGVtZW50IC0tPgogIDwhLS0KICAgIFJlbmRlcmFzOiBJbmRpY2F0ZXMgdGhlIGZvcm1hdCBpbiB3aGljaCB0aGUgaGVhZGluZyBzaG91bGQKICAgIGFwcGVhcgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0My5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVuZGVyYXMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0My5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWN0My5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Q0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHN1YnNlY3Rpb24gd2l0aGluIGEgU2VjdDMuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlY3Q0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0NGluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZGl2Y29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3Q1Ii8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0NSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0NC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0NC5lbGVtZW50IC0tPgogIDwhLS0KICAgIFJlbmRlcmFzOiBJbmRpY2F0ZXMgdGhlIGZvcm1hdCBpbiB3aGljaCB0aGUgaGVhZGluZyBzaG91bGQKICAgIGFwcGVhcgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0NC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVuZGVyYXMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0NC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWN0NC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Q1LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHN1YnNlY3Rpb24gd2l0aGluIGEgU2VjdDQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlY3Q1Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0NWluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZGl2Y29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdDUuZWxlbWVudCAtLT4KICA8IS0tCiAgICBSZW5kZXJhczogSW5kaWNhdGVzIHRoZSBmb3JtYXQgaW4gd2hpY2ggdGhlIGhlYWRpbmcgc2hvdWxkCiAgICBhcHBlYXIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbmRlcmFzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3Q1LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VjdDUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaW1wbGVzZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHNlY3Rpb24gb2YgYSBkb2N1bWVudCB3aXRoIG5vIHN1YmRpdmlzaW9ucy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2ltcGxlc2VjdCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZGl2Y29tcG9uZW50Lm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaW1wbGVzZWN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNpbXBsZXNlY3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2ltcGxlc2VjdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpbXBsZXNlY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNpbXBsZXNlY3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzaW1wbGVzZWN0Lm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBCaWJsaW9ncmFwaHkgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9ncmFwaHkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgYmlibGlvZ3JhcGh5LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9ncmFwaHkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJpYmxpb2dyYXBoeWluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYmlibGlvZGl2Ii8+CiAgICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9lbnRyeSIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb21peGVkIi8+CiAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvZ3JhcGh5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb2dyYXBoeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9ncmFwaHkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9ncmFwaHkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb2dyYXBoeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb2dyYXBoeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2Rpdi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBzZWN0aW9uIG9mIGEgQmlibGlvZ3JhcGh5LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9kaXYiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb2VudHJ5Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb21peGVkIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2Rpdi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiaWJsaW9kaXYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvZGl2LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvZGl2LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9kaXYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9kaXYubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb2dyYXBoeS5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBHbG9zc2FyeSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2FyeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBnbG9zc2FyeS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ2xvc3NhcnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Imdsb3NzYXJ5aW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iYm9va2NvbXBvbmVudC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJnbG9zc2RpdiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ2xvc3NlbnRyeSIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJiaWJsaW9ncmFwaHkiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NhcnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ2xvc3NhcnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NhcnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc2FyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ2xvc3NhcnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBnbG9zc2FyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzZGl2LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGRpdmlzaW9uIGluIGEgR2xvc3NhcnkuIC0tPgogIDx4czplbGVtZW50IG5hbWU9Imdsb3NzZGl2Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJnbG9zc2VudHJ5Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzZGl2LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdsb3NzZGl2LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzZGl2LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NkaXYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3NzZGl2LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ2xvc3NkaXYubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzYXJ5LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEluZGV4IGFuZCBTZXRJbmRleCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4ZXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkFuIGluZGV4LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmRleCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iaW5kZXhpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5kZXhkaXYiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5kZXhlbnRyeSIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbmRleC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmRleC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5kZXhlcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW5kZXguYXR0bGlzdCAtLT4KICA8IS0tIGRvYzpBbiBpbmRleCB0byBhIHNldCBvZiBib29rcy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2V0aW5kZXgiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNldGluZGV4aW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iYm9va2NvbXBvbmVudC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZGV4ZGl2Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZGV4ZW50cnkiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2V0aW5kZXguYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2V0aW5kZXguZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2V0aW5kZXguYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleGVzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZXRpbmRleC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluZGV4ZXMubW9kdWxlIC0tPgogIDwhLS0KICAgIFNlZ21lbnRlZExpc3QgaW4gdGhpcyBjb250ZW50IGlzIHVzZWZ1bCBmb3IgbWFya2luZyB1cCBwZXJtdXRlZAogICAgaW5kaWNlcy4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5kZXhkaXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgZGl2aXNpb24gaW4gYW4gaW5kZXguIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImluZGV4ZGl2Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5kZXhkaXZjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmRleGVudHJ5Ii8+CiAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2VnbWVudGVkbGlzdCIvPgogICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5kZXhkaXYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5kZXhkaXYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5kZXhkaXYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleGRpdi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW5kZXhkaXYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbmRleGRpdi5tb2R1bGUgLS0+CiAgPCEtLSBJbmRleCBlbnRyaWVzIGFwcGVhciBpbiB0aGUgaW5kZXgsIG5vdCB0aGUgdGV4dC4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4ZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkFuIGVudHJ5IGluIGFuIGluZGV4LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmRleGVudHJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icHJpbWFyeWllIi8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2VlaWUiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2VlYWxzb2llIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOnNlcXVlbmNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzZWNvbmRhcnlpZSIvPgogICAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzZWVpZSIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNlZWFsc29pZSIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRlcnRpYXJ5aWUiLz4KICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZGV4ZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5kZXhlbnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmRleGVudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5kZXhlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW5kZXhlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluZGV4ZW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcmltc2VjdGVyaWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgcHJpbWFyeSB0ZXJtIGluIGFuIGluZGV4IGVudHJ5LCBub3QgaW4gdGhlIHRleHQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InByaW1hcnlpZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByaW1hcnlpZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwcmltYXJ5aWUuZWxlbWVudCAtLT4KICA8IS0tIHRvIEluZGV4VGVybXMgdGhhdCB0aGVzZSBlbnRyaWVzIHJlcHJlc2VudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJpbWFyeWllLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmltc2VjdGVyaWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByaW1hcnlpZS5hdHRsaXN0IC0tPgogIDwhLS0gZG9jOkEgc2Vjb25kYXJ5IHRlcm0gaW4gYW4gaW5kZXggZW50cnksIHJhdGhlciB0aGFuIGluIHRoZSB0ZXh0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWNvbmRhcnlpZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY29uZGFyeWllLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY29uZGFyeWllLmVsZW1lbnQgLS0+CiAgPCEtLSB0byBJbmRleFRlcm1zIHRoYXQgdGhlc2UgZW50cmllcyByZXByZXNlbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY29uZGFyeWllLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmltc2VjdGVyaWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY29uZGFyeWllLmF0dGxpc3QgLS0+CiAgPCEtLSBkb2M6QSB0ZXJ0aWFyeSB0ZXJtIGluIGFuIGluZGV4IGVudHJ5LCByYXRoZXIgdGhhbiBpbiB0aGUgdGV4dC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGVydGlhcnlpZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRlcnRpYXJ5aWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGVydGlhcnlpZS5lbGVtZW50IC0tPgogIDwhLS0gdG8gSW5kZXhUZXJtcyB0aGF0IHRoZXNlIGVudHJpZXMgcmVwcmVzZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0ZXJ0aWFyeWllLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmltc2VjdGVyaWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRlcnRpYXJ5aWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcmltc2VjdGVyaWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWVpZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBTZWUgZW50cnkgaW4gYW4gaW5kZXgsIHJhdGhlciB0aGFuIGluIHRoZSB0ZXh0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWVpZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZWllLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlZWllLmVsZW1lbnQgLS0+CiAgPCEtLSB0byBJbmRleEVudHJ5IHRvIGxvb2sgdXAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZWllLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZWllLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWVpZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlZWllLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VlYWxzb2llLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIFNlZSBhbHNvIGVudHJ5IGluIGFuIGluZGV4LCByYXRoZXIgdGhhbiBpbiB0aGUgdGV4dC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VlYWxzb2llIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VlYWxzb2llLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlZWFsc29pZS5lbGVtZW50IC0tPgogIDwhLS0gdG8gcmVsYXRlZCBJbmRleEVudHJpZXMgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZWFsc29pZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VlYWxzb2llLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWVhbHNvaWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWVhbHNvaWUubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIGluZGV4LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFJlZkVudHJ5IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmVudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHJlZmVyZW5jZSBwYWdlIChvcmlnaW5hbGx5IGEgVU5JWCBtYW4tc3R5bGUgcmVmZXJlbmNlIHBhZ2UpLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZlbnRyeSIgc3Vic3RpdHV0aW9uR3JvdXA9InJlZmVudHJ5LmNsYXNzIi8+CiAgPCEtLSBlbmQgb2YgcmVmZW50cnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmZW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZlbnRyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZm1ldGEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOk1ldGEtaW5mb3JtYXRpb24gZm9yIGEgcmVmZXJlbmNlIGVudHJ5LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZtZXRhIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVmZW50cnl0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJtYW52b2xudW0iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZm1pc2NpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZm1ldGEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmbWV0YS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZtZXRhLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmbWV0YS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmbWV0YS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZm1ldGEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZtaXNjaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6TWV0YS1pbmZvcm1hdGlvbiBmb3IgYSByZWZlcmVuY2UgZW50cnkgb3RoZXIgdGhhbiB0aGUgdGl0bGUgYW5kIHZvbHVtZSBudW1iZXIuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InJlZm1pc2NpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmbWlzY2luZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmbWlzY2luZm8uZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBGcmVlbHkgYXNzaWduYWJsZSBwYXJhbWV0ZXI7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZm1pc2NpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmbWlzY2luZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZm1pc2NpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmbWlzY2luZm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZuYW1lZGl2LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbmFtZSwgcHVycG9zZSwgYW5kIGNsYXNzaWZpY2F0aW9uIG9mIGEgcmVmZXJlbmNlIHBhZ2UuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InJlZm5hbWVkaXYiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJlZmRlc2NyaXB0b3IiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZuYW1lIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZWZwdXJwb3NlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZjbGFzcyIvPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlbWFyayIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmbmFtZWRpdi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZuYW1lZGl2LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZm5hbWVkaXYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZuYW1lZGl2LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZuYW1lZGl2LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmbmFtZWRpdi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmRlc2NyaXB0b3Iucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgZGVzY3JpcHRpb24gb2YgdGhlIHRvcGljIG9mIGEgcmVmZXJlbmNlIHBhZ2UuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InJlZmRlc2NyaXB0b3IiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmbmFtZS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZkZXNjcmlwdG9yLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZmRlc2NyaXB0b3IuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZGVzY3JpcHRvci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmRlc2NyaXB0b3Iucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZmRlc2NyaXB0b3IuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZkZXNjcmlwdG9yLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmbmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIG5hbWUgb2YgKG9uZSBvZikgdGhlIHN1YmplY3Qocykgb2YgYSByZWZlcmVuY2UgcGFnZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmbmFtZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZuYW1lLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmbmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmbmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZm5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZwdXJwb3NlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHNob3J0IChvbmUgc2VudGVuY2UpIHN5bm9wc2lzIG9mIHRoZSB0b3BpYyBvZiBhIHJlZmVyZW5jZSBwYWdlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZwdXJwb3NlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmlubGluZS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZwdXJwb3NlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnB1cnBvc2UuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmcHVycG9zZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnB1cnBvc2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnB1cnBvc2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZwdXJwb3NlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmY2xhc3Mucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBzY29wZSBvciBvdGhlciBpbmRpY2F0aW9uIG9mIGFwcGxpY2FiaWxpdHkgb2YgYSByZWZlcmVuY2UgZW50cnkuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InJlZmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmNsYXNzLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmNsYXNzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZmNsYXNzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmNsYXNzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmY2xhc3Mucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZmNsYXNzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmY2xhc3MubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzeW5vcHNpc2Rpdi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBzeW50YWN0aWMgc3lub3BzaXMgb2YgdGhlIHN1YmplY3Qgb2YgdGhlIHJlZmVyZW5jZSBwYWdlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZzeW5vcHNpc2RpdiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmc3lub3BzaXNkaXZpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJyZWZzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmY29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3QyIi8+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmc2VjdDIiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc3lub3BzaXNkaXYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc3lub3BzaXNkaXYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc3lub3BzaXNkaXYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzeW5vcHNpc2Rpdi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc3lub3BzaXNkaXYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZzeW5vcHNpc2Rpdi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3Rpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgcmVjdXJzaXZlIHNlY3Rpb24gaW4gYSByZWZlbnRyeS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmc2VjdGlvbmluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJyZWZzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmY29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3Rpb24iLz4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZzZWN0aW9uIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3Rpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3Rpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0MS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBtYWpvciBzdWJzZWN0aW9uIG9mIGEgcmVmZXJlbmNlIGVudHJ5LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZzZWN0MSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmc2VjdDFpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icmVmc2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZzZWN0MiIvPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3QyIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3QxLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3QxLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QxLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QxLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0Mi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBzdWJzZWN0aW9uIG9mIGEgUmVmU2VjdDEuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InJlZnNlY3QyIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJyZWZzZWN0MmluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJyZWZzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmY29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3QzIi8+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmc2VjdDMiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdDIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0Mi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZzZWN0Mi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHN1YnNlY3Rpb24gb2YgYSBSZWZTZWN0Mi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdDMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJlZnNlY3QzaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9InJlZnNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZjb21wb25lbnQubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3QzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3QzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDMubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEFydGljbGUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLQogICAgQW4gQXJ0aWNsZSBpcyBhIGNoYXB0ZXItbGV2ZWwsIHN0YW5kLWFsb25lIGRvY3VtZW50IHRoYXQgaXMgb2Z0ZW4sCiAgICBidXQgbmVlZCBub3QgYmUsIGNvbGxlY3RlZCBpbnRvIGEgQm9vay4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJ0aWNsZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gYXJ0aWNsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXJ0aWNsZSIgc3Vic3RpdHV0aW9uR3JvdXA9ImFydGljbGUuY2xhc3MiLz4KICA8IS0tIGVuZCBvZiBhcnRpY2xlLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgQ2xhc3M6IEluZGljYXRlcyB0aGUgdHlwZSBvZiBhIHBhcnRpY3VsYXIgYXJ0aWNsZTsKICAgIGFsbCBhcnRpY2xlcyBoYXZlIHRoZSBzYW1lIHN0cnVjdHVyZSBhbmQgZ2VuZXJhbCBwdXJwb3NlLgogICAgTm8gZGVmYXVsdC4KICAtLT4KICA8IS0tIFBhcmVudEJvb2s6IElEIG9mIHRoZSBlbmNsb3NpbmcgQm9vayAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJ0aWNsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJqb3VybmFsYXJ0aWNsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcm9kdWN0c2hlZXQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0id2hpdGVwYXBlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0ZWNocmVwb3J0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNwZWNpZmljYXRpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZmFxIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBhcmVudGJvb2siIHR5cGU9InhzOklEUkVGIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcnRpY2xlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KPC94czpzY2hlbWE+CjwhLS0gZW5kIG9mIGFydGljbGUuYXR0bGlzdCAtLT4KPCEtLSBlbmQgb2YgYXJ0aWNsZS5tb2R1bGUgLS0+CjwhLS0gRW5kIG9mIERvY0Jvb2sgZG9jdW1lbnQgaGllcmFyY2h5IG1vZHVsZSBWNC41IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo=
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgbm90YXRpb25zIG1vZHVsZSBWNC41IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkYm5vdG54Lm1vZCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDQgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogZGJub3RueC5tb2QgNjM0MCAyMDA2LTEwLTAzIDEzOjIzOjI0WiBud2Fsc2ggJAogIAogIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnkgYW5kIGRpc3RyaWJ1dGUgdGhlIERvY0Jvb2sgRFRECiAgYW5kIGl0cyBhY2NvbXBhbnlpbmcgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlCiAgaXMgaGVyZWJ5IGdyYW50ZWQgaW4gcGVycGV0dWl0eSwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0CiAgbm90aWNlIGFuZCB0aGlzIHBhcmFncmFwaCBhcHBlYXIgaW4gYWxsIGNvcGllcy4gIFRoZSBjb3B5cmlnaHQKICBob2xkZXJzIG1ha2Ugbm8gcmVwcmVzZW50YXRpb24gYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoZSBEVEQgZm9yCiAgYW55IHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzc2VkIG9yIGltcGxpZWQKICB3YXJyYW50eS4KICAKICBJZiB5b3UgbW9kaWZ5IHRoZSBEb2NCb29rIERURCBpbiBhbnkgd2F5LCBleGNlcHQgZm9yIGRlY2xhcmluZyBhbmQKICByZWZlcmVuY2luZyBhZGRpdGlvbmFsIHNldHMgb2YgZ2VuZXJhbCBlbnRpdGllcyBhbmQgZGVjbGFyaW5nCiAgYWRkaXRpb25hbCBub3RhdGlvbnMsIGxhYmVsIHlvdXIgRFREIGFzIGEgdmFyaWFudCBvZiBEb2NCb29rLiAgU2VlCiAgdGhlIG1haW50ZW5hbmNlIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgCiAgUGxlYXNlIGRpcmVjdCBhbGwgcXVlc3Rpb25zLCBidWcgcmVwb3J0cywgb3Igc3VnZ2VzdGlvbnMgZm9yCiAgY2hhbmdlcyB0byB0aGUgZG9jYm9va0BsaXN0cy5vYXNpcy1vcGVuLm9yZyBtYWlsaW5nIGxpc3QuIEZvciBtb3JlCiAgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2svLgotLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tCiAgVGhpcyBtb2R1bGUgY29udGFpbnMgdGhlIG5vdGF0aW9uIGRlY2xhcmF0aW9ucyB1c2VkIGJ5IERvY0Jvb2suCiAgCiAgSW4gRFREIGRyaXZlciBmaWxlcyByZWZlcnJpbmcgdG8gdGhpcyBtb2R1bGUsIHBsZWFzZSB1c2UgYW4gZW50aXR5CiAgZGVjbGFyYXRpb24gdGhhdCB1c2VzIHRoZSBwdWJsaWMgaWRlbnRpZmllciBzaG93biBiZWxvdzoKICAKICA8IUVOVElUWSAlIGRibm90biBQVUJMSUMKICAiLS8vT0FTSVMvL0VOVElUSUVTIERvY0Jvb2sgTm90YXRpb25zIFY0LjUvL0VOIgogICJkYm5vdG54Lm1vZCI+CiAgJWRibm90bjsKICAKICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIHRoZSBwYXJhbWV0ZXIKICBlbnRpdHkgYW5kIG1vZHVsZSBzY2hlbWUgdXNlZCBpbiBEb2NCb29rLCBjdXN0b21pemluZyBEb2NCb29rIGFuZAogIHBsYW5uaW5nIGZvciBpbnRlcmNoYW5nZSwgYW5kIGNoYW5nZXMgbWFkZSBzaW5jZSB0aGUgbGFzdCByZWxlYXNlCiAgb2YgRG9jQm9vay4KLS0+Cjx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+CiAgPHhzOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIgc2NoZW1hTG9jYXRpb249InhtbC54c2QiLz4KICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJub3RhdGlvbi5jbGFzcyI+CiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkJNUCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkNHTS1DSEFSIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQ0dNLUJJTkFSWSIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkNHTS1DTEVBUiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkRJVFJPRkYiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJEVkkiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJFUFMiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJFUU4iLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJGQVgiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJHSUYiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJHSUY4N2EiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJHSUY4OWEiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJKUEciLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJKUEVHIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iSUdFUyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlBDWCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlBJQyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlBORyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlBTIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iU0dNTCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlRCTCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlRFWCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlRJRkYiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJXTUYiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJXUEciLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJTVkciLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJQREYiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJTV0YiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lc3BlY2lmaWMiLz4KICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgPC94czpzaW1wbGVUeXBlPgo8L3hzOnNjaGVtYT4KPCEtLSBXb3JkUGVyZmVjdCBHcmFwaGljIGZvcm1hdCAtLT4KPCEtLSBFbmQgb2YgRG9jQm9vayBub3RhdGlvbnMgbW9kdWxlIFY0LjUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+Cg==
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgWE1MIGluZm9ybWF0aW9uIHBvb2wgbW9kdWxlIFY0LjUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkYnBvb2x4Lm1vZCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDQgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogZGJwb29seC5tb2QgNjM0MCAyMDA2LTEwLTAzIDEzOjIzOjI0WiBud2Fsc2ggJAogIAogIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnkgYW5kIGRpc3RyaWJ1dGUgdGhlIERvY0Jvb2sgWE1MIERURAogIGFuZCBpdHMgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZQogIGlzIGhlcmVieSBncmFudGVkIGluIHBlcnBldHVpdHksIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodAogIG5vdGljZSBhbmQgdGhpcyBwYXJhZ3JhcGggYXBwZWFyIGluIGFsbCBjb3BpZXMuICBUaGUgY29weXJpZ2h0CiAgaG9sZGVycyBtYWtlIG5vIHJlcHJlc2VudGF0aW9uIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGUgRFREIGZvcgogIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3NlZCBvciBpbXBsaWVkCiAgd2FycmFudHkuCiAgCiAgSWYgeW91IG1vZGlmeSB0aGUgRG9jQm9vayBYTUwgRFREIGluIGFueSB3YXksIGV4Y2VwdCBmb3IgZGVjbGFyaW5nIGFuZAogIHJlZmVyZW5jaW5nIGFkZGl0aW9uYWwgc2V0cyBvZiBnZW5lcmFsIGVudGl0aWVzIGFuZCBkZWNsYXJpbmcKICBhZGRpdGlvbmFsIG5vdGF0aW9ucywgbGFiZWwgeW91ciBEVEQgYXMgYSB2YXJpYW50IG9mIERvY0Jvb2suICBTZWUKICB0aGUgbWFpbnRlbmFuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAKICBQbGVhc2UgZGlyZWN0IGFsbCBxdWVzdGlvbnMsIGJ1ZyByZXBvcnRzLCBvciBzdWdnZXN0aW9ucyBmb3IKICBjaGFuZ2VzIHRvIHRoZSBkb2Nib29rQGxpc3RzLm9hc2lzLW9wZW4ub3JnIG1haWxpbmcgbGlzdC4gRm9yIG1vcmUKICBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay8uCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0KICBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBvYmplY3RzLCBpbmxpbmUKICBlbGVtZW50cywgYW5kIHNvIG9uIHRoYXQgYXJlIGF2YWlsYWJsZSB0byBiZSB1c2VkIGFzIHRoZSBtYWluCiAgY29udGVudCBvZiBEb2NCb29rIGRvY3VtZW50cy4gIFNvbWUgZWxlbWVudHMgYXJlIHVzZWZ1bCBmb3IgZ2VuZXJhbAogIHB1Ymxpc2hpbmcsIGFuZCBvdGhlcnMgYXJlIHVzZWZ1bCBzcGVjaWZpY2FsbHkgZm9yIGNvbXB1dGVyCiAgZG9jdW1lbnRhdGlvbi4KICAKICBUaGlzIG1vZHVsZSBoYXMgdGhlIGZvbGxvd2luZyBkZXBlbmRlbmNpZXMgb24gb3RoZXIgbW9kdWxlczoKICAKICBvIEl0IGFzc3VtZXMgdGhhdCBhICVub3RhdGlvbi5jbGFzczsgZW50aXR5IGlzIGRlZmluZWQgYnkgdGhlCiAgICBkcml2ZXIgZmlsZSBvciBvdGhlciBoaWdoLWxldmVsIG1vZHVsZS4gIFRoaXMgZW50aXR5IGlzCiAgICByZWZlcmVuY2VkIGluIHRoZSBOT1RBVElPTiBhdHRyaWJ1dGVzIGZvciB0aGUgZ3JhcGhpYy1yZWxhdGVkIGFuZAogICAgTW9kZVNwZWMgZWxlbWVudHMuCiAgCiAgbyBJdCBhc3N1bWVzIHRoYXQgYW4gYXBwcm9wcmlhdGVseSBwYXJhbWV0ZXJpemVkIHRhYmxlIG1vZHVsZSBpcwogICAgYXZhaWxhYmxlIGZvciB1c2Ugd2l0aCB0aGUgdGFibGUtcmVsYXRlZCBlbGVtZW50cy4KICAKICBJbiBEVEQgZHJpdmVyIGZpbGVzIHJlZmVycmluZyB0byB0aGlzIG1vZHVsZSwgcGxlYXNlIHVzZSBhbiBlbnRpdHkKICBkZWNsYXJhdGlvbiB0aGF0IHVzZXMgdGhlIHB1YmxpYyBpZGVudGlmaWVyIHNob3duIGJlbG93OgogIAogIDwhRU5USVRZICUgZGJwb29sIFBVQkxJQwogICItLy9PQVNJUy8vRUxFTUVOVFMgRG9jQm9vayBYTUwgSW5mb3JtYXRpb24gUG9vbCBWNC41Ly9FTiIKICAiZGJwb29seC5tb2QiPgogICVkYnBvb2w7CiAgCiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiB0aGUgcGFyYW1ldGVyCiAgZW50aXR5IGFuZCBtb2R1bGUgc2NoZW1lIHVzZWQgaW4gRG9jQm9vaywgY3VzdG9taXppbmcgRG9jQm9vayBhbmQKICBwbGFubmluZyBmb3IgaW50ZXJjaGFuZ2UsIGFuZCBjaGFuZ2VzIG1hZGUgc2luY2UgdGhlIGxhc3QgcmVsZWFzZQogIG9mIERvY0Jvb2suCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRm9ybXMgZW50aXRpZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSBUaGVzZSBQRXMgcHJvdmlkZSB0aGUgaG9vayBieSB3aGljaCB0aGUgZm9ybXMgbW9kdWxlIGNhbiBiZSBpbnNlcnRlZCAtLT4KPCEtLSBpbnRvIHRoZSBEVEQuIC0tPgo8eHM6c2NoZW1hIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiPgogIDx4czppbmNsdWRlIHNjaGVtYUxvY2F0aW9uPSJodG1sdGJseC54c2QiLz4KICA8eHM6aW5jbHVkZSBzY2hlbWFMb2NhdGlvbj0iY2Fsc3RibHgueHNkIi8+CiAgPHhzOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIgc2NoZW1hTG9jYXRpb249InhtbC54c2QiLz4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBHZW5lcmFsLXB1cnBvc2Ugc2VtYW50aWNzIGVudGl0aWVzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czpzaW1wbGVUeXBlIG5hbWU9Inllc29ybm8uYXR0dmFscyI+CiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIi8+CiAgPC94czpzaW1wbGVUeXBlPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEVudGl0aWVzIGZvciBtb2R1bGUgaW5jbHVzaW9ucyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gRW50aXRpZXMgZm9yIGVsZW1lbnQgY2xhc3NlcyBhbmQgbWl4dHVyZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tICJVYmlxdWl0b3VzIiBjbGFzc2VzOiBuZHh0ZXJtLmNsYXNzIGFuZCBiZWdpbnBhZ2UgLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibmR4dGVybS5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InByaW1hcnkiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2Vjb25kYXJ5Ii8+CiAgICAgICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIj4KICAgICAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRlcnRpYXJ5Ii8+CiAgICAgICAgICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2VlIi8+CiAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlZWFsc28iLz4KICAgICAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzZWUiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWVhbHNvIi8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2VlIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWVhbHNvIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZGV4dGVybS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIE9iamVjdC1sZXZlbCBjbGFzc2VzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibGlzdC5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6ZWxlbWVudCBuYW1lPSJhZG1vbi5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6ZWxlbWVudCBuYW1lPSJsaW5lc3BlY2lmaWMuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWV0aG9kLnN5bm9wLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIgc3Vic3RpdHV0aW9uR3JvdXA9InN5bm9wLmNsYXNzIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3lub3AuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGFyYS5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmZvcm1hbC5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6ZWxlbWVudCBuYW1lPSJmb3JtYWwuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPCEtLSBUaGUgRG9jQm9vayBUQyBtYXkgcHJvZHVjZSBhbiBvZmZpY2lhbCBFQk5GIG1vZHVsZSBmb3IgRG9jQm9vay4gLS0+CiAgPCEtLSBUaGlzIFBFIHByb3ZpZGVzIHRoZSBob29rIGJ5IHdoaWNoIGl0IGNhbiBiZSBpbnNlcnRlZCBpbnRvIHRoZSBEVEQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNvbXBvdW5kLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDx4czpncm91cCBuYW1lPSJnZW5vYmouY2xhc3MiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhbmNob3IiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJicmlkZ2VoZWFkIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icmVtYXJrIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaGlnaGxpZ2h0cyIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iZGVzY29iai5jbGFzcyI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFic3RyYWN0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYXV0aG9yYmx1cmIiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlcGlncmFwaCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8IS0tIENoYXJhY3Rlci1sZXZlbCBjbGFzc2VzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ieHJlZi5jaGFyLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDx4czplbGVtZW50IG5hbWU9Imdlbi5jaGFyLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDx4czplbGVtZW50IG5hbWU9ImxpbmsuY2hhci5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8IS0tIFRoZSBEb2NCb29rIFRDIG1heSBwcm9kdWNlIGFuIG9mZmljaWFsIEVCTkYgbW9kdWxlIGZvciBEb2NCb29rLiAtLT4KICA8IS0tIFRoaXMgUEUgcHJvdmlkZXMgdGhlIGhvb2sgYnkgd2hpY2ggaXQgY2FuIGJlIGluc2VydGVkIGludG8gdGhlIERURC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGVjaC5jaGFyLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDx4czpncm91cCBuYW1lPSJiYXNlLmNoYXIuY2xhc3MiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFuY2hvciIvPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImRvY2luZm8uY2hhci5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6Z3JvdXAgbmFtZT0ib3RoZXIuY2hhci5jbGFzcyI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9InJlbWFyayIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN1YnNjcmlwdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN1cGVyc2NyaXB0Ii8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImlubGluZW9iai5jaGFyLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEVudGl0aWVzIGZvciBjb250ZW50IG1vZGVscyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmdyb3VwIG5hbWU9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGVhYmJyZXYiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8IS0tIFJlZGVjbGFyYXRpb24gcGxhY2Vob2xkZXIgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLQogICAgRm9yIHJlZGVjbGFyaW5nIGVudGl0aWVzIHRoYXQgYXJlIGRlY2xhcmVkIGFmdGVyIHRoaXMgcG9pbnQgd2hpbGUKICAgIHJldGFpbmluZyB0aGVpciByZWZlcmVuY2VzIHRvIHRoZSBlbnRpdGllcyB0aGF0IGFyZSBkZWNsYXJlZCBiZWZvcmUKICAgIHRoaXMgcG9pbnQKICAtLT4KICA8IS0tIE9iamVjdC1sZXZlbCBtaXh0dXJlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLQogICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QgYWRtbiBsaW5lIHN5bnAgcGFyYSBpbmZtIGZvcm0gY21wZCBnZW4gIGRlc2MKICAgIENvbXBvbmVudCBtaXh0dXJlICAgICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFgKICAgIFNpZGViYXIgbWl4dHVyZSAgICAgICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgYSAgICBYCiAgICBGb290bm90ZSBtaXh0dXJlICAgICAgICBYICAgICAgICAgWCAgICBYICAgIFggICAgWAogICAgRXhhbXBsZSBtaXh0dXJlICAgICAgICAgWCAgICAgICAgIFggICAgWCAgICBYICAgIFgKICAgIEhpZ2hsaWdodHMgbWl4dHVyZSAgICAgIFggICAgWCAgICAgICAgICAgICAgWAogICAgUGFyYWdyYXBoIG1peHR1cmUgICAgICAgWCAgICAgICAgIFggICAgWCAgICAgICAgIFgKICAgIEFkbW9uaXRpb24gbWl4dHVyZSAgICAgIFggICAgICAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgYiAgICBjCiAgICBGaWd1cmUgbWl4dHVyZSAgICAgICAgICAgICAgICAgICAgWCAgICBYICAgICAgICAgWAogICAgVGFibGUgZW50cnkgbWl4dHVyZSAgICAgWCAgICBYICAgIFggICAgICAgICBYICAgIGQKICAgIEdsb3NzYXJ5IGRlZiBtaXh0dXJlICAgIFggICAgICAgICBYICAgIFggICAgWCAgICBYICAgICAgICAgZQogICAgTGVnYWwgbm90aWNlIG1peHR1cmUgICAgWCAgICBYICAgIFggICAgICAgICBYICAgIGYKICAgIAogICAgYS4gSnVzdCBQcm9jZWR1cmU7IG5vdCBTaWRlYmFyIGl0c2VsZiBvciBNc2dTZXQuCiAgICBiLiBObyBNc2dTZXQuCiAgICBjLiBObyBIaWdobGlnaHRzLgogICAgZC4gSnVzdCBHcmFwaGljOyBubyBvdGhlciBpbmZvcm1hbCBvYmplY3RzLgogICAgZS4gTm8gQW5jaG9yLCBCcmlkZ2VIZWFkLCBvciBIaWdobGlnaHRzLgogICAgZi4gSnVzdCBCbG9ja1F1b3RlOyBubyBvdGhlciBpbmZvcm1hbCBvYmplY3RzLgogIC0tPgogIDx4czpncm91cCBuYW1lPSJjb21wb25lbnQubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb21wb3VuZC5jbGFzcyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJnZW5vYmouY2xhc3MiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZGVzY29iai5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InNpZGViYXIubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwcm9jZWR1cmUiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZ2Vub2JqLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0icWFuZGFzZXQubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwcm9jZWR1cmUiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZ2Vub2JqLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0icmV2ZGVzY3JpcHRpb24ubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwcm9jZWR1cmUiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZ2Vub2JqLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iZm9vdG5vdGUubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJleGFtcGxlLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW5vcC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwcm9jZWR1cmUiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImhpZ2hsaWdodHMubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLQogICAgJWZvcm1hbC5jbGFzczsgaXMgZXhwbGljaXRseSBleGNsdWRlZCBmcm9tIG1hbnkgY29udGV4dHMgaW4gd2hpY2gKICAgIHBhcmFncmFwaHMgYXJlIHVzZWQKICAtLT4KICA8eHM6Z3JvdXAgbmFtZT0icGFyYS5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWRtb24uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImZvcm1hbC5jbGFzcyIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iYWRtb24ubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJvY2VkdXJlIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic2lkZWJhciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFuY2hvciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJyaWRnZWhlYWQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZW1hcmsiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJmaWd1cmUubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InRhYmVudHJ5Lm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJncmFwaGljIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibWVkaWFvYmplY3QiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9Imdsb3NzZGVmLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW5vcC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InJlbWFyayIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImxlZ2Fsbm90aWNlLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJibG9ja3F1b3RlIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0idGV4dG9iamVjdC5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWRtb24uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmxvY2txdW90ZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtZWRpYW9iamVjdC5taXgiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmdyb3VwIG5hbWU9Imxpc3RwcmVhbWJsZS5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czpncm91cCByZWY9Imdlbm9iai5jbGFzcyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJkZXNjb2JqLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8IS0tIENoYXJhY3Rlci1sZXZlbCBtaXh0dXJlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBzZ21sLmZlYXR1cmVzIC0tPgogIDwhLS0gbm90IFtzZ21sLmZlYXR1cmVzWyAtLT4KICA8IS0tIF1dIG5vdCBzZ21sLmZlYXR1cmVzIC0tPgogIDwhLS0KICAgICAgICAgICAgICAgICAgICAgICAgI1BDRCB4cmVmIHdvcmQgbGluayBjcHRyIGJhc2UgZG5mbyBvdGhyIGlub2IgKHN5bm9wKQogICAgcGFyYS5jaGFyLm1peCAgICAgICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYCiAgICB0aXRsZS5jaGFyLm1peCAgICAgICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFgKICAgIG5keHRlcm0uY2hhci5taXggICAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgYQogICAgY3B0ci5jaGFyLm1peCAgICAgICAgIFggICAgICAgICAgICAgIFggICAgWCAgICBYICAgICAgICAgWCAgICBhCiAgICBzbWFsbGNwdHIuY2hhci5taXggICAgWCAgICAgICAgICAgICAgICAgICBiICAgICAgICAgICAgICAgICAgIGEKICAgIHdvcmQuY2hhci5taXggICAgICAgICBYICAgICAgICAgYyAgICBYICAgICAgICAgWCAgICAgICAgIFggICAgYQogICAgZG9jaW5mby5jaGFyLm1peCAgICAgIFggICAgICAgICBkICAgIFggICAgYiAgICAgICAgICAgICAgWCAgICBhCiAgICAKICAgIGEuIEp1c3QgSW5saW5lR3JhcGhpYzsgbm8gSW5saW5lRXF1YXRpb24uCiAgICBiLiBKdXN0IFJlcGxhY2VhYmxlOyBubyBvdGhlciBjb21wdXRlciB0ZXJtcy4KICAgIGMuIEp1c3QgRW1waGFzaXMgYW5kIFRyYWRlbWFyazsgbm8gb3RoZXIgd29yZCBlbGVtZW50cy4KICAgIGQuIEp1c3QgQWNyb255bSwgRW1waGFzaXMsIGFuZCBUcmFkZW1hcms7IG5vIG90aGVyIHdvcmQgZWxlbWVudHMuCiAgLS0+CiAgPHhzOmdyb3VwIG5hbWU9InBhcmEuY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ4cmVmLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdlbi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRlY2guY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJhc2UuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZG9jaW5mby5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lb2JqLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InRpdGxlLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ieHJlZi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnZW4uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImRvY2luZm8uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW9iai5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJuZHh0ZXJtLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ieHJlZi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnZW4uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImRvY2luZm8uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZWdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJjcHRyLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJvdGhlci5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVncmFwaGljIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVtZWRpYW9iamVjdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJzbWFsbGNwdHIuY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXBsYWNlYWJsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgICA8L3hzOmNob2ljZT4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0id29yZC5jaGFyLm1peCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjcm9ueW0iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtcGhhc2lzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0cmFkZW1hcmsiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJhc2UuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZWdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImRvY2luZm8uY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtcGhhc2lzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0cmFkZW1hcmsiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlcGxhY2VhYmxlIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBFTlRJVFkgJSBiaWJsaW9jb21wb25lbnQubWl4IChzZWUgQmlibGlvZ3JhcGhpYyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSBFTlRJVFkgJSBwZXJzb24uaWRlbnQubWl4IChzZWUgQmlibGlvZ3JhcGhpYyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gRW50aXRpZXMgZm9yIGF0dHJpYnV0ZXMgYW5kIGF0dHJpYnV0ZSBjb21wb25lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEVmZmVjdGl2aXR5IGF0dHJpYnV0ZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLQogICAgQXJjaDogQ29tcHV0ZXIgb3IgY2hpcCBhcmNoaXRlY3R1cmUgdG8gd2hpY2ggZWxlbWVudCBhcHBsaWVzOyBubwogICAgZGVmYXVsdAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcmNoLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFyY2giLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gQ29uZGl0aW9uOiBHZW5lcmFsLXB1cnBvc2UgZWZmZWN0aXZpdHkgYXR0cmlidXRlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25kaXRpb24uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29uZGl0aW9uIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIENvbmZvcm1hbmNlOiBTdGFuZGFyZHMgY29uZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mb3JtYW5jZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb25mb3JtYW5jZSIgdHlwZT0ieHM6Tk1UT0tFTlMiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gT1M6IE9wZXJhdGluZyBzeXN0ZW0gdG8gd2hpY2ggZWxlbWVudCBhcHBsaWVzOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcyIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBSZXZpc2lvbjogRWRpdG9yaWFsIHJldmlzaW9uIHRvIHdoaWNoIGVsZW1lbnQgYmVsb25nczsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aXNpb24uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmV2aXNpb24iLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gU2VjdXJpdHk6IFNlY3VyaXR5IGNsYXNzaWZpY2F0aW9uOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN1cml0eS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWN1cml0eSIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgVXNlckxldmVsOiBMZXZlbCBvZiB1c2VyIGV4cGVyaWVuY2UgdG8gd2hpY2ggZWxlbWVudCBhcHBsaWVzOyBubwogICAgZGVmYXVsdAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ1c2VybGV2ZWwuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXNlcmxldmVsIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIFZlbmRvcjogQ29tcHV0ZXIgdmVuZG9yIHRvIHdoaWNoIGVsZW1lbnQgYXBwbGllczsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmVuZG9yLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZlbmRvciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBXb3Jkc2l6ZTogQ29tcHV0ZXIgd29yZCBzaXplICgzMiBiaXQsIDY0IGJpdCwgZXRjLik7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9IndvcmRzaXplLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndvcmRzaXplIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZWZmZWN0aXZpdHkuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyY2guYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25kaXRpb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25mb3JtYW5jZS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9zLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2aXNpb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN1cml0eS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InVzZXJsZXZlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZlbmRvci5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9IndvcmRzaXplLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBDb21tb24gYXR0cmlidXRlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gSWQ6IFVuaXF1ZSBpZGVudGlmaWVyIG9mIGVsZW1lbnQ7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlkLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlkIiB0eXBlPSJ4czpJRCIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgSWQ6IFVuaXF1ZSBpZGVudGlmaWVyIG9mIGVsZW1lbnQ7IGEgdmFsdWUgbXVzdCBiZSBzdXBwbGllZDsgbm8KICAgIGRlZmF1bHQKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaWRyZXEuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWQiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOklEIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBMYW5nOiBJbmRpY2F0b3Igb2YgbGFuZ3VhZ2UgaW4gd2hpY2ggZWxlbWVudCBpcyB3cml0dGVuLCBmb3IKICAgIHRyYW5zbGF0aW9uLCBjaGFyYWN0ZXIgc2V0IG1hbmFnZW1lbnQsIGV0Yy47IG5vIGRlZmF1bHQKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGFuZy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYW5nIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIFJlbWFwOiBQcmV2aW91cyByb2xlIG9mIGVsZW1lbnQgYmVmb3JlIGNvbnZlcnNpb247IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlbWFwLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbWFwIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIFJvbGU6IE5ldyByb2xlIG9mIGVsZW1lbnQgaW4gbG9jYWwgZW52aXJvbm1lbnQ7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm9sZSIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgWFJlZkxhYmVsOiBBbHRlcm5hdGUgbGFiZWxpbmcgc3RyaW5nIGZvciBYUmVmIHRleHQgZ2VuZXJhdGlvbjsKICAgIGRlZmF1bHQgaXMgdXN1YWxseSB0aXRsZSBvciBvdGhlciBhcHByb3ByaWF0ZSBsYWJlbCB0ZXh0IGFscmVhZHkKICAgIGNvbnRhaW5lZCBpbiBlbGVtZW50CiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InhyZWZsYWJlbC5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ4cmVmbGFiZWwiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0KICAgIFJldmlzaW9uRmxhZzogUmV2aXNpb24gc3RhdHVzIG9mIGVsZW1lbnQ7IGRlZmF1bHQgaXMgdGhhdCBlbGVtZW50CiAgICB3YXNuJ3QgcmV2aXNlZAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXZpc2lvbmZsYWcuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmV2aXNpb25mbGFnIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhbmdlZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhZGRlZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkZWxldGVkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im9mZiIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkaXI6IEJpZGlyZWN0aW9uYWwgb3ZlcnJpZGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImRpci5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkaXIiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsdHIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icnRsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxybyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJybG8iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0geG1sOmJhc2U6IGJhc2UgVVJJIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ4bWwtYmFzZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSByZWY9InhtbDpiYXNlIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIFJvbGUgaXMgaW5jbHVkZWQgZXhwbGljaXRseSBvbiBlYWNoIGVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbW1vbi5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaWQuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYW5nLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVtYXAuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4cmVmbGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZpc2lvbmZsYWcuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlZmZlY3Rpdml0eS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRpci5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InhtbC1iYXNlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBSb2xlIGlzIGluY2x1ZGVkIGV4cGxpY2l0bHkgb24gZWFjaCBlbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpZHJlcS5jb21tb24uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlkcmVxLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFuZy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlbWFwLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ieHJlZmxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2aXNpb25mbGFnLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZWZmZWN0aXZpdHkuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJkaXIuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4bWwtYmFzZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gU2VtaS1jb21tb24gYXR0cmlidXRlcyBhbmQgb3RoZXIgYXR0cmlidXRlIGVudGl0aWVzIC4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tCiAgICBFbnRpdHlSZWY6IE5hbWUgb2YgYW4gZXh0ZXJuYWwgZW50aXR5IGNvbnRhaW5pbmcgdGhlIGNvbnRlbnQKICAgIG9mIHRoZSBncmFwaGljCiAgLS0+CiAgPCEtLQogICAgRmlsZVJlZjogRmlsZW5hbWUsIHF1YWxpZmllZCBieSBhIHBhdGhuYW1lIGlmIGRlc2lyZWQsCiAgICBkZXNpZ25hdGluZyB0aGUgZmlsZSBjb250YWluaW5nIHRoZSBjb250ZW50IG9mIHRoZSBncmFwaGljCiAgLS0+CiAgPCEtLSBGb3JtYXQ6IE5vdGF0aW9uIG9mIHRoZSBlbGVtZW50IGNvbnRlbnQsIGlmIGFueSAtLT4KICA8IS0tIFNyY0NyZWRpdDogSW5mb3JtYXRpb24gYWJvdXQgdGhlIHNvdXJjZSBvZiB0aGUgR3JhcGhpYyAtLT4KICA8IS0tIFdpZHRoOiBTYW1lIGFzIENBTFMgcmVwcm93aWQgKGRlc2lyZWQgd2lkdGgpIC0tPgogIDwhLS0gRGVwdGg6IFNhbWUgYXMgQ0FMUyByZXByb2RlcCAoZGVzaXJlZCBkZXB0aCkgLS0+CiAgPCEtLQogICAgQWxpZ246IFNhbWUgYXMgQ0FMUyBocGxhY2Ugd2l0aCAnbm9uZScgcmVtb3ZlZDsgI0lNUExJRUQgbWVhbnMKICAgIGFwcGxpY2F0aW9uLXNwZWNpZmljCiAgLS0+CiAgPCEtLSBTY2FsZTogQ29uZmxhdGlvbiBvZiBDQUxTIGhzY2FsZSBhbmQgdnNjYWxlIC0tPgogIDwhLS0gU2NhbGVmaXQ6IFNhbWUgYXMgQ0FMUyBzY2FsZWZpdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3JhcGhpY3MuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW50aXR5cmVmIiB0eXBlPSJ4czpFTlRJVFkiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlsZXJlZiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmb3JtYXQiIHR5cGU9Im5vdGF0aW9uLmNsYXNzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNyY2NyZWRpdCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aWR0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250ZW50d2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVwdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29udGVudGRlcHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGVmdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaWdodCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZW50ZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1pZGRsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2NhbGUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2NhbGVmaXQiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgQWN0aW9uOiBLZXkgY29tYmluYXRpb24gdHlwZTsgZGVmYXVsdCBpcyB1bnNwZWNpZmllZCBpZiBvbmUKICAgIGNoaWxkIGVsZW1lbnQsIFNpbXVsIGlmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmU7IGlmIHZhbHVlIGlzCiAgICBPdGhlciwgdGhlIE90aGVyQWN0aW9uIGF0dHJpYnV0ZSBtdXN0IGhhdmUgYSBub25lbXB0eSB2YWx1ZQogIC0tPgogIDwhLS0gT3RoZXJBY3Rpb246IFVzZXItZGVmaW5lZCBrZXkgY29tYmluYXRpb24gdHlwZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5YWN0aW9uLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFjdGlvbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNsaWNrIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRvdWJsZS1jbGljayIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcmVzcyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZXEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2ltdWwiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3RoZXJhY3Rpb24iLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0KICAgIExhYmVsOiBJZGVudGlmeWluZyBudW1iZXIgb3Igc3RyaW5nOyBkZWZhdWx0IGlzIHVzdWFsbHkgdGhlCiAgICBhcHByb3ByaWF0ZSBudW1iZXIgb3Igc3RyaW5nIGF1dG9nZW5lcmF0ZWQgYnkgYSBmb3JtYXR0ZXIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGFiZWwuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWwiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0geG1sOnNwYWNlOiB3aGl0ZXNwYWNlIHRyZWF0bWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ieG1sLXNwYWNlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIHJlZj0ieG1sOnNwYWNlIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBGb3JtYXQ6IHdoZXRoZXIgZWxlbWVudCBpcyBhc3N1bWVkIHRvIGNvbnRhaW4gc2lnbmlmaWNhbnQgd2hpdGUKICAgIHNwYWNlCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmVzcGVjaWZpYy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmb3JtYXQiIGRlZmF1bHQ9ImxpbmVzcGVjaWZpYyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVzcGVjaWZpYyIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ieG1sLXNwYWNlLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsaW5lbnVtYmVyaW5nIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibnVtYmVyZWQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idW5udW1iZXJlZCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250aW51YXRpb24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb250aW51ZXMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVzdGFydHMiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RhcnRpbmdsaW5lbnVtYmVyIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxhbmd1YWdlIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIExpbmtlbmQ6IGxpbmsgdG8gcmVsYXRlZCBpbmZvcm1hdGlvbjsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGlua2VuZC5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsaW5rZW5kIiB0eXBlPSJ4czpJRFJFRiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBMaW5rZW5kOiByZXF1aXJlZCBsaW5rIHRvIHJlbGF0ZWQgaW5mb3JtYXRpb24gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmtlbmRyZXEuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGlua2VuZCIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6SURSRUYiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0KICAgIExpbmtlbmRzOiBsaW5rIHRvIG9uZSBvciBtb3JlIHNldHMgb2YgcmVsYXRlZCBpbmZvcm1hdGlvbjsgbm8KICAgIGRlZmF1bHQKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGlua2VuZHMuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGlua2VuZHMiIHR5cGU9InhzOklEUkVGUyIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1hcmsuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWFyayIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBNb3JlSW5mbzogd2hldGhlciBlbGVtZW50J3MgY29udGVudCBoYXMgYW4gYXNzb2NpYXRlZCBSZWZFbnRyeSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibW9yZWluZm8uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibW9yZWluZm8iIGRlZmF1bHQ9Im5vbmUiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZWZlbnRyeSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub25lIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIFBhZ2VudW06IG51bWJlciBvZiBwYWdlIG9uIHdoaWNoIGVsZW1lbnQgYXBwZWFyczsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFnZW51bS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwYWdlbnVtIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBTdGF0dXM6IEVkaXRvcmlhbCBvciBwdWJsaWNhdGlvbiBzdGF0dXMgb2YgdGhlIGVsZW1lbnQKICAgIGl0IGFwcGxpZXMgdG8sIHN1Y2ggYXMgImluIHJldmlldyIgb3IgImFwcHJvdmVkIGZvciBkaXN0cmlidXRpb24iCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0YXR1cy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGF0dXMiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0KICAgIFdpZHRoOiB3aWR0aCBvZiB0aGUgbG9uZ2VzdCBsaW5lIGluIHRoZSBlbGVtZW50IHRvIHdoaWNoIGl0CiAgICBwZXJ0YWlucywgaW4gbnVtYmVyIG9mIGNoYXJhY3RlcnMKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0id2lkdGguYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2lkdGgiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFRpdGxlIGVsZW1lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRpdGxlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgdGV4dCBvZiB0aGUgdGl0bGUgb2YgYSBzZWN0aW9uIG9mIGEgZG9jdW1lbnQgb3Igb2YgYSBmb3JtYWwgYmxvY2stbGV2ZWwgZWxlbWVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGl0bGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGl0bGUuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGl0bGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGl0bGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGl0bGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGl0bGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRpdGxlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdGl0bGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0aXRsZWFiYnJldi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIGFiYnJldmlhdGlvbiBvZiBhIFRpdGxlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0aXRsZWFiYnJldiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0aXRsZS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0aXRsZWFiYnJldi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0aXRsZWFiYnJldi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0aXRsZWFiYnJldi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRpdGxlYWJicmV2LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0aXRsZWFiYnJldi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRpdGxlYWJicmV2Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3VidGl0bGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBzdWJ0aXRsZSBvZiBhIGRvY3VtZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdWJ0aXRsZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0aXRsZS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJ0aXRsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdWJ0aXRsZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJ0aXRsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YnRpdGxlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdWJ0aXRsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN1YnRpdGxlLm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBCaWJsaW9ncmFwaGljIGVudGl0aWVzIGFuZCBlbGVtZW50cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0KICAgIFRoZSBiaWJsaW9ncmFwaGljIGVsZW1lbnRzIGFyZSB0eXBpY2FsbHkgdXNlZCBpbiB0aGUgZG9jdW1lbnQKICAgIGhpZXJhcmNoeS4gVGhleSBkbyBub3QgYXBwZWFyIGluIGNvbnRlbnQgbW9kZWxzIG9mIGluZm9ybWF0aW9uCiAgICBwb29sIGVsZW1lbnRzLiAgU2VlIGFsc28gdGhlIGRvY3VtZW50IGluZm9ybWF0aW9uIGVsZW1lbnRzLAogICAgYmVsb3cuCiAgLS0+CiAgPHhzOmdyb3VwIG5hbWU9InBlcnNvbi5pZGVudC5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJob25vcmlmaWMiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmaXJzdG5hbWUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdXJuYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZWFnZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im90aGVybmFtZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFmZmlsaWF0aW9uIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYXV0aG9yYmx1cmIiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb250cmliIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJiaWJsaW9jb21wb25lbnQubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWJicmV2Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWJzdHJhY3QiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZGRyZXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYXJ0cGFnZW51bXMiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhdXRob3IiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhdXRob3Jncm91cCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImF1dGhvcmluaXRpYWxzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvbWlzYyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb3NldCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbGxhYiIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbmZncm91cCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbnRyYWN0bnVtIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29udHJhY3RzcG9uc29yIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29weXJpZ2h0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29ycGF1dGhvciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvcnBuYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29ycGNyZWRpdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImRhdGUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlZGl0aW9uIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZWRpdG9yIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW52cGFydG51bWJlciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImlzYm4iLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpc3NuIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaXNzdWVudW0iLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvcmduYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvaWQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjaXRlYmlibGlvaWQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9zb3VyY2UiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9yZWxhdGlvbiIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb2NvdmVyYWdlIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ib3RoZXJjcmVkaXQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYWdlbnVtcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InByaW50aGlzdG9yeSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InByb2R1Y3RuYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJvZHVjdG51bWJlciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InB1YmRhdGUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwdWJsaXNoZXIiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwdWJsaXNoZXJuYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHVic251bWJlciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InJlbGVhc2VpbmZvIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icmV2aGlzdG9yeSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InNlcmllc3ZvbG51bXMiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InRpdGxlIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0idGl0bGVhYmJyZXYiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ2b2x1bWVudW0iLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjaXRldGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwZXJzb25uYW1lIi8+CiAgICAgIDx4czpncm91cCByZWY9InBlcnNvbi5pZGVudC5taXgiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDwhLS0gSSBkb24ndCB0aGluayB0aGlzIGlzIHdlbGwgcGxhY2VkLCBidXQgaXQgbmVlZHMgdG8gYmUgaGVyZSBiZWNhdXNlIG9mIC0tPgogIDwhLS0gdGhlIHJlZmVyZW5jZSB0byBiaWJsaW9jb21wb25lbnQubWl4IC0tPgogIDx4czpncm91cCBuYW1lPSJpbmZvLmNsYXNzIj4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JhcGhpYyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im1lZGlhb2JqZWN0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGVnYWxub3RpY2UiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtb2Rlc3BlYyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN1YmplY3RzZXQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJrZXl3b3Jkc2V0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaXRlcm1zZXQiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iYmlibGlvY29tcG9uZW50Lm1peCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8IS0tIEJpYmxpb0xpc3QgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9saXN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHdyYXBwZXIgZm9yIGEgc2V0IG9mIGJpYmxpb2dyYXBoeSBlbnRyaWVzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9saXN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibGlzdC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9lbnRyeSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9taXhlZCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9saXN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb2xpc3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvbGlzdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2xpc3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb2xpc3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9saXN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkFuIGVudHJ5IGluIGEgQmlibGlvZ3JhcGh5LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9lbnRyeSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYXJ0aWNsZWluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiaWJsaW9jb21wb25lbnQubWl4Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9lbnRyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiaWJsaW9lbnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9lbnRyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2VudHJ5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9lbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb2VudHJ5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvbWl4ZWQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkFuIGVudHJ5IGluIGEgQmlibGlvZ3JhcGh5LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9taXhlZCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9ImJpYmxpb2NvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb21zZXQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb21peGVkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb21peGVkLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb21peGVkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvbWl4ZWQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb21peGVkLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYmlibGlvbWl4ZWQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcnRpY2xlaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6TWV0YS1pbmZvcm1hdGlvbiBmb3IgYW4gQXJ0aWNsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXJ0aWNsZWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcnRpY2xlaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhcnRpY2xlaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcnRpY2xlaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFydGljbGVpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhcnRpY2xlaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFydGljbGVpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvc2V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBICJyYXciIGNvbnRhaW5lciBmb3IgcmVsYXRlZCBiaWJsaW9ncmFwaGljIGluZm9ybWF0aW9uLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9zZXQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYmlibGlvY29tcG9uZW50Lm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9zZXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmlibGlvc2V0LmVsZW1lbnQgLS0+CiAgPCEtLSBSZWxhdGlvbjogUmVsYXRpb25zaGlwIG9mIGVsZW1lbnRzIGNvbnRhaW5lZCB3aXRoaW4gQmlibGlvU2V0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9zZXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbGF0aW9uIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9zZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb3NldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb3NldC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb21zZXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgImNvb2tlZCIgY29udGFpbmVyIGZvciByZWxhdGVkIGJpYmxpb2dyYXBoaWMgaW5mb3JtYXRpb24uIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb21zZXQiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiaWJsaW9jb21wb25lbnQubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9tc2V0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9tc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb21zZXQuZWxlbWVudCAtLT4KICA8IS0tIFJlbGF0aW9uOiBSZWxhdGlvbnNoaXAgb2YgZWxlbWVudHMgY29udGFpbmVkIHdpdGhpbiBCaWJsaW9NU2V0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9tc2V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWxhdGlvbiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvbXNldC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmlibGlvbXNldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb21zZXQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9taXNjLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpVbnR5cGVkIGJpYmxpb2dyYXBoaWMgaW5mb3JtYXRpb24uIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb21pc2MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9taXNjLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb21pc2MuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvbWlzYy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb21pc2Mucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb21pc2MuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9taXNjLm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBTdWJqZWN0LCBLZXl3b3JkLCBhbmQgSVRlcm1TZXQgZWxlbWVudHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJqZWN0c2V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHNldCBvZiB0ZXJtcyBkZXNjcmliaW5nIHRoZSBzdWJqZWN0IG1hdHRlciBvZiBhIGRvY3VtZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdWJqZWN0c2V0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InN1YmplY3QiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3ViamVjdHNldC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdWJqZWN0c2V0LmVsZW1lbnQgLS0+CiAgPCEtLSBTY2hlbWU6IENvbnRyb2xsZWQgdm9jYWJ1bGFyeSBlbXBsb3llZCBpbiBTdWJqZWN0VGVybXMgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YmplY3RzZXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjaGVtZSIgdHlwZT0ieHM6Tk1UT0tFTiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3ViamVjdHNldC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3ViamVjdHNldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN1YmplY3RzZXQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJqZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpPbmUgb2YgYSBncm91cCBvZiB0ZXJtcyBkZXNjcmliaW5nIHRoZSBzdWJqZWN0IG1hdHRlciBvZiBhIGRvY3VtZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdWJqZWN0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InN1YmplY3R0ZXJtIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YmplY3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3ViamVjdC5lbGVtZW50IC0tPgogIDwhLS0KICAgIFdlaWdodDogUmFua2luZyBvZiB0aGlzIGdyb3VwIG9mIFN1YmplY3RUZXJtcyByZWxhdGl2ZQogICAgdG8gb3RoZXJzLCAwIGlzIGxvdywgbm8gaGlnaGVzdCB2YWx1ZSBzcGVjaWZpZWQKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3ViamVjdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2VpZ2h0Ii8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJqZWN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdWJqZWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3ViamVjdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YmplY3R0ZXJtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHRlcm0gaW4gYSBncm91cCBvZiB0ZXJtcyBkZXNjcmliaW5nIHRoZSBzdWJqZWN0IG1hdHRlciBvZiBhIGRvY3VtZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdWJqZWN0dGVybSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJqZWN0dGVybS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdWJqZWN0dGVybS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJqZWN0dGVybS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YmplY3R0ZXJtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdWJqZWN0dGVybS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN1YmplY3R0ZXJtLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBzdWJqZWN0c2V0LmNvbnRlbnQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJrZXl3b3Jkc2V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHNldCBvZiBrZXl3b3JkcyBkZXNjcmliaW5nIHRoZSBjb250ZW50IG9mIGEgZG9jdW1lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImtleXdvcmRzZXQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ia2V5d29yZCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXl3b3Jkc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGtleXdvcmRzZXQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5d29yZHNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleXdvcmRzZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGtleXdvcmRzZXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBrZXl3b3Jkc2V0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5d29yZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6T25lIG9mIGEgc2V0IG9mIGtleXdvcmRzIGRlc2NyaWJpbmcgdGhlIGNvbnRlbnQgb2YgYSBkb2N1bWVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ia2V5d29yZCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXl3b3JkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGtleXdvcmQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5d29yZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleXdvcmQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGtleXdvcmQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBrZXl3b3JkLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBrZXl3b3Jkc2V0LmNvbnRlbnQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpdGVybXNldC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBzZXQgb2YgaW5kZXggdGVybXMgaW4gdGhlIG1ldGEtaW5mb3JtYXRpb24gb2YgYSBkb2N1bWVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaXRlcm1zZXQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5kZXh0ZXJtIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Iml0ZXJtc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGl0ZXJtc2V0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Iml0ZXJtc2V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaXRlcm1zZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGl0ZXJtc2V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaXRlcm1zZXQubW9kdWxlIC0tPgogIDwhLS0gQmlibGlvZ3JhcGhpYyBpbmZvIGZvciAiYmxvY2tzIiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmxvY2tpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpNZXRhLWluZm9ybWF0aW9uIGZvciBhIGJsb2NrIGVsZW1lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImJsb2NraW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJsb2NraW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBibG9ja2luZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmxvY2tpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmxvY2tpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBibG9ja2luZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBibG9ja2luZm8ubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIENvbXBvdW5kIChzZWN0aW9uLWlzaCkgZWxlbWVudHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBNZXNzYWdlIHNldCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dzZXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgZGV0YWlsZWQgc2V0IG9mIG1lc3NhZ2VzLCB1c3VhbGx5IGVycm9yIG1lc3NhZ2VzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dzZXQiIHN1YnN0aXR1dGlvbkdyb3VwPSJjb21wb3VuZC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtc2dlbnRyeSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlbXNnZW50cnkiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1zZ3NldC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dzZXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dzZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1zZ3NldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1zZ3NldC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2VudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHdyYXBwZXIgZm9yIGFuIGVudHJ5IGluIGEgbWVzc2FnZSBzZXQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ2VudHJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1zZyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJtc2dpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtc2dleHBsYW4iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnZW50cnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnZW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dlbnRyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpbXBsZW1zZ2VudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHdyYXBwZXIgZm9yIGEgc2ltcGxlciBlbnRyeSBpbiBhIG1lc3NhZ2Ugc2V0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzaW1wbGVtc2dlbnRyeSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1zZ3RleHQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtc2dleHBsYW4iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2ltcGxlbXNnZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlbXNnZW50cnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2ltcGxlbXNnZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImF1ZGllbmNlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxldmVsIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9yaWdpbiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2ltcGxlbXNnZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNpbXBsZW1zZ2VudHJ5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlbXNnZW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2cucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgbWVzc2FnZSBpbiBhIG1lc3NhZ2Ugc2V0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2ciPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtc2dtYWluIi8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibXNnc3ViIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1zZ3JlbCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2cuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnbWFpbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIHByaW1hcnkgY29tcG9uZW50IG9mIGEgbWVzc2FnZSBpbiBhIG1lc3NhZ2Ugc2V0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dtYWluIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibXNndGV4dCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dtYWluLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1zZ21haW4uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnbWFpbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ21haW4ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1zZ21haW4uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dtYWluLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnc3ViLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHN1YmNvbXBvbmVudCBvZiBhIG1lc3NhZ2UgaW4gYSBtZXNzYWdlIHNldC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibXNnc3ViIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibXNndGV4dCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dzdWIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnc3ViLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ3N1Yi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ3N1Yi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnc3ViLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnc3ViLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNncmVsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHJlbGF0ZWQgY29tcG9uZW50IG9mIGEgbWVzc2FnZSBpbiBhIG1lc3NhZ2Ugc2V0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dyZWwiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtc2d0ZXh0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ3JlbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dyZWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNncmVsLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNncmVsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dyZWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dyZWwubW9kdWxlIC0tPgogIDwhLS0gTXNnVGV4dCAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2luZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkluZm9ybWF0aW9uIGFib3V0IGEgbWVzc2FnZSBpbiBhIG1lc3NhZ2Ugc2V0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1zZ2xldmVsIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtc2dvcmlnIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtc2dhdWQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ2luZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1zZ2luZm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dsZXZlbC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIGxldmVsIG9mIGltcG9ydGFuY2Ugb3Igc2V2ZXJpdHkgb2YgYSBtZXNzYWdlIGluIGEgbWVzc2FnZSBzZXQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ2xldmVsIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dsZXZlbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dsZXZlbC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dsZXZlbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ2xldmVsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dsZXZlbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1zZ2xldmVsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnb3JpZy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIG9yaWdpbiBvZiBhIG1lc3NhZ2UgaW4gYSBtZXNzYWdlIHNldC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibXNnb3JpZyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnb3JpZy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dvcmlnLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ29yaWcuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dvcmlnLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dvcmlnLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnb3JpZy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2F1ZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIGF1ZGllbmNlIHRvIHdoaWNoIGEgbWVzc2FnZSBpbiBhIG1lc3NhZ2Ugc2V0IGlzIHJlbGV2YW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dhdWQiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dhdWQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnYXVkLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2F1ZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ2F1ZC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnYXVkLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnYXVkLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnZXhwbGFuLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpFeHBsYW5hdG9yeSBtYXRlcmlhbCByZWxhdGluZyB0byBhIG1lc3NhZ2UgaW4gYSBtZXNzYWdlIHNldC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibXNnZXhwbGFuIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZSIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ2V4cGxhbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dleHBsYW4uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnZXhwbGFuLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnZXhwbGFuLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dleHBsYW4uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dleHBsYW4ubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIG1zZ3NldC5jb250ZW50Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGFzay5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSB0YXNrIHRvIGJlIGNvbXBsZXRlZC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGFzayIgc3Vic3RpdHV0aW9uR3JvdXA9ImNvbXBvdW5kLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0YXNrc3VtbWFyeSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0YXNrcHJlcmVxdWlzaXRlcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icHJvY2VkdXJlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJleGFtcGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRhc2tyZWxhdGVkIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRhc2suYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGFzay5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0YXNrLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGFzay5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdGFzay5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRhc2subW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0YXNrc3VtbWFyeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBzdW1tYXJ5IG9mIGEgdGFzay4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGFza3N1bW1hcnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YXNrc3VtbWFyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0YXNrc3VtbWFyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0YXNrc3VtbWFyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRhc2tzdW1tYXJ5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0YXNrc3VtbWFyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRhc2tzdW1tYXJ5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGFza3ByZXJlcXVpc2l0ZXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBwcmVyZXF1aXNpdGVzIGZvciBhIHRhc2suIC0tPgogIDx4czplbGVtZW50IG5hbWU9InRhc2twcmVyZXF1aXNpdGVzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGFza3ByZXJlcXVpc2l0ZXMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGFza3ByZXJlcXVpc2l0ZXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGFza3ByZXJlcXVpc2l0ZXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YXNrcHJlcmVxdWlzaXRlcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdGFza3ByZXJlcXVpc2l0ZXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0YXNrcHJlcmVxdWlzaXRlcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRhc2tyZWxhdGVkLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpJbmZvcm1hdGlvbiByZWxhdGVkIHRvIGEgdGFzay4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGFza3JlbGF0ZWQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YXNrcmVsYXRlZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0YXNrcmVsYXRlZC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0YXNrcmVsYXRlZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRhc2tyZWxhdGVkLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0YXNrcmVsYXRlZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRhc2tyZWxhdGVkLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiB0YXNrLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gUWFuZEFTZXQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxYW5kYXNldC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBxdWVzdGlvbi1hbmQtYW5zd2VyIHNldC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icWFuZGFzZXQiIHN1YnN0aXR1dGlvbkdyb3VwPSJjb21wb3VuZC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InFhbmRhc2V0Lm1peCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJxYW5kYWRpdiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icWFuZGFlbnRyeSIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJxYW5kYXNldC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBxYW5kYXNldC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxYW5kYXNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVmYXVsdGxhYmVsIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icWFuZGEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibnVtYmVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vbmUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InFhbmRhc2V0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBxYW5kYXNldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHFhbmRhc2V0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icWFuZGFkaXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgdGl0bGVkIGRpdmlzaW9uIGluIGEgUWFuZEFTZXQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InFhbmRhZGl2Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icWFuZGFzZXQubWl4Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InFhbmRhZGl2Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJxYW5kYWVudHJ5Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InFhbmRhZGl2LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHFhbmRhZGl2LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InFhbmRhZGl2LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icWFuZGFkaXYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHFhbmRhZGl2LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcWFuZGFkaXYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxYW5kYWVudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHF1ZXN0aW9uL2Fuc3dlciBzZXQgd2l0aGluIGEgUWFuZEFTZXQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InFhbmRhZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJyZXZoaXN0b3J5Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJxdWVzdGlvbiIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYW5zd2VyIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InFhbmRhZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcWFuZGFlbnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxYW5kYWVudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icWFuZGFlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcWFuZGFlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHFhbmRhZW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxdWVzdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBxdWVzdGlvbiBpbiBhIFFhbmRBU2V0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJxdWVzdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ibGFiZWwiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icWFuZGFzZXQubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InF1ZXN0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHF1ZXN0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InF1ZXN0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icXVlc3Rpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHF1ZXN0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcXVlc3Rpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhbnN3ZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkFuIGFuc3dlciB0byBhIHF1ZXN0aW9uIHBvc2VkIGluIGEgUWFuZEFTZXQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImFuc3dlciI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ibGFiZWwiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJxYW5kYXNldC5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InFhbmRhZW50cnkiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYW5zd2VyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFuc3dlci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhbnN3ZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhbnN3ZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFuc3dlci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFuc3dlci5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxhYmVsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGxhYmVsIG9uIGEgUXVlc3Rpb24gb3IgQW5zd2VyLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJsYWJlbCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ3b3JkLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxhYmVsLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxhYmVsLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxhYmVsLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGFiZWwubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHFhbmRhc2V0LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gUHJvY2VkdXJlIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvY2VkdXJlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGxpc3Qgb2Ygb3BlcmF0aW9ucyB0byBiZSBwZXJmb3JtZWQgaW4gYSB3ZWxsLWRlZmluZWQgc2VxdWVuY2UuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InByb2NlZHVyZSIgc3Vic3RpdHV0aW9uR3JvdXA9ImNvbXBvdW5kLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InN0ZXAiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvY2VkdXJlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByb2NlZHVyZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9jZWR1cmUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9jZWR1cmUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByb2NlZHVyZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByb2NlZHVyZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0ZXAucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgdW5pdCBvZiBhY3Rpb24gaW4gYSBwcm9jZWR1cmUuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InN0ZXAiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPHhzOnNlcXVlbmNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic3Vic3RlcHMiLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic3RlcGFsdGVybmF0aXZlcyIvPgogICAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJzdGVwcyIvPgogICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic3RlcGFsdGVybmF0aXZlcyIvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RlcC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdGVwLmVsZW1lbnQgLS0+CiAgPCEtLSBQZXJmb3JtYW5jZTogV2hldGhlciB0aGUgU3RlcCBtdXN0IGJlIHBlcmZvcm1lZCAtLT4KICA8IS0tIG5vdCAjUkVRVUlSRUQhIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdGVwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwZXJmb3JtYW5jZSIgZGVmYXVsdD0icmVxdWlyZWQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHRpb25hbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXF1aXJlZCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RlcC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3RlcC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN0ZXAubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJzdGVwcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSB3cmFwcGVyIGZvciBzdGVwcyB0aGF0IG9jY3VyIHdpdGhpbiBzdGVwcyBpbiBhIHByb2NlZHVyZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3Vic3RlcHMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic3RlcCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJzdGVwcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdWJzdGVwcy5lbGVtZW50IC0tPgogIDwhLS0gUGVyZm9ybWFuY2U6IHdoZXRoZXIgZW50aXJlIHNldCBvZiBzdWJzdGVwcyBtdXN0IGJlIHBlcmZvcm1lZCAtLT4KICA8IS0tIG5vdCAjUkVRVUlSRUQhIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJzdGVwcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGVyZm9ybWFuY2UiIGRlZmF1bHQ9InJlcXVpcmVkIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3B0aW9uYWwiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVxdWlyZWQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YnN0ZXBzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdWJzdGVwcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN1YnN0ZXBzLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RlcGFsdGVybmF0aXZlcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QWx0ZXJuYXRpdmUgc3RlcHMgaW4gYSBwcm9jZWR1cmUuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InN0ZXBhbHRlcm5hdGl2ZXMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic3RlcCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGVwYWx0ZXJuYXRpdmVzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN0ZXBhbHRlcm5hdGl2ZXMuZWxlbWVudCAtLT4KICA8IS0tIFBlcmZvcm1hbmNlOiBXaGV0aGVyIChvbmUgb2YpIHRoZSBhbHRlcm5hdGl2ZXMgbXVzdCBiZSBwZXJmb3JtZWQgLS0+CiAgPCEtLSBub3QgI1JFUVVJUkVEISAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RlcGFsdGVybmF0aXZlcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGVyZm9ybWFuY2UiIGRlZmF1bHQ9InJlcXVpcmVkIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3B0aW9uYWwiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVxdWlyZWQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0ZXBhbHRlcm5hdGl2ZXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN0ZXBhbHRlcm5hdGl2ZXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzdGVwYWx0ZXJuYXRpdmVzLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBwcm9jZWR1cmUuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBTaWRlYmFyIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaWRlYmFyaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6TWV0YS1pbmZvcm1hdGlvbiBmb3IgYSBTaWRlYmFyLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzaWRlYmFyaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpZGViYXJpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNpZGViYXJpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpZGViYXJpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2lkZWJhcmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNpZGViYXJpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2lkZWJhcmluZm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaWRlYmFyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHBvcnRpb24gb2YgYSBkb2N1bWVudCB0aGF0IGlzIGlzb2xhdGVkIGZyb20gdGhlIG1haW4gbmFycmF0aXZlIGZsb3cuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNpZGViYXIiIHN1YnN0aXR1dGlvbkdyb3VwPSJjb21wb3VuZC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic2lkZWJhcmluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpZGViYXIubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpZGViYXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2lkZWJhci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaWRlYmFyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2lkZWJhci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2lkZWJhci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNpZGViYXIubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHNpZGViYXIuY29udGVudC5tb2RlbCAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBQYXJhZ3JhcGgtcmVsYXRlZCBlbGVtZW50cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhYnN0cmFjdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBzdW1tYXJ5LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJhYnN0cmFjdCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFic3RyYWN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFic3RyYWN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFic3RyYWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWJzdHJhY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFic3RyYWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYWJzdHJhY3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdXRob3JibHVyYi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBzaG9ydCBkZXNjcmlwdGlvbiBvciBub3RlIGFib3V0IGFuIGF1dGhvci4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXV0aG9yYmx1cmIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdXRob3JibHVyYi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhdXRob3JibHVyYi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdXRob3JibHVyYi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1dGhvcmJsdXJiLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhdXRob3JibHVyYi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGF1dGhvcmJsdXJiLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGVyc29uYmx1cmIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgc2hvcnQgZGVzY3JpcHRpb24gb3Igbm90ZSBhYm91dCBhIHBlcnNvbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGVyc29uYmx1cmIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwZXJzb25ibHVyYi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwZXJzb25ibHVyYi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwZXJzb25ibHVyYi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBlcnNvbmJsdXJiLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwZXJzb25ibHVyYi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBlcnNvbmJsdXJiLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmxvY2txdW90ZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBxdW90YXRpb24gc2V0IG9mZiBmcm9tIHRoZSBtYWluIHRleHQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImJsb2NrcXVvdGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImF0dHJpYnV0aW9uIi8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmxvY2txdW90ZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBibG9ja3F1b3RlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJsb2NrcXVvdGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJibG9ja3F1b3RlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBibG9ja3F1b3RlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYmxvY2txdW90ZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF0dHJpYnV0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgc291cmNlIG9mIGEgYmxvY2sgcXVvdGUgb3IgZXBpZ3JhcGguIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImF0dHJpYnV0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXR0cmlidXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXR0cmlidXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXR0cmlidXRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdHRyaWJ1dGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXR0cmlidXRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhdHRyaWJ1dGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJyaWRnZWhlYWQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgZnJlZS1mbG9hdGluZyBoZWFkaW5nLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJicmlkZ2VoZWFkIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRpdGxlLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJyaWRnZWhlYWQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYnJpZGdlaGVhZC5lbGVtZW50IC0tPgogIDwhLS0KICAgIFJlbmRlcmFzOiBJbmRpY2F0ZXMgdGhlIGZvcm1hdCBpbiB3aGljaCB0aGUgQnJpZGdlSGVhZAogICAgc2hvdWxkIGFwcGVhcgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJicmlkZ2VoZWFkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZW5kZXJhcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im90aGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QxIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3Q0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3Q1Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJicmlkZ2VoZWFkLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBicmlkZ2VoZWFkLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYnJpZGdlaGVhZC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlbWFyay5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSByZW1hcmsgKG9yIGNvbW1lbnQpIGludGVuZGVkIGZvciBwcmVzZW50YXRpb24gaW4gYSBkcmFmdCBtYW51c2NyaXB0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZW1hcmsiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZW1hcmsuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVtYXJrLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlbWFyay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlbWFyay5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVtYXJrLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVtYXJrLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXBpZ3JhcGgucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgc2hvcnQgaW5zY3JpcHRpb24gYXQgdGhlIGJlZ2lubmluZyBvZiBhIGRvY3VtZW50IG9yIGNvbXBvbmVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXBpZ3JhcGgiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImF0dHJpYnV0aW9uIi8+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibGl0ZXJhbGxheW91dCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcGlncmFwaC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlcGlncmFwaC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcGlncmFwaC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVwaWdyYXBoLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlcGlncmFwaC5hdHRsaXN0IC0tPgogIDwhLS0gQXR0cmlidXRpb24gKGRlZmluZWQgYWJvdmUpIC0tPgogIDwhLS0gZW5kIG9mIGVwaWdyYXBoLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZm9vdG5vdGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgZm9vdG5vdGUuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImZvb3Rub3RlIiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZm9vdG5vdGUubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZvb3Rub3RlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZvb3Rub3RlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvb3Rub3RlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmb290bm90ZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZm9vdG5vdGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmb290bm90ZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImhpZ2hsaWdodHMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgc3VtbWFyeSBvZiB0aGUgbWFpbiBwb2ludHMgb2YgdGhlIGRpc2N1c3NlZCBjb21wb25lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImhpZ2hsaWdodHMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaGlnaGxpZ2h0cy5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaGlnaGxpZ2h0cy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBoaWdobGlnaHRzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImhpZ2hsaWdodHMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJoaWdobGlnaHRzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBoaWdobGlnaHRzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaGlnaGxpZ2h0cy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvcm1hbHBhcmEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgcGFyYWdyYXBoIHdpdGggYSB0aXRsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZm9ybWFscGFyYSIgc3Vic3RpdHV0aW9uR3JvdXA9InBhcmEuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmb3JtYWxwYXJhLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZvcm1hbHBhcmEuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZm9ybWFscGFyYS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZvcm1hbHBhcmEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZvcm1hbHBhcmEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmb3JtYWxwYXJhLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFyYS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBwYXJhZ3JhcGguIC0tPgogIDx4czplbGVtZW50IG5hbWU9InBhcmEiIHN1YnN0aXR1dGlvbkdyb3VwPSJwYXJhLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICAgIDx4czpncm91cCByZWY9InBhcmEubWl4Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJhLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBhcmEuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFyYS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcmEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBhcmEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwYXJhLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2ltcGFyYS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBwYXJhZ3JhcGggdGhhdCBjb250YWlucyBvbmx5IHRleHQgYW5kIGlubGluZSBtYXJrdXAsIG5vIGJsb2NrIGVsZW1lbnRzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzaW1wYXJhIiBzdWJzdGl0dXRpb25Hcm91cD0icGFyYS5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpbXBhcmEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2ltcGFyYS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaW1wYXJhLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2ltcGFyYS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2ltcGFyYS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNpbXBhcmEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhZG1vbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBub3RlIG9mIGNhdXRpb24uIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNhdXRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJhZG1vbi5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYWRtb24ubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNhdXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY2F1dGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYXV0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRtb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNhdXRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGRvYzpBbiBhZG1vbml0aW9uIHNldCBvZmYgZnJvbSB0aGUgdGV4dC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW1wb3J0YW50IiBzdWJzdGl0dXRpb25Hcm91cD0iYWRtb24uY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFkbW9uLm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbXBvcnRhbnQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW1wb3J0YW50LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImltcG9ydGFudC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFkbW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbXBvcnRhbnQuYXR0bGlzdCAtLT4KICA8IS0tIGRvYzpBIG1lc3NhZ2Ugc2V0IG9mZiBmcm9tIHRoZSB0ZXh0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJub3RlIiBzdWJzdGl0dXRpb25Hcm91cD0iYWRtb24uY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFkbW9uLm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJub3RlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG5vdGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibm90ZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFkbW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBub3RlLmF0dGxpc3QgLS0+CiAgPCEtLSBkb2M6QSBzdWdnZXN0aW9uIHRvIHRoZSB1c2VyLCBzZXQgb2ZmIGZyb20gdGhlIHRleHQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InRpcCIgc3Vic3RpdHV0aW9uR3JvdXA9ImFkbW9uLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZSIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJhZG1vbi5taXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGlwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRpcC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0aXAuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhZG1vbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdGlwLmF0dGxpc3QgLS0+CiAgPCEtLSBkb2M6QW4gYWRtb25pdGlvbiBzZXQgb2ZmIGZyb20gdGhlIHRleHQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9Indhcm5pbmciIHN1YnN0aXR1dGlvbkdyb3VwPSJhZG1vbi5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYWRtb24ubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Indhcm5pbmcuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygd2FybmluZy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ3YXJuaW5nLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRtb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHdhcm5pbmcuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhZG1vbi5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gTGlzdHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEdsb3NzTGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzbGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSB3cmFwcGVyIGZvciBhIHNldCBvZiBHbG9zc0VudHJ5cy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ2xvc3NsaXN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibGlzdC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imdsb3NzZW50cnkiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NsaXN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdsb3NzbGlzdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2xpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc2xpc3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3NzbGlzdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzbGlzdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkFuIGVudHJ5IGluIGEgR2xvc3Nhcnkgb3IgR2xvc3NMaXN0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJnbG9zc2VudHJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZ2xvc3N0ZXJtIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImFjcm9ueW0iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYWJicmV2Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJldmhpc3RvcnkiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnbG9zc3NlZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ2xvc3NkZWYiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NlbnRyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBnbG9zc2VudHJ5LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU29ydEFzOiBTdHJpbmcgYnkgd2hpY2ggdGhlIEdsb3NzRW50cnkgaXMgdG8gYmUgc29ydGVkCiAgICAoYWxwaGFiZXRpemVkKSBpbiBsaWV1IG9mIGl0cyBwcm9wZXIgY29udGVudAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2VudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzb3J0YXMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3NzZW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBnbG9zc2VudHJ5Lm1vZHVsZSAtLT4KICA8IS0tIEdsb3NzVGVybSAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzZGVmLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGRlZmluaXRpb24gaW4gYSBHbG9zc0VudHJ5LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJnbG9zc2RlZiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ2xvc3NkZWYubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJnbG9zc3NlZWFsc28iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NkZWYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ2xvc3NkZWYuZWxlbWVudCAtLT4KICA8IS0tIFN1YmplY3Q6IExpc3Qgb2Ygc3ViamVjdHM7IGtleXdvcmRzIGZvciB0aGUgZGVmaW5pdGlvbiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NkZWYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN1YmplY3QiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzZGVmLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBnbG9zc2RlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzZGVmLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NzZWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgY3Jvc3MtcmVmZXJlbmNlIGZyb20gb25lIEdsb3NzRW50cnkgdG8gYW5vdGhlci4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ2xvc3NzZWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc3NlZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBnbG9zc3NlZS5lbGVtZW50IC0tPgogIDwhLS0KICAgIE90aGVyVGVybTogUmVmZXJlbmNlIHRvIHRoZSBHbG9zc0VudHJ5IHdob3NlIEdsb3NzVGVybQogICAgc2hvdWxkIGJlIGRpc3BsYXllZCBhdCB0aGUgcG9pbnQgb2YgdGhlIEdsb3NzU2VlCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3Nzc2VlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcnRlcm0iIHR5cGU9InhzOklEUkVGIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc3NlZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ2xvc3NzZWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBnbG9zc3NlZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3Nzc2VlYWxzby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBjcm9zcy1yZWZlcmVuY2UgZnJvbSBvbmUgR2xvc3NFbnRyeSB0byBhbm90aGVyLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJnbG9zc3NlZWFsc28iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc3NlZWFsc28uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ2xvc3NzZWVhbHNvLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgT3RoZXJUZXJtOiBSZWZlcmVuY2UgdG8gdGhlIEdsb3NzRW50cnkgd2hvc2UgR2xvc3NUZXJtCiAgICBzaG91bGQgYmUgZGlzcGxheWVkIGF0IHRoZSBwb2ludCBvZiB0aGUgR2xvc3NTZWVBbHNvCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3Nzc2VlYWxzby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3RoZXJ0ZXJtIiB0eXBlPSJ4czpJRFJFRiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NzZWVhbHNvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBnbG9zc3NlZWFsc28uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBnbG9zc3NlZWFsc28ubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzZW50cnkuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBJdGVtaXplZExpc3QgYW5kIE9yZGVyZWRMaXN0IC4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpdGVtaXplZGxpc3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgbGlzdCBpbiB3aGljaCBlYWNoIGVudHJ5IGlzIG1hcmtlZCB3aXRoIGEgYnVsbGV0IG9yIG90aGVyIGRpbmdiYXQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9Iml0ZW1pemVkbGlzdCIgc3Vic3RpdHV0aW9uR3JvdXA9Imxpc3QuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJsaXN0cHJlYW1ibGUubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibGlzdGl0ZW0iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaXRlbWl6ZWRsaXN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGl0ZW1pemVkbGlzdC5lbGVtZW50IC0tPgogIDwhLS0KICAgIFNwYWNpbmc6IFdoZXRoZXIgdGhlIHZlcnRpY2FsIHNwYWNlIGluIHRoZSBsaXN0IHNob3VsZCBiZQogICAgY29tcHJlc3NlZAogIC0tPgogIDwhLS0KICAgIE1hcms6IEtleXdvcmQsIGUuZy4sIGJ1bGxldCwgZGFzaCwgY2hlY2tib3gsIG5vbmU7CiAgICBsaXN0IG9mIGtleXdvcmRzIGFuZCBkZWZhdWx0cyBhcmUgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaXRlbWl6ZWRsaXN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGFjaW5nIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibm9ybWFsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvbXBhY3QiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1hcmsuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpdGVtaXplZGxpc3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGl0ZW1pemVkbGlzdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGl0ZW1pemVkbGlzdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9yZGVyZWRsaXN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGxpc3QgaW4gd2hpY2ggZWFjaCBlbnRyeSBpcyBtYXJrZWQgd2l0aCBhIHNlcXVlbnRpYWxseSBpbmNyZW1lbnRlZCBsYWJlbC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib3JkZXJlZGxpc3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJsaXN0LmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibGlzdHByZWFtYmxlLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imxpc3RpdGVtIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9yZGVyZWRsaXN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG9yZGVyZWRsaXN0LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgTnVtZXJhdGlvbjogU3R5bGUgb2YgTGlzdEl0ZW0gbnVtYmVyZWQ7IGRlZmF1bHQgaXMgZXhwZWN0ZWQKICAgIHRvIGJlIEFyYWJpYwogIC0tPgogIDwhLS0KICAgIEluaGVyaXROdW06IFNwZWNpZmllcyBmb3IgYSBuZXN0ZWQgbGlzdCB0aGF0IHRoZSBudW1iZXJpbmcKICAgIG9mIExpc3RJdGVtcyBzaG91bGQgaW5jbHVkZSB0aGUgbnVtYmVyIG9mIHRoZSBpdGVtCiAgICB3aXRoaW4gd2hpY2ggdGhleSBhcmUgbmVzdGVkIChlLmcuLCAxYSBhbmQgMWIgd2l0aGluIDEsCiAgICByYXRoZXIgdGhhbiBhIGFuZCBiKQogIC0tPgogIDwhLS0KICAgIENvbnRpbnVhdGlvbjogV2hlcmUgbGlzdCBudW1iZXJpbmcgYmVnaW5zIGFmcmVzaCAoUmVzdGFydHMsCiAgICB0aGUgZGVmYXVsdCkgb3IgY29udGludWVzIHRoYXQgb2YgdGhlIGltbWVkaWF0ZWx5IHByZWNlZGluZwogICAgbGlzdCAoQ29udGludWVzKQogIC0tPgogIDwhLS0KICAgIFNwYWNpbmc6IFdoZXRoZXIgdGhlIHZlcnRpY2FsIHNwYWNlIGluIHRoZSBsaXN0IHNob3VsZCBiZQogICAgY29tcHJlc3NlZAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcmRlcmVkbGlzdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibnVtZXJhdGlvbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImFyYWJpYyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ1cHBlcmFscGhhIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imxvd2VyYWxwaGEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idXBwZXJyb21hbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsb3dlcnJvbWFuIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluaGVyaXRudW0iIGRlZmF1bHQ9Imlnbm9yZSI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImluaGVyaXQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaWdub3JlIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRpbnVhdGlvbiIgZGVmYXVsdD0icmVzdGFydHMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb250aW51ZXMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVzdGFydHMiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3BhY2luZyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vcm1hbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb21wYWN0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvcmRlcmVkbGlzdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb3JkZXJlZGxpc3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvcmRlcmVkbGlzdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imxpc3RpdGVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHdyYXBwZXIgZm9yIHRoZSBlbGVtZW50cyBvZiBhIGxpc3QgaXRlbS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibGlzdGl0ZW0iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaXN0aXRlbS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBsaXN0aXRlbS5lbGVtZW50IC0tPgogIDwhLS0KICAgIE92ZXJyaWRlOiBJbmRpY2F0ZXMgdGhlIG1hcmsgdG8gYmUgdXNlZCBmb3IgdGhpcyBMaXN0SXRlbQogICAgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBtYXJrIG9yIHRoZSBtYXJrIHNwZWNpZmllZCBieQogICAgdGhlIE1hcmsgYXR0cmlidXRlIG9uIHRoZSBlbmNsb3NpbmcgSXRlbWl6ZWRMaXN0CiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imxpc3RpdGVtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdmVycmlkZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlzdGl0ZW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxpc3RpdGVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGlzdGl0ZW0ubW9kdWxlIC0tPgogIDwhLS0gU2VnbWVudGVkTGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VnbWVudGVkbGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBzZWdtZW50ZWQgbGlzdCwgYSBsaXN0IG9mIHNldHMgb2YgZWxlbWVudHMuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlZ21lbnRlZGxpc3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJsaXN0LmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWd0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlZ2xpc3RpdGVtIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZ21lbnRlZGxpc3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VnbWVudGVkbGlzdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWdtZW50ZWRsaXN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VnbWVudGVkbGlzdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VnbWVudGVkbGlzdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlZ21lbnRlZGxpc3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWd0aXRsZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIHRpdGxlIG9mIGFuIGVsZW1lbnQgb2YgYSBsaXN0IGl0ZW0gaW4gYSBzZWdtZW50ZWQgbGlzdC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VndGl0bGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGl0bGUuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VndGl0bGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VndGl0bGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VndGl0bGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWd0aXRsZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VndGl0bGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWd0aXRsZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZ2xpc3RpdGVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGxpc3QgaXRlbSBpbiBhIHNlZ21lbnRlZCBsaXN0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWdsaXN0aXRlbSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWciLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VnbGlzdGl0ZW0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VnbGlzdGl0ZW0uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VnbGlzdGl0ZW0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWdsaXN0aXRlbS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VnbGlzdGl0ZW0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWdsaXN0aXRlbS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gZWxlbWVudCBvZiBhIGxpc3QgaXRlbSBpbiBhIHNlZ21lbnRlZCBsaXN0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWciPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWcuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VnLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VnLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VnLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBzZWdtZW50ZWRsaXN0LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gU2ltcGxlTGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2ltcGxlbGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gdW5kZWNvcmF0ZWQgbGlzdCBvZiBzaW5nbGUgd29yZHMgb3Igc2hvcnQgcGhyYXNlcy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2ltcGxlbGlzdCIgc3Vic3RpdHV0aW9uR3JvdXA9Imxpc3QuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVtYmVyIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpbXBsZWxpc3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlbGlzdC5lbGVtZW50IC0tPgogIDwhLS0gQ29sdW1uczogVGhlIG51bWJlciBvZiBjb2x1bW5zIHRoZSBhcnJheSBzaG91bGQgY29udGFpbiAtLT4KICA8IS0tCiAgICBUeXBlOiBIb3cgdGhlIE1lbWJlcnMgb2YgdGhlIFNpbXBsZUxpc3Qgc2hvdWxkIGJlCiAgICBmb3JtYXR0ZWQ6IElubGluZSAobWVtYmVycyBzZXBhcmF0ZWQgd2l0aCBjb21tYXMgZXRjLgogICAgaW5saW5lKSwgVmVydCAodG9wIHRvIGJvdHRvbSBpbiBuIENvbHVtbnMpLCBvciBIb3JpeiAoaW4KICAgIHRoZSBkaXJlY3Rpb24gb2YgdGV4dCBmbG93KSBpbiBuIENvbHVtbnMuICBJZiBDb2x1bW4KICAgIGlzIDEgb3IgaW1wbGllZCwgVHlwZT1WZXJ0IGFuZCBUeXBlPUhvcml6IGdpdmUgdGhlIHNhbWUKICAgIHJlc3VsdHMuCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpbXBsZWxpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHVtbnMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIgZGVmYXVsdD0idmVydCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImlubGluZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ2ZXJ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imhvcml6Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaW1wbGVsaXN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzaW1wbGVsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlbGlzdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lbWJlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gZWxlbWVudCBvZiBhIHNpbXBsZSBsaXN0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJtZW1iZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZW1iZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWVtYmVyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lbWJlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1lbWJlci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWVtYmVyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWVtYmVyLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBzaW1wbGVsaXN0LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gVmFyaWFibGVMaXN0IC4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmFyaWFibGVsaXN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGxpc3QgaW4gd2hpY2ggZWFjaCBlbnRyeSBpcyBjb21wb3NlZCBvZiBhIHNldCBvZiBvbmUgb3IgbW9yZSB0ZXJtcyBhbmQgYW4gYXNzb2NpYXRlZCBkZXNjcmlwdGlvbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idmFyaWFibGVsaXN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibGlzdC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imxpc3RwcmVhbWJsZS5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ2YXJsaXN0ZW50cnkiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmFyaWFibGVsaXN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZhcmlhYmxlbGlzdC5lbGVtZW50IC0tPgogIDwhLS0KICAgIFRlcm1MZW5ndGg6IExlbmd0aCBiZXlvbmQgd2hpY2ggdGhlIHByZXNlbnRhdGlvbiBlbmdpbmUKICAgIG1heSBjb25zaWRlciB0aGUgVGVybSB0b28gbG9uZyBhbmQgc2VsZWN0IGFuIGFsdGVybmF0ZQogICAgcHJlc2VudGF0aW9uIG9mIHRoZSBUZXJtIGFuZCwgb3IsIGl0cyBhc3NvY2lhdGVkIExpc3RJdGVtLgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2YXJpYWJsZWxpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRlcm1sZW5ndGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3BhY2luZyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vcm1hbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb21wYWN0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2YXJpYWJsZWxpc3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZhcmlhYmxlbGlzdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZhcmlhYmxlbGlzdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZhcmxpc3RlbnRyeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSB3cmFwcGVyIGZvciBhIHNldCBvZiB0ZXJtcyBhbmQgdGhlIGFzc29jaWF0ZWQgZGVzY3JpcHRpb24gaW4gYSB2YXJpYWJsZSBsaXN0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2YXJsaXN0ZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGVybSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdGl0ZW0iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmFybGlzdGVudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZhcmxpc3RlbnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2YXJsaXN0ZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2YXJsaXN0ZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZhcmxpc3RlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZhcmxpc3RlbnRyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRlcm0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSB3b3JkIG9yIHBocmFzZSBiZWluZyBkZWZpbmVkIG9yIGRlc2NyaWJlZCBpbiBhIHZhcmlhYmxlIGxpc3QuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InRlcm0iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ZXJtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRlcm0uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGVybS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRlcm0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRlcm0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0ZXJtLm1vZHVsZSAtLT4KICA8IS0tIExpc3RJdGVtIChkZWZpbmVkIGFib3ZlKSAtLT4KICA8IS0tIGVuZCBvZiB2YXJpYWJsZWxpc3QuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBDYWxsb3V0TGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYWxsb3V0bGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBsaXN0IG9mIENhbGxvdXRzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJjYWxsb3V0bGlzdCIgc3Vic3RpdHV0aW9uR3JvdXA9Imxpc3QuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNhbGxvdXQiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2FsbG91dGxpc3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY2FsbG91dGxpc3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2FsbG91dGxpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjYWxsb3V0bGlzdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY2FsbG91dGxpc3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjYWxsb3V0bGlzdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNhbGxvdXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgJmxkcXVvO2NhbGxlZCBvdXQmcmRxdW87IGRlc2NyaXB0aW9uIG9mIGEgbWFya2VkIEFyZWEuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNhbGxvdXQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjYWxsb3V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNhbGxvdXQuZWxlbWVudCAtLT4KICA8IS0tCiAgICBBcmVhUmVmczogSURzIG9mIG9uZSBvciBtb3JlIEFyZWFzIG9yIEFyZWFTZXRzIGRlc2NyaWJlZAogICAgYnkgdGhpcyBDYWxsb3V0CiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNhbGxvdXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFyZWFyZWZzIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czpJRFJFRlMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNhbGxvdXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNhbGxvdXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjYWxsb3V0Lm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBjYWxsb3V0bGlzdC5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBPYmplY3RzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gRXhhbXBsZXMgZXRjLiAuLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXhhbXBsZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBmb3JtYWwgZXhhbXBsZSwgd2l0aCBhIHRpdGxlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJleGFtcGxlIiBzdWJzdGl0dXRpb25Hcm91cD0iZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJleGFtcGxlLm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJleGFtcGxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGV4YW1wbGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXhhbXBsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmxvYXRzdHlsZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ3aWR0aC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImV4YW1wbGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGV4YW1wbGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBleGFtcGxlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5mb3JtYWxleGFtcGxlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGRpc3BsYXllZCBleGFtcGxlIHdpdGhvdXQgYSB0aXRsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5mb3JtYWxleGFtcGxlIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5mb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJleGFtcGxlLm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmZvcm1hbGV4YW1wbGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWxleGFtcGxlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZm9ybWFsZXhhbXBsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmxvYXRzdHlsZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0id2lkdGguYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmZvcm1hbGV4YW1wbGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGluZm9ybWFsZXhhbXBsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluZm9ybWFsZXhhbXBsZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb2dyYW1saXN0aW5nY28ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgcHJvZ3JhbSBsaXN0aW5nIHdpdGggYXNzb2NpYXRlZCBhcmVhcyB1c2VkIGluIGNhbGxvdXRzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJwcm9ncmFtbGlzdGluZ2NvIiBzdWJzdGl0dXRpb25Hcm91cD0ibGluZXNwZWNpZmljLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYXJlYXNwZWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InByb2dyYW1saXN0aW5nIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjYWxsb3V0bGlzdCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9ncmFtbGlzdGluZ2NvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByb2dyYW1saXN0aW5nY28uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvZ3JhbWxpc3Rpbmdjby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2dyYW1saXN0aW5nY28ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByb2dyYW1saXN0aW5nY28uYXR0bGlzdCAtLT4KICA8IS0tIENhbGxvdXRMaXN0IChkZWZpbmVkIGFib3ZlIGluIExpc3RzKSAtLT4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGV4YW1wbGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcmVhc3BlYy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBjb2xsZWN0aW9uIG9mIHJlZ2lvbnMgaW4gYSBncmFwaGljIG9yIGNvZGUgZXhhbXBsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXJlYXNwZWMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFyZWEiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFyZWFzZXQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZWFzcGVjLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFyZWFzcGVjLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgVW5pdHM6IGdsb2JhbCB1bml0IG9mIG1lYXN1cmUgaW4gd2hpY2ggY29vcmRpbmF0ZXMgaW4KICAgIHRoaXMgc3BlYyBhcmUgZXhwcmVzc2VkOgogICAgCiAgICAtIENBTFNQYWlyICJ4MSx5MSB4Mix5MiI6IGxvd2VyLWxlZnQgYW5kIHVwcGVyLXJpZ2h0CiAgICBjb29yZGluYXRlcyBpbiBhIHJlY3RhbmdsZSBkZXNjcmliaW5nIHJlcHJvIGFyZWEgaW4gd2hpY2gKICAgIGdyYXBoaWMgaXMgcGxhY2VkLCB3aGVyZSBYIGFuZCBZIGRpbWVuc2lvbnMgYXJlIGVhY2ggc29tZQogICAgbnVtYmVyIDAuLjEwMDAwICh0YWtlbiBmcm9tIENBTFMgZ3JhcGhpYyBhdHRyaWJ1dGVzKQogICAgCiAgICAtIExpbmVDb2x1bW4gImxpbmUgY29sdW1uIjogbGluZSBudW1iZXIgYW5kIGNvbHVtbiBudW1iZXIKICAgIGF0IHdoaWNoIHRvIHN0YXJ0IGNhbGxvdXQgdGV4dCBpbiAibGluZXNwZWNpZmljIiBjb250ZW50CiAgICAKICAgIC0gTGluZVJhbmdlICJzdGFydGxpbmUgZW5kbGluZSI6IHdob2xlIGxpbmVzIGZyb20gc3RhcnRsaW5lCiAgICB0byBlbmRsaW5lIGluICJsaW5lc3BlY2lmaWMiIGNvbnRlbnQKICAgIAogICAgLSBMaW5lQ29sdW1uUGFpciAibGluZTEgY29sMSBsaW5lMiBjb2wyIjogc3RhcnRpbmcgYW5kIGVuZGluZwogICAgcG9pbnRzIG9mIGFyZWEgaW4gImxpbmVzcGVjaWZpYyIgY29udGVudCB0aGF0IHN0YXJ0cyBhdAogICAgZmlyc3QgcG9zaXRpb24gYW5kIGVuZHMgYXQgc2Vjb25kIHBvc2l0aW9uIChpbmNsdWRpbmcgdGhlCiAgICBiZWdpbm5pbmdzIG9mIGFueSBpbnRlcnZlbmluZyBsaW5lcykKICAgIAogICAgLSBPdGhlcjogZGlyZWN0aXZlIHRvIGxvb2sgYXQgdmFsdWUgb2YgT3RoZXJVbml0cyBhdHRyaWJ1dGUKICAgIHRvIGdldCBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBrZXl3b3JkCiAgICAKICAgIFRoZSBkZWZhdWx0IGlzIGltcGxlbWVudGF0aW9uLXNwZWNpZmljOyB1c3VhbGx5IGRlcGVuZGVudCBvbgogICAgdGhlIHBhcmVudCBlbGVtZW50IChHcmFwaGljQ08gZ2V0cyBDQUxTUGFpciwgUHJvZ3JhbUxpc3RpbmdDTwogICAgYW5kIFNjcmVlbkNPIGdldCBMaW5lQ29sdW1uKQogIC0tPgogIDwhLS0gT3RoZXJVbml0czogVXNlci1kZWZpbmVkIHVuaXRzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcmVhc3BlYy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idW5pdHMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjYWxzcGFpciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lY29sdW1uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVyYW5nZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lY29sdW1ucGFpciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcnVuaXRzIiB0eXBlPSJ4czpOTVRPS0VOIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcmVhc3BlYy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXJlYXNwZWMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhcmVhc3BlYy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFyZWEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgcmVnaW9uIGRlZmluZWQgZm9yIGEgQ2FsbG91dCBpbiBhIGdyYXBoaWMgb3IgY29kZSBleGFtcGxlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcmVhIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJlYS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhcmVhLmVsZW1lbnQgLS0+CiAgPCEtLSBidWcgbnVtYmVyL3N5bWJvbCBvdmVycmlkZSBvciBpbml0aWFsaXphdGlvbiAtLT4KICA8IS0tIHRvIGFueSByZWxhdGVkIGluZm9ybWF0aW9uIC0tPgogIDwhLS0KICAgIFVuaXRzOiB1bml0IG9mIG1lYXN1cmUgaW4gd2hpY2ggY29vcmRpbmF0ZXMgaW4gdGhpcwogICAgYXJlYSBhcmUgZXhwcmVzc2VkOyBpbmhlcml0cyBmcm9tIEFyZWFTZXQgYW5kIEFyZWFTcGVjCiAgLS0+CiAgPCEtLSBPdGhlclVuaXRzOiBVc2VyLWRlZmluZWQgdW5pdHMgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFyZWEuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1bml0cyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNhbHNwYWlyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVjb2x1bW4iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGluZXJhbmdlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVjb2x1bW5wYWlyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im90aGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVydW5pdHMiIHR5cGU9InhzOk5NVE9LRU4iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29vcmRzIiB1c2U9InJlcXVpcmVkIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpZHJlcS5jb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcmVhLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhcmVhLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXJlYS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFyZWFzZXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgc2V0IG9mIHJlbGF0ZWQgYXJlYXMgaW4gYSBncmFwaGljIG9yIGNvZGUgZXhhbXBsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXJlYXNldCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJhcmVhIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZWFzZXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXJlYXNldC5lbGVtZW50IC0tPgogIDwhLS0gYnVnIG51bWJlci9zeW1ib2wgb3ZlcnJpZGUgb3IgaW5pdGlhbGl6YXRpb24gLS0+CiAgPCEtLQogICAgVW5pdHM6IHVuaXQgb2YgbWVhc3VyZSBpbiB3aGljaCBjb29yZGluYXRlcyBpbiB0aGlzCiAgICBhcmVhIGFyZSBleHByZXNzZWQ7IGluaGVyaXRzIGZyb20gQXJlYVNwZWMKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJlYXNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1bml0cyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNhbHNwYWlyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVjb2x1bW4iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGluZXJhbmdlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVjb2x1bW5wYWlyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im90aGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVydW5pdHMiIHR5cGU9InhzOk5NVE9LRU4iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29vcmRzIiB1c2U9InJlcXVpcmVkIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpZHJlcS5jb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcmVhc2V0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhcmVhc2V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXJlYXNldC5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgYXJlYXNwZWMuY29udGVudC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb2dyYW1saXN0aW5nLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGxpdGVyYWwgbGlzdGluZyBvZiBhbGwgb3IgcGFydCBvZiBhIHByb2dyYW0uIC0tPgogIDx4czplbGVtZW50IG5hbWU9InByb2dyYW1saXN0aW5nIiBzdWJzdGl0dXRpb25Hcm91cD0ibGluZXNwZWNpZmljLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY28iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvcmVmIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lYW5ub3RhdGlvbiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGV4dG9iamVjdCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvZ3JhbWxpc3RpbmcuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJvZ3JhbWxpc3RpbmcuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvZ3JhbWxpc3RpbmcuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ3aWR0aC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmVzcGVjaWZpYy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2dyYW1saXN0aW5nLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwcm9ncmFtbGlzdGluZy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByb2dyYW1saXN0aW5nLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGl0ZXJhbGxheW91dC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBibG9jayBvZiB0ZXh0IGluIHdoaWNoIGxpbmUgYnJlYWtzIGFuZCB3aGl0ZSBzcGFjZSBhcmUgdG8gYmUgcmVwcm9kdWNlZCBmYWl0aGZ1bGx5LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJsaXRlcmFsbGF5b3V0IiBzdWJzdGl0dXRpb25Hcm91cD0ibGluZXNwZWNpZmljLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY28iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvcmVmIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZXh0b2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lYW5ub3RhdGlvbiIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGl0ZXJhbGxheW91dC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBsaXRlcmFsbGF5b3V0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpdGVyYWxsYXlvdXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ3aWR0aC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmVzcGVjaWZpYy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIGRlZmF1bHQ9Im5vcm1hbCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1vbm9zcGFjZWQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibm9ybWFsIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaXRlcmFsbGF5b3V0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBsaXRlcmFsbGF5b3V0LmF0dGxpc3QgLS0+CiAgPCEtLSBMaW5lQW5ub3RhdGlvbiAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSBlbmQgb2YgbGl0ZXJhbGxheW91dC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNjcmVlbmNvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHNjcmVlbiB3aXRoIGFzc29jaWF0ZWQgYXJlYXMgdXNlZCBpbiBjYWxsb3V0cy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2NyZWVuY28iIHN1YnN0aXR1dGlvbkdyb3VwPSJsaW5lc3BlY2lmaWMuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmVhc3BlYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic2NyZWVuIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjYWxsb3V0bGlzdCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzY3JlZW5jby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzY3JlZW5jby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzY3JlZW5jby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNjcmVlbmNvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzY3JlZW5jby5hdHRsaXN0IC0tPgogIDwhLS0gQXJlYVNwZWMgKGRlZmluZWQgYWJvdmUpIC0tPgogIDwhLS0gQ2FsbG91dExpc3QgKGRlZmluZWQgYWJvdmUgaW4gTGlzdHMpIC0tPgogIDwhLS0gZW5kIG9mIHNjcmVlbmNvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2NyZWVuLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUZXh0IHRoYXQgYSB1c2VyIHNlZXMgb3IgbWlnaHQgc2VlIG9uIGEgY29tcHV0ZXIgc2NyZWVuLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzY3JlZW4iIHN1YnN0aXR1dGlvbkdyb3VwPSJsaW5lc3BlY2lmaWMuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29yZWYiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVhbm5vdGF0aW9uIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzY3JlZW4uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNjcmVlbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9IndpZHRoLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZXNwZWNpZmljLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2NyZWVuLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzY3JlZW4uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzY3JlZW4ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzY3JlZW5zaG90LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHJlcHJlc2VudGF0aW9uIG9mIHdoYXQgdGhlIHVzZXIgc2VlcyBvciBtaWdodCBzZWUgb24gYSBjb21wdXRlciBzY3JlZW4uIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNjcmVlbnNob3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJsaW5lc3BlY2lmaWMuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNjcmVlbmluZm8iLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJncmFwaGljIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImdyYXBoaWNjbyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtZWRpYW9iamVjdCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtZWRpYW9iamVjdGNvIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNjcmVlbnNob3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuc2hvdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzY3JlZW5zaG90LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2NyZWVuc2hvdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuc2hvdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNjcmVlbnNob3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzY3JlZW5pbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpJbmZvcm1hdGlvbiBhYm91dCBob3cgYSBzY3JlZW4gc2hvdCB3YXMgcHJvZHVjZWQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNjcmVlbmluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzY3JlZW5pbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNjcmVlbmluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2NyZWVuaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNjcmVlbmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNjcmVlbmluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzY3JlZW5pbmZvLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBzY3JlZW5zaG90LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gRmlndXJlcyBldGMuIC4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmlndXJlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGZvcm1hbCBmaWd1cmUsIGdlbmVyYWxseSBhbiBpbGx1c3RyYXRpb24sIHdpdGggYSB0aXRsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZmlndXJlIiBzdWJzdGl0dXRpb25Hcm91cD0iZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmdyb3VwIHJlZj0iZmlndXJlLm1peCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZmlndXJlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZpZ3VyZS5lbGVtZW50IC0tPgogIDwhLS0KICAgIEZsb2F0OiBXaGV0aGVyIHRoZSBGaWd1cmUgaXMgc3VwcG9zZWQgdG8gYmUgcmVuZGVyZWQKICAgIHdoZXJlIGNvbnZlbmllbnQgKHllcyAoMSkgdmFsdWUpIG9yIGF0IHRoZSBwbGFjZSBpdCBvY2N1cnMKICAgIGluIHRoZSB0ZXh0IChubyAoMCkgdmFsdWUsIHRoZSBkZWZhdWx0KQogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmaWd1cmUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZsb2F0IiBkZWZhdWx0PSIwIiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmxvYXRzdHlsZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwZ3dpZGUiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaWd1cmUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZpZ3VyZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZpZ3VyZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZm9ybWFsZmlndXJlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHVudGl0bGVkIGZpZ3VyZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5mb3JtYWxmaWd1cmUiIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6Z3JvdXAgcmVmPSJmaWd1cmUubWl4Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmZvcm1hbGZpZ3VyZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGZpZ3VyZS5lbGVtZW50IC0tPgogIDwhLS0KICAgIEZsb2F0OiBXaGV0aGVyIHRoZSBGaWd1cmUgaXMgc3VwcG9zZWQgdG8gYmUgcmVuZGVyZWQKICAgIHdoZXJlIGNvbnZlbmllbnQgKHllcyAoMSkgdmFsdWUpIG9yIGF0IHRoZSBwbGFjZSBpdCBvY2N1cnMKICAgIGluIHRoZSB0ZXh0IChubyAoMCkgdmFsdWUsIHRoZSBkZWZhdWx0KQogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmZvcm1hbGZpZ3VyZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmxvYXQiIGRlZmF1bHQ9IjAiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmbG9hdHN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBnd2lkZSIgdHlwZT0ieWVzb3Juby5hdHR2YWxzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZm9ybWFsZmlndXJlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGZpZ3VyZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluZm9ybWFsZmlndXJlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3JhcGhpY2NvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGdyYXBoaWMgdGhhdCBjb250YWlucyBjYWxsb3V0IGFyZWFzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJncmFwaGljY28iIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFyZWFzcGVjIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJncmFwaGljIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjYWxsb3V0bGlzdCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJncmFwaGljY28uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ3JhcGhpY2NvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImdyYXBoaWNjby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImdyYXBoaWNjby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ3JhcGhpY2NvLmF0dGxpc3QgLS0+CiAgPCEtLSBBcmVhU3BlYyAoZGVmaW5lZCBhYm92ZSBpbiBFeGFtcGxlcykgLS0+CiAgPCEtLSBDYWxsb3V0TGlzdCAoZGVmaW5lZCBhYm92ZSBpbiBMaXN0cykgLS0+CiAgPCEtLSBlbmQgb2YgZ3JhcGhpY2NvLm1vZHVsZSAtLT4KICA8IS0tCiAgICBHcmFwaGljYWwgZGF0YSBjYW4gYmUgdGhlIGNvbnRlbnQgb2YgR3JhcGhpYywgb3IgeW91IGNhbiByZWZlcmVuY2UKICAgIGFuIGV4dGVybmFsIGZpbGUgZWl0aGVyIGFzIGFuIGVudGl0eSAoRW50aXRyZWYpIG9yIGEgZmlsZW5hbWUKICAgIChGaWxlcmVmKS4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3JhcGhpYy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBkaXNwbGF5ZWQgZ3JhcGhpY2FsIG9iamVjdCAobm90IGFuIGlubGluZSkuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImdyYXBoaWMiIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImdyYXBoaWMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ3JhcGhpYy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJncmFwaGljLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3JhcGhpY3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJncmFwaGljLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBncmFwaGljLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ3JhcGhpYy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlubGluZWdyYXBoaWMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkFuIG9iamVjdCBjb250YWluaW5nIG9yIHBvaW50aW5nIHRvIGdyYXBoaWNhbCBkYXRhIHRoYXQgd2lsbCBiZSByZW5kZXJlZCBpbmxpbmUuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImlubGluZWdyYXBoaWMiIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmxpbmVvYmouY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlubGluZWdyYXBoaWMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5saW5lZ3JhcGhpYy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmxpbmVncmFwaGljLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3JhcGhpY3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmxpbmVncmFwaGljLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmxpbmVncmFwaGljLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5saW5lZ3JhcGhpYy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lZGlhb2JqZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGRpc3BsYXllZCBtZWRpYSBvYmplY3QgKHZpZGVvLCBhdWRpbywgaW1hZ2UsIGV0Yy4pLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJtZWRpYW9iamVjdCIgc3Vic3RpdHV0aW9uR3JvdXA9ImluZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJvYmplY3RpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVkaWFvYmplY3QubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImNhcHRpb24iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWVkaWFvYmplY3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWVkaWFvYmplY3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWVkaWFvYmplY3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZWRpYW9iamVjdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWVkaWFvYmplY3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtZWRpYW9iamVjdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlubGluZW1lZGlhb2JqZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBbiBpbmxpbmUgbWVkaWEgb2JqZWN0ICh2aWRlbywgYXVkaW8sIGltYWdlLCBhbmQgc28gb24pLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmxpbmVtZWRpYW9iamVjdCIgc3Vic3RpdHV0aW9uR3JvdXA9ImlubGluZW9iai5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJvYmplY3RpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVkaWFvYmplY3QubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlubGluZW1lZGlhb2JqZWN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGlubGluZW1lZGlhb2JqZWN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlubGluZW1lZGlhb2JqZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5saW5lbWVkaWFvYmplY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGlubGluZW1lZGlhb2JqZWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5saW5lbWVkaWFvYmplY3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2aWRlb29iamVjdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSB3cmFwcGVyIGZvciB2aWRlbyBkYXRhIGFuZCBpdHMgYXNzb2NpYXRlZCBtZXRhLWluZm9ybWF0aW9uLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2aWRlb29iamVjdCIgc3Vic3RpdHV0aW9uR3JvdXA9Im1lZGlhb2JqZWN0Lm1peCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ib2JqZWN0aW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idmlkZW9kYXRhIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZpZGVvb2JqZWN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZpZGVvb2JqZWN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZpZGVvb2JqZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmlkZW9vYmplY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZpZGVvb2JqZWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdmlkZW9vYmplY3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdWRpb29iamVjdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSB3cmFwcGVyIGZvciBhdWRpbyBkYXRhIGFuZCBpdHMgYXNzb2NpYXRlZCBtZXRhLWluZm9ybWF0aW9uLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJhdWRpb29iamVjdCIgc3Vic3RpdHV0aW9uR3JvdXA9Im1lZGlhb2JqZWN0Lm1peCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ib2JqZWN0aW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYXVkaW9kYXRhIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1ZGlvb2JqZWN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGF1ZGlvb2JqZWN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1ZGlvb2JqZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXVkaW9vYmplY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGF1ZGlvb2JqZWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXVkaW9vYmplY3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbWFnZW9iamVjdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSB3cmFwcGVyIGZvciBpbWFnZSBkYXRhIGFuZCBpdHMgYXNzb2NpYXRlZCBtZXRhLWluZm9ybWF0aW9uLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbWFnZW9iamVjdCIgc3Vic3RpdHV0aW9uR3JvdXA9Im1lZGlhb2JqZWN0Lm1peCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ib2JqZWN0aW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW1hZ2VkYXRhIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImltYWdlb2JqZWN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGltYWdlb2JqZWN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImltYWdlb2JqZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW1hZ2VvYmplY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGltYWdlb2JqZWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW1hZ2VvYmplY3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0ZXh0b2JqZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHdyYXBwZXIgZm9yIGEgdGV4dCBkZXNjcmlwdGlvbiBvZiBhbiBvYmplY3QgYW5kIGl0cyBhc3NvY2lhdGVkIG1ldGEtaW5mb3JtYXRpb24uIC0tPgogIDx4czplbGVtZW50IG5hbWU9InRleHRvYmplY3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJtZWRpYW9iamVjdC5taXgiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im9iamVjdGluZm8iLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwaHJhc2UiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idGV4dGRhdGEiLz4KICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0ZXh0b2JqZWN0Lm1peCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ZXh0b2JqZWN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRleHRvYmplY3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGV4dG9iamVjdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRleHRvYmplY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRleHRvYmplY3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0ZXh0b2JqZWN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib2JqZWN0aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6TWV0YS1pbmZvcm1hdGlvbiBmb3IgYW4gb2JqZWN0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJvYmplY3RpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib2JqZWN0aW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvYmplY3RpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9iamVjdGluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvYmplY3RpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvYmplY3RpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb2JqZWN0aW5mby5tb2R1bGUgLS0+CiAgPCEtLQogICAgRW50aXR5UmVmOiBOYW1lIG9mIGFuIGV4dGVybmFsIGVudGl0eSBjb250YWluaW5nIHRoZSBjb250ZW50CiAgICBvZiB0aGUgb2JqZWN0IGRhdGEKICAtLT4KICA8IS0tCiAgICBGaWxlUmVmOiBGaWxlbmFtZSwgcXVhbGlmaWVkIGJ5IGEgcGF0aG5hbWUgaWYgZGVzaXJlZCwKICAgIGRlc2lnbmF0aW5nIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGNvbnRlbnQgb2YgdGhlIG9iamVjdCBkYXRhCiAgLS0+CiAgPCEtLSBGb3JtYXQ6IE5vdGF0aW9uIG9mIHRoZSBlbGVtZW50IGNvbnRlbnQsIGlmIGFueSAtLT4KICA8IS0tIFNyY0NyZWRpdDogSW5mb3JtYXRpb24gYWJvdXQgdGhlIHNvdXJjZSBvZiB0aGUgaW1hZ2UgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9iamVjdGRhdGEuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW50aXR5cmVmIiB0eXBlPSJ4czpFTlRJVFkiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlsZXJlZiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmb3JtYXQiIHR5cGU9Im5vdGF0aW9uLmNsYXNzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNyY2NyZWRpdCIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZpZGVvZGF0YS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6UG9pbnRlciB0byBleHRlcm5hbCB2aWRlbyBkYXRhLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2aWRlb2RhdGEiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2aWRlb2RhdGEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdmlkZW9kYXRhLmVsZW1lbnQgLS0+CiAgPCEtLSBXaWR0aDogU2FtZSBhcyBDQUxTIHJlcHJvd2lkIChkZXNpcmVkIHdpZHRoKSAtLT4KICA8IS0tIERlcHRoOiBTYW1lIGFzIENBTFMgcmVwcm9kZXAgKGRlc2lyZWQgZGVwdGgpIC0tPgogIDwhLS0KICAgIEFsaWduOiBTYW1lIGFzIENBTFMgaHBsYWNlIHdpdGggJ25vbmUnIHJlbW92ZWQ7ICNJTVBMSUVEIG1lYW5zCiAgICBhcHBsaWNhdGlvbi1zcGVjaWZpYwogIC0tPgogIDwhLS0gU2NhbGU6IENvbmZsYXRpb24gb2YgQ0FMUyBoc2NhbGUgYW5kIHZzY2FsZSAtLT4KICA8IS0tIFNjYWxlZml0OiBTYW1lIGFzIENBTFMgc2NhbGVmaXQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZpZGVvZGF0YS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29udGVudHdpZHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlcHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRlbnRkZXB0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRvcCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJtaWRkbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYm90dG9tIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjYWxlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjYWxlZml0IiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9iamVjdGRhdGEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2aWRlb2RhdGEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZpZGVvZGF0YS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZpZGVvZGF0YS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1ZGlvZGF0YS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6UG9pbnRlciB0byBleHRlcm5hbCBhdWRpbyBkYXRhLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJhdWRpb2RhdGEiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdWRpb2RhdGEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXVkaW9kYXRhLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1ZGlvZGF0YS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9iamVjdGRhdGEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdWRpb2RhdGEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGF1ZGlvZGF0YS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGF1ZGlvZGF0YS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImltYWdlZGF0YS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6UG9pbnRlciB0byBleHRlcm5hbCBpbWFnZSBkYXRhLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbWFnZWRhdGEiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbWFnZWRhdGEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW1hZ2VkYXRhLmVsZW1lbnQgLS0+CiAgPCEtLSBXaWR0aDogU2FtZSBhcyBDQUxTIHJlcHJvd2lkIChkZXNpcmVkIHdpZHRoKSAtLT4KICA8IS0tIERlcHRoOiBTYW1lIGFzIENBTFMgcmVwcm9kZXAgKGRlc2lyZWQgZGVwdGgpIC0tPgogIDwhLS0KICAgIEFsaWduOiBTYW1lIGFzIENBTFMgaHBsYWNlIHdpdGggJ25vbmUnIHJlbW92ZWQ7ICNJTVBMSUVEIG1lYW5zCiAgICBhcHBsaWNhdGlvbi1zcGVjaWZpYwogIC0tPgogIDwhLS0gU2NhbGU6IENvbmZsYXRpb24gb2YgQ0FMUyBoc2NhbGUgYW5kIHZzY2FsZSAtLT4KICA8IS0tIFNjYWxlZml0OiBTYW1lIGFzIENBTFMgc2NhbGVmaXQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImltYWdlZGF0YS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29udGVudHdpZHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlcHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRlbnRkZXB0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRvcCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJtaWRkbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYm90dG9tIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjYWxlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjYWxlZml0IiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9iamVjdGRhdGEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbWFnZWRhdGEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGltYWdlZGF0YS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGltYWdlZGF0YS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRleHRkYXRhLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpQb2ludGVyIHRvIGV4dGVybmFsIHRleHQgZGF0YS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGV4dGRhdGEiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ZXh0ZGF0YS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0ZXh0ZGF0YS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0ZXh0ZGF0YS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW5jb2RpbmciLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9iamVjdGRhdGEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ZXh0ZGF0YS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdGV4dGRhdGEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0ZXh0ZGF0YS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lZGlhb2JqZWN0Y28ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgbWVkaWEgb2JqZWN0IHRoYXQgY29udGFpbnMgY2FsbG91dHMuIC0tPgogIDx4czplbGVtZW50IG5hbWU9Im1lZGlhb2JqZWN0Y28iIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ib2JqZWN0aW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW1hZ2VvYmplY3RjbyIvPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImltYWdlb2JqZWN0Y28iLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idGV4dG9iamVjdCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZWRpYW9iamVjdGNvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1lZGlhb2JqZWN0Y28uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWVkaWFvYmplY3Rjby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1lZGlhb2JqZWN0Y28ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1lZGlhb2JqZWN0Y28uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtZWRpYW9iamVjdGNvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW1hZ2VvYmplY3Rjby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSB3cmFwcGVyIGZvciBhbiBpbWFnZSBvYmplY3Qgd2l0aCBjYWxsb3V0cy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW1hZ2VvYmplY3RjbyIgc3Vic3RpdHV0aW9uR3JvdXA9Im1lZGlhb2JqZWN0Lm1peCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFyZWFzcGVjIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbWFnZW9iamVjdCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY2FsbG91dGxpc3QiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW1hZ2VvYmplY3Rjby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbWFnZW9iamVjdGNvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImltYWdlb2JqZWN0Y28uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbWFnZW9iamVjdGNvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbWFnZW9iamVjdGNvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW1hZ2VvYmplY3Rjby5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgbWVkaWFvYmplY3QuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBFcXVhdGlvbnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gVGhpcyBQRSBwcm92aWRlcyBhIG1lY2hhbmlzbSBmb3IgcmVwbGFjaW5nIGVxdWF0aW9uIGNvbnRlbnQsIC0tPgogIDwhLS0gcGVyaGFwcyBhZGRpbmcgYSBuZXcgb3IgZGlmZmVyZW50IG1vZGVsIChlLmcuLCBNYXRoTUwpIC0tPgogIDx4czpncm91cCBuYW1lPSJlcXVhdGlvbi5jb250ZW50Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImFsdCIvPgogICAgICA8eHM6Y2hvaWNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtZWRpYW9iamVjdCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1hdGhwaHJhc2UiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImlubGluZWVxdWF0aW9uLmNvbnRlbnQiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYWx0Ii8+CiAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWF0aHBocmFzZSIvPgogICAgICA8L3hzOmNob2ljZT4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpjb21wbGV4VHlwZT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXF1YXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgZGlzcGxheWVkIG1hdGhlbWF0aWNhbCBlcXVhdGlvbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXF1YXRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJmb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbGVxdWF0aW9uIi8+CiAgICAgICAgICA8eHM6Z3JvdXAgcmVmPSJlcXVhdGlvbi5jb250ZW50Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVxdWF0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGVxdWF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVxdWF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmbG9hdHN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVxdWF0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlcXVhdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVxdWF0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5mb3JtYWxlcXVhdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBkaXNwbGF5ZWQgbWF0aGVtYXRpY2FsIGVxdWF0aW9uIHdpdGhvdXQgYSB0aXRsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5mb3JtYWxlcXVhdGlvbiIgc3Vic3RpdHV0aW9uR3JvdXA9ImluZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJlcXVhdGlvbi5jb250ZW50Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZm9ybWFsZXF1YXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWxlcXVhdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmZvcm1hbGVxdWF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmbG9hdHN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmZvcm1hbGVxdWF0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGVxdWF0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWxlcXVhdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlubGluZWVxdWF0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIG1hdGhlbWF0aWNhbCBlcXVhdGlvbiBvciBleHByZXNzaW9uIG9jY3VycmluZyBpbmxpbmUuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImlubGluZWVxdWF0aW9uIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5saW5lb2JqLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y29tcGxleENvbnRlbnQ+CiAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJpbmxpbmVlcXVhdGlvbi5jb250ZW50Ij4KICAgICAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlubGluZWVxdWF0aW9uLmF0dGxpc3QiLz4KICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgPC94czpjb21wbGV4Q29udGVudD4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGlubGluZWVxdWF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlubGluZWVxdWF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5saW5lZXF1YXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGlubGluZWVxdWF0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5saW5lZXF1YXRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhbHQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRleHQgcmVwcmVzZW50YXRpb24gZm9yIGEgZ3JhcGhpY2FsIGVsZW1lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImFsdCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhbHQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWx0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFsdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFsdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWx0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYWx0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWF0aHBocmFzZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBtYXRoZW1hdGljYWwgcGhyYXNlLCBhbiBleHByZXNzaW9uIHRoYXQgY2FuIGJlIHJlcHJlc2VudGVkIHdpdGggb3JkaW5hcnkgdGV4dCBhbmQgYSBzbWFsbCBhbW91bnQgb2YgbWFya3VwLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJtYXRocGhyYXNlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJzY3JpcHQiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN1cGVyc2NyaXB0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlbXBoYXNpcyIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWF0aHBocmFzZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtYXRocGhyYXNlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1hdGhwaHJhc2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtYXRocGhyYXNlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtYXRocGhyYXNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWF0aHBocmFzZS5tb2R1bGUgLS0+CiAgPCEtLSBUYWJsZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gQ2hvb3NlIGEgdGFibGUgbW9kZWwuIENBTFMgb3IgT0FTSVMgWE1MIEV4Y2hhbmdlIC0tPgogIDwhLS0gRG8gd2UgYWxsb3cgdGhlIEhUTUwgdGFibGUgbW9kZWwgYXMgd2VsbD8gLS0+CiAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CiAgPCEtLQogICAgeGh0bWx0YmwubW9kIGRlZmluZXMgSFRNTCB0YWJsZXMgYW5kIHNldHMgcGFyYW1ldGVyCiAgICBlbnRpdGllcyBzbyB0aGF0LCB3aGVuIHRoZSBDQUxTIHRhYmxlIG1vZHVsZSBpcyByZWFkLAogICAgd2UgZW5kIHVwIGFsbG93aW5nIGFueSB0YWJsZSB0byBiZSBDQUxTIG9yIEhUTUwuCiAgICBpLmUuIFRoaXMgaW5jbHVkZSBtdXN0IGNvbWUgZmlyc3QhCiAgLS0+CiAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CiAgPCEtLSBlbmQgb2YgYWxsb3cuaHRtbC50YWJsZXMgLS0+CiAgPCEtLSBBZGQgbGFiZWwgYW5kIHJvbGUgYXR0cmlidXRlcyB0byB0YWJsZSBhbmQgaW5mb3JtYWx0YWJsZSAtLT4KICA8IS0tCiAgICBBZGQgY29tbW9uIGF0dHJpYnV0ZXMgdG8gVGFibGUsIFRHcm91cCwgVEJvZHksIFRIZWFkLCBURm9vdCwgUm93LAogICAgRW50cnlUYmwsIGFuZCBFbnRyeSAoYW5kIEluZm9ybWFsVGFibGUgZWxlbWVudCkuCiAgLS0+CiAgPCEtLSBDb250ZW50IG1vZGVsIGZvciBUYWJsZS4gLS0+CiAgPCEtLSBBbGxvdyBlaXRoZXIgb2JqZWN0cyBvciBpbmxpbmVzOyBiZXdhcmUgb2YgUkVzIGJldHdlZW4gZWxlbWVudHMuIC0tPgogIDwhLS0gUmVmZXJlbmNlIENBTFMgVGFibGUgTW9kZWwgLS0+CiAgPCEtLSBlbmQgb2YgdGFibGUubW9kdWxlIC0tPgogIDwhLS0KICAgIE5vdGUgdGhhdCBJbmZvcm1hbFRhYmxlIGlzIGRlcGVuZGVudCBvbiBzb21lIG9mIHRoZSBlbnRpdHkKICAgIGRlY2xhcmF0aW9ucyB0aGF0IGN1c3RvbWl6ZSBUYWJsZS4KICAtLT4KICA8IS0tIHRoZSBmb2xsb3dpbmcgZW50aXR5IG1heSBoYXZlIGJlZW4gZGVjbGFyZWQgYnkgdGhlIFhIVE1MIHRhYmxlIG1vZHVsZSAtLT4KICA8IS0tIGRvYzpBIHRhYmxlIHdpdGhvdXQgYSB0aXRsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5mb3JtYWx0YWJsZSIgc3Vic3RpdHV0aW9uR3JvdXA9ImluZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJpbmZvcm1hbC50YmwudGFibGUubWRsIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZm9ybWFsdGFibGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWx0YWJsZS5lbGVtZW50IC0tPgogIDwhLS0KICAgIEZyYW1lLCBDb2xzZXAsIGFuZCBSb3dzZXAgbXVzdCBiZSByZXBlYXRlZCBiZWNhdXNlCiAgICB0aGV5IGFyZSBub3QgaW4gZW50aXRpZXMgaW4gdGhlIHRhYmxlIG1vZHVsZS4KICAtLT4KICA8IS0tCiAgICBpbmNsdWRlcyBUYWJTdHlsZSwgVG9DZW50cnksIFNob3J0RW50cnksCiAgICBPcmllbnQsIFBnV2lkZQogIC0tPgogIDwhLS0gaW5jbHVkZXMgTGFiZWwgLS0+CiAgPCEtLSBpbmNsdWRlcyBjb21tb24gYXR0cmlidXRlcyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5mb3JtYWx0YWJsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZnJhbWUiIHR5cGU9InRibC5mcmFtZS5hdHR2YWwiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sc2VwIiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm93c2VwIiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi50YWJsZS5hdHRyaWJzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YmwudGFibGUuYXR0Ii8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbHRhYmxlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWx0YWJsZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNhcHRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgY2FwdGlvbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2FwdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0ZXh0b2JqZWN0Lm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjYXB0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNhcHRpb24uZWxlbWVudCAtLT4KICA8IS0tIGF0dHJzIGNvbWVzIGZyb20gSFRNTCB0YWJsZXMgLi4uIC0tPgogIDwhLS0gY29tbW9uLmF0dHJpYiwgYnV0IHdpdGhvdXQgSUQgYmVjYXVzZSBJRCBpcyBpbiBhdHRycyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2FwdGlvbi5hdHRsaXN0LmNvbnRlbnQiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2FwdGlvbi5yb2xlLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXR0cnMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYm90dG9tIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYXB0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2FwdGlvbi5hdHRsaXN0LmNvbnRlbnQiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNhcHRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjYXB0aW9uLm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBTeW5vcHNlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gU3lub3BzaXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3lub3BzaXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgZ2VuZXJhbC1wdXJwb3NlIGVsZW1lbnQgZm9yIHJlcHJlc2VudGluZyB0aGUgc3ludGF4IG9mIGNvbW1hbmRzIG9yIGZ1bmN0aW9ucy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3lub3BzaXMiIHN1YnN0aXR1dGlvbkdyb3VwPSJzeW5vcC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1lZGlhb2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29yZWYiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVhbm5vdGF0aW9uIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzeW5vcHNpcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzeW5vcHNpcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzeW5vcHNpcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZXNwZWNpZmljLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3lub3BzaXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN5bm9wc2lzLmF0dGxpc3QgLS0+CiAgPCEtLSBMaW5lQW5ub3RhdGlvbiAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSBlbmQgb2Ygc3lub3BzaXMubW9kdWxlIC0tPgogIDwhLS0gQ21kU3lub3BzaXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY21kc3lub3BzaXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgc3ludGF4IHN1bW1hcnkgZm9yIGEgc29mdHdhcmUgY29tbWFuZC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY21kc3lub3BzaXMiIHN1YnN0aXR1dGlvbkdyb3VwPSJzeW5vcC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iY29tbWFuZCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmciLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JvdXAiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2JyIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzeW5vcGZyYWdtZW50Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNtZHN5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNtZHN5bm9wc2lzLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU2VwY2hhcjogQ2hhcmFjdGVyIHRoYXQgc2hvdWxkIHNlcGFyYXRlIGNvbW1hbmQgYW5kIGFsbAogICAgdG9wLWxldmVsIGFyZ3VtZW50czsgYWx0ZXJuYXRlIHZhbHVlIG1pZ2h0IGJlIGUuZy4sICZEZWx0YTsKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY21kc3lub3BzaXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VwY2hhciIgZGVmYXVsdD0iICIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbWRsZW5ndGgiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNtZHN5bm9wc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjbWRzeW5vcHNpcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNtZHN5bm9wc2lzLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJnLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBbiBhcmd1bWVudCBpbiBhIENtZFN5bm9wc2lzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcmciPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFyZyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JvdXAiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im9wdGlvbiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3BmcmFnbWVudHJlZiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVwbGFjZWFibGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNiciIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJnLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFyZy5lbGVtZW50IC0tPgogIDwhLS0KICAgIENob2ljZTogV2hldGhlciBBcmcgbXVzdCBiZSBzdXBwbGllZDogT3B0IChvcHRpb25hbCB0bwogICAgc3VwcGx5LCBlLmcuIFthcmddOyB0aGUgZGVmYXVsdCksIFJlcSAocmVxdWlyZWQgdG8gc3VwcGx5LAogICAgZS5nLiB7YXJnfSksIG9yIFBsYWluIChyZXF1aXJlZCB0byBzdXBwbHksIGUuZy4gYXJnKQogIC0tPgogIDwhLS0KICAgIFJlcDogd2hldGhlciBBcmcgaXMgcmVwZWF0YWJsZTogTm9yZXBlYXQgKGUuZy4gYXJnIHdpdGhvdXQKICAgIGVsbGlwc2lzOyB0aGUgZGVmYXVsdCksIG9yIFJlcGVhdCAoZS5nLiBhcmcuLi4pCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFyZy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hvaWNlIiBkZWZhdWx0PSJvcHQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVxIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBsYWluIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlcCIgZGVmYXVsdD0ibm9yZXBlYXQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JlcGVhdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXBlYXQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXJnLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXJnLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3JvdXAucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgZ3JvdXAgb2YgZWxlbWVudHMgaW4gYSBDbWRTeW5vcHNpcy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ3JvdXAiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFyZyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JvdXAiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im9wdGlvbiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3BmcmFnbWVudHJlZiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVwbGFjZWFibGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNiciIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3JvdXAuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ3JvdXAuZWxlbWVudCAtLT4KICA8IS0tCiAgICBDaG9pY2U6IFdoZXRoZXIgR3JvdXAgbXVzdCBiZSBzdXBwbGllZDogT3B0IChvcHRpb25hbCB0bwogICAgc3VwcGx5LCBlLmcuICBbZzF8ZzJ8ZzNdOyB0aGUgZGVmYXVsdCksIFJlcSAocmVxdWlyZWQgdG8KICAgIHN1cHBseSwgZS5nLiAge2cxfGcyfGczfSksIFBsYWluIChyZXF1aXJlZCB0byBzdXBwbHksCiAgICBlLmcuICBnMXxnMnxnMyksIE9wdE11bHQgKGNhbiBzdXBwbHkgemVybyBvciBtb3JlLCBlLmcuCiAgICBbW2cxfGcyfGczXV0pLCBvciBSZXFNdWx0IChtdXN0IHN1cHBseSBvbmUgb3IgbW9yZSwgZS5nLgogICAge3tnMXxnMnxnM319KQogIC0tPgogIDwhLS0KICAgIFJlcDogd2hldGhlciBHcm91cCBpcyByZXBlYXRhYmxlOiBOb3JlcGVhdCAoZS5nLiBncm91cAogICAgd2l0aG91dCBlbGxpcHNpczsgdGhlIGRlZmF1bHQpLCBvciBSZXBlYXQgKGUuZy4gZ3JvdXAuLi4pCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdyb3VwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaG9pY2UiIGRlZmF1bHQ9Im9wdCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im9wdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icGxhaW4iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVwIiBkZWZhdWx0PSJub3JlcGVhdCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vcmVwZWF0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlcGVhdCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3JvdXAucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdyb3VwLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ3JvdXAubW9kdWxlIC0tPgogIDwhLS0gU3lub3BzaXMgYnJlYWsgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNici5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gZXhwbGljaXQgbGluZSBicmVhayBpbiBhIGNvbW1hbmQgc3lub3BzaXMuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNiciI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNici5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzYnIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2JyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2JyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzYnIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzYnIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzeW5vcGZyYWdtZW50cmVmLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHJlZmVyZW5jZSB0byBhIGZyYWdtZW50IG9mIGEgY29tbWFuZCBzeW5vcHNpcy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3lub3BmcmFnbWVudHJlZiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzeW5vcGZyYWdtZW50cmVmLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN5bm9wZnJhZ21lbnRyZWYuZWxlbWVudCAtLT4KICA8IS0tCiAgICB0byBTeW5vcEZyYWdtZW50IG9mIGNvbXBsZXggc3lub3BzaXMKICAgIG1hdGVyaWFsIGZvciBzZXBhcmF0ZSByZWZlcmVuY2luZwogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzeW5vcGZyYWdtZW50cmVmLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHJlcS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5bm9wZnJhZ21lbnRyZWYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN5bm9wZnJhZ21lbnRyZWYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzeW5vcGZyYWdtZW50cmVmLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3lub3BmcmFnbWVudC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBwb3J0aW9uIG9mIGEgQ21kU3lub3BzaXMgYnJva2VuIG91dCBmcm9tIHRoZSBtYWluIGJvZHkgb2YgdGhlIHN5bm9wc2lzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzeW5vcGZyYWdtZW50Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmciLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdyb3VwIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzeW5vcGZyYWdtZW50LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN5bm9wZnJhZ21lbnQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3lub3BmcmFnbWVudC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlkcmVxLmNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5bm9wZnJhZ21lbnQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN5bm9wZnJhZ21lbnQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzeW5vcGZyYWdtZW50Lm1vZHVsZSAtLT4KICA8IS0tIENvbW1hbmQgKGRlZmluZWQgaW4gdGhlIElubGluZXMgc2VjdGlvbiwgYmVsb3cpIC0tPgogIDwhLS0gT3B0aW9uIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIFJlcGxhY2VhYmxlIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIGVuZCBvZiBjbWRzeW5vcHNpcy5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIEZ1bmNTeW5vcHNpcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIHN5bnRheCBzdW1tYXJ5IGZvciBhIGZ1bmN0aW9uIGRlZmluaXRpb24uIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImZ1bmNzeW5vcHNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9InN5bm9wLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmdW5jc3lub3BzaXNpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmdW5jcHJvdG90eXBlIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jc3lub3BzaXMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZnVuY3N5bm9wc2lzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNzeW5vcHNpcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZnVuY3N5bm9wc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmdW5jc3lub3BzaXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmdW5jc3lub3BzaXMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmdW5jc3lub3BzaXNpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpJbmZvcm1hdGlvbiBzdXBwbGVtZW50aW5nIHRoZSBGdW5jRGVmcyBvZiBhIEZ1bmNTeW5vcHNpcy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZnVuY3N5bm9wc2lzaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVhbm5vdGF0aW9uIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jc3lub3BzaXNpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZ1bmNzeW5vcHNpc2luZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY3N5bm9wc2lzaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmVzcGVjaWZpYy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmNzeW5vcHNpc2luZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZ1bmNzeW5vcHNpc2luZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmdW5jc3lub3BzaXNpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY3Byb3RvdHlwZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIHByb3RvdHlwZSBvZiBhIGZ1bmN0aW9uLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJmdW5jcHJvdG90eXBlIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibW9kaWZpZXIiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImZ1bmNkZWYiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ2b2lkIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InZhcmFyZ3MiLz4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYW1kZWYiLz4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InZhcmFyZ3MiLz4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jcHJvdG90eXBlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZ1bmNwcm90b3R5cGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY3Byb3RvdHlwZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmNwcm90b3R5cGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZ1bmNwcm90b3R5cGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmdW5jcHJvdG90eXBlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY2RlZi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBmdW5jdGlvbiAoc3Vicm91dGluZSkgbmFtZSBhbmQgaXRzIHJldHVybiB0eXBlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJmdW5jZGVmIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0eXBlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXBsYWNlYWJsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZnVuY3Rpb24iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmNkZWYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZnVuY2RlZi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmdW5jZGVmLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZnVuY2RlZi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZnVuY2RlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZ1bmNkZWYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2b2lkLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBbiBlbXB0eSBlbGVtZW50IGluIGEgZnVuY3Rpb24gc3lub3BzaXMgaW5kaWNhdGluZyB0aGF0IHRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiB0YWtlcyBubyBhcmd1bWVudHMuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InZvaWQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2b2lkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZvaWQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idm9pZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZvaWQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZvaWQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB2b2lkLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmFyYXJncy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gZW1wdHkgZWxlbWVudCBpbiBhIGZ1bmN0aW9uIHN5bm9wc2lzIGluZGljYXRpbmcgYSB2YXJpYWJsZSBudW1iZXIgb2YgYXJndW1lbnRzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2YXJhcmdzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmFyYXJncy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB2YXJhcmdzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZhcmFyZ3MuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2YXJhcmdzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB2YXJhcmdzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdmFyYXJncy5tb2R1bGUgLS0+CiAgPCEtLQogICAgUHJvY2Vzc2luZyBhc3N1bWVzIHRoYXQgb25seSBvbmUgUGFyYW1ldGVyIHdpbGwgYXBwZWFyIGluIGEKICAgIFBhcmFtRGVmLCBhbmQgdGhhdCBGdW5jUGFyYW1zIHdpbGwgYmUgdXNlZCBhdCBtb3N0IG9uY2UsIGZvcgogICAgcHJvdmlkaW5nIGluZm9ybWF0aW9uIG9uIHRoZSAiaW5uZXIgcGFyYW1ldGVycyIgZm9yIHBhcmFtZXRlcnMgdGhhdAogICAgYXJlIHBvaW50ZXJzIHRvIGZ1bmN0aW9ucy4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFyYW1kZWYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkluZm9ybWF0aW9uIGFib3V0IGEgZnVuY3Rpb24gcGFyYW1ldGVyIGluIGEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InBhcmFtZGVmIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbml0aWFsaXplciIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idHlwZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVwbGFjZWFibGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmFtZXRlciIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZnVuY3BhcmFtcyIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFyYW1kZWYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcGFyYW1kZWYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFyYW1kZWYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNob2ljZSI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im9wdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXEiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcmFtZGVmLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwYXJhbWRlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBhcmFtZGVmLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY3BhcmFtcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6UGFyYW1ldGVycyBmb3IgYSBmdW5jdGlvbiByZWZlcmVuY2VkIHRocm91Z2ggYSBmdW5jdGlvbiBwb2ludGVyIGluIGEgc3lub3BzaXMuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImZ1bmNwYXJhbXMiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jcGFyYW1zLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZ1bmNwYXJhbXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY3BhcmFtcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmNwYXJhbXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZ1bmNwYXJhbXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmdW5jcGFyYW1zLm1vZHVsZSAtLT4KICA8IS0tIExpbmVBbm5vdGF0aW9uIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIFJlcGxhY2VhYmxlIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIEZ1bmN0aW9uIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIFBhcmFtZXRlciAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSBlbmQgb2YgZnVuY3N5bm9wc2lzLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gQ2xhc3NTeW5vcHNpcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNsYXNzc3lub3BzaXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBzeW50YXggc3VtbWFyeSBmb3IgYSBjbGFzcyBkZWZpbml0aW9uLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJjbGFzc3N5bm9wc2lzIiBzdWJzdGl0dXRpb25Hcm91cD0ic3lub3AuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im9vY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ib29pbnRlcmZhY2UiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ib29leGNlcHRpb24iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbGFzc3N5bm9wc2lzaW5mbyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmaWVsZHN5bm9wc2lzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1ldGhvZC5zeW5vcC5jbGFzcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjbGFzc3N5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNsYXNzc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2xhc3NzeW5vcHNpcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFuZ3VhZ2UiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIGRlZmF1bHQ9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2xhc3MiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaW50ZXJmYWNlIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjbGFzc3N5bm9wc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjbGFzc3N5bm9wc2lzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2xhc3NzeW5vcHNpcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNsYXNzc3lub3BzaXNpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpJbmZvcm1hdGlvbiBzdXBwbGVtZW50aW5nIHRoZSBjb250ZW50cyBvZiBhIENsYXNzU3lub3BzaXMuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNsYXNzc3lub3BzaXNpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGV4dG9iamVjdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZWFubm90YXRpb24iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNsYXNzc3lub3BzaXNpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNsYXNzc3lub3BzaXNpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNsYXNzc3lub3BzaXNpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZXNwZWNpZmljLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2xhc3NzeW5vcHNpc2luZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNsYXNzc3lub3BzaXNpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2xhc3NzeW5vcHNpc2luZm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvb2NsYXNzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGNsYXNzIGluIGFuIG9iamVjdC1vcmllbnRlZCBwcm9ncmFtbWluZyBsYW5ndWFnZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib29jbGFzcyIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtb2RpZmllciIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYWNrYWdlIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbGFzc25hbWUiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib29jbGFzcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvb2NsYXNzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9vY2xhc3MuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvb2NsYXNzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvb2NsYXNzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb29jbGFzcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9vaW50ZXJmYWNlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBbiBpbnRlcmZhY2UgaW4gYW4gb2JqZWN0LW9yaWVudGVkIHByb2dyYW1taW5nIGxhbmd1YWdlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJvb2ludGVyZmFjZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtb2RpZmllciIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYWNrYWdlIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbnRlcmZhY2VuYW1lIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9vaW50ZXJmYWNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG9vaW50ZXJmYWNlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9vaW50ZXJmYWNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib29pbnRlcmZhY2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG9vaW50ZXJmYWNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb29pbnRlcmZhY2UubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvb2V4Y2VwdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gZXhjZXB0aW9uIGluIGFuIG9iamVjdC1vcmllbnRlZCBwcm9ncmFtbWluZyBsYW5ndWFnZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib29leGNlcHRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibW9kaWZpZXIiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icGFja2FnZSIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZXhjZXB0aW9ubmFtZSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvb2V4Y2VwdGlvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvb2V4Y2VwdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvb2V4Y2VwdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9vZXhjZXB0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvb2V4Y2VwdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG9vZXhjZXB0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibW9kaWZpZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOk1vZGlmaWVycyBpbiBhIHN5bm9wc2lzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJtb2RpZmllciI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9kaWZpZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbW9kaWZpZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibW9kaWZpZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb2RpZmllci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbW9kaWZpZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtb2RpZmllci5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImludGVyZmFjZW5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBuYW1lIG9mIGFuIGludGVyZmFjZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW50ZXJmYWNlbmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImludGVyZmFjZW5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW50ZXJmYWNlbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbnRlcmZhY2VuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW50ZXJmYWNlbmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW50ZXJmYWNlbmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGludGVyZmFjZW5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJleGNlcHRpb25uYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbmFtZSBvZiBhbiBleGNlcHRpb24uIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImV4Y2VwdGlvbm5hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImV4Y2VwdGlvbm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZXhjZXB0aW9ubmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJleGNlcHRpb25uYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXhjZXB0aW9ubmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZXhjZXB0aW9ubmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGV4Y2VwdGlvbm5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmaWVsZHN5bm9wc2lzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbmFtZSBvZiBhIGZpZWxkIGluIGEgY2xhc3MgZGVmaW5pdGlvbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZmllbGRzeW5vcHNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9InN5bm9wLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibW9kaWZpZXIiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idHlwZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idmFybmFtZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJpbml0aWFsaXplciIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaWVsZHN5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZpZWxkc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmllbGRzeW5vcHNpcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFuZ3VhZ2UiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZpZWxkc3lub3BzaXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZpZWxkc3lub3BzaXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmaWVsZHN5bm9wc2lzLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5pdGlhbGl6ZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBpbml0aWFsaXplciBmb3IgYSBGaWVsZFN5bm9wc2lzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbml0aWFsaXplciI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5pdGlhbGl6ZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5pdGlhbGl6ZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5pdGlhbGl6ZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbml0aWFsaXplci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW5pdGlhbGl6ZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbml0aWFsaXplci5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnN0cnVjdG9yc3lub3BzaXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgc3ludGF4IHN1bW1hcnkgZm9yIGEgY29uc3RydWN0b3IuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNvbnN0cnVjdG9yc3lub3BzaXMiIHN1YnN0aXR1dGlvbkdyb3VwPSJtZXRob2Quc3lub3AuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJtZXRob2RuYW1lIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1ldGhvZHBhcmFtIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idm9pZCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZXhjZXB0aW9ubmFtZSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25zdHJ1Y3RvcnN5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbnN0cnVjdG9yc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29uc3RydWN0b3JzeW5vcHNpcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFuZ3VhZ2UiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnN0cnVjdG9yc3lub3BzaXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbnN0cnVjdG9yc3lub3BzaXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb25zdHJ1Y3RvcnN5bm9wc2lzLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGVzdHJ1Y3RvcnN5bm9wc2lzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHN5bnRheCBzdW1tYXJ5IGZvciBhIGRlc3RydWN0b3IuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImRlc3RydWN0b3JzeW5vcHNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9Im1ldGhvZC5zeW5vcC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1vZGlmaWVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im1ldGhvZG5hbWUiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWV0aG9kcGFyYW0iLz4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ2b2lkIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJleGNlcHRpb25uYW1lIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRlc3RydWN0b3JzeW5vcHNpcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBkZXN0cnVjdG9yc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGVzdHJ1Y3RvcnN5bm9wc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYW5ndWFnZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZGVzdHJ1Y3RvcnN5bm9wc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBkZXN0cnVjdG9yc3lub3BzaXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBkZXN0cnVjdG9yc3lub3BzaXMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZXRob2RzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBzeW50YXggc3VtbWFyeSBmb3IgYSBtZXRob2QuIC0tPgogIDx4czplbGVtZW50IG5hbWU9Im1ldGhvZHN5bm9wc2lzIiBzdWJzdGl0dXRpb25Hcm91cD0ibWV0aG9kLnN5bm9wLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibW9kaWZpZXIiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InR5cGUiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idm9pZCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibWV0aG9kbmFtZSIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtZXRob2RwYXJhbSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InZvaWQiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImV4Y2VwdGlvbm5hbWUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1vZGlmaWVyIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1ldGhvZHN5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1ldGhvZHN5bm9wc2lzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1ldGhvZHN5bm9wc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYW5ndWFnZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWV0aG9kc3lub3BzaXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1ldGhvZHN5bm9wc2lzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWV0aG9kc3lub3BzaXMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZXRob2RuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbmFtZSBvZiBhIG1ldGhvZC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWV0aG9kbmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWV0aG9kbmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtZXRob2RuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1ldGhvZG5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZXRob2RuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtZXRob2RuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWV0aG9kbmFtZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1ldGhvZHBhcmFtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpQYXJhbWV0ZXJzIHRvIGEgbWV0aG9kLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJtZXRob2RwYXJhbSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1vZGlmaWVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InR5cGUiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmFtZXRlciIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iaW5pdGlhbGl6ZXIiLz4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImZ1bmNwYXJhbXMiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1vZGlmaWVyIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1ldGhvZHBhcmFtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1ldGhvZHBhcmFtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1ldGhvZHBhcmFtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaG9pY2UiIGRlZmF1bHQ9InJlcSI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im9wdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icGxhaW4iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVwIiBkZWZhdWx0PSJub3JlcGVhdCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vcmVwZWF0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlcGVhdCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWV0aG9kcGFyYW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1ldGhvZHBhcmFtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWV0aG9kcGFyYW0ubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIGNsYXNzc3lub3BzaXMuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gRG9jdW1lbnQgaW5mb3JtYXRpb24gZW50aXRpZXMgYW5kIGVsZW1lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tCiAgICBUaGUgZG9jdW1lbnQgaW5mb3JtYXRpb24gZWxlbWVudHMgaW5jbHVkZSBzb21lIGVsZW1lbnRzIHRoYXQgYXJlCiAgICBjdXJyZW50bHkgdXNlZCBvbmx5IGluIHRoZSBkb2N1bWVudCBoaWVyYXJjaHkgbW9kdWxlLiBUaGV5IGFyZQogICAgZGVmaW5lZCBoZXJlIHNvIHRoYXQgdGhleSB3aWxsIGJlIGF2YWlsYWJsZSBmb3IgdXNlIGluIGN1c3RvbWl6ZWQKICAgIGRvY3VtZW50IGhpZXJhcmNoaWVzLgogIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEFja25vIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFja25vLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBY2tub3dsZWRnZW1lbnRzIGluIGFuIEFydGljbGUuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImFja25vIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWNrbm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWNrbm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWNrbm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhY2tuby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWNrbm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhY2tuby5tb2R1bGUgLS0+CiAgPCEtLSBBZGRyZXNzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhZGRyZXNzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHJlYWwtd29ybGQgYWRkcmVzcywgZ2VuZXJhbGx5IGEgcG9zdGFsIGFkZHJlc3MuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImFkZHJlc3MiIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icGVyc29ubmFtZSIvPgogICAgICAgIDx4czpncm91cCByZWY9InBlcnNvbi5pZGVudC5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN0cmVldCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icG9iIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwb3N0Y29kZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY2l0eSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3RhdGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvdW50cnkiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBob25lIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmYXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtYWlsIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvdGhlcmFkZHIiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFkZHJlc3MuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWRkcmVzcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhZGRyZXNzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZXNwZWNpZmljLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRkcmVzcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWRkcmVzcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFkZHJlc3MubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdHJlZXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgc3RyZWV0IGFkZHJlc3MgaW4gYW4gYWRkcmVzcy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3RyZWV0Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RyZWV0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN0cmVldC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdHJlZXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdHJlZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN0cmVldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN0cmVldC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBvYi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBwb3N0IG9mZmljZSBib3ggaW4gYW4gYWRkcmVzcy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icG9iIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icG9iLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBvYi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwb2IuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwb2Iucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBvYi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBvYi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBvc3Rjb2RlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHBvc3RhbCBjb2RlIGluIGFuIGFkZHJlc3MuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InBvc3Rjb2RlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icG9zdGNvZGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcG9zdGNvZGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icG9zdGNvZGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwb3N0Y29kZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcG9zdGNvZGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwb3N0Y29kZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNpdHkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBuYW1lIG9mIGEgY2l0eSBpbiBhbiBhZGRyZXNzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJjaXR5Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0eS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjaXR5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNpdHkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaXR5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjaXR5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2l0eS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0YXRlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHN0YXRlIG9yIHByb3ZpbmNlIGluIGFuIGFkZHJlc3MuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InN0YXRlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3RhdGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RhdGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0ZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3RhdGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzdGF0ZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvdW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBuYW1lIG9mIGEgY291bnRyeS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY291bnRyeSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvdW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY291bnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3VudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY291bnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY291bnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvdW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwaG9uZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSB0ZWxlcGhvbmUgbnVtYmVyLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJwaG9uZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBob25lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBob25lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBob25lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGhvbmUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBob25lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcGhvbmUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmYXgucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgZmF4IG51bWJlci4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZmF4Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZmF4LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZheC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmYXguYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmYXgucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZheC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZheC5tb2R1bGUgLS0+CiAgPCEtLSBFbWFpbCAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im90aGVyYWRkci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VW5jYXRlZ29yaXplZCBpbmZvcm1hdGlvbiBpbiBhZGRyZXNzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJvdGhlcmFkZHIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvdGhlcmFkZHIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb3RoZXJhZGRyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im90aGVyYWRkci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im90aGVyYWRkci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb3RoZXJhZGRyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb3RoZXJhZGRyLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBhZGRyZXNzLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gQWZmaWxpYXRpb24gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWZmaWxpYXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBpbnN0aXR1dGlvbmFsIGFmZmlsaWF0aW9uIG9mIGFuIGluZGl2aWR1YWwuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImFmZmlsaWF0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzaG9ydGFmZmlsIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJqb2J0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJvcmduYW1lIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJvcmdkaXYiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFkZHJlc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWZmaWxpYXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWZmaWxpYXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWZmaWxpYXRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhZmZpbGlhdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWZmaWxpYXRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhZmZpbGlhdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNob3J0YWZmaWwucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgYnJpZWYgZGVzY3JpcHRpb24gb2YgYW4gYWZmaWxpYXRpb24uIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNob3J0YWZmaWwiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaG9ydGFmZmlsLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNob3J0YWZmaWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2hvcnRhZmZpbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNob3J0YWZmaWwucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNob3J0YWZmaWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzaG9ydGFmZmlsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iam9idGl0bGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSB0aXRsZSBvZiBhbiBpbmRpdmlkdWFsIGluIGFuIG9yZ2FuaXphdGlvbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iam9idGl0bGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJqb2J0aXRsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBqb2J0aXRsZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJqb2J0aXRsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImpvYnRpdGxlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBqb2J0aXRsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGpvYnRpdGxlLm1vZHVsZSAtLT4KICA8IS0tIE9yZ05hbWUgKGRlZmluZWQgZWxzZXdoZXJlIGluIHRoaXMgc2VjdGlvbikgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9yZ2Rpdi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBkaXZpc2lvbiBvZiBhbiBvcmdhbml6YXRpb24uIC0tPgogIDx4czplbGVtZW50IG5hbWU9Im9yZ2RpdiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9yZ2Rpdi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvcmdkaXYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3JnZGl2LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3JnZGl2LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvcmdkaXYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvcmdkaXYubW9kdWxlIC0tPgogIDwhLS0gQWRkcmVzcyAoZGVmaW5lZCBlbHNld2hlcmUgaW4gdGhpcyBzZWN0aW9uKSAtLT4KICA8IS0tIGVuZCBvZiBhZmZpbGlhdGlvbi5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIEFydFBhZ2VOdW1zIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFydHBhZ2VudW1zLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgcGFnZSBudW1iZXJzIG9mIGFuIGFydGljbGUgYXMgcHVibGlzaGVkLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcnRwYWdlbnVtcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFydHBhZ2VudW1zLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFydHBhZ2VudW1zLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFydHBhZ2VudW1zLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJ0cGFnZW51bXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFydHBhZ2VudW1zLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXJ0cGFnZW51bXMubW9kdWxlIC0tPgogIDwhLS0gUGVyc29uTmFtZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGVyc29ubmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIHBlcnNvbmFsIG5hbWUgb2YgYW4gaW5kaXZpZHVhbC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGVyc29ubmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJob25vcmlmaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImZpcnN0bmFtZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3VybmFtZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZWFnZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ib3RoZXJuYW1lIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwZXJzb25uYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBlcnNvbm5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGVyc29ubmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBlcnNvbm5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBlcnNvbm5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwZXJzb25uYW1lLm1vZHVsZSAtLT4KICA8IS0tIEF1dGhvciAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1dGhvci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIG5hbWUgb2YgYW4gaW5kaXZpZHVhbCBhdXRob3IuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImF1dGhvciIgc3Vic3RpdHV0aW9uR3JvdXA9ImRvY2luZm8uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwZXJzb25uYW1lIi8+CiAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGVyc29uLmlkZW50Lm1peCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBlcnNvbmJsdXJiIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtYWlsIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFkZHJlc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXV0aG9yLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGF1dGhvci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdXRob3IuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdXRob3Iucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGF1dGhvci5hdHRsaXN0IC0tPgogIDwhLS0gKHNlZSAiUGVyc29uYWwgaWRlbnRpdHkgZWxlbWVudHMiIGZvciAlcGVyc29uLmlkZW50Lm1peDspIC0tPgogIDwhLS0gZW5kIG9mIGF1dGhvci5tb2R1bGUgLS0+CiAgPCEtLSBBdXRob3JHcm91cCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdXRob3Jncm91cC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6V3JhcHBlciBmb3IgYXV0aG9yIGluZm9ybWF0aW9uIHdoZW4gYSBkb2N1bWVudCBoYXMgbXVsdGlwbGUgYXV0aG9ycyBvciBjb2xsYWJhcmF0b3JzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJhdXRob3Jncm91cCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYXV0aG9yIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlZGl0b3IiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbGxhYiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29ycGF1dGhvciIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29ycGNyZWRpdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ib3RoZXJjcmVkaXQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1dGhvcmdyb3VwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGF1dGhvcmdyb3VwLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1dGhvcmdyb3VwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXV0aG9yZ3JvdXAucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGF1dGhvcmdyb3VwLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXV0aG9yZ3JvdXAubW9kdWxlIC0tPgogIDwhLS0gQXV0aG9yIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDwhLS0gRWRpdG9yIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2xsYWIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOklkZW50aWZpZXMgYSBjb2xsYWJvcmF0b3IuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNvbGxhYiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbGxhYm5hbWUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFmZmlsaWF0aW9uIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbGxhYi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb2xsYWIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29sbGFiLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29sbGFiLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb2xsYWIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb2xsYWIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2xsYWJuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbmFtZSBvZiBhIGNvbGxhYm9yYXRvci4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29sbGFibmFtZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbGxhYm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29sbGFibmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2xsYWJuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29sbGFibmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29sbGFibmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbGxhYm5hbWUubW9kdWxlIC0tPgogIDwhLS0gQWZmaWxpYXRpb24gKGRlZmluZWQgZWxzZXdoZXJlIGluIHRoaXMgc2VjdGlvbikgLS0+CiAgPCEtLSBlbmQgb2YgY29sbGFiLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gQ29ycEF1dGhvciAoZGVmaW5lZCBlbHNld2hlcmUgaW4gdGhpcyBzZWN0aW9uKSAtLT4KICA8IS0tIE90aGVyQ3JlZGl0IChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDwhLS0gZW5kIG9mIGF1dGhvcmdyb3VwLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gQXV0aG9ySW5pdGlhbHMgLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXV0aG9yaW5pdGlhbHMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBpbml0aWFscyBvciBvdGhlciBzaG9ydCBpZGVudGlmaWVyIGZvciBhbiBhdXRob3IuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImF1dGhvcmluaXRpYWxzIiBzdWJzdGl0dXRpb25Hcm91cD0iZG9jaW5mby5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXV0aG9yaW5pdGlhbHMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXV0aG9yaW5pdGlhbHMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXV0aG9yaW5pdGlhbHMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdXRob3Jpbml0aWFscy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXV0aG9yaW5pdGlhbHMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhdXRob3Jpbml0aWFscy5tb2R1bGUgLS0+CiAgPCEtLSBDb25mR3JvdXAgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mZ3JvdXAucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgd3JhcHBlciBmb3IgZG9jdW1lbnQgbWV0YS1pbmZvcm1hdGlvbiBhYm91dCBhIGNvbmZlcmVuY2UuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNvbmZncm91cCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb25mZGF0ZXMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbmZ0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29uZm51bSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYWRkcmVzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29uZnNwb25zb3IiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbmZncm91cC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb25mZ3JvdXAuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29uZmdyb3VwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZmdyb3VwLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb25mZ3JvdXAuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb25mZ3JvdXAubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mZGF0ZXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBkYXRlcyBvZiBhIGNvbmZlcmVuY2UgZm9yIHdoaWNoIGEgZG9jdW1lbnQgd2FzIHdyaXR0ZW4uIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNvbmZkYXRlcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbmZkYXRlcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb25mZGF0ZXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29uZmRhdGVzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZmRhdGVzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb25mZGF0ZXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb25mZGF0ZXMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mdGl0bGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSB0aXRsZSBvZiBhIGNvbmZlcmVuY2UgZm9yIHdoaWNoIGEgZG9jdW1lbnQgd2FzIHdyaXR0ZW4uIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNvbmZ0aXRsZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbmZ0aXRsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb25mdGl0bGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29uZnRpdGxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZnRpdGxlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb25mdGl0bGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb25mdGl0bGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mbnVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBbiBpZGVudGlmaWVyLCBmcmVxdWVudGx5IG51bWVyaWNhbCwgYXNzb2NpYXRlZCB3aXRoIGEgY29uZmVyZW5jZSBmb3Igd2hpY2ggYSBkb2N1bWVudCB3YXMgd3JpdHRlbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29uZm51bSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbmZudW0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29uZm51bS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mbnVtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZm51bS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29uZm51bS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbmZudW0ubW9kdWxlIC0tPgogIDwhLS0gQWRkcmVzcyAoZGVmaW5lZCBlbHNld2hlcmUgaW4gdGhpcyBzZWN0aW9uKSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29uZnNwb25zb3Iucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBzcG9uc29yIG9mIGEgY29uZmVyZW5jZSBmb3Igd2hpY2ggYSBkb2N1bWVudCB3YXMgd3JpdHRlbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29uZnNwb25zb3IiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25mc3BvbnNvci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb25mc3BvbnNvci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mc3BvbnNvci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbmZzcG9uc29yLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb25mc3BvbnNvci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbmZzcG9uc29yLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBjb25mZ3JvdXAuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBDb250cmFjdE51bSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb250cmFjdG51bS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIGNvbnRyYWN0IG51bWJlciBvZiBhIGRvY3VtZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb250cmFjdG51bSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnRyYWN0bnVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbnRyYWN0bnVtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnRyYWN0bnVtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29udHJhY3RudW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbnRyYWN0bnVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29udHJhY3RudW0ubW9kdWxlIC0tPgogIDwhLS0gQ29udHJhY3RTcG9uc29yIC4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29udHJhY3RzcG9uc29yLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgc3BvbnNvciBvZiBhIGNvbnRyYWN0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb250cmFjdHNwb25zb3IiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb250cmFjdHNwb25zb3IuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29udHJhY3RzcG9uc29yLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnRyYWN0c3BvbnNvci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnRyYWN0c3BvbnNvci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29udHJhY3RzcG9uc29yLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29udHJhY3RzcG9uc29yLm1vZHVsZSAtLT4KICA8IS0tIENvcHlyaWdodCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvcHlyaWdodC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6Q29weXJpZ2h0IGluZm9ybWF0aW9uIGFib3V0IGEgZG9jdW1lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNvcHlyaWdodCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ5ZWFyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJob2xkZXIiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29weXJpZ2h0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvcHlyaWdodC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3B5cmlnaHQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3B5cmlnaHQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvcHlyaWdodC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvcHlyaWdodC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InllYXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSB5ZWFyIG9mIHB1YmxpY2F0aW9uIG9mIGEgZG9jdW1lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InllYXIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ5ZWFyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHllYXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ieWVhci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InllYXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHllYXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB5ZWFyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaG9sZGVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbmFtZSBvZiB0aGUgaW5kaXZpZHVhbCBvciBvcmdhbml6YXRpb24gdGhhdCBob2xkcyBhIGNvcHlyaWdodC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaG9sZGVyIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaG9sZGVyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGhvbGRlci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJob2xkZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJob2xkZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGhvbGRlci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGhvbGRlci5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgY29weXJpZ2h0LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gQ29ycEF1dGhvciAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29ycGF1dGhvci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBjb3Jwb3JhdGUgYXV0aG9yLCBhcyBvcHBvc2VkIHRvIGFuIGluZGl2aWR1YWwuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNvcnBhdXRob3IiIHN1YnN0aXR1dGlvbkdyb3VwPSJkb2NpbmZvLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3JwYXV0aG9yLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvcnBhdXRob3IuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29ycGF1dGhvci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvcnBhdXRob3Iucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvcnBhdXRob3IuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb3JwYXV0aG9yLm1vZHVsZSAtLT4KICA8IS0tIENvcnBDcmVkaXQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29ycGNyZWRpdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBjb3Jwb3JhdGlvbiBvciBvcmdhbml6YXRpb24gY3JlZGl0ZWQgaW4gYSBkb2N1bWVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29ycGNyZWRpdCIgc3Vic3RpdHV0aW9uR3JvdXA9ImRvY2luZm8uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvcnBjcmVkaXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29ycGNyZWRpdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3JwY3JlZGl0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImdyYXBoaWNkZXNpZ25lciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcm9kdWN0aW9uZWRpdG9yIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvcHllZGl0b3IiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idGVjaG5pY2FsZWRpdG9yIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRyYW5zbGF0b3IiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvcnBjcmVkaXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvcnBjcmVkaXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb3JwY3JlZGl0Lm1vZHVsZSAtLT4KICA8IS0tIENvcnBOYW1lIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBkb2M6VGhlIG5hbWUgb2YgYSBjb3Jwb3JhdGlvbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29ycG5hbWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3JwbmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb3JwbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3JwbmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvcnBuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29ycG5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvcnBuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29ycG5hbWUubW9kdWxlIC0tPgogIDwhLS0gRGF0ZSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGF0ZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIGRhdGUgb2YgcHVibGljYXRpb24gb3IgcmV2aXNpb24gb2YgYSBkb2N1bWVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZGF0ZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRhdGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZGF0ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJkYXRlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZGF0ZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZGF0ZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGRhdGUubW9kdWxlIC0tPgogIDwhLS0gRWRpdGlvbiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZWRpdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIG5hbWUgb3IgbnVtYmVyIG9mIGFuIGVkaXRpb24gb2YgYSBkb2N1bWVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZWRpdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVkaXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZWRpdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlZGl0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZWRpdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZWRpdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVkaXRpb24ubW9kdWxlIC0tPgogIDwhLS0gRWRpdG9yIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZWRpdG9yLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbmFtZSBvZiB0aGUgZWRpdG9yIG9mIGEgZG9jdW1lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImVkaXRvciI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwZXJzb25uYW1lIi8+CiAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGVyc29uLmlkZW50Lm1peCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBlcnNvbmJsdXJiIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtYWlsIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFkZHJlc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZWRpdG9yLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGVkaXRvci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlZGl0b3IuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlZGl0b3Iucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGVkaXRvci5hdHRsaXN0IC0tPgogIDwhLS0gKHNlZSAiUGVyc29uYWwgaWRlbnRpdHkgZWxlbWVudHMiIGZvciAlcGVyc29uLmlkZW50Lm1peDspIC0tPgogIDwhLS0gZW5kIG9mIGVkaXRvci5tb2R1bGUgLS0+CiAgPCEtLSBJU0JOIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpc2JuLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgSW50ZXJuYXRpb25hbCBTdGFuZGFyZCBCb29rIE51bWJlciBvZiBhIGRvY3VtZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJpc2JuIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaXNibi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpc2JuLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlzYm4uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpc2JuLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpc2JuLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaXNibi5tb2R1bGUgLS0+CiAgPCEtLSBJU1NOIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpc3NuLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgSW50ZXJuYXRpb25hbCBTdGFuZGFyZCBTZXJpYWwgTnVtYmVyIG9mIGEgcGVyaW9kaWNhbC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaXNzbiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imlzc24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaXNzbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpc3NuLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaXNzbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaXNzbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGlzc24ubW9kdWxlIC0tPgogIDwhLS0gQmlibGlvSWQgLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpby5jbGFzcy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InVyaSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkb2kiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXNibiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpc3JuIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imlzc24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGlicmFyeW9mY29uZ3Jlc3MiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icHVibnVtYmVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im90aGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVyY2xhc3MiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9pZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gaWRlbnRpZmllciBmb3IgYSBkb2N1bWVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvaWQiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9pZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiaWJsaW9pZC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9pZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpby5jbGFzcy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2lkLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9pZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb2lkLm1vZHVsZSAtLT4KICA8IS0tIENpdGVCaWJsaW9JZCAuLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2l0ZWJpYmxpb2lkLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGNpdGF0aW9uIG9mIGEgYmlibGlvZ3JhcGhpYyBpZGVudGlmaWVyLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJjaXRlYmlibGlvaWQiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNpdGViaWJsaW9pZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjaXRlYmlibGlvaWQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2l0ZWJpYmxpb2lkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvLmNsYXNzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0ZWJpYmxpb2lkLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjaXRlYmlibGlvaWQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjaXRlYmlibGlvaWQubW9kdWxlIC0tPgogIDwhLS0gQmlibGlvU291cmNlIC4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9zb3VyY2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBzb3VyY2Ugb2YgYSBkb2N1bWVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvc291cmNlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvc291cmNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb3NvdXJjZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9zb3VyY2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW8uY2xhc3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9zb3VyY2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb3NvdXJjZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb3NvdXJjZS5tb2R1bGUgLS0+CiAgPCEtLSBCaWJsaW9SZWxhdGlvbiAuLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvcmVsYXRpb24udHlwZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXN2ZXJzaW9ub2YiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaGFzdmVyc2lvbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpc3JlcGxhY2VkYnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVwbGFjZXMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXNyZXF1aXJlZGJ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlcXVpcmVzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImlzcGFydG9mIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imhhc3BhcnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXNyZWZlcmVuY2VkYnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVmZXJlbmNlcyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpc2Zvcm1hdG9mIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imhhc2Zvcm1hdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlcnR5cGUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3RoZXJ0eXBlIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvcmVsYXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSByZWxhdGlvbnNoaXAgb2YgYSBkb2N1bWVudCB0byBhbm90aGVyLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9yZWxhdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb3JlbGF0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb3JlbGF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb3JlbGF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvLmNsYXNzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvcmVsYXRpb24udHlwZS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb3JlbGF0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9yZWxhdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb3JlbGF0aW9uLm1vZHVsZSAtLT4KICA8IS0tIEJpYmxpb0NvdmVyYWdlIC4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9jb3ZlcmFnZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIHNwYXRpYWwgb3IgdGVtcG9yYWwgY292ZXJhZ2Ugb2YgYSBkb2N1bWVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvY292ZXJhZ2UiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9jb3ZlcmFnZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiaWJsaW9jb3ZlcmFnZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9jb3ZlcmFnZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3BhdGlhbCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRjbWlwb2ludCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpc28zMTY2Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRjbWlib3giLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idGduIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im90aGVyc3BhdGlhbCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcnNwYXRpYWwiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGVtcG9yYWwiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkY21pcGVyaW9kIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InczYy1kdGYiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXJ0ZW1wb3JhbCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcnRlbXBvcmFsIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9jb3ZlcmFnZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmlibGlvY292ZXJhZ2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9jb3ZlcmFnZS5tb2R1bGUgLS0+CiAgPCEtLSBJbnZQYXJ0TnVtYmVyIC4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbnZwYXJ0bnVtYmVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBbiBpbnZlbnRvcnkgcGFydCBudW1iZXIuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImludnBhcnRudW1iZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbnZwYXJ0bnVtYmVyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGludnBhcnRudW1iZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW52cGFydG51bWJlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImludnBhcnRudW1iZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGludnBhcnRudW1iZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbnZwYXJ0bnVtYmVyLm1vZHVsZSAtLT4KICA8IS0tIElzc3VlTnVtIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imlzc3VlbnVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbnVtYmVyIG9mIGFuIGlzc3VlIG9mIGEgam91cm5hbC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaXNzdWVudW0iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpc3N1ZW51bS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpc3N1ZW51bS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpc3N1ZW51bS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imlzc3VlbnVtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpc3N1ZW51bS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGlzc3VlbnVtLm1vZHVsZSAtLT4KICA8IS0tIExlZ2FsTm90aWNlIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxlZ2Fsbm90aWNlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHN0YXRlbWVudCBvZiBsZWdhbCBvYmxpZ2F0aW9ucyBvciByZXF1aXJlbWVudHMuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImxlZ2Fsbm90aWNlIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibGVnYWxub3RpY2UubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxlZ2Fsbm90aWNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxlZ2Fsbm90aWNlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxlZ2Fsbm90aWNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGVnYWxub3RpY2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxlZ2Fsbm90aWNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGVnYWxub3RpY2UubW9kdWxlIC0tPgogIDwhLS0gTW9kZVNwZWMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibW9kZXNwZWMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkFwcGxpY2F0aW9uLXNwZWNpZmljIGluZm9ybWF0aW9uIG5lY2Vzc2FyeSBmb3IgdGhlIGNvbXBsZXRpb24gb2YgYW4gT0xpbmsuIC0tPgogIDx4czplbGVtZW50IG5hbWU9Im1vZGVzcGVjIiBzdWJzdGl0dXRpb25Hcm91cD0iZG9jaW5mby5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9kZXNwZWMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbW9kZXNwZWMuZWxlbWVudCAtLT4KICA8IS0tCiAgICBBcHBsaWNhdGlvbjogVHlwZSBvZiBhY3Rpb24gcmVxdWlyZWQgZm9yIGNvbXBsZXRpb24KICAgIG9mIHRoZSBsaW5rcyB0byB3aGljaCB0aGUgTW9kZVNwZWMgaXMgcmVsZXZhbnQgKGUuZy4sCiAgICByZXRyaWV2YWwgcXVlcnkpCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1vZGVzcGVjLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhcHBsaWNhdGlvbiIgdHlwZT0ibm90YXRpb24uY2xhc3MiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vZGVzcGVjLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtb2Rlc3BlYy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1vZGVzcGVjLm1vZHVsZSAtLT4KICA8IS0tIE9yZ05hbWUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9yZ25hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBuYW1lIG9mIGFuIG9yZ2FuaXphdGlvbiBvdGhlciB0aGFuIGEgY29ycG9yYXRpb24uIC0tPgogIDx4czplbGVtZW50IG5hbWU9Im9yZ25hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9yZ25hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb3JnbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcmduYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvcnBvcmF0aW9uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vbnByb2ZpdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb25zb3J0aXVtIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImluZm9ybWFsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im90aGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVyY2xhc3MiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9yZ25hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG9yZ25hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvcmduYW1lLm1vZHVsZSAtLT4KICA8IS0tIE90aGVyQ3JlZGl0IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im90aGVyY3JlZGl0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHBlcnNvbiBvciBlbnRpdHksIG90aGVyIHRoYW4gYW4gYXV0aG9yIG9yIGVkaXRvciwgY3JlZGl0ZWQgaW4gYSBkb2N1bWVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib3RoZXJjcmVkaXQiIHN1YnN0aXR1dGlvbkdyb3VwPSJkb2NpbmZvLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icGVyc29ubmFtZSIvPgogICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBlcnNvbi5pZGVudC5taXgiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwZXJzb25ibHVyYiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlbWFpbCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZGRyZXNzIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im90aGVyY3JlZGl0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG90aGVyY3JlZGl0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im90aGVyY3JlZGl0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImdyYXBoaWNkZXNpZ25lciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcm9kdWN0aW9uZWRpdG9yIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvcHllZGl0b3IiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idGVjaG5pY2FsZWRpdG9yIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRyYW5zbGF0b3IiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im90aGVyY3JlZGl0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvdGhlcmNyZWRpdC5hdHRsaXN0IC0tPgogIDwhLS0gKHNlZSAiUGVyc29uYWwgaWRlbnRpdHkgZWxlbWVudHMiIGZvciAlcGVyc29uLmlkZW50Lm1peDspIC0tPgogIDwhLS0gZW5kIG9mIG90aGVyY3JlZGl0Lm1vZHVsZSAtLT4KICA8IS0tIFBhZ2VOdW1zIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhZ2VudW1zLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbnVtYmVycyBvZiB0aGUgcGFnZXMgaW4gYSBib29rLCBmb3IgdXNlIGluIGEgYmlibGlvZ3JhcGhpYyBlbnRyeS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGFnZW51bXMiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwYWdlbnVtcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYWdlbnVtcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhZ2VudW1zLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwYWdlbnVtcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBhZ2VudW1zLm1vZHVsZSAtLT4KICA8IS0tIFBlcnNvbmFsIGlkZW50aXR5IGVsZW1lbnRzIC4uLi4uLi4gLS0+CiAgPCEtLQogICAgVGhlc2UgZWxlbWVudHMgYXJlIHVzZWQgb25seSB3aXRoaW4gQXV0aG9yLCBFZGl0b3IsIGFuZAogICAgT3RoZXJDcmVkaXQuCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnRyaWIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgc3VtbWFyeSBvZiB0aGUgY29udHJpYnV0aW9ucyBtYWRlIHRvIGEgZG9jdW1lbnQgYnkgYSBjcmVkaXRlZCBzb3VyY2UuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNvbnRyaWIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb250cmliLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbnRyaWIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29udHJpYi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnRyaWIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbnRyaWIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb250cmliLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmlyc3RuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgZmlyc3QgbmFtZSBvZiBhIHBlcnNvbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZmlyc3RuYW1lIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZmlyc3RuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZpcnN0bmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmaXJzdG5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaXJzdG5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZpcnN0bmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZpcnN0bmFtZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imhvbm9yaWZpYy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIHRpdGxlIG9mIGEgcGVyc29uLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJob25vcmlmaWMiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJob25vcmlmaWMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaG9ub3JpZmljLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imhvbm9yaWZpYy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imhvbm9yaWZpYy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaG9ub3JpZmljLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaG9ub3JpZmljLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGluZWFnZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIHBvcnRpb24gb2YgYSBwZXJzb24ncyBuYW1lIGluZGljYXRpbmcgYSByZWxhdGlvbnNoaXAgdG8gYW5jZXN0b3JzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJsaW5lYWdlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZWFnZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBsaW5lYWdlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmVhZ2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lYWdlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBsaW5lYWdlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGluZWFnZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im90aGVybmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBjb21wb25lbnQgb2YgYSBwZXJzb25zIG5hbWUgdGhhdCBpcyBub3QgYSBmaXJzdCBuYW1lLCBzdXJuYW1lLCBvciBsaW5lYWdlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJvdGhlcm5hbWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvdGhlcm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb3RoZXJuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im90aGVybmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im90aGVybmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb3RoZXJuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb3RoZXJuYW1lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3VybmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBmYW1pbHkgbmFtZTsgaW4gd2VzdGVybiBjdWx0dXJlcyB0aGUgbGFzdCBuYW1lLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdXJuYW1lIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3VybmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdXJuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1cm5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdXJuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdXJuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3VybmFtZS5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgcGVyc29uLmlkZW50Lm1vZHVsZSAtLT4KICA8IS0tIFByaW50SGlzdG9yeSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByaW50aGlzdG9yeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIHByaW50aW5nIGhpc3Rvcnkgb2YgYSBkb2N1bWVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHJpbnRoaXN0b3J5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJpbnRoaXN0b3J5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByaW50aGlzdG9yeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcmludGhpc3RvcnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmludGhpc3Rvcnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByaW50aGlzdG9yeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByaW50aGlzdG9yeS5tb2R1bGUgLS0+CiAgPCEtLSBQcm9kdWN0TmFtZSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9kdWN0bmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIGZvcm1hbCBuYW1lIG9mIGEgcHJvZHVjdC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHJvZHVjdG5hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJkb2NpbmZvLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9kdWN0bmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwcm9kdWN0bmFtZS5lbGVtZW50IC0tPgogIDwhLS0gQ2xhc3M6IE1vcmUgcHJlY2lzZWx5IGlkZW50aWZpZXMgdGhlIGl0ZW0gdGhlIGVsZW1lbnQgbmFtZXMgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb2R1Y3RuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIgZGVmYXVsdD0idHJhZGUiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZXJ2aWNlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRyYWRlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlZ2lzdGVyZWQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29weXJpZ2h0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9kdWN0bmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJvZHVjdG5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcm9kdWN0bmFtZS5tb2R1bGUgLS0+CiAgPCEtLSBQcm9kdWN0TnVtYmVyIC4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9kdWN0bnVtYmVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIG51bWJlciBhc3NpZ25lZCB0byBhIHByb2R1Y3QuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InByb2R1Y3RudW1iZXIiIHN1YnN0aXR1dGlvbkdyb3VwPSJkb2NpbmZvLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9kdWN0bnVtYmVyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByb2R1Y3RudW1iZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvZHVjdG51bWJlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2R1Y3RudW1iZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByb2R1Y3RudW1iZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcm9kdWN0bnVtYmVyLm1vZHVsZSAtLT4KICA8IS0tIFB1YkRhdGUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InB1YmRhdGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBkYXRlIG9mIHB1YmxpY2F0aW9uIG9mIGEgZG9jdW1lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InB1YmRhdGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwdWJkYXRlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHB1YmRhdGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHViZGF0ZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InB1YmRhdGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHB1YmRhdGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwdWJkYXRlLm1vZHVsZSAtLT4KICA8IS0tIFB1Ymxpc2hlciAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InB1Ymxpc2hlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIHB1Ymxpc2hlciBvZiBhIGRvY3VtZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJwdWJsaXNoZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwdWJsaXNoZXJuYW1lIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJhZGRyZXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InB1Ymxpc2hlci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHVibGlzaGVyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHVibGlzaGVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwdWJsaXNoZXJuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbmFtZSBvZiB0aGUgcHVibGlzaGVyIG9mIGEgZG9jdW1lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InB1Ymxpc2hlcm5hbWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwdWJsaXNoZXJuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHB1Ymxpc2hlcm5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHVibGlzaGVybmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InB1Ymxpc2hlcm5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHB1Ymxpc2hlcm5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXJuYW1lLm1vZHVsZSAtLT4KICA8IS0tIEFkZHJlc3MgKGRlZmluZWQgZWxzZXdoZXJlIGluIHRoaXMgc2VjdGlvbikgLS0+CiAgPCEtLSBlbmQgb2YgcHVibGlzaGVyLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gUHVic051bWJlciAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHVic251bWJlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBudW1iZXIgYXNzaWduZWQgdG8gYSBwdWJsaWNhdGlvbiBvdGhlciB0aGFuIGFuIElTQk4gb3IgSVNTTiBvciBpbnZlbnRvcnkgcGFydCBudW1iZXIuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InB1YnNudW1iZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwdWJzbnVtYmVyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHB1YnNudW1iZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHVic251bWJlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InB1YnNudW1iZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHB1YnNudW1iZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwdWJzbnVtYmVyLm1vZHVsZSAtLT4KICA8IS0tIFJlbGVhc2VJbmZvIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlbGVhc2VpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpJbmZvcm1hdGlvbiBhYm91dCBhIHBhcnRpY3VsYXIgcmVsZWFzZSBvZiBhIGRvY3VtZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWxlYXNlaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlbGVhc2VpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlbGVhc2VpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlbGVhc2VpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVsZWFzZWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlbGVhc2VpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVsZWFzZWluZm8ubW9kdWxlIC0tPgogIDwhLS0gUmV2SGlzdG9yeSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aGlzdG9yeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBoaXN0b3J5IG9mIHRoZSByZXZpc2lvbnMgdG8gYSBkb2N1bWVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmV2aGlzdG9yeSIgc3Vic3RpdHV0aW9uR3JvdXA9ImRvY2luZm8uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZXZpc2lvbiIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZoaXN0b3J5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJldmhpc3RvcnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aGlzdG9yeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldmhpc3Rvcnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJldmhpc3RvcnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZXZoaXN0b3J5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aXNpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkFuIGVudHJ5IGRlc2NyaWJpbmcgYSBzaW5nbGUgcmV2aXNpb24gaW4gdGhlIGhpc3Rvcnkgb2YgdGhlIHJldmlzaW9ucyB0byBhIGRvY3VtZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZXZpc2lvbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmV2bnVtYmVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJkYXRlIi8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYXV0aG9yIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImF1dGhvcmluaXRpYWxzIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXZyZW1hcmsiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icmV2ZGVzY3JpcHRpb24iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2aXNpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmV2aXNpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aXNpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZpc2lvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmV2aXNpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZXZpc2lvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldm51bWJlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBkb2N1bWVudCByZXZpc2lvbiBudW1iZXIuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InJldm51bWJlciI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldm51bWJlci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZXZudW1iZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2bnVtYmVyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2bnVtYmVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZXZudW1iZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZXZudW1iZXIubW9kdWxlIC0tPgogIDwhLS0gRGF0ZSAoZGVmaW5lZCBlbHNld2hlcmUgaW4gdGhpcyBzZWN0aW9uKSAtLT4KICA8IS0tIEF1dGhvckluaXRpYWxzIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXZyZW1hcmsucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgZGVzY3JpcHRpb24gb2YgYSByZXZpc2lvbiB0byBhIGRvY3VtZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZXZyZW1hcmsiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZyZW1hcmsuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmV2cmVtYXJrLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldnJlbWFyay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldnJlbWFyay5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmV2cmVtYXJrLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmV2cmVtYXJrLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2ZGVzY3JpcHRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgZXh0ZW5kZWQgZGVzY3JpcHRpb24gb2YgYSByZXZpc2lvbiB0byBhIGRvY3VtZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZXZkZXNjcmlwdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZXZkZXNjcmlwdGlvbi5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2ZGVzY3JpcHRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmV2ZGVzY3JpcHRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2ZGVzY3JpcHRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZkZXNjcmlwdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmV2ZGVzY3JpcHRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZXZkZXNjcmlwdGlvbi5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgcmV2aGlzdG9yeS5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIFNlcmllc1ZvbE51bXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlcmllc3ZvbG51bXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOk51bWJlcnMgb2YgdGhlIHZvbHVtZXMgaW4gYSBzZXJpZXMgb2YgYm9va3MuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlcmllc3ZvbG51bXMiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZXJpZXN2b2xudW1zLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlcmllc3ZvbG51bXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VyaWVzdm9sbnVtcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlcmllc3ZvbG51bXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlcmllc3ZvbG51bXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZXJpZXN2b2xudW1zLm1vZHVsZSAtLT4KICA8IS0tIFZvbHVtZU51bSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZvbHVtZW51bS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIHZvbHVtZSBudW1iZXIgb2YgYSBkb2N1bWVudCBpbiBhIHNldCAoYXMgb2YgYm9va3MgaW4gYSBzZXQgb3IgYXJ0aWNsZXMgaW4gYSBqb3VybmFsKS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idm9sdW1lbnVtIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idm9sdW1lbnVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZvbHVtZW51bS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2b2x1bWVudW0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2b2x1bWVudW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZvbHVtZW51bS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZvbHVtZW51bS5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gZW5kIG9mIGRvY2luZm8uY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gSW5saW5lLCBsaW5rLCBhbmQgdWJpcXVpdG91cyBlbGVtZW50cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFRlY2huaWNhbCBhbmQgY29tcHV0ZXIgdGVybXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFjY2VsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGdyYXBoaWNhbCB1c2VyIGludGVyZmFjZSAoR1VJKSBrZXlib2FyZCBzaG9ydGN1dC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYWNjZWwiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFjY2VsLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFjY2VsLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFjY2VsLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWNjZWwucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFjY2VsLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYWNjZWwubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhY3Rpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgcmVzcG9uc2UgdG8gYSB1c2VyIGV2ZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJhY3Rpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhY3Rpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWN0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFjdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWN0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhY3Rpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhY3Rpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcHBsaWNhdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIG5hbWUgb2YgYSBzb2Z0d2FyZSBwcm9ncmFtLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcHBsaWNhdGlvbiIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFwcGxpY2F0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFwcGxpY2F0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFwcGxpY2F0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImhhcmR3YXJlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNvZnR3YXJlIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFwcGxpY2F0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhcHBsaWNhdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFwcGxpY2F0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2xhc3NuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbmFtZSBvZiBhIGNsYXNzLCBpbiB0aGUgb2JqZWN0LW9yaWVudGVkIHByb2dyYW1taW5nIHNlbnNlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJjbGFzc25hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNsYXNzbmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjbGFzc25hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2xhc3NuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2xhc3NuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjbGFzc25hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjbGFzc25hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYWNrYWdlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHBhY2thZ2UuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InBhY2thZ2UiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhY2thZ2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcGFja2FnZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYWNrYWdlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFja2FnZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcGFja2FnZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBhY2thZ2UubW9kdWxlIC0tPgogIDwhLS0KICAgIENPIGlzIGEgY2FsbG91dCBhcmVhIG9mIHRoZSBMaW5lQ29sdW1uIHVuaXQgdHlwZSAoYSBzaW5nbGUgY2hhcmFjdGVyCiAgICBwb3NpdGlvbik7IHRoZSBwb3NpdGlvbiBpcyBkaXJlY3RseSBpbmRpY2F0ZWQgYnkgdGhlIGxvY2F0aW9uIG9mIENPLgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIGxvY2F0aW9uIG9mIGEgY2FsbG91dCBlbWJlZGRlZCBpbiB0ZXh0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJjbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvLmVsZW1lbnQgLS0+CiAgPCEtLSBidWcgbnVtYmVyL3N5bWJvbCBvdmVycmlkZSBvciBpbml0aWFsaXphdGlvbiAtLT4KICA8IS0tIHRvIGFueSByZWxhdGVkIGluZm9ybWF0aW9uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpZHJlcS5jb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY28uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjby5tb2R1bGUgLS0+CiAgPCEtLSBDT1JFRiBpcyBhIHJlZmVyZW5jZSB0byBhIENPIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3JlZi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBjcm9zcyByZWZlcmVuY2UgdG8gYSBjby4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29yZWYiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3JlZi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb3JlZi5lbGVtZW50IC0tPgogIDwhLS0gYnVnIG51bWJlci9zeW1ib2wgb3ZlcnJpZGUgb3IgaW5pdGlhbGl6YXRpb24gLS0+CiAgPCEtLSB0byBhbnkgcmVsYXRlZCBpbmZvcm1hdGlvbiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29yZWYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRyZXEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3JlZi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29yZWYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb3JlZi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbW1hbmQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBuYW1lIG9mIGFuIGV4ZWN1dGFibGUgcHJvZ3JhbSBvciBvdGhlciBzb2Z0d2FyZSBjb21tYW5kLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb21tYW5kIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbWFuZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb21tYW5kLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbW1hbmQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1hbmQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbW1hbmQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb21tYW5kLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29tcHV0ZXJvdXRwdXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkRhdGEsIGdlbmVyYWxseSB0ZXh0LCBkaXNwbGF5ZWQgb3IgcHJlc2VudGVkIGJ5IGEgY29tcHV0ZXIuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNvbXB1dGVyb3V0cHV0IiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY28iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbXB1dGVyb3V0cHV0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbXB1dGVyb3V0cHV0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbXB1dGVyb3V0cHV0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21wdXRlcm91dHB1dC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29tcHV0ZXJvdXRwdXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb21wdXRlcm91dHB1dC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImRhdGFiYXNlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbmFtZSBvZiBhIGRhdGFiYXNlLCBvciBwYXJ0IG9mIGEgZGF0YWJhc2UuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImRhdGFiYXNlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZGF0YWJhc2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZGF0YWJhc2UuZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBUeXBlIG9mIGRhdGFiYXNlIHRoZSBlbGVtZW50IG5hbWVzOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJkYXRhYmFzZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJuYW1lIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRhYmxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImZpZWxkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImtleTEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ia2V5MiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZWNvcmQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaW5kZXgiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idmlldyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcmltYXJ5a2V5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY29uZGFyeWtleSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJmb3JlaWdua2V5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImFsdGtleSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcm9jZWR1cmUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZGF0YXR5cGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29uc3RyYWludCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJydWxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InVzZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZ3JvdXAiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZGF0YWJhc2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGRhdGFiYXNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZGF0YWJhc2UubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlbWFpbC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gZW1haWwgYWRkcmVzcy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZW1haWwiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlbWFpbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlbWFpbC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlbWFpbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVtYWlsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlbWFpbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVtYWlsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZW52YXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgc29mdHdhcmUgZW52aXJvbm1lbnQgdmFyaWFibGUuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImVudmFyIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlbnZhci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlbnZhci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlbnZhci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVudmFyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlbnZhci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVudmFyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXJyb3Jjb2RlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBbiBlcnJvciBjb2RlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJlcnJvcmNvZGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVycm9yY29kZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlcnJvcmNvZGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXJyb3Jjb2RlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcnJvcmNvZGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGVycm9yY29kZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVycm9yY29kZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVycm9ybmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gZXJyb3IgbmFtZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXJyb3JuYW1lIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcnJvcm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZXJyb3JuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVycm9ybmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVycm9ybmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZXJyb3JuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZXJyb3JuYW1lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXJyb3J0ZXh0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBbiBlcnJvciBtZXNzYWdlLi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXJyb3J0ZXh0IiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcnJvcnRleHQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZXJyb3J0ZXh0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVycm9ydGV4dC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVycm9ydGV4dC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZXJyb3J0ZXh0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZXJyb3J0ZXh0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXJyb3J0eXBlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgY2xhc3NpZmljYXRpb24gb2YgYW4gZXJyb3IgbWVzc2FnZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXJyb3J0eXBlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcnJvcnR5cGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZXJyb3J0eXBlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVycm9ydHlwZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVycm9ydHlwZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZXJyb3J0eXBlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZXJyb3J0eXBlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmlsZW5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBuYW1lIG9mIGEgZmlsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZmlsZW5hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaWxlbmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmaWxlbmFtZS5lbGVtZW50IC0tPgogIDwhLS0gQ2xhc3M6IFR5cGUgb2YgZmlsZW5hbWUgdGhlIGVsZW1lbnQgbmFtZXM7IG5vIGRlZmF1bHQgLS0+CiAgPCEtLQogICAgUGF0aDogU2VhcmNoIHBhdGggKHBvc3NpYmx5IHN5c3RlbS1zcGVjaWZpYykgaW4gd2hpY2gKICAgIGZpbGUgY2FuIGJlIGZvdW5kCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZpbGVuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImhlYWRlcmZpbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icGFydGl0aW9uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRldmljZWZpbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGlicmFyeWZpbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZGlyZWN0b3J5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImV4dGVuc2lvbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzeW1saW5rIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBhdGgiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZmlsZW5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZpbGVuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZmlsZW5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmdW5jdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIG5hbWUgb2YgYSBmdW5jdGlvbiBvciBzdWJyb3V0aW5lLCBhcyBpbiBhIHByb2dyYW1taW5nIGxhbmd1YWdlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJmdW5jdGlvbiIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmN0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZ1bmN0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmN0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZnVuY3Rpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmdW5jdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aWJ1dHRvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIHRleHQgb24gYSBidXR0b24gaW4gYSBHVUkuIC0tPgogIDx4czplbGVtZW50IG5hbWU9Imd1aWJ1dHRvbiIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYWNjZWwiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN1cGVyc2NyaXB0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJzY3JpcHQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aWJ1dHRvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBndWlidXR0b24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3VpYnV0dG9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWlidXR0b24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGd1aWJ1dHRvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGd1aWJ1dHRvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aWljb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkdyYXBoaWMgYW5kL29yIHRleHQgYXBwZWFyaW5nIGFzIGEgaWNvbiBpbiBhIEdVSS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ3VpaWNvbiIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYWNjZWwiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN1cGVyc2NyaXB0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJzY3JpcHQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aWljb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ3VpaWNvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWlpY29uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWlpY29uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBndWlpY29uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ3VpaWNvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aWxhYmVsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgdGV4dCBvZiBhIGxhYmVsIGluIGEgR1VJLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJndWlsYWJlbCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYWNjZWwiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN1cGVyc2NyaXB0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJzY3JpcHQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aWxhYmVsLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGd1aWxhYmVsLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aWxhYmVsLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWlsYWJlbC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ3VpbGFiZWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBndWlsYWJlbC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aW1lbnUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBuYW1lIG9mIGEgbWVudSBpbiBhIEdVSS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ3VpbWVudSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYWNjZWwiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN1cGVyc2NyaXB0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJzY3JpcHQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aW1lbnUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ3VpbWVudS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWltZW51LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWltZW51LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBndWltZW51LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ3VpbWVudS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aW1lbnVpdGVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbmFtZSBvZiBhIHRlcm1pbmFsIG1lbnUgaXRlbSBpbiBhIEdVSS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ3VpbWVudWl0ZW0iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjY2VsIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdXBlcnNjcmlwdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3Vic2NyaXB0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWltZW51aXRlbS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBndWltZW51aXRlbS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWltZW51aXRlbS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3VpbWVudWl0ZW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGd1aW1lbnVpdGVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ3VpbWVudWl0ZW0ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWlzdWJtZW51LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbmFtZSBvZiBhIHN1Ym1lbnUgaW4gYSBHVUkuIC0tPgogIDx4czplbGVtZW50IG5hbWU9Imd1aXN1Ym1lbnUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjY2VsIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdXBlcnNjcmlwdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3Vic2NyaXB0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWlzdWJtZW51LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGd1aXN1Ym1lbnUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3Vpc3VibWVudS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3Vpc3VibWVudS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ3Vpc3VibWVudS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGd1aXN1Ym1lbnUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJoYXJkd2FyZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBwaHlzaWNhbCBwYXJ0IG9mIGEgY29tcHV0ZXIgc3lzdGVtLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJoYXJkd2FyZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImhhcmR3YXJlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGhhcmR3YXJlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImhhcmR3YXJlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJoYXJkd2FyZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaGFyZHdhcmUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBoYXJkd2FyZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImludGVyZmFjZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gZWxlbWVudCBvZiBhIEdVSS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW50ZXJmYWNlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhY2NlbCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW50ZXJmYWNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGludGVyZmFjZS5lbGVtZW50IC0tPgogIDwhLS0gQ2xhc3M6IFR5cGUgb2YgdGhlIEludGVyZmFjZSBpdGVtOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbnRlcmZhY2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImludGVyZmFjZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW50ZXJmYWNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW50ZXJmYWNlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5Y2FwLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgdGV4dCBwcmludGVkIG9uIGEga2V5IG9uIGEga2V5Ym9hcmQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImtleWNhcCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleWNhcC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBrZXljYXAuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5Y2FwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmdW5jdGlvbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImFsdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb250cm9sIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNoaWZ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1ldGEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZXNjYXBlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImVudGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRhYiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJiYWNrc3BhY2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29tbWFuZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHRpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic3BhY2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZGVsZXRlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imluc2VydCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ1cCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkb3duIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaG9tZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJlbmQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icGFnZXVwIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBhZ2Vkb3duIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im90aGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVyZnVuY3Rpb24iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5Y2FwLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBrZXljYXAuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBrZXljYXAubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJrZXljb2RlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgaW50ZXJuYWwsIGZyZXF1ZW50bHkgbnVtZXJpYywgaWRlbnRpZmllciBmb3IgYSBrZXkgb24gYSBrZXlib2FyZC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ia2V5Y29kZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5Y29kZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBrZXljb2RlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImtleWNvZGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXljb2RlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBrZXljb2RlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Yga2V5Y29kZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImtleWNvbWJvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGNvbWJpbmF0aW9uIG9mIGlucHV0IGFjdGlvbnMuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImtleWNvbWJvIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJrZXljYXAiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImtleWNvbWJvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJrZXlzeW0iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1vdXNlYnV0dG9uIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXljb21iby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBrZXljb21iby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJrZXljb21iby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleWFjdGlvbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5Y29tYm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGtleWNvbWJvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Yga2V5Y29tYm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJrZXlzeXNtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgc3ltYm9saWMgbmFtZSBvZiBhIGtleSBvbiBhIGtleWJvYXJkLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJrZXlzeW0iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleXN5bS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBrZXlzeW0uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5c3ltLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5c3lzbS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Yga2V5c3ltLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Yga2V5c3ltLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGluZWFubm90YXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgY29tbWVudCBvbiBhIGxpbmUgaW4gYSB2ZXJiYXRpbSBsaXN0aW5nLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJsaW5lYW5ub3RhdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmVhbm5vdGF0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxpbmVhbm5vdGF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmVhbm5vdGF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZWFubm90YXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxpbmVhbm5vdGF0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGluZWFubm90YXRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaXRlcmFsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpJbmxpbmUgdGV4dCB0aGF0IGlzIHNvbWUgbGl0ZXJhbCB2YWx1ZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibGl0ZXJhbCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpdGVyYWwuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbGl0ZXJhbC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaXRlcmFsLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaXRlcmFsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBsaXRlcmFsLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGl0ZXJhbC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvZGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkFuIGlubGluZSBjb2RlIGZyYWdtZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb2RlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29kZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb2RlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvZGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxhbmd1YWdlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb2RlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb2RlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29kZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnN0YW50LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHByb2dyYW1taW5nIG9yIHN5c3RlbSBjb25zdGFudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29uc3RhbnQiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnN0YW50LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbnN0YW50LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnN0YW50LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbWl0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25zdGFudC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29uc3RhbnQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb25zdGFudC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZhcm5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBuYW1lIG9mIGEgdmFyaWFibGUuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InZhcm5hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZhcm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdmFybmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2YXJuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmFybmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdmFybmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZhcm5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtYXJrdXAucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgc3RyaW5nIG9mIGZvcm1hdHRpbmcgbWFya3VwIGluIHRleHQgdGhhdCBpcyB0byBiZSByZXByZXNlbnRlZCBsaXRlcmFsbHkuIC0tPgogIDx4czplbGVtZW50IG5hbWU9Im1hcmt1cCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWFya3VwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1hcmt1cC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtYXJrdXAuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtYXJrdXAucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1hcmt1cC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1hcmt1cC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lZGlhbGFiZWwucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgbmFtZSB0aGF0IGlkZW50aWZpZXMgdGhlIHBoeXNpY2FsIG1lZGl1bSBvbiB3aGljaCBzb21lIGluZm9ybWF0aW9uIHJlc2lkZXMuIC0tPgogIDx4czplbGVtZW50IG5hbWU9Im1lZGlhbGFiZWwiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1lZGlhbGFiZWwuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWVkaWFsYWJlbC5lbGVtZW50IC0tPgogIDwhLS0gQ2xhc3M6IFR5cGUgb2YgbWVkaXVtIG5hbWVkIGJ5IHRoZSBlbGVtZW50OyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZWRpYWxhYmVsLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNhcnRyaWRnZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZHJvbSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkaXNrIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRhcGUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1lZGlhbGFiZWwucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1lZGlhbGFiZWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtZWRpYWxhYmVsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWVudWNob2ljZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBzZWxlY3Rpb24gb3Igc2VyaWVzIG9mIHNlbGVjdGlvbnMgZnJvbSBhIG1lbnUuIC0tPgogIDx4czplbGVtZW50IG5hbWU9Im1lbnVjaG9pY2UiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNob3J0Y3V0Ii8+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imd1aWJ1dHRvbiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJndWlpY29uIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imd1aWxhYmVsIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imd1aW1lbnUiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3VpbWVudWl0ZW0iLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3Vpc3VibWVudSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbnRlcmZhY2UiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWVudWNob2ljZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtZW51Y2hvaWNlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lbnVjaG9pY2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1lbnVjaG9pY2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1lbnVjaG9pY2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtZW51Y2hvaWNlLm1vZHVsZSAtLT4KICA8IS0tIFNlZSBhbHNvIEtleUNvbWJvIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaG9ydGN1dC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBrZXkgY29tYmluYXRpb24gZm9yIGFuIGFjdGlvbiB0aGF0IGlzIGFsc28gYWNjZXNzaWJsZSB0aHJvdWdoIGEgbWVudS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2hvcnRjdXQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImtleWNhcCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ia2V5Y29tYm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImtleXN5bSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibW91c2VidXR0b24iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNob3J0Y3V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNob3J0Y3V0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNob3J0Y3V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5YWN0aW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaG9ydGN1dC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2hvcnRjdXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzaG9ydGN1dC5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgbWVudWNob2ljZS5jb250ZW50Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibW91c2VidXR0b24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBjb252ZW50aW9uYWwgbmFtZSBvZiBhIG1vdXNlIGJ1dHRvbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibW91c2VidXR0b24iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vdXNlYnV0dG9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1vdXNlYnV0dG9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1vdXNlYnV0dG9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3VzZWJ1dHRvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbW91c2VidXR0b24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtb3VzZWJ1dHRvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ3RleHQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBhY3R1YWwgdGV4dCBvZiBhIG1lc3NhZ2UgY29tcG9uZW50IGluIGEgbWVzc2FnZSBzZXQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ3RleHQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2d0ZXh0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1zZ3RleHQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNndGV4dC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ3RleHQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1zZ3RleHQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2d0ZXh0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3B0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBbiBvcHRpb24gZm9yIGEgc29mdHdhcmUgY29tbWFuZC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib3B0aW9uIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3B0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG9wdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcHRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvcHRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG9wdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG9wdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9wdGlvbmFsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpPcHRpb25hbCBpbmZvcm1hdGlvbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib3B0aW9uYWwiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvcHRpb25hbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvcHRpb25hbC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcHRpb25hbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9wdGlvbmFsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvcHRpb25hbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG9wdGlvbmFsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFyYW1ldGVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHZhbHVlIG9yIGEgc3ltYm9saWMgcmVmZXJlbmNlIHRvIGEgdmFsdWUuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InBhcmFtZXRlciIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcmFtZXRlci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwYXJhbWV0ZXIuZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBUeXBlIG9mIHRoZSBQYXJhbWV0ZXI7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcmFtZXRlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb21tYW5kIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImZ1bmN0aW9uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im9wdGlvbiIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJhbWV0ZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBhcmFtZXRlci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBhcmFtZXRlci5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb21wdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBjaGFyYWN0ZXIgb3Igc3RyaW5nIGluZGljYXRpbmcgdGhlIHN0YXJ0IG9mIGFuIGlucHV0IGZpZWxkIGluIGEgIGNvbXB1dGVyIGRpc3BsYXkuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InByb21wdCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY28iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb21wdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwcm9tcHQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvbXB0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9tcHQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByb21wdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByb21wdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb3BlcnR5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHVuaXQgb2YgZGF0YSBhc3NvY2lhdGVkIHdpdGggc29tZSBwYXJ0IG9mIGEgY29tcHV0ZXIgc3lzdGVtLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJwcm9wZXJ0eSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb3BlcnR5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByb3BlcnR5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb3BlcnR5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9wZXJ0eS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJvcGVydHkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcm9wZXJ0eS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlcGxhY2VhYmxlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpDb250ZW50IHRoYXQgbWF5IG9yIG11c3QgYmUgcmVwbGFjZWQgYnkgdGhlIHVzZXIuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InJlcGxhY2VhYmxlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im9wdGlvbmFsIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYmFzZS5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXBsYWNlYWJsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZXBsYWNlYWJsZS5lbGVtZW50IC0tPgogIDwhLS0KICAgIENsYXNzOiBUeXBlIG9mIGluZm9ybWF0aW9uIHRoZSBlbGVtZW50IHJlcHJlc2VudHM7IG5vCiAgICBkZWZhdWx0CiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlcGxhY2VhYmxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvbW1hbmQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZnVuY3Rpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3B0aW9uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBhcmFtZXRlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVwbGFjZWFibGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlcGxhY2VhYmxlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVwbGFjZWFibGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXR1cm52YWx1ZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIHZhbHVlIHJldHVybmVkIGJ5IGEgZnVuY3Rpb24uIC0tPgogIDx4czplbGVtZW50IG5hbWU9InJldHVybnZhbHVlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXR1cm52YWx1ZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZXR1cm52YWx1ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXR1cm52YWx1ZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldHVybnZhbHVlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZXR1cm52YWx1ZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJldHVybnZhbHVlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2dtbHRhZy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBjb21wb25lbnQgb2YgU0dNTCBtYXJrdXAuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNnbWx0YWciIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNnbWx0YWcuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2dtbHRhZy5lbGVtZW50IC0tPgogIDwhLS0gQ2xhc3M6IFR5cGUgb2YgU0dNTCBjb25zdHJ1Y3QgdGhlIGVsZW1lbnQgbmFtZXM7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNnbWx0YWcuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYXR0cmlidXRlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImF0dHZhbHVlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImVsZW1lbnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZW5kdGFnIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImVtcHR5dGFnIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImdlbmVudGl0eSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJudW1jaGFycmVmIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBhcmFtZW50aXR5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBpIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InhtbHBpIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InN0YXJ0dGFnIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNnbWxjb21tZW50Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InByZWZpeCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJuYW1lc3BhY2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibG9jYWxuYW1lIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWVzcGFjZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2dtbHRhZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2dtbHRhZy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNnbWx0YWcubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdHJ1Y3RmaWVsZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBmaWVsZCBpbiBhIHN0cnVjdHVyZSAoaW4gdGhlIHByb2dyYW1taW5nIGxhbmd1YWdlIHNlbnNlKS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3RydWN0ZmllbGQiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0cnVjdGZpZWxkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN0cnVjdGZpZWxkLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0cnVjdGZpZWxkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RydWN0ZmllbGQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN0cnVjdGZpZWxkLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3RydWN0ZmllbGQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdHJ1Y3RuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbmFtZSBvZiBhIHN0cnVjdHVyZSAoaW4gdGhlIHByb2dyYW1taW5nIGxhbmd1YWdlIHNlbnNlKS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3RydWN0bmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RydWN0bmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdHJ1Y3RuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0cnVjdG5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdHJ1Y3RuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdHJ1Y3RuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3RydWN0bmFtZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN5bWJvbC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBuYW1lIHRoYXQgaXMgcmVwbGFjZWQgYnkgYSB2YWx1ZSBiZWZvcmUgcHJvY2Vzc2luZy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3ltYm9sIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzeW1ib2wuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3ltYm9sLmVsZW1lbnQgLS0+CiAgPCEtLSBDbGFzczogVHlwZSBvZiBzeW1ib2w7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN5bWJvbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW1pdCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3ltYm9sLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzeW1ib2wuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzeW1ib2wubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzeXN0ZW1pdGVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHN5c3RlbS1yZWxhdGVkIGl0ZW0gb3IgdGVybS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3lzdGVtaXRlbSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjcm9ueW0iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzeXN0ZW1pdGVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN5c3RlbWl0ZW0uZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBUeXBlIG9mIHN5c3RlbSBpdGVtIHRoZSBlbGVtZW50IG5hbWVzOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzeXN0ZW1pdGVtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvbnN0YW50Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRhZW1vbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkb21haW5uYW1lIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImV0aGVyYWRkcmVzcyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJldmVudCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJldmVudGhhbmRsZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZmlsZXN5c3RlbSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJmcWRvbWFpbm5hbWUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZ3JvdXBuYW1lIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImlwYWRkcmVzcyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaWJyYXJ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1hY3JvIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5ldG1hc2siLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibmV3c2dyb3VwIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im9zbmFtZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcm90b2NvbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXNvdXJjZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzeXN0ZW1uYW1lIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InVzZXJuYW1lIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InByb2Nlc3MiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VydmVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlcnZpY2UiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3lzdGVtaXRlbS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3lzdGVtaXRlbS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN5c3RlbWl0ZW0ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ1cmkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgVW5pZm9ybSBSZXNvdXJjZSBJZGVudGlmaWVyLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ1cmkiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InVyaS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB1cmkuZWxlbWVudCAtLT4KICA8IS0tIFR5cGU6IFR5cGUgb2YgVVJJOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ1cmkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InVyaS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdXJpLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdXJpLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9rZW4ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgdW5pdCBvZiBpbmZvcm1hdGlvbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9rZW4iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRva2VuLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRva2VuLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRva2VuLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9rZW4ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRva2VuLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9rZW4ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0eXBlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgY2xhc3NpZmljYXRpb24gb2YgYSB2YWx1ZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idHlwZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idHlwZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0eXBlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InR5cGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0eXBlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0eXBlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdHlwZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InVzZXJpbnB1dC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6RGF0YSBlbnRlcmVkIGJ5IHRoZSB1c2VyLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ1c2VyaW5wdXQiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbyIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idXNlcmlucHV0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHVzZXJpbnB1dC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ1c2VyaW5wdXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InVzZXJpbnB1dC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdXNlcmlucHV0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdXNlcmlucHV0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGVybWRlZi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gaW5saW5lIGRlZmluaXRpb24gb2YgYSB0ZXJtLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0ZXJtZGVmIiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ZXJtZGVmLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRlcm1kZWYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGVybWRlZi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRlcm1kZWYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRlcm1kZWYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0ZXJtZGVmLm1vZHVsZSAtLT4KICA8IS0tIEdlbmVyYWwgd29yZHMgYW5kIHBocmFzZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFiYnJldi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gYWJicmV2aWF0aW9uLCBlc3BlY2lhbGx5IG9uZSBmb2xsb3dlZCBieSBhIHBlcmlvZC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYWJicmV2IiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0id29yZC5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhYmJyZXYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWJicmV2LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFiYnJldi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFiYnJldi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWJicmV2LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYWJicmV2Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWNyb255bS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gb2Z0ZW4gcHJvbm91bmNlYWJsZSB3b3JkIG1hZGUgZnJvbSB0aGUgaW5pdGlhbCAob3Igc2VsZWN0ZWQpIGxldHRlcnMgb2YgYSBuYW1lIG9yIHBocmFzZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYWNyb255bSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9IndvcmQuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWNyb255bS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhY3JvbnltLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFjcm9ueW0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhY3JvbnltLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhY3JvbnltLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYWNyb255bS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNpdGF0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBbiBpbmxpbmUgYmlibGlvZ3JhcGhpYyByZWZlcmVuY2UgdG8gYW5vdGhlciBwdWJsaXNoZWQgd29yay4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2l0YXRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNpdGF0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNpdGF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNpdGF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0YXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNpdGF0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2l0YXRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXRlcmVmZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgY2l0YXRpb24gdG8gYSByZWZlcmVuY2UgcGFnZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2l0ZXJlZmVudHJ5IiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZWZlbnRyeXRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im1hbnZvbG51bSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaXRlcmVmZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY2l0ZXJlZmVudHJ5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNpdGVyZWZlbnRyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNpdGVyZWZlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY2l0ZXJlZmVudHJ5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2l0ZXJlZmVudHJ5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZW50cnl0aXRsZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIHRpdGxlIG9mIGEgcmVmZXJlbmNlIHBhZ2UuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InJlZmVudHJ5dGl0bGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZlbnRyeXRpdGxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5dGl0bGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZW50cnl0aXRsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVudHJ5dGl0bGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5dGl0bGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZlbnRyeXRpdGxlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibmFtdm9sbnVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHJlZmVyZW5jZSB2b2x1bWUgbnVtYmVyLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJtYW52b2xudW0iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0id29yZC5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtYW52b2xudW0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWFudm9sbnVtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1hbnZvbG51bS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im5hbXZvbG51bS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWFudm9sbnVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWFudm9sbnVtLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2l0ZXRpdGxlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgdGl0bGUgb2YgYSBjaXRlZCB3b3JrLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJjaXRldGl0bGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNpdGV0aXRsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjaXRldGl0bGUuZWxlbWVudCAtLT4KICA8IS0tIFB1Yndvcms6IEdlbnJlIG9mIHB1Ymxpc2hlZCB3b3JrIGNpdGVkOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXRldGl0bGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InB1YndvcmsiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhcnRpY2xlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvb2siLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhcHRlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwYXJ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlZmVudHJ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3Rpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iam91cm5hbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZXJpZXMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2V0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1hbnVzY3JpcHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2Ryb20iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZHZkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Indpa2kiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZ29waGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJicyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJlbWFpbG1lc3NhZ2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0id2VicGFnZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJuZXdzcG9zdGluZyIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0ZXRpdGxlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjaXRldGl0bGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjaXRldGl0bGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlbXBoYXNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6RW1waGFzaXplZCB0ZXh0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJlbXBoYXNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZW1waGFzaXMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZW1waGFzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZW1waGFzaXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlbXBoYXNpcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZW1waGFzaXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBlbXBoYXNpcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvcmVpZ25waHJhc2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgd29yZCBvciBwaHJhc2UgaW4gYSBsYW5ndWFnZSBvdGhlciB0aGFuIHRoZSBwcmltYXJ5IGxhbmd1YWdlIG9mIHRoZSBkb2N1bWVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZm9yZWlnbnBocmFzZSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZm9yZWlnbnBocmFzZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmb3JlaWducGhyYXNlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvcmVpZ25waHJhc2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmb3JlaWducGhyYXNlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmb3JlaWducGhyYXNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZm9yZWlnbnBocmFzZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzdGVybS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBnbG9zc2FyeSB0ZXJtLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJnbG9zc3Rlcm0iIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzdGVybS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBnbG9zc3Rlcm0uZWxlbWVudCAtLT4KICA8IS0tIHRvIEdsb3NzRW50cnkgaWYgR2xvc3N0ZXJtIHVzZWQgaW4gdGV4dCAtLT4KICA8IS0tCiAgICBCYXNlRm9ybTogUHJvdmlkZXMgdGhlIGZvcm0gb2YgR2xvc3NUZXJtIHRvIGJlIHVzZWQKICAgIGZvciBpbmRleGluZwogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc3Rlcm0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhc2Vmb3JtIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3N0ZXJtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBnbG9zc3Rlcm0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBnbG9zc3Rlcm0ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmaXJzdHRlcm0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGEgdGVybS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZmlyc3R0ZXJtIiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaXJzdHRlcm0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZmlyc3R0ZXJtLmVsZW1lbnQgLS0+CiAgPCEtLSB0byBHbG9zc0VudHJ5IG9yIG90aGVyIGV4cGxhbmF0aW9uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmaXJzdHRlcm0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhc2Vmb3JtIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZmlyc3R0ZXJtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmaXJzdHRlcm0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmaXJzdHRlcm0ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwaHJhc2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgc3BhbiBvZiB0ZXh0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJwaHJhc2UiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBocmFzZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwaHJhc2UuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGhyYXNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGhyYXNlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwaHJhc2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwaHJhc2UubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxdW90ZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gaW5saW5lIHF1b3RhdGlvbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icXVvdGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InF1b3RlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHF1b3RlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InF1b3RlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icXVvdGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHF1b3RlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcXVvdGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzc3NjcmlwdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBzdWJzY3JpcHQgKGFzIGluIEh7XjJ9TywgdGhlIG1vbGVjdWxhciBmb3JtdWxhIGZvciB3YXRlcikuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InN1YnNjcmlwdCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlbXBoYXNpcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVwbGFjZWFibGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN5bWJvbCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJvdGhlci5jaGFyLmNsYXNzIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJzY3JpcHQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3Vic2NyaXB0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YnNjcmlwdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNzc2NyaXB0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdWJzY3JpcHQuYXR0bGlzdCAtLT4KICA8IS0tIGRvYzpBIHN1cGVyc2NyaXB0IChhcyBpbiB4XjIsIHRoZSBtYXRoZW1hdGljYWwgbm90YXRpb24gZm9yIHggbXVsdGlwbGllZCBieSBpdHNlbGYpLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdXBlcnNjcmlwdCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlbXBoYXNpcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVwbGFjZWFibGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN5bWJvbCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJvdGhlci5jaGFyLmNsYXNzIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdXBlcnNjcmlwdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdXBlcnNjcmlwdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdXBlcnNjcmlwdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNzc2NyaXB0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdXBlcnNjcmlwdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNzc2NyaXB0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idHJhZGVtYXJrLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHRyYWRlbWFyay4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idHJhZGVtYXJrIiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGVjaC5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYmFzZS5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtcGhhc2lzIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0cmFkZW1hcmsuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdHJhZGVtYXJrLmVsZW1lbnQgLS0+CiAgPCEtLSBDbGFzczogTW9yZSBwcmVjaXNlbHkgaWRlbnRpZmllcyB0aGUgaXRlbSB0aGUgZWxlbWVudCBuYW1lcyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idHJhZGVtYXJrLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIgZGVmYXVsdD0idHJhZGUiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZXJ2aWNlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRyYWRlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlZ2lzdGVyZWQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29weXJpZ2h0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0cmFkZW1hcmsucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRyYWRlbWFyay5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRyYWRlbWFyay5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9IndvcmRhc3dvcmQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgd29yZCBtZWFudCBzcGVjaWZpY2FsbHkgYXMgYSB3b3JkIGFuZCBub3QgcmVwcmVzZW50aW5nIGFueXRoaW5nIGVsc2UuIC0tPgogIDx4czplbGVtZW50IG5hbWU9IndvcmRhc3dvcmQiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ3b3JkLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9IndvcmRhc3dvcmQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygd29yZGFzd29yZC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ3b3JkYXN3b3JkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0id29yZGFzd29yZC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygd29yZGFzd29yZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHdvcmRhc3dvcmQubW9kdWxlIC0tPgogIDwhLS0gTGlua3MgYW5kIGNyb3NzLXJlZmVyZW5jZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGluay5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBoeXBlcnRleHQgbGluay4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibGluayIgc3Vic3RpdHV0aW9uR3JvdXA9ImxpbmsuY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmsuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbGluay5lbGVtZW50IC0tPgogIDwhLS0KICAgIEVuZHRlcm06IElEIG9mIGVsZW1lbnQgY29udGFpbmluZyB0ZXh0IHRoYXQgaXMgdG8gYmUKICAgIGZldGNoZWQgZnJvbSBlbHNld2hlcmUgaW4gdGhlIGRvY3VtZW50IHRvIGFwcGVhciBhcwogICAgdGhlIGNvbnRlbnQgb2YgdGhpcyBlbGVtZW50CiAgLS0+CiAgPCEtLSB0byBsaW5rZWQtdG8gb2JqZWN0IC0tPgogIDwhLS0gVHlwZTogRnJlZWx5IGFzc2lnbmFibGUgcGFyYW1ldGVyIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaW5rLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbmR0ZXJtIiB0eXBlPSJ4czpJRFJFRiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ4cmVmc3R5bGUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHJlcS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imxpbmsucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxpbmsuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBsaW5rLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib2xpbmsucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgbGluayB0aGF0IGFkZHJlc3NlcyBpdHMgdGFyZ2V0IGluZGlyZWN0bHksIHRocm91Z2ggYW4gZW50aXR5LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJvbGluayIgc3Vic3RpdHV0aW9uR3JvdXA9ImxpbmsuY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9saW5rLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG9saW5rLmVsZW1lbnQgLS0+CiAgPCEtLSBUYXJnZXREb2NFbnQ6IE5hbWUgb2YgYW4gZW50aXR5IHRvIGJlIHRoZSB0YXJnZXQgb2YgdGhlIGxpbmsgLS0+CiAgPCEtLQogICAgTGlua01vZGU6IElEIG9mIGEgTW9kZVNwZWMgY29udGFpbmluZyBpbnN0cnVjdGlvbnMgZm9yCiAgICBvcGVyYXRpbmcgb24gdGhlIGVudGl0eSBuYW1lZCBieSBUYXJnZXREb2NFbnQKICAtLT4KICA8IS0tIExvY2FsSW5mbzogSW5mb3JtYXRpb24gdGhhdCBtYXkgYmUgcGFzc2VkIHRvIE1vZGVTcGVjIC0tPgogIDwhLS0gVHlwZTogRnJlZWx5IGFzc2lnbmFibGUgcGFyYW1ldGVyIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvbGluay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGFyZ2V0ZG9jZW50IiB0eXBlPSJ4czpFTlRJVFkiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGlua21vZGUiIHR5cGU9InhzOklEUkVGIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxvY2FsaW5mbyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRhcmdldGRvYyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0YXJnZXRwdHIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieHJlZnN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvbGluay5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb2xpbmsuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvbGluay5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InVsaW5rLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGxpbmsgdGhhdCBhZGRyZXNzZXMgaXRzIHRhcmdldCBieSBtZWFucyBvZiBhIFVSTCAoVW5pZm9ybSBSZXNvdXJjZSBMb2NhdG9yKS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idWxpbmsiIHN1YnN0aXR1dGlvbkdyb3VwPSJsaW5rLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ1bGluay5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB1bGluay5lbGVtZW50IC0tPgogIDwhLS0gVVJMOiB1bmlmb3JtIHJlc291cmNlIGxvY2F0b3I7IHRoZSB0YXJnZXQgb2YgdGhlIFVMaW5rIC0tPgogIDwhLS0gVHlwZTogRnJlZWx5IGFzc2lnbmFibGUgcGFyYW1ldGVyIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ1bGluay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXJsIiB1c2U9InJlcXVpcmVkIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieHJlZnN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ1bGluay5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdWxpbmsuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB1bGluay5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvb3Rub3RlcmVmLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGNyb3NzIHJlZmVyZW5jZSB0byBhIGZvb3Rub3RlIChhIGZvb3Rub3RlIG1hcmspLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJmb290bm90ZXJlZiIgc3Vic3RpdHV0aW9uR3JvdXA9InhyZWYuY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZvb3Rub3RlcmVmLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZvb3Rub3RlcmVmLmVsZW1lbnQgLS0+CiAgPCEtLSB0byBmb290bm90ZSBjb250ZW50IHN1cHBsaWVkIGVsc2V3aGVyZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZm9vdG5vdGVyZWYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kcmVxLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmb290bm90ZXJlZi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZm9vdG5vdGVyZWYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmb290bm90ZXJlZi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InhyZWYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgY3Jvc3MgcmVmZXJlbmNlIHRvIGFub3RoZXIgcGFydCBvZiB0aGUgZG9jdW1lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InhyZWYiIHN1YnN0aXR1dGlvbkdyb3VwPSJ4cmVmLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4cmVmLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHhyZWYuZWxlbWVudCAtLT4KICA8IS0tCiAgICBFbmR0ZXJtOiBJRCBvZiBlbGVtZW50IGNvbnRhaW5pbmcgdGV4dCB0aGF0IGlzIHRvIGJlCiAgICBmZXRjaGVkIGZyb20gZWxzZXdoZXJlIGluIHRoZSBkb2N1bWVudCB0byBhcHBlYXIgYXMKICAgIHRoZSBjb250ZW50IG9mIHRoaXMgZWxlbWVudAogIC0tPgogIDwhLS0gdG8gbGlua2VkLXRvIG9iamVjdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ieHJlZi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW5kdGVybSIgdHlwZT0ieHM6SURSRUYiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieHJlZnN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kcmVxLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ieHJlZi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgeHJlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHhyZWYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9yZWYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgY3Jvc3MgcmVmZXJlbmNlIHRvIGEgYmlibGlvZ3JhcGhpYyBlbnRyeS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvcmVmIiBzdWJzdGl0dXRpb25Hcm91cD0ieHJlZi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvcmVmLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb3JlZi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9yZWYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVuZHRlcm0iIHR5cGU9InhzOklEUkVGIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InhyZWZzdHlsZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1bml0cyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiZWdpbiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbmQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRyZXEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9yZWYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb3JlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb3JlZi5tb2R1bGUgLS0+CiAgPCEtLSBVYmlxdWl0b3VzIGVsZW1lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhbmNob3Iucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgc3BvdCBpbiB0aGUgZG9jdW1lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImFuY2hvciI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFuY2hvci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhbmNob3IuZWxlbWVudCAtLT4KICA8IS0tIHJlcXVpcmVkIC0tPgogIDwhLS0gcmVwbGFjZXMgTGFuZyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYW5jaG9yLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaWRyZXEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVtYXAuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4cmVmbGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZpc2lvbmZsYWcuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlZmZlY3Rpdml0eS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFuY2hvci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYW5jaG9yLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYW5jaG9yLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmVnaW5wYWdlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbG9jYXRpb24gb2YgYSBwYWdlIGJyZWFrIGluIGEgcHJpbnQgdmVyc2lvbiBvZiB0aGUgZG9jdW1lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImJlZ2lucGFnZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJlZ2lucGFnZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiZWdpbnBhZ2UuZWxlbWVudCAtLT4KICA8IS0tIFBhZ2VOdW06IE51bWJlciBvZiBwYWdlIHRoYXQgYmVnaW5zIGF0IHRoaXMgcG9pbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJlZ2lucGFnZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhZ2VudW0uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiZWdpbnBhZ2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJlZ2lucGFnZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJlZ2lucGFnZS5tb2R1bGUgLS0+CiAgPCEtLQogICAgSW5kZXhUZXJtcyBhcHBlYXIgaW4gdGhlIHRleHQgZmxvdyBmb3IgZ2VuZXJhdGluZyBvciBsaW5raW5nIGFuCiAgICBpbmRleC4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5kZXh0ZXJtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHdyYXBwZXIgZm9yIHRlcm1zIHRvIGJlIGluZGV4ZWQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImluZGV4dGVybSIgc3Vic3RpdHV0aW9uR3JvdXA9Im5keHRlcm0uY2xhc3MiLz4KICA8IS0tIGVuZCBvZiBpbmRleHRlcm0uZWxlbWVudCAtLT4KICA8IS0tCiAgICBTY29wZTogSW5kaWNhdGVzIHdoaWNoIGdlbmVyYXRlZCBpbmRpY2VzIHRoZSBJbmRleFRlcm0KICAgIHNob3VsZCBhcHBlYXIgaW46IEdsb2JhbCAod2hvbGUgZG9jdW1lbnQgc2V0KSwgTG9jYWwgKHRoaXMKICAgIGRvY3VtZW50IG9ubHkpLCBvciBBbGwgKGJvdGgpCiAgLS0+CiAgPCEtLQogICAgU2lnbmlmaWNhbmNlOiBXaGV0aGVyIHRoaXMgSW5kZXhUZXJtIGlzIHRoZSBtb3N0IHBlcnRpbmVudAogICAgb2YgaXRzIHNlcmllcyAoUHJlZmVycmVkKSBvciBub3QgKE5vcm1hbCwgdGhlIGRlZmF1bHQpCiAgLS0+CiAgPCEtLQogICAgQ2xhc3M6IEluZGljYXRlcyB0eXBlIG9mIEluZGV4VGVybTsgZGVmYXVsdCBpcyBTaW5ndWxhciwKICAgIG9yIEVuZE9mUmFuZ2UgaWYgU3RhcnRSZWYgaXMgc3VwcGxpZWQ7IFN0YXJ0T2ZSYW5nZSB2YWx1ZQogICAgbXVzdCBiZSBzdXBwbGllZCBleHBsaWNpdGx5IG9uIHN0YXJ0cyBvZiByYW5nZXMKICAtLT4KICA8IS0tCiAgICBTdGFydFJlZjogSUQgb2YgdGhlIEluZGV4VGVybSB0aGF0IHN0YXJ0cyB0aGUgaW5kZXhpbmcKICAgIHJhbmdlIGVuZGVkIGJ5IHRoaXMgSW5kZXhUZXJtCiAgLS0+CiAgPCEtLQogICAgWm9uZTogSURzIG9mIHRoZSBlbGVtZW50cyB0byB3aGljaCB0aGUgSW5kZXhUZXJtIGFwcGxpZXMsCiAgICBhbmQgaW5kaWNhdGVzIHRoYXQgdGhlIEluZGV4VGVybSBhcHBsaWVzIHRvIHRob3NlIGVudGlyZQogICAgZWxlbWVudHMgcmF0aGVyIHRoYW4gdGhlIHBvaW50IGF0IHdoaWNoIHRoZSBJbmRleFRlcm0KICAgIG9jY3VycwogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmRleHRlcm0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzY29wZSI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImFsbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJnbG9iYWwiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibG9jYWwiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2lnbmlmaWNhbmNlIiBkZWZhdWx0PSJub3JtYWwiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcmVmZXJyZWQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibm9ybWFsIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2luZ3VsYXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic3RhcnRvZnJhbmdlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImVuZG9mcmFuZ2UiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RhcnRyZWYiIHR5cGU9InhzOklEUkVGIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InpvbmUiIHR5cGU9InhzOklEUkVGUyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleHRlcm0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGluZGV4dGVybS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluZGV4dGVybS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByaW1zZWN0ZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBwcmltYXJ5IHdvcmQgb3IgcGhyYXNlIHVuZGVyIHdoaWNoIGFuIGluZGV4IHRlcm0gc2hvdWxkIGJlIHNvcnRlZC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHJpbWFyeSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByaW1hcnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJpbWFyeS5lbGVtZW50IC0tPgogIDwhLS0KICAgIFNvcnRBczogQWx0ZXJuYXRlIHNvcnQgc3RyaW5nIGZvciBpbmRleCBzb3J0aW5nLCBlLmcuLAogICAgImZvdXJ0ZWVuIiBmb3IgYW4gZWxlbWVudCBjb250YWluaW5nICIxNCIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJpbWFyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic29ydGFzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmltc2VjdGVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwcmltYXJ5LmF0dGxpc3QgLS0+CiAgPCEtLSBkb2M6QSBzZWNvbmRhcnkgd29yZCBvciBwaHJhc2UgaW4gYW4gaW5kZXggdGVybS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2Vjb25kYXJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2Vjb25kYXJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY29uZGFyeS5lbGVtZW50IC0tPgogIDwhLS0KICAgIFNvcnRBczogQWx0ZXJuYXRlIHNvcnQgc3RyaW5nIGZvciBpbmRleCBzb3J0aW5nLCBlLmcuLAogICAgImZvdXJ0ZWVuIiBmb3IgYW4gZWxlbWVudCBjb250YWluaW5nICIxNCIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2Vjb25kYXJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzb3J0YXMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByaW1zZWN0ZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY29uZGFyeS5hdHRsaXN0IC0tPgogIDwhLS0gZG9jOkEgdGVydGlhcnkgd29yZCBvciBwaHJhc2UgaW4gYW4gaW5kZXggdGVybS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGVydGlhcnkiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ZXJ0aWFyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0ZXJ0aWFyeS5lbGVtZW50IC0tPgogIDwhLS0KICAgIFNvcnRBczogQWx0ZXJuYXRlIHNvcnQgc3RyaW5nIGZvciBpbmRleCBzb3J0aW5nLCBlLmcuLAogICAgImZvdXJ0ZWVuIiBmb3IgYW4gZWxlbWVudCBjb250YWluaW5nICIxNCIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGVydGlhcnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNvcnRhcyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJpbXNlY3Rlci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdGVydGlhcnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcmltc2VjdGVyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2Vlc2VlYWxzby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6UGFydCBvZiBhbiBpbmRleCB0ZXJtIGRpcmVjdGluZyB0aGUgcmVhZGVyIGluc3RlYWQgdG8gYW5vdGhlciBlbnRyeSBpbiB0aGUgaW5kZXguIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2Vlc2VlYWxzby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VlLmF0dGxpc3QgLS0+CiAgPCEtLSBkb2M6UGFydCBvZiBhbiBpbmRleCB0ZXJtIGRpcmVjdGluZyB0aGUgcmVhZGVyIGFsc28gdG8gYW5vdGhlciBlbnRyeSBpbiB0aGUgaW5kZXguIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlZWFsc28iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWVhbHNvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlZWFsc28uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VlYWxzby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZXNlZWFsc28ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgo8L3hzOnNjaGVtYT4KPCEtLSBlbmQgb2Ygc2VlYWxzby5hdHRsaXN0IC0tPgo8IS0tIGVuZCBvZiBzZWVzZWVhbHNvLm1vZHVsZSAtLT4KPCEtLSBlbmQgb2YgaW5kZXh0ZXJtLmNvbnRlbnQubW9kdWxlIC0tPgo8IS0tIEVuZCBvZiBEb2NCb29rIFhNTCBpbmZvcm1hdGlvbiBwb29sIG1vZHVsZSBWNC41IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4K
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgWE1MIERURCBWNC41IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkb2Nib29reC5kdGQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDYgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogIFNlZSBhbHNvIGh0dHA6Ly9kb2Nib29rLm9yZy9zcGVjcy8KICAKICAkSWQ6IGRvY2Jvb2t4LmR0ZCA2MzQwIDIwMDYtMTAtMDMgMTM6MjM6MjRaIG53YWxzaCAkCiAgCiAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSBhbmQgZGlzdHJpYnV0ZSB0aGUgRG9jQm9vayBYTUwgRFRECiAgYW5kIGl0cyBhY2NvbXBhbnlpbmcgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlCiAgaXMgaGVyZWJ5IGdyYW50ZWQgaW4gcGVycGV0dWl0eSwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0CiAgbm90aWNlIGFuZCB0aGlzIHBhcmFncmFwaCBhcHBlYXIgaW4gYWxsIGNvcGllcy4gIFRoZSBjb3B5cmlnaHQKICBob2xkZXJzIG1ha2Ugbm8gcmVwcmVzZW50YXRpb24gYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoZSBEVEQgZm9yCiAgYW55IHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzc2VkIG9yIGltcGxpZWQKICB3YXJyYW50eS4KICAKICBJZiB5b3UgbW9kaWZ5IHRoZSBEb2NCb29rIERURCBpbiBhbnkgd2F5LCBleGNlcHQgZm9yIGRlY2xhcmluZyBhbmQKICByZWZlcmVuY2luZyBhZGRpdGlvbmFsIHNldHMgb2YgZ2VuZXJhbCBlbnRpdGllcyBhbmQgZGVjbGFyaW5nCiAgYWRkaXRpb25hbCBub3RhdGlvbnMsIGxhYmVsIHlvdXIgRFREIGFzIGEgdmFyaWFudCBvZiBEb2NCb29rLiAgU2VlCiAgdGhlIG1haW50ZW5hbmNlIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgCiAgUGxlYXNlIGRpcmVjdCBhbGwgcXVlc3Rpb25zLCBidWcgcmVwb3J0cywgb3Igc3VnZ2VzdGlvbnMgZm9yCiAgY2hhbmdlcyB0byB0aGUgZG9jYm9va0BsaXN0cy5vYXNpcy1vcGVuLm9yZyBtYWlsaW5nIGxpc3QuIEZvciBtb3JlCiAgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2svLgotLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tCiAgVGhpcyBpcyB0aGUgZHJpdmVyIGZpbGUgZm9yIFY0LjUgb2YgdGhlIERvY0Jvb2sgRFRELgogIFBsZWFzZSB1c2UgdGhlIGZvbGxvd2luZyBmb3JtYWwgcHVibGljIGlkZW50aWZpZXIgdG8gaWRlbnRpZnkgaXQ6CiAgCiAgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuNS8vRU4iCiAgCiAgRm9yIGV4YW1wbGUsIGlmIHlvdXIgZG9jdW1lbnQncyB0b3AtbGV2ZWwgZWxlbWVudCBpcyBCb29rLCBhbmQKICB5b3UgYXJlIHVzaW5nIERvY0Jvb2sgZGlyZWN0bHksIHVzZSB0aGUgRlBJIGluIHRoZSBET0NUWVBFCiAgZGVjbGFyYXRpb246CiAgCiAgPCFET0NUWVBFIGJvb2sgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjUvL0VOIgogICAgICAgICAgICAgICAgICJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuNS9kb2Nib29reC5kdGQiCiAgICAgICAgICAgICAgICAgWy4uLl0+CiAgCiAgT3IsIGlmIHlvdSBoYXZlIGEgaGlnaGVyLWxldmVsIGRyaXZlciBmaWxlIHRoYXQgY3VzdG9taXplcyBEb2NCb29rLAogIHVzZSB0aGUgRlBJIGluIHRoZSBwYXJhbWV0ZXIgZW50aXR5IGRlY2xhcmF0aW9uOgogIAogIDwhRU5USVRZICUgRG9jQm9va0RURCBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuNS8vRU4iCiAgICAgICAgICAgICAiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjUvZG9jYm9va3guZHRkIj4KICAlRG9jQm9va0RURDsKICAKICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIHRoZSBwYXJhbWV0ZXIKICBlbnRpdHkgYW5kIG1vZHVsZSBzY2hlbWUgdXNlZCBpbiBEb2NCb29rLCBjdXN0b21pemluZyBEb2NCb29rIGFuZAogIHBsYW5uaW5nIGZvciBpbnRlcmNoYW5nZSwgYW5kIGNoYW5nZXMgbWFkZSBzaW5jZSB0aGUgbGFzdCByZWxlYXNlCiAgb2YgRG9jQm9vay4KLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSBFbmFibGUgU0dNTCBmZWF0dXJlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gTm90YXRpb24gZGVjbGFyYXRpb25zIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4KICA8eHM6aW5jbHVkZSBzY2hlbWFMb2NhdGlvbj0iZGJub3RueC54c2QiLz4KICA8eHM6aW5jbHVkZSBzY2hlbWFMb2NhdGlvbj0iZGJwb29seC54c2QiLz4KICA8eHM6aW5jbHVkZSBzY2hlbWFMb2NhdGlvbj0iZGJoaWVyeC54c2QiLz4KICA8eHM6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiBzY2hlbWFMb2NhdGlvbj0ieG1sLnhzZCIvPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIElTTyBjaGFyYWN0ZXIgZW50aXR5IHNldHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBldXJvIHNpZ24sIFUrMjBBQyBORVcgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gRFREIG1vZHVsZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEluZm9ybWF0aW9uIHBvb2wgLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBSZWRlY2xhcmF0aW9uIHBsYWNlaG9sZGVyIC4uLi4uIC0tPgogIDwhLS0gRG9jdW1lbnQgaGllcmFyY2h5IC4uLi4uLi4uLi4uLiAtLT4KPC94czpzY2hlbWE+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSBPdGhlciBnZW5lcmFsIGVudGl0aWVzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIEVuZCBvZiBEb2NCb29rIFhNTCBEVEQgVjQuNSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4K
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgWE1MIEhUTUwgVGFibGUgTW9kdWxlIFY0LjUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBodG1sdGJseC5tb2QgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAyMDAzLTIwMDYgQXJib3JUZXh0LCBJbmMuLCBOb3JtYW4gV2Fsc2gsIFN1biBNaWNyb3N5c3RlbXMsCiAgSW5jLiwgYW5kIHRoZSBPcmdhbml6YXRpb24gZm9yIHRoZSBBZHZhbmNlbWVudCBvZiBTdHJ1Y3R1cmVkIEluZm9ybWF0aW9uCiAgU3RhbmRhcmRzIChPQVNJUykuCiAgCiAgJElkOiBodG1sdGJseC5tb2QgNjM0MCAyMDA2LTEwLTAzIDEzOjIzOjI0WiBud2Fsc2ggJAogIAogIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnkgYW5kIGRpc3RyaWJ1dGUgdGhlIERvY0Jvb2sgWE1MIERURAogIGFuZCBpdHMgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZQogIGlzIGhlcmVieSBncmFudGVkIGluIHBlcnBldHVpdHksIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodAogIG5vdGljZSBhbmQgdGhpcyBwYXJhZ3JhcGggYXBwZWFyIGluIGFsbCBjb3BpZXMuICBUaGUgY29weXJpZ2h0CiAgaG9sZGVycyBtYWtlIG5vIHJlcHJlc2VudGF0aW9uIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGUgRFREIGZvcgogIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3NlZCBvciBpbXBsaWVkCiAgd2FycmFudHkuCiAgCiAgSWYgeW91IG1vZGlmeSB0aGUgRG9jQm9vayBYTUwgRFREIGluIGFueSB3YXksIGV4Y2VwdCBmb3IgZGVjbGFyaW5nIGFuZAogIHJlZmVyZW5jaW5nIGFkZGl0aW9uYWwgc2V0cyBvZiBnZW5lcmFsIGVudGl0aWVzIGFuZCBkZWNsYXJpbmcKICBhZGRpdGlvbmFsIG5vdGF0aW9ucywgbGFiZWwgeW91ciBEVEQgYXMgYSB2YXJpYW50IG9mIERvY0Jvb2suICBTZWUKICB0aGUgbWFpbnRlbmFuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAKICBQbGVhc2UgZGlyZWN0IGFsbCBxdWVzdGlvbnMsIGJ1ZyByZXBvcnRzLCBvciBzdWdnZXN0aW9ucyBmb3IKICBjaGFuZ2VzIHRvIHRoZSBkb2Nib29rQGxpc3RzLm9hc2lzLW9wZW4ub3JnIG1haWxpbmcgbGlzdC4gRm9yIG1vcmUKICBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay8uCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0KICBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgZGVmaW5pdGlvbnMgZm9yIGVsZW1lbnRzIHRoYXQgYXJlCiAgaXNvbW9ycGhpYyB0byB0aGUgSFRNTCBlbGVtZW50cy4gT25lIGNvdWxkIGFyZ3VlIHdlIHNob3VsZAogIGluc3RlYWQgaGF2ZSBiYXNlZCBvdXJzZWx2ZXMgb24gdGhlIFhIVE1MIFRhYmxlIE1vZHVsZSwgYnV0IHRoZQogIEhUTUwgb25lIGlzIG1vcmUgbGlrZSB3aGF0IGJyb3dzZXJzIGFyZSBsaWtlbHkgdG8gYWNjZXB0IHRvZGF5CiAgYW5kIHVzZXJzIGFyZSBsaWtlbHkgdG8gdXNlLgogIAogIFRoaXMgbW9kdWxlIGhhcyBiZWVuIGRldmVsb3BlZCBmb3IgdXNlIHdpdGggdGhlIERvY0Jvb2sgVjQuNQogICJ1bmlvbiB0YWJsZSBtb2RlbCIgaW4gd2hpY2ggZWxlbWVudHMgYW5kIGF0dGxpc3RzIGNvbW1vbiB0byBib3RoCiAgbW9kZWxzIGFyZSBkZWZpbmVkIChhcyB0aGUgdW5pb24pIGluIHRoZSBDQUxTIHRhYmxlIG1vZHVsZSBieQogIHNldHRpbmcgdmFyaW91cyBwYXJhbWV0ZXIgZW50aXRpZXMgYXBwcm9wcmlhdGVseSBpbiB0aGlzIGZpbGUuCiAgCiAgSW4gRFREIGRyaXZlciBmaWxlcyByZWZlcnJpbmcgdG8gdGhpcyBtb2R1bGUsIHBsZWFzZSB1c2UgYW4gZW50aXR5CiAgZGVjbGFyYXRpb24gdGhhdCB1c2VzIHRoZSBwdWJsaWMgaWRlbnRpZmllciBzaG93biBiZWxvdzoKICAKICA8IUVOVElUWSAlIGh0bWx0YmwgUFVCTElDCiAgIi0vL09BU0lTLy9FTEVNRU5UUyBEb2NCb29rIFhNTCBIVE1MIFRhYmxlcyBWNC41Ly9FTiIKICAiaHRtbHRibHgubW9kIj4KICAlaHRtbHRibDsKICAKICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIHRoZSBwYXJhbWV0ZXIKICBlbnRpdHkgYW5kIG1vZHVsZSBzY2hlbWUgdXNlZCBpbiBEb2NCb29rLCBjdXN0b21pemluZyBEb2NCb29rIGFuZAogIHBsYW5uaW5nIGZvciBpbnRlcmNoYW5nZSwgYW5kIGNoYW5nZXMgbWFkZSBzaW5jZSB0aGUgbGFzdCByZWxlYXNlCiAgb2YgRG9jQm9vay4KLS0+CjwhLS0gPT09PT09PT09PT09PT09PT09PT09PT0gWEhUTUwgVGFibGVzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4KICA8eHM6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiBzY2hlbWFMb2NhdGlvbj0ieG1sLnhzZCIvPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJodG1sLmNvcmVhdHRycyI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRpdGxlIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIERvZXMgbm90IGNvbnRhaW4gbGFuZyBvciBkaXIgYmVjYXVzZSB0aGV5IGFyZSBpbiAlY29tbW9uLmF0dHJpYnMgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImkxOG4iPgogICAgPHhzOmF0dHJpYnV0ZSByZWY9InhtbDpsYW5nIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXZlbnRzIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25jbGljayIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmRibGNsaWNrIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ubW91c2Vkb3duIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ubW91c2V1cCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbm1vdXNlb3ZlciIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbm1vdXNlbW92ZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbm1vdXNlb3V0Ii8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ua2V5cHJlc3MiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25rZXlkb3duIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ua2V5dXAiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdHRycyI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJodG1sLmNvcmVhdHRycyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaTE4biIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXZlbnRzIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2VsbGhhbGlnbiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGVmdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZW50ZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ianVzdGlmeSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjaGFyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hhcm9mZiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNlbGx2YWxpZ24iPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWlkZGxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJiYXNlbGluZSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBncm91cCBvZiBjb2x1bW5zIGluIGFuIEhUTUwgdGFibGUuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNvbGdyb3VwIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbGdyb3VwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZG9jOlNwZWNpZmljYXRpb25zIGZvciBhIGNvbHVtbiBpbiBhbiBIVE1MIHRhYmxlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb2wiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb2wuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBkb2M6QSByb3cgaW4gYW4gSFRNTCB0YWJsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idHIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRoIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idHIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBkb2M6QSB0YWJsZSBoZWFkZXIgZW50cnkgaW4gYW4gSFRNTCB0YWJsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGgiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0idGFiZW50cnkubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0YWJsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWx0YWJsZSIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGguYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBkb2M6QSB0YWJsZSBudHJ5IGluIGFuIEhUTUwgdGFibGUuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InRkIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICAgIDx4czpncm91cCByZWY9InRhYmVudHJ5Lm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGFibGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsdGFibGUiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2xncm91cC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF0dHJzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNwYW4iIGRlZmF1bHQ9IjEiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNlbGxoYWxpZ24iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNlbGx2YWxpZ24iLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2wuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdHRycyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGFuIiBkZWZhdWx0PSIxIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndpZHRoIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjZWxsaGFsaWduIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjZWxsdmFsaWduIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idHIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdHRycyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2VsbGhhbGlnbiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2VsbHZhbGlnbiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiZ2NvbG9yIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGguYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdHRycyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhYmJyIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImF4aXMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaGVhZGVycyIgdHlwZT0ieHM6SURSRUZTIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjb3BlIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icm93Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyb3dncm91cCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb2xncm91cCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3dzcGFuIiBkZWZhdWx0PSIxIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHNwYW4iIGRlZmF1bHQ9IjEiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNlbGxoYWxpZ24iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNlbGx2YWxpZ24iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibm93cmFwIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibm93cmFwIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJnY29sb3IiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaGVpZ2h0Ii8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdHRycyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhYmJyIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImF4aXMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaGVhZGVycyIgdHlwZT0ieHM6SURSRUZTIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjb3BlIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icm93Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyb3dncm91cCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb2xncm91cCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3dzcGFuIiBkZWZhdWx0PSIxIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHNwYW4iIGRlZmF1bHQ9IjEiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNlbGxoYWxpZ24iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNlbGx2YWxpZ24iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibm93cmFwIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibm93cmFwIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJnY29sb3IiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaGVpZ2h0Ii8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KICA8IS0tCiAgICBTZXQgdXAgdG8gcmVhZCBpbiB0aGUgQ0FMUyBtb2RlbCBjb25maWd1cmVkIHRvCiAgICBtZXJnZSB3aXRoIHRoZSBYSFRNTCB0YWJsZSBtb2RlbAogIC0tPgogIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0YWJsZXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gQWRkIGxhYmVsIGFuZCByb2xlIGF0dHJpYnV0ZXMgdG8gdGFibGUgYW5kIGluZm9ybWFsdGFibGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJvZHlhdHQiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmbG9hdHN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvd2hlYWRlciI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImZpcnN0Y29sIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vcm93aGVhZGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0KICAgIEFkZCBjb21tb24gYXR0cmlidXRlcyB0byBUYWJsZSwgVEdyb3VwLCBUQm9keSwgVEhlYWQsIFRGb290LCBSb3csIAogICAgRW50cnlUYmwsIGFuZCBFbnRyeSAoYW5kIEluZm9ybWFsVGFibGUgZWxlbWVudCkuCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3VyIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3R5bGUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGl0bGUiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImkxOG4iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImV2ZW50cyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGFibGVzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29tbW9uLnRhYmxlLmF0dHJpYnMiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYm9keWF0dCIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gQ29udGVudCBtb2RlbCBmb3IgVGFibGUgKHRoYXQgYWxzbyBhbGxvd3MgSFRNTCB0YWJsZXMpIC0tPgogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0YmwudGFibGUubWRsIj4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRleHRvYmplY3QiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ3JhcGhpYyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVkaWFvYmplY3QiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRncm91cCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjYXB0aW9uIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbGdyb3VwIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRoZWFkIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRmb290Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRib2R5Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0ciIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgPC94czpjaG9pY2U+CiAgPC94czpjb21wbGV4VHlwZT4KICA8eHM6Z3JvdXAgbmFtZT0iaW5mb3JtYWwudGJsLnRhYmxlLm1kbCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0ZXh0b2JqZWN0Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImdyYXBoaWMiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1lZGlhb2JqZWN0Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0Z3JvdXAiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb2xncm91cCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aGVhZCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0Zm9vdCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0Ym9keSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idHIiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBBdHRyaWJ1dGVzIGZvciBUYWJsZSAoaW5jbHVkaW5nIEhUTUwgb25lcykgLS0+CiAgPCEtLSBOLkIuIHJ1bGVzID0gKG5vbmUgfCBncm91cHMgfCByb3dzIHwgY29scyB8IGFsbCkgYnV0IGl0IGNhbid0IGJlIHNwZWMnZCAtLT4KICA8IS0tIHRoYXQgd2F5IGJlY2F1c2UgJ2FsbCcgYWxyZWFkeSBvY2N1cnMgaW4gYSBkaWZmZXJlbnQgZW51bWVyYXRpb24gaW4gLS0+CiAgPCEtLSBDQUxTIHRhYmxlcyAoZnJhbWUpLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGJsLnRhYmxlLmF0dCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRhYnN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRvY2VudHJ5IiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2hvcnRlbnRyeSIgdHlwZT0ieWVzb3Juby5hdHR2YWxzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9yaWVudCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBvcnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGFuZCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwZ3dpZGUiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdW1tYXJ5Ii8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndpZHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvcmRlciIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJydWxlcyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjZWxsc3BhY2luZyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjZWxscGFkZGluZyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJpZ2h0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJnY29sb3IiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czpzaW1wbGVUeXBlIG5hbWU9InRibC5mcmFtZS5hdHR2YWwiPgogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ2b2lkIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYWJvdmUiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJiZWxvdyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImhzaWRlcyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxocyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJocyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InZzaWRlcyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJveCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvcmRlciIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRvcCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRvcGJvdCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImFsbCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNpZGVzIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibm9uZSIvPgogICAgPC94czpyZXN0cmljdGlvbj4KICA8L3hzOnNpbXBsZVR5cGU+CiAgPCEtLSBBbGxvdyBlaXRoZXIgb2JqZWN0cyBvciBpbmxpbmVzOyBiZXdhcmUgb2YgUkVzIGJldHdlZW4gZWxlbWVudHMuIC0tPgogIDx4czpncm91cCBuYW1lPSJ0YmwuZW50cnkubWRsIj4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czpncm91cCByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0idGFiZW50cnkubWl4Ii8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDwhLS0KICAgIHRoZWFkLCB0Zm9vdCwgYW5kIHRib2R5IGFyZSBkZWZpbmVkIGluIGJvdGggdGFibGUgbW9kZWxzLAogICAgc28gd2Ugc2V0IHVwIHBhcmFtZXRlciBlbnRpdGllcyB0byBkZWZpbmUgdW5pb24gbW9kZWxzIGZvciB0aGVtCiAgLS0+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRibC5oZGZ0Lm1kbCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0ciIvPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb2xzcGVjIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icm93Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmNvbXBsZXhUeXBlPgogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0YmwudGJvZHkubWRsIj4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRyIi8+CiAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJvdyIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpjb21wbGV4VHlwZT4KPC94czpzY2hlbWE+CjwhLS0gRW5kIG9mIERvY0Jvb2sgWE1MIEhUTUwgVGFibGUgTW9kdWxlIFY0LjUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo=
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSI+CiAgPHhzOmltcG9ydCBzY2hlbWFMb2NhdGlvbj0iZG9jYm9vay54c2QiLz4KICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhc2UiLz4KICA8eHM6YXR0cmlidXRlIG5hbWU9InNwYWNlIj4KICAgIDx4czpzaW1wbGVUeXBlPgogICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icHJlc2VydmUiLz4KICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgIDwveHM6c2ltcGxlVHlwZT4KICA8L3hzOmF0dHJpYnV0ZT4KICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhbmciIHR5cGU9InhzOk5NVE9LRU4iLz4KPC94czpzY2hlbWE+Cg==
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd2FkbC5kZXYuamF2YS5uZXQvMjAwOS8wMiIKICB4bWxuczp0bnM9Imh0dHA6Ly93YWRsLmRldi5qYXZhLm5ldC8yMDA5LzAyIgogIHhtbG5zOnhtbD0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIgogIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4KCjwhLS0KUmVtb3ZlZCBCeSBPVFJTOgogIDx4czppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiCiAgICBzY2hlbWFMb2NhdGlvbj0iaHR0cDovL3d3dy53My5vcmcvMjAwMS94bWwueHNkIi8+Ci0tPgo8IS0tIEFkZGVkIEJ5IE9UUlM6ClRvIGJlIGFibGUgdG8gbG9jYWwgdmFsaWRhdGUKLS0+Cjx4czppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiIHNjaGVtYUxvY2F0aW9uPSJ4bWwueHNkIi8+CgogIDx4czplbGVtZW50IG5hbWU9ImFwcGxpY2F0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idG5zOmRvYyIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idG5zOmdyYW1tYXJzIiBtaW5PY2N1cnM9IjAiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRuczpyZXNvdXJjZXMiIG1pbk9jY3Vycz0iMCIKICAgICAgICAgIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idG5zOnJlc291cmNlX3R5cGUiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idG5zOm1ldGhvZCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0bnM6cmVwcmVzZW50YXRpb24iLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idG5zOnBhcmFtIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmFueSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4IiBtaW5PY2N1cnM9IjAiCiAgICAgICAgICBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CgogIDx4czplbGVtZW50IG5hbWU9ImRvYyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmFueSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4IiBtaW5PY2N1cnM9IjAiCiAgICAgICAgICBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRpdGxlIiB0eXBlPSJ4czpzdHJpbmciLz4KICAgICAgPHhzOmF0dHJpYnV0ZSByZWY9InhtbDpsYW5nIi8+CiAgICAgIDx4czphbnlBdHRyaWJ1dGUgbmFtZXNwYWNlPSIjI290aGVyIiBwcm9jZXNzQ29udGVudHM9ImxheCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CgogIDx4czplbGVtZW50IG5hbWU9ImdyYW1tYXJzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idG5zOmRvYyIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG5zOmluY2x1ZGUiLz4KICAgICAgICA8eHM6YW55IG5hbWVzcGFjZT0iIyNvdGhlciIgcHJvY2Vzc0NvbnRlbnRzPSJsYXgiIG1pbk9jY3Vycz0iMCIKICAgICAgICAgIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KCiAgPHhzOmVsZW1lbnQgbmFtZT0icmVzb3VyY2VzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idG5zOmRvYyIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idG5zOnJlc291cmNlIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICAgIDx4czphbnkgbmFtZXNwYWNlPSIjI290aGVyIiBwcm9jZXNzQ29udGVudHM9ImxheCIgbWluT2NjdXJzPSIwIgogICAgICAgICAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiYXNlIiB0eXBlPSJ4czphbnlVUkkiLz4KICAgICAgPHhzOmFueUF0dHJpYnV0ZSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KCiAgPHhzOmVsZW1lbnQgbmFtZT0icmVzb3VyY2UiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0bnM6ZG9jIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0bnM6cGFyYW0iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0bnM6bWV0aG9kIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRuczpyZXNvdXJjZSIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czphbnkgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmFtZXNwYWNlPSIjI290aGVyIgogICAgICAgICAgcHJvY2Vzc0NvbnRlbnRzPSJsYXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpZCIgdHlwZT0ieHM6SUQiLz4KICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIiB0eXBlPSJ0bnM6cmVzb3VyY2VfdHlwZV9saXN0Ii8+CiAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icXVlcnlUeXBlIiB0eXBlPSJ4czpzdHJpbmciCiAgICAgICAgZGVmYXVsdD0iYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIi8+CiAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGF0aCIgdHlwZT0ieHM6c3RyaW5nIi8+CiAgICAgIDx4czphbnlBdHRyaWJ1dGUgbmFtZXNwYWNlPSIjI290aGVyIiBwcm9jZXNzQ29udGVudHM9ImxheCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CgogIDx4czpzaW1wbGVUeXBlIG5hbWU9InJlc291cmNlX3R5cGVfbGlzdCI+CiAgICA8eHM6bGlzdCBpdGVtVHlwZT0ieHM6YW55VVJJIi8+CiAgPC94czpzaW1wbGVUeXBlPgoKICA8eHM6ZWxlbWVudCBuYW1lPSJyZXNvdXJjZV90eXBlIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idG5zOmRvYyIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idG5zOnBhcmFtIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idG5zOm1ldGhvZCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0bnM6cmVzb3VyY2UiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6YW55IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5hbWVzcGFjZT0iIyNvdGhlciIKICAgICAgICAgIHByb2Nlc3NDb250ZW50cz0ibGF4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InhzOklEIi8+CiAgICAgIDx4czphbnlBdHRyaWJ1dGUgbmFtZXNwYWNlPSIjI290aGVyIiBwcm9jZXNzQ29udGVudHM9ImxheCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CgogIDx4czplbGVtZW50IG5hbWU9Im1ldGhvZCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRuczpkb2MiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRuczpyZXF1ZXN0IiBtaW5PY2N1cnM9IjAiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRuczpyZXNwb25zZSIgbWluT2NjdXJzPSIwIgogICAgICAgICAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KICAgICAgICA8eHM6YW55IG5hbWVzcGFjZT0iIyNvdGhlciIgcHJvY2Vzc0NvbnRlbnRzPSJsYXgiIG1pbk9jY3Vycz0iMCIKICAgICAgICAgIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InhzOklEIi8+CiAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0idG5zOk1ldGhvZCIvPgogICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhyZWYiIHR5cGU9InhzOmFueVVSSSIvPgogICAgICA8eHM6YW55QXR0cmlidXRlIG5hbWVzcGFjZT0iIyNvdGhlciIgcHJvY2Vzc0NvbnRlbnRzPSJsYXgiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgoKICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJNZXRob2QiPgogICAgPHhzOnVuaW9uIG1lbWJlclR5cGVzPSJ0bnM6SFRUUE1ldGhvZHMgeHM6Tk1UT0tFTiIvPgogIDwveHM6c2ltcGxlVHlwZT4KCiAgPHhzOnNpbXBsZVR5cGUgbmFtZT0iSFRUUE1ldGhvZHMiPgogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOk5NVE9LRU4iPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkdFVCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlBPU1QiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJQVVQiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJIRUFEIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iREVMRVRFIi8+CiAgICA8L3hzOnJlc3RyaWN0aW9uPgogIDwveHM6c2ltcGxlVHlwZT4KCiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5jbHVkZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRuczpkb2MiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJocmVmIiB0eXBlPSJ4czphbnlVUkkiLz4KICAgICAgPHhzOmFueUF0dHJpYnV0ZSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KCiAgPHhzOmVsZW1lbnQgbmFtZT0icmVxdWVzdCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRuczpkb2MiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRuczpwYXJhbSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idG5zOnJlcHJlc2VudGF0aW9uIiBtaW5PY2N1cnM9IjAiCiAgICAgICAgICBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICAgIDx4czphbnkgbmFtZXNwYWNlPSIjI290aGVyIiBwcm9jZXNzQ29udGVudHM9ImxheCIgbWluT2NjdXJzPSIwIgogICAgICAgICAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmFueUF0dHJpYnV0ZSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KCiAgPHhzOmVsZW1lbnQgbmFtZT0icmVzcG9uc2UiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0bnM6ZG9jIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0bnM6cGFyYW0iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRuczpyZXByZXNlbnRhdGlvbiIgbWluT2NjdXJzPSIwIgogICAgICAgICAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KICAgICAgICA8eHM6YW55IG5hbWVzcGFjZT0iIyNvdGhlciIgcHJvY2Vzc0NvbnRlbnRzPSJsYXgiIG1pbk9jY3Vycz0iMCIKICAgICAgICAgIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RhdHVzIiB0eXBlPSJ0bnM6c3RhdHVzQ29kZUxpc3QiLz4KICAgICAgPHhzOmFueUF0dHJpYnV0ZSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KCiAgPHhzOnNpbXBsZVR5cGUgbmFtZT0idXJpTGlzdCI+CiAgICA8eHM6bGlzdCBpdGVtVHlwZT0ieHM6YW55VVJJIi8+CiAgPC94czpzaW1wbGVUeXBlPgoKICA8eHM6ZWxlbWVudCBuYW1lPSJyZXByZXNlbnRhdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRuczpkb2MiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRuczpwYXJhbSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICAgIDx4czphbnkgbmFtZXNwYWNlPSIjI290aGVyIiBwcm9jZXNzQ29udGVudHM9ImxheCIgbWluT2NjdXJzPSIwIgogICAgICAgICAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpZCIgdHlwZT0ieHM6SUQiLz4KICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbGVtZW50IiB0eXBlPSJ4czpRTmFtZSIvPgogICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1lZGlhVHlwZSIgdHlwZT0ieHM6c3RyaW5nIi8+CiAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaHJlZiIgdHlwZT0ieHM6YW55VVJJIi8+CiAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icHJvZmlsZSIgdHlwZT0idG5zOnVyaUxpc3QiLz4KICAgICAgPHhzOmFueUF0dHJpYnV0ZSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KCiAgPHhzOnNpbXBsZVR5cGUgbmFtZT0ic3RhdHVzQ29kZUxpc3QiPgogICAgPHhzOmxpc3QgaXRlbVR5cGU9InhzOnVuc2lnbmVkSW50Ii8+CiAgPC94czpzaW1wbGVUeXBlPgoKICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJQYXJhbVN0eWxlIj4KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBsYWluIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icXVlcnkiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJtYXRyaXgiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJoZWFkZXIiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0ZW1wbGF0ZSIvPgogICAgPC94czpyZXN0cmljdGlvbj4KICA8L3hzOnNpbXBsZVR5cGU+CgogIDx4czplbGVtZW50IG5hbWU9InBhcmFtIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idG5zOmRvYyIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idG5zOm9wdGlvbiIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idG5zOmxpbmsiIG1pbk9jY3Vycz0iMCIvPgogICAgICAgIDx4czphbnkgbmFtZXNwYWNlPSIjI290aGVyIiBwcm9jZXNzQ29udGVudHM9ImxheCIgbWluT2NjdXJzPSIwIgogICAgICAgICAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJocmVmIiB0eXBlPSJ4czphbnlVUkkiLz4KICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJ4czpOTVRPS0VOIi8+CiAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3R5bGUiIHR5cGU9InRuczpQYXJhbVN0eWxlIi8+CiAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InhzOklEIi8+CiAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIgdHlwZT0ieHM6UU5hbWUiIGRlZmF1bHQ9InhzOnN0cmluZyIvPgogICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlZmF1bHQiIHR5cGU9InhzOnN0cmluZyIvPgogICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlcXVpcmVkIiB0eXBlPSJ4czpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIvPgogICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlcGVhdGluZyIgdHlwZT0ieHM6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiLz4KICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmaXhlZCIgdHlwZT0ieHM6c3RyaW5nIi8+CiAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGF0aCIgdHlwZT0ieHM6c3RyaW5nIi8+CiAgICAgIDx4czphbnlBdHRyaWJ1dGUgbmFtZXNwYWNlPSIjI290aGVyIiBwcm9jZXNzQ29udGVudHM9ImxheCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CgogIDx4czplbGVtZW50IG5hbWU9Im9wdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRuczpkb2MiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KICAgICAgICA8eHM6YW55IG5hbWVzcGFjZT0iIyNvdGhlciIgcHJvY2Vzc0NvbnRlbnRzPSJsYXgiIG1pbk9jY3Vycz0iMCIKICAgICAgICAgIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsdWUiIHR5cGU9InhzOnN0cmluZyIgdXNlPSJyZXF1aXJlZCIvPgogICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1lZGlhVHlwZSIgdHlwZT0ieHM6c3RyaW5nIi8+CiAgICAgIDx4czphbnlBdHRyaWJ1dGUgbmFtZXNwYWNlPSIjI290aGVyIiBwcm9jZXNzQ29udGVudHM9ImxheCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CgogIDx4czplbGVtZW50IG5hbWU9ImxpbmsiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0bnM6ZG9jIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CiAgICAgICAgPHhzOmFueSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4IiBtaW5PY2N1cnM9IjAiCiAgICAgICAgICBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlc291cmNlX3R5cGUiIHR5cGU9InhzOmFueVVSSSIvPgogICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXYiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgIDx4czphbnlBdHRyaWJ1dGUgbmFtZXNwYWNlPSIjI290aGVyIiBwcm9jZXNzQ29udGVudHM9ImxheCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+Cgo8L3hzOnNjaGVtYT4K
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjwhRE9DVFlQRSB4czpzY2hlbWEgUFVCTElDICItLy9XM0MvL0RURCBYTUxTQ0hFTUEgMjAwMTAyLy9FTiIgIlhNTFNjaGVtYS5kdGQiID4KPHhzOnNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWw6bGFuZz0iZW4iPgoKIDx4czphbm5vdGF0aW9uPgogIDx4czpkb2N1bWVudGF0aW9uPgogICBTZWUgaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlLmh0bWwgYW5kCiAgIGh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy14bWwgZm9yIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgbmFtZXNwYWNlLgoKICAgIFRoaXMgc2NoZW1hIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgWE1MIG5hbWVzcGFjZSwgaW4gYSBmb3JtCiAgICBzdWl0YWJsZSBmb3IgaW1wb3J0IGJ5IG90aGVyIHNjaGVtYSBkb2N1bWVudHMuICAKCiAgICBOb3RlIHRoYXQgbG9jYWwgbmFtZXMgaW4gdGhpcyBuYW1lc3BhY2UgYXJlIGludGVuZGVkIHRvIGJlIGRlZmluZWQKICAgIG9ubHkgYnkgdGhlIFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0gb3IgaXRzIHN1Ymdyb3Vwcy4gIFRoZQogICAgZm9sbG93aW5nIG5hbWVzIGFyZSBjdXJyZW50bHkgZGVmaW5lZCBpbiB0aGlzIG5hbWVzcGFjZSBhbmQgc2hvdWxkCiAgICBub3QgYmUgdXNlZCB3aXRoIGNvbmZsaWN0aW5nIHNlbWFudGljcyBieSBhbnkgV29ya2luZyBHcm91cCwKICAgIHNwZWNpZmljYXRpb24sIG9yIGRvY3VtZW50IGluc3RhbmNlOgoKICAgIGJhc2UgKGFzIGFuIGF0dHJpYnV0ZSBuYW1lKTogZGVub3RlcyBhbiBhdHRyaWJ1dGUgd2hvc2UgdmFsdWUKICAgICAgICAgcHJvdmlkZXMgYSBVUkkgdG8gYmUgdXNlZCBhcyB0aGUgYmFzZSBmb3IgaW50ZXJwcmV0aW5nIGFueQogICAgICAgICByZWxhdGl2ZSBVUklzIGluIHRoZSBzY29wZSBvZiB0aGUgZWxlbWVudCBvbiB3aGljaCBpdAogICAgICAgICBhcHBlYXJzOyBpdHMgdmFsdWUgaXMgaW5oZXJpdGVkLiAgVGhpcyBuYW1lIGlzIHJlc2VydmVkCiAgICAgICAgIGJ5IHZpcnR1ZSBvZiBpdHMgZGVmaW5pdGlvbiBpbiB0aGUgWE1MIEJhc2Ugc3BlY2lmaWNhdGlvbi4KCiAgICBsYW5nIChhcyBhbiBhdHRyaWJ1dGUgbmFtZSk6IGRlbm90ZXMgYW4gYXR0cmlidXRlIHdob3NlIHZhbHVlCiAgICAgICAgIGlzIGEgbGFuZ3VhZ2UgY29kZSBmb3IgdGhlIG5hdHVyYWwgbGFuZ3VhZ2Ugb2YgdGhlIGNvbnRlbnQgb2YKICAgICAgICAgYW55IGVsZW1lbnQ7IGl0cyB2YWx1ZSBpcyBpbmhlcml0ZWQuICBUaGlzIG5hbWUgaXMgcmVzZXJ2ZWQKICAgICAgICAgYnkgdmlydHVlIG9mIGl0cyBkZWZpbml0aW9uIGluIHRoZSBYTUwgc3BlY2lmaWNhdGlvbi4KICAKICAgIHNwYWNlIChhcyBhbiBhdHRyaWJ1dGUgbmFtZSk6IGRlbm90ZXMgYW4gYXR0cmlidXRlIHdob3NlCiAgICAgICAgIHZhbHVlIGlzIGEga2V5d29yZCBpbmRpY2F0aW5nIHdoYXQgd2hpdGVzcGFjZSBwcm9jZXNzaW5nCiAgICAgICAgIGRpc2NpcGxpbmUgaXMgaW50ZW5kZWQgZm9yIHRoZSBjb250ZW50IG9mIHRoZSBlbGVtZW50OyBpdHMKICAgICAgICAgdmFsdWUgaXMgaW5oZXJpdGVkLiAgVGhpcyBuYW1lIGlzIHJlc2VydmVkIGJ5IHZpcnR1ZSBvZiBpdHMKICAgICAgICAgZGVmaW5pdGlvbiBpbiB0aGUgWE1MIHNwZWNpZmljYXRpb24uCgogICAgRmF0aGVyIChpbiBhbnkgY29udGV4dCBhdCBhbGwpOiBkZW5vdGVzIEpvbiBCb3NhaywgdGhlIGNoYWlyIG9mIAogICAgICAgICB0aGUgb3JpZ2luYWwgWE1MIFdvcmtpbmcgR3JvdXAuICBUaGlzIG5hbWUgaXMgcmVzZXJ2ZWQgYnkgCiAgICAgICAgIHRoZSBmb2xsb3dpbmcgZGVjaXNpb24gb2YgdGhlIFczQyBYTUwgUGxlbmFyeSBhbmQgCiAgICAgICAgIFhNTCBDb29yZGluYXRpb24gZ3JvdXBzOgoKICAgICAgICAgICAgIEluIGFwcHJlY2lhdGlvbiBmb3IgaGlzIHZpc2lvbiwgbGVhZGVyc2hpcCBhbmQgZGVkaWNhdGlvbgogICAgICAgICAgICAgdGhlIFczQyBYTUwgUGxlbmFyeSBvbiB0aGlzIDEwdGggZGF5IG9mIEZlYnJ1YXJ5LCAyMDAwCiAgICAgICAgICAgICByZXNlcnZlcyBmb3IgSm9uIEJvc2FrIGluIHBlcnBldHVpdHkgdGhlIFhNTCBuYW1lCiAgICAgICAgICAgICB4bWw6RmF0aGVyCiAgPC94czpkb2N1bWVudGF0aW9uPgogPC94czphbm5vdGF0aW9uPgoKIDx4czphbm5vdGF0aW9uPgogIDx4czpkb2N1bWVudGF0aW9uPlRoaXMgc2NoZW1hIGRlZmluZXMgYXR0cmlidXRlcyBhbmQgYW4gYXR0cmlidXRlIGdyb3VwCiAgICAgICAgc3VpdGFibGUgZm9yIHVzZSBieQogICAgICAgIHNjaGVtYXMgd2lzaGluZyB0byBhbGxvdyB4bWw6YmFzZSwgeG1sOmxhbmcgb3IgeG1sOnNwYWNlIGF0dHJpYnV0ZXMKICAgICAgICBvbiBlbGVtZW50cyB0aGV5IGRlZmluZS4KCiAgICAgICAgVG8gZW5hYmxlIHRoaXMsIHN1Y2ggYSBzY2hlbWEgbXVzdCBpbXBvcnQgdGhpcyBzY2hlbWEKICAgICAgICBmb3IgdGhlIFhNTCBuYW1lc3BhY2UsIGUuZy4gYXMgZm9sbG93czoKICAgICAgICAmbHQ7c2NoZW1hIC4gLiAuPgogICAgICAgICAuIC4gLgogICAgICAgICAmbHQ7aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIgogICAgICAgICAgICAgICAgICAgIHNjaGVtYUxvY2F0aW9uPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzAzL3htbC54c2QiLz4KCiAgICAgICAgU3Vic2VxdWVudGx5LCBxdWFsaWZpZWQgcmVmZXJlbmNlIHRvIGFueSBvZiB0aGUgYXR0cmlidXRlcwogICAgICAgIG9yIHRoZSBncm91cCBkZWZpbmVkIGJlbG93IHdpbGwgaGF2ZSB0aGUgZGVzaXJlZCBlZmZlY3QsIGUuZy4KCiAgICAgICAgJmx0O3R5cGUgLiAuIC4+CiAgICAgICAgIC4gLiAuCiAgICAgICAgICZsdDthdHRyaWJ1dGVHcm91cCByZWY9InhtbDpzcGVjaWFsQXR0cnMiLz4KIAogICAgICAgICB3aWxsIGRlZmluZSBhIHR5cGUgd2hpY2ggd2lsbCBzY2hlbWEtdmFsaWRhdGUgYW4gaW5zdGFuY2UKICAgICAgICAgZWxlbWVudCB3aXRoIGFueSBvZiB0aG9zZSBhdHRyaWJ1dGVzPC94czpkb2N1bWVudGF0aW9uPgogPC94czphbm5vdGF0aW9uPgoKIDx4czphbm5vdGF0aW9uPgogIDx4czpkb2N1bWVudGF0aW9uPkluIGtlZXBpbmcgd2l0aCB0aGUgWE1MIFNjaGVtYSBXRydzIHN0YW5kYXJkIHZlcnNpb25pbmcKICAgcG9saWN5LCB0aGlzIHNjaGVtYSBkb2N1bWVudCB3aWxsIHBlcnNpc3QgYXQKICAgaHR0cDovL3d3dy53My5vcmcvMjAwMS8wMy94bWwueHNkLgogICBBdCB0aGUgZGF0ZSBvZiBpc3N1ZSBpdCBjYW4gYWxzbyBiZSBmb3VuZCBhdAogICBodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC54c2QuCiAgIFRoZSBzY2hlbWEgZG9jdW1lbnQgYXQgdGhhdCBVUkkgbWF5IGhvd2V2ZXIgY2hhbmdlIGluIHRoZSBmdXR1cmUsCiAgIGluIG9yZGVyIHRvIHJlbWFpbiBjb21wYXRpYmxlIHdpdGggdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFhNTCBTY2hlbWEKICAgaXRzZWxmLiAgSW4gb3RoZXIgd29yZHMsIGlmIHRoZSBYTUwgU2NoZW1hIG5hbWVzcGFjZSBjaGFuZ2VzLCB0aGUgdmVyc2lvbgogICBvZiB0aGlzIGRvY3VtZW50IGF0CiAgIGh0dHA6Ly93d3cudzMub3JnLzIwMDEveG1sLnhzZCB3aWxsIGNoYW5nZQogICBhY2NvcmRpbmdseTsgdGhlIHZlcnNpb24gYXQKICAgaHR0cDovL3d3dy53My5vcmcvMjAwMS8wMy94bWwueHNkIHdpbGwgbm90IGNoYW5nZS4KICA8L3hzOmRvY3VtZW50YXRpb24+CiA8L3hzOmFubm90YXRpb24+CgogPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYW5nIiB0eXBlPSJ4czpsYW5ndWFnZSI+CiAgPHhzOmFubm90YXRpb24+CiAgIDx4czpkb2N1bWVudGF0aW9uPkluIGR1ZSBjb3Vyc2UsIHdlIHNob3VsZCBpbnN0YWxsIHRoZSByZWxldmFudCBJU08gMi0gYW5kIDMtbGV0dGVyCiAgICAgICAgIGNvZGVzIGFzIHRoZSBlbnVtZXJhdGVkIHBvc3NpYmxlIHZhbHVlcyAuIC4gLjwveHM6ZG9jdW1lbnRhdGlvbj4KICA8L3hzOmFubm90YXRpb24+CiA8L3hzOmF0dHJpYnV0ZT4KCiA8eHM6YXR0cmlidXRlIG5hbWU9InNwYWNlIiBkZWZhdWx0PSJwcmVzZXJ2ZSI+CiAgPHhzOnNpbXBsZVR5cGU+CiAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpOQ05hbWUiPgogICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkZWZhdWx0Ii8+CiAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InByZXNlcnZlIi8+CiAgIDwveHM6cmVzdHJpY3Rpb24+CiAgPC94czpzaW1wbGVUeXBlPgogPC94czphdHRyaWJ1dGU+CgogPHhzOmF0dHJpYnV0ZSBuYW1lPSJiYXNlIiB0eXBlPSJ4czphbnlVUkkiPgogIDx4czphbm5vdGF0aW9uPgogICA8eHM6ZG9jdW1lbnRhdGlvbj5TZWUgaHR0cDovL3d3dy53My5vcmcvVFIveG1sYmFzZS8gZm9yCiAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgYXR0cmlidXRlLjwveHM6ZG9jdW1lbnRhdGlvbj4KICA8L3hzOmFubm90YXRpb24+CiA8L3hzOmF0dHJpYnV0ZT4KCiA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3BlY2lhbEF0dHJzIj4KICA8eHM6YXR0cmlidXRlIHJlZj0ieG1sOmJhc2UiLz4KICA8eHM6YXR0cmlidXRlIHJlZj0ieG1sOmxhbmciLz4KICA8eHM6YXR0cmlidXRlIHJlZj0ieG1sOnNwYWNlIi8+CiA8L3hzOmF0dHJpYnV0ZUdyb3VwPgoKPC94czpzY2hlbWE+Cg==
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQo8IS0tDQoNCkNvcHlyaWdodCAyMDAxIC0gMjAwNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgTWljcm9zb2Z0IENvcnBvcmF0aW9uDQpBbGwgUmlnaHRzIFJlc2VydmVkDQoNCkxpY2Vuc2UgZm9yIFdTREwgU2NoZW1hIEZpbGVzDQoNClRoZSBBdXRob3JzIGdyYW50IHBlcm1pc3Npb24gdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB0aGUgV1NETCBTY2hlbWENCkZpbGVzIGluIGFueSBtZWRpdW0gd2l0aG91dCBmZWUgb3Igcm95YWx0eSBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGFuZA0KbGljZW5zZSBhcmUgZGlzdHJpYnV0ZWQgd2l0aCB0aGVtLiAgVGhlIG9yaWdpbmFscyBvZiB0aGVzZSBmaWxlcyBjYW4NCmJlIGxvY2F0ZWQgYXQ6DQoNCmh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvMjAwMy0wMi0xMS54c2QNCg0KVEhFU0UgU0NIRU1BIEZJTEVTIEFSRSBQUk9WSURFRCAiQVMgSVMsIiBBTkQgVEhFIEFVVEhPUlMgTUFLRSBOTyBSRVBSRVNFTlRBVElPTlMNCk9SIFdBUlJBTlRJRVMsIEVYUFJFU1MgT1IgSU1QTElFRCwgUkVHQVJESU5HIFRIRVNFIEZJTEVTLCBJTkNMVURJTkcsIEJVVCBOT1QNCkxJTUlURUQgVE8sIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwNCk5PTi1JTkZSSU5HRU1FTlQgT1IgVElUTEUuICBUSEUgQVVUSE9SUyBXSUxMIE5PVCBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsDQpJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORyBPVVQgT0YgT1INClJFTEFUSU5HIFRPIEFOWSBVU0UgT1IgRElTVFJJQlVUSU9OIE9GIFRIRVNFIEZJTEVTLg0KDQpUaGUgbmFtZSBhbmQgdHJhZGVtYXJrcyBvZiB0aGUgQXV0aG9ycyBtYXkgTk9UIGJlIHVzZWQgaW4gYW55IG1hbm5lciwNCmluY2x1ZGluZyBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0byB0aGVzZSBmaWxlcyBvciBhbnkgcHJvZ3JhbQ0Kb3Igc2VydmljZSB0aGF0IHVzZXMgdGhlc2UgZmlsZXMsIHdyaXR0ZW4gcHJpb3IgcGVybWlzc2lvbi4gIFRpdGxlIHRvIGNvcHlyaWdodA0KaW4gdGhlc2UgZmlsZXMgd2lsbCBhdCBhbGwgdGltZXMgcmVtYWluIHdpdGggdGhlIEF1dGhvcnMuDQoNCk5vIG90aGVyIHJpZ2h0cyBhcmUgZ3JhbnRlZCBieSBpbXBsaWNhdGlvbiwgZXN0b3BwZWwgb3Igb3RoZXJ3aXNlLg0KDQoNCi0tPg0KPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiDQogICAgICAgICAgIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIg0KICAgICAgICAgICB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIg0KICAgICAgICAgICBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgPg0KDQogIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSIgbmFtZT0idERvY3VtZW50YXRpb24iID4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6YW55IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHByb2Nlc3NDb250ZW50cz0ibGF4IiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InREb2N1bWVudGVkIiA+DQogICAgPHhzOmFubm90YXRpb24+DQogICAgICA8eHM6ZG9jdW1lbnRhdGlvbj4NCiAgICAgIFRoaXMgdHlwZSBpcyBleHRlbmRlZCBieSAgY29tcG9uZW50IHR5cGVzIHRvIGFsbG93IHRoZW0gdG8gYmUgZG9jdW1lbnRlZA0KICAgICAgPC94czpkb2N1bWVudGF0aW9uPg0KICAgIDwveHM6YW5ub3RhdGlvbj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJkb2N1bWVudGF0aW9uIiB0eXBlPSJ3c2RsOnREb2N1bWVudGF0aW9uIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idEV4dGVuc2libGVBdHRyaWJ1dGVzRG9jdW1lbnRlZCIgYWJzdHJhY3Q9InRydWUiID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dERvY3VtZW50ZWQiID4NCiAgICAgICAgPHhzOmFubm90YXRpb24+DQogICAgICAgICAgPHhzOmRvY3VtZW50YXRpb24+DQogICAgICAgICAgVGhpcyB0eXBlIGlzIGV4dGVuZGVkIGJ5IGNvbXBvbmVudCB0eXBlcyB0byBhbGxvdyBhdHRyaWJ1dGVzIGZyb20gb3RoZXIgbmFtZXNwYWNlcyB0byBiZSBhZGRlZC4NCiAgICAgICAgICA8L3hzOmRvY3VtZW50YXRpb24+DQogICAgICAgIDwveHM6YW5ub3RhdGlvbj4NCiAgICAgICAgPHhzOmFueUF0dHJpYnV0ZSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4IiAvPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idEV4dGVuc2libGVEb2N1bWVudGVkIiBhYnN0cmFjdD0idHJ1ZSIgPg0KICAgIDx4czpjb21wbGV4Q29udGVudD4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0id3NkbDp0RG9jdW1lbnRlZCIgPg0KICAgICAgICA8eHM6YW5ub3RhdGlvbj4NCiAgICAgICAgICA8eHM6ZG9jdW1lbnRhdGlvbj4NCiAgICAgICAgICBUaGlzIHR5cGUgaXMgZXh0ZW5kZWQgYnkgY29tcG9uZW50IHR5cGVzIHRvIGFsbG93IGVsZW1lbnRzIGZyb20gb3RoZXIgbmFtZXNwYWNlcyB0byBiZSBhZGRlZC4NCiAgICAgICAgICA8L3hzOmRvY3VtZW50YXRpb24+DQogICAgICAgIDwveHM6YW5ub3RhdGlvbj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czphbnkgbmFtZXNwYWNlPSIjI290aGVyIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBwcm9jZXNzQ29udGVudHM9ImxheCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iZGVmaW5pdGlvbnMiIHR5cGU9IndzZGw6dERlZmluaXRpb25zIiA+DQogICAgPHhzOmtleSBuYW1lPSJtZXNzYWdlIiA+DQogICAgICA8eHM6c2VsZWN0b3IgeHBhdGg9IndzZGw6bWVzc2FnZSIgLz4NCiAgICAgIDx4czpmaWVsZCB4cGF0aD0iQG5hbWUiIC8+DQogICAgPC94czprZXk+DQogICAgPHhzOmtleSBuYW1lPSJwb3J0VHlwZSIgPg0KICAgICAgPHhzOnNlbGVjdG9yIHhwYXRoPSJ3c2RsOnBvcnRUeXBlIiAvPg0KICAgICAgPHhzOmZpZWxkIHhwYXRoPSJAbmFtZSIgLz4NCiAgICA8L3hzOmtleT4NCiAgICA8eHM6a2V5IG5hbWU9ImJpbmRpbmciID4NCiAgICAgIDx4czpzZWxlY3RvciB4cGF0aD0id3NkbDpiaW5kaW5nIiAvPg0KICAgICAgPHhzOmZpZWxkIHhwYXRoPSJAbmFtZSIgLz4NCiAgICA8L3hzOmtleT4NCiAgICA8eHM6a2V5IG5hbWU9InNlcnZpY2UiID4NCiAgICAgIDx4czpzZWxlY3RvciB4cGF0aD0id3NkbDpzZXJ2aWNlIiAvPg0KICAgICAgPHhzOmZpZWxkIHhwYXRoPSJAbmFtZSIgLz4NCiAgICA8L3hzOmtleT4NCiAgICA8eHM6a2V5IG5hbWU9ImltcG9ydCIgPg0KICAgICAgPHhzOnNlbGVjdG9yIHhwYXRoPSJ3c2RsOmltcG9ydCIgLz4NCiAgICAgIDx4czpmaWVsZCB4cGF0aD0iQG5hbWVzcGFjZSIgLz4NCiAgICA8L3hzOmtleT4NCiAgPC94czplbGVtZW50Pg0KDQogIDx4czpncm91cCBuYW1lPSJhbnlUb3BMZXZlbE9wdGlvbmFsRWxlbWVudCIgPg0KICAgIDx4czphbm5vdGF0aW9uPg0KICAgICAgPHhzOmRvY3VtZW50YXRpb24+DQogICAgICBBbnkgdG9wIGxldmVsIG9wdGlvbmFsIGVsZW1lbnQgYWxsb3dlZCB0byBhcHBlYXIgbW9yZSB0aGVuIG9uY2UgLSBhbnkgY2hpbGQgb2YgZGVmaW5pdGlvbnMgZWxlbWVudCBleGNlcHQgd3NkbDp0eXBlcy4gQW55IGV4dGVuc2liaWxpdHkgZWxlbWVudCBpcyBhbGxvd2VkIGluIGFueSBwbGFjZS4NCiAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4NCiAgICA8L3hzOmFubm90YXRpb24+DQogICAgPHhzOmNob2ljZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9ImltcG9ydCIgdHlwZT0id3NkbDp0SW1wb3J0IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0idHlwZXMiIHR5cGU9IndzZGw6dFR5cGVzIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0ibWVzc2FnZSIgIHR5cGU9IndzZGw6dE1lc3NhZ2UiID4NCiAgICAgICAgPHhzOnVuaXF1ZSBuYW1lPSJwYXJ0IiA+DQogICAgICAgICAgPHhzOnNlbGVjdG9yIHhwYXRoPSJ3c2RsOnBhcnQiIC8+DQogICAgICAgICAgPHhzOmZpZWxkIHhwYXRoPSJAbmFtZSIgLz4NCiAgICAgICAgPC94czp1bmlxdWU+DQogICAgICA8L3hzOmVsZW1lbnQ+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJwb3J0VHlwZSIgdHlwZT0id3NkbDp0UG9ydFR5cGUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJiaW5kaW5nIiAgdHlwZT0id3NkbDp0QmluZGluZyIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9InNlcnZpY2UiICB0eXBlPSJ3c2RsOnRTZXJ2aWNlIiA+DQogICAgICAgIDx4czp1bmlxdWUgbmFtZT0icG9ydCIgPg0KICAgICAgICAgIDx4czpzZWxlY3RvciB4cGF0aD0id3NkbDpwb3J0IiAvPg0KICAgICAgICAgIDx4czpmaWVsZCB4cGF0aD0iQG5hbWUiIC8+DQogICAgICAgIDwveHM6dW5pcXVlPg0KCSAgPC94czplbGVtZW50Pg0KICAgIDwveHM6Y2hvaWNlPg0KICA8L3hzOmdyb3VwPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0RGVmaW5pdGlvbnMiID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVEb2N1bWVudGVkIiA+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6Z3JvdXAgcmVmPSJ3c2RsOmFueVRvcExldmVsT3B0aW9uYWxFbGVtZW50IiAgbWluT2NjdXJzPSIwIiAgIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRhcmdldE5hbWVzcGFjZSIgdHlwZT0ieHM6YW55VVJJIiB1c2U9Im9wdGlvbmFsIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOk5DTmFtZSIgdXNlPSJvcHRpb25hbCIgLz4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRJbXBvcnQiID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVBdHRyaWJ1dGVzRG9jdW1lbnRlZCIgPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWVzcGFjZSIgdHlwZT0ieHM6YW55VVJJIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJ4czphbnlVUkkiIHVzZT0icmVxdWlyZWQiIC8+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0VHlwZXMiID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVEb2N1bWVudGVkIiAvPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRNZXNzYWdlIiA+DQogICAgPHhzOmNvbXBsZXhDb250ZW50Pg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ3c2RsOnRFeHRlbnNpYmxlRG9jdW1lbnRlZCIgPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0icGFydCIgdHlwZT0id3NkbDp0UGFydCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJ4czpOQ05hbWUiIHVzZT0icmVxdWlyZWQiIC8+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0UGFydCIgPg0KICAgIDx4czpjb21wbGV4Q29udGVudD4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0id3NkbDp0RXh0ZW5zaWJsZUF0dHJpYnV0ZXNEb2N1bWVudGVkIiA+DQogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6TkNOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVsZW1lbnQiIHR5cGU9InhzOlFOYW1lIiB1c2U9Im9wdGlvbmFsIiAvPg0KPCEtLQ0KUmVtb3ZlZCBieSBPVFJTOg0KVG8gYmUgYWxpZ25lZCB3aXRoIExpdGVyYWwgc3R5bGUNCiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIiB0eXBlPSJ4czpRTmFtZSIgdXNlPSJvcHRpb25hbCIgLz4NCi0tPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idFBvcnRUeXBlIiA+DQogICAgPHhzOmNvbXBsZXhDb250ZW50Pg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ3c2RsOnRFeHRlbnNpYmxlQXR0cmlidXRlc0RvY3VtZW50ZWQiID4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Im9wZXJhdGlvbiIgdHlwZT0id3NkbDp0T3BlcmF0aW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOk5DTmFtZSIgdXNlPSJyZXF1aXJlZCIgLz4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRPcGVyYXRpb24iID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVEb2N1bWVudGVkIiA+DQoJICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6Y2hvaWNlPg0KICAgICAgICAgICAgPHhzOmdyb3VwIHJlZj0id3NkbDpyZXF1ZXN0LXJlc3BvbnNlLW9yLW9uZS13YXktb3BlcmF0aW9uIiAvPg0KICAgICAgICAgICAgPHhzOmdyb3VwIHJlZj0id3NkbDpzb2xpY2l0LXJlc3BvbnNlLW9yLW5vdGlmaWNhdGlvbi1vcGVyYXRpb24iIC8+DQogICAgICAgICAgPC94czpjaG9pY2U+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6TkNOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBhcmFtZXRlck9yZGVyIiB0eXBlPSJ4czpOTVRPS0VOUyIgdXNlPSJvcHRpb25hbCIgLz4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmdyb3VwIG5hbWU9InJlcXVlc3QtcmVzcG9uc2Utb3Itb25lLXdheS1vcGVyYXRpb24iID4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJpbnB1dCIgdHlwZT0id3NkbDp0UGFyYW0iIC8+DQoJICA8eHM6c2VxdWVuY2UgbWluT2NjdXJzPScwJyA+DQoJICAgIDx4czplbGVtZW50IG5hbWU9Im91dHB1dCIgdHlwZT0id3NkbDp0UGFyYW0iIC8+DQoJCTx4czplbGVtZW50IG5hbWU9ImZhdWx0IiB0eXBlPSJ3c2RsOnRGYXVsdCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4NCiAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpncm91cD4NCg0KICA8eHM6Z3JvdXAgbmFtZT0ic29saWNpdC1yZXNwb25zZS1vci1ub3RpZmljYXRpb24tb3BlcmF0aW9uIiA+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0ib3V0cHV0IiB0eXBlPSJ3c2RsOnRQYXJhbSIgLz4NCgkgIDx4czpzZXF1ZW5jZSBtaW5PY2N1cnM9JzAnID4NCgkgICAgPHhzOmVsZW1lbnQgbmFtZT0iaW5wdXQiIHR5cGU9IndzZGw6dFBhcmFtIiAvPg0KCQk8eHM6ZWxlbWVudCBuYW1lPSJmYXVsdCIgdHlwZT0id3NkbDp0RmF1bHQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQoJICA8L3hzOnNlcXVlbmNlPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Z3JvdXA+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRQYXJhbSIgPg0KICAgIDx4czpjb21wbGV4Q29udGVudD4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0id3NkbDp0RXh0ZW5zaWJsZUF0dHJpYnV0ZXNEb2N1bWVudGVkIiA+DQogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6TkNOYW1lIiB1c2U9Im9wdGlvbmFsIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1lc3NhZ2UiIHR5cGU9InhzOlFOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idEZhdWx0IiA+DQogICAgPHhzOmNvbXBsZXhDb250ZW50Pg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ3c2RsOnRFeHRlbnNpYmxlQXR0cmlidXRlc0RvY3VtZW50ZWQiID4NCiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJ4czpOQ05hbWUiICB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1lc3NhZ2UiIHR5cGU9InhzOlFOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idEJpbmRpbmciID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVEb2N1bWVudGVkIiA+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJvcGVyYXRpb24iIHR5cGU9IndzZGw6dEJpbmRpbmdPcGVyYXRpb24iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6TkNOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUiIHR5cGU9InhzOlFOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idEJpbmRpbmdPcGVyYXRpb25NZXNzYWdlIiA+DQogICAgPHhzOmNvbXBsZXhDb250ZW50Pg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ3c2RsOnRFeHRlbnNpYmxlRG9jdW1lbnRlZCIgPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOk5DTmFtZSIgdXNlPSJvcHRpb25hbCIgLz4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRCaW5kaW5nT3BlcmF0aW9uRmF1bHQiID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVEb2N1bWVudGVkIiA+DQogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6TkNOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idEJpbmRpbmdPcGVyYXRpb24iID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVEb2N1bWVudGVkIiA+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJpbnB1dCIgdHlwZT0id3NkbDp0QmluZGluZ09wZXJhdGlvbk1lc3NhZ2UiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJvdXRwdXQiIHR5cGU9IndzZGw6dEJpbmRpbmdPcGVyYXRpb25NZXNzYWdlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iZmF1bHQiIHR5cGU9IndzZGw6dEJpbmRpbmdPcGVyYXRpb25GYXVsdCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJ4czpOQ05hbWUiIHVzZT0icmVxdWlyZWQiIC8+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0U2VydmljZSIgPg0KICAgIDx4czpjb21wbGV4Q29udGVudD4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0id3NkbDp0RXh0ZW5zaWJsZURvY3VtZW50ZWQiID4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9InBvcnQiIHR5cGU9IndzZGw6dFBvcnQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6TkNOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idFBvcnQiID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVEb2N1bWVudGVkIiA+DQogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6TkNOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJpbmRpbmciIHR5cGU9InhzOlFOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6YXR0cmlidXRlIG5hbWU9ImFycmF5VHlwZSIgdHlwZT0ieHM6c3RyaW5nIiAvPg0KICA8eHM6YXR0cmlidXRlIG5hbWU9InJlcXVpcmVkIiB0eXBlPSJ4czpib29sZWFuIiAvPg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idEV4dGVuc2liaWxpdHlFbGVtZW50IiBhYnN0cmFjdD0idHJ1ZSIgPg0KICAgIDx4czphdHRyaWJ1dGUgcmVmPSJ3c2RsOnJlcXVpcmVkIiB1c2U9Im9wdGlvbmFsIiAvPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KDQo8L3hzOnNjaGVtYT4=
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQo8IS0tDQoNCkNvcHlyaWdodCAyMDAxIC0gMjAwNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgTWljcm9zb2Z0IENvcnBvcmF0aW9uDQpBbGwgUmlnaHRzIFJlc2VydmVkDQoNCkxpY2Vuc2UgZm9yIFdTREwgU2NoZW1hIEZpbGVzDQoNClRoZSBBdXRob3JzIGdyYW50IHBlcm1pc3Npb24gdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB0aGUgV1NETCBTY2hlbWENCkZpbGVzIGluIGFueSBtZWRpdW0gd2l0aG91dCBmZWUgb3Igcm95YWx0eSBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGFuZA0KbGljZW5zZSBhcmUgZGlzdHJpYnV0ZWQgd2l0aCB0aGVtLiAgVGhlIG9yaWdpbmFscyBvZiB0aGVzZSBmaWxlcyBjYW4NCmJlIGxvY2F0ZWQgYXQ6DQoNCmh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvMjAwMy0wMi0xMS54c2QNCg0KVEhFU0UgU0NIRU1BIEZJTEVTIEFSRSBQUk9WSURFRCAiQVMgSVMsIiBBTkQgVEhFIEFVVEhPUlMgTUFLRSBOTyBSRVBSRVNFTlRBVElPTlMNCk9SIFdBUlJBTlRJRVMsIEVYUFJFU1MgT1IgSU1QTElFRCwgUkVHQVJESU5HIFRIRVNFIEZJTEVTLCBJTkNMVURJTkcsIEJVVCBOT1QNCkxJTUlURUQgVE8sIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwNCk5PTi1JTkZSSU5HRU1FTlQgT1IgVElUTEUuICBUSEUgQVVUSE9SUyBXSUxMIE5PVCBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsDQpJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORyBPVVQgT0YgT1INClJFTEFUSU5HIFRPIEFOWSBVU0UgT1IgRElTVFJJQlVUSU9OIE9GIFRIRVNFIEZJTEVTLg0KDQpUaGUgbmFtZSBhbmQgdHJhZGVtYXJrcyBvZiB0aGUgQXV0aG9ycyBtYXkgTk9UIGJlIHVzZWQgaW4gYW55IG1hbm5lciwNCmluY2x1ZGluZyBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0byB0aGVzZSBmaWxlcyBvciBhbnkgcHJvZ3JhbQ0Kb3Igc2VydmljZSB0aGF0IHVzZXMgdGhlc2UgZmlsZXMsIHdyaXR0ZW4gcHJpb3IgcGVybWlzc2lvbi4gIFRpdGxlIHRvIGNvcHlyaWdodA0KaW4gdGhlc2UgZmlsZXMgd2lsbCBhdCBhbGwgdGltZXMgcmVtYWluIHdpdGggdGhlIEF1dGhvcnMuDQoNCk5vIG90aGVyIHJpZ2h0cyBhcmUgZ3JhbnRlZCBieSBpbXBsaWNhdGlvbiwgZXN0b3BwZWwgb3Igb3RoZXJ3aXNlLg0KDQoNCi0tPg0KPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiDQogICAgICAgICAgIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIg0KICAgICAgICAgICB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIg0KICAgICAgICAgICBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgPg0KDQogIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSIgbmFtZT0idERvY3VtZW50YXRpb24iID4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6YW55IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHByb2Nlc3NDb250ZW50cz0ibGF4IiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InREb2N1bWVudGVkIiA+DQogICAgPHhzOmFubm90YXRpb24+DQogICAgICA8eHM6ZG9jdW1lbnRhdGlvbj4NCiAgICAgIFRoaXMgdHlwZSBpcyBleHRlbmRlZCBieSAgY29tcG9uZW50IHR5cGVzIHRvIGFsbG93IHRoZW0gdG8gYmUgZG9jdW1lbnRlZA0KICAgICAgPC94czpkb2N1bWVudGF0aW9uPg0KICAgIDwveHM6YW5ub3RhdGlvbj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJkb2N1bWVudGF0aW9uIiB0eXBlPSJ3c2RsOnREb2N1bWVudGF0aW9uIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idEV4dGVuc2libGVBdHRyaWJ1dGVzRG9jdW1lbnRlZCIgYWJzdHJhY3Q9InRydWUiID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dERvY3VtZW50ZWQiID4NCiAgICAgICAgPHhzOmFubm90YXRpb24+DQogICAgICAgICAgPHhzOmRvY3VtZW50YXRpb24+DQogICAgICAgICAgVGhpcyB0eXBlIGlzIGV4dGVuZGVkIGJ5IGNvbXBvbmVudCB0eXBlcyB0byBhbGxvdyBhdHRyaWJ1dGVzIGZyb20gb3RoZXIgbmFtZXNwYWNlcyB0byBiZSBhZGRlZC4NCiAgICAgICAgICA8L3hzOmRvY3VtZW50YXRpb24+DQogICAgICAgIDwveHM6YW5ub3RhdGlvbj4NCiAgICAgICAgPHhzOmFueUF0dHJpYnV0ZSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4IiAvPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idEV4dGVuc2libGVEb2N1bWVudGVkIiBhYnN0cmFjdD0idHJ1ZSIgPg0KICAgIDx4czpjb21wbGV4Q29udGVudD4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0id3NkbDp0RG9jdW1lbnRlZCIgPg0KICAgICAgICA8eHM6YW5ub3RhdGlvbj4NCiAgICAgICAgICA8eHM6ZG9jdW1lbnRhdGlvbj4NCiAgICAgICAgICBUaGlzIHR5cGUgaXMgZXh0ZW5kZWQgYnkgY29tcG9uZW50IHR5cGVzIHRvIGFsbG93IGVsZW1lbnRzIGZyb20gb3RoZXIgbmFtZXNwYWNlcyB0byBiZSBhZGRlZC4NCiAgICAgICAgICA8L3hzOmRvY3VtZW50YXRpb24+DQogICAgICAgIDwveHM6YW5ub3RhdGlvbj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czphbnkgbmFtZXNwYWNlPSIjI290aGVyIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBwcm9jZXNzQ29udGVudHM9ImxheCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iZGVmaW5pdGlvbnMiIHR5cGU9IndzZGw6dERlZmluaXRpb25zIiA+DQogICAgPHhzOmtleSBuYW1lPSJtZXNzYWdlIiA+DQogICAgICA8eHM6c2VsZWN0b3IgeHBhdGg9IndzZGw6bWVzc2FnZSIgLz4NCiAgICAgIDx4czpmaWVsZCB4cGF0aD0iQG5hbWUiIC8+DQogICAgPC94czprZXk+DQogICAgPHhzOmtleSBuYW1lPSJwb3J0VHlwZSIgPg0KICAgICAgPHhzOnNlbGVjdG9yIHhwYXRoPSJ3c2RsOnBvcnRUeXBlIiAvPg0KICAgICAgPHhzOmZpZWxkIHhwYXRoPSJAbmFtZSIgLz4NCiAgICA8L3hzOmtleT4NCiAgICA8eHM6a2V5IG5hbWU9ImJpbmRpbmciID4NCiAgICAgIDx4czpzZWxlY3RvciB4cGF0aD0id3NkbDpiaW5kaW5nIiAvPg0KICAgICAgPHhzOmZpZWxkIHhwYXRoPSJAbmFtZSIgLz4NCiAgICA8L3hzOmtleT4NCiAgICA8eHM6a2V5IG5hbWU9InNlcnZpY2UiID4NCiAgICAgIDx4czpzZWxlY3RvciB4cGF0aD0id3NkbDpzZXJ2aWNlIiAvPg0KICAgICAgPHhzOmZpZWxkIHhwYXRoPSJAbmFtZSIgLz4NCiAgICA8L3hzOmtleT4NCiAgICA8eHM6a2V5IG5hbWU9ImltcG9ydCIgPg0KICAgICAgPHhzOnNlbGVjdG9yIHhwYXRoPSJ3c2RsOmltcG9ydCIgLz4NCiAgICAgIDx4czpmaWVsZCB4cGF0aD0iQG5hbWVzcGFjZSIgLz4NCiAgICA8L3hzOmtleT4NCiAgPC94czplbGVtZW50Pg0KDQogIDx4czpncm91cCBuYW1lPSJhbnlUb3BMZXZlbE9wdGlvbmFsRWxlbWVudCIgPg0KICAgIDx4czphbm5vdGF0aW9uPg0KICAgICAgPHhzOmRvY3VtZW50YXRpb24+DQogICAgICBBbnkgdG9wIGxldmVsIG9wdGlvbmFsIGVsZW1lbnQgYWxsb3dlZCB0byBhcHBlYXIgbW9yZSB0aGVuIG9uY2UgLSBhbnkgY2hpbGQgb2YgZGVmaW5pdGlvbnMgZWxlbWVudCBleGNlcHQgd3NkbDp0eXBlcy4gQW55IGV4dGVuc2liaWxpdHkgZWxlbWVudCBpcyBhbGxvd2VkIGluIGFueSBwbGFjZS4NCiAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4NCiAgICA8L3hzOmFubm90YXRpb24+DQogICAgPHhzOmNob2ljZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9ImltcG9ydCIgdHlwZT0id3NkbDp0SW1wb3J0IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0idHlwZXMiIHR5cGU9IndzZGw6dFR5cGVzIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0ibWVzc2FnZSIgIHR5cGU9IndzZGw6dE1lc3NhZ2UiID4NCiAgICAgICAgPHhzOnVuaXF1ZSBuYW1lPSJwYXJ0IiA+DQogICAgICAgICAgPHhzOnNlbGVjdG9yIHhwYXRoPSJ3c2RsOnBhcnQiIC8+DQogICAgICAgICAgPHhzOmZpZWxkIHhwYXRoPSJAbmFtZSIgLz4NCiAgICAgICAgPC94czp1bmlxdWU+DQogICAgICA8L3hzOmVsZW1lbnQ+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJwb3J0VHlwZSIgdHlwZT0id3NkbDp0UG9ydFR5cGUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJiaW5kaW5nIiAgdHlwZT0id3NkbDp0QmluZGluZyIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9InNlcnZpY2UiICB0eXBlPSJ3c2RsOnRTZXJ2aWNlIiA+DQogICAgICAgIDx4czp1bmlxdWUgbmFtZT0icG9ydCIgPg0KICAgICAgICAgIDx4czpzZWxlY3RvciB4cGF0aD0id3NkbDpwb3J0IiAvPg0KICAgICAgICAgIDx4czpmaWVsZCB4cGF0aD0iQG5hbWUiIC8+DQogICAgICAgIDwveHM6dW5pcXVlPg0KCSAgPC94czplbGVtZW50Pg0KICAgIDwveHM6Y2hvaWNlPg0KICA8L3hzOmdyb3VwPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0RGVmaW5pdGlvbnMiID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVEb2N1bWVudGVkIiA+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6Z3JvdXAgcmVmPSJ3c2RsOmFueVRvcExldmVsT3B0aW9uYWxFbGVtZW50IiAgbWluT2NjdXJzPSIwIiAgIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRhcmdldE5hbWVzcGFjZSIgdHlwZT0ieHM6YW55VVJJIiB1c2U9Im9wdGlvbmFsIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOk5DTmFtZSIgdXNlPSJvcHRpb25hbCIgLz4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRJbXBvcnQiID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVBdHRyaWJ1dGVzRG9jdW1lbnRlZCIgPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWVzcGFjZSIgdHlwZT0ieHM6YW55VVJJIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJ4czphbnlVUkkiIHVzZT0icmVxdWlyZWQiIC8+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0VHlwZXMiID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVEb2N1bWVudGVkIiAvPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRNZXNzYWdlIiA+DQogICAgPHhzOmNvbXBsZXhDb250ZW50Pg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ3c2RsOnRFeHRlbnNpYmxlRG9jdW1lbnRlZCIgPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0icGFydCIgdHlwZT0id3NkbDp0UGFydCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJ4czpOQ05hbWUiIHVzZT0icmVxdWlyZWQiIC8+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0UGFydCIgPg0KICAgIDx4czpjb21wbGV4Q29udGVudD4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0id3NkbDp0RXh0ZW5zaWJsZUF0dHJpYnV0ZXNEb2N1bWVudGVkIiA+DQogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6TkNOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVsZW1lbnQiIHR5cGU9InhzOlFOYW1lIiB1c2U9Im9wdGlvbmFsIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUiIHR5cGU9InhzOlFOYW1lIiB1c2U9Im9wdGlvbmFsIiAvPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idFBvcnRUeXBlIiA+DQogICAgPHhzOmNvbXBsZXhDb250ZW50Pg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ3c2RsOnRFeHRlbnNpYmxlQXR0cmlidXRlc0RvY3VtZW50ZWQiID4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Im9wZXJhdGlvbiIgdHlwZT0id3NkbDp0T3BlcmF0aW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOk5DTmFtZSIgdXNlPSJyZXF1aXJlZCIgLz4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRPcGVyYXRpb24iID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVEb2N1bWVudGVkIiA+DQoJICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6Y2hvaWNlPg0KICAgICAgICAgICAgPHhzOmdyb3VwIHJlZj0id3NkbDpyZXF1ZXN0LXJlc3BvbnNlLW9yLW9uZS13YXktb3BlcmF0aW9uIiAvPg0KICAgICAgICAgICAgPHhzOmdyb3VwIHJlZj0id3NkbDpzb2xpY2l0LXJlc3BvbnNlLW9yLW5vdGlmaWNhdGlvbi1vcGVyYXRpb24iIC8+DQogICAgICAgICAgPC94czpjaG9pY2U+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6TkNOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBhcmFtZXRlck9yZGVyIiB0eXBlPSJ4czpOTVRPS0VOUyIgdXNlPSJvcHRpb25hbCIgLz4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmdyb3VwIG5hbWU9InJlcXVlc3QtcmVzcG9uc2Utb3Itb25lLXdheS1vcGVyYXRpb24iID4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJpbnB1dCIgdHlwZT0id3NkbDp0UGFyYW0iIC8+DQoJICA8eHM6c2VxdWVuY2UgbWluT2NjdXJzPScwJyA+DQoJICAgIDx4czplbGVtZW50IG5hbWU9Im91dHB1dCIgdHlwZT0id3NkbDp0UGFyYW0iIC8+DQoJCTx4czplbGVtZW50IG5hbWU9ImZhdWx0IiB0eXBlPSJ3c2RsOnRGYXVsdCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4NCiAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpncm91cD4NCg0KICA8eHM6Z3JvdXAgbmFtZT0ic29saWNpdC1yZXNwb25zZS1vci1ub3RpZmljYXRpb24tb3BlcmF0aW9uIiA+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0ib3V0cHV0IiB0eXBlPSJ3c2RsOnRQYXJhbSIgLz4NCgkgIDx4czpzZXF1ZW5jZSBtaW5PY2N1cnM9JzAnID4NCgkgICAgPHhzOmVsZW1lbnQgbmFtZT0iaW5wdXQiIHR5cGU9IndzZGw6dFBhcmFtIiAvPg0KCQk8eHM6ZWxlbWVudCBuYW1lPSJmYXVsdCIgdHlwZT0id3NkbDp0RmF1bHQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQoJICA8L3hzOnNlcXVlbmNlPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Z3JvdXA+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRQYXJhbSIgPg0KICAgIDx4czpjb21wbGV4Q29udGVudD4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0id3NkbDp0RXh0ZW5zaWJsZUF0dHJpYnV0ZXNEb2N1bWVudGVkIiA+DQogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6TkNOYW1lIiB1c2U9Im9wdGlvbmFsIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1lc3NhZ2UiIHR5cGU9InhzOlFOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idEZhdWx0IiA+DQogICAgPHhzOmNvbXBsZXhDb250ZW50Pg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ3c2RsOnRFeHRlbnNpYmxlQXR0cmlidXRlc0RvY3VtZW50ZWQiID4NCiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJ4czpOQ05hbWUiICB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1lc3NhZ2UiIHR5cGU9InhzOlFOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idEJpbmRpbmciID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVEb2N1bWVudGVkIiA+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJvcGVyYXRpb24iIHR5cGU9IndzZGw6dEJpbmRpbmdPcGVyYXRpb24iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6TkNOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUiIHR5cGU9InhzOlFOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idEJpbmRpbmdPcGVyYXRpb25NZXNzYWdlIiA+DQogICAgPHhzOmNvbXBsZXhDb250ZW50Pg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ3c2RsOnRFeHRlbnNpYmxlRG9jdW1lbnRlZCIgPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOk5DTmFtZSIgdXNlPSJvcHRpb25hbCIgLz4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRCaW5kaW5nT3BlcmF0aW9uRmF1bHQiID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVEb2N1bWVudGVkIiA+DQogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6TkNOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idEJpbmRpbmdPcGVyYXRpb24iID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVEb2N1bWVudGVkIiA+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJpbnB1dCIgdHlwZT0id3NkbDp0QmluZGluZ09wZXJhdGlvbk1lc3NhZ2UiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJvdXRwdXQiIHR5cGU9IndzZGw6dEJpbmRpbmdPcGVyYXRpb25NZXNzYWdlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iZmF1bHQiIHR5cGU9IndzZGw6dEJpbmRpbmdPcGVyYXRpb25GYXVsdCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJ4czpOQ05hbWUiIHVzZT0icmVxdWlyZWQiIC8+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0U2VydmljZSIgPg0KICAgIDx4czpjb21wbGV4Q29udGVudD4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0id3NkbDp0RXh0ZW5zaWJsZURvY3VtZW50ZWQiID4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9InBvcnQiIHR5cGU9IndzZGw6dFBvcnQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6TkNOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idFBvcnQiID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVEb2N1bWVudGVkIiA+DQogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6TkNOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJpbmRpbmciIHR5cGU9InhzOlFOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6YXR0cmlidXRlIG5hbWU9ImFycmF5VHlwZSIgdHlwZT0ieHM6c3RyaW5nIiAvPg0KICA8eHM6YXR0cmlidXRlIG5hbWU9InJlcXVpcmVkIiB0eXBlPSJ4czpib29sZWFuIiAvPg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idEV4dGVuc2liaWxpdHlFbGVtZW50IiBhYnN0cmFjdD0idHJ1ZSIgPg0KICAgIDx4czphdHRyaWJ1dGUgcmVmPSJ3c2RsOnJlcXVpcmVkIiB1c2U9Im9wdGlvbmFsIiAvPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KDQo8L3hzOnNjaGVtYT4=
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+CiAgICA8eHM6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIi8+CgogICAgPHhzOmluY2x1ZGUgc2NoZW1hTG9jYXRpb249IkRhdGFiYXNlLnhzZCIvPgoKICAgIDx4czplbGVtZW50IG5hbWU9Im90cnNfcGFja2FnZSI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Ik5hbWUiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlZlcnNpb24iLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iRnJhbWV3b3JrIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICAgICAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlBhY2thZ2VSZXF1aXJlZCIvPgogICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iTW9kdWxlUmVxdWlyZWQiLz4KICAgICAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJWZW5kb3IiLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iVVJMIi8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkxpY2Vuc2UiLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iRGVzY3JpcHRpb24iIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgoKICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iUGFja2FnZUlzVmlzaWJsZSIgbWluT2NjdXJzPSIwIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJQYWNrYWdlSXNEb3dubG9hZGFibGUiIG1pbk9jY3Vycz0iMCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iUGFja2FnZUlzQnVpbGRhYmxlIiBtaW5PY2N1cnM9IjAiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlBhY2thZ2VJc1JlbW92YWJsZSIgbWluT2NjdXJzPSIwIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJQYWNrYWdlQWxsb3dEaXJlY3RVcGRhdGUiIG1pbk9jY3Vycz0iMCIgLz4KCiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkNoYW5nZUxvZyIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iT1MiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkZpbGVsaXN0Ii8+CiAgICAgICAgICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iSW50cm9JbnN0YWxsIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJJbnRyb1VuaW5zdGFsbCIvPgogICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iSW50cm9SZWluc3RhbGwiLz4KICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkludHJvVXBncmFkZSIvPgogICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iQ29kZUluc3RhbGwiLz4KICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkNvZGVVcGdyYWRlIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJDb2RlVW5pbnN0YWxsIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJDb2RlUmVpbnN0YWxsIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJEYXRhYmFzZUluc3RhbGwiLz4KICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkRhdGFiYXNlVXBncmFkZSIvPgogICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iRGF0YWJhc2VSZWluc3RhbGwiLz4KICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkRhdGFiYXNlVW5pbnN0YWxsIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJQYWNrYWdlTWVyZ2UiLz4KICAgICAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZlcnNpb24iIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJDaGFuZ2VMb2ciPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJEYXRlIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVmVyc2lvbiIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJEZXNjcmlwdGlvbiI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2ltcGxlQ29udGVudD4KICAgICAgICAgICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IkxhbmciIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJGb3JtYXQiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUcmFuc2xhdGFibGUiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgICAgICAgPC94czpzaW1wbGVDb250ZW50PgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iUGFja2FnZUlzVmlzaWJsZSI+CiAgICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSIwIi8+CiAgICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IjEiLz4KICAgICAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iUGFja2FnZUlzRG93bmxvYWRhYmxlIj4KICAgICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IjAiLz4KICAgICAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iMSIvPgogICAgICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJQYWNrYWdlSXNCdWlsZGFibGUiPgogICAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iMCIvPgogICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSIxIi8+CiAgICAgICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IlBhY2thZ2VJc1JlbW92YWJsZSI+CiAgICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSIwIi8+CiAgICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IjEiLz4KICAgICAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iUGFja2FnZUFsbG93RGlyZWN0VXBkYXRlIj4KICAgICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IjAiLz4KICAgICAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iMSIvPgogICAgICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJGaWxlbGlzdCI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkZpbGUiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iRmlsZSI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2ltcGxlQ29udGVudD4KICAgICAgICAgICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IkxvY2F0aW9uIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iUGVybWlzc2lvbiIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IkVuY29kZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJQYWNrYWdlUmVxdWlyZWQiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJWZXJzaW9uIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9Ik1vZHVsZVJlcXVpcmVkIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVmVyc2lvbiIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJJbnRyb0luc3RhbGwiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUeXBlIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTGFuZyIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlRpdGxlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHJhbnNsYXRhYmxlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iRm9ybWF0IiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgogICAgPHhzOmVsZW1lbnQgbmFtZT0iSW50cm9Vbmluc3RhbGwiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUeXBlIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTGFuZyIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlRpdGxlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHJhbnNsYXRhYmxlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iRm9ybWF0IiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgogICAgPHhzOmVsZW1lbnQgbmFtZT0iSW50cm9SZWluc3RhbGwiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUeXBlIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTGFuZyIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlRpdGxlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHJhbnNsYXRhYmxlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iRm9ybWF0IiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgogICAgPHhzOmVsZW1lbnQgbmFtZT0iSW50cm9VcGdyYWRlIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IkxhbmciIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUaXRsZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlRyYW5zbGF0YWJsZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlZlcnNpb24iIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJGb3JtYXQiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgICAgICAgPC94czpzaW1wbGVDb250ZW50PgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29kZUluc3RhbGwiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUeXBlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iSWZQYWNrYWdlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iSWZOb3RQYWNrYWdlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgogICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29kZVVuaW5zdGFsbCI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2ltcGxlQ29udGVudD4KICAgICAgICAgICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlR5cGUiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJJZlBhY2thZ2UiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJJZk5vdFBhY2thZ2UiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgICAgICAgPC94czpzaW1wbGVDb250ZW50PgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CiAgICA8eHM6ZWxlbWVudCBuYW1lPSJDb2RlUmVpbnN0YWxsIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IklmUGFja2FnZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IklmTm90UGFja2FnZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KICAgIDx4czplbGVtZW50IG5hbWU9IkNvZGVVcGdyYWRlIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlZlcnNpb24iIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJJZlBhY2thZ2UiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJJZk5vdFBhY2thZ2UiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgICAgICAgPC94czpzaW1wbGVDb250ZW50PgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iUGFja2FnZU1lcmdlIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJDb2RlVXBncmFkZSIvPgogICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iRGF0YWJhc2VVcGdyYWRlIi8+CiAgICAgICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJOYW1lIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlRhcmdldFZlcnNpb24iIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJOYW1lIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgPHhzOmVsZW1lbnQgbmFtZT0iVmVuZG9yIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgPHhzOmVsZW1lbnQgbmFtZT0iVVJMIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgPHhzOmVsZW1lbnQgbmFtZT0iRnJhbWV3b3JrIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJNaW5pbXVtIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTWF4aW11bSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KICAgIDx4czplbGVtZW50IG5hbWU9IlZlcnNpb24iIHR5cGU9InhzOnRva2VuIi8+CiAgICA8eHM6ZWxlbWVudCBuYW1lPSJMaWNlbnNlIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgPHhzOmVsZW1lbnQgbmFtZT0iT1MiIHR5cGU9InhzOnRva2VuIi8+CjwveHM6c2NoZW1hPgo=
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+CiAgICA8eHM6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIi8+CgogICAgPHhzOmluY2x1ZGUgc2NoZW1hTG9jYXRpb249IkRhdGFiYXNlX2JlZm9yZV85LnhzZCIvPgoKICAgIDx4czplbGVtZW50IG5hbWU9Im90cnNfcGFja2FnZSI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Ik5hbWUiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlZlcnNpb24iLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iRnJhbWV3b3JrIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICAgICAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlBhY2thZ2VSZXF1aXJlZCIvPgogICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iTW9kdWxlUmVxdWlyZWQiLz4KICAgICAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJWZW5kb3IiLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iVVJMIi8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkxpY2Vuc2UiLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iRGVzY3JpcHRpb24iIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgoKICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iUGFja2FnZUlzVmlzaWJsZSIgbWluT2NjdXJzPSIwIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJQYWNrYWdlSXNEb3dubG9hZGFibGUiIG1pbk9jY3Vycz0iMCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iUGFja2FnZUlzQnVpbGRhYmxlIiBtaW5PY2N1cnM9IjAiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlBhY2thZ2VJc1JlbW92YWJsZSIgbWluT2NjdXJzPSIwIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJQYWNrYWdlQWxsb3dEaXJlY3RVcGRhdGUiIG1pbk9jY3Vycz0iMCIgLz4KCiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkNoYW5nZUxvZyIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iT1MiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkZpbGVsaXN0Ii8+CiAgICAgICAgICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iSW50cm9JbnN0YWxsIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJJbnRyb1VuaW5zdGFsbCIvPgogICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iSW50cm9SZWluc3RhbGwiLz4KICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkludHJvVXBncmFkZSIvPgogICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iQ29kZUluc3RhbGwiLz4KICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkNvZGVVcGdyYWRlIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJDb2RlVW5pbnN0YWxsIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJDb2RlUmVpbnN0YWxsIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJEYXRhYmFzZUluc3RhbGwiLz4KICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkRhdGFiYXNlVXBncmFkZSIvPgogICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iRGF0YWJhc2VSZWluc3RhbGwiLz4KICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkRhdGFiYXNlVW5pbnN0YWxsIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJQYWNrYWdlTWVyZ2UiLz4KICAgICAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZlcnNpb24iIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJDaGFuZ2VMb2ciPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJEYXRlIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVmVyc2lvbiIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJEZXNjcmlwdGlvbiI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2ltcGxlQ29udGVudD4KICAgICAgICAgICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IkxhbmciIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJGb3JtYXQiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUcmFuc2xhdGFibGUiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgICAgICAgPC94czpzaW1wbGVDb250ZW50PgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iUGFja2FnZUlzVmlzaWJsZSI+CiAgICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSIwIi8+CiAgICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IjEiLz4KICAgICAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iUGFja2FnZUlzRG93bmxvYWRhYmxlIj4KICAgICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IjAiLz4KICAgICAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iMSIvPgogICAgICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJQYWNrYWdlSXNCdWlsZGFibGUiPgogICAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iMCIvPgogICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSIxIi8+CiAgICAgICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IlBhY2thZ2VJc1JlbW92YWJsZSI+CiAgICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSIwIi8+CiAgICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IjEiLz4KICAgICAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iUGFja2FnZUFsbG93RGlyZWN0VXBkYXRlIj4KICAgICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IjAiLz4KICAgICAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iMSIvPgogICAgICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJGaWxlbGlzdCI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkZpbGUiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iRmlsZSI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2ltcGxlQ29udGVudD4KICAgICAgICAgICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IkxvY2F0aW9uIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iUGVybWlzc2lvbiIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IkVuY29kZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJQYWNrYWdlUmVxdWlyZWQiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJWZXJzaW9uIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9Ik1vZHVsZVJlcXVpcmVkIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVmVyc2lvbiIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJJbnRyb0luc3RhbGwiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUeXBlIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTGFuZyIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlRpdGxlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHJhbnNsYXRhYmxlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iRm9ybWF0IiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgogICAgPHhzOmVsZW1lbnQgbmFtZT0iSW50cm9Vbmluc3RhbGwiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUeXBlIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTGFuZyIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlRpdGxlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHJhbnNsYXRhYmxlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iRm9ybWF0IiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgogICAgPHhzOmVsZW1lbnQgbmFtZT0iSW50cm9SZWluc3RhbGwiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUeXBlIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTGFuZyIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlRpdGxlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHJhbnNsYXRhYmxlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iRm9ybWF0IiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgogICAgPHhzOmVsZW1lbnQgbmFtZT0iSW50cm9VcGdyYWRlIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IkxhbmciIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUaXRsZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlRyYW5zbGF0YWJsZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlZlcnNpb24iIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJGb3JtYXQiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgICAgICAgPC94czpzaW1wbGVDb250ZW50PgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29kZUluc3RhbGwiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUeXBlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iSWZQYWNrYWdlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iSWZOb3RQYWNrYWdlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgogICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29kZVVuaW5zdGFsbCI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2ltcGxlQ29udGVudD4KICAgICAgICAgICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlR5cGUiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJJZlBhY2thZ2UiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJJZk5vdFBhY2thZ2UiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgICAgICAgPC94czpzaW1wbGVDb250ZW50PgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CiAgICA8eHM6ZWxlbWVudCBuYW1lPSJDb2RlUmVpbnN0YWxsIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IklmUGFja2FnZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IklmTm90UGFja2FnZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KICAgIDx4czplbGVtZW50IG5hbWU9IkNvZGVVcGdyYWRlIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlZlcnNpb24iIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJJZlBhY2thZ2UiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJJZk5vdFBhY2thZ2UiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgICAgICAgPC94czpzaW1wbGVDb250ZW50PgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iUGFja2FnZU1lcmdlIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJDb2RlVXBncmFkZSIvPgogICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iRGF0YWJhc2VVcGdyYWRlIi8+CiAgICAgICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJOYW1lIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlRhcmdldFZlcnNpb24iIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJOYW1lIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgPHhzOmVsZW1lbnQgbmFtZT0iVmVuZG9yIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgPHhzOmVsZW1lbnQgbmFtZT0iVVJMIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgPHhzOmVsZW1lbnQgbmFtZT0iRnJhbWV3b3JrIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJNaW5pbXVtIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTWF4aW11bSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KICAgIDx4czplbGVtZW50IG5hbWU9IlZlcnNpb24iIHR5cGU9InhzOnRva2VuIi8+CiAgICA8eHM6ZWxlbWVudCBuYW1lPSJMaWNlbnNlIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgPHhzOmVsZW1lbnQgbmFtZT0iT1MiIHR5cGU9InhzOnRva2VuIi8+CjwveHM6c2NoZW1hPgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6VFQ6OlNjcmlwdFVzYWdlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CiAgICByZXR1cm4gaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA2LCAwICk7CgogICAgbXkgJEVycm9yTWVzc2FnZTsKICAgIG15ICRDb3VudGVyOwoKICAgIGZvciBteSAkTGluZSAoIHNwbGl0KCAvXG4vLCAkQ29kZSApICkgewogICAgICAgICRDb3VudGVyKys7CiAgICAgICAgaWYgKCAkTGluZSA9fiBteyA8c2NyaXB0IH14bXMgKSB7CiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UKICAgICAgICAgICAgICAgIC49ICJFUlJPUjogRm91bmQgSmF2YVNjcmlwdCB1c2FnZSBpbiBsaW5lKCAkQ291bnRlciApOiAkTGluZVxuIjsKICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiUGxlYXNlIHVzZSBKYXZhU2NyaXB0IGZpbGVzIGluc3RlYWQuXG4iOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCIkRXJyb3JNZXNzYWdlIik7CiAgICB9Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6VFQ6OlRyYW5zbGF0aW9uRmlsdGVyOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CiAgICByZXR1cm4gaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA2LCAwICk7CgogICAgbXkgJEVycm9yTWVzc2FnZTsKICAgIG15ICRDb3VudGVyOwoKICAgIGZvciBteSAkTGluZSAoIHNwbGl0KCAvXG4vLCAkQ29kZSApICkgewogICAgICAgICRDb3VudGVyKys7CgogICAgICAgICMgUHJvY2VzcyBsaW5lcyB0aGF0IGRlYWwgd2l0aCB0cmFuc2xhdGlvbiBvdXRwdXQgaW4gZnVuY3Rpb24gZm9ybS4KICAgICAgICB3aGlsZSAoICRMaW5lID1+IG17IFxbJSBccyogXGJUcmFuc2xhdGVcKChbXigpXSp8XChbXigpXSpcKSkqXCk/ICg/PEZpbHRlcj4uKj8pICVcXSB9Z3N4bSApIHsKCiAgICAgICAgICAgICMgQ2hlY2sgaWYgb3V0cHV0IGlzIG5vdCBmaWx0ZXJlZC4KICAgICAgICAgICAgaWYgKCAkK3tGaWx0ZXJ9ICF+IG17IFxzKiAoPzpGSUxURVJ8XHwpIFxzKiAoPzpodG1sfEpTT04pIH1zeG0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgLj0gIkVSUk9SOiBGb3VuZCB1bmZpbHRlcmVkIHRyYW5zbGF0aW9uIHN0cmluZyBpbiBsaW5lKCAkQ291bnRlciApOiAkTGluZVxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBQcm9jZXNzIGxpbmVzIHRoYXQgZGVhbCB3aXRoIHRyYW5zbGF0aW9uIG91dHB1dCBpbiBmaWx0ZXIgZm9ybS4KICAgICAgICB3aGlsZSAoICRMaW5lID1+IG17ICg/OkZJTFRFUnxcfCkgXHMqIFxiVHJhbnNsYXRlICg/PEZpbHRlcj4uKj8pICVcXSB9Z3N4bSApIHsKCiAgICAgICAgICAgICMgQ2hlY2sgaWYgb3V0cHV0IGlzIG5vdCBmaWx0ZXJlZC4KICAgICAgICAgICAgaWYgKCAkK3tGaWx0ZXJ9ICF+IG17IFxzKiAoPzpGSUxURVJ8XHwpIFxzKiAoPzpodG1sfEpTT04pIH1zeG0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgLj0gIkVSUk9SOiBGb3VuZCB1bmZpbHRlcmVkIHRyYW5zbGF0aW9uIHN0cmluZyBpbiBsaW5lKCAkQ291bnRlciApOiAkTGluZVxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKAogICAgICAgICAgICAiJHtFcnJvck1lc3NhZ2V9UGxlYXNlIG1ha2Ugc3VyZSB0byBwcm9jZXNzIHRyYW5zbGF0ZWQgc3RyaW5ncyB3aXRoIGh0bWwgb3IgSlNPTiBmaWx0ZXIuXG4iCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6V2hpdGVzcGFjZTo6Rm91clNwYWNlczsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpCYXNlKTsKCnVzZSBYTUw6OlBhcnNlcjsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgIG15ICRDb3VudGVyOwogICAgbXkgJEVycm9yTWVzc2FnZTsKICAgIG15ICRJc1RleHRBcmVhID0gMDsgICAgIyBpbiBjb25maWcgZmlsZXMKICAgIG15ICRJc1NPUE1EYXRhID0gMDsgICAgIyBkYXRhYmFzZSBlbnRyaWVzIG9mIHNvcG0gZmlsZXMKCiAgICAjCiAgICAjIENoZWNrIGZvciBzdGVwcyBvZiBmb3VyIHNwYWNlcwogICAgIwogICAgTElORToKICAgIGZvciBteSAkTGluZSAoIHNwbGl0KCAvXG4vLCAkQ29kZSApICkgewoKICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAjIHRleHRhcmVhcyBpbiBjb25maWcgZmlsZXMKICAgICAgICBpZiAoICRMaW5lID1+IC88VGV4dEFyZWE+LyApIHsKICAgICAgICAgICAgJElzVGV4dEFyZWEgPSAxOwogICAgICAgIH0KICAgICAgICBpZiAoICRMaW5lID1+IC88XC9UZXh0QXJlYT4vICkgewogICAgICAgICAgICAkSXNUZXh0QXJlYSA9IDA7CiAgICAgICAgfQoKICAgICAgICAjIGRhdGFiYXNlIGVudHJpZXMgb2Ygc29wbSBmaWxlcwogICAgICAgIGlmICggJExpbmUgPX4gbXsgPERhdGEgXHN9c214ICkgewogICAgICAgICAgICAkSXNTT1BNRGF0YSA9IDE7CiAgICAgICAgfQogICAgICAgIGlmICggJExpbmUgPX4gbXsgPCBcLyBEYXRhID4gfXNteCApIHsKICAgICAgICAgICAgJElzU09QTURhdGEgPSAwOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkTGluZSA9fiAvXiggKykvICkgewogICAgICAgICAgICBteSAkU3BhY2VTdHJpbmcgPSAkMTsKICAgICAgICAgICAgbXkgJExlbmd0aCAgICAgID0gbGVuZ3RoICRTcGFjZVN0cmluZzsKCiAgICAgICAgICAgIGlmICggJExlbmd0aCAlIDQgJiYgISRJc1RleHRBcmVhICYmICEkSXNTT1BNRGF0YSApIHsKICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIkxpbmUgJENvdW50ZXI6ICRMaW5lXG4iOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7ClNwYWNlcyBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSBzaG91bGQgYmUgaW4gc3RlcHMgb2YgZm91ciEKJEVycm9yTWVzc2FnZQpFT0YKICAgIH0KfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6V2hpdGVzcGFjZTo6VGFiczsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpCYXNlKTsKCnVzZSBYTUw6OlBhcnNlcjsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgIG15ICRDb3VudGVyID0gMTsKICAgIG15ICRFcnJvck1lc3NhZ2U7CgogICAgIwogICAgIyBDaGVjayBmb3Igc3RyYXkgdGFicwogICAgIwogICAgTElORToKICAgIGZvciBteSAkTGluZSAoIHNwbGl0KCAvXG4vLCAkQ29kZSApICkgewoKICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICBpZiAoICRMaW5lID1+IG0vXHQvICkgewogICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICB9CgogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7ClBsZWFzZSBzdWJzdGl0dXRlIGFsbCB0YWJ1bGF0b3JzIHdpdGggZm91ciBzcGFjZXMuCiRFcnJvck1lc3NhZ2UKRU9GCiAgICB9Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6V2hpdGVzcGFjZTo6VHJhaWxpbmdXaGl0ZXNwYWNlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UpOwoKc3ViIHRyYW5zZm9ybV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgICMgUmVtb3ZlIHRyYWlsaW5nIHNwYWNlcyBhdCBlbmQgb2YgbGluZXMKICAgICRDb2RlID1+IHMvXiguKj8pWyBdK1xuLyQxXG4veG1zZzsKCiAgICAjIFJlbW92ZSBlbXB0eSB0cmFpbGluZyBsaW5lcwogICAgJENvZGUgPX4gcy9cbihcc3xcbikrXHovXG4veG1zZzsKCiAgICByZXR1cm4gJENvZGU7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWdEZXNjcmlwdGlvbjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpCYXNlKTsKCnVzZSBYTUw6OlBhcnNlcjsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggMiwgNCApOwoKICAgIG15ICggJEVycm9yTWVzc2FnZSwgJENvdW50ZXIsICROYXZCYXIgKTsKCiAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCAvXG4vLCAkQ29kZSApIHsKICAgICAgICAkQ291bnRlcisrOwogICAgICAgIGlmICggJExpbmUgPX4gLzxOYXZCYXIvICkgewogICAgICAgICAgICAkTmF2QmFyID0gMTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkTGluZSA9fiAvPFwvTmF2QmFyLyApIHsKICAgICAgICAgICAgJE5hdkJhciA9IDA7CiAgICAgICAgfQoKICAgICAgICBpZiAoICEkTmF2QmFyICYmICRMaW5lID1+IC88RGVzY3JpcHRpb24uKz8+KC4pLio/KC4pPFwvRGVzY3JpcHRpb24+LyApIHsKICAgICAgICAgICAgaWYgKCAkMiBuZSAnLicgJiYgJDIgbmUgJz8nICYmICQyIG5lICchJyApIHsKICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIkxpbmUgJENvdW50ZXI6ICRMaW5lXG4iOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJDEgIX4gL1tBLVrDi8Ocw5YiXS8gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwpQbGVhc2UgbWFrZSBjb21wbGV0ZSBzZW50ZW5jZXMgaW4gPERlc2NyaXB0aW9uPiB0YWdzOiBzdGFydCB3aXRoIGEgY2FwaXRhbCBsZXR0ZXIgYW5kIGZpbmlzaCB3aXRoIGEgZG90LgokRXJyb3JNZXNzYWdlCkVPRgogICAgfQp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWdTeW50YXg7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6QmFzZSk7Cgp1c2UgWE1MOjpQYXJzZXI7CgojIFRoaXMgcGx1Z2luIGRvZXMgbm90IHRyYW5zZm9ybSBhbnkgZmlsZXMuIEZvbGxvd2luZyBtZXRob2QgaXMgaW1wbGVtZW50ZWQgb25seSBiZWNhdXNlIGl0J3MgZXhlY3V0ZWQgYmVmb3JlCiMgICB2YWxpZGF0ZV9zb3VyY2UgYW5kIGNvbnRhaW5zIGZpbGVuYW1lIG9mIHRoZSBmaWxlLiBGaWxlbmFtZSBpcyBzYXZlZCBpbiAkU2VsZiBmb3IgbGF0ZXIgdXNlLgpzdWIgdHJhbnNmb3JtX2ZpbGUgewogICAgbXkgKCAkU2VsZiwgJEZpbGVuYW1lICkgPSBAXzsKCiAgICAjIFN0b3JlIGZpbGVuYW1lIGZvciBsYXRlciB1c2UuCiAgICAkU2VsZi0+e0ZpbGVuYW1lfSA9ICRGaWxlbmFtZTsKCiAgICByZXR1cm47Cn0KCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggMiwgNCApOwoKICAgIG15ICRFcnJvck1lc3NhZ2U7CiAgICBteSAkQ291bnRlcjsKCiAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCAvXG4vLCAkQ29kZSApIHsKICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAjIENoZWNrIGZpcnN0IFhNTCBsaW5lCiAgICAgICAgaWYgKCAkQ291bnRlciA9PSAxICkgewogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkTGluZSAgICAhfiAvXjxcP3htbC4rXD8+LwogICAgICAgICAgICAgICAgfHwgJExpbmUgIX4gL3ZlcnNpb249WyInJ10xLlswMV1bIiddLwogICAgICAgICAgICAgICAgfHwgJExpbmUgIX4gL2VuY29kaW5nPVsiJ10oPzppc28tODg1OS0xfHV0Zi04KVsiJ10vaQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgLj0gIlRoZSBmaXJzdCBsaW5lIG9mIHRoZSBmaWxlIHNob3VsZCBoYXZlIHRoZSBjb250ZW50IDw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cInV0Zi04XCIgPz4uXG4iOwogICAgICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiTGluZSAkQ291bnRlcjogJExpbmVcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgVmFsaWRhdGUgb3Ryc19jb25maWcgdGFnCiAgICAgICAgaWYgKCAkTGluZSA9fiAvXjxvdHJzX2NvbmZpZy8gKSB7CgogICAgICAgICAgICBpZiAoICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggNiwgMCApICkgewogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRMaW5lICF+IC9pbml0PSIoRnJhbWV3b3JrfEFwcGxpY2F0aW9ufENvbmZpZ3xDaGFuZ2VzKSIvCiAgICAgICAgICAgICAgICAgICAgfHwgJExpbmUgIX4gL3ZlcnNpb249IjEuMCIvCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UKICAgICAgICAgICAgICAgICAgICAgICAgLj0gIlRoZSA8b3Ryc19jb25maWc+LXRhZyBoYXMgbWlzc2luZyBvciBpbmNvcnJlY3QgYXR0cmlidXRlcy4gRXhhbXBsZUxpbmU6IDxvdHJzX2NvbmZpZyB2ZXJzaW9uPVwiMS4wXCIgaW5pdD1cIkFwcGxpY2F0aW9uXCI+XG4iOwogICAgICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIkxpbmUgJENvdW50ZXI6ICRMaW5lXG4iOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbXkgJFZlcnNpb24gPSAnMi4wJzsKCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJExpbmUgIX4gL2luaXQ9IihGcmFtZXdvcmt8QXBwbGljYXRpb258Q29uZmlnfENoYW5nZXMpIi8KICAgICAgICAgICAgICAgICAgICB8fCAkTGluZSAhfiAvdmVyc2lvbj0iJFZlcnNpb24iLwogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgICAgIC49ICJUaGUgPG90cnNfY29uZmlnPi10YWcgaGFzIG1pc3Npbmcgb3IgaW5jb3JyZWN0IGF0dHJpYnV0ZXMuIEV4YW1wbGVMaW5lOiA8b3Ryc19jb25maWcgdmVyc2lvbj1cIjIuMFwiIGluaXQ9XCJBcHBsaWNhdGlvblwiPlxuIjsKICAgICAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCIkRXJyb3JNZXNzYWdlIik7CiAgICB9Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CiAgICByZXR1cm4gICAgICAgaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA2LCAwICk7CgogICAgbXkgKCAkQ291bnRlciwgJEVycm9yTWVzc2FnZSApOwoKICAgIG15ICRDdXJyZW50U2V0dGluZ05hbWU7CgogICAgTElORToKICAgIGZvciBteSAkTGluZSAoIHNwbGl0IC9cbi8sICRDb2RlICkgewogICAgICAgICRDb3VudGVyKys7CgogICAgICAgIGlmICggJExpbmUgPX4gbXs8U2V0dGluZ1xzK05hbWU9IiguKj8pIn1zbXggKSB7CiAgICAgICAgICAgICRDdXJyZW50U2V0dGluZ05hbWUgPSAkMTsKICAgICAgICB9CiAgICAgICAgbXkgKCROYXZpZ2F0aW9uQ29udGVudCkgPSAkTGluZSA9fiBtezxOYXZpZ2F0aW9uPiguKj8pPC9OYXZpZ2F0aW9uPn1zbXg7CgogICAgICAgIG5leHQgTElORSBpZiAhJE5hdmlnYXRpb25Db250ZW50OwoKICAgICAgICBteSBAUnVsZXMgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgPT4gJ1ZhbGlkIHRvcGxldmVsIGVudHJpZXMnLAogICAgICAgICAgICAgICAgTWF0Y2hTZXR0aW5nTmFtZSAgICAgICA9PiBxcnsuKn0sCiAgICAgICAgICAgICAgICBNYXRjaE5hdmlnYXRpb25WYWx1ZSAgID0+IHFyey4qfSwKICAgICAgICAgICAgICAgIFJlcXVpcmVOYXZpZ2F0aW9uTWF0Y2ggPT4gcXJ7XihDbG91ZFNlcnZpY2V8Q29yZXxEYWVtb258R2VuZXJpY0ludGVyZmFjZXxGcm9udGVuZHxXZWJBcHApKDo6fCQpfSwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICdJbnZhbGlkIHRvcCBsZXZlbCBncm91cCBmb3VuZCAob25seSBDbG91ZFNlcnZpY2V8Q29yZXxEYWVtb258R2VuZXJpY0ludGVyZmFjZXxGcm9udGVuZHxXZWJBcHAgYXJlIGFsbG93ZWQpLicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgPT4gJ0V2ZW50IGhhbmRsZXJzJywKICAgICAgICAgICAgICAgIE1hdGNoU2V0dGluZ05hbWUgICAgICAgPT4gcXJ7OjpFdmVudE1vZHVsZX0sCiAgICAgICAgICAgICAgICBNYXRjaE5hdmlnYXRpb25WYWx1ZSAgID0+IHFyey4qfSwKICAgICAgICAgICAgICAgIFJlcXVpcmVOYXZpZ2F0aW9uTWF0Y2ggPT4gcXJ7XkNvcmU6OkV2ZW50Ojp9LAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlICAgICAgICAgICA9PiAiRXZlbnQgaGFuZGxlciByZWdpc3RyYXRpb25zIHNob3VsZCBiZSBncm91cGVkIGluICdDb3JlOjpFdmVudDo6Ki4iLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAnVmFsaWQgRnJvbnRlbmQgc3ViZ3JvdXBzJywKICAgICAgICAgICAgICAgIE1hdGNoU2V0dGluZ05hbWUgICAgID0+IHFyey4qfSwKICAgICAgICAgICAgICAgIE1hdGNoTmF2aWdhdGlvblZhbHVlID0+IHFye15Gcm9udGVuZH0sICAgICAgICAgICAgICAgICMgbm8gZW50cmllcyBhbGxvd2VkIGluICJGcm9udGVuZCIgZGlyZWN0bHkKICAgICAgICAgICAgICAgIFJlcXVpcmVOYXZpZ2F0aW9uTWF0Y2ggPT4gcXJ7XkZyb250ZW5kOjooQWRtaW58QWdlbnR8QmFzZXxDdXN0b21lcnxQdWJsaWN8RXh0ZXJuYWwpKDo6fCQpfSwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICdJbnZhbGlkIHRvcCBGcm9udGVuZCBzdWJncm91cCBmb3VuZCAob25seSBBZG1pbnxBZ2VudHxCYXNlfEN1c3RvbWVyfFB1YmxpY3xFeHRlcm5hbCBhcmUgYWxsb3dlZCkuJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJ1ZhbGlkIEZyb250ZW5kIHN1Ymdyb3VwcyAoT1RSUyA3KyknLAogICAgICAgICAgICAgICAgTWF0Y2hTZXR0aW5nTmFtZSAgICAgPT4gcXJ7Lip9LAogICAgICAgICAgICAgICAgTWF0Y2hOYXZpZ2F0aW9uVmFsdWUgPT4gcXJ7XkZyb250ZW5kfSwgICAgICAgICAgICAgICAgICAgICAgICMgbm8gZW50cmllcyBhbGxvd2VkIGluICJGcm9udGVuZCIgZGlyZWN0bHkKICAgICAgICAgICAgICAgIFJlcXVpcmVOYXZpZ2F0aW9uTWF0Y2ggICAgICAgICAgPT4gcXJ7XkZyb250ZW5kOjooQWRtaW58QWdlbnR8QmFzZXxFeHRlcm5hbCkoOjp8JCl9LAogICAgICAgICAgICAgICAgU2tpcEZvckZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiA9PiBbIDcsIDAgXSwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICdJbnZhbGlkIHRvcCBGcm9udGVuZCBzdWJncm91cCBmb3VuZCAob25seSBBZG1pbnxBZ2VudHxCYXNlfEV4dGVybmFsIGFyZSBhbGxvd2VkKS4nLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdWYWxpZCBXZWJBcHAgc3ViZ3JvdXBzIChPVFJTIDcrKScsCiAgICAgICAgICAgICAgICBNYXRjaFNldHRpbmdOYW1lICAgICAgICAgICAgICAgID0+IHFyey4qfSwKICAgICAgICAgICAgICAgIE1hdGNoTmF2aWdhdGlvblZhbHVlICAgICAgICAgICAgPT4gcXJ7XldlYkFwcDo6fSwgICAgICAgICAgICAgICAgICAgICAgICAjIEFsbG93IHRvcGxldmVsIGVudHJpZXMKICAgICAgICAgICAgICAgIFJlcXVpcmVOYXZpZ2F0aW9uTWF0Y2ggICAgICAgICAgPT4gcXJ7XldlYkFwcDo6KEFQSXxBUElDbGllbnQpKDo6fCQpfSwKICAgICAgICAgICAgICAgIFNraXBGb3JGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4gPT4gWyA3LCAwIF0sCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAnSW52YWxpZCB0b3AgV2ViQXBwIHN1Ymdyb3VwIGZvdW5kIChvbmx5IEFQSXxBUElDbGllbnQgaXMgYWxsb3dlZCkuJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICA9PiAnTWFpbiBMb2FkZXIgY29uZmlnJywKICAgICAgICAgICAgICAgIE1hdGNoU2V0dGluZ05hbWUgICAgICAgPT4gcXJ7XkxvYWRlcjo6KEFnZW50fEN1c3RvbWVyfEVuYWJsZWQpfSwKICAgICAgICAgICAgICAgIE1hdGNoTmF2aWdhdGlvblZhbHVlICAgPT4gcXJ7Lip9LAogICAgICAgICAgICAgICAgUmVxdWlyZU5hdmlnYXRpb25NYXRjaCA9PiBxcnteRnJvbnRlbmQ6OkJhc2U6OkxvYWRlciR9LAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlICAgICAgICAgICA9PiAiTWFpbiBMb2FkZXIgc2V0dGluZ3Mgc2hvdWxkIGJlIGdyb3VwZWQgaW4gJ0Zyb250ZW5kOjpCYXNlOjpMb2FkZXInLiIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgPT4gJ0xvYWRlciBjb25maWcgZm9yIEFkbWluIGludGVyZmFjZScsCiAgICAgICAgICAgICAgICBNYXRjaFNldHRpbmdOYW1lICAgICAgID0+IHFye15Mb2FkZXI6Ok1vZHVsZTo6QWRtaW59LAogICAgICAgICAgICAgICAgTWF0Y2hOYXZpZ2F0aW9uVmFsdWUgICA9PiBxcnsuKn0sCiAgICAgICAgICAgICAgICBSZXF1aXJlTmF2aWdhdGlvbk1hdGNoID0+IHFye15Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyfSwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICJMb2FkZXIgY29uZmlnIGZvciBBZG1pbiBpbnRlcmZhY2Ugc2hvdWxkIGJlIGdyb3VwZWQgaW4gJ0Zyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXInLiIsCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAjIEFsbG93IEFnZW50IGVudHJpZXMgYWxzbyBpbiBBZG1pbiBncm91cCBmb3IgT1RSUyA4Ky4KICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICA9PiAnTG9hZGVyIGNvbmZpZyBmb3IgQWdlbnQgaW50ZXJmYWNlJywKICAgICAgICAgICAgICAgIE1hdGNoU2V0dGluZ05hbWUgICAgICAgPT4gcXJ7XkxvYWRlcjo6TW9kdWxlOjpBZ2VudH0sCiAgICAgICAgICAgICAgICBNYXRjaE5hdmlnYXRpb25WYWx1ZSAgID0+IHFyey4qfSwKICAgICAgICAgICAgICAgIFJlcXVpcmVOYXZpZ2F0aW9uTWF0Y2ggPT4gcXJ7XkZyb250ZW5kOjooQWdlbnR8QWRtaW4pOjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcn0sCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiTG9hZGVyIHNldHRpbmdzIGZvciBBZ2VudCBpbnRlcmZhY2Ugc2hvdWxkIGJlIGdyb3VwZWQgaW4gJ0Zyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXInLiIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgPT4gJ0xvYWRlciBjb25maWcgZm9yIEN1c3RvbWVyIGludGVyZmFjZScsCiAgICAgICAgICAgICAgICBNYXRjaFNldHRpbmdOYW1lICAgICAgID0+IHFye15Mb2FkZXI6Ok1vZHVsZTo6Q3VzdG9tZXJ9LAogICAgICAgICAgICAgICAgTWF0Y2hOYXZpZ2F0aW9uVmFsdWUgICA9PiBxcnsuKn0sCiAgICAgICAgICAgICAgICBSZXF1aXJlTmF2aWdhdGlvbk1hdGNoID0+IHFye15Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyfSwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICJMb2FkZXIgc2V0dGluZ3MgZm9yIEN1c3RvbWVyIGludGVyZmFjZSBzaG91bGQgYmUgZ3JvdXBlZCBpbiAnRnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcicuIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICA9PiAnTG9hZGVyIGNvbmZpZyBmb3IgUHVibGljIGludGVyZmFjZScsCiAgICAgICAgICAgICAgICBNYXRjaFNldHRpbmdOYW1lICAgICAgID0+IHFye15Mb2FkZXI6Ok1vZHVsZTo6UHVibGljfSwKICAgICAgICAgICAgICAgIE1hdGNoTmF2aWdhdGlvblZhbHVlICAgPT4gcXJ7Lip9LAogICAgICAgICAgICAgICAgUmVxdWlyZU5hdmlnYXRpb25NYXRjaCA9PiBxcnteRnJvbnRlbmQ6OlB1YmxpYzo6TW9kdWxlUmVnaXN0cmF0aW9ufSwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICJMb2FkZXIgc2V0dGluZ3MgZm9yIFB1YmxpYyBpbnRlcmZhY2Ugc2hvdWxkIGJlIGdyb3VwZWQgaW4gJ0Zyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbicuIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICA9PiAnRnJvbnRlbmQgbmF2aWdhdGlvbiBjb25maWcgZm9yIEFkbWluIGludGVyZmFjZScsCiAgICAgICAgICAgICAgICBNYXRjaFNldHRpbmdOYW1lICAgICAgID0+IHFye15Gcm9udGVuZDo6TmF2aWdhdGlvbiMjI0FkbWlufSwKICAgICAgICAgICAgICAgIE1hdGNoTmF2aWdhdGlvblZhbHVlICAgPT4gcXJ7Lip9LAogICAgICAgICAgICAgICAgUmVxdWlyZU5hdmlnYXRpb25NYXRjaCA9PiBxcnteRnJvbnRlbmQ6OkFkbWluOjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51fSwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICJGcm9udGVuZCBuYXZpZ2F0aW9uIGNvbmZpZyBmb3IgQWRtaW4gaW50ZXJmYWNlIHNob3VsZCBiZSBncm91cGVkIGluICdGcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnUnLiIsCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAjIEFsbG93IEFnZW50IGVudHJpZXMgYWxzbyBpbiBBZG1pbiBncm91cCBmb3IgT1RSUyA4Ky4KICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICA9PiAnRnJvbnRlbmQgbmF2aWdhdGlvbiBjb25maWcgZm9yIEFnZW50IGludGVyZmFjZScsCiAgICAgICAgICAgICAgICBNYXRjaFNldHRpbmdOYW1lICAgICAgID0+IHFye15Gcm9udGVuZDo6TmF2aWdhdGlvbiMjI0FnZW50fSwKICAgICAgICAgICAgICAgIE1hdGNoTmF2aWdhdGlvblZhbHVlICAgPT4gcXJ7Lip9LAogICAgICAgICAgICAgICAgUmVxdWlyZU5hdmlnYXRpb25NYXRjaCA9PiBxcnteRnJvbnRlbmQ6OihBZ2VudHxBZG1pbik6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnV9LAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIkZyb250ZW5kIG5hdmlnYXRpb24gY29uZmlnIGZvciBBZ2VudCBpbnRlcmZhY2Ugc2hvdWxkIGJlIGdyb3VwZWQgaW4gJ0Zyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudScuIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICA9PiAnRnJvbnRlbmQgbmF2aWdhdGlvbiBjb25maWcgZm9yIEN1c3RvbWVyIGludGVyZmFjZScsCiAgICAgICAgICAgICAgICBNYXRjaFNldHRpbmdOYW1lICAgICAgID0+IHFye15DdXN0b21lckZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQ3VzdG9tZXJ9LAogICAgICAgICAgICAgICAgTWF0Y2hOYXZpZ2F0aW9uVmFsdWUgICA9PiBxcnsuKn0sCiAgICAgICAgICAgICAgICBSZXF1aXJlTmF2aWdhdGlvbk1hdGNoID0+IHFye15Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnV9LAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIkZyb250ZW5kIG5hdmlnYXRpb24gY29uZmlnIGZvciBDdXN0b21lciBpbnRlcmZhY2Ugc2hvdWxkIGJlIGdyb3VwZWQgaW4gJ0Zyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudScuIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICA9PiAnRnJvbnRlbmQgbmF2aWdhdGlvbiBjb25maWcgZm9yIFB1YmxpYyBpbnRlcmZhY2UnLAogICAgICAgICAgICAgICAgTWF0Y2hTZXR0aW5nTmFtZSAgICAgICA9PiBxcnteUHVibGljRnJvbnRlbmQ6OihNb2R1bGV8TmF2aWdhdGlvbil9LAogICAgICAgICAgICAgICAgTWF0Y2hOYXZpZ2F0aW9uVmFsdWUgICA9PiBxcnsuKn0sCiAgICAgICAgICAgICAgICBSZXF1aXJlTmF2aWdhdGlvbk1hdGNoID0+IHFye15Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb259LAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIk1vZHVsZSByZWdpc3RyYXRpb24gY29uZmlnIGZvciBQdWJsaWMgaW50ZXJmYWNlIHNob3VsZCBiZSBncm91cGVkIGluICdGcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb24nLiIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgPT4gJ05hdmlnYXRpb24gbW9kdWxlIGNvbmZpZycsCiAgICAgICAgICAgICAgICBNYXRjaFNldHRpbmdOYW1lICAgICAgID0+IHFye15Gcm9udGVuZDo6TmF2aWdhdGlvbk1vZHVsZX0sCiAgICAgICAgICAgICAgICBNYXRjaE5hdmlnYXRpb25WYWx1ZSAgID0+IHFyey4qfSwKICAgICAgICAgICAgICAgIFJlcXVpcmVOYXZpZ2F0aW9uTWF0Y2ggPT4gcXJ7XkZyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpBZG1pbk92ZXJ2aWV3fSwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICJOYXZpZ2F0aW9uIG1vZHVsZSBjb25maWcgc2hvdWxkIGJlIGdyb3VwZWQgaW4gJ0Zyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpBZG1pbk92ZXJ2aWV3Jy4iLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgID0+ICdTZWFyY2ggcm91dGVyIGNvbmZpZyBmb3IgQWRtaW4gaW50ZXJmYWNlJywKICAgICAgICAgICAgICAgIE1hdGNoU2V0dGluZ05hbWUgICAgICAgPT4gcXJ7XkZyb250ZW5kOjpTZWFyY2guKj8jIyNBZG1pbn0sCiAgICAgICAgICAgICAgICBNYXRjaE5hdmlnYXRpb25WYWx1ZSAgID0+IHFyey4qfSwKICAgICAgICAgICAgICAgIFJlcXVpcmVOYXZpZ2F0aW9uTWF0Y2ggPT4gcXJ7XkZyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTo6U2VhcmNofSwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICJTZWFyY2ggcm91dGVyIGNvbmZpZyBmb3IgQWRtaW4gaW50ZXJmYWNlIHNob3VsZCBiZSBncm91cGVkIGluICdGcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6U2VhcmNoJy4iLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgID0+ICdTZWFyY2ggcm91dGVyIGNvbmZpZyBmb3IgQWdlbnQgaW50ZXJmYWNlJywKICAgICAgICAgICAgICAgIE1hdGNoU2V0dGluZ05hbWUgICAgICAgPT4gcXJ7XkZyb250ZW5kOjpTZWFyY2guKj8jIyNBZ2VudH0sCiAgICAgICAgICAgICAgICBNYXRjaE5hdmlnYXRpb25WYWx1ZSAgID0+IHFyey4qfSwKICAgICAgICAgICAgICAgIFJlcXVpcmVOYXZpZ2F0aW9uTWF0Y2ggPT4gcXJ7XkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTo6U2VhcmNofSwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICJTZWFyY2ggcm91dGVyIGNvbmZpZyBmb3IgQWdlbnQgaW50ZXJmYWNlIHNob3VsZCBiZSBncm91cGVkIGluICdGcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6U2VhcmNoJy4iLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgID0+ICdPdXRwdXQgZmlsdGVycycsCiAgICAgICAgICAgICAgICBNYXRjaFNldHRpbmdOYW1lICAgICAgID0+IHFyeyhPdXRwdXQ6OkZpbHRlcnxPdXRwdXRGaWx0ZXIpfSwKICAgICAgICAgICAgICAgIE1hdGNoTmF2aWdhdGlvblZhbHVlICAgPT4gcXJ7Lip9LAogICAgICAgICAgICAgICAgUmVxdWlyZU5hdmlnYXRpb25NYXRjaCA9PiBxcnteRnJvbnRlbmQ6OkJhc2U6Ok91dHB1dEZpbHRlcn0sCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiT3V0cHV0IGZpbHRlciBzZXR0aW5ncyBzaG91bGQgYmUgZ3JvdXBlZCBpbiAnRnJvbnRlbmQ6OkJhc2U6Ok91dHB1dEZpbHRlcicgb3Igc3ViZ3JvdXBzLiIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgPT4gJ1ZhbGlkIGZyb250ZW5kIHZpZXdzJywKICAgICAgICAgICAgICAgIE1hdGNoU2V0dGluZ05hbWUgICAgICAgPT4gcXJ7Lip9LAogICAgICAgICAgICAgICAgTWF0Y2hOYXZpZ2F0aW9uVmFsdWUgICA9PiBxcnteRnJvbnRlbmQ6OihBZG1pbnxBZ2VudHxDdXN0b21lcnxQdWJsaWMpOjooLis6OikqVmlldy4rJH0sCiAgICAgICAgICAgICAgICBSZXF1aXJlTmF2aWdhdGlvbk1hdGNoID0+IHFye15Gcm9udGVuZDo6KEFkbWlufEFnZW50fEN1c3RvbWVyfFB1YmxpYyk6OlZpZXc6Oi4rJH0sCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiU2NyZWVuIHNwZWNpZmljIHNldHRpbmdzIHNob3VsZCBiZSBhZGRlZCBpbiBGcm9udGVuZDo6KEFkbWlufEFnZW50fEN1c3RvbWVyfFB1YmxpYyk6OlZpZXcuIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnVmFsaWQgZnJvbnRlbmQgdmlld3MgKE9UUlMgNyspJywKICAgICAgICAgICAgICAgIE1hdGNoU2V0dGluZ05hbWUgICAgICAgICAgICAgICAgPT4gcXJ7Lip9LAogICAgICAgICAgICAgICAgTWF0Y2hOYXZpZ2F0aW9uVmFsdWUgICAgICAgICAgICA9PiBxcnteRnJvbnRlbmQ6OihBZG1pbnxBZ2VudHxDdXN0b21lcnxQdWJsaWMpOjooLis6OikqVmlldy4rJH0sCiAgICAgICAgICAgICAgICBSZXF1aXJlTmF2aWdhdGlvbk1hdGNoICAgICAgICAgID0+IHFye15Gcm9udGVuZDo6KEFkbWlufEFnZW50KTo6Vmlldzo6LiskfSwKICAgICAgICAgICAgICAgIFNraXBGb3JGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4gPT4gWyA3LCAwIF0sCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiU2NyZWVuIHNwZWNpZmljIHNldHRpbmdzIHNob3VsZCBiZSBhZGRlZCBpbiBGcm9udGVuZDo6KEFkbWlufEFnZW50KTo6Vmlldy4iLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIFJVTEU6CiAgICAgICAgZm9yIG15ICRSdWxlIChAUnVsZXMpIHsKICAgICAgICAgICAgbmV4dCBSVUxFIGlmICRDdXJyZW50U2V0dGluZ05hbWUgIX4gJFJ1bGUtPntNYXRjaFNldHRpbmdOYW1lfTsKICAgICAgICAgICAgbmV4dCBSVUxFIGlmICROYXZpZ2F0aW9uQ29udGVudCAgIX4gJFJ1bGUtPntNYXRjaE5hdmlnYXRpb25WYWx1ZX07CgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkUnVsZS0+e1NraXBGb3JGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW59CiAgICAgICAgICAgICAgICAmJiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIEB7ICRSdWxlLT57U2tpcEZvckZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbn0gfSApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG5leHQgUlVMRTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkTmF2aWdhdGlvbkNvbnRlbnQgIX4gJFJ1bGUtPntSZXF1aXJlTmF2aWdhdGlvbk1hdGNofSApIHsKICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UKICAgICAgICAgICAgICAgICAgICAuPSAiSW52YWxpZCBuYXZpZ2F0aW9uIHZhbHVlIGZvdW5kIGZvciBzZXR0aW5nICRDdXJyZW50U2V0dGluZ05hbWU6ICRSdWxlLT57RXJyb3JNZXNzYWdlfVxuIjsKICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIkxpbmUgJENvdW50ZXI6ICRMaW5lXG4iOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7ClByb2JsZW1zIHdlcmUgZm91bmQgaW4gdGhlIG5hdmlnYXRpb24gc3RydWN0dXJlIG9mIHRoZSBYTUwgY29uZmlndXJhdGlvbjoKJEVycm9yTWVzc2FnZQpFT0YKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWd1cmF0aW9uOjpVbml0VGVzdEJsYWNrbGlzdDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpCYXNlKTsKCj1oZWFkMSBTWU5PUFNJUwoKVGhpcyBwbHVnaW4gY2hlY2tzIGlzIGEgYmxhY2tsaXN0ZWQgdW5pdCB0ZXN0IHZpYSBDPFVuaXRUZXN0OjpCbGFja2xpc3Q+IGZlYXR1cmUgaXMgcHJlc2VudCBpbiB0aGUgZmlsZXN5c3RlbS4KCj1jdXQKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgcmV0dXJuIGlmICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggNiwgMCApOwoKICAgIG15ICRFcnJvck1lc3NhZ2U7CiAgICBteSAkUGFja2FnZU5hbWUgPSAnJzsKCiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lICggc3BsaXQgL1xuLywgJENvZGUgKSB7CgogICAgICAgIGlmICggISRQYWNrYWdlTmFtZSAmJiAkTGluZSA9fiBtezxTZXR0aW5nLio/TmFtZT0iVW5pdFRlc3Q6OkJsYWNrbGlzdCMjI1xkKy0oLio/KSJ9c20gKSB7CiAgICAgICAgICAgICRQYWNrYWdlTmFtZSA9ICQxOwogICAgICAgICAgICBuZXh0IExJTkU7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRQYWNrYWdlTmFtZSAmJiAkTGluZSA9fiAvPEl0ZW0uKj8+KC4qKTxcL0l0ZW0+LyApIHsKCiAgICAgICAgICAgIG15IEBUZXN0TmFtZXMgPSBzcGxpdCAvXC8vLCAkMTsKICAgICAgICAgICAgJFRlc3ROYW1lc1stMV0gPSAkUGFja2FnZU5hbWUgLiAkVGVzdE5hbWVzWy0xXTsKCiAgICAgICAgICAgIG15ICRQYWNrYWdlVW5pdFRlc3QgPSAnc2NyaXB0cy90ZXN0LycgLiBqb2luKCAnLycsIEBUZXN0TmFtZXMgKTsKICAgICAgICAgICAgaWYgKCAhZ3JlcCB7ICRfIGVxICRQYWNrYWdlVW5pdFRlc3QgfSBAVGlkeUFsbDo6T1RSUzo6RmlsZUxpc3QgKSB7CiAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICRQYWNrYWdlVW5pdFRlc3QgLiAiXG4iOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICRMaW5lID1+IC88XC9TZXR0aW5nPi8gKSB7CiAgICAgICAgICAgICRQYWNrYWdlTmFtZSA9ICcnOwogICAgICAgICAgICBuZXh0IExJTkU7CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7CgoKSW4gb3JkZXIgdG8gYmxhY2tsaXN0IHVuaXQgdGVzdCBmaWxlKHMpLCB5b3UgbmVlZCB0byBmaXJzdCBwcm92aWRlIGEgc3VpdGFibGUgcmVwbGFjZW1lbnQgdW5kZXIgdGhlc2UgcGF0aChzKToKJEVycm9yTWVzc2FnZQpFT0YKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWd1cmF0aW9uOjpYU0RWYWxpZGF0b3I7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7CnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpCYXNlKTsKCnN1YiB2YWxpZGF0ZV9maWxlIHsKICAgIG15ICggJFNlbGYsICRGaWxlbmFtZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBGaWxlbmFtZSA9PiAkRmlsZW5hbWUgKTsKICAgIHJldHVybiBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDMsIDMgKTsKCiAgICAjIERlZmF1bHQ6IE9UUlMgNisgY29uZmlndXJhdGlvbiBmaWxlcyBpbiBLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC4KICAgIG15ICRYU0RGaWxlICAgPSBkaXJuYW1lKF9fRklMRV9fKSAuICcvLi4vLi4vU3RhdGljRmlsZXMvWFNEL0NvbmZpZ3VyYXRpb24ueHNkJzsKICAgIG15ICRXYW50ZWREaXIgPSAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwnOwoKICAgICMgSGFuZGxpbmcgZm9yIG9sZGVyIHZlcnNpb25zOiBjb25maWcgZmlsZXMgaW4gS2VybmVsL0NvbmZpZy9GaWxlcy4KICAgIGlmICggJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA1LCAwICkgKSB7CgogICAgICAgICMgSW4gT1RSUyA0IGFuZCBiZWxvdyB0aGVyZSB3ZXJlIHNwZWNpYWwgQ1NTX0lFNyBhbmQgQ1NTX0lFOCBUYWdzIGZvciB0aGUgbG9hZGVyLgogICAgICAgICRYU0RGaWxlICAgPSBkaXJuYW1lKF9fRklMRV9fKSAuICcvLi4vLi4vU3RhdGljRmlsZXMvWFNEL0NvbmZpZ3VyYXRpb25fYmVmb3JlXzUueHNkJzsKICAgICAgICAkV2FudGVkRGlyID0gJ0tlcm5lbC9Db25maWcvRmlsZXMnOwogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDYsIDAgKSApIHsKICAgICAgICAkWFNERmlsZSAgID0gZGlybmFtZShfX0ZJTEVfXykgLiAnLy4uLy4uL1N0YXRpY0ZpbGVzL1hTRC9Db25maWd1cmF0aW9uX2JlZm9yZV82LnhzZCc7CiAgICAgICAgJFdhbnRlZERpciA9ICdLZXJuZWwvQ29uZmlnL0ZpbGVzJzsKICAgIH0KCiAgICBpZiAoICRGaWxlbmFtZSAhfiBteyRXYW50ZWREaXIvW14vXStbLl14bWwkfXNteCApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigKICAgICAgICAgICAgIkNvbmZpZ3VyYXRpb24gZmlsZSAkRmlsZW5hbWUgZG9lcyBub3QgZXhpc3QgaW4gdGhlIGNvcnJlY3QgZGlyZWN0b3J5ICRXYW50ZWREaXIuXG4iCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkQ29tbWFuZCA9IHNwcmludGYoICJ4bWxsaW50IC0tbm9vdXQgLS1ub25ldCAtLXNjaGVtYSAlcyAlcyAlcyAyPiYxIiwgJFhTREZpbGUsICRTZWxmLT5hcmd2KCksICRGaWxlbmFtZSApOwogICAgbXkgJE91dHB1dCAgPSBgJENvbW1hbmRgOwoKICAgICMgSWYgZXhlY3V0aW9uIGZhaWxlZCwgd2FybiBhYm91dCBpbnN0YWxsaW5nIHBhY2thZ2UuCiAgICBpZiAoICR7XkNISUxEX0VSUk9SX05BVElWRX0gPT0gLTEgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIid4bWxsaW50JyB3YXMgbm90IGZvdW5kLCBwbGVhc2UgaW5zdGFsbCBpdC5cbiIpOwogICAgfQoKICAgIGlmICggJHteQ0hJTERfRVJST1JfTkFUSVZFfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiJE91dHB1dFxuIik7ICAgICMgbm9uLXplcm8gZXhpdCBjb2RlCiAgICB9Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWd1cmF0aW9uOjpZQU1MSW5kZW50YXRpb247Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6QmFzZSk7Cgo9aGVhZDEgU1lOT1BTSVMKClRoaXMgcGx1Z2luIHJlbW92ZXMgYW55IHVubmVlZGVkIGluZGVudGF0aW9uIGZyb20gWUFNTC4KCiAgICAtLS0KICAgICAgICBLZXk6ICAgIFZhbHVlCiAgICAgICAgU3ViSGFzaDoKICAgICAgICAgICAgU3Via2V5OiBTdWJ2YWx1ZQoKd2lsbCBiZWNvbWU6CgogICAgLS0tCiAgICBLZXk6ICAgIFZhbHVlCiAgICBTdWJIYXNoOgogICAgICAgIFN1YmtleTogU3VidmFsdWUKCj1jdXQKCnN1YiB0cmFuc2Zvcm1fc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDgsIDAgKTsKCiAgICAkQ29kZSA9fiBzewogICAgICAgICg8SXRlbVtePl0rVmFsdWVUeXBlPSJZQU1MIltePl0qPlxzKjwhXFtDREFUQVxbLS0tXG4pCiAgICAgICAgKC4qPykKICAgICAgICBeXHMqKFxdXF0+KVxzKig8L0l0ZW0+KX17CiAgICAgICAgICAgICQxLlJlbW92ZUxlYWRpbmdXaGl0ZXNwYWNlcygkMikuJDMuJDQ7CiAgICAgICAgfWV4bXNnOwoKICAgIHJldHVybiAkQ29kZTsKfQoKc3ViIFJlbW92ZUxlYWRpbmdXaGl0ZXNwYWNlcyB7CiAgICBteSAoJFlBTUxTdHJpbmcpID0gQF87CgogICAgcmV0dXJuICRZQU1MU3RyaW5nIGlmICEkWUFNTFN0cmluZzsKCiAgICBteSBATGluZXMgPSBzcGxpdCggbXtcbn0sICRZQU1MU3RyaW5nICk7CgogICAgIyBEZXRlY3QgaWYgd2UgaGF2ZSBhbiB1bm5lZWRlZCBjb21tb24gaW5kZW50YXRpb24gb24gYWxsIGxpbmVzLgogICAgbXkgJENvbW1vbkluZGVudCA9IDEwMDA7CiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lIChATGluZXMpIHsKICAgICAgICBteSAoJFdoaXRlc3BhY2UpID0gJExpbmUgPX4gbXteKFxzKyl9eG1zOwogICAgICAgIG15ICRXaGl0ZXNwYWNlTGVuZ3RoID0gbGVuZ3RoKCAkV2hpdGVzcGFjZSAvLyAnJyApOwogICAgICAgICRDb21tb25JbmRlbnQgPSAkV2hpdGVzcGFjZUxlbmd0aCBpZiAkQ29tbW9uSW5kZW50ID4gJFdoaXRlc3BhY2VMZW5ndGg7CiAgICB9CgogICAgIyBSZW1vdmUgY29tbW9uIGluZGVudCBpZiBmb3VuZC4KICAgIGlmICgkQ29tbW9uSW5kZW50KSB7CiAgICAgICAgQExpbmVzID0gbWFwIHsgc3Vic3RyKCAkXywgJENvbW1vbkluZGVudCApIH0gQExpbmVzOwogICAgfQoKICAgIHJldHVybiBqb2luKCAiXG4iLCBATGluZXMgKSAuICJcbiI7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWd1cmF0aW9uOjpZQU1MVmFsaWRhdG9yOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBXZSB1c2UgWUFNTDo6WFMgaGVyZSBiZWNhdXNlIGl0IGlzIGFuIGV4dGVybmFsIGRlcGVuZGVuY3kgb2YgT1RSUy4KdXNlIFlBTUw6OlhTKCk7Cgp1c2UgcGFyZW50IHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6QmFzZSk7CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKICAgIHJldHVybiBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDgsIDAgKTsKCiAgICAkQ29kZSA9fiBzewogICAgICAgICg8SXRlbVtePl0rVmFsdWVUeXBlPSJZQU1MIltePl0qPlxzKjwhXFtDREFUQVxbLS0tXG4pCiAgICAgICAgKC4qPykKICAgICAgICAoXlxzKlxdXF0+XHMqPC9JdGVtPil9ewogICAgICAgICAgICBldmFsIHsKICAgICAgICAgICAgICAgIFlBTUw6OlhTOjpMb2FkKCQyKTsKICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKCRAKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiQ291bGQgbm90IGxvYWQgWUFNTCBkYXRhIGZvciBJdGVtICQxXG5EYXRhOlxuJDJcbkVycm9yOiAkQCIpOwogICAgICAgICAgICB9CiAgICAgICAgfWV4bXNnOwoKICAgIHJldHVybjsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpEYXRhYmFzZTo6WFNEVmFsaWRhdG9yOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwp1c2UgcGFyZW50IHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6QmFzZSk7CgpzdWIgdmFsaWRhdGVfZmlsZSB7CiAgICBteSAoICRTZWxmLCAkRmlsZW5hbWUgKSA9IEBfOwogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBGaWxlbmFtZSA9PiAkRmlsZW5hbWUgKTsKICAgIHJldHVybiBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDMsIDMgKTsKCiAgICBteSAkWFNERmlsZSA9IGRpcm5hbWUoX19GSUxFX18pIC4gJy8uLi8uLi9TdGF0aWNGaWxlcy9YU0QvRGF0YWJhc2UueHNkJzsKICAgIGlmICggJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA5LCAwICkgKSB7CiAgICAgICAgJFhTREZpbGUgPSBkaXJuYW1lKF9fRklMRV9fKSAuICcvLi4vLi4vU3RhdGljRmlsZXMvWFNEL0RhdGFiYXNlX2JlZm9yZV85LnhzZCc7CgogICAgfQogICAgbXkgJENNRCA9ICJ4bWxsaW50IC0tbm9vdXQgLS1ub25ldCAtLXNjaGVtYSAkWFNERmlsZSI7CgogICAgbXkgJENvbW1hbmQgPSBzcHJpbnRmKCAiJXMgJXMgJXMgMj4mMSIsICRDTUQsICRTZWxmLT5hcmd2KCksICRGaWxlbmFtZSApOwogICAgbXkgJE91dHB1dCAgPSBgJENvbW1hbmRgOwoKICAgICMgSWYgZXhlY3V0aW9uIGZhaWxlZCwgd2FybiBhYm91dCBpbnN0YWxsaW5nIHBhY2thZ2UuCiAgICBpZiAoICR7XkNISUxEX0VSUk9SX05BVElWRX0gPT0gLTEgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIid4bWxsaW50JyB3YXMgbm90IGZvdW5kLCBwbGVhc2UgaW5zdGFsbCBpdC5cbiIpOwogICAgfQoKICAgIGlmICggJHteQ0hJTERfRVJST1JfTkFUSVZFfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiJE91dHB1dFxuIik7ICAgICMgbm9uLXplcm8gZXhpdCBjb2RlCiAgICB9Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpEYXRhYmFzZTo6S2V5TGVuZ3RoOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CiAgICByZXR1cm4gICAgICAgaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA2LCAwICk7CgogICAgbXkgJENvdW50ZXI7CgogICAgIyBBY2NvdW50IGZvciAzLWJ5dGUgVVRGOCBjaGFyYWN0ZXJzLiBXZSBjdXJyZW50bHkgdXNlIHRoZSAidXRmOCIgY2hhcnNldCBpbiBNeVNRTCwKICAgICMgICB3aGljaCB1c2VzIHRocmVlIGJ5dGVzIHBlciBjaGFyYWN0ZXIuIEluIGZ1dHVyZSB3ZSBtaWdodCB3YW50IHRvIHN3aXRjaCB0byB1dGY4bWI0LAogICAgIyAgIHdoaWNoIHdvdWxkIGV2ZW4gZnVydGhlciByZWR1Y2UgcG9zc2libGUga2V5IGxlbmd0aCBieSB1c2luZyA0IGJ5dGVzIHBlciBjaGFyYWN0ZXIuCiAgICBteSAkQ2hhcmFjdGVyU2l6ZSA9IDM7CgogICAgIyBLZXlzIHdpdGggc2l6ZSBvZiBtb3JlIHRoYW4gMTAwMCBieXRlcyB3aWxsIGZhaWwgb24gTXlJU0FNIHN0b3JhZ2UgZW5naW5lIGluIE15U1FMLgogICAgbXkgJEtleVNpemVMaW1pdCA9IDEwMDA7CgogICAgbXkgJEN1cnJlbnRUYWJsZU5hbWU7CiAgICBteSAlQ3VycmVudENvbHVtbnM7CiAgICBteSAkQ3VycmVudEtleTsKICAgIG15ICRDdXJyZW50S2V5U2l6ZSA9IDA7CiAgICBteSAkRXJyb3JNZXNzYWdlOwoKICAgIG15ICVDb2x1bW5UeXBlMlNpemUgPSAoCiAgICAgICAgJ1RJTllJTlQnICAgPT4gMSwKICAgICAgICAnU01BTExJTlQnICA9PiAyLAogICAgICAgICdNRURJVU1JTlQnID0+IDMsCiAgICAgICAgJ0lOVCcgICAgICAgPT4gOCwKICAgICAgICAnSU5URUdFUicgICA9PiA4LAogICAgICAgICdCSUdJTlQnICAgID0+IDgsCiAgICAgICAgJ0RBVEUnICAgICAgPT4gOCwKICAgICAgICAnTE9OR0JMT0InICA9PiA0Mjk0OTY3Mjk1LAogICAgKTsKCiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lICggc3BsaXQgL1xuLywgJENvZGUgKSB7CiAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgIyBNYXRjaCB0YWJsZSBjcmVhdGUgb3BlbmluZyB0YWcgYW5kIHJlc2V0IGFueSBmb3VuZCBjb2x1bW5zLgogICAgICAgIGlmICggJExpbmUgPX4gbXsgPFRhYmxlKD86Q3JlYXRlKT8gLio/IE5hbWU9Iig/PFRhYmxlTmFtZT4uKj8pIiB9c214ICkgewogICAgICAgICAgICAkQ3VycmVudFRhYmxlTmFtZSA9ICQre1RhYmxlTmFtZX07CiAgICAgICAgICAgICVDdXJyZW50Q29sdW1ucyAgID0gKCk7CiAgICAgICAgICAgIG5leHQgTElORTsKICAgICAgICB9CgogICAgICAgICMgSWRlbnRpZnkgYWxsIGNvbHVtbnMgd2l0aCBkZWZpbmVkIHNpemUuCiAgICAgICAgaWYgKCAkTGluZSA9fiBteyA8Q29sdW1uIC4qPyBOYW1lPSIoPzxDb2x1bW5OYW1lPlx3KykiIH1zbXggKSB7CiAgICAgICAgICAgIG15ICRDb2x1bW5OYW1lID0gJCt7Q29sdW1uTmFtZX07CgogICAgICAgICAgICBpZiAoICRMaW5lID1+IG17IFR5cGU9Iig/PENvbHVtblR5cGU+XHcrKSIgfXNteCApIHsKICAgICAgICAgICAgICAgIG15ICRDb2x1bW5UeXBlID0gJCt7Q29sdW1uVHlwZX07CgogICAgICAgICAgICAgICAgIyBVc2UgaW50ZXJuYWwgc2l6ZXMgZm9yIHNvbWUgcHJlZGVmaW5lZCBjb2x1bW4gdHlwZXMuCiAgICAgICAgICAgICAgICBpZiAoICRDb2x1bW5UeXBlMlNpemV7IHVjICRDb2x1bW5UeXBlIH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJEN1cnJlbnRDb2x1bW5zeyRDb2x1bW5OYW1lfSA9ICRDb2x1bW5UeXBlMlNpemV7IHVjICRDb2x1bW5UeXBlIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBDaGVjayBpZiB0aGVyZSBpcyBhIGRlZmluZWQgc2l6ZSB0YWcuCiAgICAgICAgICAgICAgICBpZiAoICRMaW5lID1+IG17IFNpemU9Iig/PENvbHVtblNpemU+W1xkLF0rKSIgfXNteCApIHsKICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uU2l6ZSA9ICQre0NvbHVtblNpemV9OwoKICAgICAgICAgICAgICAgICAgICAjIEZvciB0ZXh0IGNvbHVtbnMgbXVsdGlwbHkgZm91bmQgc2l6ZSB3aXRoIGRlZmluZWQgbnVtYmVyIG9mIGJ5dGVzIHBlciBjaGFyYWN0ZXIuCiAgICAgICAgICAgICAgICAgICAgaWYgKCB1YyAkQ29sdW1uVHlwZSBlcSAnVkFSQ0hBUicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDdXJyZW50Q29sdW1uc3skQ29sdW1uTmFtZX0gPSAkQ29sdW1uU2l6ZSAqICRDaGFyYWN0ZXJTaXplOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgIyBGb3IgZGVjaW1hbCBjb2x1bW4gdHlwZSB1c2UgYXBwcm94aW1hdGUgY2FsY3VsYXRpb24sIGl0IHNob3VsZCBiZSBlbm91Z2ggZm9yIG91ciBwdXJwb3Nlcy4KICAgICAgICAgICAgICAgICAjICAgTW9yZSBpbmZvIGhlcmU6IGh0dHBzOi8vZGV2Lm15c3FsLmNvbS9kb2MvcmVmbWFuLzUuNy9lbi9wcmVjaXNpb24tbWF0aC1kZWNpbWFsLWNoYXJhY3RlcmlzdGljcy5odG1sCiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCB1YyAkQ29sdW1uVHlwZSBlcSAnREVDSU1BTCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICggJFRvdGFsRGlnaXRzLCAkRnJhY3Rpb25hbERpZ2l0cyApID0gc3BsaXQgbS8sLywgJENvbHVtblNpemU7CiAgICAgICAgICAgICAgICAgICAgICAgICRGcmFjdGlvbmFsRGlnaXRzIC8vPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBteSAkSW50ZWdlckRpZ2l0cyA9ICRUb3RhbERpZ2l0cyAtICRGcmFjdGlvbmFsRGlnaXRzOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJERpZ2l0cyAoICRJbnRlZ2VyRGlnaXRzLCAkRnJhY3Rpb25hbERpZ2l0cyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDdXJyZW50Q29sdW1uc3skQ29sdW1uTmFtZX0gKz0gc3ByaW50ZiggJyUwLmYnLCAkRGlnaXRzIC8gOSAqIDQgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBGb3IgYW55IHVzZSBjYXNlIHRoYXQgaGFzIG5vdCBiZWVuIGNvdmVyZWQgdW50aWwgdGhpcyBwb2ludCwganVzdCB1c2UgZGVmaW5lZCBzaXplLgogICAgICAgICAgICAgICAgICAgIGVsc2lmICggISRDb2x1bW5UeXBlMlNpemV7IHVjICRDb2x1bW5UeXBlIH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDdXJyZW50Q29sdW1uc3skQ29sdW1uTmFtZX0gKz0gJENvbHVtblNpemU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIE1hdGNoIGtleSBvcGVuaW5nIHRhZyBhbmQgcmVtZW1iZXIgaXRzIG5hbWUuCiAgICAgICAgaWYgKCAkTGluZSA9fiBteyA8KD86VW5pcXVlfEluZGV4KSBccysgTmFtZT0iKD88S2V5TmFtZT5cdyspIiB9c214ICkgewogICAgICAgICAgICAkQ3VycmVudEtleSA9ICQre0tleU5hbWV9OwogICAgICAgICAgICBuZXh0IExJTkU7CiAgICAgICAgfQoKICAgICAgICAjIE1hdGNoIGtleSBjbG9zaW5nIHRhZyBhbmQgcmVzZXQgYW55IGZvdW5kIGtleXMuCiAgICAgICAgaWYgKCAkTGluZSA9fiBteyA8Lyg/OlVuaXF1ZXxJbmRleCk+IH1zbXggKSB7CiAgICAgICAgICAgICRDdXJyZW50S2V5ICAgICA9IHVuZGVmOwogICAgICAgICAgICAkQ3VycmVudEtleVNpemUgPSAwOwogICAgICAgICAgICBuZXh0IExJTkU7CiAgICAgICAgfQoKICAgICAgICAjIFByb2NlZWQgb25seSBpZiB3ZSBhcmUgd2l0aGluIGtleSBkZWZpbml0aW9uLgogICAgICAgIGlmICgkQ3VycmVudEtleSkgewoKICAgICAgICAgICAgIyBNYXRjaCBrZXkgY29sdW1uIHRhZy4KICAgICAgICAgICAgaWYgKCAkTGluZSA9fiBteyA8KD86VW5pcXVlfEluZGV4KUNvbHVtbiAuKj8gTmFtZT0iKD88Q29sdW1uTmFtZT5cdyspIiB9c214ICkgewogICAgICAgICAgICAgICAgbXkgJENvbHVtbk5hbWUgPSAkK3tDb2x1bW5OYW1lfTsKCiAgICAgICAgICAgICAgICAjIFNraXAgdW5kZWZpbmVkIGNvbHVtbnMuIFNob3VsZCBub3QgaGFwcGVuLCBpZiB0aGUgZGVmaW5pdGlvbiBpcyB2YWxpZC4KICAgICAgICAgICAgICAgIG5leHQgTElORSBpZiAhJEN1cnJlbnRDb2x1bW5zeyRDb2x1bW5OYW1lfTsKCiAgICAgICAgICAgICAgICAjIElmIGtleSBzaXplIGlzIGRlZmluZWQsIHVzZSBpdC4KICAgICAgICAgICAgICAgIGlmICggJExpbmUgPX4gbXsgU2l6ZT0iKD88S2V5U2l6ZT5cZCspIiB9c214ICkgewogICAgICAgICAgICAgICAgICAgICRDdXJyZW50S2V5U2l6ZSArPSAkK3tLZXlTaXplfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIE90aGVyd2lzZSwgdXNlIHNpemUgZnJvbSBjb2x1bW4gZGVmaW5pdGlvbi4KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRDdXJyZW50S2V5U2l6ZSArPSAkQ3VycmVudENvbHVtbnN7JENvbHVtbk5hbWV9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIENoZWNrIGlmIGN1cnJlbnQgc2l6ZSBvZiB0aGUga2V5IGV4Y2VlZHMgY29uZmlndXJlZCBsaW1pdC4KICAgICAgICAgICAgaWYgKCRDdXJyZW50S2V5U2l6ZSkgewogICAgICAgICAgICAgICAgbmV4dCBMSU5FIGlmICRDdXJyZW50S2V5U2l6ZSA8PSAkS2V5U2l6ZUxpbWl0OwoKICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIlRhYmxlOiAkQ3VycmVudFRhYmxlTmFtZSwgS2V5OiAkQ3VycmVudEtleVxuIjsKCiAgICAgICAgICAgICAgICAjIFNraXAgcHJvY2Vzc2luZyBjdXJyZW50IGtleS4KICAgICAgICAgICAgICAgICRDdXJyZW50S2V5ICAgICA9IHVuZGVmOwogICAgICAgICAgICAgICAgJEN1cnJlbnRLZXlTaXplID0gMDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHVzZSBEYXRhOjpEdW1wZXI7CiAgICAjIHByaW50IER1bXBlciggXCVDb2x1bW5UeXBlcyApOwogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKUHJvYmxlbSBmb3VuZCBpbiBYTUwgZGF0YWJhc2Ugc2NoZW1hOiBrZXlzIHdpdGggbW9yZSB0aGFuIDEwMDAgYnl0ZXMgd2lsbCBmYWlsIG9uIE15SVNBTSBzdG9yYWdlIGVuZ2luZSBpbiBNeVNRTCEKJEVycm9yTWVzc2FnZQpFT0YKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpEb2Nib29rOjpCaW5TY3JpcHRzOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UpOwoKPWhlYWQxIFNZTk9QU0lTCgpUaGlzIHBsdWdpbiBjaGVja3MgdGhhdCBiaW4gc2NyaXB0cyBwb2ludCB0byBuZXcgcGF0aHMuCgo9Y3V0CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDUsIDAgKTsKCiAgICBteSAlQWxsb3dlZEZpbGVzID0gKAogICAgICAgICdvdHJzLkNoZWNrTW9kdWxlcy5wbCcgICA9PiAxLAogICAgICAgICdvdHJzLkNoZWNrU3VtLnBsJyAgICAgICA9PiAxLAogICAgICAgICdvdHJzLkNvZGVQb2xpY3kucGwnICAgICA9PiAxLAogICAgICAgICdvdHJzLkNvbnNvbGUucGwnICAgICAgICA9PiAxLAogICAgICAgICdvdHJzLkRhZW1vbi5wbCcgICAgICAgICA9PiAxLAogICAgICAgICdvdHJzLlNldFBlcm1pc3Npb25zLnBsJyA9PiAxLAogICAgKTsKCiAgICBteSAoICRDb3VudGVyLCAkRXJyb3JNZXNzYWdlICk7CgogICAgTElORToKICAgIGZvciBteSAkTGluZSAoIHNwbGl0IC9cbi8sICRDb2RlICkgewogICAgICAgICRDb3VudGVyKys7CiAgICAgICAgaWYgKCAkTGluZSA9fiAvYmluXC8ob3Ryc1wuXHcrXC5wbCkvaXNteCApIHsKCiAgICAgICAgICAgIG5leHQgTElORSBpZiAkQWxsb3dlZEZpbGVzeyQxfTsKCiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIkxpbmUgJENvdW50ZXI6ICRMaW5lXG4iOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwpEb24ndCB1c2Ugb2xkIGJpbiBzY3JpcHRzIGluIGRvY3VtZW50YXRpb24uCiRFcnJvck1lc3NhZ2UKRU9GCiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpEb2Nib29rOjpJbWFnZU91dHB1dDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpCYXNlKTsKCnN1YiB0cmFuc2Zvcm1fc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICAjIE1ha2Ugc3VyZSBpbWFnZXMgYXJlIGNvcnJlY3RseSBlbWJlZGRlZCwgc2hvd2luZyBpbiBvcmlnaW5hbCBzaXplIGFuZCBjYXBwZWQgYXQKICAgICMgICBhdmFpbGFibGUgd2l0aC4gRm9yYmlkIG1hbnVhbCBzY2FsaW5nLgoKICAgICMgU2VlIGh0dHA6Ly93d3cuc2FnZWhpbGwubmV0L2RvY2Jvb2t4c2wvSW1hZ2VTaXppbmcuaHRtbDoKICAgICMgIlRvIGtlZXAgYSBncmFwaGljIGZvciBwcmludGVkIG91dHB1dCBhdCBpdHMgbmF0dXJhbCBzaXplIHVubGVzcyBpdCBpcyB0b28gbGFyZ2UgdG8gZml0CiAgICAjICAgdGhlIGF2YWlsYWJsZSB3aWR0aCwgaW4gd2hpY2ggY2FzZSBzaHJpbmsgaXQgdG8gZml0LCB1c2Ugc2NhbGVmaXQ9IjEiLCB3aWR0aD0iMTAwJSIsCiAgICAjICAgYW5kIGNvbnRlbnRkZXB0aD0iMTAwJSIgYXR0cmlidXRlcy4iCgogICAgJENvZGUKICAgICAgICA9fiBzezxncmFwaGljIFtePl0rIChmaWxlcmVmPSJbXiI+XSsiKVtePi9dKigvPyk+fXs8Z3JhcGhpYyAkMSBzY2FsZWZpdD0iMSIgd2lkdGg9IjEwMCUiIGNvbnRlbnRkZXB0aD0iMTAwJSIkMj59bXN4ZzsKCiAgICByZXR1cm4gJENvZGU7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpEb2Nib29rOjpSZXBsYWNlU3VwcG9ydEVtYWlsOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UpOwoKbXkgJEVuZ2xpc2gxUmVnRXhwID0gPDwnRU5EX1JFR0VYUCc7ClxuIFxzKiA8cGFyYT4gXHMqClxzKiAgICAgICAgSWYgXHMrIHlvdSBccysgaGF2ZSBccysgcXVlc3Rpb25zIFxzKyByZWdhcmRpbmcgXHMrIHRoaXMgXHMrIHBhY2thZ2UsIFxzKyBwbGVhc2UgXHMrIGNvbnRhY3QgXHMrIHlvdXIgXHMrIHN1cHBvcnQgXHMrIHRlYW0KXHMrICAgICAgICBcKHN1cHBvcnRcQG90cnNcLmNvbVwpIFxzKyBmb3IgXHMrIG1vcmUgXHMrIGluZm9ybWF0aW9uIFwuIFxuClxzKiAgICA8XC9wYXJhPiBcbgpFTkRfUkVHRVhQCgpteSAkRW5nbGlzaDJSZWdFeHAgPSA8PCdFTkRfUkVHRVhQJzsKXG4gXHMqIDxwYXJhPiBccyoKXHMqICAgICAgICBJZiBccysgeW91IFxzKyBoYXZlIFxzKyBxdWVzdGlvbnMgXHMrIHJlZ2FyZGluZyBccysgdGhpcyBccysgZG9jdW1lbnQgXHMrIG9yIFxzKyBpZiBccysgeW91IFxzKyBuZWVkIFxzKyBmdXJ0aGVyIFxzKyBpbmZvcm1hdGlvbiwgXHMrIHBsZWFzZSBccysgbG9nIFxzKyBpbiBccysgdG8gXHMrIG91ciBccysgY3VzdG9tZXIgXHMrIHBvcnRhbCBccysgYXQgXHMrIHBvcnRhbFwub3Ryc1wuY29tIFxzKyB3aXRoIFxzKyB5b3VyIFxzKyBPVFJTIFxzKyBJRCBccysgYW5kIFxzKyBjcmVhdGUgXHMrIGEgXHMrIHRpY2tldFwuClxzKyAgICAgICAgWW91IFxzKyBkbyBccysgbm90IFxzKyBoYXZlIFxzKyBhbiBccysgT1RSUyBccysgSUQgXHMrIHlldFw/IFxzKyBSZWdpc3RlcgpccyogICAgICAgIDx1bGluayBccysgdXJsPSJodHRwczpcL1wvcG9ydGFsXC5vdHJzXC5jb21cL290cnNcL2N1c3RvbWVyXC5wbFwjU2lnbnVwIj5oZXJlIFxzKyBmb3IgXHMrIGZyZWU8XC91bGluaz5cLgpccyogICAgPFwvcGFyYT4gXG4KRU5EX1JFR0VYUAoKbXkgJEdlcm1hbjFSZWdFeHAgPSA8PCdFTkRfUkVHRVhQJzsKXG4gXHMqIDxwYXJhPiBccyoKXHMqICAgICAgICAgQmVpIFxzKyBGcmFnZW4gXHMrIGJldHJlZmZlbmQgXHMrIGRpZXNlcyBccysgRG9rdW1lbnRlcywgXHMrIGtvbnRha3RpZXJlbiBccysgU2llIFxzKyBJaHJlbiBccysgU3VwcG9ydCBccysgXChzdXBwb3J0XEBvdHJzXC5jb21cKSBccysgZsO8ciBccysgd2VpdGVyZSBccysgSW5mb3JtYXRpb25lbiBcLiBcbgpccyogICAgPFwvcGFyYT4gXG4KRU5EX1JFR0VYUAoKc3ViIHRyYW5zZm9ybV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgIG15ICRFbmdsaXNoUmVwbGFjZW1lbnQgPSBfRW5nbGlzaFJlcGxhY2VtZW50KCk7CiAgICBteSAkR2VybWFuUmVwbGFjZW1lbnQgID0gX0dlcm1hblJlcGxhY2VtZW50KCk7CgogICAgIyByZXBsYWNlIHN1cHBvcnQgcGFyYQogICAgJENvZGUgPX4gc3skRW5nbGlzaDFSZWdFeHB9eyRFbmdsaXNoUmVwbGFjZW1lbnR9eG1zOwogICAgJENvZGUgPX4gc3skR2VybWFuMVJlZ0V4cH17JEdlcm1hblJlcGxhY2VtZW50fXhtczsKCiAgICAjIFJlcGxhY2Ugc3VwcG9ydCBwYXJhIHdpdGggdGhlIGNvcnJlY3QgbGFuZ3VhZ2UKICAgIGlmICggJENvZGUgPX4gbXteIFxzKiA8Ym9vayBccysgbGFuZz0nZGUnPiB9c214ICkgewogICAgICAgICRDb2RlID1+IHN7JEVuZ2xpc2gyUmVnRXhwfXskR2VybWFuUmVwbGFjZW1lbnR9eG1zOwogICAgfQoKICAgIHJldHVybiAkQ29kZTsKfQoKc3ViIF9FbmdsaXNoUmVwbGFjZW1lbnQgewogICAgcmV0dXJuIDw8J0VORF9SRVBMQUNFTUVOVCc7CgogICAgPHBhcmE+CiAgICAgICAgSWYgeW91IGhhdmUgcXVlc3Rpb25zIHJlZ2FyZGluZyB0aGlzIGRvY3VtZW50IG9yIGlmIHlvdSBuZWVkIGZ1cnRoZXIgaW5mb3JtYXRpb24sIHBsZWFzZSBsb2cgaW4gdG8gb3VyIGN1c3RvbWVyIHBvcnRhbCBhdCBwb3J0YWwub3Rycy5jb20gd2l0aCB5b3VyIE9UUlMgSUQgYW5kIGNyZWF0ZSBhIHRpY2tldC4KICAgICAgICBZb3UgZG8gbm90IGhhdmUgYW4gT1RSUyBJRCB5ZXQ/IFJlZ2lzdGVyCiAgICAgICAgPHVsaW5rIHVybD0iaHR0cHM6Ly9wb3J0YWwub3Rycy5jb20vb3Rycy9jdXN0b21lci5wbCNTaWdudXAiPmhlcmUgZm9yIGZyZWU8L3VsaW5rPi4KICAgIDwvcGFyYT4KRU5EX1JFUExBQ0VNRU5UCn0KCnN1YiBfR2VybWFuUmVwbGFjZW1lbnQgewogICAgcmV0dXJuIDw8J0VORF9SRVBMQUNFTUVOVCc7CgogICAgPHBhcmE+CiAgICAgICAgU29sbHRlbiBTaWUgRnJhZ2VuIHp1IGRpZXNlbSBEb2t1bWVudCBoYWJlbiBvZGVyIHdlaXRlcmUgSW5mb3JtYXRpb25lbiBiZW7DtnRpZ2VuLCBsb2dnZW4gU2llIHNpY2ggYml0dGUgbWl0IElocmVyIE9UUlMtSUQgaW4gdW5zZXIgS3VuZGVucG9ydGFsIHVudGVyIHBvcnRhbC5vdHJzLmNvbSBlaW4gdW5kIGVyw7ZmZm5lbiBTaWUgZWluIFRpY2tldC4gU2llIGhhYmVuIG5vY2gga2VpbmUgT1RSUy1JRD8gUmVnaXN0cmllcmVuIFNpZSBzaWNoCiAgICAgICAgPHVsaW5rIHVybD0iaHR0cHM6Ly9wb3J0YWwub3Rycy5jb20vb3Rycy9jdXN0b21lci5wbCNTaWdudXAiPmhpZXIga29zdGVubG9zPC91bGluaz4uCiAgICA8L3BhcmE+CkVORF9SRVBMQUNFTUVOVAp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpEb2Nib29rOjpSZW1vdmVDb250YWN0Q2hhcHRlcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpCYXNlKTsKCnN1YiB0cmFuc2Zvcm1fc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICAjIHJlbW92ZSBjaGFwdGVyCiAgICAkQ29kZSA9fiBzewogICAgICAgIDxjaGFwdGVyPiBccyoKICAgICAgICAoPzoKICAgICAgICAgICAgPCEtLSBccysgXCorIFxzKyAtLT4gXHMrCiAgICAgICAgICAgIDwhLS0gXHMrIFxkKyBcLiBccysgXHcrIFxzKyAtLT4gXHMrCiAgICAgICAgICAgIDwhLS0gXHMrIFwqKyBccysgLS0+IFxzKwogICAgICAgIHwKICAgICAgICApCiAgICAgICAgPHRpdGxlPiBbIF0qICg/OiBDb250YWN0IHwgQ29udGFjdHMgfCBLb250YWt0ICkgWyBdKiA8XC90aXRsZT4KICAgICAgICAoICg/ISA8XC9jaGFwdGVyPiApLiApKiA8XC9jaGFwdGVyPiBbIFxuXSoKICAgIH17fXhtczsKCiAgICByZXR1cm4gJENvZGU7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpEb2Nib29rOjpYU0RWYWxpZGF0b3I7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7CnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpCYXNlKTsKCnN1YiB0cmFuc2Zvcm1fc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICAjIGNvbnZlcnQgZm9ybWF0IGF0dHJpYnV0ZSBjb250ZW50IGluIGltYWdlZGF0YSB0YWcgdG8gdXBwZXIgY2FzZQogICAgIyAgICBlLmcuIGZyb20gZm9ybWF0PSJwbmciIHRvIGZvcm1hdD0iUE5HIgogICAgJENvZGUgPX4gc3soPGltYWdlZGF0YSBbXj5dKyBmb3JtYXQ9IikoLis/KSgiIFtePl0rID4pfQogICAgICAgIHsKICAgICAgICAgICAgbXkgJFN0YXJ0ICA9ICQxOwogICAgICAgICAgICBteSAkRm9ybWF0ID0gJDI7CiAgICAgICAgICAgIG15ICRFbmQgICAgPSAkMzsKICAgICAgICAgICAgaWYgKCRGb3JtYXQgbmUgJ2xpbmVzcGVjaWZpYycpIHsKICAgICAgICAgICAgICAgICRGb3JtYXQgPSB1YyAkRm9ybWF0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIG15ICRSZXN1bHQgPSAkU3RhcnQgLiAkRm9ybWF0IC4gJEVuZDsKICAgICAgICB9bXN4Z2U7CgogICAgcmV0dXJuICRDb2RlOwp9CgpzdWIgdmFsaWRhdGVfZmlsZSB7CiAgICBteSAoICRTZWxmLCAkRmlsZW5hbWUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggRmlsZW5hbWUgPT4gJEZpbGVuYW1lICk7CiAgICByZXR1cm4gaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCAzLCAxICk7CgogICAgIyByZWFkIHRoZSBmaWxlIGFzIGFuIGFycmF5CiAgICBvcGVuIEZILCAiJEZpbGVuYW1lIiBvciBkaWUgJCE7ICAgICMjIG5vIGNyaXRpYwogICAgbXkgQEZpbGVMaW5lcyA9IDxGSD47CiAgICBjbG9zZSBGSDsKCiAgICBteSAkVmVyc2lvbjsKCiAgICAjIGdldCB0aGUgRG9jQm9vayB2ZXJzaW9uIGZyb20gdGhlIERvY1R5cGUgZS5nLiA0LjQKICAgIGlmICggJEZpbGVMaW5lc1sxXSA9fiBte0RURCBbIF0gRG9jQm9vayBbIF0gWE1MIFsgXSBWKFxkXC5cZCkvL31tc3hpICkgewogICAgICAgICRWZXJzaW9uID0gJDE7CiAgICB9CiAgICByZXR1cm4gaWYgISRWZXJzaW9uOwoKICAgICMgY2hlY2sgaWYgd2UgaGF2ZSBhbiBYU0QgYXZhaWxhYmxlIGZvciB0aGUgZGV0ZWN0ZWQgdmVyc2lvbjoKICAgIG15ICVBdmFpbGFibGVWZXJzaW9ucyA9ICgKICAgICAgICAnNC4yJyA9PiAxLAogICAgICAgICc0LjMnID0+IDEsCiAgICAgICAgJzQuNCcgPT4gMSwKICAgICAgICAnNC41JyA9PiAxLAogICAgKTsKICAgIGlmICggISRBdmFpbGFibGVWZXJzaW9uc3skVmVyc2lvbn0gKSB7CiAgICAgICAgcHJpbnQgU1RERVJSICJObyBEb2NCb29rIFhTRCBhdmFpbGFibGUgZm9yIHZlcnNpb24gJFZlcnNpb25cbiI7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY29udmVydCB0aGUgdmVyc2lvbiB0byBhIGRpcmVjdG9yeSBzYWZlIHN0cmluZyBlLmcuIDRfNAogICAgJFZlcnNpb24gPX4gc3tcLn17X307CgogICAgIyBnZW5lcmF0ZSB0aGUgWE1MTGludCBjb21tYW5kIGJhc2VkIG9uIHRoZSB2ZXJzaW9uIG9mIHRoZSBEb2NCb29rIGZpbGUKICAgIG15ICRYU0RGaWxlID0gZGlybmFtZShfX0ZJTEVfXykgLiAnLy4uLy4uL1N0YXRpY0ZpbGVzL1hTRC9Eb2Nib29rLycgLiAkVmVyc2lvbiAuICcvZG9jYm9vay54c2QnOwogICAgbXkgJENNRCAgICAgPSAieG1sbGludCAtLW5vb3V0IC0tbm9uZXQgLS1ub3dhcm5pbmcgLS1zY2hlbWEgJFhTREZpbGUiOwoKICAgIG15ICRDb21tYW5kID0gc3ByaW50ZiggIiVzICVzICVzIDI+JjEiLCAkQ01ELCAkU2VsZi0+YXJndigpLCAkRmlsZW5hbWUgKTsKICAgIG15ICRPdXRwdXQgID0gYCRDb21tYW5kYDsKCiAgICAjIElmIGV4ZWN1dGlvbiBmYWlsZWQsIHdhcm4gYWJvdXQgaW5zdGFsbGluZyBwYWNrYWdlLgogICAgaWYgKCAke15DSElMRF9FUlJPUl9OQVRJVkV9ID09IC0xICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCIneG1sbGludCcgd2FzIG5vdCBmb3VuZCwgcGxlYXNlIGluc3RhbGwgaXQuXG4iKTsKICAgIH0KCiAgICBpZiAoICR7XkNISUxEX0VSUk9SX05BVElWRX0gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIiRPdXRwdXRcbiIpOyAgICAjIG5vbi16ZXJvIGV4aXQgY29kZQogICAgfQp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpXQURMOjpYU0RWYWxpZGF0b3I7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7CnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpCYXNlKTsKCnN1YiBfYnVpbGRfY21kIHsKICAgIG15ICRYU0RGaWxlID0gZGlybmFtZShfX0ZJTEVfXykgLiAnLy4uLy4uL1N0YXRpY0ZpbGVzL1hTRC9XQURML3dhZGwueHNkJzsKICAgIHJldHVybiAieG1sbGludCAtLW5vb3V0IC0tbm9uZXQgLS1zY2hlbWEgJFhTREZpbGUiOwp9CgpzdWIgdmFsaWRhdGVfZmlsZSB7CiAgICBteSAoICRTZWxmLCAkRmlsZW5hbWUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggRmlsZW5hbWUgPT4gJEZpbGVuYW1lICk7CiAgICByZXR1cm4gaWYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCA0LCAwICk7CgogICAgbXkgJENvbW1hbmQgPSBzcHJpbnRmKCAiJXMgJXMgJXMgMj4mMSIsICRTZWxmLT5jbWQoKSwgJFNlbGYtPmFyZ3YoKSwgJEZpbGVuYW1lICk7CiAgICBteSAkT3V0cHV0ICA9IGAkQ29tbWFuZGA7CgogICAgIyBJZiBleGVjdXRpb24gZmFpbGVkLCB3YXJuIGFib3V0IGluc3RhbGxpbmcgcGFja2FnZS4KICAgIGlmICggJHteQ0hJTERfRVJST1JfTkFUSVZFfSA9PSAtMSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiJ3htbGxpbnQnIHdhcyBub3QgZm91bmQsIHBsZWFzZSBpbnN0YWxsIGl0LlxuIik7CiAgICB9CgogICAgaWYgKCAke15DSElMRF9FUlJPUl9OQVRJVkV9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCIkT3V0cHV0XG4iKTsgICAgIyBub24temVybyBleGl0IGNvZGUKICAgIH0KfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpXU0RMOjpYU0RWYWxpZGF0b3I7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7CnVzZSBwYXJlbnQgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpCYXNlKTsKCnN1YiB2YWxpZGF0ZV9maWxlIHsKICAgIG15ICggJFNlbGYsICRGaWxlbmFtZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBGaWxlbmFtZSA9PiAkRmlsZW5hbWUgKTsKICAgIHJldHVybiBpZiAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDQsIDAgKTsKCiAgICAjIHJlYWQgdGhlIGZpbGUgYXMgYW4gYXJyYXkKICAgIG9wZW4gRkgsICIkRmlsZW5hbWUiIG9yIGRpZSAkITsgICAgIyMgbm8gY3JpdGljCiAgICBteSAkU3RyaW5nID0gZG8geyBsb2NhbCAkLyA9IHVuZGVmOyA8Rkg+IH07CiAgICBjbG9zZSBGSDsKCiAgICBteSAkTGl0ZXJhbFN0eWxlOwoKICAgICMgY2hlY2sgaWYgV1NETCBmaWxlIHVzZXMgTGl0ZXJhbCBtZXNzYWdlcwogICAgaWYgKCAkU3RyaW5nID1+IG17PHNvYXA6Ym9keSBccysgdXNlPSJsaXRlcmFsIn1tc3hpICkgewogICAgICAgICRMaXRlcmFsU3R5bGUgPSAxOwogICAgfQoKICAgICMgZ2VuZXJhdGUgdGhlIFhNTExpbnQgY29tbWFuZCBiYXNlZCBvbiB0aGUgc3R5bGUgb2YgV1NETAogICAgbXkgJFhTRERpciA9IGRpcm5hbWUoX19GSUxFX18pIC4gJy8uLi8uLi9TdGF0aWNGaWxlcy9YU0QvV1NETC8nOwoKICAgIG15ICRYU0RGaWxlID0gJ1dTREwueHNkJzsKICAgIGlmICgkTGl0ZXJhbFN0eWxlKSB7CiAgICAgICAgJFhTREZpbGUgPSAnTGl0ZXJhbC54c2QnOwogICAgfQoKICAgIG15ICRDTUQgPSAieG1sbGludCAtLW5vb3V0IC0tbm9uZXQgLS1ub3dhcm5pbmcgLS1zY2hlbWEgJFhTRERpciRYU0RGaWxlIjsKCiAgICBteSAkQ29tbWFuZCA9IHNwcmludGYoICIlcyAlcyAlcyAyPiYxIiwgJENNRCwgJFNlbGYtPmFyZ3YoKSwgJEZpbGVuYW1lICk7CiAgICBteSAkT3V0cHV0ICA9IGAkQ29tbWFuZGA7CgogICAgIyBJZiBleGVjdXRpb24gZmFpbGVkLCB3YXJuIGFib3V0IGluc3RhbGxpbmcgcGFja2FnZS4KICAgIGlmICggJHteQ0hJTERfRVJST1JfTkFUSVZFfSA9PSAtMSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiJ3htbGxpbnQnIHdhcyBub3QgZm91bmQsIHBsZWFzZSBpbnN0YWxsIGl0LlxuIik7CiAgICB9CgogICAgaWYgKCAke15DSElMRF9FUlJPUl9OQVRJVkV9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCIkT3V0cHV0XG4iKTsgICAgIyBub24temVybyBleGl0IGNvZGUKICAgIH0KfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpMaW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkJhc2UpOwoKc3ViIF9idWlsZF9jbWQgewogICAgcmV0dXJuICd4bWxsaW50IC0tbm9vdXQgLS1ub25ldCc7Cn0KCnN1YiB2YWxpZGF0ZV9maWxlIHsKICAgIG15ICggJFNlbGYsICRGaWxlbmFtZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBGaWxlbmFtZSA9PiAkRmlsZW5hbWUgKTsKCiAgICBteSAkQ29tbWFuZCA9IHNwcmludGYoICIlcyAlcyAlcyAyPiYxIiwgJFNlbGYtPmNtZCgpLCAkU2VsZi0+YXJndigpLCAkRmlsZW5hbWUgKTsKICAgIG15ICRPdXRwdXQgID0gYCRDb21tYW5kYDsKCiAgICAjIElmIGV4ZWN1dGlvbiBmYWlsZWQsIHdhcm4gYWJvdXQgaW5zdGFsbGluZyBwYWNrYWdlLgogICAgaWYgKCAke15DSElMRF9FUlJPUl9OQVRJVkV9ID09IC0xICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCIneG1sbGludCcgd2FzIG5vdCBmb3VuZCwgcGxlYXNlIGluc3RhbGwgaXQuXG4iKTsKICAgIH0KCiAgICBpZiAoICR7XkNISUxEX0VSUk9SX05BVElWRX0gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIiRPdXRwdXRcbiIpOyAgICAjIG5vbi16ZXJvIGV4aXQgY29kZQogICAgfQp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpMaW50V2l0aE91clBhcnNlcnM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6QmFzZSk7Cgp1c2UgWE1MOjpQYXJzZXI7CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICBteSAkUGFyc2VyID0gWE1MOjpQYXJzZXItPm5ldygpOwogICAgaWYgKCAhZXZhbCB7ICRQYXJzZXItPnBhcnNlKCRDb2RlKSB9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCJYTUw6OlBhcnNlciBwcm9kdWNlZCBlcnJvcnM6ICRAXG4iKTsKICAgIH0KCiAgICAjIFhNTDo6UGFyc2VyOjpMaXRlIG1heSBub3QgYmUgaW5zdGFsbGVkLCBvbmx5IGNoZWNrIGlmIHByZXNlbnQuCiAgICBpZiAoIGV2YWwgJ3JlcXVpcmUgWE1MOjpQYXJzZXI6OkxpdGUnICkgeyAgICAjIyBubyBjcml0aWMKICAgICAgICBteSAkUGFyc2VyTGl0ZSA9IFhNTDo6UGFyc2VyOjpMaXRlLT5uZXcoKTsKICAgICAgICBldmFsIHsgJFBhcnNlckxpdGUtPnBhcnNlKCRDb2RlKSB9OwogICAgICAgIGlmICgkQCkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiWE1MOjpQYXJzZXI6OkxpdGUgcHJvZHVjZWQgZXJyb3JzOiAkQFxuIik7CiAgICAgICAgfQogICAgfQp9CgoxOwo=
Owo7IEdsb2JhbCBpZ25vcmVzCjsKCjsgSWdub3JlIGFsbCBDUEFOIGNvbnRlbnQuCmlnbm9yZSA9IEtlcm5lbC9jcGFuLWxpYi8qKi8qIEN1c3RvbS9LZXJuZWwvY3Bhbi1saWIvKiovKgo7IElnbm9yZSBhbGwgZHluYW1pYy90ZW1wb3JhcnkgZGF0YS4KaWdub3JlID0gdmFyL3thcnRpY2xlLGxvZyxydW4sc2Vzc2lvbnMsc3Bvb2wsdG1wLHZpcnR1YWxmc30vKiovKgo7IElnbm9yZSB0aGlyZHBhcnR5IGNvbnRlbnQuCmlnbm9yZSA9ICoqL3RoaXJkcGFydHkvKiovKgo7IElnbm9yZSBMb2FkZXIgY2FjaGUgZmlsZXMuCmlnbm9yZSA9ICoqL3tqcy1jYWNoZSxjc3MtY2FjaGV9LyoqLyoKOyBJZ25vcmUgdGVzdCBkYXRhIGZpbGVzLgo7aWdub3JlID0gc2NyaXB0cy90ZXN0L3NhbXBsZS8qKi8qCjsgSWdub3JlIHZhZ3JhbnQgaW5zdGFuY2UgY29udGVudHMgb2YgdGhlIENJIHByb3Zpc2lvbmVyLgppZ25vcmUgPSB2YXIvVmFncmFudC9JbnN0YW5jZXMvKiovKgo7IG5vZGUuanMgcGFja2FnZXMKaWdub3JlID0gbm9kZV9tb2R1bGVzLyoqLyoKaWdub3JlID0gRnJvbnRlbmQvVmVuZG9yLyoqLyoKOyBXZWJwYWNrIGdlbmVyYXRlZCBvdXRwdXQgZmlsZXMKaWdub3JlID0gdmFyL3B1YmxpYy9kaXN0LyoqLyoKCjsKOyBDb21tb24KOwoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkNvbW1vbjo6Q1JMRkxpbmVFbmRpbmdzXQpzZWxlY3QgPSAqKi8qLntwbCxwbSxwc2dpLHQsdHQsc3BlYyxqcyxjc3Msc2Nzcyx2dWUsZGlzdCx0bXBsLHNoLHNrZWwseG1sLHNvcG0saHRtbCxzZXJ2aWNlLGNvbmZ9CgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6Q29tbW9uOjpOb0ZpbHRlcl0Kc2VsZWN0ID0gKiovKi57cGwscG0scHNnaSx0LHR0LHNwZWMsanMsY3NzLHNjc3MsdnVlLGRpc3QsdG1wbCxzaCxza2VsLHhtbCxzb3BtLGh0bWx9Cmlnbm9yZSA9IEtlcm5lbC9MYW5ndWFnZS8qLnBtIEN1c3RvbS9LZXJuZWwvTGFuZ3VhZ2UvKi5wbQoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkNvbW1vbjo6T3JpZ2luXQpzZWxlY3QgPSAqKi8qLntwbCxwc2dpLHBtLHQsanMsY3NzLHR0LHhtbCxzb3BtfQppZ25vcmUgPSBLZXJuZWwvQ29uZmlnL0ZpbGVzL1paWioucG0KOyBJZ25vcmUgZG9jYm9vayBkb2N1bWVudGF0aW9ucwppZ25vcmUgPSAqL2NvbnRlbnQvKiovKi54bWwKClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpDb21tb246OkN1c3RvbWl6YXRpb25NYXJrZXJzVFRdCnNlbGVjdCA9IEN1c3RvbS9LZXJuZWwvT3V0cHV0L0hUTUwvKiovKi50dApzZWxlY3QgPSBLZXJuZWwvT3V0cHV0L0hUTUwvKiovKi50dAoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkNvbW1vbjo6Q3VzdG9taXphdGlvbk1hcmtlcnNdCnNlbGVjdCA9ICoqLyoue3BsLHBzZ2kscG0sdCxqcyxjc3MsdHR9Cmlnbm9yZSA9IEtlcm5lbC9Db25maWcucG0KaWdub3JlID0gS2VybmVsL0NvbmZpZy9HZW5lcmljQWdlbnQucG0KaWdub3JlID0gS2VybmVsL0NvbmZpZy9GaWxlcy9aWloqLnBtCmlnbm9yZSA9IEtlcm5lbC9MYW5ndWFnZS8qLnBtIEN1c3RvbS9LZXJuZWwvTGFuZ3VhZ2UvKi5wbQoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlhNTDo6RG9jYm9vazo6UmVwbGFjZVN1cHBvcnRFbWFpbF0Kc2VsZWN0ID0gZG9jLyoqLyoueG1sCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpEb2Nib29rOjpSZW1vdmVDb250YWN0Q2hhcHRlcl0Kc2VsZWN0ID0gZG9jLyoqLyoueG1sCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6Q29tbW9uOjpQcm9oaWJpdEVtYWlsQWRkcmVzc2VzXQpzZWxlY3QgPSAqKi8qLntwbCxwbSxwc2dpLHQsdHQsanMseG1sLHNvcG19Cgo7WytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkNvbW1vbjo6VHJhbnNsYXRhYmxlU3RyaW5nc1NwZWxsQ2hlY2tdCjtzZWxlY3QgPSAqKi8qLntwbCxwbSx0dCxqcyx4bWx9CgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6Q29tbW9uOjpSZW1vdmVDVlNJRHNdCnNlbGVjdCA9ICoqLyoue3BsLHBtLHBzZ2ksdCx4bWwsdHQsZGlzdCxzcGVjLGpzfQpzZWxlY3QgPSB2YXIvY3Jvbi8qCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6Q29tbW9uOjpWYWxpZGF0ZUZpbGVuYW1lXQpzZWxlY3QgPSAqCgo7CjsgQ3Jvbgo7CgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6Q3Jvbjo6Q3JvblNjcmlwdHNdCnNlbGVjdCA9IHZhci9jcm9uLyouZGlzdAoKOwo7IEphdmFTY3JpcHQKOwoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkphdmFTY3JpcHQ6OkRlYnVnQ29kZV0Kc2VsZWN0ID0gKiovKi5qcwppZ25vcmUgPSBzY3JpcHRzL3dlYnBhY2svKiovKgoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkphdmFTY3JpcHQ6OlVubG9hZEV2ZW50XQpzZWxlY3QgPSAqKi8qLmpzICoqLyoudHQKClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpKYXZhU2NyaXB0OjpGaWxlTmFtZV0Kc2VsZWN0ID0gKiovKi5qcwppZ25vcmUgPSAqKi90ZXN0LyoKClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpKYXZhU2NyaXB0OjpGaWxlTmFtZVVuaXRUZXN0XQpzZWxlY3QgPSB2YXIvaHR0cGQvaHRkb2NzL2pzL3Rlc3QvKi5qcwoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkphdmFTY3JpcHQ6OkVTTGludF0Kc2VsZWN0ID0gKiovKi57anMsdnVlfQppZ25vcmUgPSBzY3JpcHRzL3Rlc3Qvc2FtcGxlL0xvYWRlci8qKi8qCjsgSWdub3JlIHRoaXMgc2xvdyBwbHVnaW4gZm9yIG1vcmUgYWdpbGUgT1RSU0NvZGVQb2xpY3kgZmlsdGVyIGRldmVsb3BtZW50IHdpdGggYSBjdXN0b20gbW9kZSAiZmFzdCIuCmV4Y2VwdF9tb2RlcyA9IGZhc3QKClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpKYXZhU2NyaXB0OjpWdWU6OkV2ZW50TGlzdGVuZXJzXQpzZWxlY3QgPSBGcm9udGVuZC8qKi8qLntqcyx2dWV9Cmlnbm9yZSA9IEZyb250ZW5kL1Rlc3RzLyoqLyoKCjsKOyBMZWdhbAo7CgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TGVnYWw6OkFkZHJlc3NVcGRhdGVdCnNlbGVjdCA9IGRvYy8qKi8qLnhtbAoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkxlZ2FsOjpMaWNlbnNlVmFsaWRhdG9yXQpzZWxlY3QgPSAqKi8qLntwbCxwbSxwc2dpLHQsdHQsc3BlYyxqcyxjc3Msc2Nzcyx2dWUsZGlzdCxzaCxza2VsLHhtbCxzb3BtfQppZ25vcmUgPSBDT1BZSU5HIFJFTEVBU0UgQ1JFRElUUwppZ25vcmUgPSBLZXJuZWwvQ29uZmlnLnBtIEtlcm5lbC9Db25maWcvKiovWlpaKi5wbSBLZXJuZWwvQ29uZmlnL0ZpbGVzL1VzZXIvKi5wbQppZ25vcmUgPSBLZXJuZWwvV2ViQXBwLmNvbmYuZGlzdAppZ25vcmUgPSBzY3JpcHRzL2F1dG9fYnVpbGQvc3BlYy90ZW1wbGF0ZXMvKiovKgppZ25vcmUgPSBzY3JpcHRzL3Rlc3Qvc2FtcGxlL0xvYWRlci8qLm1pbi57Y3NzLGpzfQppZ25vcmUgPSBzY3JpcHRzL3Rlc3Qvc2FtcGxlL1N5c0NvbmZpZy9NaWdyYXRpb24vKiovWlpaKi5wbQppZ25vcmUgPSBzY3JpcHRzL0RCVXBkYXRle1RvNix9L1Rhc2tDb25maWcvKi55bWwuZGlzdAppZ25vcmUgPSB2YXIvaHR0cGQvaHRkb2NzL2NvbW1vbi8qKi8qLmNzcwo7IE9UUlNDb250aW51b3VzSW50ZWdyYXRpb25Qcm92aXNpb25lciAtIGRlcGxveW1lbnQgdGVtcGxhdGUgaW5jbHVkZXMKaWdub3JlID0gKiovKi50dC5zaAo7IGRldnNoYXJlCmlnbm9yZSA9ICoqLyouanNvbi5kaXN0CgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TGVnYWw6OlJlcGxhY2VDb3B5cmlnaHRdCnNlbGVjdCA9ICoqLyoue3BsLHBtLHBzZ2ksdCx0dCxzcGVjLGpzLGNzcyxzY3NzLHZ1ZSxkaXN0LHRtcGwsc2gsc2tlbCx4bWwsc29wbSxodG1sLHNlcnZpY2UsY29uZixleGFtcGxlLHRlbXBsYXRlfQpzZWxlY3QgPSAuKi5kaXN0IC5iYXNoX2NvbXBsZXRpb24Kc2VsZWN0ID0gdmFyL2Nyb24vKgpzZWxlY3QgPSB2YXIvZ2l0L2hvb2tzLyotcmVjZWl2ZQpzZWxlY3QgPSBkb2N1bWVudGF0aW9uLnltbAppZ25vcmUgPSBLZXJuZWwvQ29uZmlnLnBtIEtlcm5lbC9Db25maWcvKiovWlpaKi5wbQppZ25vcmUgPSBtb2R1bGUtZm9ybWF0LnhtbCxjb2Rlc3ludGF4LnhtbCxsYW5ndWFnZS10cmFuc2xhdGlvbnMueG1sLHdyaXRpbmctb3Rycy1hcHBsaWNhdGlvbi54bWwsdGVzdC1tZWNoYW5pc20ueG1sCjsgRG9uJ3QgcnVuIHRoaXMgaW4gdGhlIENJIHRvIGF2b2lkIHVwZGF0ZXMgb24geWVhciBjaGFuZ2VzLiBJdCBpcyBlbm91Z2ggdG8gdXBkYXRlIHRoZSBjb2RlIHdoZW4gaXQgaXMgY2hhbmdlZC4Kb25seV9tb2RlcyA9IGNsaSBlZGl0b3IgY29tbWl0CgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TGVnYWw6OlNPUE1MaWNlbnNlXQpzZWxlY3QgPSAqLntvcG0sc29wbX0KCjsKOyBQT1QvUE8KOwoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBPOjpEb2Nib29rTGludF0Kc2VsZWN0ID0gaTE4bi8qKi8qLntwb3QscG99CnNlbGVjdCA9IGxvY2FsZS8qKi8qLntwb3QscG99CgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UE86OkhUTUxUYWdzXQpzZWxlY3QgPSBpMThuLyoqLyoue3BvdCxwb30KClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQTzo6bXNnZm10XQpzZWxlY3QgPSBpMThuLyoqLyoue3BvdCxwb30Kc2VsZWN0ID0gbG9jYWxlLyoqLyoue3BvdCxwb30KCjsKOyBQZXJsCjsKClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpCaW5TY3JpcHRzXQpzZWxlY3QgPSBiaW4vKi5wbAoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OkNhY2hlTmV3XQpzZWxlY3QgPSAqKi8qLntwbCxwc2dpLHBtfQpzZWxlY3QgPSBLZXJuZWwvQ29uZmlnLnBtLmRpc3QKaWdub3JlID0gS2VybmVsL0xhbmd1YWdlLyoucG0gQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBtCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6REJPYmplY3RdCnNlbGVjdCA9IEtlcm5lbC9Nb2R1bGVzLyoqLyoucG0gQ3VzdG9tL0tlcm5lbC9Nb2R1bGVzLyoqLyoucG0KaWdub3JlID0gS2VybmVsL0xhbmd1YWdlLyoucG0gQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBtCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6RGllRXhpdF0Kc2VsZWN0ID0gS2VybmVsL01vZHVsZXMvKiovKi5wbSBDdXN0b20vS2VybmVsL01vZHVsZXMvKiovKi5wbQppZ25vcmUgPSBLZXJuZWwvTGFuZ3VhZ2UvKi5wbSBDdXN0b20vS2VybmVsL0xhbmd1YWdlLyoucG0KClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpEdW1wZXJdCnNlbGVjdCA9ICoqLyoue3BsLHBtLHBzZ2l9CnNlbGVjdCA9IEtlcm5lbC9Db25maWcucG0uZGlzdAppZ25vcmUgPSBLZXJuZWwvTGFuZ3VhZ2UvKi5wbSBDdXN0b20vS2VybmVsL0xhbmd1YWdlLyoucG0KClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpGb3JlYWNoVG9Gb3JdCnNlbGVjdCA9ICoqLyoue3BsLHBtLHBzZ2ksdH0Kc2VsZWN0ID0gS2VybmVsL0NvbmZpZy5wbS5kaXN0Cmlnbm9yZSA9IEtlcm5lbC9MYW5ndWFnZS8qLnBtIEN1c3RvbS9LZXJuZWwvTGFuZ3VhZ2UvKi5wbQoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OkZvck15XQpzZWxlY3QgPSAqKi8qLntwbCxwc2dpLHBtLHR9CnNlbGVjdCA9IEtlcm5lbC9Db25maWcucG0uZGlzdAppZ25vcmUgPSBLZXJuZWwvTGFuZ3VhZ2UvKi5wbSBDdXN0b20vS2VybmVsL0xhbmd1YWdlLyoucG0KClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpJU0FdCnNlbGVjdCA9ICoqLyoue3BsLHBtLHBzZ2ksdH0Kc2VsZWN0ID0gS2VybmVsL0NvbmZpZy5wbS5kaXN0Cmlnbm9yZSA9IEtlcm5lbC9MYW5ndWFnZS8qLnBtIEN1c3RvbS9LZXJuZWwvTGFuZ3VhZ2UvKi5wbQoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OkxheW91dE9iamVjdF0Kc2VsZWN0ID0gKiovKi57cGwscG0scHNnaSx0fQpzZWxlY3QgPSBLZXJuZWwvQ29uZmlnLnBtLmRpc3QKaWdub3JlID0gc2NyaXB0cy90ZXN0LyoqLyoKaWdub3JlID0gS2VybmVsL3tNb2R1bGVzLE91dHB1dH0vKiovKiBDdXN0b20vS2VybmVsL3tNb2R1bGVzLE91dHB1dH0vKiovKgppZ25vcmUgPSBLZXJuZWwvU3lzdGVtL1dlYi8qIEN1c3RvbS9LZXJuZWwvU3lzdGVtL1dlYi8qCmlnbm9yZSA9IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkLyoqLyogQ3VzdG9tL0tlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkLyoqLyoKaWdub3JlID0gS2VybmVsL0xhbmd1YWdlLyoucG0gQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBtCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6Tm9FeGl0SW5Db25zb2xlQ29tbWFuZHNdCnNlbGVjdCA9IEtlcm5lbC9TeXN0ZW0vQ29uc29sZS9Db21tYW5kLyoqLyoucG0gQ3VzdG9tL0tlcm5lbC9TeXN0ZW0vQ29uc29sZS9Db21tYW5kLyoqLyoucG0KClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpOb1NoZWJhbmdMaW5lXQpzZWxlY3QgPSAqKi8qLntwbSx0fQpzZWxlY3QgPSBLZXJuZWwvQ29uZmlnLnBtLmRpc3QKaWdub3JlID0gS2VybmVsL0xhbmd1YWdlLyoucG0gQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBtCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6T2JqZWN0RGVwZW5kZW5jaWVzXQpzZWxlY3QgPSAqKi8qLntwbX0Kc2VsZWN0ID0gS2VybmVsL0NvbmZpZy5wbS5kaXN0Cmlnbm9yZSA9IEtlcm5lbC9MYW5ndWFnZS8qLnBtIEN1c3RvbS9LZXJuZWwvTGFuZ3VhZ2UvKi5wbQoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6Ok9iamVjdE1hbmFnZXJDcmVhdGlvbl0Kc2VsZWN0ID0gKiovKi57cG19CnNlbGVjdCA9IEtlcm5lbC9Db25maWcucG0uZGlzdAppZ25vcmUgPSBLZXJuZWwvTGFuZ3VhZ2UvKi5wbSBDdXN0b20vS2VybmVsL0xhbmd1YWdlLyoucG0KClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpPYmplY3ROYW1lU3BhY2VdCnNlbGVjdCA9ICoqLyoue3BsLHBtLHR9CnNlbGVjdCA9IEtlcm5lbC9Db25maWcucG0uZGlzdAppZ25vcmUgPSBLZXJuZWwvTW9kdWxlcy8qKi8qIEN1c3RvbS9LZXJuZWwvTW9kdWxlcy8qKi8qCmlnbm9yZSA9IEtlcm5lbC9MYW5ndWFnZS8qLnBtIEN1c3RvbS9LZXJuZWwvTGFuZ3VhZ2UvKi5wbQoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlBhcmFtT2JqZWN0XQpzZWxlY3QgPSAqKi8qLntwbCxwc2dpfQpzZWxlY3QgPSBLZXJuZWwvU3lzdGVtLyoqLyoucG0gQ3VzdG9tL0tlcm5lbC9TeXN0ZW0vKiovKi5wbQppZ25vcmUgPSBLZXJuZWwvU3lzdGVtL1dlYi8qIEN1c3RvbS9LZXJuZWwvU3lzdGVtL1dlYi8qCmlnbm9yZSA9IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkLyoqLyogQ3VzdG9tL0tlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkLyoqLyoKaWdub3JlID0gS2VybmVsL0xhbmd1YWdlLyoucG0gQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBtCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UGVybENyaXRpY10Kc2VsZWN0ID0gKiovKi57cGwscG0scHNnaSx0fQppZ25vcmUgPSBLZXJuZWwvQ29uZmlnLnBtCmlnbm9yZSA9IEtlcm5lbC9MYW5ndWFnZS8qLnBtIEN1c3RvbS9LZXJuZWwvTGFuZ3VhZ2UvKi5wbQppZ25vcmUgPSBzY3JpcHRzL3Rlc3Qvc2FtcGxlLyoqLyoKOyBJZ25vcmUgdGhpcyBzbG93IHBsdWdpbiBmb3IgbW9yZSBhZ2lsZSBPVFJTQ29kZVBvbGljeSBmaWx0ZXIgZGV2ZWxvcG1lbnQgd2l0aCBhIGN1c3RvbSBtb2RlICJmYXN0Ii4KZXhjZXB0X21vZGVzID0gZmFzdAoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlBlcmxUaWR5XQpzZWxlY3QgPSAqKi8qLntwbCxwbSxwc2dpLHR9Cmlnbm9yZSA9IEtlcm5lbC9Db25maWcucG0gS2VybmVsL0NvbmZpZy9EZWZhdWx0cy5wbSBLZXJuZWwvQ29uZmlnLyoqL1paWioucG0gS2VybmVsL0NvbmZpZy9GaWxlcy9Vc2VyLyoucG0KaWdub3JlID0gS2VybmVsL0xhbmd1YWdlLyoucG0gQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBtCmFyZ3YgPSAtbD0xMjAgLWk9NCAtY2k9NCAtdnQ9MCAtdnRjPTAgLWN0aT0wIC1wdD0xIC1idD0xIC1zYnQ9MSAtYmJ0PTEgLW5zZnMgLW5vbHEgLWJiYW8gLW5vbGEgLW5kbmwgLWNhYj0wCjsgSWdub3JlIHRoaXMgc2xvdyBwbHVnaW4gZm9yIG1vcmUgYWdpbGUgT1RSU0NvZGVQb2xpY3kgZmlsdGVyIGRldmVsb3BtZW50IHdpdGggYSBjdXN0b20gbW9kZSAiZmFzdCIuCmV4Y2VwdF9tb2RlcyA9IGZhc3QKClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpQb2Q6OkZ1bmN0aW9uUG9kXQpzZWxlY3QgPSAqKi8qLntwbX0KaWdub3JlID0gS2VybmVsL0xhbmd1YWdlLyoucG0gQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBtCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UG9kOjpOYW1lUG9kXQpzZWxlY3QgPSAqKi8qLntwbX0KaWdub3JlID0gS2VybmVsL0xhbmd1YWdlLyoucG0gQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBtCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UG9kOjpTcGVsbENoZWNrXQpzZWxlY3QgPSAqKi8qLntwbSxwb2R9Cmlnbm9yZSA9IEtlcm5lbC9MYW5ndWFnZS8qLnBtIEN1c3RvbS9LZXJuZWwvTGFuZ3VhZ2UvKi5wbQo7IElnbm9yZSB0aGlzIHNsb3cgcGx1Z2luIGZvciBtb3JlIGFnaWxlIE9UUlNDb2RlUG9saWN5IGZpbHRlciBkZXZlbG9wbWVudCB3aXRoIGEgY3VzdG9tIG1vZGUgImZhc3QiLgpleGNlcHRfbW9kZXMgPSBmYXN0CgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UG9kOjpWYWxpZGF0b3JdCnNlbGVjdCA9ICoqLyoue3BtLHBvZCxwb2QuZGlzdH0KaWdub3JlID0gS2VybmVsL0xhbmd1YWdlLyoucG0gQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBtCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UHJpbnRdCnNlbGVjdCA9IEtlcm5lbC9Nb2R1bGVzLyoqLyoucG0gQ3VzdG9tL0tlcm5lbC9Nb2R1bGVzLyoqLyoucG0KCjsgJEtlcm5lbDo6T00gbXVzdCBub3QgYmUgdXNlZCBpbiB0aGUgYmFzZSBXZWJBcHAgaW5mcmFzdHJ1Y3R1cmUsIG9ubHkKOyAgIGluIGNvbnRyb2xsZXJzLCBjb250cm9sbGVyIHV0aWxpdHkgcGFja2FnZXMgYW5kIHRoZSBwbHVnaW4KOyAgIHByb3ZpZGluZyBLZXJuZWw6Ok9NIHRvIHRoZSBjb250cm9sbGVycy4KWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlByb2hpYml0T2JqZWN0TWFuYWdlcl0Kc2VsZWN0ID0gS2VybmVsL1dlYkFwcC5wbQpzZWxlY3QgPSBLZXJuZWwvV2ViQXBwLyoucG0KaWdub3JlID0gS2VybmVsL1dlYkFwcC9QbHVnaW4vKiovKi5wbQppZ25vcmUgPSBLZXJuZWwvV2ViQXBwL1BsdWdpbi8qUHJvdmlkZU9iamVjdE1hbmFnZXIucG0KClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpQcm9oaWJpdE1vam9KU09OXQpzZWxlY3QgPSAqKi8qLntwbX0KaWdub3JlID0gS2VybmVsL0xhbmd1YWdlLyoucG0gQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBtCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UmVxdWlyZV0Kc2VsZWN0ID0gKiovKi57cGwscHNnaSxwbSx0fQpzZWxlY3QgPSBLZXJuZWwvQ29uZmlnLnBtLmRpc3QKaWdub3JlID0gc2NyaXB0cy90ZXN0L1NlbGVuaXVtLyoqLyoudAppZ25vcmUgPSBLZXJuZWwvTGFuZ3VhZ2UvKi5wbSBDdXN0b20vS2VybmVsL0xhbmd1YWdlLyoucG0KClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpTaGViYW5nTGluZV0Kc2VsZWN0ID0gKiovKi57cGwscHNnaX0KClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpTb3J0S2V5c10Kc2VsZWN0ID0gKiovKi57cGwscG0scHNnaSx0fQpzZWxlY3QgPSBLZXJuZWwvQ29uZmlnLnBtLmRpc3QKaWdub3JlID0gS2VybmVsL0xhbmd1YWdlLyoucG0gQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBtCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6U3ViRGVjbGFyYXRpb25dCnNlbGVjdCA9ICoqLyoue3BsLHBtLHBzZ2ksdH0Kc2VsZWN0ID0gS2VybmVsL0NvbmZpZy5wbS5kaXN0Cmlnbm9yZSA9IEtlcm5lbC9MYW5ndWFnZS8qLnBtIEN1c3RvbS9LZXJuZWwvTGFuZ3VhZ2UvKi5wbQoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlN5bnRheENoZWNrXQpzZWxlY3QgPSAqKi8qLntwbCxwbSxwc2dpLHR9CnNlbGVjdCA9IEtlcm5lbC9Db25maWcucG0uZGlzdAo7IElnbm9yZSB0aGlzIHNsb3cgcGx1Z2luIGZvciBtb3JlIGFnaWxlIE9UUlNDb2RlUG9saWN5IGZpbHRlciBkZXZlbG9wbWVudCB3aXRoIGEgY3VzdG9tIG1vZGUgImZhc3QiLgpleGNlcHRfbW9kZXMgPSBmYXN0CgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6VGVzdHM6OkhlbHBlcl0Kc2VsZWN0ID0gKiovKi57dH0KClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpUaW1lXQpzZWxlY3QgPSAqKi8qLntwbCxwbSxwc2dpLHR9CnNlbGVjdCA9IEtlcm5lbC9Db25maWcucG0uZGlzdAppZ25vcmUgPSBzY3JpcHRzL3Rlc3QvKiovKgppZ25vcmUgPSBLZXJuZWwvTGFuZ3VhZ2UvKi5wbSBDdXN0b20vS2VybmVsL0xhbmd1YWdlLyoucG0KClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpUcmFuc2xhdGFibGVdCnNlbGVjdCA9ICoqLyoue3BsLHBtLHBzZ2ksdH0KaWdub3JlID0gS2VybmVsL0NvbmZpZy5wbSBLZXJuZWwvQ29uZmlnLyoqL1paWioucG0KaWdub3JlID0gS2VybmVsL0xhbmd1YWdlLnBtCmlnbm9yZSA9IEtlcm5lbC9MYW5ndWFnZS8qLnBtIEN1c3RvbS9LZXJuZWwvTGFuZ3VhZ2UvKi5wbQppZ25vcmUgPSBzY3JpcHRzL3Rlc3QvKiovKgoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlRyYW5zbGF0aW9uRW5jb2RpbmddCnNlbGVjdCA9IEtlcm5lbC9MYW5ndWFnZS8qLnBtIEN1c3RvbS9LZXJuZWwvTGFuZ3VhZ2UvKi5wbQoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlVuaXRUZXN0Q29uZmlnQ2hhbmdlc10Kc2VsZWN0ID0gc2NyaXB0cy90ZXN0LyoqLyoue3R9CgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6VXNlUGFyZW50XQpzZWxlY3QgPSAqKi8qLnBtICoqLyoucG0uc2tlbApzZWxlY3QgPSBLZXJuZWwvQ29uZmlnLnBtLmRpc3QKaWdub3JlID0gS2VybmVsL0xhbmd1YWdlLyoucG0gQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBtCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6VXNlV2FybmluZ3NdCnNlbGVjdCA9ICoqLyoue3BsLHBtLHBzZ2ksdH0Kc2VsZWN0ID0gS2VybmVsL0NvbmZpZy5wbS5kaXN0Cmlnbm9yZSA9IEtlcm5lbC9MYW5ndWFnZS8qLnBtIEN1c3RvbS9LZXJuZWwvTGFuZ3VhZ2UvKi5wbQoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OldlYkFwcDo6SGVhZEdldFdpdGhvdXRCb2R5XQpzZWxlY3QgPSBLZXJuZWwvV2ViQXBwL0NvbnRyb2xsZXIvKiovKi5wbQoKOwo7IFNPUE0KOwoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlNPUE06OkNvZGVUYWdzXQpzZWxlY3QgPSAqLntvcG0sc29wbX0KClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpTT1BNOjpGaWxlTGlzdF0Kc2VsZWN0ID0gKi57b3BtLHNvcG19CgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6U09QTTo6RmlsZVJpZ2h0c10Kc2VsZWN0ID0gKi57b3BtLHNvcG19CgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6U09QTTo6TmFtZV0Kc2VsZWN0ID0gKi57c29wbX0KClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpTT1BNOjpPbmRlbWFuZFRlc3RpbmdQcmVzZW50XQpzZWxlY3QgPSAqLntvcG0sc29wbX0KClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpTT1BNOjpQYWNrYWdlUmVxdWlyZWRdCnNlbGVjdCA9ICoue29wbSxzb3BtfQoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlNPUE06OlJlcXVpcmVkRWxlbWVudHNdCnNlbGVjdCA9ICoue3NvcG19CgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6U09QTTo6WFNEVmFsaWRhdG9yXQpzZWxlY3QgPSAqLntzb3BtfQoKOwo7IFRUCjsKClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpUVDo6U2NyaXB0VXNhZ2VdCnNlbGVjdCA9ICoqLyoudHQKClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpUVDo6VHJhbnNsYXRpb25GaWx0ZXJdCnNlbGVjdCA9ICoqLyoudHQKCjsKOyBTUUwKOwoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlNRTDo6UmVzZXJ2ZWRXb3Jkc10Kc2VsZWN0ID0gKiovKi57eG1sLG9wbSxzb3BtfQoKOwo7IFdoaXRlc3BhY2UKOwoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OldoaXRlc3BhY2U6OkZvdXJTcGFjZXNdCnNlbGVjdCA9ICoqLyoue29wbSxzb3BtfQoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OldoaXRlc3BhY2U6OlRhYnNdCnNlbGVjdCA9ICoqLyoue3BsLHBtLHBzZ2ksdCx0dCxqcyx4bWwsb3BtLHNvcG19Cmlnbm9yZSA9IEtlcm5lbC9Db25maWcucG0gS2VybmVsL0NvbmZpZy8qKi9aWloqLnBtCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6V2hpdGVzcGFjZTo6VHJhaWxpbmdXaGl0ZXNwYWNlXQpzZWxlY3QgPSAqKi8qLntwbCxwbSxwc2dpLHQsdHQsanMseG1sLG9wbSxzb3BtLG1kfQppZ25vcmUgPSBLZXJuZWwvQ29uZmlnLnBtIEtlcm5lbC9Db25maWcvKiovWlpaKi5wbQoKOwo7IFhNTAo7CgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWdTeW50YXhdCnNlbGVjdCA9ICoqLyoueG1sCmlnbm9yZSA9IGRldmVsb3BtZW50L3NhbXBsZXMvY29uZmlnLyoueG1sCjsgaWdub3JlIC54bWwgZmlsZXMgaW4gZG9jdW1lbnRhdGlvbgppZ25vcmUgPSBkb2MvKiovKi54bWwKaWdub3JlID0gZW4vY29udGVudC8qKi8qLnhtbAppZ25vcmUgPSBkZS9jb250ZW50LyoqLyoueG1sCmlnbm9yZSA9IGh1L2NvbnRlbnQvKiovKi54bWwKClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkNvbmZpZ0Rlc2NyaXB0aW9uXQpzZWxlY3QgPSBLZXJuZWwvQ29uZmlnLyoqLyoueG1sCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uXQpzZWxlY3QgPSBLZXJuZWwvQ29uZmlnLyoqLyoueG1sCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWd1cmF0aW9uOjpVbml0VGVzdEJsYWNrbGlzdF0Kc2VsZWN0ID0gS2VybmVsL0NvbmZpZy8qKi8qLnhtbAoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlhNTDo6Q29uZmlndXJhdGlvbjo6WFNEVmFsaWRhdG9yXQpzZWxlY3QgPSBLZXJuZWwvQ29uZmlnLyoqLyoueG1sCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWd1cmF0aW9uOjpZQU1MSW5kZW50YXRpb25dCnNlbGVjdCA9IEtlcm5lbC9Db25maWcvKiovKi54bWwKClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkNvbmZpZ3VyYXRpb246OllBTUxWYWxpZGF0b3JdCnNlbGVjdCA9IEtlcm5lbC9Db25maWcvKiovKi54bWwKClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkRhdGFiYXNlOjpLZXlMZW5ndGhdCnNlbGVjdCA9IHNjcmlwdHMvZGF0YWJhc2Uvb3Rycy1zY2hlbWEueG1sCnNlbGVjdCA9ICoue3NvcG19CgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpEYXRhYmFzZTo6WFNEVmFsaWRhdG9yXQpzZWxlY3QgPSBzY3JpcHRzL2RhdGFiYXNlLyoueG1sCnNlbGVjdCA9IHNjcmlwdHMvZGF0YWJhc2UvdXBkYXRlLyoueG1sCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpEb2Nib29rOjpCaW5TY3JpcHRzXQpzZWxlY3QgPSBkb2MvKiovKi54bWwKO3NlbGVjdCA9IGVuL2NvbnRlbnQvKiovKi54bWwKClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkRvY2Jvb2s6OkltYWdlT3V0cHV0XQpzZWxlY3QgPSBkb2MvKiovKi54bWwKc2VsZWN0ID0gZW4vY29udGVudC8qKi8qLnhtbAoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlhNTDo6RG9jYm9vazo6WFNEVmFsaWRhdG9yXQpzZWxlY3QgPSBkb2MvKiovKi54bWwKO3NlbGVjdCA9IGVuL2NvbnRlbnQvKiovKi54bWwKClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OldTREw6OlhTRFZhbGlkYXRvcl0Kc2VsZWN0ID0gKiovKi53c2RsCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpXQURMOjpYU0RWYWxpZGF0b3JdCnNlbGVjdCA9ICoqLyoud2FkbAoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlhNTDo6TGludF0Kc2VsZWN0ID0gKiovKi57eG1sLHhzZH0KClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkxpbnRXaXRoT3VyUGFyc2Vyc10Kc2VsZWN0ID0gOyoqLyoueG1sCgo7CjsgTWlncmF0aW9ucyBPVFJTIDUKOwoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6Ok1pZ3JhdGlvbnM6Ok9UUlM1OjpIZWFkZXJsaW5lRmlsZW5hbWVdCnNlbGVjdCA9ICoqLyoue3BsLHBtLHBzZ2ksdCx0dCxqcyxzcGVjfQpzZWxlY3QgPSAuKi5kaXN0IC5iYXNoX2NvbXBsZXRpb24KaWdub3JlID0gS2VybmVsL0NvbmZpZy9GaWxlcy9aWloqLnBtCmlnbm9yZSA9IEtlcm5lbC9MYW5ndWFnZS8qLnBtIEN1c3RvbS9LZXJuZWwvTGFuZ3VhZ2UvKi5wbQoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6Ok1pZ3JhdGlvbnM6Ok9UUlM1OjpPdXRwdXRGaWx0ZXJQcmVdCnNlbGVjdCA9IEtlcm5lbC9Db25maWcvKiovKi54bWwKClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpNaWdyYXRpb25zOjpPVFJTNTo6UG9wdXBdCnNlbGVjdCA9ICoqLyoudHQKClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpNaWdyYXRpb25zOjpPVFJTNTo6U3RhdGlzdGljc1ByZXZpZXddCnNlbGVjdCA9IEtlcm5lbC9TeXN0ZW0vU3RhdHMvRHluYW1pYy8qLnBtCgo7CjsgTWlncmF0aW9ucyBPVFJTIDYKOwoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6Ok1pZ3JhdGlvbnM6Ok9UUlM2OjpEYXRlVGltZV0Kc2VsZWN0ID0gKiovKi57cGwscG0scHNnaSx0fQppZ25vcmUgPSBLZXJuZWwvQ29uZmlnL0ZpbGVzL1paWioucG0KaWdub3JlID0gS2VybmVsL0xhbmd1YWdlLyoucG0gQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBtCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TWlncmF0aW9uczo6T1RSUzY6OlBlcmxDb25maWdGaWxlRm9ybWF0XQpzZWxlY3QgPSBLZXJuZWwvQ29uZmlnL0ZpbGVzLyoucG0KClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpNaWdyYXRpb25zOjpPVFJTNjo6UGVybWlzc2lvbkRhdGFOb3RJblNlc3Npb25dCnNlbGVjdCA9ICoqLyoue3BsLHBtLHBzZ2ksdH0KaWdub3JlID0gS2VybmVsL0xhbmd1YWdlLyoucG0gQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBtCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TWlncmF0aW9uczo6T1RSUzY6OlN5c0NvbmZpZ10Kc2VsZWN0ID0gKiovKi57cGwscG0scHNnaSx0fQppZ25vcmUgPSBLZXJuZWwvTGFuZ3VhZ2UvKi5wbSBDdXN0b20vS2VybmVsL0xhbmd1YWdlLyoucG0KClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpNaWdyYXRpb25zOjpPVFJTNjo6VGltZU9iamVjdF0Kc2VsZWN0ID0gKiovKi57cGwscG0scHNnaSx0fQppZ25vcmUgPSBLZXJuZWwvU3lzdGVtL1RpbWUucG0KaWdub3JlID0gc2NyaXB0cy90ZXN0L1RpbWUudAppZ25vcmUgPSBzY3JpcHRzL3Rlc3QvVGltZS8qKi8qLnQKaWdub3JlID0gS2VybmVsL0xhbmd1YWdlLyoucG0gQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBtCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TWlncmF0aW9uczo6T1RSUzY6OlRpbWVab25lT2Zmc2V0XQpzZWxlY3QgPSAqKi8qLntwbCxwbSxwc2dpLHR9Cmlnbm9yZSA9IEtlcm5lbC9Db25maWcvRmlsZXMvWlpaKi5wbQppZ25vcmUgPSBLZXJuZWwvTGFuZ3VhZ2UvKi5wbSBDdXN0b20vS2VybmVsL0xhbmd1YWdlLyoucG0KClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpNaWdyYXRpb25zOjpPVFJTNjo6WE1MRnJvbnRlbmROYXZpZ2F0aW9uXQpzZWxlY3QgPSBLZXJuZWwvQ29uZmlnLyoqLyoueG1sCgo7CjsgTWlncmF0aW9ucyBPVFJTIDcKOwoKWytUaWR5QWxsOjpQbHVnaW46Ok9UUlM6Ok1pZ3JhdGlvbnM6Ok9UUlM3OjpEZXByZWNhdGVkU2V0dGluZ3NdCnNlbGVjdCA9IEtlcm5lbC9Db25maWcvKiovKi54bWwKClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpNaWdyYXRpb25zOjpPVFJTNzo6VHJhbnNsYXRhYmxlU3RyaW5nc1BsYWNlaG9sZGVyc10Kc2VsZWN0ID0gKiovKi57cGwscG0sdHQsanMseG1sLGh0bWwudG1wbH0KaWdub3JlID0gS2VybmVsL0xhbmd1YWdlLyoucG0gQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBtCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TWlncmF0aW9uczo6T1RSUzc6OldlYkFwcE5vTGVnYWN5Q29kZV0Kc2VsZWN0ID0gS2VybmVsL1dlYkFwcC5wbQpzZWxlY3QgPSBLZXJuZWwvV2ViQXBwLyoqLyoue3BsLHBtfQoKOwo7IE1pZ3JhdGlvbnMgT1RSUyA4CjsKClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpNaWdyYXRpb25zOjpPVFJTODo6VXNlbGVzc0NvbW1lbnRzXQpzZWxlY3QgPSAqKi8qLntwbCxwbSxwc2dpLHR9Cmlnbm9yZSA9IEtlcm5lbC9Db25maWcvRmlsZXMvWlpaKi5wbQppZ25vcmUgPSBLZXJuZWwvTGFuZ3VhZ2UvKi5wbSBDdXN0b20vS2VybmVsL0xhbmd1YWdlLyoucG0KClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpNaWdyYXRpb25zOjpPVFJTODo6TmV3VGVzdHNOb0xlZ2FjeUNvZGVdCnNlbGVjdCA9IEtlcm5lbC9UZXN0LyoqLyoucG0KCjsKOyBNaWdyYXRpb25zIE9UUlMgOQo7CgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TWlncmF0aW9uczo6T1RSUzk6OkRyb3BWYXJpYWJsZUNoZWNrXQpzZWxlY3QgPSAqKi8qLntwbCxwbSxwc2dpLHR9Cmlnbm9yZSA9IEtlcm5lbC9Db25maWcvRmlsZXMvWlpaKi5wbQppZ25vcmUgPSBLZXJuZWwvTGFuZ3VhZ2UvKi5wbSBDdXN0b20vS2VybmVsL0xhbmd1YWdlLyoucG0KClsrVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpNaWdyYXRpb25zOjpPVFJTOTo6VW5pbXBvcnRNb29zZV0Kc2VsZWN0ID0gKiovKi5wbQppZ25vcmUgPSBLZXJuZWwvQ29uZmlnL0ZpbGVzL1paWioucG0KaWdub3JlID0gS2VybmVsL0xhbmd1YWdlLyoucG0gQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBt
IyEvdXNyL2Jpbi9lbnYgcGVybAojIC0tCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7CnVzZSBGaW5kQmluIHF3KCRSZWFsQmluKTsKdXNlIGxpYiBkaXJuYW1lKCRSZWFsQmluKSAuICcvLi4vLi4vJzsKdXNlIGxpYiBkaXJuYW1lKCRSZWFsQmluKSAuICcvLi4vLi4vS2VybmVsLyc7ICAgICMgZmluZCBUaWR5QWxsCnVzZSBsaWIgZGlybmFtZSgkUmVhbEJpbikgLiAnLy4uLy4uL0tlcm5lbC9jcGFuLWxpYic7Cgp1c2UgVGlkeUFsbDo6T1RSUzo6R2l0OjpQcmVDb21taXQ7CgojIHNraXAgbWVyZ2UgY29tbWl0cwppZiAoIC1lICcuZ2l0L01FUkdFX01TRycgKSB7CiAgICBwcmludCAibWVyZ2UgY29tbWl0LiBza2lwcGluZyBjb21taXQgaG9vay4uLlxuIjsKICAgIGV4aXQ7Cn0KCm15ICRQcmVDb21taXQgPSBUaWR5QWxsOjpPVFJTOjpHaXQ6OlByZUNvbW1pdC0+bmV3KCk7CiRQcmVDb21taXQtPlJ1bigpOwo=
IyEvdXNyL2Jpbi9lbnYgcGVybAojIC0tCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7CnVzZSBGaW5kQmluIHF3KCRSZWFsQmluKTsKdXNlIGxpYiBkaXJuYW1lKCRSZWFsQmluKSAuICcvLi4vLi4vJzsKdXNlIGxpYiBkaXJuYW1lKCRSZWFsQmluKSAuICcvLi4vLi4vS2VybmVsLyc7ICAgICMgZmluZCBUaWR5QWxsCnVzZSBsaWIgZGlybmFtZSgkUmVhbEJpbikgLiAnLy4uLy4uL0tlcm5lbC9jcGFuLWxpYic7Cgp1c2UgVGlkeUFsbDo6T1RSUzo6R2l0OjpQcmVSZWNlaXZlOwoKbXkgJFByZVJlY2VpdmUgPSBUaWR5QWxsOjpPVFJTOjpHaXQ6OlByZVJlY2VpdmUtPm5ldygpOwokUHJlUmVjZWl2ZS0+UnVuKCk7Cg==
IyEvdXNyL2Jpbi9lbnYgcGVybAojIC0tCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgSU86OkZpbGU7Cgo9aGVhZDEgU1lOT1BTSVMKClRoaXMgaG9vayBpbnNlcnRzIGEgY3VzdG9tIHByZXBhcmVkIGNvbW1pdCBtZXNzYWdlIGludG8gdGhlIGdpdCBjb21taXQgbWVzc2FnZS4KCj1jdXQKCm15ICRPVFJTQ29tbWl0VGVtcGxhdGVGaWxlID0gJy5naXQvT1RSU0NvbW1pdFRlbXBsYXRlLm1zZyc7CgppZiAoIC1yICRPVFJTQ29tbWl0VGVtcGxhdGVGaWxlICkgewoKICAgICMgR2V0IG91ciBjb250ZW50IGFuZCBwcmVwZW5kIGl0CiAgICBteSAkRmlsZUhhbmRsZSA9IElPOjpGaWxlLT5uZXcoICRPVFJTQ29tbWl0VGVtcGxhdGVGaWxlLCAncicgKTsKICAgIG15IEBDb250ZW50ICAgID0gJEZpbGVIYW5kbGUtPmdldGxpbmVzKCk7CgogICAgIyBHZXQgdGhlIHByZS1wb3B1bGF0ZWQgZmlsZSBmcm9tIEdJVCBhbmQga2VlcCBpdHMgY29udGVudHMKICAgIG15ICRHaXRDb21taXRUZW1wbGF0ZUZpbGUgPSBzaGlmdDsKICAgICRGaWxlSGFuZGxlID0gSU86OkZpbGUtPm5ldyggJEdpdENvbW1pdFRlbXBsYXRlRmlsZSwgJ3InICk7CiAgICBwdXNoIEBDb250ZW50LCAkRmlsZUhhbmRsZS0+Z2V0bGluZXMoKTsKCiAgICAjIFdyaXRlIG5ldyBjb21taXQgbWVzc2FnZQogICAgJEZpbGVIYW5kbGUgPSBJTzo6RmlsZS0+bmV3KCAkR2l0Q29tbWl0VGVtcGxhdGVGaWxlLCAndycgKTsKICAgICRGaWxlSGFuZGxlLT5wcmludCggam9pbiAiIiwgQENvbnRlbnQgKTsKCiAgICAjIFJlbW92ZSBjdXN0b20gY29tbWl0IG1lc3NhZ2UgdGVtcGxhdGUKICAgIHVubGluayAkT1RSU0NvbW1pdFRlbXBsYXRlRmlsZTsKfQo=
IyEvdXNyL2Jpbi9lbnYgcGVybAojIC0tCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBDd2Q7CnVzZSBGaWxlOjpTcGVjOwp1c2UgRmluZEJpbiBxdygkUmVhbEJpbik7CgpteSAkRGlyZWN0b3J5ID0gZ2V0Y3dkOwoKIyBpbnN0YWxsIGhvb2sKdW5saW5rIEZpbGU6OlNwZWMtPmNhdGZpbGUoICREaXJlY3RvcnksICcuZ2l0JywgJ2hvb2tzJywgJ3ByZS1jb21taXQnICk7CnN5bWxpbmsoCiAgICBGaWxlOjpTcGVjLT5jYXRmaWxlKCAkUmVhbEJpbiwgJy4uJywgJ0tlcm5lbCcsICdUaWR5QWxsJywgJ2dpdC1ob29rcycsICdwcmUtY29tbWl0LnBsJyApLAogICAgRmlsZTo6U3BlYy0+Y2F0ZmlsZSggJERpcmVjdG9yeSwgJy5naXQnLCAnaG9va3MnLCAncHJlLWNvbW1pdCcgKQopOwp1bmxpbmsgRmlsZTo6U3BlYy0+Y2F0ZmlsZSggJERpcmVjdG9yeSwgJy5naXQnLCAnaG9va3MnLCAncHJlcGFyZS1jb21taXQtbXNnJyApOwpzeW1saW5rKAogICAgRmlsZTo6U3BlYy0+Y2F0ZmlsZSgKICAgICAgICAkUmVhbEJpbiwgJy4uJywgJ0tlcm5lbCcsICdUaWR5QWxsJywgJ2dpdC1ob29rcycsICdwcmVwYXJlLWNvbW1pdC1tc2cucGwnCiAgICApLAogICAgRmlsZTo6U3BlYy0+Y2F0ZmlsZSggJERpcmVjdG9yeSwgJy5naXQnLCAnaG9va3MnLCAncHJlcGFyZS1jb21taXQtbXNnJyApCik7CgpwcmludCAiSW5zdGFsbGVkIGdpdCBjb21taXQgaG9va3MgaW4gJERpcmVjdG9yeS5cblxuIjsK
IyEvdXNyL2Jpbi9lbnYgcGVybAojIC0tCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBDd2Q7CnVzZSBGaWxlOjpTcGVjOwoKbXkgJERpcmVjdG9yeSA9IGdldGN3ZDsKCnVubGluayBGaWxlOjpTcGVjLT5jYXRmaWxlKCAkRGlyZWN0b3J5LCAnLmdpdCcsICdob29rcycsICdwcmUtY29tbWl0JyApOwp1bmxpbmsgRmlsZTo6U3BlYy0+Y2F0ZmlsZSggJERpcmVjdG9yeSwgJy5naXQnLCAnaG9va3MnLCAncHJlcGFyZS1jb21taXQtbXNnJyApOwpwcmludCAiUmVtb3ZlZCBnaXQgaG9va3MgaW4gJERpcmVjdG9yeS5cblxuIjsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKCm15ICRCaW5EaXIgPSBkaXJuYW1lKCQwKTsKCm15ICRFU0xpbnREaXIgPSAkQmluRGlyIC4gJy8uLi9LZXJuZWwvVGlkeUFsbC9QbHVnaW4vT1RSUy9KYXZhU2NyaXB0L0VTTGludCc7CnJldHVybiAxIGlmICEtZCAkRVNMaW50RGlyOwoKbXkgJE5vZGVNb2R1bGVzRGlyID0gJEVTTGludERpciAuICcvbm9kZV9tb2R1bGVzJzsKaWYgKCAhLWQgJE5vZGVNb2R1bGVzRGlyICkgewogICAgJFNlbGYtPkZhbHNlKAogICAgICAgIDEsCiAgICAgICAgJ0Vycm9yOiBPVFJTQ29kZVBvbGljeSBwYWNrYWdlIG5vdCBkZXBsb3llZCBjb3JyZWN0bHksIG5vZGVfbW9kdWxlcyBmb2xkZXIgbWlzc2luZyEnCiAgICApOwogICAgcmV0dXJuIDE7Cn0KCiMgUGVyZm9ybWluZyBOUE0gYXVkaXQgdG8gbWFrZSBzdXJlIG5vIG5ldyBhZHZpc29yaWVzIGFyZSBpZGVudGlmaWVkLgpteSAkTlBNQXVkaXRSZXN1bHRKU09OID0gYGNkICRFU0xpbnREaXIgJiYgbnBtIGF1ZGl0IC0tanNvbmA7CgpteSAkTlBNQXVkaXRSZXN1bHQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpLT5EZWNvZGUoCiAgICBEYXRhID0+ICROUE1BdWRpdFJlc3VsdEpTT04sCik7CgpteSAkVnVsbmVyYWJpbGl0eUNvdW50ID0gMDsKbXkgQFZ1bG5lcmFiaWxpdGllczsKZm9yIG15ICRTZXZlcml0eSAocXcobG93IG1vZGVyYXRlIGhpZ2ggY3JpdGljYWwpKSB7CiAgICAkVnVsbmVyYWJpbGl0eUNvdW50ICs9ICROUE1BdWRpdFJlc3VsdC0+e21ldGFkYXRhfS0+e3Z1bG5lcmFiaWxpdGllc30tPnskU2V2ZXJpdHl9OwogICAgcHVzaCBAVnVsbmVyYWJpbGl0aWVzLCAiJE5QTUF1ZGl0UmVzdWx0LT57bWV0YWRhdGF9LT57dnVsbmVyYWJpbGl0aWVzfS0+eyRTZXZlcml0eX0gJFNldmVyaXR5IjsKfQoKJFNlbGYtPlRydWUoCiAgICAxLAogICAgIkZvdW5kICR7XChqb2luICcsICcsIEBWdWxuZXJhYmlsaXRpZXMpfSB2dWxuZXJhYmlsaXRpZXMiCik7CgojIEFkZCBtdXRlZCBhZHZpc29yeSBJRHMgdG8gdGhlIGxpc3QgYmVsb3cuCm15IEBNdXRlZEFkdmlzb3JpZXMgICAgPSBxdygpOwpteSAkTXV0ZWRBZHZpc29yeUNvdW50ID0gc2NhbGFyIEBNdXRlZEFkdmlzb3JpZXM7CgpteSAkQWR2aXNvcnlDb3VudCA9ICgga2V5cyAleyAkTlBNQXVkaXRSZXN1bHQtPnthZHZpc29yaWVzfSAvLyB7fSB9ICkgLSAkTXV0ZWRBZHZpc29yeUNvdW50OwokQWR2aXNvcnlDb3VudCA9IDAgaWYgJEFkdmlzb3J5Q291bnQgPCAwOwoKJFNlbGYtPlRydWUoCiAgICAxLAogICAgIkZvdW5kICRBZHZpc29yeUNvdW50IHNlY3VyaXR5IGFkdmlzb3JpZXMgKCRNdXRlZEFkdmlzb3J5Q291bnQgbXV0ZWQpIgopOwoKQURWSVNPUllfSUQ6CmZvciBteSAkQWR2aXNvcnlJRCAoIHNvcnQga2V5cyAleyAkTlBNQXVkaXRSZXN1bHQtPnthZHZpc29yaWVzfSAvLyB7fSB9ICkgewogICAgbmV4dCBBRFZJU09SWV9JRCBpZiBncmVwIHsgJF8gPT0gJEFkdmlzb3J5SUQgfSBATXV0ZWRBZHZpc29yaWVzOwoKICAgIG15ICRBZHZpc29yeSA9ICROUE1BdWRpdFJlc3VsdC0+e2Fkdmlzb3JpZXN9LT57JEFkdmlzb3J5SUR9OwoKICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAxLAogICAgICAgICJTZWN1cml0eSBhZHZpc29yeSBmb3IgJEFkdmlzb3J5LT57bW9kdWxlX25hbWV9IG1vZHVsZSwgc2V2ZXJpdHkgJEFkdmlzb3J5LT57c2V2ZXJpdHl9IChAeyAkQWR2aXNvcnktPntjdmVzfSAvLyBbXSB9KSIKICAgICk7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCnBhY2thZ2Ugc2NyaXB0czo6dGVzdDo6T1RSU0NvZGVQb2xpY3lQbHVnaW5zOyAgICAjIyBubyBjcml0aWMKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKdXNlIEZpbmRCaW4gcXcoJFJlYWxCaW4pOwp1c2UgbGliIGRpcm5hbWUoJFJlYWxCaW4pIC4gJy9LZXJuZWwvJzsgICAgICAgICAgIyBmaW5kIFRpZHlBbGwKCnVzZSB1dGY4OwoKdXNlIFRpZHlBbGw6Ok9UUlM7Cgp1c2UgS2VybmVsOjpDb25maWc7CnVzZSBLZXJuZWw6OlN5c3RlbTo6RW5jb2RlOwp1c2UgS2VybmVsOjpTeXN0ZW06OkxvZzsKdXNlIEtlcm5lbDo6U3lzdGVtOjpNYWluOwoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdPYmplY3QgPSBLZXJuZWw6OkNvbmZpZy0+bmV3KCk7CiAgICBteSAkRW5jb2RlT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06OkVuY29kZS0+bmV3KAogICAgICAgIENvbmZpZ09iamVjdCA9PiAkQ29uZmlnT2JqZWN0LAogICAgKTsKICAgIG15ICRMb2dPYmplY3QgPSBLZXJuZWw6OlN5c3RlbTo6TG9nLT5uZXcoCiAgICAgICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmplY3QsCiAgICAgICAgRW5jb2RlT2JqZWN0ID0+ICRFbmNvZGVPYmplY3QsCiAgICApOwogICAgbXkgJE1haW5PYmplY3QgPSBLZXJuZWw6OlN5c3RlbTo6TWFpbi0+bmV3KAogICAgICAgIENvbmZpZ09iamVjdCA9PiAkQ29uZmlnT2JqZWN0LAogICAgICAgIEVuY29kZU9iamVjdCA9PiAkRW5jb2RlT2JqZWN0LAogICAgICAgIExvZ09iamVjdCAgICA9PiAkTG9nT2JqZWN0LAogICAgKTsKCiAgICBteSAkSG9tZSA9ICRDb25maWdPYmplY3QtPkdldCgnSG9tZScpOwoKICAgICMgU3VwcHJlc3MgY29sb3JlZCBvdXRwdXQgdG8gbm90IGNsdXR0ZXIgbG9nIGZpbGVzLgogICAgbG9jYWwgJEVOVntPVFJTQ09ERVBPTElDWV9OT0NPTE9SfSA9IDE7CgogICAgbXkgJFRpZHlBbGwgPSBUaWR5QWxsOjpPVFJTLT5uZXdfZnJvbV9jb25mX2ZpbGUoCiAgICAgICAgIiRIb21lL0tlcm5lbC9UaWR5QWxsL3RpZHlhbGxyYyIsCiAgICAgICAgbm9fY2FjaGUgICA9PiAxLAogICAgICAgIGNoZWNrX29ubHkgPT4gMSwKICAgICAgICBtb2RlICAgICAgID0+ICd0ZXN0cycsCiAgICAgICAgcm9vdF9kaXIgICA9PiAkSG9tZSwKICAgICAgICBkYXRhX2RpciAgID0+IEZpbGU6OlNwZWMtPnRtcGRpcigpLAoKICAgICAgICAjdmVyYm9zZSAgICA9PiAxLAogICAgKTsKCiAgICBURVNUOgogICAgZm9yIG15ICRUZXN0ICggQHsgJFBhcmFte1Rlc3RzfSB9ICkgewoKICAgICAgICAjIFNldCBmcmFtZXdvcmsgdmVyc2lvbiBpbiBUaWR5QWxsIHNvIHRoYXQgcGx1Z2lucyBjYW4gdXNlIGl0LgogICAgICAgIG15ICggJEZyYW1ld29ya1ZlcnNpb25NYWpvciwgJEZyYW1ld29ya1ZlcnNpb25NaW5vciApID0gJFRlc3QtPntGcmFtZXdvcmt9ID1+IG0vKFxkKylbLl0oXGQrKS94bXM7CiAgICAgICAgJFRpZHlBbGw6Ok9UUlM6OkZyYW1ld29ya1ZlcnNpb25NYWpvciA9ICRGcmFtZXdvcmtWZXJzaW9uTWFqb3I7CiAgICAgICAgJFRpZHlBbGw6Ok9UUlM6OkZyYW1ld29ya1ZlcnNpb25NaW5vciA9ICRGcmFtZXdvcmtWZXJzaW9uTWlub3I7CgogICAgICAgICMgU2V0IHRoZSBsaXN0IG9mIGZpbGVzIHRvIHRoZSBzYW1lIG9uZSBkZWZpbmVkIGluIHRoZSB0ZXN0IGNhc2UuCiAgICAgICAgQFRpZHlBbGw6Ok9UUlM6OkZpbGVMaXN0ID0gQHsgJFRlc3QtPntGaWxlTGlzdH0gLy8gW10gfTsKCiAgICAgICAgbXkgJFNvdXJjZSA9ICRUZXN0LT57U291cmNlfTsKCiAgICAgICAgZXZhbCB7CiAgICAgICAgICAgIGZvciBteSAkUGx1Z2luTW9kdWxlICggQHsgJFRlc3QtPntQbHVnaW5zfSB9ICkgewogICAgICAgICAgICAgICAgJE1haW5PYmplY3QtPlJlcXVpcmUoJFBsdWdpbk1vZHVsZSk7CiAgICAgICAgICAgICAgICBteSAkUGx1Z2luID0gJFBsdWdpbk1vZHVsZS0+bmV3KAogICAgICAgICAgICAgICAgICAgIG5hbWUgICAgPT4gJFBsdWdpbk1vZHVsZSwKICAgICAgICAgICAgICAgICAgICB0aWR5YWxsID0+ICRUaWR5QWxsLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBmb3IgbXkgJE1ldGhvZCAocXcocHJlcHJvY2Vzc19zb3VyY2UgcHJvY2Vzc19zb3VyY2Vfb3JfZmlsZSBwb3N0cHJvY2Vzc19zb3VyY2UpKSB7CiAgICAgICAgICAgICAgICAgICAgKCRTb3VyY2UpID0gJFBsdWdpbi0+JE1ldGhvZCggJFNvdXJjZSwgJFRlc3QtPntGaWxlbmFtZX0gKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH07CgogICAgICAgIG15ICRFeGNlcHRpb24gPSAkQDsKCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkRXhjZXB0aW9uID8gMSA6IDAsCiAgICAgICAgICAgICRUZXN0LT57RXhjZXB0aW9ufSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSAiIC4gKCAkRXhjZXB0aW9uID8gImV4Y2VwdGlvbiBmb3VuZDpcbiRFeGNlcHRpb24iIDogJ25vIGV4Y2VwdGlvbicgKSwKICAgICAgICApOwoKICAgICAgICBuZXh0IFRFU1QgaWYgJEV4Y2VwdGlvbjsKCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkU291cmNlLAogICAgICAgICAgICAkVGVzdC0+e1Jlc3VsdH0gLy8gJFRlc3QtPntTb3VyY2V9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIHJlc3VsdCIsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKdXNlIEZpbmRCaW4gcXcoJFJlYWxCaW4pOwp1c2UgbGliIGRpcm5hbWUoJFJlYWxCaW4pIC4gJy9LZXJuZWwvJzsgICAgIyBmaW5kIFRpZHlBbGwKCiMgV29yayBhcm91bmQgYSBQZXJsIGJ1ZyB0aGF0IGlzIHRyaWdnZXJlZCBpbiBEZXZlbDo6U3RhY2tUcmFjZQojICAgKHByb2JhbHkgZnJvbSBFeGNlcHRpb246OkNsYXNzIGFuZCB0aGlzIGZyb20gUGVybDo6Q3JpdGljKS4KIwojICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ob3VzZWFic29sdXRlL0RldmVsLVN0YWNrVHJhY2UvaXNzdWVzLzExIGFuZAojICAgaHR0cDovL3J0LnBlcmwub3JnL3J0My9QdWJsaWMvQnVnL0Rpc3BsYXkuaHRtbD9pZD03ODE4NgpubyB3YXJuaW5ncyAncmVkZWZpbmUnOyAgICAjIyBubyBjcml0aWMKdXNlIERldmVsOjpTdGFja1RyYWNlICgpOwpsb2NhbCAqRGV2ZWw6OlN0YWNrVHJhY2U6Om5ldyA9IHN1YiB7IH07ICAgICMgbm8tb3AKdXNlIHdhcm5pbmdzICdyZWRlZmluZSc7Cgp1c2UgRmlsZTo6U3BlYygpOwp1c2UgVGlkeUFsbDo6T1RSUzsKCiMgRG9uJ3QgdXNlIE9NIHNvIHRoYXQgdGhpcyBhbHNvIHdvcmtzIGZvciBPVFJTIDMuMyBhbmQgbG93ZXIKdXNlIEtlcm5lbDo6Q29uZmlnOwoKbXkgJENvbmZpZ09iamVjdCA9IEtlcm5lbDo6Q29uZmlnLT5uZXcoKTsKbXkgJEhvbWUgICAgICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnSG9tZScpOwoKIyBTdXBwcmVzcyBjb2xvcmVkIG91dHB1dCB0byBub3QgY2x1dHRlciBsb2cgZmlsZXMuCmxvY2FsICRFTlZ7T1RSU0NPREVQT0xJQ1lfTk9DT0xPUn0gPSAxOwoKbXkgJFRpZHlBbGwgPSBUaWR5QWxsOjpPVFJTLT5uZXdfZnJvbV9jb25mX2ZpbGUoCiAgICAiJEhvbWUvS2VybmVsL1RpZHlBbGwvdGlkeWFsbHJjIiwKICAgIGNoZWNrX29ubHkgPT4gMSwKICAgIG1vZGUgICAgICAgPT4gJ3Rlc3RzJywKICAgIHJvb3RfZGlyICAgPT4gJEhvbWUsCiAgICBkYXRhX2RpciAgID0+IEZpbGU6OlNwZWMtPnRtcGRpcigpLAogICAgcXVpZXQgICAgICA9PiAxLAopOwokVGlkeUFsbC0+RGV0ZXJtaW5lRnJhbWV3b3JrVmVyc2lvbkZyb21EaXJlY3RvcnkoKTsKJFRpZHlBbGwtPkdldEZpbGVMaXN0RnJvbURpcmVjdG9yeSgpOwoKIwojIE5vdyBwZXJmb3JtIHRoZSByZWFsIGZpbGUgdmFsaWRhdGlvbi4KIwoKIyBEb24ndCB1c2UgVGlkeUFsbDo6cHJvY2Vzc19hbGwoKSBvciBUaWR5QWxsOjpmaW5kX21hdGNoZWRfZmlsZXMoKSBhcyBpdCBpcyB0b28gc2xvdyBvbiBsYXJnZSBjb2RlIGJhc2VzLgpteSBARmlsZXMgPSAkVGlkeUFsbC0+RmlsdGVyTWF0Y2hlZEZpbGVzKCBGaWxlcyA9PiBcQFRpZHlBbGw6Ok9UUlM6OkZpbGVMaXN0ICk7CkBGaWxlcyA9IG1hcCB7IEZpbGU6OlNwZWMtPmNhdGZpbGUoICRIb21lLCAkXyApIH0gQEZpbGVzOwoKRklMRToKZm9yIG15ICRGaWxlIChARmlsZXMpIHsKCiAgICAjIElnbm9yZSBPcmFjbGUgbG9nIGZpbGVzLgogICAgbmV4dCBGSUxFIGlmICRGaWxlID1+IG17b3JhZGlhZ307CgogICAgbXkgJFJlc3VsdCA9ICRUaWR5QWxsLT5wcm9jZXNzX2ZpbGUoJEZpbGUpOwoKICAgIG5leHQgRklMRSBpZiAkUmVzdWx0LT5zdGF0ZSgpIGVxICdub19tYXRjaCc7ICAgICMgbm8gcGx1Z2lucyBhcHBseSwgaWdub3JlIGZpbGUKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgJFJlc3VsdC0+c3RhdGUoKSwKICAgICAgICAnY2hlY2tlZCcsCiAgICAgICAgIiRGaWxlIGNoZWNrIHJlc3VsdHMgIiAuICggJFJlc3VsdC0+ZXJyb3IoKSB8fCAnJyApLAogICAgKTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCnVzZSBzY3JpcHRzOjp0ZXN0OjpPVFJTQ29kZVBvbGljeVBsdWdpbnM7CgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdEZWJ1Z0NvZGUgLSBjb25zb2xlIGxvZ2dpbmcgKHZhbGlkKScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LmpzJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6SmF2YVNjcmlwdDo6RGVidWdDb2RlKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc3LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAp0aGlzLiRsb2cuZGVidWcoJ3Zhck5hbWUnLCB2YXJOYW1lKTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRGVidWdDb2RlIC0gY29uc29sZSBsb2dnaW5nIChpbnZhbGlkKScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LmpzJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6SmF2YVNjcmlwdDo6RGVidWdDb2RlKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAovLyBUT0RPOiBSZW1vdmUgdGhlIGNvZGUgYmVsb3cuCnRoaXMuJG5leHRUaWNrKCgpID0+IHsKICAgIGNvbnNvbGUubG9nKCd2YXJOYW1lJywgdmFyTmFtZSk7Cn0pOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdEZWJ1Z0NvZGUgLSBza2lwcGVkIHRlc3QgKGludmFsaWQpJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QuanMnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpKYXZhU2NyaXB0OjpEZWJ1Z0NvZGUpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzguMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiAgICAvLyBUT0RPOiBTa2lwIHRoaXMgdGVzdCBmb3Igbm93LgogICAgeGl0KCdzdXBwb3J0cyBoaWRpbmcgb2YgdGhlIGRlc2NyaXB0aW9uIG5leHQgdG8gdGhlIGxhYmVsJywgKCkgPT4gewogICAgICAgIGV4cGVjdC5hc3NlcnRpb25zKDIpOwoKICAgICAgICB3cmFwcGVyLnNldFByb3BzKHsKICAgICAgICAgICAgaGlkZURlc2NyaXB0aW9uOiB0cnVlLAogICAgICAgIH0pOwoKICAgICAgICB3cmFwcGVyLnZtLiRuZXh0VGljaygoKSA9PiB7CiAgICAgICAgICAgIGV4cGVjdCh3cmFwcGVyLmNvbnRhaW5zKCdsYWJlbCBhLmZsb2F0LXJpZ2h0IGkuQ29tbW9uSWNvbl9fQm9sZC0tSW5mb3JtYXRpb25DaXJjbGUnKSkudG9CZSh0cnVlKTsKICAgICAgICAgICAgZXhwZWN0KHdyYXBwZXIuY29udGFpbnMoJ3NtYWxsLnNyLW9ubHknKSkudG9CZSh0cnVlKTsKICAgICAgICB9KTsKICAgIH0pOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdEZWJ1Z0NvZGUgLSBmdW5jdGlvbiBzaW1pbGFyIGluIG5hbWUgdG8gc2tpcHBlZCB0ZXN0ICh2YWxpZCknLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5qcycsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkphdmFTY3JpcHQ6OkRlYnVnQ29kZSldLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKZnVuY3Rpb24gZXhpdCAoKSB7CiAgICAvLyBEbyBzb21ldGhpbmcuCn0KZXhpdCgpOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCik7CgokU2VsZi0+c2NyaXB0czo6dGVzdDo6T1RSU0NvZGVQb2xpY3lQbHVnaW5zOjpSdW4oIFRlc3RzID0+IFxAVGVzdHMgKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCnVzZSBzY3JpcHRzOjp0ZXN0OjpPVFJTQ29kZVBvbGljeVBsdWdpbnM7CgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdFU0xpbnQgKHZhbGlkKScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LmpzJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6SmF2YVNjcmlwdDo6RVNMaW50KV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAoidXNlIHN0cmljdDsiCkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0VTTGludCAoc3ludGF4IGVycm9yKScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LmpzJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6SmF2YVNjcmlwdDo6RVNMaW50KV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApzb21lIHN5bnRheCBlcnJvcgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCgopOwoKJFNlbGYtPnNjcmlwdHM6OnRlc3Q6Ok9UUlNDb2RlUG9saWN5UGx1Z2luczo6UnVuKCBUZXN0cyA9PiBcQFRlc3RzICk7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCnVzZSBzY3JpcHRzOjp0ZXN0OjpPVFJTQ29kZVBvbGljeVBsdWdpbnM7CgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdFdmVudCBMaXN0ZW5lcnMgKHZhbGlkKScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LmpzJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6SmF2YVNjcmlwdDo6VnVlOjpFdmVudExpc3RlbmVycyldLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKICAgIG1vdW50ZWQoKSB7CiAgICAgICAgdGhpcy4kYnVzLiRvbignbXlFdmVudCcsIHRoaXMubXlfaGFuZGxlcik7CiAgICB9CiAgICBkZXN0cm95ZWQoKSB7CiAgICAgICAgdGhpcy4kYnVzLiRvZmYoJ215RXZlbnQnLCB0aGlzLm15X2hhbmRsZXIpOwogICAgfQpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdFdmVudCBMaXN0ZW5lcnMgKG11bHRpcGxlIHJlbW92ZXMpJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QuanMnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpKYXZhU2NyaXB0OjpWdWU6OkV2ZW50TGlzdGVuZXJzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAogICAgbW91bnRlZCgpIHsKICAgICAgICB0aGlzLiRidXMuJG9uKCdteUV2ZW50JywgdGhpcy5teV9oYW5kbGVyKTsKICAgIH0KICAgIGRlc3Ryb3llZCgpIHsKICAgICAgICB0aGlzLiRidXMuJG9mZignbXlFdmVudCcsIHRoaXMubXlfaGFuZGxlcik7CiAgICB9CiAgICBvdGhlcl9tZXRob2QoKSB7CiAgICAgICAgdGhpcy4kYnVzLiRvZmYoJ215RXZlbnQnLCB0aGlzLm15X2hhbmRsZXIpOwogICAgfQpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdFdmVudCBMaXN0ZW5lcnMgKG1pc3NpbmcgZGVyZWdpc3RlciknLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5qcycsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkphdmFTY3JpcHQ6OlZ1ZTo6RXZlbnRMaXN0ZW5lcnMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzguMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiAgICBtb3VudGVkKCkgewogICAgICAgIHRoaXMuJGJ1cy4kb24oJ215RXZlbnQnLCB0aGlzLm15X2hhbmRsZXIpOwogICAgfQogICAgZGVzdHJveWVkKCkgewogICAgICAgIHRoaXMuJGJ1cy4kb2ZmKCdteUV2ZW50X3dpdGhUeXBvJywgdGhpcy5teV9oYW5kbGVyKTsKICAgIH0KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRXZlbnQgTGlzdGVuZXJzIChhbm9ueW1vdXMgZnVuY3Rpb24pJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QuanMnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpKYXZhU2NyaXB0OjpWdWU6OkV2ZW50TGlzdGVuZXJzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAogICAgbW91bnRlZCgpIHsKICAgICAgICB0aGlzLiRidXMuJG9uKCdteUV2ZW50JywgKGV2ZW50KSA9PiB7IC4uLiB9ICkpOwogICAgfQogICAgZGVzdHJveWVkKCkgewogICAgICAgIHRoaXMuJGJ1cy4kb2ZmKCdteUV2ZW50JywgKGV2ZW50KSA9PiB7IC4uLiB9ICkpOwogICAgfQpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdFdmVudCBMaXN0ZW5lcnMgKGFwcGxpY2F0aW9uIGV2ZW50KScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LmpzJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6SmF2YVNjcmlwdDo6VnVlOjpFdmVudExpc3RlbmVycyldLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKICAgIHZtLiRidXMuJG9uKCdteUV2ZW50JywgKGV2ZW50KSA9PiB7IC4uLiB9ICkpOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdFdmVudCBMaXN0ZW5lcnMgKERPTSBldmVudCBsaXN0ZW5lcnMpJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QuanMnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpKYXZhU2NyaXB0OjpWdWU6OkV2ZW50TGlzdGVuZXJzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAovLyBTdGFydCBsaXN0ZW5pbmcgb24gJ0VzYycga2V5IHByZXNzZXMuCmlmICh0aGlzLmlzTW9kYWwpIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy5vbkVzY2FwZSk7CgovLyBTdG9wIGxpc3RlbmluZyBvbiAnRXNjJyBrZXkgcHJlc3Nlcy4KaWYgKHRoaXMuaXNNb2RhbCkgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLm9uRXNjYXBlKTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRXZlbnQgTGlzdGVuZXJzIChET00gZXZlbnQgbGlzdGVuZXJzLCBpbXByb3BlciBjbGVhbnVwKScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LmpzJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6SmF2YVNjcmlwdDo6VnVlOjpFdmVudExpc3RlbmVycyldLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKLy8gU3RhcnQgbGlzdGVuaW5nIG9uICdFc2MnIGtleSBwcmVzc2VzLgppZiAodGhpcy5pc01vZGFsKSBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMub25Fc2NhcGUpOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdFdmVudCBMaXN0ZW5lcnMgKERPTSBldmVudCBsaXN0ZW5lcnMsIGxvY2FsIG9iamVjdCknLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5qcycsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OkphdmFTY3JpcHQ6OlZ1ZTo6RXZlbnRMaXN0ZW5lcnMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzguMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCi8vIFN0YXJ0IGxpc3RlbmluZyBvbiAnRXNjJyBrZXkgcHJlc3Nlcy4KaWYgKHRoaXMuaXNNb2RhbCkgbXlOZXdOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy5vbkVzY2FwZSk7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0V2ZW50IExpc3RlbmVycyAoRE9NIGV2ZW50IGxpc3RlbmVycywgd2hpdGVsaXN0ZWQgZXZlbnQpJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QuanMnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpKYXZhU2NyaXB0OjpWdWU6OkV2ZW50TGlzdGVuZXJzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAovLyBTdGFydCBsaXN0ZW5pbmcgb24gJ0VzYycga2V5IHByZXNzZXMuCmlmICh0aGlzLmlzTW9kYWwpIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCB0aGlzLm9uRXNjYXBlKTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRXZlbnQgTGlzdGVuZXJzIChET00gZXZlbnQgbGlzdGVuZXJzLCBtaXhlZCBnb29kIGFuZCBiYWQpJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QuanMnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpKYXZhU2NyaXB0OjpWdWU6OkV2ZW50TGlzdGVuZXJzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAovLyBTdGFydCBsaXN0ZW5pbmcgb24gJ0VzYycga2V5IHByZXNzZXMuCmlmICh0aGlzLmlzTW9kYWwpIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCB0aGlzLm9uRXNjYXBlKTsKaWYgKHRoaXMuaXNNb2RhbCkgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLm9uRXNjYXBlKTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAoKKTsKCiRTZWxmLT5zY3JpcHRzOjp0ZXN0OjpPVFJTQ29kZVBvbGljeVBsdWdpbnM6OlJ1biggVGVzdHMgPT4gXEBUZXN0cyApOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIHV0Zjg7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RSU0NvZGVQb2xpY3lQbHVnaW5zOwoKbXkgJFNldHRpbmdUZW1wbGF0ZSA9IDw8J0VPRic7CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGVzdCBjb25maWcgc2V0dGluZyBkZWZpbml0aW9uIGZvciBwdXJwb3NlcyBvZiB0aGUgdW5pdCB0ZXN0aW5nLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6VGVzdDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJLZXkiPlZhbHVlPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KRU9GCgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdPYnNvbGV0ZSBmcm9udGVuZCBzZXR0aW5nIC0gVmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpNaWdyYXRpb25zOjpPVFJTNzo6RGVwcmVjYXRlZFNldHRpbmdzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3Ryc19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljRnJvbnRlbmQ6Ok1vZHVsZSMjI1B1YmxpY0ZBUUV4cGxvcmVyIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ09ic29sZXRlIGZyb250ZW5kIHNldHRpbmcgLSBWYWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6Ok1pZ3JhdGlvbnM6Ok9UUlM3OjpEZXByZWNhdGVkU2V0dGluZ3MpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzcuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWNGcm9udGVuZDo6TW9kdWxlIyMjUHVibGljRkFRRXhwbG9yZXIiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdHJzX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnT2Jzb2xldGUgbG9hZGVyIHNldHRpbmcgLSBWYWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6Ok1pZ3JhdGlvbnM6Ok9UUlM3OjpEZXByZWNhdGVkU2V0dGluZ3MpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6OkN1c3RvbWVyOjpTZWxlY3RlZFNraW4iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdHJzX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnT2Jzb2xldGUgbG9hZGVyIHNldHRpbmcgLSBWYWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6Ok1pZ3JhdGlvbnM6Ok9UUlM3OjpEZXByZWNhdGVkU2V0dGluZ3MpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzcuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6OkN1c3RvbWVyOjpTZWxlY3RlZFNraW4iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdHJzX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnT2Jzb2xldGUgbG9hZGVyIG1vZHVsZSBzZXR0aW5nIC0gVmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpNaWdyYXRpb25zOjpPVFJTNzo6RGVwcmVjYXRlZFNldHRpbmdzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3Ryc19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkN1c3RvbWVyVGlja2V0TWVzc2FnZSMjIzAwMi1UaWNrZXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdHJzX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnT2Jzb2xldGUgbG9hZGVyIG1vZHVsZSBzZXR0aW5nIC0gVmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpNaWdyYXRpb25zOjpPVFJTNzo6RGVwcmVjYXRlZFNldHRpbmdzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc3LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3Ryc19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkN1c3RvbWVyVGlja2V0TWVzc2FnZSMjIzAwMi1UaWNrZXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdHJzX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnT2Jzb2xldGUgc2VhcmNoIHJvdXRlciBzZXR0aW5nIC0gVmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpNaWdyYXRpb25zOjpPVFJTNzo6RGVwcmVjYXRlZFNldHRpbmdzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3Ryc19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6OlNlYXJjaDo6SmF2YVNjcmlwdCMjI0FnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlciIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290cnNfY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdPYnNvbGV0ZSBzZWFyY2ggcm91dGVyIHNldHRpbmcgLSBWYWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6Ok1pZ3JhdGlvbnM6Ok9UUlM3OjpEZXByZWNhdGVkU2V0dGluZ3MpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzcuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6U2VhcmNoOjpKYXZhU2NyaXB0IyMjQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKKTsKCiRTZWxmLT5zY3JpcHRzOjp0ZXN0OjpPVFJTQ29kZVBvbGljeVBsdWdpbnM6OlJ1biggVGVzdHMgPT4gXEBUZXN0cyApOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIHV0Zjg7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RSU0NvZGVQb2xpY3lQbHVnaW5zOwojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UUlM6Ok1pZ3JhdGlvbnM6Ok9UUlM4OjpVc2VsZXNzQ29tbWVudHMpCgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdOb3JtYWwgY29tbWVudHMnLAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC5wbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6Ok1pZ3JhdGlvbnM6Ok9UUlM4OjpVc2VsZXNzQ29tbWVudHMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzguMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiMgU29tZSB1c2VmdWwgY29tbWVudC4KCiMgQSBtdWx0aWxpbmUgY29tbWVudCBleHBsYWluaW5nCiMgICBzb21lIHN0dWZmIGluIGEgZGV0YWlsZWQgd2F5LgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdTdHVwaWQgY29tbWVudHMnLAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC5wbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6Ok1pZ3JhdGlvbnM6Ok9UUlM4OjpVc2VsZXNzQ29tbWVudHMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzguMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCnNvbWUgY29kZSBoZXJlCgojIGdldCBuZWVkZWQgb2JqZWN0cwojIEdldCBuZWVkZWQgb2JqZWN0cy4KIyBnZXQgbmVlZGVkIHZhcmlhYmxlcwojIEdldCBuZWVkZWQgdmFyaWFibGVzCiMgZ2V0IHNlbGVuaXVtIG9iamVjdAojIEdldCBDb25maWcgb2JqZWN0LgojIGdldCBzY3JpcHQgYWxpYXMKIyBnZXQgdmFsaWQgbGlzdAojIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKIyBjaGVjayBuZWVkZWQgc3R1ZmYKIyBjaGVjayBuZWVkZWQgZGF0YQojIGNoZWNrIG5lZWRlZCBwYXJhbXMuCiMgY2hlY2sgbmVlZGVkIG9iamVjdHMuCm1vcmUgY29kZSBoZXJlCkVPRgogICAgICAgIFJlc3VsdCA9PiA8PCdFT0YnLApzb21lIGNvZGUgaGVyZQoKbW9yZSBjb2RlIGhlcmUKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAopOwoKJFNlbGYtPnNjcmlwdHM6OnRlc3Q6Ok9UUlNDb2RlUG9saWN5UGx1Z2luczo6UnVuKCBUZXN0cyA9PiBcQFRlc3RzICk7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIHV0Zjg7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RSU0NvZGVQb2xpY3lQbHVnaW5zOwojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UUlM6Ok1pZ3JhdGlvbnM6Ok9UUlM4OjpOZXdUZXN0c05vTGVnYWN5Q29kZSkKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ05vcm1hbCB0ZXN0IGNhc2UnLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6Ok1pZ3JhdGlvbnM6Ok9UUlM4OjpOZXdUZXN0c05vTGVnYWN5Q29kZSldLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKcGFja2FnZSBLZXJuZWw6OlRlc3Q6OkNhc2U6OkR1bW15OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1vb3NlOwp3aXRoIHF3KAogICAgS2VybmVsOjpUZXN0OjpSb2xlOjpJc1Rlc3RDYXNlCik7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3QgY2FzZSB0cnlpbmcgdG8gY3JlYXRlIGxlZ2FjeSBIZWxwZXIgb2JqZWN0LicsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TWlncmF0aW9uczo6T1RSUzg6Ok5ld1Rlc3RzTm9MZWdhY3lDb2RlKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApwYWNrYWdlIEtlcm5lbDo6VGVzdDo6Q2FzZTo6RHVtbXk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTW9vc2U7CndpdGggcXcoCiAgICBLZXJuZWw6OlRlc3Q6OlJvbGU6OklzVGVzdENhc2UKKTsKCm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCgopOwoKJFNlbGYtPnNjcmlwdHM6OnRlc3Q6Ok9UUlNDb2RlUG9saWN5UGx1Z2luczo6UnVuKCBUZXN0cyA9PiBcQFRlc3RzICk7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIHV0Zjg7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RSU0NvZGVQb2xpY3lQbHVnaW5zOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUGFja2FnZSB3aXRob3V0IHVzZSBNb29zZScsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TWlncmF0aW9uczo6T1RSUzk6OlVuaW1wb3J0TW9vc2UpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzkuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCnBhY2thZ2UgVGVzdDsKMTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUGFja2FnZSB3aXRoIHVzZSBNb29zZSBhbmQgbm8gTW9vc2UnLAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC5wbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6Ok1pZ3JhdGlvbnM6Ok9UUlM5OjpVbmltcG9ydE1vb3NlKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc5LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApwYWNrYWdlIFRlc3Q7CnVzZSBNb29zZTsKCiMgY29kZSAuLi4KCm5vIE1vb3NlOwoxOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdQYWNrYWdlIHdpdGggdXNlIE1vb3NlIGFuZCB3aXRob3V0IG5vIE1vb3NlJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpNaWdyYXRpb25zOjpPVFJTOTo6VW5pbXBvcnRNb29zZSldLAogICAgICAgIEZyYW1ld29yayA9PiAnOS4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKcGFja2FnZSBUZXN0Owp1c2UgTW9vc2U7CgojIGNvZGUgLi4uCgoxOwpFT0YKICAgICAgICBSZXN1bHQgPT4gPDwnRU9GJywKcGFja2FnZSBUZXN0Owp1c2UgTW9vc2U7CgojIGNvZGUgLi4uCgpubyBNb29zZTsKCjE7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1BhY2thZ2Ugd2l0aCB1c2UgTW9vc2U6OlJvbGUgYW5kIG5vIE1vb3NlOjpSb2xlJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpNaWdyYXRpb25zOjpPVFJTOTo6VW5pbXBvcnRNb29zZSldLAogICAgICAgIEZyYW1ld29yayA9PiAnOS4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKcGFja2FnZSBUZXN0Owp1c2UgTW9vc2U6OlJvbGU7CgojIGNvZGUgLi4uCgpubyBNb29zZTo6Um9sZTsKMTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUGFja2FnZSB3aXRoIHVzZSBNb29zZTo6Um9sZSBhbmQgd2l0aG91dCBubyBNb29zZTo6Um9sZScsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6TWlncmF0aW9uczo6T1RSUzk6OlVuaW1wb3J0TW9vc2UpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzkuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCnBhY2thZ2UgVGVzdDsKdXNlIE1vb3NlOjpSb2xlOwoKIyBjb2RlIC4uLgoKMTsKRU9GCiAgICAgICAgUmVzdWx0ID0+IDw8J0VPRicsCnBhY2thZ2UgVGVzdDsKdXNlIE1vb3NlOjpSb2xlOwoKIyBjb2RlIC4uLgoKbm8gTW9vc2U6OlJvbGU7CgoxOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCgopOwoKJFNlbGYtPnNjcmlwdHM6OnRlc3Q6Ok9UUlNDb2RlUG9saWN5UGx1Z2luczo6UnVuKCBUZXN0cyA9PiBcQFRlc3RzICk7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCnVzZSBzY3JpcHRzOjp0ZXN0OjpPVFJTQ29kZVBvbGljeVBsdWdpbnM7CgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdDYWNoZU5ldywgZm9yYmlkZGVuJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpDYWNoZU5ldyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKS2VybmVsOjpTeXN0ZW06OkNhY2hlLT5uZXcoJXskU2VsZn0pOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdDYWNoZU5ldywgb2snLAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC5wbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OkNhY2hlTmV3KV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAokS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAopOwoKJFNlbGYtPnNjcmlwdHM6OnRlc3Q6Ok9UUlNDb2RlUG9saWN5UGx1Z2luczo6UnVuKCBUZXN0cyA9PiBcQFRlc3RzICk7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCnVzZSBzY3JpcHRzOjp0ZXN0OjpPVFJTQ29kZVBvbGljeVBsdWdpbnM7CgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdleGl0LCBmb3JiaWRkZW4nLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL1N5c3RlbS9Db25zb2xlL0NvbW1hbmQvVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6Ok5vRXhpdEluQ29uc29sZUNvbW1hbmRzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc1LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApleGl0IDE7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ2V4aXQsIGZvcmJpZGRlbicsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvU3lzdGVtL0NvbnNvbGUvQ29tbWFuZC9UZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6Tm9FeGl0SW5Db25zb2xlQ29tbWFuZHMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzUuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiAgICBpZiAoMSkgeyBleGl0OyB9OwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICckU2VsZi0+RXhpdENvZGVPaygpJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9TeXN0ZW0vQ29uc29sZS9Db21tYW5kL1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpOb0V4aXRJbkNvbnNvbGVDb21tYW5kcyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNS4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPaygpOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCik7CgokU2VsZi0+c2NyaXB0czo6dGVzdDo6T1RSU0NvZGVQb2xpY3lQbHVnaW5zOjpSdW4oIFRlc3RzID0+IFxAVGVzdHMgKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCnVzZSBzY3JpcHRzOjp0ZXN0OjpPVFJTQ29kZVBvbGljeVBsdWdpbnM7CgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdPYmplY3REZXBlbmRlbmNpZXMsIG5vIE9NIHVzZWQuJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpPYmplY3REZXBlbmRlbmNpZXMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzQuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiMhL3Vzci9iaW4vYmFzaAp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm15ICRGSDsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnT2JqZWN0RGVwZW5kZW5jaWVzLCB1bmRlY2xhcmVkIGRlcGVuZGVuY3kgdXNlZCAoZm9ybWVyIGRlZmF1bHQgZGVwZW5kZW5jeSknLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6Ok9iamVjdERlcGVuZGVuY2llcyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkVuY29kZScpOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdPYmplY3REZXBlbmRlbmNpZXMsIGRlZmF1bHQgZGVwZW5kZW5jaWVzIHVzZWQgd2l0aCBpbnZhbGlkIHNob3J0IGZvcm0gaW4gR2V0KCknLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6Ok9iamVjdERlcGVuZGVuY2llcyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnKTsKJEtlcm5lbDo6T00tPkdldCgnRW5jb2RlT2JqZWN0Jyk7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ09iamVjdERlcGVuZGVuY2llcywgdW5kZWNsYXJlZCBkZXBlbmRlbmN5IHVzZWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6Ok9iamVjdERlcGVuZGVuY2llcyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdPYmplY3REZXBlbmRlbmNpZXMsIGRlcGVuZGVuY3kgZGVjbGFyZWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6Ok9iamVjdERlcGVuZGVuY2llcyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdPYmplY3REZXBlbmRlbmNpZXMsIGRlcGVuZGVuY3kgZGVjbGFyZWQsIGludmFsaWQgc2hvcnQgZm9ybScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6T2JqZWN0RGVwZW5kZW5jaWVzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwpmb3IgbXkgJE5lZWRlZCAocXcoVGlja2V0T2JqZWN0KSkgewogICAgJFNlbGYtPnskTmVlZGVkfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJE5lZWRlZCk7Cn0KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnT2JqZWN0RGVwZW5kZW5jaWVzLCB1bmRlY2xhcmVkIGRlcGVuZGVuY3kgaW4gbG9vcCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6T2JqZWN0RGVwZW5kZW5jaWVzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApmb3IgbXkgJE5lZWRlZCAocXcoS2VybmVsOjpTeXN0ZW06OlRpY2tldCkpIHsKICAgICRTZWxmLT57JE5lZWRlZH0gPSAkS2VybmVsOjpPTS0+R2V0KCROZWVkZWQpOwp9CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ09iamVjdERlcGVuZGVuY2llcywgR2V0IGNhbGxlZCBpbiBmb3IgbG9vcCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6T2JqZWN0RGVwZW5kZW5jaWVzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApmb3IgbXkgJE5lZWRlZCAocXcoS2VybmVsOjpTeXN0ZW06OkN1c3RvbU9iamVjdCkpIHsKICAgICRTZWxmLT57JE5lZWRlZH0gPSAkS2VybmVsOjpPTS0+R2V0KCROZWVkZWQpOwp9CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ09iamVjdERlcGVuZGVuY2llcywgY29tcGxleCBjb2RlLCB1bmRlY2xhcmVkIGRlcGVuZGVuY3knLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6Ok9iamVjdERlcGVuZGVuY2llcyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKJFNlbGYtPntDb25maWdPYmplY3R9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNvbmZpZycpOwokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICBMb2dPYmplY3QgPT4gewogICAgICAgIExvZ1ByZWZpeCA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnQ0dJTG9nUHJlZml4JyksCiAgICB9LAogICAgUGFyYW1PYmplY3QgPT4gewogICAgICAgIFdlYlJlcXVlc3QgPT4gJFBhcmFte1dlYlJlcXVlc3R9IHx8IDAsCiAgICB9LAopOwoKZm9yIG15ICRPYmplY3QgKAogICAgcXcoIExvZ09iamVjdCBFbmNvZGVPYmplY3QgU2Vzc2lvbk9iamVjdCBNYWluT2JqZWN0IFRpbWVPYmplY3QgUGFyYW1PYmplY3QgVXNlck9iamVjdCBHcm91cE9iamVjdCApCiAgICApCnsKICAgICRTZWxmLT57JE9iamVjdH0gPSAkS2VybmVsOjpPTS0+R2V0KCRPYmplY3QpOwp9CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ09iamVjdERlcGVuZGVuY2llcywgY29tcGxleCBjb2RlLCB1bmRlY2xhcmVkIGRlcGVuZGVuY3knLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6Ok9iamVjdERlcGVuZGVuY2llcyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkVuY29kZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Ok1haW4nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCik7CgokU2VsZi0+e0NvbmZpZ09iamVjdH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICBMb2dPYmplY3QgPT4gewogICAgICAgIExvZ1ByZWZpeCA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnQ0dJTG9nUHJlZml4JyksCiAgICB9LAogICAgUGFyYW1PYmplY3QgPT4gewogICAgICAgIFdlYlJlcXVlc3QgPT4gJFBhcmFte1dlYlJlcXVlc3R9IHx8IDAsCiAgICB9LAopOwoKZm9yIG15ICRPYmplY3QgKAogICAgcXcoIEtlcm5lbDo6U3lzdGVtOjpVc2VyIEtlcm5lbDo6U3lzdGVtOjpHcm91cCApCiAgICApCnsKICAgICRTZWxmLT57JE9iamVjdH0gPSAkS2VybmVsOjpPTS0+R2V0KCRPYmplY3QpOwp9CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ09iamVjdERlcGVuZGVuY2llcywgb2JqZWN0IG1hbmFnZXIgZGlzYWJsZWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6Ok9iamVjdERlcGVuZGVuY2llcyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwokS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ09iamVjdERlcGVuZGVuY2llcywgZGVwcmVjYXRlZCBPYmplY3RNYW5hZ2VyQXdhcmUgZmxhZycsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6T2JqZWN0RGVwZW5kZW5jaWVzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwpvdXIgJE9iamVjdE1hbmFnZXJBd2FyZSA9IDE7CiRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnT2JqZWN0RGVwZW5kZW5jaWVzLCBNb29zZTo6Um9sZScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6T2JqZWN0RGVwZW5kZW5jaWVzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAp1c2UgTW9vc2U6OlJvbGU7CiRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnT2JqZWN0RGVwZW5kZW5jaWVzLCBNb286OlJvbGUnLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6Ok9iamVjdERlcGVuZGVuY2llcyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKdXNlIE1vbzo6Um9sZTsKJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdPYmplY3REZXBlbmRlbmNpZXMsIFdlYkFwcCBjb250cm9sbGVyJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpPYmplY3REZXBlbmRlbmNpZXMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzQuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCnBhY2thZ2UgS2VybmVsOjpXZWJBcHA6OkNvbnRyb2xsZXI6OlRlc3Q7CiRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnT2JqZWN0RGVwZW5kZW5jaWVzLCBXZWJBcHAgcGx1Z2luJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpPYmplY3REZXBlbmRlbmNpZXMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzQuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCnBhY2thZ2UgS2VybmVsOjpXZWJBcHA6OlBsdWdpbjo6VGVzdDsKJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdPYmplY3REZXBlbmRlbmNpZXMsIFdlYkFwcCBzZXJ2ZXInLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6Ok9iamVjdERlcGVuZGVuY2llcyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKcGFja2FnZSBLZXJuZWw6OldlYkFwcDo6U2VydmVyOjpUZXN0OwokS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ09iamVjdERlcGVuZGVuY2llcywgVGVzdCBDYXNlJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpPYmplY3REZXBlbmRlbmNpZXMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzQuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCnBhY2thZ2UgS2VybmVsOjpUZXN0OjpDYXNlOjpEZW1vOwokS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKKTsKCiRTZWxmLT5zY3JpcHRzOjp0ZXN0OjpPVFJTQ29kZVBvbGljeVBsdWdpbnM6OlJ1biggVGVzdHMgPT4gXEBUZXN0cyApOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCnVzZSBzY3JpcHRzOjp0ZXN0OjpPVFJTQ29kZVBvbGljeVBsdWdpbnM7CgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICd2YWxpZCBmdW5jdGlvbiBkb2N1bWVudGF0aW9uJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpQb2Q6OkZ1bmN0aW9uUG9kKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAo9aGVhZDIgR2V0KCkKClJldHJpZXZlcyBhIHNpbmdsZXRvbiBvYmplY3QsIGFuZCBpZiBpdCBub3QgeWV0IGV4aXN0cywgaW1wbGljaXRseSBjcmVhdGVzIG9uZSBmb3IgeW91LgoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgT24gdGhlIHNlY29uZCBjYWxsLCB0aGlzIHJldHVybnMgdGhlIHNhbWUgQ29uZmlnT2JqZWN0IGFzIGFib3ZlLgogICAgbXkgJENvbmZpZ09iamVjdDIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKPWN1dAoKc3ViIEdldCB7CiAgICAuLi4KfQpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdoZWFkaW5nIHRoYXQgaXMgbm90IHJlbGF0ZWQgdG8gYSBmdW5jdGlvbicsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UG9kOjpGdW5jdGlvblBvZCldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPWhlYWQyIEhvdyBkb2VzIHNpbmdsZXRvbiBtYW5hZ2VtZW50IHdvcms/CgpJdCBjcmVhdGVzIG9iamVjdHMgYXMgbGF0ZSBhcyBwb3NzaWJsZSBhbmQga2VlcHMgcmVmZXJlbmNlcyB0byB0aGVtLiBVcG9uIGRlc3RydWN0aW9uIHRoZSBvYmplY3RzCmFyZSBkZXN0cm95ZWQgaW4gdGhlIGNvcnJlY3Qgb3JkZXIsIGJhc2VkIG9uIHRoZWlyIGRlcGVuZGVuY2llcyAoc2VlIGJlbG93KS4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnZnVuY3Rpb24gd2l0aG91dCBwYXJlbnRoZXNlcycsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UG9kOjpGdW5jdGlvblBvZCldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPWhlYWQyIEdldAoKUmV0cmlldmVzIGEgc2luZ2xldG9uIG9iamVjdCwgYW5kIGlmIGl0IG5vdCB5ZXQgZXhpc3RzLCBpbXBsaWNpdGx5IGNyZWF0ZXMgb25lIGZvciB5b3UuCgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBPbiB0aGUgc2Vjb25kIGNhbGwsIHRoaXMgcmV0dXJucyB0aGUgc2FtZSBDb25maWdPYmplY3QgYXMgYWJvdmUuCiAgICBteSAkQ29uZmlnT2JqZWN0MiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7Cgo9Y3V0CgpzdWIgR2V0IHsKICAgIC4uLgp9CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ2Z1bmN0aW9uIHdpdGggd3JvbmcgbmFtZScsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UG9kOjpGdW5jdGlvblBvZCldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPWhlYWQyIFdyb25nTmFtZSgpCgpSZXRyaWV2ZXMgYSBzaW5nbGV0b24gb2JqZWN0LCBhbmQgaWYgaXQgbm90IHlldCBleGlzdHMsIGltcGxpY2l0bHkgY3JlYXRlcyBvbmUgZm9yIHlvdS4KCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIE9uIHRoZSBzZWNvbmQgY2FsbCwgdGhpcyByZXR1cm5zIHRoZSBzYW1lIENvbmZpZ09iamVjdCBhcyBhYm92ZS4KICAgIG15ICRDb25maWdPYmplY3QyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCj1jdXQKCnN1YiBHZXQgewogICAgLi4uCn0KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnd3JvbmcgZnVuY3Rpb24gY2FsbCB1c2VkIGluIGV4YW1wbGUnLAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC5wbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlBvZDo6RnVuY3Rpb25Qb2QpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCj1oZWFkMiBHZXQoKQoKUmV0cmlldmVzIGEgc2luZ2xldG9uIG9iamVjdCwgYW5kIGlmIGl0IG5vdCB5ZXQgZXhpc3RzLCBpbXBsaWNpdGx5IGNyZWF0ZXMgb25lIGZvciB5b3UuCgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5Xcm9uZ0Z1bmN0aW9uKCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgT24gdGhlIHNlY29uZCBjYWxsLCB0aGlzIHJldHVybnMgdGhlIHNhbWUgQ29uZmlnT2JqZWN0IGFzIGFib3ZlLgogICAgbXkgJENvbmZpZ09iamVjdDIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKPWN1dAoKc3ViIEdldCB7CiAgICAuLi4KfQpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICd2YWxpZCBjb25zdHJ1Y3RvciB3aXRoIENyZWF0ZScsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UG9kOjpGdW5jdGlvblBvZCldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPWhlYWQyIG5ldygpCgpDcmVhdGVzIGEgRGF0ZVRpbWUgb2JqZWN0LiBEbyBub3QgdXNlIG5ldygpIGRpcmVjdGx5LCBpbnN0ZWFkIHVzZSB0aGUgb2JqZWN0IG1hbmFnZXI6CgoKICAgICMgQ3JlYXRlIGFuIG9iamVjdCB3aXRoIGN1cnJlbnQgZGF0ZSBhbmQgdGltZQogICAgIyB3aXRoaW4gdGltZSB6b25lIHNldCBpbiBTeXNDb25maWcgT1RSU1RpbWVab25lOgogICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJwogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgLi4uCn0KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAndmFsaWQgY29uc3RydWN0b3Igd2l0aCBHZXQnLAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC5wbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlBvZDo6RnVuY3Rpb25Qb2QpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCj1oZWFkMiBuZXcoKQoKRG9uJ3QgdXNlIHRoZSBjb25zdHJ1Y3RvciBkaXJlY3RseSwgdXNlIHRoZSBPYmplY3RNYW5hZ2VyIGluc3RlYWQ6CgogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgLi4uCn0KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAndmFsaWQgY29uc3RydWN0b3Igd2l0aCBuZXcnLAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC5wbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlBvZDo6RnVuY3Rpb25Qb2QpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCj1oZWFkMiBuZXcoKQoKRmFrZSBmb3IgdGVzdGluZy4KCiAgICBteSAkVGlja2V0T2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06OlRpY2tldC0+bmV3KCk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIC4uLgp9CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKKTsKCiRTZWxmLT5zY3JpcHRzOjp0ZXN0OjpPVFJTQ29kZVBvbGljeVBsdWdpbnM6OlJ1biggVGVzdHMgPT4gXEBUZXN0cyApOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIHV0Zjg7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RSU0NvZGVQb2xpY3lQbHVnaW5zOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAndmFsaWQgcGFja2FnZSBuYW1lIHdpdGggbm8gY3JpdGljJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpQb2Q6Ok5hbWVQb2QpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCnBhY2thZ2Ugc2NyaXB0czo6dGVzdDo6UG9kOjpUZXN0OyAgICAjIyBubyBjcml0aWMKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoc2NyaXB0czo6REJVcGRhdGU6OkJhc2UpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKKTsKCj1oZWFkMSBOQU1FCgpzY3JpcHRzOjp0ZXN0OjpQb2Q6OlRlc3QgLSAgVGVzdGluZyBmaWxlLgoKPWN1dAoKc3ViIFJ1biB7CiAgICAuLi4KfQpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICd2YWxpZCBwYWNrYWdlIG5hbWUgd2l0aCBvdXQgbm8gY3JpdGljJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpQb2Q6Ok5hbWVQb2QpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCnBhY2thZ2Ugc2NyaXB0czo6dGVzdDo6UG9kOjpUZXN0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhzY3JpcHRzOjpEQlVwZGF0ZTo6QmFzZSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCnNjcmlwdHM6OnRlc3Q6OlBvZDo6VGVzdCAtICBUZXN0aW5nIGZpbGUuCgo9Y3V0CgpzdWIgUnVuIHsKICAgIC4uLgp9CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ3dyb25nIHBhY2thZ2UgbmFtZSBjb3JyZWN0IGZvcm1hdCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UG9kOjpOYW1lUG9kKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApwYWNrYWdlIHNjcmlwdHM6OnRlc3Q6OlBvZDo6VGVzdDsgICAgIyMgbm8gY3JpdGljCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KHNjcmlwdHM6OkRCVXBkYXRlOjpCYXNlKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKc2NyaXB0czo6dGVzdDo6VGVzdCAtICBUZXN0aW5nIGZpbGUuCgo9Y3V0CgpzdWIgUnVuIHsKICAgIC4uLgp9CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgICAgIFJlc3VsdCAgICA9PiA8PCdFT0YnLApwYWNrYWdlIHNjcmlwdHM6OnRlc3Q6OlBvZDo6VGVzdDsgICAgIyMgbm8gY3JpdGljCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KHNjcmlwdHM6OkRCVXBkYXRlOjpCYXNlKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKc2NyaXB0czo6dGVzdDo6UG9kOjpUZXN0IC0gIFRlc3RpbmcgZmlsZS4KCj1jdXQKCnN1YiBSdW4gewogICAgLi4uCn0KRU9GCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnd3JvbmcgcGFja2FnZSBuYW1lIHNsYXNoZXMnLAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC5wbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlBvZDo6TmFtZVBvZCldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKcGFja2FnZSBzY3JpcHRzOjp0ZXN0OjpQb2Q6OlRlc3Q7ICAgICMjIG5vIGNyaXRpYwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhzY3JpcHRzOjpEQlVwZGF0ZTo6QmFzZSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCnNjcmlwdHMvdGVzdC9Qb2QvVGVzdC5wbSAtICBUZXN0aW5nIGZpbGUuCgo9Y3V0CgpzdWIgUnVuIHsKICAgIC4uLgp9CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgICAgIFJlc3VsdCAgICA9PiA8PCdFT0YnLApwYWNrYWdlIHNjcmlwdHM6OnRlc3Q6OlBvZDo6VGVzdDsgICAgIyMgbm8gY3JpdGljCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KHNjcmlwdHM6OkRCVXBkYXRlOjpCYXNlKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKc2NyaXB0czo6dGVzdDo6UG9kOjpUZXN0IC0gIFRlc3RpbmcgZmlsZS4KCj1jdXQKCnN1YiBSdW4gewogICAgLi4uCn0KRU9GCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnd3JvbmcgcGFja2FnZSBuYW1lIHNsYXNoZXMgY3VzdG9tIGZpbGUnLCAjIERvZXMgbm90IG1vZGlmeSB0aGUgZmlsZSBldmVuIGl0IGl0cyB3cm9uZwogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC5wbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlBvZDo6TmFtZVBvZCldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKIyAkb3JpZ2luOiBvdHJzIC0gZDE1MmYwYmE5ZjdiMzI2YjRiZDNiODYyNGNjMmM5OTk0NGUyYTk1NiAtIHNjcmlwdHMvdGVzdC9Qb2QvVGVzdC5wbQpwYWNrYWdlIHNjcmlwdHM6OnRlc3Q6OlBvZDo6VGVzdDsgICAgIyMgbm8gY3JpdGljCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KHNjcmlwdHM6OkRCVXBkYXRlOjpCYXNlKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKc2NyaXB0cy90ZXN0L1BvZC9UZXN0LnBtIC0gIFRlc3RpbmcgZmlsZS4KCj1jdXQKCnN1YiBSdW4gewogICAgLi4uCn0KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICAgICAgUmVzdWx0ICAgID0+IDw8J0VPRicsCiMgJG9yaWdpbjogb3RycyAtIGQxNTJmMGJhOWY3YjMyNmI0YmQzYjg2MjRjYzJjOTk5NDRlMmE5NTYgLSBzY3JpcHRzL3Rlc3QvUG9kL1Rlc3QucG0KcGFja2FnZSBzY3JpcHRzOjp0ZXN0OjpQb2Q6OlRlc3Q7ICAgICMjIG5vIGNyaXRpYwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhzY3JpcHRzOjpEQlVwZGF0ZTo6QmFzZSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCnNjcmlwdHMvdGVzdC9Qb2QvVGVzdC5wbSAtICBUZXN0aW5nIGZpbGUuCgo9Y3V0CgpzdWIgUnVuIHsKICAgIC4uLgp9CkVPRgogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ3dyb25nIHBhY2thZ2UgbmFtZSBqdXN0IG5hbWUnLAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC5wbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlBvZDo6TmFtZVBvZCldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKcGFja2FnZSBzY3JpcHRzOjp0ZXN0OjpQb2Q6OlRlc3Q7ICAgICMjIG5vIGNyaXRpYwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhzY3JpcHRzOjpEQlVwZGF0ZTo6QmFzZSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKClRlc3QucG0gLSAgVGVzdGluZyBmaWxlLgoKPWN1dAoKc3ViIFJ1biB7CiAgICAuLi4KfQpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgICAgICBSZXN1bHQgICAgPT4gPDwnRU9GJywKcGFja2FnZSBzY3JpcHRzOjp0ZXN0OjpQb2Q6OlRlc3Q7ICAgICMjIG5vIGNyaXRpYwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhzY3JpcHRzOjpEQlVwZGF0ZTo6QmFzZSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCnNjcmlwdHM6OnRlc3Q6OlBvZDo6VGVzdCAtICBUZXN0aW5nIGZpbGUuCgo9Y3V0CgpzdWIgUnVuIHsKICAgIC4uLgp9CkVPRgogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICd3cm9uZyBwYWNrYWdlIG5hbWUgY29ycmVjdCBmb3JtYXQgZXh0ZW5kZWQgUE9EJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpQb2Q6Ok5hbWVQb2QpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCnBhY2thZ2Ugc2NyaXB0czo6dGVzdDo6UG9kOjpUZXN0OyAgICAjIyBubyBjcml0aWMKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoc2NyaXB0czo6REJVcGRhdGU6OkJhc2UpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKKTsKCj1oZWFkMSBOQU1FCgpzY3JpcHRzOjp0ZXN0OjpUZXN0IC0gIFRlc3RpbmcgZmlsZS4KCj1oZWFkMSBERVNDUklQVElPTgoKc29tZSBkZXNjcmlwdGlvbgoKPWhlYWQxIFNZTk9QU0lTCgpzb21lIHN5bm9wc3lzCgo9Y3V0CgpzdWIgUnVuIHsKICAgIC4uLgp9CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgICAgIFJlc3VsdCAgICA9PiA8PCdFT0YnLApwYWNrYWdlIHNjcmlwdHM6OnRlc3Q6OlBvZDo6VGVzdDsgICAgIyMgbm8gY3JpdGljCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KHNjcmlwdHM6OkRCVXBkYXRlOjpCYXNlKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKc2NyaXB0czo6dGVzdDo6UG9kOjpUZXN0IC0gIFRlc3RpbmcgZmlsZS4KCj1oZWFkMSBERVNDUklQVElPTgoKc29tZSBkZXNjcmlwdGlvbgoKPWhlYWQxIFNZTk9QU0lTCgpzb21lIHN5bm9wc3lzCgo9Y3V0CgpzdWIgUnVuIHsKICAgIC4uLgp9CkVPRgogICAgfSwKKTsKCiRTZWxmLT5zY3JpcHRzOjp0ZXN0OjpPVFJTQ29kZVBvbGljeVBsdWdpbnM6OlJ1biggVGVzdHMgPT4gXEBUZXN0cyApOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6U29ydEtleXMpCgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIHV0Zjg7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RSU0NvZGVQb2xpY3lQbHVnaW5zOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnZm9yIFNvcnQgS2V5cyBSZWZlcmVuY2UsIGZvcmJpZGRlbicsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6U29ydEtleXMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzUuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCmZvciBteSAkVmFyaWFibGUgKCBzb3J0IGtleXMgJEhhc2hSZWYgKSB7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ2ZvciBLZXlzIFJlZmVyZW5jZSwgZm9yYmlkZGVuJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpTb3J0S2V5cyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNS4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKZm9yIG15ICRWYXJpYWJsZSAoIGtleXMgJEhhc2hSZWYgKSB7CkVPRgogICAgICAgIFJlc3VsdCA9PiA8PCdFT0YnLApmb3IgbXkgJFZhcmlhYmxlICggc29ydCBrZXlzICRIYXNoUmVmICkgewpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdmb3IgU29ydCBLZXlzIEhhc2ggYXMgcmVmZXJlbmNlLCBmb3JiaWRkZW4nLAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC5wbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlNvcnRLZXlzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc1LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApmb3IgbXkgJFZhcmlhYmxlICggc29ydCBrZXlzIFwlSGFzaCApIHsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnZm9yIEtleXMgSGFzaCBhcyByZWZlcmVuY2UsIGZvcmJpZGRlbicsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6U29ydEtleXMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzUuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCmZvciBteSAkVmFyaWFibGUgKCBrZXlzIFwlSGFzaCApIHsKRU9GCiAgICAgICAgUmVzdWx0ID0+IDw8J0VPRicsCmZvciBteSAkVmFyaWFibGUgKCBzb3J0IGtleXMgJEhhc2hSZWYgKSB7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ2ZvciBTb3J0IEtleXMgdW5yZWZlcmVuY2VkIEhhc2gsIE9LJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpTb3J0S2V5cyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNS4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKZm9yIG15ICRWYXJpYWJsZSAoIHNvcnQga2V5cyAleyAkSGFzaFJlZiB9ICkgewpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdmb3IgS2V5cyB1bnJlZmVyZW5jZWQgSGFzaCwgZm9yYmlkZGVuJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpTb3J0S2V5cyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNS4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKZm9yIG15ICRWYXJpYWJsZSAoIGtleXMgJXsgJEhhc2hSZWYgfSApIHsKRU9GCiAgICAgICAgUmVzdWx0ID0+IDw8J0VPRicsCmZvciBteSAkVmFyaWFibGUgKCBzb3J0IGtleXMgJXsgJEhhc2hSZWYgfSApIHsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnZm9yIEtleXMgIEhhc2gsIE9LJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpTb3J0S2V5cyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNS4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKZm9yIG15ICRWYXJpYWJsZSAoIGtleXMgJUhhc2ggKSB7CkVPRgogICAgICAgIFJlc3VsdCA9PiA8PCdFT0YnLApmb3IgbXkgJFZhcmlhYmxlICggc29ydCBrZXlzICVIYXNoICkgewpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCik7CgokU2VsZi0+c2NyaXB0czo6dGVzdDo6T1RSU0NvZGVQb2xpY3lQbHVnaW5zOjpSdW4oIFRlc3RzID0+IFxAVGVzdHMgKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6VGVzdHM6OkhlbHBlcikKdXNlIHNjcmlwdHM6OnRlc3Q6Ok9UUlNDb2RlUG9saWN5UGx1Z2luczsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0hlbHBlciBub3QgdXNlZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnQnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpUZXN0czo6SGVscGVyKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAoxOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdIZWxwZXIgdXNlZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnQnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpUZXN0czo6SGVscGVyKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnSGVscGVyIGNyZWF0ZWQgYmVmb3JlIFNlbGVuaXVtIG9iamVjdCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnQnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpUZXN0czo6SGVscGVyKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBQcm92aWRlVGVzdERvY3VtZW50U2VhcmNoSW5kaWNlcyA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7Cm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnSGVscGVyIGNyZWF0ZWQgYWZ0ZXIgU2VsZW5pdW0gb2JqZWN0JywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QudCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlRlc3RzOjpIZWxwZXIpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzguMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUHJvdmlkZVRlc3REb2N1bWVudFNlYXJjaEluZGljZXMgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdSZXN0b3JlRGF0YWJhc2UgaW4gYSBTZWxlbml1bSB0ZXN0JywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QudCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlRlc3RzOjpIZWxwZXIpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzguMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7Cm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnU2V0IFByb3ZpZGVUZXN0UEdQRW52aXJvbm1lbnQgaW4gYSBTZWxlbml1bSB0ZXN0JywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QudCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlRlc3RzOjpIZWxwZXIpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzguMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFByb3ZpZGVUZXN0UEdQRW52aXJvbm1lbnQgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwpteSAkUEdQT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNyeXB0OjpQR1AnKTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnTWlzc2luZyBQcm92aWRlVGVzdFBHUEVudmlyb25tZW50IGluIGEgU2VsZW5pdW0gdGVzdCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnQnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpUZXN0czo6SGVscGVyKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKbXkgJFBHUE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDcnlwdDo6UEdQJyk7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1NldCBQcm92aWRlVGVzdFNNSU1FRW52aXJvbm1lbnQgaW4gYSBTZWxlbml1bSB0ZXN0JywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QudCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlRlc3RzOjpIZWxwZXIpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzguMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFByb3ZpZGVUZXN0U01JTUVFbnZpcm9ubWVudCA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7Cm15ICRTTUlNRU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDcnlwdDo6U01JTUUnKTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnTWlzc2luZyBQcm92aWRlVGVzdFNNSU1FRW52aXJvbm1lbnQgaW4gYSBTZWxlbml1bSB0ZXN0JywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QudCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlRlc3RzOjpIZWxwZXIpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzguMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwpteSAkU01JTUVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3J5cHQ6OlNNSU1FJyk7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKKTsKCiRTZWxmLT5zY3JpcHRzOjp0ZXN0OjpPVFJTQ29kZVBvbGljeVBsdWdpbnM6OlJ1biggVGVzdHMgPT4gXEBUZXN0cyApOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCiMgV29yayBhcm91bmQgYSBQZXJsIGJ1ZyB0aGF0IGlzIHRyaWdnZXJlZCBpbiBEZXZlbDo6U3RhY2tUcmFjZQojICAgKHByb2JhbHkgZnJvbSBFeGNlcHRpb246OkNsYXNzIGFuZCB0aGlzIGZyb20gUGVybDo6Q3JpdGljKS4KIwojICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ob3VzZWFic29sdXRlL0RldmVsLVN0YWNrVHJhY2UvaXNzdWVzLzExIGFuZAojICAgaHR0cDovL3J0LnBlcmwub3JnL3J0My9QdWJsaWMvQnVnL0Rpc3BsYXkuaHRtbD9pZD03ODE4NgpubyB3YXJuaW5ncyAncmVkZWZpbmUnOyAgICAjIyBubyBjcml0aWMKdXNlIERldmVsOjpTdGFja1RyYWNlICgpOwpsb2NhbCAqRGV2ZWw6OlN0YWNrVHJhY2U6Om5ldyA9IHN1YiB7IH07ICAgICMgbm8tb3AKdXNlIHdhcm5pbmdzICdyZWRlZmluZSc7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RSU0NvZGVQb2xpY3lQbHVnaW5zOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUGVybENyaXRpYyBQcm9oaWJpdE9wZW4gcmVndWxhciBmaWxlLCBvbGQtc3R5bGUgcmVhZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UGVybENyaXRpYyldLAogICAgICAgIEZyYW1ld29yayA9PiAnMy4zJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKIyEvdXNyL2Jpbi9iYXNoCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKbXkgJEZIOwpvcGVuKCRGSCwgJzxmaWxlbmFtZS50eHQnKTsKY2xvc2UgJEZIOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdQZXJsQ3JpdGljIFByb2hpYml0T3BlbiByZWd1bGFyIGZpbGUsIHJlYWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC5wbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlBlcmxDcml0aWMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzMuMycsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiMhL3Vzci9iaW4vYmFzaAp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm15ICRGSDsKb3BlbigkRkgsICc8JywgJ2ZpbGVuYW1lLnR4dCcpOwpjbG9zZSAkRkg7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1BlcmxDcml0aWMgUHJvaGliaXRPcGVuIHJlZ3VsYXIgZmlsZSwgcmVhZCwgbm8gcGFyZW50aGVzZXMsIGJhcmV3b3JkIGZpbGVoYW5kbGUnLAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC5wbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlBlcmxDcml0aWMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzMuMycsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiMhL3Vzci9iaW4vYmFzaAp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm9wZW4gRkgsICc8JywgJ2ZpbGVuYW1lLnR4dCc7CmNsb3NlICRGSDsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUGVybENyaXRpYyBQcm9oaWJpdE9wZW4gcmVndWxhciBmaWxlLCB3cml0ZScsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UGVybENyaXRpYyldLAogICAgICAgIEZyYW1ld29yayA9PiAnMy4zJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKIyEvdXNyL2Jpbi9iYXNoCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKbXkgJEZIOwpvcGVuKCRGSCwgJz4nLCAnZmlsZW5hbWUudHh0Jyk7CmNsb3NlICRGSDsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUGVybENyaXRpYyBQcm9oaWJpdE9wZW4gcmVndWxhciBmaWxlLCB3cml0ZSwgbm8gcGFyZW50aGVzZXMnLAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC5wbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlBlcmxDcml0aWMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzMuMycsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiMhL3Vzci9iaW4vYmFzaAp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm15ICRGSDsKb3BlbiAkRkgsICc+JywgJ2ZpbGVuYW1lLnR4dCc7CmNsb3NlICRGSDsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUGVybENyaXRpYyBQcm9oaWJpdE9wZW4gcmVndWxhciBmaWxlLCBiaWRpcmVjdGlvbmFsJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpQZXJsQ3JpdGljKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICczLjMnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAojIS91c3IvYmluL2Jhc2gKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwpteSAkRkg7Cm9wZW4oJEZILCAnKz4nLCAnZmlsZW5hbWUudHh0Jyk7CmNsb3NlICRGSDsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICAgICAgUmVzdWx0ICAgID0+IDw8J0VPRicsCiMhL3Vzci9iaW4vYmFzaAp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm15ICRGSDsKb3BlbigkRkgsICcrPicsICdmaWxlbmFtZS50eHQnKTsKY2xvc2UgJEZIOwpFT0YKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdQZXJsQ3JpdGljIFByb2hpYml0T3BlbiByZWd1bGFyIGZpbGUsIGV4dGVybmFsIGNvbW1hbmQnLAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC5wbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlBlcmxDcml0aWMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzMuMycsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiMhL3Vzci9iaW4vYmFzaAp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm15ICRGSDsKb3BlbigkRkgsICctfCcsICdzb21lX2NvbW1hbmQnKTsKY2xvc2UgJEZIOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgICAgICBSZXN1bHQgICAgPT4gPDwnRU9GJywKIyEvdXNyL2Jpbi9iYXNoCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKbXkgJEZIOwpvcGVuKCRGSCwgJy18JywgJ3NvbWVfY29tbWFuZCcpOwpjbG9zZSAkRkg7CkVPRgogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1BlcmxDcml0aWMgUHJvaGliaXRPcGVuIHJlZ3VsYXIgZmlsZSwgdW5jbGVhciBtb2RlJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpQZXJsQ3JpdGljKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICczLjMnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAojIS91c3IvYmluL2Jhc2gKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwpteSAkRkg7Cm9wZW4gJEZILCAkTW9kZSwgJFBhcmFte0xvY2F0aW9ufTsKY2xvc2UgJEZIOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgICAgICBSZXN1bHQgICAgPT4gPDwnRU9GJywKIyEvdXNyL2Jpbi9iYXNoCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKbXkgJEZIOwpvcGVuICRGSCwgJE1vZGUsICRQYXJhbXtMb2NhdGlvbn07CmNsb3NlICRGSDsKRU9GCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUGVybENyaXRpYyBQcm9oaWJpdE9wZW4gaW4gYW5vdGhlciBjb250ZXh0JywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpQZXJsQ3JpdGljKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICczLjMnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAojIS91c3IvYmluL2Jhc2gKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwpteSAkR2VvSVBPYmplY3QgPSBHZW86OklQLT5vcGVuKCAkR2VvSVBEYXRhYmFzZUZpbGUsIEdlbzo6SVA6OkdFT0lQX1NUQU5EQVJEKCkgKTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICAgICAgUmVzdWx0ICAgID0+IDw8J0VPRicsCiMhL3Vzci9iaW4vYmFzaAp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm15ICRHZW9JUE9iamVjdCA9IEdlbzo6SVAtPm9wZW4oICRHZW9JUERhdGFiYXNlRmlsZSwgR2VvOjpJUDo6R0VPSVBfU1RBTkRBUkQoKSApOwpFT0YKICAgIH0sCik7CgokU2VsZi0+c2NyaXB0czo6dGVzdDo6T1RSU0NvZGVQb2xpY3lQbHVnaW5zOjpSdW4oIFRlc3RzID0+IFxAVGVzdHMgKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCiMgV29yayBhcm91bmQgYSBQZXJsIGJ1ZyB0aGF0IGlzIHRyaWdnZXJlZCBpbiBEZXZlbDo6U3RhY2tUcmFjZQojICAgKHByb2JhbHkgZnJvbSBFeGNlcHRpb246OkNsYXNzIGFuZCB0aGlzIGZyb20gUGVybDo6Q3JpdGljKS4KIwojICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ob3VzZWFic29sdXRlL0RldmVsLVN0YWNrVHJhY2UvaXNzdWVzLzExIGFuZAojICAgaHR0cDovL3J0LnBlcmwub3JnL3J0My9QdWJsaWMvQnVnL0Rpc3BsYXkuaHRtbD9pZD03ODE4NgpubyB3YXJuaW5ncyAncmVkZWZpbmUnOyAgICAjIyBubyBjcml0aWMKdXNlIERldmVsOjpTdGFja1RyYWNlICgpOwpsb2NhbCAqRGV2ZWw6OlN0YWNrVHJhY2U6Om5ldyA9IHN1YiB7IH07ICAgICMgbm8tb3AKdXNlIHdhcm5pbmdzICdyZWRlZmluZSc7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RSU0NvZGVQb2xpY3lQbHVnaW5zOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUGVybENyaXRpYyBQcm9oaWJpdFN0cmluZ3lTcGxpdCB3aXRoIHN0cmluZywgYWxsb3dlZCBmb3IgT1RSUyA4JywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpQZXJsQ3JpdGljKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAojIS91c3IvYmluL2Jhc2gKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwpteSBAU3RyaW5ncyA9IHNwbGl0ICc6JywgJ3NvbWU6OmNvZGUnOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdQZXJsQ3JpdGljIFByb2hpYml0U3RyaW5neVNwbGl0IHdpdGggc3RyaW5nJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpQZXJsQ3JpdGljKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc5LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAojIS91c3IvYmluL2Jhc2gKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwpteSBAU3RyaW5ncyA9IHNwbGl0ICc6JywgJ3NvbWU6OmNvZGUnOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdQZXJsQ3JpdGljIFByb2hpYml0U3RyaW5neVNwbGl0IHdpdGggcmVnZXhlcycsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UGVybENyaXRpYyldLAogICAgICAgIEZyYW1ld29yayA9PiAnOS4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKIyEvdXNyL2Jpbi9iYXNoCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKbXkgQFN0cmluZ3MgPSBzcGxpdCAvOi8sICdzb21lOjpjb2RlJzsKQFN0cmluZ3MgPSBzcGxpdCBtLzovLCAnc29tZTo6Y29kZSc7CkBTdHJpbmdzID0gc3BsaXQobS86LywgJ3NvbWU6OmNvZGUnKTsKQFN0cmluZ3MgPSBzcGxpdCgobS86LywgJ3NvbWU6OmNvZGUnKSk7CkBTdHJpbmdzID0gc3BsaXQgcXJ7On0sICdzb21lOjpjb2RlJzsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUGVybENyaXRpYyBQcm9oaWJpdFN0cmluZ3lTcGxpdCB3aXRoIHJlZ2V4IHZhcmlhYmxlJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpQZXJsQ3JpdGljKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc5LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAojIS91c3IvYmluL2Jhc2gKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwpteSAkUmVnZXggPSBxcns6fTsKbXkgQFN0cmluZ3MgPSBzcGxpdCAkUmVnZXgsICdzb21lOjpjb2RlJzsKQFN0cmluZ3MgPSBzcGxpdCgkUmVnZXgsICdzb21lOjpjb2RlJyk7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKKTsKCiRTZWxmLT5zY3JpcHRzOjp0ZXN0OjpPVFJTQ29kZVBvbGljeVBsdWdpbnM6OlJ1biggVGVzdHMgPT4gXEBUZXN0cyApOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCiMgV29yayBhcm91bmQgYSBQZXJsIGJ1ZyB0aGF0IGlzIHRyaWdnZXJlZCBpbiBEZXZlbDo6U3RhY2tUcmFjZQojICAgKHByb2JhbHkgZnJvbSBFeGNlcHRpb246OkNsYXNzIGFuZCB0aGlzIGZyb20gUGVybDo6Q3JpdGljKS4KIwojICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ob3VzZWFic29sdXRlL0RldmVsLVN0YWNrVHJhY2UvaXNzdWVzLzExIGFuZAojICAgaHR0cDovL3J0LnBlcmwub3JnL3J0My9QdWJsaWMvQnVnL0Rpc3BsYXkuaHRtbD9pZD03ODE4NgpubyB3YXJuaW5ncyAncmVkZWZpbmUnOyAgICAjIyBubyBjcml0aWMKdXNlIERldmVsOjpTdGFja1RyYWNlICgpOwpsb2NhbCAqRGV2ZWw6OlN0YWNrVHJhY2U6Om5ldyA9IHN1YiB7IH07ICAgICMgbm8tb3AKdXNlIHdhcm5pbmdzICdyZWRlZmluZSc7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RSU0NvZGVQb2xpY3lQbHVnaW5zOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnQWxsIGZpbmUnLAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC5wbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlBlcmxDcml0aWMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzguMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBNeUZ1bmN0aW9uIHt9Cm15ICRDYW1lbENhc2VWYXIgPSAxOwoKMTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnV3Jvbmcgc3ViJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpQZXJsQ3JpdGljKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgbXlfZnVuY3Rpb24ge30KCjE7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1dyb25nIHZhcicsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UGVybENyaXRpYyldLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKbXkgJF93cm9uZ192YXJpYWJsZSA9IDE7CgoxOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdBbGwgZmluZScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UGVybENyaXRpYyldLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKcGFja2FnZSBLZXJuZWw6OlRlc3Q7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBNeUZ1bmN0aW9uIHt9Cm15ICRDYW1lbENhc2VWYXIgPSAxOwoKMTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnV3Jvbmcgc3ViJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpQZXJsQ3JpdGljKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApwYWNrYWdlIEtlcm5lbDo6VGVzdDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKc3ViIG15X2Z1bmN0aW9uIHt9CgoxOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdXcm9uZyB2YXInLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlBlcmxDcml0aWMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzguMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCnBhY2thZ2UgS2VybmVsOjpUZXN0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpteSAkX3dyb25nX3ZhcmlhYmxlID0gMTsKCjE7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1BhY2thZ2UgVmFyaWFibGUnLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlBlcmxDcml0aWMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzguMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCnBhY2thZ2UgS2VybmVsOjpUZXN0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpteSAkT1RIRVI6OlBBQ0tBR0U6Ol9wcml2YXRlX3ZhcmlhYmxlID0gMTsKCjE7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0Rlcml2ZWQgUGFja2FnZSAodXNlIHBhcmVudCknLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlBlcmxDcml0aWMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzguMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCnBhY2thZ2UgS2VybmVsOjpUZXN0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KE15OjpQYWNrYWdlKTsKCnN1YiBvdmVycmlkZGVuX21ldGhvZCB7fQoKMTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRGVyaXZlZCBQYWNrYWdlICh1c2UgYmFzZSknLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlBlcmxDcml0aWMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzguMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCnBhY2thZ2UgS2VybmVsOjpUZXN0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgYmFzZSBxdyhNeTo6UGFja2FnZSk7CgpzdWIgb3ZlcnJpZGRlbl9tZXRob2Qge30KCjE7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0Rlcml2ZWQgUGFja2FnZSAoTW9vc2UgKyBleHRlbmQpJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpQZXJsQ3JpdGljKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApwYWNrYWdlIEtlcm5lbDo6VGVzdDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1vb3NlOwpleHRlbmRzIHF3KE15OjpQYWNrYWdlKTsKCnN1YiBvdmVycmlkZGVuX21ldGhvZCB7fQoKMTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRGVyaXZlZCBQYWNrYWdlIChNb29zZTo6Um9sZSArIHdpdGgpJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpQZXJsQ3JpdGljKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApwYWNrYWdlIEtlcm5lbDo6VGVzdDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1vb3NlOjpSb2xlOwp3aXRoIHF3KE15OjpQYWNrYWdlKTsKCnN1YiBvdmVycmlkZGVuX21ldGhvZCB7fQoKMTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRGVyaXZlZCBQYWNrYWdlIChNb286OlJvbGUgKyB3aXRoKScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UGVybENyaXRpYyldLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKcGFja2FnZSBLZXJuZWw6OlRlc3Q7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNb286OlJvbGU7CndpdGggcXcoTXk6OlBhY2thZ2UpOwoKc3ViIG92ZXJyaWRkZW5fbWV0aG9kIHt9CgoxOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdEZXJpdmVkIFBhY2thZ2UgKE1vbyArIGV4dGVuZHMpJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpQZXJsQ3JpdGljKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApwYWNrYWdlIEtlcm5lbDo6VGVzdDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1vbzsKZXh0ZW5kcyBxdyhNeTo6UGFja2FnZSk7CgpzdWIgb3ZlcnJpZGRlbl9tZXRob2Qge30KCjE7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0Rlcml2ZWQgUGFja2FnZSAoTW9vc2UgKyBleHRlbmRzKScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UGVybENyaXRpYyldLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKcGFja2FnZSBLZXJuZWw6OlRlc3Q7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNb29zZTsKZXh0ZW5kcyBxdyhNeTo6UGFja2FnZSk7CgpzdWIgb3ZlcnJpZGRlbl9tZXRob2Qge30KCjE7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ01vb3NlIFBhY2thZ2UsIGJ1dCBub3QgZGVyaXZlZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UGVybENyaXRpYyldLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKcGFja2FnZSBLZXJuZWw6OlRlc3Q7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNb29zZTsKdXNlIE1vb3NlOjpSb2xlOwoKc3ViIG15X2Z1bmN0aW9uIHt9CgoxOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdSZXF1aXJlQmFzZUNsYXNzJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpQZXJsQ3JpdGljKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApwYWNrYWdlIEtlcm5lbDo6VGVzdDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZUJhc2VDbGFzcygnU29tZTo6Q2xhc3MnKTsKCnN1YiBvdmVycmlkZGVuX21ldGhvZCB7fQoKMTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnTW9qbzo6QmFzZScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UGVybENyaXRpYyldLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKcGFja2FnZSBLZXJuZWw6OlRlc3Q7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNb2pvOjpCYXNlICdTb21lOjpDbGFzcyc7CgpzdWIgb3ZlcnJpZGRlbl9tZXRob2Qge30KCjE7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKKTsKCiRTZWxmLT5zY3JpcHRzOjp0ZXN0OjpPVFJTQ29kZVBvbGljeVBsdWdpbnM6OlJ1biggVGVzdHMgPT4gXEBUZXN0cyApOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCiMgV29yayBhcm91bmQgYSBQZXJsIGJ1ZyB0aGF0IGlzIHRyaWdnZXJlZCBpbiBEZXZlbDo6U3RhY2tUcmFjZQojICAgKHByb2JhbHkgZnJvbSBFeGNlcHRpb246OkNsYXNzIGFuZCB0aGlzIGZyb20gUGVybDo6Q3JpdGljKS4KIwojICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ob3VzZWFic29sdXRlL0RldmVsLVN0YWNrVHJhY2UvaXNzdWVzLzExIGFuZAojICAgaHR0cDovL3J0LnBlcmwub3JnL3J0My9QdWJsaWMvQnVnL0Rpc3BsYXkuaHRtbD9pZD03ODE4NgpubyB3YXJuaW5ncyAncmVkZWZpbmUnOyAgICAjIyBubyBjcml0aWMKdXNlIERldmVsOjpTdGFja1RyYWNlICgpOwpsb2NhbCAqRGV2ZWw6OlN0YWNrVHJhY2U6Om5ldyA9IHN1YiB7IH07ICAgICMgbm8tb3AKdXNlIHdhcm5pbmdzICdyZWRlZmluZSc7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RSU0NvZGVQb2xpY3lQbHVnaW5zOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnbmV4dCB3aXRob3V0IGxhYmVsJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpQZXJsQ3JpdGljKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAojIS91c3IvYmluL2Jhc2gKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwpmb3IgbXkgJEtleSAoIDEuLjMgKSB7CiAgICBuZXh0Owp9CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ25leHQgd2l0aCBsYWJlbCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UGVybENyaXRpYyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKIyEvdXNyL2Jpbi9iYXNoCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKS0VZOgpmb3IgbXkgJEtleSAoIDEuLjMgKSB7CiAgICBuZXh0IEtFWTsKfQpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgICAgICBSZXN1bHQgICAgPT4gPDwnRU9GJywKIyEvdXNyL2Jpbi9iYXNoCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKS0VZOgpmb3IgbXkgJEtleSAoIDEuLjMgKSB7CiAgICBuZXh0IEtFWTsKfQpFT0YKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdsYXN0IHdpdGhvdXQgbGFiZWwnLAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC5wbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBlcmw6OlBlcmxDcml0aWMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzQuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiMhL3Vzci9iaW4vYmFzaAp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CmZvciBteSAkS2V5ICggMS4uMyApIHsKICAgIGxhc3Q7Cn0KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnbGFzdCB3aXRoIGxhYmVsJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpQZXJsQ3JpdGljKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAojIS91c3IvYmluL2Jhc2gKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwpLRVk6CmZvciBteSAkS2V5ICggMS4uMyApIHsKICAgIGxhc3QgS0VZOwp9CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgICAgIFJlc3VsdCAgICA9PiA8PCdFT0YnLAojIS91c3IvYmluL2Jhc2gKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwpLRVk6CmZvciBteSAkS2V5ICggMS4uMyApIHsKICAgIGxhc3QgS0VZOwp9CkVPRgogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ25leHQgd2l0aG91dCBsYWJlbCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UGVybDo6UGVybENyaXRpYyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKIyEvdXNyL2Jpbi9iYXNoCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKZm9yIG15ICRLZXkgKCAxLi4zICkgewogICAgbmV4dCBpZiAoMSk7Cn0KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnbmV4dCB3aXRoIGxhYmVsJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQZXJsOjpQZXJsQ3JpdGljKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAojIS91c3IvYmluL2Jhc2gKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwpLRVk6CmZvciBteSAkS2V5ICggMS4uMyApIHsKICAgIG5leHQgS0VZIGlmICgxKTsKfQpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgICAgICBSZXN1bHQgICAgPT4gPDwnRU9GJywKIyEvdXNyL2Jpbi9iYXNoCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKS0VZOgpmb3IgbXkgJEtleSAoIDEuLjMgKSB7CiAgICBuZXh0IEtFWSBpZiAoMSk7Cn0KRU9GCiAgICB9LAopOwoKJFNlbGYtPnNjcmlwdHM6OnRlc3Q6Ok9UUlNDb2RlUG9saWN5UGx1Z2luczo6UnVuKCBUZXN0cyA9PiBcQFRlc3RzICk7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCnVzZSBzY3JpcHRzOjp0ZXN0OjpPVFJTQ29kZVBvbGljeVBsdWdpbnM7CgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdQTzo6RG9jYm9va0xpbnQsIHZhbGlkIGRvY2Jvb2snLAogICAgICAgIEZpbGVuYW1lICA9PiAnZG9jLWFkbWluLXRlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UE86OkRvY2Jvb2tMaW50KV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAptc2dpZCAiWWVzIDxsaW5rIGxpbmtlbmQ9XCIxMjNcIj50aGlzPC9saW5rPiB3b3JrcyIKbXNnc3RyICJKYSA8bGluayBsaW5rZW5kPVwiMTIzXCI+ZGFzPC9saW5rPiBmdW5rdGlvbmllcnQiCkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1BPOjpEb2Nib29rTGludCwgdmFsaWQgZG9jYm9vayAoaWdub3JlZCB0YWcgbWlzc2luZyknLAogICAgICAgIEZpbGVuYW1lICA9PiAnZG9jLWFkbWluLXRlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UE86OkRvY2Jvb2tMaW50KV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAptc2dpZCAiWWVzIDxlbXBoYXNpcz50aGlzPC9lbXBoYXNpcz4gd29ya3MiCm1zZ3N0ciAiSmEgZGFzIGZ1bmt0aW9uaWVydCIKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUE86OkRvY2Jvb2tMaW50LCBpbnZhbGlkIGRvY2Jvb2sgKGludmFsaWQgeG1sKScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdkb2MtYWRtaW4tdGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQTzo6RG9jYm9va0xpbnQpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzQuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCm1zZ2lkICJZZXMgPGxpbmsgbGlua2VuZD1cIjEyM1wiPnRoaXM8L2xpbms+IHdvcmtzIgptc2dzdHIgIkphIDxsaW5rIGxpbmtlbmQ9XCIxMjNcIj5kYXM8L2xpbms+IGZ1bmt0aW9uaWVydCA8ZXh0cmF0YWcgdW5jbG9zZWQ+IgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdQTzo6RG9jYm9va0xpbnQsIGludmFsaWQgZG9jYm9vayAobWlzc2luZyB0YWdzKScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdkb2MtYWRtaW4tdGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQTzo6RG9jYm9va0xpbnQpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzQuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCm1zZ2lkICI8cGxhY2Vob2xkZXIgdHlwZT1cInNjcmVlbmluZm9cIiBpZD1cIjBcIi8+IDxncmFwaGljIHNyY2NyZWRpdD1cInByb2Nlc3MtIgoibWFuYWdlbWVudCAtIHNjcmVlbnNob3RcIiBzY2FsZT0nNDAnIGZpbGVyZWY9XCJzY3JlZW5zaG90cy9wbS1hY2NvcmRpb24tbmV3LSIKInRyYW5zaXRpb24ucG5nXCI+PC9ncmFwaGljPiIKbXNnc3RyICJGYWxzY2ggw7xiZXJzZXR6dCIKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAopOwoKJFNlbGYtPnNjcmlwdHM6OnRlc3Q6Ok9UUlNDb2RlUG9saWN5UGx1Z2luczo6UnVuKCBUZXN0cyA9PiBcQFRlc3RzICk7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCnVzZSBzY3JpcHRzOjp0ZXN0OjpPVFJTQ29kZVBvbGljeVBsdWdpbnM7CgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdQTzo6SFRNTFRhZ3MsIHZhbGlkIGJvbGQgdGFnJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ290cnMuZGUucG8nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQTzo6SFRNTFRhZ3MpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCm1zZ2lkICJTdHJpbmcgd2l0aCA8Yj50YWc8L2I+Igptc2dzdHIgIlplaWNoZW5rZXR0ZSBtaXQgPGI+VGFnPC9iPiIKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUE86OkhUTUxUYWdzLCBmb3JiaWRkZW4gc2NyaXB0IHRhZycsCiAgICAgICAgRmlsZW5hbWUgID0+ICdvdHJzLmRlLnBvJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UE86OkhUTUxUYWdzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAptc2dpZCAiU3RyaW5nIHdpdGggPHNDcklwVD5ldmlsIHRhZzwvc2NyaXB0PiIKbXNnc3RyICJaZWljaGVua2V0dGUgbWl0IDxzY3JpcHQ+YsO2c2VtIFRhZzwvc2NyaXB0PiIKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUE86OkhUTUxUYWdzLCB2YWxpZCBwYXJhZ3JhcGggdGFnJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ290cnMucG90JywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6UE86OkhUTUxUYWdzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAptc2dpZCAiPHA+UGFyYWdyYXBoIHN0cmluZzwvcD4iCm1zZ3N0ciAiIgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdQTzo6SFRNTFRhZ3MsIGZvcmJpZGRlbiBtZXRhIHRhZycsCiAgICAgICAgRmlsZW5hbWUgID0+ICdvdHJzLnBvdCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBPOjpIVE1MVGFncyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKbXNnaWQgIlJlZGlyZWN0aW5nIG5vdy4uLiA8TUVUQSBodHRwLWVxdWl2PVwicmVmcmVzaFwiIGNvbnRlbnQ9XCIwOyB1cmw9aHR0cDovL2V4YW1wbGUuY29tL1wiPiIKbXNnc3RyICIiCkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1BPOjpIVE1MVGFncywgcGFyYWdyYXBoIHRhZyB3aXRoIGZvcmJpZGRlbiBhdHRyaWJ1dGUnLAogICAgICAgIEZpbGVuYW1lICA9PiAnb3Rycy5wb3QnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQTzo6SFRNTFRhZ3MpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCm1zZ2lkICI8cCBvbm1vdXNlb3Zlcj1cImFsZXJ0KDEpO1wiPlBhcmFncmFwaCBzdHJpbmc8L3A+Igptc2dzdHIgIiIKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUE86OkhUTUxUYWdzLCBhbmNob3IgdGFnIHdpdGggZm9yYmlkZGVuIGF0dHJpYnV0ZXMnLAogICAgICAgIEZpbGVuYW1lICA9PiAnb3Rycy5wb3QnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpQTzo6SFRNTFRhZ3MpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCm1zZ2lkICI8YSBocmVmPVwiaHR0cHM6Ly9ldmlsLmNvbS9kYW5nZXIucGhwXCIgc3R5bGU9XCJjb2xvcjpyZWRcIj5ObyBtb3JlIHNwYWNlIG9uIGRldmljZSEgT1RSUyB3aWxsIHN0b3AuIENsaWNrIGhlcmUgZm9yIGRldGFpbHMuPC9hPiIKbXNnc3RyICIiCkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1BPOjpIVE1MVGFncywgbGluayB0YWcgd2l0aCBmb3JiaWRkZW4gYXR0cmlidXRlcycsCiAgICAgICAgRmlsZW5hbWUgID0+ICdvdHJzLnBvdCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlBPOjpIVE1MVGFncyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKbXNnaWQgImZvbzxsaW5rIGhyZWY9XCJodHRwczovL2V2aWwuY29tL2Rhbmdlci5waHBcIiByZWw9XCJzdHlsZXNoZWV0XCI+YmFyIgptc2dzdHIgIiIKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAopOwoKJFNlbGYtPnNjcmlwdHM6OnRlc3Q6Ok9UUlNDb2RlUG9saWN5UGx1Z2luczo6UnVuKCBUZXN0cyA9PiBcQFRlc3RzICk7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCnVzZSBzY3JpcHRzOjp0ZXN0OjpPVFJTQ29kZVBvbGljeVBsdWdpbnM7CgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdDb2RlVGFncywgdmFsaWQuJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpTT1BNOjpDb2RlVGFncyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKICAgIDxDb2RlSW5zdGFsbCBUeXBlPSJwb3N0Ij48IVtDREFUQVsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCd2YXI6OnBhY2thZ2VzZXR1cDo6TXlQYWNrZ2UnKS0+Q29kZUluc3RhbGwoKTsKICAgIF1dPjwvQ29kZUluc3RhbGw+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0NvZGVUYWdzLCBvbGQgZnJhbWV3b3JrLicsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6U09QTTo6Q29kZVRhZ3MpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzMuMycsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiAgICA8Q29kZUluc3RhbGwgVHlwZT0icG9zdCI+CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coLi4uKQogICAgPC9Db2RlSW5zdGFsbD4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnQ29kZVRhZ3MsICRTZWxmIHVzZWQuJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpTT1BNOjpDb2RlVGFncyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKICAgIDxDb2RlSW5zdGFsbCBUeXBlPSJwb3N0Ij48IVtDREFUQVsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZyguLi4pCiAgICBdXT48L0NvZGVJbnN0YWxsPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdDb2RlVGFncywgbm8gY2RhdGEuJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpTT1BNOjpDb2RlVGFncyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKICAgIDxDb2RlSW5zdGFsbCBUeXBlPSJwb3N0Ij4KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCd2YXI6OnBhY2thZ2VzZXR1cDo6TXlQYWNrZ2UnKS0+Q29kZUluc3RhbGwoKTsKICAgIDwvQ29kZUluc3RhbGw+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKKTsKCiRTZWxmLT5zY3JpcHRzOjp0ZXN0OjpPVFJTQ29kZVBvbGljeVBsdWdpbnM6OlJ1biggVGVzdHMgPT4gXEBUZXN0cyApOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCnVzZSBzY3JpcHRzOjp0ZXN0OjpPVFJTQ29kZVBvbGljeVBsdWdpbnM7CgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdWYWxpZCAtIE9uZGVtYW5kIHRlc3RpbmcgY29uZmlndXJhdGlvbiBwcmVzZW50JywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6U09QTTo6T25kZW1hbmRUZXN0aW5nUHJlc2VudCldLAogICAgICAgIEZyYW1ld29yayA9PiAnNy4wJywKICAgICAgICBGaWxlTGlzdCAgPT4gWwogICAgICAgICAgICAnLm90cnMtY2kueW1sJywKICAgICAgICBdLAogICAgICAgIFNvdXJjZSAgICA9PiAnJywKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdJbnZhbGlkIC0gT25kZW1hbmQgdGVzdGluZyBjb25maWd1cmF0aW9uIG1pc3NpbmcnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpTT1BNOjpPbmRlbWFuZFRlc3RpbmdQcmVzZW50KV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc3LjAnLAogICAgICAgIEZpbGVMaXN0ICA9PiBbXSwKICAgICAgICBTb3VyY2UgICAgPT4gJycsCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAopOwoKJFNlbGYtPnNjcmlwdHM6OnRlc3Q6Ok9UUlNDb2RlUG9saWN5UGx1Z2luczo6UnVuKCBUZXN0cyA9PiBcQFRlc3RzICk7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCnVzZSBzY3JpcHRzOjp0ZXN0OjpPVFJTQ29kZVBvbGljeVBsdWdpbnM7CgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdNaW5pbWFsIHZhbGlkIFNPUE0uJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpTT1BNOjpSZXF1aXJlZEVsZW1lbnRzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc3LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAo8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCIgPz4KPG90cnNfcGFja2FnZSB2ZXJzaW9uPSIxLjAiPgogICAgPE5hbWU+T1RSU0NvZGVQb2xpY3k8L05hbWU+CiAgICA8VmVyc2lvbj4wLjAuMDwvVmVyc2lvbj4KICAgIDxGcmFtZXdvcms+Ny4wLng8L0ZyYW1ld29yaz4KICAgIDxWZW5kb3I+T1RSUyBBRzwvVmVuZG9yPgogICAgPFVSTD5odHRwczovL290cnMuY29tLzwvVVJMPgogICAgPExpY2Vuc2U+R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UgVmVyc2lvbiAzLCAyOSBKdW5lIDIwMDc8L0xpY2Vuc2U+CiAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iIFRyYW5zbGF0YWJsZT0iMSI+T1RSUyBjb2RlIHF1YWxpdHkgY2hlY2tzLjwvRGVzY3JpcHRpb24+CiAgICA8UGFja2FnZUlzRG93bmxvYWRhYmxlPjA8L1BhY2thZ2VJc0Rvd25sb2FkYWJsZT4KICAgIDxQYWNrYWdlSXNCdWlsZGFibGU+MDwvUGFja2FnZUlzQnVpbGRhYmxlPgogICAgPEZpbGVsaXN0PgogICAgICAgIDxGaWxlIFBlcm1pc3Npb249Ijc1NSIgTG9jYXRpb249ImJpbi9vdHJzLkNvZGVQb2xpY3kucGwiIC8+CiAgICA8L0ZpbGVsaXN0Pgo8L290cnNfcGFja2FnZT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnTWlzc2luZyBuYW1lLicsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6U09QTTo6UmVxdWlyZWRFbGVtZW50cyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNy4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdHJzX3BhY2thZ2UgdmVyc2lvbj0iMS4wIj4KICAgIDxWZXJzaW9uPjAuMC4wPC9WZXJzaW9uPgogICAgPEZyYW1ld29yaz43LjAueDwvRnJhbWV3b3JrPgogICAgPFZlbmRvcj5PVFJTIEFHPC9WZW5kb3I+CiAgICA8VVJMPmh0dHBzOi8vb3Rycy5jb20vPC9VUkw+CiAgICA8TGljZW5zZT5HTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRSBWZXJzaW9uIDMsIDI5IEp1bmUgMjAwNzwvTGljZW5zZT4KICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+T1RSUyBjb2RlIHF1YWxpdHkgY2hlY2tzLjwvRGVzY3JpcHRpb24+CiAgICA8RmlsZWxpc3Q+CiAgICAgICAgPEZpbGUgUGVybWlzc2lvbj0iNzU1IiBMb2NhdGlvbj0iYmluL290cnMuQ29kZVBvbGljeS5wbCIgLz4KICAgIDwvRmlsZWxpc3Q+Cjwvb3Ryc19wYWNrYWdlPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdNaXNzaW5nIGRlc2NyaXB0aW9uLicsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6U09QTTo6UmVxdWlyZWRFbGVtZW50cyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNy4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdHJzX3BhY2thZ2UgdmVyc2lvbj0iMS4wIj4KICAgIDxOYW1lPk9UUlNDb2RlUG9saWN5PC9OYW1lPgogICAgPFZlcnNpb24+MC4wLjA8L1ZlcnNpb24+CiAgICA8RnJhbWV3b3JrPjcuMC54PC9GcmFtZXdvcms+CiAgICA8VmVuZG9yPk9UUlMgQUc8L1ZlbmRvcj4KICAgIDxVUkw+aHR0cHM6Ly9vdHJzLmNvbS88L1VSTD4KICAgIDxMaWNlbnNlPkdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFIFZlcnNpb24gMywgMjkgSnVuZSAyMDA3PC9MaWNlbnNlPgogICAgPEZpbGVsaXN0PgogICAgICAgIDxGaWxlIFBlcm1pc3Npb249Ijc1NSIgTG9jYXRpb249ImJpbi9vdHJzLkNvZGVQb2xpY3kucGwiIC8+CiAgICA8L0ZpbGVsaXN0Pgo8L290cnNfcGFja2FnZT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnTWlzc2luZyB2ZXJzaW9uLicsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6U09QTTo6UmVxdWlyZWRFbGVtZW50cyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNy4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdHJzX3BhY2thZ2UgdmVyc2lvbj0iMS4wIj4KICAgIDxOYW1lPk9UUlNDb2RlUG9saWN5PC9OYW1lPgogICAgPEZyYW1ld29yaz43LjAueDwvRnJhbWV3b3JrPgogICAgPFZlbmRvcj5PVFJTIEFHPC9WZW5kb3I+CiAgICA8VVJMPmh0dHBzOi8vb3Rycy5jb20vPC9VUkw+CiAgICA8TGljZW5zZT5HTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRSBWZXJzaW9uIDMsIDI5IEp1bmUgMjAwNzwvTGljZW5zZT4KICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+T1RSUyBjb2RlIHF1YWxpdHkgY2hlY2tzLjwvRGVzY3JpcHRpb24+CiAgICA8RmlsZWxpc3Q+CiAgICAgICAgPEZpbGUgUGVybWlzc2lvbj0iNzU1IiBMb2NhdGlvbj0iYmluL290cnMuQ29kZVBvbGljeS5wbCIgLz4KICAgIDwvRmlsZWxpc3Q+Cjwvb3Ryc19wYWNrYWdlPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdNaXNzaW5nIGZyYW1ld29yay4nLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlNPUE06OlJlcXVpcmVkRWxlbWVudHMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzcuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8b3Ryc19wYWNrYWdlIHZlcnNpb249IjEuMCI+CiAgICA8TmFtZT5PVFJTQ29kZVBvbGljeTwvTmFtZT4KICAgIDxWZXJzaW9uPjAuMC4wPC9WZXJzaW9uPgogICAgPFZlbmRvcj5PVFJTIEFHPC9WZW5kb3I+CiAgICA8VVJMPmh0dHBzOi8vb3Rycy5jb20vPC9VUkw+CiAgICA8TGljZW5zZT5HTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRSBWZXJzaW9uIDMsIDI5IEp1bmUgMjAwNzwvTGljZW5zZT4KICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+T1RSUyBjb2RlIHF1YWxpdHkgY2hlY2tzLjwvRGVzY3JpcHRpb24+CiAgICA8RmlsZWxpc3Q+CiAgICAgICAgPEZpbGUgUGVybWlzc2lvbj0iNzU1IiBMb2NhdGlvbj0iYmluL290cnMuQ29kZVBvbGljeS5wbCIgLz4KICAgIDwvRmlsZWxpc3Q+Cjwvb3Ryc19wYWNrYWdlPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdNaXNzaW5nIHZlbmRvci4nLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlNPUE06OlJlcXVpcmVkRWxlbWVudHMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzcuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8b3Ryc19wYWNrYWdlIHZlcnNpb249IjEuMCI+CiAgICA8TmFtZT5PVFJTQ29kZVBvbGljeTwvTmFtZT4KICAgIDxWZXJzaW9uPjAuMC4wPC9WZXJzaW9uPgogICAgPEZyYW1ld29yaz43LjAueDwvRnJhbWV3b3JrPgogICAgPFVSTD5odHRwczovL290cnMuY29tLzwvVVJMPgogICAgPExpY2Vuc2U+R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UgVmVyc2lvbiAzLCAyOSBKdW5lIDIwMDc8L0xpY2Vuc2U+CiAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPk9UUlMgY29kZSBxdWFsaXR5IGNoZWNrcy48L0Rlc2NyaXB0aW9uPgogICAgPEZpbGVsaXN0PgogICAgICAgIDxGaWxlIFBlcm1pc3Npb249Ijc1NSIgTG9jYXRpb249ImJpbi9vdHJzLkNvZGVQb2xpY3kucGwiIC8+CiAgICA8L0ZpbGVsaXN0Pgo8L290cnNfcGFja2FnZT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnTWlzc2luZyBVUkwuJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpTT1BNOjpSZXF1aXJlZEVsZW1lbnRzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc3LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAo8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCIgPz4KPG90cnNfcGFja2FnZSB2ZXJzaW9uPSIxLjAiPgogICAgPE5hbWU+T1RSU0NvZGVQb2xpY3k8L05hbWU+CiAgICA8VmVyc2lvbj4wLjAuMDwvVmVyc2lvbj4KICAgIDxGcmFtZXdvcms+Ny4wLng8L0ZyYW1ld29yaz4KICAgIDxWZW5kb3I+T1RSUyBBRzwvVmVuZG9yPgogICAgPExpY2Vuc2U+R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UgVmVyc2lvbiAzLCAyOSBKdW5lIDIwMDc8L0xpY2Vuc2U+CiAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPk9UUlMgY29kZSBxdWFsaXR5IGNoZWNrcy48L0Rlc2NyaXB0aW9uPgogICAgPEZpbGVsaXN0PgogICAgICAgIDxGaWxlIFBlcm1pc3Npb249Ijc1NSIgTG9jYXRpb249ImJpbi9vdHJzLkNvZGVQb2xpY3kucGwiIC8+CiAgICA8L0ZpbGVsaXN0Pgo8L290cnNfcGFja2FnZT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnTWlzc2luZyBsaWNlbnNlLicsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6U09QTTo6UmVxdWlyZWRFbGVtZW50cyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNy4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdHJzX3BhY2thZ2UgdmVyc2lvbj0iMS4wIj4KICAgIDxOYW1lPk9UUlNDb2RlUG9saWN5PC9OYW1lPgogICAgPFZlcnNpb24+MC4wLjA8L1ZlcnNpb24+CiAgICA8RnJhbWV3b3JrPjcuMC54PC9GcmFtZXdvcms+CiAgICA8VmVuZG9yPk9UUlMgQUc8L1ZlbmRvcj4KICAgIDxVUkw+aHR0cHM6Ly9vdHJzLmNvbS88L1VSTD4KICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+T1RSUyBjb2RlIHF1YWxpdHkgY2hlY2tzLjwvRGVzY3JpcHRpb24+CiAgICA8RmlsZWxpc3Q+CiAgICAgICAgPEZpbGUgUGVybWlzc2lvbj0iNzU1IiBMb2NhdGlvbj0iYmluL290cnMuQ29kZVBvbGljeS5wbCIgLz4KICAgIDwvRmlsZWxpc3Q+Cjwvb3Ryc19wYWNrYWdlPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdJbnZhbGlkIGNvbnRlbnQgZm9yIFBhY2thZ2VJc0Rvd25sb2FkYWJsZSBmbGFnLicsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6U09QTTo6UmVxdWlyZWRFbGVtZW50cyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNy4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdHJzX3BhY2thZ2UgdmVyc2lvbj0iMS4wIj4KICAgIDxOYW1lPk9UUlNDb2RlUG9saWN5PC9OYW1lPgogICAgPFZlcnNpb24+MC4wLjA8L1ZlcnNpb24+CiAgICA8RnJhbWV3b3JrPjcuMC54PC9GcmFtZXdvcms+CiAgICA8VmVuZG9yPk9UUlMgQUc8L1ZlbmRvcj4KICAgIDxVUkw+aHR0cHM6Ly9vdHJzLmNvbS88L1VSTD4KICAgIDxMaWNlbnNlPkdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFIFZlcnNpb24gMywgMjkgSnVuZSAyMDA3PC9MaWNlbnNlPgogICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5PVFJTIGNvZGUgcXVhbGl0eSBjaGVja3MuPC9EZXNjcmlwdGlvbj4KICAgIDxQYWNrYWdlSXNEb3dubG9hZGFibGU+dGVzdDwvUGFja2FnZUlzRG93bmxvYWRhYmxlPgogICAgPFBhY2thZ2VJc0J1aWxkYWJsZT4wPC9QYWNrYWdlSXNCdWlsZGFibGU+CiAgICA8RmlsZWxpc3Q+CiAgICAgICAgPEZpbGUgUGVybWlzc2lvbj0iNzU1IiBMb2NhdGlvbj0iYmluL290cnMuQ29kZVBvbGljeS5wbCIgLz4KICAgIDwvRmlsZWxpc3Q+Cjwvb3Ryc19wYWNrYWdlPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdPVFJTQ29kZVBvbGljeSAtIG1pc3NpbmcgUGFja2FnZUlzRG93bmxvYWRhYmxlICsgUGFja2FnZUlzQnVpbGRhYmxlLicsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6U09QTTo6UmVxdWlyZWRFbGVtZW50cyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNy4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdHJzX3BhY2thZ2UgdmVyc2lvbj0iMS4wIj4KICAgIDxOYW1lPk9UUlNDb2RlUG9saWN5PC9OYW1lPgogICAgPFZlcnNpb24+MC4wLjA8L1ZlcnNpb24+CiAgICA8RnJhbWV3b3JrPjcuMC54PC9GcmFtZXdvcms+CiAgICA8VmVuZG9yPk9UUlMgQUc8L1ZlbmRvcj4KICAgIDxVUkw+aHR0cHM6Ly9vdHJzLmNvbS88L1VSTD4KICAgIDxMaWNlbnNlPkdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFIFZlcnNpb24gMywgMjkgSnVuZSAyMDA3PC9MaWNlbnNlPgogICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5PVFJTIGNvZGUgcXVhbGl0eSBjaGVja3MuPC9EZXNjcmlwdGlvbj4KICAgIDxGaWxlbGlzdD4KICAgICAgICA8RmlsZSBQZXJtaXNzaW9uPSI3NTUiIExvY2F0aW9uPSJiaW4vb3Rycy5Db2RlUG9saWN5LnBsIiAvPgogICAgPC9GaWxlbGlzdD4KPC9vdHJzX3BhY2thZ2U+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ09UUlNDb2RlUG9saWN5IC0gdmFsaWQgU09QTS4nLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlNPUE06OlJlcXVpcmVkRWxlbWVudHMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzcuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8b3Ryc19wYWNrYWdlIHZlcnNpb249IjEuMCI+CiAgICA8TmFtZT5PVFJTQ29kZVBvbGljeTwvTmFtZT4KICAgIDxWZXJzaW9uPjAuMC4wPC9WZXJzaW9uPgogICAgPEZyYW1ld29yaz43LjAueDwvRnJhbWV3b3JrPgogICAgPFZlbmRvcj5PVFJTIEFHPC9WZW5kb3I+CiAgICA8VVJMPmh0dHBzOi8vb3Rycy5jb20vPC9VUkw+CiAgICA8TGljZW5zZT5HTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRSBWZXJzaW9uIDMsIDI5IEp1bmUgMjAwNzwvTGljZW5zZT4KICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+T1RSUyBjb2RlIHF1YWxpdHkgY2hlY2tzLjwvRGVzY3JpcHRpb24+CiAgICA8UGFja2FnZUlzRG93bmxvYWRhYmxlPjA8L1BhY2thZ2VJc0Rvd25sb2FkYWJsZT4KICAgIDxQYWNrYWdlSXNCdWlsZGFibGU+MDwvUGFja2FnZUlzQnVpbGRhYmxlPgogICAgPEZpbGVsaXN0PgogICAgICAgIDxGaWxlIFBlcm1pc3Npb249Ijc1NSIgTG9jYXRpb249ImJpbi9vdHJzLkNvZGVQb2xpY3kucGwiIC8+CiAgICA8L0ZpbGVsaXN0Pgo8L290cnNfcGFja2FnZT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnSVRTTUluY2lkZW50UHJvYmxlbU1hbmFnZW1lbnQgLSBtaXNzaW5nIFBhY2thZ2VJc0Rvd25sb2FkYWJsZSArIFBhY2thZ2VJc0J1aWxkYWJsZS4nLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlNPUE06OlJlcXVpcmVkRWxlbWVudHMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzcuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8b3Ryc19wYWNrYWdlIHZlcnNpb249IjEuMCI+CiAgICA8TmFtZT5JVFNNSW5jaWRlbnRQcm9ibGVtTWFuYWdlbWVudDwvTmFtZT4KICAgIDxWZXJzaW9uPjAuMC4wPC9WZXJzaW9uPgogICAgPEZyYW1ld29yaz43LjAueDwvRnJhbWV3b3JrPgogICAgPFZlbmRvcj5PVFJTIEFHPC9WZW5kb3I+CiAgICA8VVJMPmh0dHBzOi8vb3Rycy5jb20vPC9VUkw+CiAgICA8TGljZW5zZT5HTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRSBWZXJzaW9uIDMsIDI5IEp1bmUgMjAwNzwvTGljZW5zZT4KICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+T1RSUyBjb2RlIHF1YWxpdHkgY2hlY2tzLjwvRGVzY3JpcHRpb24+CiAgICA8RmlsZWxpc3Q+CiAgICAgICAgPEZpbGUgUGVybWlzc2lvbj0iNzU1IiBMb2NhdGlvbj0iYmluL290cnMuQ29kZVBvbGljeS5wbCIgLz4KICAgIDwvRmlsZWxpc3Q+Cjwvb3Ryc19wYWNrYWdlPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdJVFNNSW5jaWRlbnRQcm9ibGVtTWFuYWdlbWVudCAtIHZhbGlkIFNPUE0uJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpTT1BNOjpSZXF1aXJlZEVsZW1lbnRzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc3LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAo8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCIgPz4KPG90cnNfcGFja2FnZSB2ZXJzaW9uPSIxLjAiPgogICAgPE5hbWU+SVRTTUluY2lkZW50UHJvYmxlbU1hbmFnZW1lbnQ8L05hbWU+CiAgICA8VmVyc2lvbj4wLjAuMDwvVmVyc2lvbj4KICAgIDxGcmFtZXdvcms+Ny4wLng8L0ZyYW1ld29yaz4KICAgIDxWZW5kb3I+T1RSUyBBRzwvVmVuZG9yPgogICAgPFVSTD5odHRwczovL290cnMuY29tLzwvVVJMPgogICAgPExpY2Vuc2U+R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UgVmVyc2lvbiAzLCAyOSBKdW5lIDIwMDc8L0xpY2Vuc2U+CiAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPk9UUlMgY29kZSBxdWFsaXR5IGNoZWNrcy48L0Rlc2NyaXB0aW9uPgogICAgPFBhY2thZ2VJc0Rvd25sb2FkYWJsZT4wPC9QYWNrYWdlSXNEb3dubG9hZGFibGU+CiAgICA8UGFja2FnZUlzQnVpbGRhYmxlPjA8L1BhY2thZ2VJc0J1aWxkYWJsZT4KICAgIDxGaWxlbGlzdD4KICAgICAgICA8RmlsZSBQZXJtaXNzaW9uPSI3NTUiIExvY2F0aW9uPSJiaW4vb3Rycy5Db2RlUG9saWN5LnBsIiAvPgogICAgPC9GaWxlbGlzdD4KPC9vdHJzX3BhY2thZ2U+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1RpbWVBY2NvdW50aW5nIC0gbWlzc2luZyBQYWNrYWdlSXNEb3dubG9hZGFibGUgKyBQYWNrYWdlSXNCdWlsZGFibGUuJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpTT1BNOjpSZXF1aXJlZEVsZW1lbnRzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc3LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAo8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCIgPz4KPG90cnNfcGFja2FnZSB2ZXJzaW9uPSIxLjAiPgogICAgPE5hbWU+VGltZUFjY291bnRpbmc8L05hbWU+CiAgICA8VmVyc2lvbj4wLjAuMDwvVmVyc2lvbj4KICAgIDxGcmFtZXdvcms+Ny4wLng8L0ZyYW1ld29yaz4KICAgIDxWZW5kb3I+T1RSUyBBRzwvVmVuZG9yPgogICAgPFVSTD5odHRwczovL290cnMuY29tLzwvVVJMPgogICAgPExpY2Vuc2U+R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UgVmVyc2lvbiAzLCAyOSBKdW5lIDIwMDc8L0xpY2Vuc2U+CiAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPk9UUlMgY29kZSBxdWFsaXR5IGNoZWNrcy48L0Rlc2NyaXB0aW9uPgogICAgPEZpbGVsaXN0PgogICAgICAgIDxGaWxlIFBlcm1pc3Npb249Ijc1NSIgTG9jYXRpb249ImJpbi9vdHJzLkNvZGVQb2xpY3kucGwiIC8+CiAgICA8L0ZpbGVsaXN0Pgo8L290cnNfcGFja2FnZT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnVGltZUFjY291bnRpbmcgLSB2YWxpZCBTT1BNLicsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6U09QTTo6UmVxdWlyZWRFbGVtZW50cyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNy4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdHJzX3BhY2thZ2UgdmVyc2lvbj0iMS4wIj4KICAgIDxOYW1lPlRpbWVBY2NvdW50aW5nPC9OYW1lPgogICAgPFZlcnNpb24+MC4wLjA8L1ZlcnNpb24+CiAgICA8RnJhbWV3b3JrPjcuMC54PC9GcmFtZXdvcms+CiAgICA8VmVuZG9yPk9UUlMgQUc8L1ZlbmRvcj4KICAgIDxVUkw+aHR0cHM6Ly9vdHJzLmNvbS88L1VSTD4KICAgIDxMaWNlbnNlPkdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFIFZlcnNpb24gMywgMjkgSnVuZSAyMDA3PC9MaWNlbnNlPgogICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5PVFJTIGNvZGUgcXVhbGl0eSBjaGVja3MuPC9EZXNjcmlwdGlvbj4KICAgIDxQYWNrYWdlSXNEb3dubG9hZGFibGU+MDwvUGFja2FnZUlzRG93bmxvYWRhYmxlPgogICAgPFBhY2thZ2VJc0J1aWxkYWJsZT4wPC9QYWNrYWdlSXNCdWlsZGFibGU+CiAgICA8RmlsZWxpc3Q+CiAgICAgICAgPEZpbGUgUGVybWlzc2lvbj0iNzU1IiBMb2NhdGlvbj0iYmluL290cnMuQ29kZVBvbGljeS5wbCIgLz4KICAgIDwvRmlsZWxpc3Q+Cjwvb3Ryc19wYWNrYWdlPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdPVFJTU1RPUk0gLSBtaXNzaW5nIFBhY2thZ2VJc0Rvd25sb2FkYWJsZSArIFBhY2thZ2VJc0J1aWxkYWJsZS4nLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlNPUE06OlJlcXVpcmVkRWxlbWVudHMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzcuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8b3Ryc19wYWNrYWdlIHZlcnNpb249IjEuMCI+CiAgICA8TmFtZT5PVFJTU1RPUk08L05hbWU+CiAgICA8VmVyc2lvbj4wLjAuMDwvVmVyc2lvbj4KICAgIDxGcmFtZXdvcms+Ny4wLng8L0ZyYW1ld29yaz4KICAgIDxWZW5kb3I+T1RSUyBBRzwvVmVuZG9yPgogICAgPFVSTD5odHRwczovL290cnMuY29tLzwvVVJMPgogICAgPExpY2Vuc2U+R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UgVmVyc2lvbiAzLCAyOSBKdW5lIDIwMDc8L0xpY2Vuc2U+CiAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPk9UUlMgY29kZSBxdWFsaXR5IGNoZWNrcy48L0Rlc2NyaXB0aW9uPgogICAgPEZpbGVsaXN0PgogICAgICAgIDxGaWxlIFBlcm1pc3Npb249Ijc1NSIgTG9jYXRpb249ImJpbi9vdHJzLkNvZGVQb2xpY3kucGwiIC8+CiAgICA8L0ZpbGVsaXN0Pgo8L290cnNfcGFja2FnZT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnT1RSU1NUT1JNIC0gdmFsaWQgU09QTS4nLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlNPUE06OlJlcXVpcmVkRWxlbWVudHMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzcuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8b3Ryc19wYWNrYWdlIHZlcnNpb249IjEuMCI+CiAgICA8TmFtZT5PVFJTU1RPUk08L05hbWU+CiAgICA8VmVyc2lvbj4wLjAuMDwvVmVyc2lvbj4KICAgIDxGcmFtZXdvcms+Ny4wLng8L0ZyYW1ld29yaz4KICAgIDxWZW5kb3I+T1RSUyBBRzwvVmVuZG9yPgogICAgPFVSTD5odHRwczovL290cnMuY29tLzwvVVJMPgogICAgPExpY2Vuc2U+R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UgVmVyc2lvbiAzLCAyOSBKdW5lIDIwMDc8L0xpY2Vuc2U+CiAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPk9UUlMgY29kZSBxdWFsaXR5IGNoZWNrcy48L0Rlc2NyaXB0aW9uPgogICAgPFBhY2thZ2VJc0Rvd25sb2FkYWJsZT4wPC9QYWNrYWdlSXNEb3dubG9hZGFibGU+CiAgICA8UGFja2FnZUlzQnVpbGRhYmxlPjA8L1BhY2thZ2VJc0J1aWxkYWJsZT4KICAgIDxGaWxlbGlzdD4KICAgICAgICA8RmlsZSBQZXJtaXNzaW9uPSI3NTUiIExvY2F0aW9uPSJiaW4vb3Rycy5Db2RlUG9saWN5LnBsIiAvPgogICAgPC9GaWxlbGlzdD4KPC9vdHJzX3BhY2thZ2U+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3QxMjMgLSB2YWxpZCBTT1BNIChubyByZXN0cmljdGVkIHBhY2thZ2UpLicsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6U09QTTo6UmVxdWlyZWRFbGVtZW50cyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNy4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdHJzX3BhY2thZ2UgdmVyc2lvbj0iMS4wIj4KICAgIDxOYW1lPlRlc3QxMjM8L05hbWU+CiAgICA8VmVyc2lvbj4wLjAuMDwvVmVyc2lvbj4KICAgIDxGcmFtZXdvcms+Ny4wLng8L0ZyYW1ld29yaz4KICAgIDxWZW5kb3I+T1RSUyBBRzwvVmVuZG9yPgogICAgPFVSTD5odHRwczovL290cnMuY29tLzwvVVJMPgogICAgPExpY2Vuc2U+R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UgVmVyc2lvbiAzLCAyOSBKdW5lIDIwMDc8L0xpY2Vuc2U+CiAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPk9UUlMgY29kZSBxdWFsaXR5IGNoZWNrcy48L0Rlc2NyaXB0aW9uPgogICAgPEZpbGVsaXN0PgogICAgICAgIDxGaWxlIFBlcm1pc3Npb249Ijc1NSIgTG9jYXRpb249ImJpbi9vdHJzLkNvZGVQb2xpY3kucGwiIC8+CiAgICA8L0ZpbGVsaXN0Pgo8L290cnNfcGFja2FnZT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAopOwoKJFNlbGYtPnNjcmlwdHM6OnRlc3Q6Ok9UUlNDb2RlUG9saWN5UGx1Z2luczo6UnVuKCBUZXN0cyA9PiBcQFRlc3RzICk7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCnVzZSBzY3JpcHRzOjp0ZXN0OjpPVFJTQ29kZVBvbGljeVBsdWdpbnM7CgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdNaW5pbWFsIHZhbGlkIFNPUE0uJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpTT1BNOjpYU0RWYWxpZGF0b3IpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzQuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8b3Ryc19wYWNrYWdlIHZlcnNpb249IjEuMCI+CiAgICA8TmFtZT5PVFJTQ29kZVBvbGljeTwvTmFtZT4KICAgIDxWZXJzaW9uPjAuMC4wPC9WZXJzaW9uPgogICAgPEZyYW1ld29yaz40LjAueDwvRnJhbWV3b3JrPgogICAgPFZlbmRvcj5PVFJTIEFHPC9WZW5kb3I+CiAgICA8VVJMPmh0dHBzOi8vb3Rycy5jb20vPC9VUkw+CiAgICA8TGljZW5zZT5HTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRSBWZXJzaW9uIDMsIDI5IEp1bmUgMjAwNzwvTGljZW5zZT4KICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+T1RSUyBjb2RlIHF1YWxpdHkgY2hlY2tzLjwvRGVzY3JpcHRpb24+CiAgICA8RmlsZWxpc3Q+CiAgICAgICAgPEZpbGUgUGVybWlzc2lvbj0iNzU1IiBMb2NhdGlvbj0iYmluL290cnMuQ29kZVBvbGljeS5wbCIvPgogICAgPC9GaWxlbGlzdD4KPC9vdHJzX3BhY2thZ2U+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1NpbXBsZSBQYWNrYWdlTWVyZ2UnLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlNPUE06OlhTRFZhbGlkYXRvcildLAogICAgICAgIEZyYW1ld29yayA9PiAnNC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdHJzX3BhY2thZ2UgdmVyc2lvbj0iMS4wIj4KICAgIDxOYW1lPk9UUlNDb2RlUG9saWN5PC9OYW1lPgogICAgPFZlcnNpb24+MC4wLjA8L1ZlcnNpb24+CiAgICA8RnJhbWV3b3JrPjQuMC54PC9GcmFtZXdvcms+CiAgICA8VmVuZG9yPk9UUlMgQUc8L1ZlbmRvcj4KICAgIDxVUkw+aHR0cHM6Ly9vdHJzLmNvbS88L1VSTD4KICAgIDxMaWNlbnNlPkdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFIFZlcnNpb24gMywgMjkgSnVuZSAyMDA3PC9MaWNlbnNlPgogICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5PVFJTIGNvZGUgcXVhbGl0eSBjaGVja3MuPC9EZXNjcmlwdGlvbj4KICAgIDxGaWxlbGlzdD4KICAgICAgICA8RmlsZSBQZXJtaXNzaW9uPSI3NTUiIExvY2F0aW9uPSJiaW4vb3Rycy5Db2RlUG9saWN5LnBsIi8+CiAgICA8L0ZpbGVsaXN0PgogICAgPFBhY2thZ2VNZXJnZSBOYW1lPSJNZXJnZU9uZSIgVGFyZ2V0VmVyc2lvbj0iMi4wLjAiPjwvUGFja2FnZU1lcmdlPgo8L290cnNfcGFja2FnZT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUGFja2FnZU1lcmdlIHdpdGhvdXQgVGFyZ2V0VmVyc2lvbicsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6U09QTTo6WFNEVmFsaWRhdG9yKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAo8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCIgPz4KPG90cnNfcGFja2FnZSB2ZXJzaW9uPSIxLjAiPgogICAgPE5hbWU+T1RSU0NvZGVQb2xpY3k8L05hbWU+CiAgICA8VmVyc2lvbj4wLjAuMDwvVmVyc2lvbj4KICAgIDxGcmFtZXdvcms+NC4wLng8L0ZyYW1ld29yaz4KICAgIDxWZW5kb3I+T1RSUyBBRzwvVmVuZG9yPgogICAgPFVSTD5odHRwczovL290cnMuY29tLzwvVVJMPgogICAgPExpY2Vuc2U+R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UgVmVyc2lvbiAzLCAyOSBKdW5lIDIwMDc8L0xpY2Vuc2U+CiAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPk9UUlMgY29kZSBxdWFsaXR5IGNoZWNrcy48L0Rlc2NyaXB0aW9uPgogICAgPEZpbGVsaXN0PgogICAgICAgIDxGaWxlIFBlcm1pc3Npb249Ijc1NSIgTG9jYXRpb249ImJpbi9vdHJzLkNvZGVQb2xpY3kucGwiLz4KICAgIDwvRmlsZWxpc3Q+CiAgICA8UGFja2FnZU1lcmdlIE5hbWU9Ik1lcmdlT25lIj48L1BhY2thZ2VNZXJnZT4KPC9vdHJzX3BhY2thZ2U+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1BhY2thZ2VNZXJnZSB3aXRob3V0IE5hbWUnLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlNPUE06OlhTRFZhbGlkYXRvcildLAogICAgICAgIEZyYW1ld29yayA9PiAnNC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdHJzX3BhY2thZ2UgdmVyc2lvbj0iMS4wIj4KICAgIDxOYW1lPk9UUlNDb2RlUG9saWN5PC9OYW1lPgogICAgPFZlcnNpb24+MC4wLjA8L1ZlcnNpb24+CiAgICA8RnJhbWV3b3JrPjQuMC54PC9GcmFtZXdvcms+CiAgICA8VmVuZG9yPk9UUlMgQUc8L1ZlbmRvcj4KICAgIDxVUkw+aHR0cHM6Ly9vdHJzLmNvbS88L1VSTD4KICAgIDxMaWNlbnNlPkdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFIFZlcnNpb24gMywgMjkgSnVuZSAyMDA3PC9MaWNlbnNlPgogICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5PVFJTIGNvZGUgcXVhbGl0eSBjaGVja3MuPC9EZXNjcmlwdGlvbj4KICAgIDxGaWxlbGlzdD4KICAgICAgICA8RmlsZSBQZXJtaXNzaW9uPSI3NTUiIExvY2F0aW9uPSJiaW4vb3Rycy5Db2RlUG9saWN5LnBsIi8+CiAgICA8L0ZpbGVsaXN0PgogICAgPFBhY2thZ2VNZXJnZSBUYXJnZXRWZXJzaW9uPSIyLjAuMCI+PC9QYWNrYWdlTWVyZ2U+Cjwvb3Ryc19wYWNrYWdlPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdTaW1wbGUgUGFja2FnZU1lcmdlJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpTT1BNOjpYU0RWYWxpZGF0b3IpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzQuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8b3Ryc19wYWNrYWdlIHZlcnNpb249IjEuMCI+CiAgICA8TmFtZT5PVFJTQ29kZVBvbGljeTwvTmFtZT4KICAgIDxWZXJzaW9uPjAuMC4wPC9WZXJzaW9uPgogICAgPEZyYW1ld29yaz40LjAueDwvRnJhbWV3b3JrPgogICAgPFZlbmRvcj5PVFJTIEFHPC9WZW5kb3I+CiAgICA8VVJMPmh0dHBzOi8vb3Rycy5jb20vPC9VUkw+CiAgICA8TGljZW5zZT5HTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRSBWZXJzaW9uIDMsIDI5IEp1bmUgMjAwNzwvTGljZW5zZT4KICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+T1RSUyBjb2RlIHF1YWxpdHkgY2hlY2tzLjwvRGVzY3JpcHRpb24+CiAgICA8RmlsZWxpc3Q+CiAgICAgICAgPEZpbGUgUGVybWlzc2lvbj0iNzU1IiBMb2NhdGlvbj0iYmluL290cnMuQ29kZVBvbGljeS5wbCIvPgogICAgPC9GaWxlbGlzdD4KICAgIDxEYXRhYmFzZVVwZ3JhZGUgVHlwZT0icG9zdCI+CiAgICAgICAgPFRhYmxlQ3JlYXRlIE5hbWU9Im1lcmdlX3BhY2thZ2UiPgogICAgICAgICAgICA8Q29sdW1uIE5hbWU9ImlkIiBSZXF1aXJlZD0idHJ1ZSIgUHJpbWFyeUtleT0idHJ1ZSIgQXV0b0luY3JlbWVudD0idHJ1ZSIgVHlwZT0iSU5URUdFUiIvPgogICAgICAgICAgICA8Q29sdW1uIE5hbWU9ImRlc2NyaXB0aW9uIiBSZXF1aXJlZD0idHJ1ZSIgU2l6ZT0iMjAwIiBUeXBlPSJWQVJDSEFSIi8+CiAgICAgICAgPC9UYWJsZUNyZWF0ZT4KICAgIDwvRGF0YWJhc2VVcGdyYWRlPgogICAgPFBhY2thZ2VNZXJnZSBOYW1lPSJNZXJnZU9uZSIgVGFyZ2V0VmVyc2lvbj0iMi4wLjAiPgogICAgICA8RGF0YWJhc2VVcGdyYWRlIFR5cGU9Im1lcmdlIiBJZlBhY2thZ2U9Ik90aGVyUGFja2FnZSIgSWZOb3RQYWNrYWdlPSJPdGhlclBhY2thZ2UyIj4KICAgICAgICAgIDxUYWJsZUNyZWF0ZSBOYW1lPSJtZXJnZV9wYWNrYWdlIj4KICAgICAgICAgICAgICA8Q29sdW1uIE5hbWU9ImlkIiBSZXF1aXJlZD0idHJ1ZSIgUHJpbWFyeUtleT0idHJ1ZSIgQXV0b0luY3JlbWVudD0idHJ1ZSIgVHlwZT0iSU5URUdFUiIvPgogICAgICAgICAgICAgIDxDb2x1bW4gTmFtZT0iZGVzY3JpcHRpb24iIFJlcXVpcmVkPSJ0cnVlIiBTaXplPSIyMDAiIFR5cGU9IlZBUkNIQVIiLz4KICAgICAgICAgIDwvVGFibGVDcmVhdGU+CiAgICAgIDwvRGF0YWJhc2VVcGdyYWRlPgogICAgPC9QYWNrYWdlTWVyZ2U+Cjwvb3Ryc19wYWNrYWdlPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdQYWNrYWdlTWVyZ2Ugd2l0aCBpbnZhbGlkIENvZGVJbnN0YWxsJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpTT1BNOjpYU0RWYWxpZGF0b3IpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzQuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8b3Ryc19wYWNrYWdlIHZlcnNpb249IjEuMCI+CiAgICA8TmFtZT5PVFJTQ29kZVBvbGljeTwvTmFtZT4KICAgIDxWZXJzaW9uPjAuMC4wPC9WZXJzaW9uPgogICAgPEZyYW1ld29yaz40LjAueDwvRnJhbWV3b3JrPgogICAgPFZlbmRvcj5PVFJTIEFHPC9WZW5kb3I+CiAgICA8VVJMPmh0dHBzOi8vb3Rycy5jb20vPC9VUkw+CiAgICA8TGljZW5zZT5HTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRSBWZXJzaW9uIDMsIDI5IEp1bmUgMjAwNzwvTGljZW5zZT4KICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+T1RSUyBjb2RlIHF1YWxpdHkgY2hlY2tzLjwvRGVzY3JpcHRpb24+CiAgICA8RmlsZWxpc3Q+CiAgICAgICAgPEZpbGUgUGVybWlzc2lvbj0iNzU1IiBMb2NhdGlvbj0iYmluL290cnMuQ29kZVBvbGljeS5wbCIvPgogICAgPC9GaWxlbGlzdD4KICAgIDxQYWNrYWdlTWVyZ2UgTmFtZT0iTWVyZ2VPbmUiIFRhcmdldFZlcnNpb249IjIuMC4wIj4KICAgICAgPERhdGFiYXNlSW5zdGFsbCBUeXBlPSJtZXJnZSI+CiAgICAgICAgICA8VGFibGVDcmVhdGUgTmFtZT0ibWVyZ2VfcGFja2FnZSI+CiAgICAgICAgICAgICAgPENvbHVtbiBOYW1lPSJpZCIgUmVxdWlyZWQ9InRydWUiIFByaW1hcnlLZXk9InRydWUiIEF1dG9JbmNyZW1lbnQ9InRydWUiIFR5cGU9IklOVEVHRVIiLz4KICAgICAgICAgICAgICA8Q29sdW1uIE5hbWU9ImRlc2NyaXB0aW9uIiBSZXF1aXJlZD0idHJ1ZSIgU2l6ZT0iMjAwIiBUeXBlPSJWQVJDSEFSIi8+CiAgICAgICAgICA8L1RhYmxlQ3JlYXRlPgogICAgICA8L0RhdGFiYXNlSW5zdGFsbD4KICAgIDwvUGFja2FnZU1lcmdlPgo8L290cnNfcGFja2FnZT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAopOwoKJFNlbGYtPnNjcmlwdHM6OnRlc3Q6Ok9UUlNDb2RlUG9saWN5UGx1Z2luczo6UnVuKCBUZXN0cyA9PiBcQFRlc3RzICk7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIHV0Zjg7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RSU0NvZGVQb2xpY3lQbHVnaW5zOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnU2ltcGxlIGZ1bmN0aW9uIHRyYW5zbGF0aW9uLCBpbnZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1RlbXBsYXRlLnR0JywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6VFQ6OlRyYW5zbGF0aW9uRmlsdGVyKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApbJSBUcmFuc2xhdGUoIkhlbGxvLCB3b3JsZCEiKSAlXQpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdTaW1wbGUgZnVuY3Rpb24gdHJhbnNsYXRpb24gd2l0aCBIVE1MIGZpbHRlciwgdmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVtcGxhdGUudHQnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpUVDo6VHJhbnNsYXRpb25GaWx0ZXIpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsClslIFRyYW5zbGF0ZSgiSGVsbG8sIHdvcmxkISIpIHwgaHRtbCAlXQpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdTaW1wbGUgZnVuY3Rpb24gdHJhbnNsYXRpb24gd2l0aCBKU09OIGZpbHRlciwgdmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVtcGxhdGUudHQnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpUVDo6VHJhbnNsYXRpb25GaWx0ZXIpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsClslIFRyYW5zbGF0ZSgiSGVsbG8sIHdvcmxkISIpIHwgSlNPTiAlXQpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdWYXJpYWJsZSBmdW5jdGlvbiB0cmFuc2xhdGlvbiwgaW52YWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZW1wbGF0ZS50dCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlRUOjpUcmFuc2xhdGlvbkZpbHRlcildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKWyUgVHJhbnNsYXRlKERhdGEuTGFuZ3VhZ2UpICVdCkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1ZhcmlhYmxlIGZ1bmN0aW9uIHRyYW5zbGF0aW9uLCB2YWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZW1wbGF0ZS50dCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlRUOjpUcmFuc2xhdGlvbkZpbHRlcildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKWyUgVHJhbnNsYXRlKERhdGEuTGFuZ3VhZ2UpIHwgaHRtbCAlXQpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdDb21wbGV4IGZ1bmN0aW9uIHRyYW5zbGF0aW9uLCBpbnZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1RlbXBsYXRlLnR0JywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6VFQ6OlRyYW5zbGF0aW9uRmlsdGVyKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAombmRhc2g7IDxzcGFuIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNyZWF0ZWQiKSAlXTogWyUgRGF0YS5DcmVhdGVUaW1lIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpICVdIj5bJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZVNob3J0IikgJV08L3NwYW4+IFslIFRyYW5zbGF0ZSgidmlhICVzIiwgVHJhbnNsYXRlKERhdGEuQ29tbXVuaWNhdGlvbkNoYW5uZWwpKSB8IGh0bWwgJV0KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnQ29tcGxleCBmdW5jdGlvbiB0cmFuc2xhdGlvbiwgdmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVtcGxhdGUudHQnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpUVDo6VHJhbnNsYXRpb25GaWx0ZXIpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiZuZGFzaDsgPHNwYW4gdGl0bGU9IlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCIpIHwgaHRtbCAlXTogWyUgRGF0YS5DcmVhdGVUaW1lIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpICVdIj5bJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZVNob3J0IikgJV08L3NwYW4+IFslIFRyYW5zbGF0ZSgidmlhICVzIiwgVHJhbnNsYXRlKERhdGEuQ29tbXVuaWNhdGlvbkNoYW5uZWwpKSB8IGh0bWwgJV0KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRnVuY3Rpb24gdHJhbnNsYXRpb24gd2l0aCBwbGFjZWhvbGRlciwgaW52YWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZW1wbGF0ZS50dCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlRUOjpUcmFuc2xhdGlvbkZpbHRlcildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFkbWluT1RSU0J1c2luZXNzIiBjbGFzcz0iQnV0dG9uIj48aSBjbGFzcz0iZmEgZmEtYW5nbGUtZG91YmxlLXVwIj48L2k+IFslIFRyYW5zbGF0ZSgiVXBncmFkZSB0byAlcyIsIE9UUlNCdXNpbmVzc0xhYmVsKSAlXTwvYT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRnVuY3Rpb24gdHJhbnNsYXRpb24gd2l0aCBwbGFjZWhvbGRlciwgdmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVtcGxhdGUudHQnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpUVDo6VHJhbnNsYXRpb25GaWx0ZXIpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCjxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZG1pbk9UUlNCdXNpbmVzcyIgY2xhc3M9IkJ1dHRvbiI+PGkgY2xhc3M9ImZhIGZhLWFuZ2xlLWRvdWJsZS11cCI+PC9pPiBbJSBUcmFuc2xhdGUoIlVwZ3JhZGUgdG8gJXMiKSB8IGh0bWwgfCBSZXBsYWNlUGxhY2Vob2xkZXJzKE9UUlNCdXNpbmVzc0xhYmVsKSAlXTwvYT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRnVuY3Rpb24gdHJhbnNsYXRpb24gd2l0aCBwbGFjZWhvbGRlcnMsIGludmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVtcGxhdGUudHQnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpUVDo6VHJhbnNsYXRpb25GaWx0ZXIpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsClslIFRyYW5zbGF0ZSgnVGhpcyBzeXN0ZW0gdXNlcyB0aGUgJXMgd2l0aG91dCBhIHByb3BlciBsaWNlbnNlISBQbGVhc2UgbWFrZSBjb250YWN0IHdpdGggJXMgdG8gcmVuZXcgb3IgYWN0aXZhdGUgeW91ciBjb250cmFjdCEnLCBPVFJTQnVzaW5lc3NMYWJlbCwgJzxhIGhyZWY9Im1haWx0bzpzYWxlc0BvdHJzLmNvbSI+c2FsZXNAb3Rycy5jb208L2E+JykgJV0KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRnVuY3Rpb24gdHJhbnNsYXRpb24gd2l0aCBwbGFjZWhvbGRlcnMsIHZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1RlbXBsYXRlLnR0JywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6VFQ6OlRyYW5zbGF0aW9uRmlsdGVyKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApbJSBUcmFuc2xhdGUoJ1RoaXMgc3lzdGVtIHVzZXMgdGhlICVzIHdpdGhvdXQgYSBwcm9wZXIgbGljZW5zZSEgUGxlYXNlIG1ha2UgY29udGFjdCB3aXRoICVzIHRvIHJlbmV3IG9yIGFjdGl2YXRlIHlvdXIgY29udHJhY3QhJykgfCBodG1sIHwgUmVwbGFjZVBsYWNlaG9sZGVycyhPVFJTQnVzaW5lc3NMYWJlbCwgJzxhIGhyZWY9Im1haWx0bzpzYWxlc0BvdHJzLmNvbSI+c2FsZXNAb3Rycy5jb208L2E+JykgJV0KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRnVuY3Rpb24gdHJhbnNsYXRpb24gd2l0aCBubyBzcGFjZXMsIGludmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVtcGxhdGUudHQnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpUVDo6VHJhbnNsYXRpb25GaWx0ZXIpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCjxidXR0b24gY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyVUcmFuc2xhdGUoIkFkZCIpJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiQWRkIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdGdW5jdGlvbiB0cmFuc2xhdGlvbiB3aXRoIG5vIHNwYWNlcywgdmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVtcGxhdGUudHQnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpUVDo6VHJhbnNsYXRpb25GaWx0ZXIpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCjxidXR0b24gY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyVUcmFuc2xhdGUoIkFkZCIpfGh0bWwlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJBZGQiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0ZpbHRlciB0cmFuc2xhdGlvbiwgaW52YWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZW1wbGF0ZS50dCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlRUOjpUcmFuc2xhdGlvbkZpbHRlcildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPHNwYW4gdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkNvbnRlbnQpIHwgaHRtbCAlXSI+WyUgRGF0YS5Db250ZW50IHwgVHJhbnNsYXRlIHwgdHJ1bmNhdGUoRGF0YS5NYXhMZW5ndGgpICVdPC9zcGFuPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdGaWx0ZXIgdHJhbnNsYXRpb24sIHZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1RlbXBsYXRlLnR0JywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6VFQ6OlRyYW5zbGF0aW9uRmlsdGVyKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAo8c3BhbiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQ29udGVudCkgfCBodG1sICVdIj5bJSBEYXRhLkNvbnRlbnQgfCBUcmFuc2xhdGUgfCB0cnVuY2F0ZShEYXRhLk1heExlbmd0aCkgfCBodG1sICVdPC9zcGFuPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdTZWNvbmQgZmlsdGVyIHRyYW5zbGF0aW9uLCBpbnZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1RlbXBsYXRlLnR0JywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6VFQ6OlRyYW5zbGF0aW9uRmlsdGVyKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAp2YXIgTWVzc2FnZSA9IFslIERhdGEuQ3VzdG9tZXJSZWdFeEVycm9yTWVzc2FnZVNlcnZlckVycm9yTWVzc2FnZSB8IFRyYW5zbGF0ZSAlXTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnU2Vjb25kIGZpbHRlciB0cmFuc2xhdGlvbiwgdmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVtcGxhdGUudHQnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpUVDo6VHJhbnNsYXRpb25GaWx0ZXIpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCnZhciBNZXNzYWdlID0gWyUgRGF0YS5DdXN0b21lclJlZ0V4RXJyb3JNZXNzYWdlU2VydmVyRXJyb3JNZXNzYWdlIHwgVHJhbnNsYXRlIHwgSlNPTiAlXTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAoKKTsKCiRTZWxmLT5zY3JpcHRzOjp0ZXN0OjpPVFJTQ29kZVBvbGljeVBsdWdpbnM6OlJ1biggVGVzdHMgPT4gXEBUZXN0cyApOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIHV0Zjg7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RSU0NvZGVQb2xpY3lQbHVnaW5zOwoKbXkgJFNtYWxsTmFtZSAgICA9ICdBJzsKbXkgJE1lZGl1bU5hbWUgICA9ICdBJyB4IDEwMDsKbXkgJExvbmdOYW1lICAgICA9ICdBJyB4IDIwMDsKbXkgJExpbWl0TmFtZSAgICA9ICdBJyB4IDI1MDsKbXkgJE92ZXJzaXplTmFtZSA9ICdBJyB4IDI1MTsKbXkgJEh1Z2VOYW1lICAgICA9ICdBJyB4IDMwMDsKCm15ICRTZXR0aW5nVGVtcGxhdGUgPSA8PCdFT0YnOwogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRpc2FibGVzIHRoZSB3ZWIgaW5zdGFsbGVyIChodHRwOi8veW91cmhvc3QuZXhhbXBsZS5jb20vb3Rycy9pbnN0YWxsZXIucGwpLCB0byBwcmV2ZW50IHRoZSBzeXN0ZW0gZnJvbSBiZWluZyBoaWphY2tlZC4gSWYgc2V0IHRvICJObyIsIHRoZSBzeXN0ZW0gY2FuIGJlIHJlaW5zdGFsbGVkIGFuZCB0aGUgY3VycmVudCBiYXNpYyBjb25maWd1cmF0aW9uIHdpbGwgYmUgdXNlZCB0byBwcmUtcG9wdWxhdGUgdGhlIHF1ZXN0aW9ucyB3aXRoaW4gdGhlIGluc3RhbGxlciBzY3JpcHQuIElmIG5vdCBhY3RpdmUsIGl0IGFsc28gZGlzYWJsZXMgdGhlIEdlbmVyaWNBZ2VudCwgUGFja2FnZU1hbmFnZXIgYW5kIFNRTCBCb3guPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5GcmFtZXdvcms8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgS2V5PSIwIiBUcmFuc2xhdGFibGU9IjEiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIEtleT0iMSIgVHJhbnNsYXRhYmxlPSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgpFT0YKCm15ICRTZXR0aW5nVGVtcGxhdGVPbGQgPSA8PCdFT0YnOwogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRpc2FibGVzIHRoZSB3ZWIgaW5zdGFsbGVyIChodHRwOi8veW91cmhvc3QuZXhhbXBsZS5jb20vb3Rycy9pbnN0YWxsZXIucGwpLCB0byBwcmV2ZW50IHRoZSBzeXN0ZW0gZnJvbSBiZWluZyBoaWphY2tlZC4gSWYgc2V0IHRvICJObyIsIHRoZSBzeXN0ZW0gY2FuIGJlIHJlaW5zdGFsbGVkIGFuZCB0aGUgY3VycmVudCBiYXNpYyBjb25maWd1cmF0aW9uIHdpbGwgYmUgdXNlZCB0byBwcmUtcG9wdWxhdGUgdGhlIHF1ZXN0aW9ucyB3aXRoaW4gdGhlIGluc3RhbGxlciBzY3JpcHQuIElmIG5vdCBhY3RpdmUsIGl0IGFsc28gZGlzYWJsZXMgdGhlIEdlbmVyaWNBZ2VudCwgUGFja2FnZU1hbmFnZXIgYW5kIFNRTCBCb3guPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RnJhbWV3b3JrPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiIFRyYW5zbGF0YWJsZT0iMSI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiIFRyYW5zbGF0YWJsZT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CkVPRgoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnU21hbGwgU2V0dGluZyBOYW1lJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWd1cmF0aW9uOjpYU0RWYWxpZGF0b3IpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSIkU21hbGxOYW1lIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiIENvbmZpZ0xldmVsPSIyMDAiPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ01lZGl1bSBTZXR0aW5nIE5hbWUnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkNvbmZpZ3VyYXRpb246OlhTRFZhbGlkYXRvcildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPG90cnNfY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IiRNZWRpdW1OYW1lIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiIENvbmZpZ0xldmVsPSIyMDAiPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0xvbmcgU2V0dGluZyBOYW1lJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWd1cmF0aW9uOjpYU0RWYWxpZGF0b3IpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSIkTG9uZ05hbWUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSIgQ29uZmlnTGV2ZWw9IjIwMCI+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdHJzX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnTGltaXQgU2V0dGluZyBOYW1lJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWd1cmF0aW9uOjpYU0RWYWxpZGF0b3IpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSIkTGltaXROYW1lIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiIENvbmZpZ0xldmVsPSIyMDAiPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ092ZXJTaXplIFNldHRpbmcgTmFtZScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlhNTDo6Q29uZmlndXJhdGlvbjo6WFNEVmFsaWRhdG9yKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3Ryc19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iJE92ZXJzaXplTmFtZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIiBDb25maWdMZXZlbD0iMjAwIj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290cnNfY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdIdWdlIFNldHRpbmcgTmFtZScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlhNTDo6Q29uZmlndXJhdGlvbjo6WFNEVmFsaWRhdG9yKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3Ryc19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iJEh1Z2VOYW1lIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiIENvbmZpZ0xldmVsPSIyMDAiPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1NtYWxsIFNldHRpbmcgTmFtZSAoRnJhbWV3b3JrIDUuMCknLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlhNTDo6Q29uZmlndXJhdGlvbjo6WFNEVmFsaWRhdG9yKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc1LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3Ryc19jb25maWcgdmVyc2lvbj0iMS4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iJFNtYWxsTmFtZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIiBDb25maWdMZXZlbD0iMjAwIj4KJFNldHRpbmdUZW1wbGF0ZU9sZAogICAgPC9Db25maWdJdGVtPgo8L290cnNfY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdNZWRpdW0gU2V0dGluZyBOYW1lIChGcmFtZXdvcmsgNS4wKScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWd1cmF0aW9uOjpYU0RWYWxpZGF0b3IpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzUuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIxLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSIkTWVkaXVtTmFtZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIiBDb25maWdMZXZlbD0iMjAwIj4KJFNldHRpbmdUZW1wbGF0ZU9sZAogICAgPC9Db25maWdJdGVtPgo8L290cnNfY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdMb25nIFNldHRpbmcgTmFtZSAoRnJhbWV3b3JrIDUuMCknLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlhNTDo6Q29uZmlndXJhdGlvbjo6WFNEVmFsaWRhdG9yKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc1LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3Ryc19jb25maWcgdmVyc2lvbj0iMS4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iJExvbmdOYW1lIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiIENvbmZpZ0xldmVsPSIyMDAiPgokU2V0dGluZ1RlbXBsYXRlT2xkCiAgICA8L0NvbmZpZ0l0ZW0+Cjwvb3Ryc19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0xpbWl0IFNldHRpbmcgTmFtZSAoRnJhbWV3b3JrIDUuMCknLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlhNTDo6Q29uZmlndXJhdGlvbjo6WFNEVmFsaWRhdG9yKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc1LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3Ryc19jb25maWcgdmVyc2lvbj0iMS4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iJExpbWl0TmFtZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIiBDb25maWdMZXZlbD0iMjAwIj4KJFNldHRpbmdUZW1wbGF0ZU9sZAogICAgPC9Db25maWdJdGVtPgo8L290cnNfY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdPdmVyU2l6ZSBTZXR0aW5nIE5hbWUgKEZyYW1ld29yayA1LjApJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkNvbmZpZ3VyYXRpb246OlhTRFZhbGlkYXRvcildLAogICAgICAgIEZyYW1ld29yayA9PiAnNS4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPG90cnNfY29uZmlnIHZlcnNpb249IjEuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxDb25maWdJdGVtIE5hbWU9IiRPdmVyc2l6ZU5hbWUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSIgQ29uZmlnTGV2ZWw9IjIwMCI+CiRTZXR0aW5nVGVtcGxhdGVPbGQKICAgIDwvQ29uZmlnSXRlbT4KPC9vdHJzX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnSHVnZSBTZXR0aW5nIE5hbWUgKEZyYW1ld29yayA1LjApJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkNvbmZpZ3VyYXRpb246OlhTRFZhbGlkYXRvcildLAogICAgICAgIEZyYW1ld29yayA9PiAnNS4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPG90cnNfY29uZmlnIHZlcnNpb249IjEuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxDb25maWdJdGVtIE5hbWU9IiRIdWdlTmFtZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIiBDb25maWdMZXZlbD0iMjAwIj4KJFNldHRpbmdUZW1wbGF0ZU9sZAogICAgPC9Db25maWdJdGVtPgo8L290cnNfY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCik7CgokU2VsZi0+c2NyaXB0czo6dGVzdDo6T1RSU0NvZGVQb2xpY3lQbHVnaW5zOjpSdW4oIFRlc3RzID0+IFxAVGVzdHMgKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIHV0Zjg7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RSU0NvZGVQb2xpY3lQbHVnaW5zOwoKbXkgJFNldHRpbmdUZW1wbGF0ZSA9IDw8J0VPRic7CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGVzdCBjb25maWcgc2V0dGluZyBkZWZpbml0aW9uIGZvciBwdXJwb3NlcyBvZiB0aGUgdW5pdCB0ZXN0aW5nLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iS2V5Ij5WYWx1ZTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CkVPRgoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnVG9wIGxldmVsIGVudHJ5IC0gVmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJTdGF0czo6U3RhdHNIb29rIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OlN0YXRzPC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1RvcCBsZXZlbCBlbnRyeSAtIEludmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJTdGF0czo6U3RhdHNIb29rIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPlN0YXRzOjpDb3JlPC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0V2ZW50IGhhbmRsZXIgZW50cnkgLSBWYWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlhNTDo6Q29uZmlndXJhdGlvbjo6TmF2aWdhdGlvbildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPG90cnNfY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IlBhY2thZ2U6OkV2ZW50TW9kdWxlUG9zdCMjIzkwMDAtU3VwcG9ydERhdGFTZW5kIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpQYWNrYWdlPC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0V2ZW50IGhhbmRsZXIgZW50cnkgLSBJbnZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3Ryc19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iUGFja2FnZTo6RXZlbnRNb2R1bGVQb3N0IyMjOTAwMC1TdXBwb3J0RGF0YVNlbmQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPE5hdmlnYXRpb24+UGFja2FnZTo6Q29yZTo6RXZlbnRzPC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1ZhbGlkIGZyb250ZW5kIHN1Ymdyb3VwJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3Ryc19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXJGcm9udGVuZDo6Tm90aWZ5TW9kdWxlIyMjOS1DdXN0b21lck5vdGlmaWNhdGlvbk1vZHVsZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OkZyb250ZW5kTm90aWZpY2F0aW9uPC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0Zyb250ZW5kIHN1Ymdyb3VwIC0gVmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lckZyb250ZW5kOjpOb3RpZnlNb2R1bGUjIyM5LUN1c3RvbWVyTm90aWZpY2F0aW9uTW9kdWxlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6RnJvbnRlbmROb3RpZmljYXRpb248L05hdmlnYXRpb24+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdHJzX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRnJvbnRlbmQgc3ViZ3JvdXAgLSBJbnZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc3LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3Ryc19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXJGcm9udGVuZDo6Tm90aWZ5TW9kdWxlIyMjOS1DdXN0b21lck5vdGlmaWNhdGlvbk1vZHVsZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OkZyb250ZW5kTm90aWZpY2F0aW9uPC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1dlYkFwcCBzdWJncm91cHMgLSBWYWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlhNTDo6Q29uZmlndXJhdGlvbjo6TmF2aWdhdGlvbildLAogICAgICAgIEZyYW1ld29yayA9PiAnNy4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPG90cnNfY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IldlYkFwcDo6QVBJQ2xpZW50IyMjUHJpbWFyeVByb3RvY29sIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPldlYkFwcDo6QVBJQ2xpZW50PC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1dlYkFwcCBzdWJncm91cHMgLSBJbnZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc3LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3Ryc19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iV2ViQXBwOjpBUElDbGllbnQjIyNQcmltYXJ5UHJvdG9jb2wiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPE5hdmlnYXRpb24+V2ViQXBwOjpDbGllbnQ8L05hdmlnYXRpb24+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdHJzX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnTWFpbiBsb2FkZXIgZW50cnkgLSBWYWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlhNTDo6Q29uZmlndXJhdGlvbjo6TmF2aWdhdGlvbildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPG90cnNfY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6QWdlbnQ6OkNvbW1vbkNTUyMjIzAwMC1GcmFtZXdvcmsiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkJhc2U6OkxvYWRlcjwvTmF2aWdhdGlvbj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290cnNfY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdNYWluIGxvYWRlciBlbnRyeSAtIEludmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6OkFnZW50OjpDb21tb25DU1MjIyMwMDAtRnJhbWV3b3JrIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TG9hZGVyPC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0xvYWRlciBjb25maWcgZm9yIEFkbWluIGludGVyZmFjZSAtIFZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3Ryc19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFkbWluU3lzdGVtQ29uZmlndXJhdGlvbiMjIzAwMS1GcmFtZXdvcmsiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFkbWluOjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290cnNfY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdMb2FkZXIgY29uZmlnIGZvciBBZG1pbiBpbnRlcmZhY2UgLSBJbnZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3Ryc19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFkbWluU3lzdGVtQ29uZmlndXJhdGlvbiMjIzAwMS1GcmFtZXdvcmsiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkJhc2U6OkxvYWRlcjwvTmF2aWdhdGlvbj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290cnNfY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdMb2FkZXIgY29uZmlnIGZvciBBZ2VudCBpbnRlcmZhY2UgLSBWYWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlhNTDo6Q29uZmlndXJhdGlvbjo6TmF2aWdhdGlvbildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPG90cnNfY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudERhc2hib2FyZCMjIzAwMS1GcmFtZXdvcmsiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290cnNfY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdMb2FkZXIgY29uZmlnIGZvciBBZ2VudCBpbnRlcmZhY2UgLSBJbnZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3Ryc19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFnZW50RGFzaGJvYXJkIyMjMDAxLUZyYW1ld29yayIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QmFzZTo6TG9hZGVyPC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0xvYWRlciBjb25maWcgZm9yIEFnZW50IGludGVyZmFjZSBncm91cGVkIGluIEFkbWluIGVudHJ5IC0gVmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzguMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6QWdlbnREYXNoYm9hcmQjIyMwMDEtRnJhbWV3b3JrIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdHJzX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnTG9hZGVyIGNvbmZpZyBmb3IgQ3VzdG9tZXIgaW50ZXJmYWNlIC0gVmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6Q3VzdG9tZXJUaWNrZXRNZXNzYWdlIyMjMDAyLVRpY2tldCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0xvYWRlciBjb25maWcgZm9yIEN1c3RvbWVyIGludGVyZmFjZSAtIEludmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6Q3VzdG9tZXJUaWNrZXRNZXNzYWdlIyMjMDAyLVRpY2tldCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QmFzZTo6TG9hZGVyPC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0xvYWRlciBjb25maWcgZm9yIFB1YmxpYyBpbnRlcmZhY2UgLSBWYWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlhNTDo6Q29uZmlndXJhdGlvbjo6TmF2aWdhdGlvbildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPG90cnNfY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpQdWJsaWNGQVFFeHBsb3JlciMjIzAwMi1GQVEiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0xvYWRlciBjb25maWcgZm9yIEN1c3RvbWVyIGludGVyZmFjZSAtIEludmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6UHVibGljRkFRRXhwbG9yZXIjIyMwMDItRkFRIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpCYXNlOjpMb2FkZXI8L05hdmlnYXRpb24+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdHJzX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRnJvbnRlbmQgbmF2aWdhdGlvbiBjb25maWcgZm9yIEFkbWluIGludGVyZmFjZSAtIFZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3Ryc19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNBZG1pbiMjIzAwMS1GcmFtZXdvcmsiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFkbWluOjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0Zyb250ZW5kIG5hdmlnYXRpb24gY29uZmlnIGZvciBBZG1pbiBpbnRlcmZhY2UgLSBJbnZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3Ryc19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNBZG1pbiMjIzAwMS1GcmFtZXdvcmsiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdHJzX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRnJvbnRlbmQgbmF2aWdhdGlvbiBjb25maWcgZm9yIEFnZW50IGludGVyZmFjZSAtIFZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3Ryc19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNBZ2VudCMjIzAwMS1GcmFtZXdvcmsiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0Zyb250ZW5kIG5hdmlnYXRpb24gY29uZmlnIGZvciBBZ2VudCBpbnRlcmZhY2UgLSBJbnZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3Ryc19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNBZ2VudCMjIzAwMS1GcmFtZXdvcmsiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdHJzX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRnJvbnRlbmQgbmF2aWdhdGlvbiBjb25maWcgZm9yIEFnZW50IGludGVyZmFjZSBncm91cGVkIGluIEFkbWluIC0gVmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzguMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TmF2aWdhdGlvbiMjI0FnZW50IyMjMDAxLUZyYW1ld29yayIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdHJzX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRnJvbnRlbmQgbmF2aWdhdGlvbiBjb25maWcgZm9yIEN1c3RvbWVyIGludGVyZmFjZSAtIFZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3Ryc19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXJGcm9udGVuZDo6TmF2aWdhdGlvbiMjI0N1c3RvbWVyIyMjMDAxLUZyYW1ld29yayIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdHJzX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRnJvbnRlbmQgbmF2aWdhdGlvbiBjb25maWcgZm9yIEN1c3RvbWVyIGludGVyZmFjZSAtIEludmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lckZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQ3VzdG9tZXIjIyMwMDEtRnJhbWV3b3JrIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0Zyb250ZW5kIG5hdmlnYXRpb24gY29uZmlnIGZvciBQdWJsaWMgaW50ZXJmYWNlIC0gVmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWNGcm9udGVuZDo6TmF2aWdhdGlvbiMjI1B1YmxpYyMjIzAwMS1GcmFtZXdvcmsiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTwvTmF2aWdhdGlvbj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290cnNfY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdGcm9udGVuZCBuYXZpZ2F0aW9uIGNvbmZpZyBmb3IgUHVibGljIGludGVyZmFjZSAtIEludmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWNGcm9udGVuZDo6TmF2aWdhdGlvbiMjI1B1YmxpYyMjIzAwMS1GcmFtZXdvcmsiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdHJzX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnTmF2aWdhdGlvbiBtb2R1bGUgY29uZmlnIC0gVmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TmF2aWdhdGlvbk1vZHVsZSMjI0FkbWluIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpBZG1pbk92ZXJ2aWV3PC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ05hdmlnYXRpb24gbW9kdWxlIGNvbmZpZyAtIEludmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TmF2aWdhdGlvbk1vZHVsZSMjI0FkbWluIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZG1pbjwvTmF2aWdhdGlvbj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290cnNfY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdTZWFyY2ggcm91dGVyIGNvbmZpZyBmb3IgQWRtaW4gaW50ZXJmYWNlIC0gVmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6U2VhcmNoIyMjQWRtaW5TeXN0ZW1Db25maWd1cmF0aW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTo6U2VhcmNoPC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1NlYXJjaCByb3V0ZXIgY29uZmlnIGZvciBBZG1pbiBpbnRlcmZhY2UgLSBJbnZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3Ryc19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6OlNlYXJjaCMjI0FkbWluU3lzdGVtQ29uZmlndXJhdGlvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW48L05hdmlnYXRpb24+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdHJzX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnU2VhcmNoIHJvdXRlciBjb25maWcgZm9yIEFnZW50IGludGVyZmFjZSAtIFZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3Ryc19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6OlNlYXJjaCMjI0FnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlciIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU6OlNlYXJjaDwvTmF2aWdhdGlvbj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290cnNfY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdTZWFyY2ggcm91dGVyIGNvbmZpZyBmb3IgQWdlbnQgaW50ZXJmYWNlIC0gSW52YWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlhNTDo6Q29uZmlndXJhdGlvbjo6TmF2aWdhdGlvbildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPG90cnNfY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpTZWFyY2gjIyNBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXIiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50PC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ091dHB1dCBmaWx0ZXJzIC0gVmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6T3V0cHV0OjpGaWx0ZXJUZXh0IyMjQUFBVVJMIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpCYXNlOjpPdXRwdXRGaWx0ZXI8L05hdmlnYXRpb24+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdHJzX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnT3V0cHV0IGZpbHRlcnMgLSBJbnZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3Ryc19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok91dHB1dDo6RmlsdGVyVGV4dCMjI0FBQVVSTCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QmFzZTwvTmF2aWdhdGlvbj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290cnNfY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdGcm9udGVuZCB2aWV3cyAtIFZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3Ryc19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6Wm9vbVJpY2hUZXh0Rm9yY2UiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpUaWNrZXRab29tPC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0Zyb250ZW5kIHZpZXdzIC0gSW52YWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlhNTDo6Q29uZmlndXJhdGlvbjo6TmF2aWdhdGlvbildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPG90cnNfY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6Olpvb21SaWNoVGV4dEZvcmNlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0Wm9vbTo6Vmlldzo6UmljaFRleHQ8L05hdmlnYXRpb24+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdHJzX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRnJvbnRlbmQgdmlld3MgKE9UUlMgNyspIC0gSW52YWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlhNTDo6Q29uZmlndXJhdGlvbjo6TmF2aWdhdGlvbildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPG90cnNfY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkN1c3RvbWVyVGlja2V0TWVzc2FnZSMjI0R5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlRpY2tldDo6Vmlldzo6TWVzc2FnZTwvTmF2aWdhdGlvbj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290cnNfY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCik7CgokU2VsZi0+c2NyaXB0czo6dGVzdDo6T1RSU0NvZGVQb2xpY3lQbHVnaW5zOjpSdW4oIFRlc3RzID0+IFxAVGVzdHMgKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIHV0Zjg7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RSU0NvZGVQb2xpY3lQbHVnaW5zOwoKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnWUFNTCwgbm8gaW5kZW50YXRpb24nLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkNvbmZpZ3VyYXRpb246OllBTUxJbmRlbnRhdGlvbildLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKICAgIDxTZXR0aW5nIE5hbWU9IllBTUxUZXN0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJZQU1MIj48IVtDREFUQVstLS0KS2V5OiBWYWx1ZQpdXT48L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnWUFNTCwgZW1wdHknLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkNvbmZpZ3VyYXRpb246OllBTUxJbmRlbnRhdGlvbildLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKICAgIDxTZXR0aW5nIE5hbWU9IllBTUxUZXN0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJZQU1MIj48IVtDREFUQVstLS0KXV0+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1lBTUwsIHdpdGggaW5kZW50YXRpb24nLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkNvbmZpZ3VyYXRpb246OllBTUxJbmRlbnRhdGlvbildLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKICAgIDxTZXR0aW5nIE5hbWU9IllBTUxUZXN0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJZQU1MIj48IVtDREFUQVstLS0KICAgICAgICAgICAgS2V5OiBWYWx1ZQogICAgICAgICAgICBTdWJIYXNoOgogICAgICAgICAgICAgIFN1YktleTogU3ViVmFsdWUKICAgICAgICAgICAgXV0+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CkVPRgogICAgICAgIFJlc3VsdCA9PiA8PCJFT0YiLAogICAgPFNldHRpbmcgTmFtZT0iWUFNTFRlc3QiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IllBTUwiPjwhW0NEQVRBWy0tLQpLZXk6IFZhbHVlClN1Ykhhc2g6CiAgU3ViS2V5OiBTdWJWYWx1ZQpdXT48L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAopOwoKJFNlbGYtPnNjcmlwdHM6OnRlc3Q6Ok9UUlNDb2RlUG9saWN5UGx1Z2luczo6UnVuKCBUZXN0cyA9PiBcQFRlc3RzICk7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIHV0Zjg7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RSU0NvZGVQb2xpY3lQbHVnaW5zOwoKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnWUFNTCwgbm8gZXJyb3InLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkNvbmZpZ3VyYXRpb246OllBTUxWYWxpZGF0b3IpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzguMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCiAgICA8U2V0dGluZyBOYW1lPSJZQU1MVGVzdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iWUFNTCI+PCFbQ0RBVEFbLS0tCktleTogVmFsdWUKICAgICAgICAgICAgXV0+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1lBTUwsIHN5bnRheCBlcnJvcicsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlhNTDo6Q29uZmlndXJhdGlvbjo6WUFNTFZhbGlkYXRvcildLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKICAgIDxTZXR0aW5nIE5hbWU9IllBTUxUZXN0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJZQU1MIj48IVtDREFUQVstLS0KOiB3cm9uZyBzeW50YXgKICAgICAgICAgICAgXV0+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKKTsKCiRTZWxmLT5zY3JpcHRzOjp0ZXN0OjpPVFJTQ29kZVBvbGljeVBsdWdpbnM6OlJ1biggVGVzdHMgPT4gXEBUZXN0cyApOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIHV0Zjg7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RSU0NvZGVQb2xpY3lQbHVnaW5zOwoKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnVGhlcmUgaXMgb3ZlcnJpZGRlbiB1bml0IHRlc3QnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkNvbmZpZ3VyYXRpb246OlVuaXRUZXN0QmxhY2tsaXN0KV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAogICAgPFNldHRpbmcgTmFtZT0iVW5pdFRlc3Q6OkJsYWNrbGlzdCMjIzEwMC1PVFJTQ29kZVBvbGljeSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5CbGFja2xpc3Qgb3ZlcnJpZGRlbiBmcmFtZXdvcmsgdW5pdCB0ZXN0cyB3aGVuIHRoaXMgcGFja2FnZSBpcyBpbnN0YWxsZWQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpVbml0VGVzdDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj5Tb21lVW5pdFRlc3RCbGFja2xpc3Qke1JhbmRvbUlEfS50PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPlNvbWVEaXJlY3RvcnkvU29tZVVuaXRUZXN0QmxhY2tsaXN0JHtSYW5kb21JRH0udDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgpFT0YKICAgICAgICBGaWxlTGlzdCA9PiBbCiAgICAgICAgICAgICJzY3JpcHRzL3Rlc3QvT1RSU0NvZGVQb2xpY3lTb21lVW5pdFRlc3RCbGFja2xpc3Qke1JhbmRvbUlEfS50IiwKICAgICAgICAgICAgInNjcmlwdHMvdGVzdC9Tb21lRGlyZWN0b3J5L09UUlNDb2RlUG9saWN5U29tZVVuaXRUZXN0QmxhY2tsaXN0JHtSYW5kb21JRH0udCIsCiAgICAgICAgXSwKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdUaGVyZSBpcyBub3Qgb3ZlcnJpZGRlbiB1bml0IHRlc3QnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkNvbmZpZ3VyYXRpb246OlVuaXRUZXN0QmxhY2tsaXN0KV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAogICAgPFNldHRpbmcgTmFtZT0iVW5pdFRlc3Q6OkJsYWNrbGlzdCMjIzEwMC1PVFJTQ29kZVBvbGljeSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5CbGFja2xpc3Qgb3ZlcnJpZGRlbiBmcmFtZXdvcmsgdW5pdCB0ZXN0cyB3aGVuIHRoaXMgcGFja2FnZSBpcyBpbnN0YWxsZWQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpVbml0VGVzdDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj5Tb21lVW5pdFRlc3RCbGFja2xpc3ROb25FeGlzdGVudC50PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPlNvbWVEaXJlY3RvcnkvU29tZVVuaXRUZXN0QmxhY2tsaXN0Tm9uRXhpc3RlbnQudDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgpFT0YKICAgICAgICBGaWxlTGlzdCAgPT4gW10sCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAopOwoKJFNlbGYtPnNjcmlwdHM6OnRlc3Q6Ok9UUlNDb2RlUG9saWN5UGx1Z2luczo6UnVuKCBUZXN0cyA9PiBcQFRlc3RzICk7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIHV0Zjg7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RSU0NvZGVQb2xpY3lQbHVnaW5zOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnQnVnIzEzMTk5LCBkeW5hbWljX2ZpZWxkX29ial9pZF9uYW1lIGlzc3VlJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ290cnMtc2NoZW1hLnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlhNTDo6RGF0YWJhc2U6OktleUxlbmd0aCldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPCEtLSBvYmplY3QgbmFtZXMgZm9yIGR5bmFtaWMgZmllbGQgdmFsdWVzIC0tPgo8VGFibGUgTmFtZT0iZHluYW1pY19maWVsZF9vYmpfaWRfbmFtZSI+CiAgICA8Q29sdW1uIE5hbWU9Im9iamVjdF9pZCIgUmVxdWlyZWQ9InRydWUiIFByaW1hcnlLZXk9InRydWUiIEF1dG9JbmNyZW1lbnQ9InRydWUiIFR5cGU9IklOVEVHRVIiLz4KICAgIDxDb2x1bW4gTmFtZT0ib2JqZWN0X25hbWUiIFJlcXVpcmVkPSJ0cnVlIiBTaXplPSIyMDAiIFR5cGU9IlZBUkNIQVIiLz4KICAgIDxDb2x1bW4gTmFtZT0ib2JqZWN0X3R5cGUiIFJlcXVpcmVkPSJ0cnVlIiBTaXplPSIyMDAiIFR5cGU9IlZBUkNIQVIiLz4KICAgIDxVbmlxdWUgTmFtZT0iZHluYW1pY19maWVsZF9vYmplY3RfbmFtZSI+CiAgICAgICAgPFVuaXF1ZUNvbHVtbiBOYW1lPSJvYmplY3RfbmFtZSIvPgogICAgICAgIDxVbmlxdWVDb2x1bW4gTmFtZT0ib2JqZWN0X3R5cGUiLz4KICAgIDwvVW5pcXVlPgo8L1RhYmxlPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdCdWcjMTMxOTksIGR5bmFtaWNfZmllbGRfb2JqX2lkX25hbWUgZml4JywKICAgICAgICBGaWxlbmFtZSAgPT4gJ290cnMtc2NoZW1hLnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlhNTDo6RGF0YWJhc2U6OktleUxlbmd0aCldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPCEtLSBvYmplY3QgbmFtZXMgZm9yIGR5bmFtaWMgZmllbGQgdmFsdWVzIC0tPgo8VGFibGUgTmFtZT0iZHluYW1pY19maWVsZF9vYmpfaWRfbmFtZSI+CiAgICA8Q29sdW1uIE5hbWU9Im9iamVjdF9pZCIgUmVxdWlyZWQ9InRydWUiIFByaW1hcnlLZXk9InRydWUiIEF1dG9JbmNyZW1lbnQ9InRydWUiIFR5cGU9IklOVEVHRVIiLz4KICAgIDxDb2x1bW4gTmFtZT0ib2JqZWN0X25hbWUiIFJlcXVpcmVkPSJ0cnVlIiBTaXplPSIyMDAiIFR5cGU9IlZBUkNIQVIiLz4KICAgIDxDb2x1bW4gTmFtZT0ib2JqZWN0X3R5cGUiIFJlcXVpcmVkPSJ0cnVlIiBTaXplPSIxMDAiIFR5cGU9IlZBUkNIQVIiLz4KICAgIDxVbmlxdWUgTmFtZT0iZHluYW1pY19maWVsZF9vYmplY3RfbmFtZSI+CiAgICAgICAgPFVuaXF1ZUNvbHVtbiBOYW1lPSJvYmplY3RfbmFtZSIvPgogICAgICAgIDxVbmlxdWVDb2x1bW4gTmFtZT0ib2JqZWN0X3R5cGUiLz4KICAgIDwvVW5pcXVlPgo8L1RhYmxlPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdCdWcjMTMxOTksIGZvcm1fZHJhZnQgaXNzdWUnLAogICAgICAgIEZpbGVuYW1lICA9PiAnb3Rycy1zY2hlbWEueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpEYXRhYmFzZTo6S2V5TGVuZ3RoKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8IS0tIGZvcm1fZHJhZnQgLS0+CiA8VGFibGVDcmVhdGUgTmFtZT0iZm9ybV9kcmFmdCI+CiAgICAgPENvbHVtbiBOYW1lPSJpZCIgUmVxdWlyZWQ9InRydWUiIFByaW1hcnlLZXk9InRydWUiIEF1dG9JbmNyZW1lbnQ9InRydWUiIFR5cGU9IklOVEVHRVIiIC8+CiAgICAgPENvbHVtbiBOYW1lPSJvYmplY3RfdHlwZSIgUmVxdWlyZWQ9InRydWUiIFNpemU9IjIwMCIgVHlwZT0iVkFSQ0hBUiIgLz4KICAgICA8Q29sdW1uIE5hbWU9Im9iamVjdF9pZCIgUmVxdWlyZWQ9InRydWUiIFR5cGU9IklOVEVHRVIiIC8+CiAgICAgPENvbHVtbiBOYW1lPSJhY3Rpb24iIFJlcXVpcmVkPSJ0cnVlIiBTaXplPSIyMDAiIFR5cGU9IlZBUkNIQVIiIC8+CiAgICAgPENvbHVtbiBOYW1lPSJ0aXRsZSIgUmVxdWlyZWQ9ImZhbHNlIiBTaXplPSIyNTUiIFR5cGU9IlZBUkNIQVIiIC8+CiAgICAgPENvbHVtbiBOYW1lPSJjb250ZW50IiBSZXF1aXJlZD0idHJ1ZSIgVHlwZT0iTE9OR0JMT0IiIC8+CiAgICAgPENvbHVtbiBOYW1lPSJjcmVhdGVfdGltZSIgUmVxdWlyZWQ9InRydWUiIFR5cGU9IkRBVEUiIC8+CiAgICAgPENvbHVtbiBOYW1lPSJjcmVhdGVfYnkiIFJlcXVpcmVkPSJ0cnVlIiBUeXBlPSJJTlRFR0VSIiAvPgogICAgIDxDb2x1bW4gTmFtZT0iY2hhbmdlX3RpbWUiIFJlcXVpcmVkPSJ0cnVlIiBUeXBlPSJEQVRFIiAvPgogICAgIDxDb2x1bW4gTmFtZT0iY2hhbmdlX2J5IiBSZXF1aXJlZD0idHJ1ZSIgVHlwZT0iSU5URUdFUiIgLz4KICAgICA8SW5kZXggTmFtZT0iZm9ybV9kcmFmdF9vYmplY3RfdHlwZV9vYmplY3RfaWRfYWN0aW9uIj4KICAgICAgICAgPEluZGV4Q29sdW1uIE5hbWU9Im9iamVjdF90eXBlIiAvPgogICAgICAgICA8SW5kZXhDb2x1bW4gTmFtZT0ib2JqZWN0X2lkIiAvPgogICAgICAgICA8SW5kZXhDb2x1bW4gTmFtZT0iYWN0aW9uIiAvPgogICAgIDwvSW5kZXg+CiAgICAgPEZvcmVpZ25LZXkgRm9yZWlnblRhYmxlPSJ1c2VycyI+CiAgICAgICAgIDxSZWZlcmVuY2UgTG9jYWw9ImNyZWF0ZV9ieSIgRm9yZWlnbj0iaWQiIC8+CiAgICAgICAgIDxSZWZlcmVuY2UgTG9jYWw9ImNoYW5nZV9ieSIgRm9yZWlnbj0iaWQiIC8+CiAgICAgPC9Gb3JlaWduS2V5Pgo8L1RhYmxlQ3JlYXRlPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdCdWcjMTMxOTksIGZvcm1fZHJhZnQgZml4JywKICAgICAgICBGaWxlbmFtZSAgPT4gJ290cnMtc2NoZW1hLnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlhNTDo6RGF0YWJhc2U6OktleUxlbmd0aCldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPCEtLSBmb3JtX2RyYWZ0IC0tPgogPFRhYmxlQ3JlYXRlIE5hbWU9ImZvcm1fZHJhZnQiPgogICAgIDxDb2x1bW4gTmFtZT0iaWQiIFJlcXVpcmVkPSJ0cnVlIiBQcmltYXJ5S2V5PSJ0cnVlIiBBdXRvSW5jcmVtZW50PSJ0cnVlIiBUeXBlPSJJTlRFR0VSIiAvPgogICAgIDxDb2x1bW4gTmFtZT0ib2JqZWN0X3R5cGUiIFJlcXVpcmVkPSJ0cnVlIiBTaXplPSIxMDAiIFR5cGU9IlZBUkNIQVIiIC8+CiAgICAgPENvbHVtbiBOYW1lPSJvYmplY3RfaWQiIFJlcXVpcmVkPSJ0cnVlIiBUeXBlPSJJTlRFR0VSIiAvPgogICAgIDxDb2x1bW4gTmFtZT0iYWN0aW9uIiBSZXF1aXJlZD0idHJ1ZSIgU2l6ZT0iMjAwIiBUeXBlPSJWQVJDSEFSIiAvPgogICAgIDxDb2x1bW4gTmFtZT0idGl0bGUiIFJlcXVpcmVkPSJmYWxzZSIgU2l6ZT0iMjU1IiBUeXBlPSJWQVJDSEFSIiAvPgogICAgIDxDb2x1bW4gTmFtZT0iY29udGVudCIgUmVxdWlyZWQ9InRydWUiIFR5cGU9IkxPTkdCTE9CIiAvPgogICAgIDxDb2x1bW4gTmFtZT0iY3JlYXRlX3RpbWUiIFJlcXVpcmVkPSJ0cnVlIiBUeXBlPSJEQVRFIiAvPgogICAgIDxDb2x1bW4gTmFtZT0iY3JlYXRlX2J5IiBSZXF1aXJlZD0idHJ1ZSIgVHlwZT0iSU5URUdFUiIgLz4KICAgICA8Q29sdW1uIE5hbWU9ImNoYW5nZV90aW1lIiBSZXF1aXJlZD0idHJ1ZSIgVHlwZT0iREFURSIgLz4KICAgICA8Q29sdW1uIE5hbWU9ImNoYW5nZV9ieSIgUmVxdWlyZWQ9InRydWUiIFR5cGU9IklOVEVHRVIiIC8+CiAgICAgPEluZGV4IE5hbWU9ImZvcm1fZHJhZnRfb2JqZWN0X3R5cGVfb2JqZWN0X2lkX2FjdGlvbiI+CiAgICAgICAgIDxJbmRleENvbHVtbiBOYW1lPSJvYmplY3RfdHlwZSIgLz4KICAgICAgICAgPEluZGV4Q29sdW1uIE5hbWU9Im9iamVjdF9pZCIgLz4KICAgICAgICAgPEluZGV4Q29sdW1uIE5hbWU9ImFjdGlvbiIgLz4KICAgICA8L0luZGV4PgogICAgIDxGb3JlaWduS2V5IEZvcmVpZ25UYWJsZT0idXNlcnMiPgogICAgICAgICA8UmVmZXJlbmNlIExvY2FsPSJjcmVhdGVfYnkiIEZvcmVpZ249ImlkIiAvPgogICAgICAgICA8UmVmZXJlbmNlIExvY2FsPSJjaGFuZ2VfYnkiIEZvcmVpZ249ImlkIiAvPgogICAgIDwvRm9yZWlnbktleT4KPC9UYWJsZUNyZWF0ZT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnT3JkZXIgb2Ygc2l6ZSB0YWdzLCBpbnZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ290cnMtc2NoZW1hLnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlhNTDo6RGF0YWJhc2U6OktleUxlbmd0aCldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPCEtLSBvYmplY3QgbmFtZXMgZm9yIGR5bmFtaWMgZmllbGQgdmFsdWVzIC0tPgo8VGFibGUgTmFtZT0idGFibGVfbmFtZSI+CiAgICA8Q29sdW1uIE5hbWU9ImlkIiBSZXF1aXJlZD0idHJ1ZSIgUHJpbWFyeUtleT0idHJ1ZSIgQXV0b0luY3JlbWVudD0idHJ1ZSIgVHlwZT0iSU5URUdFUiIvPgogICAgPENvbHVtbiBOYW1lPSJjb2x1bW5fb25lIiBSZXF1aXJlZD0idHJ1ZSIgVHlwZT0iVkFSQ0hBUiIgU2l6ZT0iMTAwIi8+CiAgICA8Q29sdW1uIE5hbWU9ImNvbHVtbl90d28iIFJlcXVpcmVkPSJ0cnVlIiBTaXplPSIyMDAiIFR5cGU9IlZBUkNIQVIiLz4KICAgIDxDb2x1bW4gTmFtZT0iY29sdW1uX3RocmVlIiBSZXF1aXJlZD0idHJ1ZSIgVHlwZT0iVkFSQ0hBUiIgU2l6ZT0iMTAwIi8+CiAgICA8VW5pcXVlIE5hbWU9ImNvbHVtbl9vbmVfdHdvX3RocmVlIj4KICAgICAgICA8VW5pcXVlQ29sdW1uIE5hbWU9ImNvbHVtbl9vbmUiLz4KICAgICAgICA8VW5pcXVlQ29sdW1uIE5hbWU9ImNvbHVtbl90d28iLz4KICAgICAgICA8VW5pcXVlQ29sdW1uIE5hbWU9ImNvbHVtbl90aHJlZSIvPgogICAgPC9VbmlxdWU+CjwvVGFibGU+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1NpemUgdGFncyBpbiBrZXlzLCB2YWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdvdHJzLXNjaGVtYS54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkRhdGFiYXNlOjpLZXlMZW5ndGgpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjwhLS0gb2JqZWN0IG5hbWVzIGZvciBkeW5hbWljIGZpZWxkIHZhbHVlcyAtLT4KPFRhYmxlIE5hbWU9InRhYmxlX25hbWUiPgogICAgPENvbHVtbiBOYW1lPSJpZCIgUmVxdWlyZWQ9InRydWUiIFByaW1hcnlLZXk9InRydWUiIEF1dG9JbmNyZW1lbnQ9InRydWUiIFR5cGU9IklOVEVHRVIiLz4KICAgIDxDb2x1bW4gVHlwZT0iVkFSQ0hBUiIgTmFtZT0iY29sdW1uX29uZSIgUmVxdWlyZWQ9InRydWUiIFNpemU9IjEwMCIvPgogICAgPENvbHVtbiBSZXF1aXJlZD0idHJ1ZSIgU2l6ZT0iMjAwIiBOYW1lPSJjb2x1bW5fdHdvIiBUeXBlPSJWQVJDSEFSIi8+CiAgICA8Q29sdW1uIE5hbWU9ImNvbHVtbl90aHJlZSIgVHlwZT0iVkFSQ0hBUiIgUmVxdWlyZWQ9InRydWUiIFNpemU9IjEwMCIvPgogICAgPEluZGV4IE5hbWU9ImNvbHVtbl9vbmVfdHdvX3RocmVlIj4KICAgICAgICA8SW5kZXhDb2x1bW4gTmFtZT0iY29sdW1uX29uZSIvPgogICAgICAgIDxJbmRleENvbHVtbiBOYW1lPSJjb2x1bW5fdHdvIiBTaXplPSIxMDAiLz4KICAgICAgICA8SW5kZXhDb2x1bW4gTmFtZT0iY29sdW1uX3RocmVlIi8+CiAgICA8L1VuaXF1ZT4KPC9UYWJsZT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnSW50ZWdlciBjb2x1bW4sIHZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ290cnMtc2NoZW1hLnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlhNTDo6RGF0YWJhc2U6OktleUxlbmd0aCldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPCEtLSBvYmplY3QgbmFtZXMgZm9yIGR5bmFtaWMgZmllbGQgdmFsdWVzIC0tPgo8VGFibGUgTmFtZT0idGFibGVfbmFtZSI+CiAgICA8Q29sdW1uIE5hbWU9ImlkIiBSZXF1aXJlZD0idHJ1ZSIgUHJpbWFyeUtleT0idHJ1ZSIgQXV0b0luY3JlbWVudD0idHJ1ZSIgVHlwZT0iSU5URUdFUiIvPgogICAgPENvbHVtbiBUeXBlPSJWQVJDSEFSIiBOYW1lPSJjb2x1bW5fb25lIiBSZXF1aXJlZD0idHJ1ZSIgU2l6ZT0iMzI5Ii8+CiAgICA8Q29sdW1uIFJlcXVpcmVkPSJ0cnVlIiBOYW1lPSJjb2x1bW5fdHdvIiBUeXBlPSJCSUdJTlQiLz4KICAgIDxDb2x1bW4gTmFtZT0iY29sdW1uX3RocmVlIiBSZXF1aXJlZD0idHJ1ZSIgVHlwZT0iREVDSU1BTCIgU2l6ZT0iMTAiLz4KICAgIDxJbmRleCBOYW1lPSJjb2x1bW5fb25lX3R3b190aHJlZSI+CiAgICAgICAgPEluZGV4Q29sdW1uIE5hbWU9ImNvbHVtbl9vbmUiLz4KICAgICAgICA8SW5kZXhDb2x1bW4gTmFtZT0iY29sdW1uX3R3byIvPgogICAgICAgIDxJbmRleENvbHVtbiBOYW1lPSJjb2x1bW5fdGhyZWUiLz4KICAgIDwvVW5pcXVlPgo8L1RhYmxlPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdJbnRlZ2VyIGNvbHVtbiwgaW52YWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdvdHJzLXNjaGVtYS54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkRhdGFiYXNlOjpLZXlMZW5ndGgpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjwhLS0gb2JqZWN0IG5hbWVzIGZvciBkeW5hbWljIGZpZWxkIHZhbHVlcyAtLT4KPFRhYmxlIE5hbWU9InRhYmxlX25hbWUiPgogICAgPENvbHVtbiBOYW1lPSJpZCIgUmVxdWlyZWQ9InRydWUiIFByaW1hcnlLZXk9InRydWUiIEF1dG9JbmNyZW1lbnQ9InRydWUiIFR5cGU9IklOVEVHRVIiLz4KICAgIDxDb2x1bW4gVHlwZT0iVkFSQ0hBUiIgTmFtZT0iY29sdW1uX29uZSIgUmVxdWlyZWQ9InRydWUiIFNpemU9IjMzMCIvPgogICAgPENvbHVtbiBSZXF1aXJlZD0idHJ1ZSIgTmFtZT0iY29sdW1uX3R3byIgVHlwZT0iQklHSU5UIi8+CiAgICA8Q29sdW1uIE5hbWU9ImNvbHVtbl90aHJlZSIgUmVxdWlyZWQ9InRydWUiIFR5cGU9IkRFQ0lNQUwiIFNpemU9IjEwIi8+CiAgICA8SW5kZXggTmFtZT0iY29sdW1uX29uZV90d29fdGhyZWUiPgogICAgICAgIDxJbmRleENvbHVtbiBOYW1lPSJjb2x1bW5fb25lIi8+CiAgICAgICAgPEluZGV4Q29sdW1uIE5hbWU9ImNvbHVtbl90d28iLz4KICAgICAgICA8SW5kZXhDb2x1bW4gTmFtZT0iY29sdW1uX3RocmVlIi8+CiAgICA8L1VuaXF1ZT4KPC9UYWJsZT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAopOwoKJFNlbGYtPnNjcmlwdHM6OnRlc3Q6Ok9UUlNDb2RlUG9saWN5UGx1Z2luczo6UnVuKCBUZXN0cyA9PiBcQFRlc3RzICk7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIHV0Zjg7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RSU0NvZGVQb2xpY3lQbHVnaW5zOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnVW5pcXVlIHdpdGggbmFtZSBPVFJTIDgnLAogICAgICAgIEZpbGVuYW1lICA9PiAnb3Rycy1zY2hlbWEueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpEYXRhYmFzZTo6WFNEVmFsaWRhdG9yKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8VGFibGUgTmFtZT0iZHluYW1pY19maWVsZF9vYmpfaWRfbmFtZSI+CiAgICA8VW5pcXVlIE5hbWU9ImR5bmFtaWNfZmllbGRfb2JqZWN0X25hbWUiPgogICAgICAgIDxVbmlxdWVDb2x1bW4gTmFtZT0ib2JqZWN0X25hbWUiLz4KICAgICAgICA8VW5pcXVlQ29sdW1uIE5hbWU9Im9iamVjdF90eXBlIi8+CiAgICA8L1VuaXF1ZT4KPC9UYWJsZT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnVW5pcXVlIHdpdGhvdXQgbmFtZSBPVFJTIDgnLAogICAgICAgIEZpbGVuYW1lICA9PiAnb3Rycy1zY2hlbWEueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpEYXRhYmFzZTo6WFNEVmFsaWRhdG9yKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8VGFibGUgTmFtZT0iZHluYW1pY19maWVsZF9vYmpfaWRfbmFtZSI+CiAgICA8VW5pcXVlPgogICAgICAgIDxVbmlxdWVDb2x1bW4gTmFtZT0ib2JqZWN0X25hbWUiLz4KICAgICAgICA8VW5pcXVlQ29sdW1uIE5hbWU9Im9iamVjdF90eXBlIi8+CiAgICA8L1VuaXF1ZT4KPC9UYWJsZT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnSW5kZXggd2l0aCBuYW1lIE9UUlMgOCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdvdHJzLXNjaGVtYS54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkRhdGFiYXNlOjpYU0RWYWxpZGF0b3IpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzguMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxUYWJsZSBOYW1lPSJkeW5hbWljX2ZpZWxkX29ial9pZF9uYW1lIj4KICAgIDxJbmRleCBOYW1lPSJkeW5hbWljX2ZpZWxkX29iamVjdF9uYW1lIj4KICAgICAgICA8SW5kZXhDb2x1bW4gTmFtZT0ib2JqZWN0X25hbWUiLz4KICAgICAgICA8SW5kZXhDb2x1bW4gTmFtZT0ib2JqZWN0X3R5cGUiLz4KICAgIDwvSW5kZXg+CjwvVGFibGU+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0luZGV4IHdpdGhvdXQgbmFtZSBPVFJTIDgnLAogICAgICAgIEZpbGVuYW1lICA9PiAnb3Rycy1zY2hlbWEueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6WE1MOjpEYXRhYmFzZTo6WFNEVmFsaWRhdG9yKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8VGFibGUgTmFtZT0iZHluYW1pY19maWVsZF9vYmpfaWRfbmFtZSI+CiAgICA8SW5kZXg+CiAgICAgICAgPEluZGV4Q29sdW1uIE5hbWU9Im9iamVjdF9uYW1lIi8+CiAgICAgICAgPEluZGV4Q29sdW1uIE5hbWU9Im9iamVjdF90eXBlIi8+CiAgICA8L0luZGV4Pgo8L1RhYmxlPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdVbmlxdWUgd2l0aCBuYW1lIE9UUlMgOScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdvdHJzLXNjaGVtYS54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkRhdGFiYXNlOjpYU0RWYWxpZGF0b3IpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzkuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxUYWJsZSBOYW1lPSJkeW5hbWljX2ZpZWxkX29ial9pZF9uYW1lIj4KICAgIDxVbmlxdWUgTmFtZT0iZHluYW1pY19maWVsZF9vYmplY3RfbmFtZSI+CiAgICAgICAgPFVuaXF1ZUNvbHVtbiBOYW1lPSJvYmplY3RfbmFtZSIvPgogICAgICAgIDxVbmlxdWVDb2x1bW4gTmFtZT0ib2JqZWN0X3R5cGUiLz4KICAgIDwvVW5pcXVlPgo8L1RhYmxlPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdVbmlxdWUgd2l0aG91dCBuYW1lIE9UUlMgOScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdvdHJzLXNjaGVtYS54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkRhdGFiYXNlOjpYU0RWYWxpZGF0b3IpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzkuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxUYWJsZSBOYW1lPSJkeW5hbWljX2ZpZWxkX29ial9pZF9uYW1lIj4KICAgIDxVbmlxdWU+CiAgICAgICAgPFVuaXF1ZUNvbHVtbiBOYW1lPSJvYmplY3RfbmFtZSIvPgogICAgICAgIDxVbmlxdWVDb2x1bW4gTmFtZT0ib2JqZWN0X3R5cGUiLz4KICAgIDwvVW5pcXVlPgo8L1RhYmxlPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdJbmRleCB3aXRoIG5hbWUgT1RSUyA5JywKICAgICAgICBGaWxlbmFtZSAgPT4gJ290cnMtc2NoZW1hLnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UUlM6OlhNTDo6RGF0YWJhc2U6OlhTRFZhbGlkYXRvcildLAogICAgICAgIEZyYW1ld29yayA9PiAnOS4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPFRhYmxlIE5hbWU9ImR5bmFtaWNfZmllbGRfb2JqX2lkX25hbWUiPgogICAgPEluZGV4IE5hbWU9ImR5bmFtaWNfZmllbGRfb2JqZWN0X25hbWUiPgogICAgICAgIDxJbmRleENvbHVtbiBOYW1lPSJvYmplY3RfbmFtZSIvPgogICAgICAgIDxJbmRleENvbHVtbiBOYW1lPSJvYmplY3RfdHlwZSIvPgogICAgPC9JbmRleD4KPC9UYWJsZT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnSW5kZXggd2l0aG91dCBuYW1lIE9UUlMgOScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdvdHJzLXNjaGVtYS54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVFJTOjpYTUw6OkRhdGFiYXNlOjpYU0RWYWxpZGF0b3IpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzkuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxUYWJsZSBOYW1lPSJkeW5hbWljX2ZpZWxkX29ial9pZF9uYW1lIj4KICAgIDxJbmRleD4KICAgICAgICA8SW5kZXhDb2x1bW4gTmFtZT0ib2JqZWN0X25hbWUiLz4KICAgICAgICA8SW5kZXhDb2x1bW4gTmFtZT0ib2JqZWN0X3R5cGUiLz4KICAgIDwvSW5kZXg+CjwvVGFibGU+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKKTsKCiRTZWxmLT5zY3JpcHRzOjp0ZXN0OjpPVFJTQ29kZVBvbGljeVBsdWdpbnM6OlJ1biggVGVzdHMgPT4gXEBUZXN0cyApOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIHZhcjo6cGFja2FnZXNldHVwOjpPVFJTQ29kZVBvbGljeTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKKTsKCj1oZWFkMSBOQU1FCgp2YXI6OnBhY2thZ2VzZXR1cDo6T1RSU0NvZGVQb2xpY3kgLSBDb2RlIHRvIGV4ZWN1dGUgZHVyaW5nIHBhY2thZ2UgaW5zdGFsbGF0aW9uCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBmdW5jdGlvbnMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBDb2RlSW5zdGFsbCgpCgpSdW4gdGhlIGNvZGUgaW5zdGFsbCBwYXJ0OgoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZUluc3RhbGwoKTsKCj1jdXQKCnN1YiBDb2RlSW5zdGFsbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRSZXN1bHQgPSAkU2VsZi0+X0luc3RhbGxEZXBlbmRlbmNpZXMoKTsKCiAgICByZXR1cm4gJFJlc3VsdDsKfQoKPWhlYWQyIENvZGVSZWluc3RhbGwoKQoKUnVuIHRoZSBjb2RlIHJlaW5zdGFsbCBwYXJ0OgoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVJlaW5zdGFsbCgpOwoKPWN1dAoKc3ViIENvZGVSZWluc3RhbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkUmVzdWx0ID0gJFNlbGYtPl9JbnN0YWxsRGVwZW5kZW5jaWVzKCk7CgogICAgcmV0dXJuICRSZXN1bHQ7Cn0KCj1oZWFkMiBDb2RlVXBncmFkZSgpCgpSdW4gdGhlIGNvZGUgdXBncmFkZSBwYXJ0OgoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVwZ3JhZGUoKTsKCj1jdXQKCnN1YiBDb2RlVXBncmFkZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRSZXN1bHQgPSAkU2VsZi0+X0luc3RhbGxEZXBlbmRlbmNpZXMoKTsKCiAgICByZXR1cm4gJFJlc3VsdDsKfQoKPWhlYWQyIENvZGVVbmluc3RhbGwoKQoKUnVuIHRoZSBjb2RlIHVuaW5zdGFsbCBwYXJ0OgoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVuaW5zdGFsbCgpOwoKPWN1dAoKc3ViIENvZGVVbmluc3RhbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkUmVzdWx0ID0gJFNlbGYtPl9EZWxldGVEZXBlbmRlbmNpZXMoKTsKCiAgICByZXR1cm4gJFJlc3VsdDsKfQoKPWJlZ2luIEludGVybmFsOgoKPWhlYWQyIF9JbnN0YWxsRGVwZW5kZW5jaWVzKCkKCkluc3RhbGxzIGRlcGVuZGVuY2llcywgaWYgbmVlZGVkOgoKICAgIG15ICRTdWNjZXNzID0gJENvZGVPYmplY3QtPl9JbnN0YWxsRGVwZW5kZW5jaWVzKCk7Cgo9Y3V0CgpzdWIgX0luc3RhbGxEZXBlbmRlbmNpZXMgewogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICBteSAkVmVyc2lvbiA9ICRDb25maWdPYmplY3QtPkdldCgnVmVyc2lvbicpOwoKICAgIG15ICgkVmVyc2lvbk1ham9yKSA9ICRWZXJzaW9uID1+IG17XihcZCspXC59eG1zOwoKICAgICMgRG9uJ3QgaW5zdGFsbCBFU0xpbnQgb24gc3lzdGVtcyA8IDUuMC54LgogICAgcmV0dXJuIDEgaWYgJFZlcnNpb25NYWpvciA8IDU7CgogICAgbXkgJEhvbWUgICA9ICRDb25maWdPYmplY3QtPkdldCgnSG9tZScpOwogICAgbXkgJFJlc3VsdCA9IHN5c3RlbSgicGVybCAkSG9tZS9iaW4vb3Rycy5Db2RlUG9saWN5LnBsIC0taW5zdGFsbCIpOwoKICAgIHJldHVybiAhJFJlc3VsdDsKfQoKPWhlYWQyIF9EZWxldGVEZXBlbmRlbmNpZXMoKQoKRGVsZXRlcyB0aGUgZGVwZW5kZW5jeSBmb2xkZXIsIGlmIGl0IGV4aXN0czoKCiAgICBteSAkU3VjY2VzcyA9ICRDb2RlT2JqZWN0LT5fRGVsZXRlRGVwZW5kZW5jaWVzKCk7Cgo9Y3V0CgpzdWIgX0RlbGV0ZURlcGVuZGVuY2llcyB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgIG15ICRIb21lICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdIb21lJyk7CiAgICBteSAkRGVwZW5kZW5jeURpcmVjdG9yeSA9ICRIb21lIC4gJy9LZXJuZWwvVGlkeUFsbC9QbHVnaW4vT1RSUy9KYXZhU2NyaXB0L0VTTGludC9ub2RlX21vZHVsZXMnOwogICAgcmV0dXJuIDEgaWYgIS1kICREZXBlbmRlbmN5RGlyZWN0b3J5OwoKICAgIG15ICRSZXN1bHQgPSBzeXN0ZW0oInJtIC1yZiAkRGVwZW5kZW5jeURpcmVjdG9yeSIpOwoKICAgIHJldHVybiAhJFJlc3VsdDsKfQoKMTsKCj1lbmQgSW50ZXJuYWw6Cg==
JVBERi0xLjQKJaqrrK0KMSAwIG9iago8PAovQ3JlYXRvciAoQXBhY2hlIEZPUCBWZXJzaW9uIDIuMSkKL1Byb2R1Y2VyIChBcGFjaGUgRk9QIFZlcnNpb24gMi4xKQovQ3JlYXRpb25EYXRlIChEOjIwMjAwOTI4MTQ0MjM0WikKPj4KZW5kb2JqCjIgMCBvYmoKPDwKICAvTiAzCiAgL0xlbmd0aCAzIDAgUgogIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4nO2ZZ1BUWRaA73uvc6Chu2kyNDlJlNCA5JwkSBYV6G4yLTQ5mJDBERhBRCQpgogCDjg6BBlFRRQDoqCAeRoZBJRxcBRRUVnAH7NVu7VbW7W1f7bPj/e+OufWO+e+ulXvq3oAyJDi2QnJsD4ACbwUvq+zHTMoOISJvQ9wgAxIgAow4ezkRFtvbw+wHCtrwT/E+1EArdzv6fzz+r8MEieBxwEAoi9zLIebzF7mncsczUngrOSnVzg9JTEFANh7men85QGXmbPCEd84Y4WjvnHR6ho/X/tlPgoAjhS1yoRTKxyxytSuFWZH8xMAkO5bXq/CTuQvP196pZfitxlWQ3RlP8woLo/LD0/hcpj/4db+ffxdL3Ty8sv/rzf4H/dZOTvf6K3l6pmAGBV/5baWAcB6DQBS8ldO5TAAlN0AdPT8lYs4DkBnCQCSz9ip/LRvOdTq7IAAKIAOpIA8UAYaQAcYAlNgAWyAI3ADXsAPBIPNgA2iQQLgg3SQA3aBfFAISsBBUAVqQQNoAq3gDOgE58FlcA3cAnfBCHgMBGASvAJz4D1YhCAIC5EhGiQFKUCqkDZkCLEgK8gR8oB8oWAoDIqCeFAqlAPthgqhUqgKqoOaoJ+gc9Bl6AY0BD2ExqEZ6E/oE4zAJJgOy8FqsB7Mgm1hd9gP3gRHwUlwFpwH74Mr4Hr4FNwBX4ZvwSOwAH4FzyMAISIMRBHRQViIPeKFhCCRCB/ZjhQg5Ug90op0I/3IPUSAzCIfURgUDcVE6aAsUC4ofxQblYTajipCVaFOojpQfah7qHHUHOormoyWRWujzdGu6CB0FDodnY8uRzei29FX0SPoSfR7DAbDwKhjTDEumGBMLCYbU4Q5jGnDXMIMYSYw81gsVgqrjbXEemHDsSnYfGwl9hT2InYYO4n9gCPiFHCGOCdc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IG9iagpbL0lDQ0Jhc2VkIDIgMCBSXQplbmRvYmoKNSAwIG9iago8PAogIC9UeXBlIC9NZXRhZGF0YQogIC9TdWJ0eXBlIC9YTUwKICAvTGVuZ3RoIDYgMCBSCj4+CnN0cmVhbQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgcmRmOmFib3V0PSIiPgo8ZGM6Zm9ybWF0PmFwcGxpY2F0aW9uL3BkZjwvZGM6Zm9ybWF0Pgo8ZGM6bGFuZ3VhZ2U+ZW48L2RjOmxhbmd1YWdlPgo8ZGM6ZGF0ZT4yMDIwLTA5LTI4VDE0OjQyOjM0WjwvZGM6ZGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIiByZGY6YWJvdXQ9IiI+CjxwZGY6UHJvZHVjZXI+QXBhY2hlIEZPUCBWZXJzaW9uIDIuMTwvcGRmOlByb2R1Y2VyPgo8cGRmOlBERlZlcnNpb24+MS40PC9wZGY6UERGVmVyc2lvbj4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiByZGY6YWJvdXQ9IiI+Cjx4bXA6Q3JlYXRvclRvb2w+QXBhY2hlIEZPUCBWZXJzaW9uIDIuMTwveG1wOkNyZWF0b3JUb29sPgo8eG1wOk1ldGFkYXRhRGF0ZT4yMDIwLTA5LTI4VDE0OjQyOjM0WjwveG1wOk1ldGFkYXRhRGF0ZT4KPHhtcDpDcmVhdGVEYXRlPjIwMjAtMDktMjhUMTQ6NDI6MzRaPC94bXA6Q3JlYXRlRGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+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MTIgNzkyXQogIC9CbGVlZEJveCBbMCAwIDYxMiA3OTJdCiAgL1RyaW1Cb3ggWzAgMCA2MTIgNzkyXQogIC9QYXJlbnQgMTUgMCBSCiAgL0NvbnRlbnRzIDY1IDAgUgo+PgplbmRvYmoKNjggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjIgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKNjkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA2NzkuNjI5IDExNy4xOSA2ODkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjcwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMS42ODkgNjc5LjYyOSA1MzkuOTk5IDY4OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjggMCBSCi9IIC9JCgo+PgplbmRvYmoKNzEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjUgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKNzIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA2NjcuNjI5IDE1My44NTggNjc3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MSAwIFIKL0ggL0kKCj4+CmVuZG9iago3MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDY2Ny42MjkgNTM5Ljk5OCA2NzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjc0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI1IDAgUiAvWFlaIDcyLjAgNzAwLjggbnVsbF0KPj4KZW5kb2JqCjc1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDY1NS42MjkgMjE4LjMxOCA2NjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDc0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjc2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjU1LjYyOSA1MzkuOTk4IDY2NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjUgMCBSIC9YWVogNzIuMCA1ODIuNCBudWxsXQo+PgplbmRvYmoKNzggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjQzLjYyOSAyMjEuMTUyIDY1My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA2NDMuNjI5IDUzOS45OTggNjUzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3NyAwIFIKL0ggL0kKCj4+CmVuZG9iago4MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyNSAwIFIgL1hZWiA3Mi4wIDQxMi4wIG51bGxdCj4+CmVuZG9iago4MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2MzEuNjI5IDI5Ny45NDEgNjQxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4MCAwIFIKL0ggL0kKCj4+CmVuZG9iago4MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDYzMS42MjkgNTM5Ljk5OCA2NDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDgwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjgzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI1IDAgUiAvWFlaIDcyLjAgMjczLjYgbnVsbF0KPj4KZW5kb2JqCjg0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDYxOS42MjkgMjE2LjQ5NiA2MjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDgzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjg1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjE5LjYyOSA1MzkuOTk4IDYyOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODMgMCBSCi9IIC9JCgo+PgplbmRvYmoKODYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjggMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKODcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA2MDcuNjI5IDIwNC45NzYgNjE3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NiAwIFIKL0ggL0kKCj4+CmVuZG9iago4OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDYwNy42MjkgNTM5Ljk5OCA2MTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI4IDAgUiAvWFlaIDcyLjAgNzAwLjggbnVsbF0KPj4KZW5kb2JqCjkwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU5NS42MjkgMTczLjQwOCA2MDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjkxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNTk1LjYyOSA1MzkuOTk4IDYwNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODkgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjggMCBSIC9YWVogNzIuMCA0NTAuNCBudWxsXQo+PgplbmRvYmoKOTMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTgzLjYyOSAxNjQuOTEzIDU5My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjgwNyA1ODMuNjI5IDU0MC4xNjcgNTkzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MiAwIFIKL0ggL0kKCj4+CmVuZG9iago5NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyOCAwIFIgL1hZWiA3Mi4wIDM4Mi4wIG51bGxdCj4+CmVuZG9iago5NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1NzEuNjI5IDIwOS41NTIgNTgxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5NSAwIFIKL0ggL0kKCj4+CmVuZG9iago5NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDU3MS42MjkgNTM5Ljk5OCA1ODEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjk4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI4IDAgUiAvWFlaIDcyLjAgMzEzLjYgbnVsbF0KPj4KZW5kb2JqCjk5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU1OS42MjkgMjIxLjc5NCA1NjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDU1OS42MjkgNTM5Ljk5OCA1NjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszNCAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoxMDIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA1NDcuNjI5IDE0OS4zOSA1NTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwMSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA1NDcuNjI5IDUzOS45OTggNTU3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTA0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM0IDAgUiAvWFlaIDcyLjAgNjc4LjggbnVsbF0KPj4KZW5kb2JqCjEwNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1MzUuNjI5IDE5OS4wMDYgNTQ1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTA2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNTM1LjYyOSA1MzkuOTk4IDU0NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTA0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwNyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszNCAwIFIgL1hZWiA3Mi4wIDYwMi40IG51bGxdCj4+CmVuZG9iagoxMDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTIzLjYyOSAxOTQuNjQxIDUzMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTA3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDUyMy42MjkgNTM5Ljk5OCA1MzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwNyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMTAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzcgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMTExIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNTExLjYyOSAxNjEuNzg0IDUyMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTEwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjExMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDUxMS42MjkgNTM5Ljk5OCA1MjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDExMCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMTMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMTE0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNDk5LjYyOSAxMjUuNTYgNTA5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTE1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNDk5LjYyOSA1MzkuOTk4IDUwOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTEzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjExNiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs2NyAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoxMTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA0ODcuNjI5IDE1MC4zMzMgNDk3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTE4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40NDggNDg3LjYyOSA1NDAuMTY4IDQ5Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTE2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjExOSAwIG9iago8PCAvTGVuZ3RoIDEyMCAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCniczX3Nji25cfS+n+K8gEpkJn8BYwCNNGPYO8MDeCFoZcP2QuMPWvn1vwxWnWJ3nyM5YicIV9O3b0VXsXkq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NSAwIG9iago8PAogIC9UeXBlIC9DYXRhbG9nCiAgL1BhZ2VzIDE1IDAgUgogIC9MYW5nIChlbikKICAvTWV0YWRhdGEgNSAwIFIKICAvUGFnZUxhYmVscyAxNjYgMCBSCj4+CmVuZG9iagoxNCAwIG9iago8PAogIC9Gb250IDw8CiAgL0YxNiAxNDMgMCBSCiAgL0YxNSAxNTIgMCBSCiAgL0YxOSAxNjEgMCBSCj4+CiAgL1Byb2NTZXQgWy9QREYgL0ltYWdlQiAvSW1hZ2VDIC9UZXh0XQogIC9YT2JqZWN0IDw8CiAgL0ltMSA3IDAgUgogIC9JbTIgOSAwIFIKICAvSW0zIDE2IDAgUgogIC9JbTQgMTggMCBSCj4+CiAgL0NvbG9yU3BhY2UgPDwgL0RlZmF1bHRSR0IgNCAwIFIgPj4KPj4KZW5kb2JqCjE2NiAwIG9iago8PCAvTnVtcyBbMCA8PCAvUyAvRCA+PiAxIDw8IC9TIC9yIC9TdCAyID4+IDIgPDwgL1MgL3IgL1N0IDMgPj4gMyA8PCAvUyAvRCA+PiAxNyA8PCAvUyAvRCAvU3QgMTUgPj5dID4+CmVuZG9iagp4cmVmCjAgMTY3CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNSAwMDAwMCBuIAowMDAwMDAwMTM5IDAwMDAwIG4gCjAwMDAwMDI2NzcgMDAwMDAgbiAKMDAwMDAwMjY5NyAwMDAwMCBuIAowMDAwMDAyNzMwIDAwMDAwIG4gCjAwMDAwMDM2NjIgMDAwMDAgbiAKMDAwMDAwMzY4MSAwMDAwMCBuIAowMDAwMDUyMjA2IDAwMDAwIG4gCjAwMDAwNTIyMjcgMDAwMDAgbiAKMDAwMDEwNTQ4NyAwMDAwMCBuIAowMDAwMTA1NTA5IDAwMDAwIG4gCjAwMDAxMDYwMjMgMDAwMDAgbiAKMDAwMDEwNjA0MyAwMDAwMCBuIAowMDAwMjI1MTA3IDAwMDAwIG4gCjAwMDAyMjQ3ODQgMDAwMDAgbiAKMDAwMDEwNjIzNyAwMDAwMCBuIAowMDAwMTEyNDA4IDAwMDAwIG4gCjAwMDAxMTI0MjkgMDAwMDAgbiAKMDAwMDExOTYwOSAwMDAwMCBuIAowMDAwMTE5NjMwIDAwMDAwIG4gCjAwMDAxMjAyNDMgMDAwMDAgbiAKMDAwMDEyMDI2MyAwMDAwMCBuIAowMDAwMTIwNDU3IDAwMDAwIG4gCjAwMDAxMjMzMDMgMDAwMDAgbiAKMDAwMDEyMzMyNCAwMDAwMCBuIAowMDAwMTIzNTE4IDAwMDAwIG4gCjAwMDAxMjQ3NjQgMDAwMDAgbiAKMDAwMDEyNDc4NSAwMDAwMCBuIAowMDAwMTI0OTc5IDAwMDAwIG4gCjAwMDAxMjUwNzQgMDAwMDAgbiAKMDAwMDEyNTIxMCAwMDAwMCBuIAowMDAwMTI2NDI5IDAwMDAwIG4gCjAwMDAxMjY0NTAgMDAwMDAgbiAKMDAwMDEyNjQ3NyAwMDAwMCBuIAowMDAwMTI2Njg4IDAwMDAwIG4gCjAwMDAxMjcxOTkgMDAwMDAgbiAKMDAwMDEyNzIxOSAwMDAwMCBuIAowMDAwMTI3NDEzIDAwMDAwIG4gCjAwMDAxMjg4MDkgMDAwMDAgbiAKMDAwMDEyODgzMCAwMDAwMCBuIAowMDAwMTI5MDI0IDAwMDAwIG4gCjAwMDAxMzA1MTEgMDAwMDAgbiAKMDAwMDEzMDUzMiAwMDAwMCBuIAowMDAwMTMwNzI2IDAwMDAwIG4gCjAwMDAxMzIyMTYgMDAwMDAgbiAKMDAwMDEzMjIzNyAwMDAwMCBuIAowMDAwMTMyNDMxIDAwMDAwIG4gCjAwMDAxMzM3NTEgMDAwMDAgbiAKMDAwMDEzMzc3MiAwMDAwMCBuIAowMDAwMTMzOTY2IDAwMDAwIG4gCjAwMDAxMzU0MTEgMDAwMDAgbiAKMDAwMDEzNTQzMiAwMDAwMCBuIAowMDAwMTM1NjI2IDAwMDAwIG4gCjAwMDAxMzY4NDQgMDAwMDAgbiAKMDAwMDEzNjg2NSAwMDAwMCBuIAowMDAwMTM3MDU5IDAwMDAwIG4gCjAwMDAxMzg0NzUgMDAwMDAgbiAKMDAwMDEzODQ5NiAwMDAwMCBuIAowMDAwMTM4NjkwIDAwMDAwIG4gCjAwMDAxNDAyMDkgMDAwMDAgbiAKMDAwMDE0MDIzMCAwMDAwMCBuIAowMDAwMTQwNDI0IDAwMDAwIG4gCjAwMDAxNDEwMDQgMDAwMDAgbiAKMDAwMDE0MTAyNCAwMDAwMCBuIAowMDAwMTQxMjE4IDAwMDAwIG4gCjAwMDAxNDQ3OTAgMDAwMDAgbiAKMDAwMDE0NDgxMSAwMDAwMCBuIAowMDAwMTQ1MDA1IDAwMDAwIG4gCjAwMDAxNDUwODMgMDAwMDAgbiAKMDAwMDE0NTIxOSAwMDAwMCBuIAowMDAwMTQ1MzU5IDAwMDAwIG4gCjAwMDAxNDU0MzcgMDAwMDAgbiAKMDAwMDE0NTU3NCAwMDAwMCBuIAowMDAwMTQ1NzE0IDAwMDAwIG4gCjAwMDAxNDU3OTIgMDAwMDAgbiAKMDAwMDE0NTkzMCAwMDAwMCBuIAowMDAwMTQ2MDcwIDAwMDAwIG4gCjAwMDAxNDYxNDggMDAwMDAgbiAKMDAwMDE0NjI4NiAwMDAwMCBuIAowMDAwMTQ2NDI2IDAwMDAwIG4gCjAwMDAxNDY1MDQgMDAwMDAgbiAKMDAwMDE0NjY0MiAwMDAwMCBuIAowMDAwMTQ2NzgyIDAwMDAwIG4gCjAwMDAxNDY4NjAgMDAwMDAgbiAKMDAwMDE0Njk5OCAwMDAwMCBuIAowMDAwMTQ3MTM4IDAwMDAwIG4gCjAwMDAxNDcyMTYgMDAwMDAgbiAKMDAwMDE0NzM1MyAwMDAwMCBuIAowMDAwMTQ3NDkzIDAwMDAwIG4gCjAwMDAxNDc1NzEgMDAwMDAgbiAKMDAwMDE0NzcwOSAwMDAwMCBuIAowMDAwMTQ3ODQ5IDAwMDAwIG4gCjAwMDAxNDc5MjcgMDAwMDAgbiAKMDAwMDE0ODA2NSAwMDAwMCBuIAowMDAwMTQ4MjA1IDAwMDAwIG4gCjAwMDAxNDgyODMgMDAwMDAgbiAKMDAwMDE0ODQyMSAwMDAwMCBuIAowMDAwMTQ4NTYxIDAwMDAwIG4gCjAwMDAxNDg2MzkgMDAwMDAgbiAKMDAwMDE0ODc3NyAwMDAwMCBuIAowMDAwMTQ4OTE4IDAwMDAwIG4gCjAwMDAxNDg5OTcgMDAwMDAgbiAKMDAwMDE0OTEzNSAwMDAwMCBuIAowMDAwMTQ5Mjc3IDAwMDAwIG4gCjAwMDAxNDkzNTYgMDAwMDAgbiAKMDAwMDE0OTQ5NiAwMDAwMCBuIAowMDAwMTQ5NjM4IDAwMDAwIG4gCjAwMDAxNDk3MTcgMDAwMDAgbiAKMDAwMDE0OTg1NyAwMDAwMCBuIAowMDAwMTQ5OTk5IDAwMDAwIG4gCjAwMDAxNTAwNzggMDAwMDAgbiAKMDAwMDE1MDIxNyAwMDAwMCBuIAowMDAwMTUwMzU5IDAwMDAwIG4gCjAwMDAxNTA0MzggMDAwMDAgbiAKMDAwMDE1MDU3NiAwMDAwMCBuIAowMDAwMTUwNzE4IDAwMDAwIG4gCjAwMDAxNTA3OTcgMDAwMDAgbiAKMDAwMDE1MDkzNiAwMDAwMCBuIAowMDAwMTUxMDc4IDAwMDAwIG4gCjAwMDAxNjM3MzQgMDAwMDAgbiAKMDAwMDE2Mzc1NyAwMDAwMCBuIAowMDAwMTY0MDI5IDAwMDAwIG4gCjAwMDAxNjQyNDMgMDAwMDAgbiAKMDAwMDE2NzM4MiAwMDAwMCBuIAowMDAwMTY3NDA0IDAwMDAwIG4gCjAwMDAxNjc2MDAgMDAwMDAgbiAKMDAwMDE3MDAyNyAwMDAwMCBuIAowMDAwMTcwMDQ5IDAwMDAwIG4gCjAwMDAxNzAyNDUgMDAwMDAgbiAKMDAwMDE3MzM4OCAwMDAwMCBuIAowMDAwMTczNDEwIDAwMDAwIG4gCjAwMDAxNzM2MDYgMDAwMDAgbiAKMDAwMDE3NjcwMSAwMDAwMCBuIAowMDAwMTc2NzIzIDAwMDAwIG4gCjAwMDAxNzY5MTkgMDAwMDAgbiAKMDAwMDE3ODAxOCAwMDAwMCBuIAowMDAwMTc4MDQwIDAwMDAwIG4gCjAwMDAxNzgyMzYgMDAwMDAgbiAKMDAwMDE3ODUwMSAwMDAwMCBuIAowMDAwMTkxOTYxIDAwMDAwIG4gCjAwMDAxOTE5MzggMDAwMDAgbiAKMDAwMDE5MjA2MSAwMDAwMCBuIAowMDAwMTkyMDgxIDAwMDAwIG4gCjAwMDAxOTI3MDQgMDAwMDAgbiAKMDAwMDE5MjI0NiAwMDAwMCBuIAowMDAwMTkzMjU2IDAwMDAwIG4gCjAwMDAxOTMyNzcgMDAwMDAgbiAKMDAwMDE5MzUzNyAwMDAwMCBuIAowMDAwMjEwMzYzIDAwMDAwIG4gCjAwMDAyMTAzNDAgMDAwMDAgbiAKMDAwMDIxMDQ2NiAwMDAwMCBuIAowMDAwMjEwNDg2IDAwMDAwIG4gCjAwMDAyMTEyMDUgMDAwMDAgbiAKMDAwMDIxMDY0NiAwMDAwMCBuIAowMDAwMjExODczIDAwMDAwIG4gCjAwMDAyMTE4OTQgMDAwMDAgbiAKMDAwMDIxMjE1NiAwMDAwMCBuIAowMDAwMjIzNDk4IDAwMDAwIG4gCjAwMDAyMjM0NzUgMDAwMDAgbiAKMDAwMDIyMzU5NyAwMDAwMCBuIAowMDAwMjIzNjE3IDAwMDAwIG4gCjAwMDAyMjQyMjAgMDAwMDAgbiAKMDAwMDIyMzc4MSAwMDAwMCBuIAowMDAwMjI0NzYzIDAwMDAwIG4gCjAwMDAyMjQ5OTggMDAwMDAgbiAKMDAwMDIyNTMzNyAwMDAwMCBuIAp0cmFpbGVyCjw8CiAgL1Jvb3QgMTY1IDAgUgogIC9JbmZvIDEgMCBSCiAgL0lEIFs8NURFMzI3RjhFRDI0MkQ1QzRFNDc4MkMyN0JGNzQ1NTA+IDw1REUzMjdGOEVEMjQyRDVDNEU0NzgyQzI3QkY3NDU1MD5dCiAgL1NpemUgMTY3Cj4+CnN0YXJ0eHJlZgoyMjU0NTgKJSVFT0YK